diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2000-02-15 20:03:34 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2000-02-15 20:03:34 (GMT) |
commit | 397fa609f53790f008f33d8ce4e6e26bce3c1279 (patch) | |
tree | 50b1099761af52d0ca94caec83c8ff3a08efb753 | |
parent | 19119105076ca1b361b11b49df61050879c1e054 (diff) | |
download | Doxygen-397fa609f53790f008f33d8ce4e6e26bce3c1279.zip Doxygen-397fa609f53790f008f33d8ce4e6e26bce3c1279.tar.gz Doxygen-397fa609f53790f008f33d8ce4e6e26bce3c1279.tar.bz2 |
Upgrade to 1.1.0
146 files changed, 24283 insertions, 14691 deletions
@@ -1,4 +1,4 @@ -DOXYGEN Version 1.0.0 +DOXYGEN Version 1.1.0 CONTENTS -------- @@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX: 1. Unpack the archive, unless you already have: - gunzip doxygen-1.0.0.src.tar.gz # uncompress the archive - tar xf doxygen-1.0.0.src.tar # unpack it + gunzip doxygen-1.1.0.src.tar.gz # uncompress the archive + tar xf doxygen-1.1.0.src.tar # unpack it 2. Run the configure script: @@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at Enjoy, -Dimitri van Heesch (27 December 1999) +Dimitri van Heesch (13 February 2000) @@ -1,3 +1,8 @@ +This program is distributed under the GNU GPL v2 (see below), +with the additional permission that it may be linked against Troll Tech's +Qt library, and distributed, without the GPL applying to Qt. + +----------------------------------------------------------------------- GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 @@ -1,4 +1,4 @@ -DOXYGEN Version 1.0.0 +DOXYGEN Version 1.1.0 Please read INSTALL for compilation instructions. @@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at Enjoy, -Dimitri van Heesch (27 December 1999) +Dimitri van Heesch (13 February 2000) @@ -1 +1 @@ -1.0.0 +1.1.0 diff --git a/doc/Makefile.in b/doc/Makefile.in index 29a3151..c6308bf 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,7 +1,7 @@ # # $Id$ # -# Copyright (C) 1997-1999 by Dimitri van Heesch. +# Copyright (C) 1997-2000 by Dimitri van Heesch. # # Permission to use, copy, modify, and distribute this software and its # documentation under the terms of the GNU General Public License is hereby diff --git a/doc/Makefile.latex b/doc/Makefile.latex index bd902df..b4e4379 100644 --- a/doc/Makefile.latex +++ b/doc/Makefile.latex @@ -1,7 +1,7 @@ # # $Id$ # -# Copyright (C) 1997-1999 by Dimitri van Heesch. +# Copyright (C) 1997-2000 by Dimitri van Heesch. # # Permission to use, copy, modify, and distribute this software and its # documentation under the terms of the GNU General Public License is hereby diff --git a/doc/Makefile.win.in b/doc/Makefile.win.in index ed64837..e151ecc 100644 --- a/doc/Makefile.win.in +++ b/doc/Makefile.win.in @@ -1,7 +1,7 @@ # # $Id$ # -# Copyright (C) 1997-1999 by Dimitri van Heesch. +# Copyright (C) 1997-2000 by Dimitri van Heesch. # # Permission to use, copy, modify, and distribute this software and its # documentation under the terms of the GNU General Public License is hereby diff --git a/doc/autolink.doc b/doc/autolink.doc index 352e905..4cb892b 100644 --- a/doc/autolink.doc +++ b/doc/autolink.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -29,6 +29,11 @@ The next sections show how to generate links to the various documented entities in a source file. + \subsection linkurl Links to web pages and mail addresses + + Doxygen will automatically replace any URLs and mail addresses found in the + documentation by links (in HTML). + \subsection linkclass Links to classes. All words in the documentation that correspond to a documented class @@ -108,5 +113,4 @@ typedef struct StructName TypeName Click <a href="$(DOXYGEN_DOCDIR)/examples/restypedef/html/restypedef.cpp.html">here</a> for the corresponding HTML documentation that is generated by Doxygen. \endhtmlonly - */ diff --git a/doc/commands.doc b/doc/commands.doc index bbe5a9c..497e26d 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -77,6 +77,7 @@ documentation: <li> \refitem cmdinclude \include <li> \refitem cmdingroup \ingroup <li> \refitem cmdinternal \internal +<li> \refitem cmdinvariant \invariant <li> \refitem cmdlatexonly \latexonly <li> \refitem cmdline \line <li> \refitem cmdlink \link @@ -86,6 +87,8 @@ documentation: <li> \refitem cmdpage \page <li> \refitem cmdpar \par <li> \refitem cmdparam \param +<li> \refitem cmdpost \post +<li> \refitem cmdpre \pre <li> \refitem cmdref \ref <li> \refitem cmdrelates \relates <li> \refitem cmdreturn \return @@ -138,7 +141,10 @@ Doxygen. Unrecognized commands are treated as normal text. The \<header-name\> argument can be used to overwrite the name of the link that is used in the class documentation to something other than \<header-file\>. This can be useful if the include name is not located - on the default include path (like \<X11/X.h\>). + on the default include path (like \<X11/X.h\>). With the \<header-name\> + argument you can also specify how the include statement should look like, + by adding either quotes or sharp brackets around the name. + Sharp brackets are used if just the name is given. \par Example: \verbinclude class.h @@ -547,6 +553,38 @@ Doxygen. Unrecognized commands are treated as normal text. expected life span, etc. <hr> +\subsection cmdexception \exception <exception-object> { exception description } + + \addindex \exception + Starts an exception description for an exception object with name + \<exception-object\>. Followed by a description of the exception. + The existence of the exception object is not checked. + The text of the paragraph has no special internal structure. All visual + enhancement commands may be used inside the paragraph. + Multiple adjacent \\exception commands will be joined into a single paragraph. + Each parameter description will start on a new line. + The \\exception description ends when a blank line or some other + sectioning command is encountered. See section \ref cmdfn "\\fn" for an + example. + + \par Note: + the tag \\exceptions is a synonym for this tag. + +<hr> +\subsection cmdinvariant \invariant { description of invariant } + + \addindex \invariant + Starts a paragraph where the invariant of an entity can be described. + The paragraph will be indented. + The text of the paragraph has no special internal structure. All visual + enhancement commands may be used inside the paragraph. + Multiple adjacent \\invariant commands will be joined into a single paragraph. + Each warning description will start on a new line. + Alternatively, one \\invariant command may mention + several invariants. The \\invariant command ends when a blank line or some other + sectioning command is encountered. + +<hr> \subsection cmdpar \par (paragraph title) { paragraph } \addindex \par @@ -581,32 +619,33 @@ Doxygen. Unrecognized commands are treated as normal text. example. <hr> -\subsection cmdexception \exception <exception-object> { exception description } +\subsection cmdpost \post { description of the postcondition } - \addindex \exception - Starts an exception description for an exception object with name - \<exception-object\>. Followed by a description of the exception. - The existence of the exception object is not checked. + \addindex \post + Starts a paragraph where the postcondition of an entity can be described. + The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. - Multiple adjacent \\exception commands will be joined into a single paragraph. - Each parameter description will start on a new line. - The \\exception description ends when a blank line or some other - sectioning command is encountered. See section \ref cmdfn "\\fn" for an - example. - - \par Note: - the tag \\exceptions is a synonym for this tag. + Multiple adjacent \\post commands will be joined into a single paragraph. + Each warning description will start on a new line. + Alternatively, one \\post command may mention + several postconditions. The \\post command ends when a blank line or some other + sectioning command is encountered. <hr> -\subsection cmdthrow \throw <exception-object> { exception description } - - \addindex \throw - Synonymous to \\exception (see section \ref cmdexception "\\exception"). - - \par Note: - the tag \\throws is a synonym for this tag. +\subsection cmdpre \pre { description of the precondition } + \addindex \pre + Starts a paragraph where the precondition of an entity can be described. + The paragraph will be indented. + The text of the paragraph has no special internal structure. All visual + enhancement commands may be used inside the paragraph. + Multiple adjacent \\pre commands will be joined into a single paragraph. + Each warning description will start on a new line. + Alternatively, one \\pre command may mention + several preconditions. The \\pre command ends when a blank line or some other + sectioning command is encountered. + <hr> \subsection cmdreturn \return { description of the return value } @@ -650,6 +689,15 @@ Doxygen. Unrecognized commands are treated as normal text. to objects. <hr> +\subsection cmdthrow \throw <exception-object> { exception description } + + \addindex \throw + Synonymous to \\exception (see section \ref cmdexception "\\exception"). + + \par Note: + the tag \\throws is a synonym for this tag. + +<hr> \subsection cmdversion \version { version number } \addindex \version diff --git a/doc/config.doc b/doc/config.doc index eaa37e6..6e30f89 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -58,8 +58,10 @@ followed by the descriptions of the tags grouped by category. <li> \refitem cfg_cgi_name CGI_NAME <li> \refitem cfg_cgi_url CGI_URL <li> \refitem cfg_class_diagrams CLASS_DIAGRAMS +<li> \refitem cfg_collaboration_graph COLLABORATION_GRAPH <li> \refitem cfg_cols_in_alpha_index COLS_IN_ALPHA_INDEX <li> \refitem cfg_compact_latex COMPACT_LATEX +<li> \refitem cfg_compact_rtf COMPACT_RTF <li> \refitem cfg_disable_index DISABLE_INDEX <li> \refitem cfg_doc_abspath DOC_ABSPATH <li> \refitem cfg_doc_url DOC_URL @@ -79,7 +81,10 @@ followed by the descriptions of the tags grouped by category. <li> \refitem cfg_generate_htmlhelp GENERATE_HTMLHELP <li> \refitem cfg_generate_latex GENERATE_LATEX <li> \refitem cfg_generate_man GENERATE_MAN +<li> \refitem cfg_generate_rtf GENERATE_RTF <li> \refitem cfg_generate_tagfile GENERATE_TAGFILE +<li> \refitem cfg_graphical_hierarchy GRAPHICAL_HIERARCHY +<li> \refitem cfg_have_dot HAVE_DOT <li> \refitem cfg_hide_undoc_classes HIDE_UNDOC_CLASSES <li> \refitem cfg_hide_undoc_members HIDE_UNDOC_MEMBERS <li> \refitem cfg_html_align_members HTML_ALIGN_MEMBERS @@ -87,7 +92,9 @@ followed by the descriptions of the tags grouped by category. <li> \refitem cfg_html_header HTML_HEADER <li> \refitem cfg_html_output HTML_OUTPUT <li> \refitem cfg_html_stylesheet HTML_STYLESHEET +<li> \refitem cfg_ignore_prefix IGNORE_PREFIX <li> \refitem cfg_image_path IMAGE_PATH +<li> \refitem cfg_include_graph INCLUDE_GRAPH <li> \refitem cfg_include_path INCLUDE_PATH <li> \refitem cfg_inherit_docs INHERIT_DOCS <li> \refitem cfg_inline_info INLINE_INFO @@ -115,6 +122,8 @@ followed by the descriptions of the tags grouped by category. <li> \refitem cfg_searchengine SEARCHENGINE <li> \refitem cfg_source_browser SOURCE_BROWSER <li> \refitem cfg_strip_from_path STRIP_FROM_PATH +<li> \refitem cfg_rtf_hyperlinks RTF_HYPERLINKS +<li> \refitem cfg_rtf_output RTF_OUTPUT <li> \refitem cfg_tab_size TAB_SIZE <li> \refitem cfg_tagfiles TAGFILES <li> \refitem cfg_verbatim_headers VERBATIM_HEADERS @@ -502,7 +511,6 @@ TD.md { background-color: #f2f2ff } \anchor cfg_html_align_members <dt>\c HTML_ALIGN_MEMBERS <dd> - If the \c HTML_ALIGN_MEMBERS tag is set to \c YES, the members of classes, files or namespaces will be aligned in HTML using tables. If set to NO a bullet list will be used. @@ -513,7 +521,6 @@ intent to support and test the aligned representation. \anchor cfg_generate_htmlhelp <dt>\c GENERATE_HTMLHELP <dd> - If the \c GENERATE_HTMLHELP tag is set to \c YES then doxygen generates three additional HTML index files: \c index.hhp, \c index.hhc, and \c index.hhk. The \c index.hhp is a @@ -534,20 +541,29 @@ and you can search for words in the documentation (which basically renders \c doxysearch obsolete on Windows). The HTML workshop also contains a viewer for compressed HTML files. +</dl> +\subsection alphabetical_index Alphabetical index options +<dl> + \anchor cfg_alphabetical_index <dt>\c ALPHABETICAL_INDEX <dd> - If the \c ALPHABETICAL_INDEX tag is set to \c YES, an alphabetical index of all compounds will be generated. Enable this if the project contains a lot of classes, structs, unions or interfaces. \anchor cfg_cols_in_alpha_index <dt>\c COLS_IN_ALPHA_INDEX <dd> - If the alphabetical index is enabled (see \c ALPHABETICAL_INDEX) then the \c COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in which this list will be split (can be a number in the range [1..20]) +\anchor cfg_ignore_prefix +<dt>\c IGNORE_PREFIX <dd> +In case all classes in a project start with a common prefix, all +classes will be put under the same header in the alphabetical index. +The \c IGNORE_PREFIX tag can be use to specify a prefix that should be ignored +while generating the index headers. + </dl> \subsection latex_output LaTeX related options @@ -645,6 +661,44 @@ EXTRA_PACKAGES = times </dl> +\subsection rtf_output RTF related options +<dl> +\anchor cfg_generate_rtf +<dt>\c GENERATE_RTF <dd> + \addindex GENERATE_RTF + If the \c GENERATE_RTF tag is set to \c YES Doxygen will generate RTF output. + For now this is experimental and is disabled by default. The RTF + output is optimised for Word 97 and may not look too pretty with + other readers/editors. + +\anchor cfg_rtf_output +<dt>\c RTF_OUTPUT <dd> + \addindex RTF_OUTPUT + The \c RTF_OUTPUT tag is used to specify where the RTF docs will be put. + If a relative path is entered the value of OUTPUT_DIRECTORY will be + put in front of it. If left blank \c rtf will be used as the default path. + +\anchor cfg_compact_rtf +<dt>\c COMPACT_RTF <dd> + \addindex COMPACT_RTF + If the \c COMPACT_RTF tag is set to \c YES Doxygen generates more compact + RTF documents. This may be useful for small projects and may help to + save some trees in general. + +\anchor cfg_rtf_hyperlinks +<dt>\c RTF_HYPERLINKS <dd> + \addindex RTF_HYPERLINKS + If the \c RTF_HYPERLINKS tag is set to \c YES, the RTF that is generated + will contain hyperlink fields. The RTF file will + contain links (just like the HTML output) instead of page references. + This makes the output suitable for online browsing using Word or some other + Word compatible reader that support those fields. + + \par note: + wordpad (write) and others do not support links. + +</dl> + \subsection man_output Man page related options <dl> @@ -758,7 +812,7 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre> \anchor cfg_allexternals <dt>\c ALLEXTERNALS <dd> \addindex ALLEXTERNALS - if the \c ALLEXTERNALS tag is set to \c YES all external class will be listed + If the \c ALLEXTERNALS tag is set to \c YES all external class will be listed in the class index. If set to \c NO only the inherited external classes will be listed. @@ -769,6 +823,41 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre> interpreter (i.e. the result of `<tt>which perl</tt>'). </dl> +\subsection config_dot Dot options +<dl> + +\anchor cfg_have_dot +<dt>\c HAVE_DOT <dd> + \addindex HAVE_DOT + If you set the \c HAVE_DOT tag to \c YES then doxygen will assume the dot tool is + available from the path. This tool is part of + <a href="http://www.research.att.com/sw/tools/graphviz/">Graphviz</a>, a graph + visualization toolkit from AT&T and Lucent Bell Labs. The other options in + this section have no effect if this option is set to \c NO (the default) + +\anchor cfg_collaboration_graph +<dt>\c COLLABORATION_GRAPH <dd> + \addindex COLLABORATION_GRAPH + If the \c COLLABORATION_GRAPH and \c HAVE_DOT tags are set to \c YES then doxygen + will generate a graph for each documented class showing the direct and + indirect implementation dependencies (inheritance, containment, and + class references variables) of the class with other documented classes. + +\anchor cfg_include_graph +<dt>\c INCLUDE_GRAPH <dd> + \addindex INCLUDE_GRAPH + If the \c ENABLE_PREPROCESSING, \c INCLUDE_GRAPH, and \c HAVE_DOT tags are + set to \c YES then doxygen will generate a graph for each documented file + showing the direct and indirect include dependencies of the file with other + documented files. + +\anchor cfg_graphical_hierarchy +<dt>\c GRAPHICAL_HIERARCHY <dd> + \addindex GRAPHICAL_HIERATCHY + If the \c GRAPHICAL_HIERARCHY and \c HAVE_DOT tags are set to \c YES then + doxygen will graphical hierarchy of all classes instead of a textual one. + +</dl> \subsection config_search Search engine options <dl> diff --git a/doc/doxygen.sty b/doc/doxygen.sty index 5e53104..e38ddc8 100644 --- a/doc/doxygen.sty +++ b/doc/doxygen.sty @@ -1,7 +1,7 @@ % % $Id$ % -% Copyright (C) 1997-1999 by Dimitri van Heesch. +% Copyright (C) 1997-2000 by Dimitri van Heesch. % % Permission to use, copy, modify, and distribute this software and its % documentation under the terms of the GNU General Public License is hereby @@ -23,8 +23,8 @@ {\fancyplain{}{\bfseries\rightmark}} \rhead[\fancyplain{}{\bfseries\leftmark}] {\fancyplain{}{\bfseries\thepage}} -\rfoot[\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-1998}]{} -\lfoot[]{\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-1998}} +\rfoot[\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2000}]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2000}} \cfoot{} \newenvironment{CompactList} {\begin{list}{}{ diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex index 01223c4..927eb1a 100644 --- a/doc/doxygen_manual.tex +++ b/doc/doxygen_manual.tex @@ -1,7 +1,7 @@ % % $Id$ % -% Copyright (C) 1997-1999 by Dimitri van Heesch. +% Copyright (C) 1997-2000 by Dimitri van Heesch. % % Permission to use, copy, modify, and distribute this software and its % documentation under the terms of the GNU General Public License is hereby @@ -45,6 +45,10 @@ Written by Dimitri van Heesch\\[2ex] \part{User Manual} \input{install} \input{starting} +\input{docblocks} +\input{formulas} +\input{diagrams} +\input{preprocessing} \input{faq} \input{trouble} \part{Reference Manual} diff --git a/doc/doxygen_usage.doc b/doc/doxygen_usage.doc index ff6f117..47e7431 100644 --- a/doc/doxygen_usage.doc +++ b/doc/doxygen_usage.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/doc/doxysearch_usage.doc b/doc/doxysearch_usage.doc index 6024d2a..79a418e 100644 --- a/doc/doxysearch_usage.doc +++ b/doc/doxysearch_usage.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/doc/doxytag_usage.doc b/doc/doxytag_usage.doc index ce3eae3..0a4de9c 100644 --- a/doc/doxytag_usage.doc +++ b/doc/doxytag_usage.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/doc/faq.doc b/doc/faq.doc index be47ce5..ffcb51a 100644 --- a/doc/faq.doc +++ b/doc/faq.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -75,6 +75,15 @@ To make doxygen put <br><br> in the documentation of the class MyClassName regardless of the name of the actual header file in which the definition of MyClassName is contained. +If you want doxygen to show that the include file should be included using +brackets you should type: +\verbatim +/*! \class MyClassName include.h "path/include.h" + * + * Docs for MyClassName + */ +\endverbatim + <li><b>How can I use tag files in combination with compressed HTML</b> If you want to refer from one compressed HTML file @@ -102,6 +111,28 @@ or you can use \c installdox to set the links as follows: installdox -lb.tag@b.chm:: \endverbatim +<li><b>I don't like the quick index that is put above each HTML page, what do I do?</b> + +You can disable the index by setting DISABLE_INDEX to YES. Then you can +put in your own header file by writing your own header and feed that to +HTML_HEADER. + +<li><b>The overall HTML output looks different, while I only wanted to + use my own html header file</b> + +You probably forgot to include the stylesheet <code>doxygen.css</code> that +doxygen generates. You can include this by putting +\verbatim +<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> +\endverbatim +In the HEAD section of the HTML page. + </ol> + +\htmlonly +Go to the <a href="trouble.html">next</a> section or return to the + <a href="index.html">index</a>. +\endhtmlonly + */ diff --git a/doc/features.doc b/doc/features.doc index 4381bc7..1984e68 100644 --- a/doc/features.doc +++ b/doc/features.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -22,17 +22,20 @@ <li>Requires very little overhead from the writer of the documentation. Plain text will do, but for more fancy or structured output HTML tags and/or some of doxygen's special commands can be used. -<li>Supports C++, (Corba or Microsoft) IDL and C sources. +<li>Supports C++, (Corba and Microsoft) IDL and C sources. <li>Supports documentation of files, namespaces, classes, structs, unions, templates, variables, functions, typedefs, enums and defines. <li>JavaDoc (1.1), Qt-Doc, and KDOC compatible. <li>Automatically generates class diagrams in HTML (as clickable image maps) and \f$\mbox{\LaTeX}\f$ (as encapsulated postscript images). +<li>Using the dot tool of the Graphviz tool kit doxygen can generate + include dependency graphs, collaboration diagrams, and + graphical class hierarchy graphs. <li>Allows you to put documentation in the header file (before the declaration of an entity), source file (before the definition of an entity) or in a separate file. <li>Outputs documentation in on-line format (HTML and UNIX man page) and - off-line format (\f$\mbox{\LaTeX}\f$) simultaniously + off-line format (\f$\mbox{\LaTeX}\f$) and RTF simultaniously (any one can be disabled if desired). Both formats are optimized for ease of reading. <br> Furthermore, compressed HTML can be generated from HTML output using diff --git a/doc/history.doc b/doc/history.doc index d724966..c0b2305 100644 --- a/doc/history.doc +++ b/doc/history.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/doc/htmlcmds.doc b/doc/htmlcmds.doc index 38b1459..e539d7e 100644 --- a/doc/htmlcmds.doc +++ b/doc/htmlcmds.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/doc/index.doc b/doc/index.doc index ae16306..9d2053d 100644 --- a/doc/index.doc +++ b/doc/index.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -26,7 +26,7 @@ Version: $(VERSION) \addindex license \addindex GPL -Copyright © 1997-1999 by +Copyright © 1997-2000 by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>.<p> Permission to use, copy, modify, and distribute this software and its @@ -38,6 +38,10 @@ See the GNU General Public License</a> for more details. <p> +It is hereby explicitly allowed that this program may be linked against +<a href="http://www.troll.no/qt">Troll Tech's Qt library</a>, +and distributed, without the GPL applying to Qt. +<p> All output generated by Doxygen is not covered by this license. <h2>Introduction</h2> @@ -69,6 +73,11 @@ The first part forms a user manual: doxygen for your platform. <li>Section \ref starting tells you how to generate your first piece of documentation quickly. +<li>Section \ref docblocks demonstrates the various ways that code can + be documented. +<li>Section \ref formulas shows how to insert formulas in the documentation. +<li>Section \ref diagrams describes the diagrams and graphs that doxygen can generate. +<li>Section \ref preprocessing explains how doxygen deals with macro definitions. <li>Section \ref faq gives answers to frequently asked questions. <li>Section \ref trouble tells you what to do when you have problems. </ul> @@ -136,6 +145,7 @@ Thanks go to: <li>My brother <a href="http://www.stack.nl/~fidget/index.html">Frank</a> for rendering the logos. <li>Harm van der Heijden for adding HTML help support. +<li>Parker Waerchter for adding the RTF output generator. <li>Jens Breitenstein, Christophe Bordeaux, Samuel Hägglund, Xet Erixon, Vlastimil Havran, Ahmed Also Faisal, Alessandro Falappa, Kenji Nagamatsu, Francisco Oltra Thennet, Olli Korhonen for providing translations into diff --git a/doc/install.doc b/doc/install.doc index 78ae4f8..9ee3665 100644 --- a/doc/install.doc +++ b/doc/install.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -91,6 +91,25 @@ The following binaries should now be available: generated by doxygen. </UL> +To take full advantage of doxygen's features the following additional +tools should be installed. + +<ul> +<li>\f$\mbox{\LaTeX}\f$: + <a href="http://www.tug.org">teTeX 1.0</a> (for Unix) or + <a href="ftp://ctan.tug.org/tex-archive/systems/win32/web2c/fptex-0.3/">fpTeX 0.3</a> (for Windows)<br> + Needed for LaTeX and PDF output. +<li><a href="http://www.research.att.com/sw/tools/graphviz/"> + the Graph visualization toolkit version 1.5</a><br> + Needed for the include dependency graphs, the graphical inheritance graphs, + and the collaboration graphs.<br> + <b>Note:</b> For windows you will have to set the <code>DOTFONTPATH</code> environment + variable to include the current directory (e.g. <code>DOTFONTPATH=.</code>) +<li><a href="http://msdn.microsoft.com/workshop/author/htmlhelp"> + the HTML help workshop</a> (for Windows only)<br> + Needed for compiling compressed HTML output (a.k.a. the new Windows help format). +</ul> + Doxygen was developed and tested under Linux using the following tools: <ul> <li>EGCS version 2.91.66 diff --git a/doc/installdox_usage.doc b/doc/installdox_usage.doc index 11f8710..1689602 100644 --- a/doc/installdox_usage.doc +++ b/doc/installdox_usage.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/doc/language.doc b/doc/language.doc index 2eeabf9..bde06ac 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/doc/output.doc b/doc/output.doc index 7ddaf8d..2a8f890 100644 --- a/doc/output.doc +++ b/doc/output.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -27,6 +27,10 @@ The following output formats are \e directly supported by doxygen: <dd>Generated if \c GENERATE_LATEX is set to \c YES in the configuration file. <dt><b>Man pages</b> <dd>Generated if \c GENERATE_MAN is set to \c YES in the configuration file. +<dt><b>RTF</b> +<dd>Generated if \c GENERATE_RTF is set to \c YES in the configuration file.<p> + Note that the RTF output probably only looks nice with Microsoft's + Word 97. If you have success with other programs, please let me know. </dl> The following output formats are \e indirectly supported by doxygen: diff --git a/doc/starting.doc b/doc/starting.doc index a1fe89b..1b0f0a8 100644 --- a/doc/starting.doc +++ b/doc/starting.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -184,6 +184,51 @@ During parsing the following steps take place: See section \ref htmlcmds for an overview of all supported HTML tags. </ul> +Using a number of column aligned minus signs at the start of a + line in a comment block will generate a bullet list. + Nested lists are also possible. + Here is an example: +\verbatim + /*! + * A list of events: + * - mouse events + * - mouse move event + * - mouse click event + * - mouse double click event\n + * More info about the click event. + * - keyboard events + * - key down event + * - key up event + * + * More text here. + */ +\endverbatim + The result will be: + + A list of events: + - mouse events + - mouse move event + - mouse click event\n + More info about the click event. + - mouse double click event + - keyboard events + - key down event + - key up event + + More text here. + +If you use tabs within lists, please make sure that \c TAB_SIZE in the +configuration file is set to the correct tab size. + +\htmlonly +Go to the <a href="docblocks.html">next</a> section or return to the + <a href="index.html">index</a>. +\endhtmlonly + +*/ + +/*! \page docblocks Documenting the code + \subsection specialblock Special documentation blocks The following types of special documentation blocks are supported by doxygen: @@ -357,7 +402,13 @@ Here is an example of a the use of these comment blocks: enums. Furthermore, the structural commands mentioned in the previous section are ignored inside these comment blocks. -\subsection formulas Including formulas in the documentation +\htmlonly +Go to the <a href="formulas.html">next</a> section or return to the + <a href="index.html">index</a>. +\endhtmlonly + +*/ +/*! \page formulas Including formulas Doxygen allows you to put \f$\mbox{\LaTeX}\f$ formulas in the output (this works only for the HTML and \f$\mbox{\LaTeX}\f$ formats, @@ -420,7 +471,128 @@ from typos in formulas. It may have to be necessary to remove the file <code>formula.repository</code> that is written in the html directory to a rid of an incorrect formula -\subsection preprocessing Preprocessing +\htmlonly +Go to the <a href="diagrams.html">next</a> section or return to the + <a href="index.html">index</a>. +\endhtmlonly + +*/ + +/*! \page diagrams Graphs and diagrams + + Doxygen has build-in support to generate inheritance diagrams for C++ + classes. + + Doxygen can use the "dot" tool from graphviz 1.5 to generate + more advanced diagrams & graphs. Graphviz is an open-sourced, + cross-platform graph drawing toolkit from AT&T and Lucent Bell Labs and + can be found at http://www.research.att.com/sw/tools/graphviz/ + + If you have the "dot" tool available in the path, you can set + \ref cfg_have_dot "HAVE_DOT" to \c YES in the configuration file to + let doxygen use it. + + Doxygen uses the "dot" tool to generate the following graphs: + <ul> + <li>if \ref cfg_graphical_hierarchy "GRAPHICAL_HIERARCHY" is set to \c YES, + a graphical representation of the class diagram will be drawn, along + with the textual one. Currently this feature is supported for HTML only.\n + <b>Warning:</b> When you have a very large class hierarchy where many + classes derive from a common + base class, the resulting image may become too big to handle for some + browsers. + <li>if \ref cfg_include_graph "INCLUDE_GRAPH" is set to \c YES, an include + dependency graph is generated for each documented file that includes at + least one other file. This feature is currently supported for HTML and RTF + only. + <li>if \ref cfg_collaboration_graph "COLLABORATION_GRAPH" is set to YES, a + graph is drawn for each documented class and struct that shows: + <ul> + <li> the inheritance relations with base classes. + <li> the usage relations with other structs & classes (e.g. + class \c A has a member variable \c m_a of type class \c B, then + \c A has an arrow to \c B with \c m_a as label). + </ul> + </ul> + + The elements in the class diagrams in HTML and RTF + have the following meaning: + <ul> + <li> A yellow box indicates a class. A box can have a + little marker in the lower right corner to indicate that the class + contains base classes that are hidden. If the box is filled with a + dashed pattern the inheritance relation is virtual. + <li> A white box indicates that the documentation of the class + is currently shown. + <li> A grey box indicates an undocumented class. + <li> A solid dark blue arrows indicates public inheritance. + <li> A dashed dark green arrows indicates protected inheritance. + <li> A dotted dark green arrows indicates private inheritance. + </ul> + + The elements in the class diagram in \f$\mbox{\LaTeX}\f$ have the + following meaning: + <ul> + <li> A white box indicates a class. + A marker in the lower right corner of the box indicates that the + class has base classes that are hidden. + If the box has a dashed border this indicates virtual inheritance. + <li> A solid arrow indicates public inheritance. + <li> A dashed arrow indicates protected inheritance. + <li> A dotted arrow indicated private inheritance. + </ul> + + The elements in the graphs generated by the dot tool have the following + meaning: + <ul> + <li> A white box indicates a class or struct. If the box has a + red border this indicates that the class contains related classes + that are hidden. + <li> A black box indicates that the class' documentation is currently shown. + <li> A dark blue arrow indicates an include relation (for the + include dependency graph) or public inheritance (for the other graphs). + <li> A dark green arrow indicates protected inheritance. + <li> A dark red arrow indicates private inheritance. + <li> A purple dashed arrow indicated a "usage" relation, the + edge of the arrow is labled with the variable(s) responsible for the + relation. + Class \c A uses class \c B, if class \c A has a member variable \c m + of type C, where B is a subtype of C (e.g. C could be \c B, \c B*, \c T<B>* ). + </ul> + +The reason why classes or structs are sometimes hidden is too prevent images +to become too large. For the class diagrams the maximum tree width +is currently 8 elements. For the graphs generated with dot doxygen tries +to limit the width of the resulting image to 1024 pixels. + +Here are a couple of header files that together show the various diagrams +that doxygen can generate: + +<code>diagrams_a.h</code> +\verbinclude diagrams_a.h +<code>diagrams_b.h</code> +\verbinclude diagrams_b.h +<code>diagrams_c.h</code> +\verbinclude diagrams_c.h +<code>diagrams_d.h</code> +\verbinclude diagrams_d.h +<code>diagrams_e.h</code> +\verbinclude diagrams_e.h + + \htmlonly + Click <a href="$(DOXYGEN_DOCDIR)/examples/diagrams/html/index.html">here</a> + for the corresponding HTML documentation that is generated by doxygen<br> + (<code>EXTRACT_ALL</code> = <code>YES</code> is used here). + \endhtmlonly + +\htmlonly +Go to the <a href="preprocessing.html">next</a> section or return to the + <a href="index.html">index</a>. +\endhtmlonly + +*/ + +/*! \page preprocessing Preprocessing Source files that are used as input to doxygen can be parsed by doxygen's build-in C-preprocessor. @@ -482,6 +654,7 @@ of an abstract base class called \c IUnknown: #define REFIID const IID * #endif + /*! The IUnknown interface */ DECLARE_INTERFACE(IUnknown) { @@ -555,15 +728,19 @@ As you can see doxygen's preprocessor is quite powerful, but if you want even more flexibility you can always write an input filter and specify it after the \c INPUT_FILTER tag. -\subsection moreinfo More information +If you are unsure what the effect of doxygen's preprocessing will be +you can run doxygen as follows: +\verbatim + doxygen -d Preprocessor +\endverbatim +This will instruct doxygen to dump the input sources to standard output after +preprocessing has been done (Hint: set <code>QUIET = YES</code> and +<code>WARNINGS = NO</code> in the configuration file to disable any other +output). -\addindex QdbtTabular -For a more elaborate example see <a href="http://www.stack.nl/~dimitri/qdbttabular/doc/html/index.html"> -the documentation of QdbtTabular</a> \latexonly -({\tt http://www.stack.nl/$\sim$dimitri/qdbttabular/doc/html})\endlatexonly. \htmlonly -I hope that was clear. If not, please let me know, so I can improve this document. If you have problems -take a look at the <a href="faq.html">faq</a> and the <a href="trouble.html">troubleshooting</a> sections. +Go to the <a href="faq.html">next</a> section or return to the + <a href="index.html">index</a>. \endhtmlonly */ diff --git a/doc/todo.doc b/doc/todo.doc index 1498ef1..faca7cd 100644 --- a/doc/todo.doc +++ b/doc/todo.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/doc/trouble.doc b/doc/trouble.doc index a9aaf99..b8f742b 100644 --- a/doc/trouble.doc +++ b/doc/trouble.doc @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/examples/Makefile.in b/examples/Makefile.in index 89d4e12..6bf96f1 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -19,7 +19,8 @@ all: class/html/index.html \ afterdoc/html/index.html \ template/html/index.html \ tag/html/index.html \ - group/html/index.html + group/html/index.html \ + diagram/html/index.html clean: rm -rf class define enum file func page relates author \ @@ -90,3 +91,6 @@ template/html/index.html: templ.cpp templ.cfg group/html/index.html: group.cpp group.cfg $(DOXYGEN)/bin/doxygen group.cfg + +diagram/html/index.html: diagrams_a.h diagrams_b.h diagrams_c.h diagrams_d.h diagrams_e.h diagrams.cfg + $(DOXYGEN)/bin/doxygen diagrams.cfg diff --git a/examples/Makefile.win.in b/examples/Makefile.win.in index 0b77836..55e031b 100644 --- a/examples/Makefile.win.in +++ b/examples/Makefile.win.in @@ -18,7 +18,11 @@ all: class/html/index.html \ autolink/html/index.html \ tag/html/index.html \ restypedef/html/index.html \ - afterdoc/html/index.html + afterdoc/html/index.html \ + template/html/index.html \ + tag/html/index.html \ + group/html/index.html \ + diagram/html/index.html clean: deltree /y class define enum file @@ -87,3 +91,12 @@ restypedef/html/index.html: restypedef.cpp restypedef.cfg afterdoc/html/index.html: afterdoc.h afterdoc.cfg $(DOXYDIR)\doxygen afterdoc.cfg + +template/html/index.html: templ.cpp templ.cfg + $(DOXYDIR)\doxygen templ.cfg + +group/html/index.html: group.cpp group.cfg + $(DOXYDIR)\doxygen group.cfg + +diagram/html/index.html: diagrams_a.h diagrams_b.h diagrams_c.h diagrams_d.h diagrams_e.h diagrams.cfg + $(DOXYDIR)\doxygen diagrams.cfg diff --git a/examples/class.h b/examples/class.h index e5c4e2d..8e7fb3b 100644 --- a/examples/class.h +++ b/examples/class.h @@ -4,7 +4,7 @@ class Test { } -/*! \class Test class.h inc/class.h +/*! \class Test class.h "inc/class.h" * \brief This is a test class. * * Some details about the Test class diff --git a/examples/restypedef.cpp b/examples/restypedef.cpp index 2cd3f8f..923cf70 100644 --- a/examples/restypedef.cpp +++ b/examples/restypedef.cpp @@ -14,7 +14,7 @@ struct CoordStruct }; /*! Creates a type name for CoordStruct */ -typedef struct CoordStruct Coord; +typedef CoordStruct Coord; /*! * This function returns the addition of \a c1 and \a c2, i.e: diff --git a/src/ce_lex.cpp b/src/ce_lex.cpp index 7e250ef..6250ccf 100644 --- a/src/ce_lex.cpp +++ b/src/ce_lex.cpp @@ -445,7 +445,7 @@ char *yytext; * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/ce_parse.cpp b/src/ce_parse.cpp index a494670..09d4f5c 100644 --- a/src/ce_parse.cpp +++ b/src/ce_parse.cpp @@ -269,7 +269,7 @@ static const short yycheck[] = { 1, #ifdef __GNUC__ #define alloca __builtin_alloca #else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || defined (__alpha) #include <alloca.h> #else /* not sparc */ #if defined (MSDOS) && !defined (__TURBOC__) diff --git a/src/classdef.cpp b/src/classdef.cpp index b6b453a..2f6fdd9 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -31,6 +31,7 @@ #include "htmlhelp.h" #include "example.h" #include "outputlist.h" +#include "dot.h" static QCString stripExtension(const char *fName) { @@ -71,11 +72,14 @@ ClassDef::ClassDef(const char *nm,CompoundType ct,const char *ref,const char *fN visited=FALSE; setReference(ref); compType=ct; - incFile=0; + incInfo=0; tempArgs=0; prot=Public; nspace=0; fileDef=0; + usesImplClassDict=0; + usesIntfClassDict=0; + //printf("*** New class `%s' *** \n",nm); } // destroy the class definition @@ -87,12 +91,16 @@ ClassDef::~ClassDef() delete allMemberNameInfoDict; delete exampleList; delete exampleDict; + delete usesImplClassDict; + delete usesIntfClassDict; + delete incInfo; } // inserts a base class in the inheritance list void ClassDef::insertBaseClass(ClassDef *cd,Protection p, Specifier s,const char *t) { + //printf("*** insert base class %s into %s\n",cd->name().data(),name().data()); inherits->inSort(new BaseClassDef(cd,p,s,t)); } @@ -100,6 +108,7 @@ void ClassDef::insertBaseClass(ClassDef *cd,Protection p, void ClassDef::insertSuperClass(ClassDef *cd,Protection p, Specifier s,const char *t) { + //printf("*** insert super class %s into %s\n",cd->name().data(),name().data()); inheritedBy->inSort(new BaseClassDef(cd,p,s,t)); } @@ -112,10 +121,12 @@ void ClassDef::insertMember(const MemberDef *md) if (md->isRelated() && (Config::extractPrivateFlag || md->protection()!=Private)) { related.append(md); + relatedMembers.inSort(md); } else if (md->isFriend()) { friends.append(md); + relatedMembers.inSort(md); } else { @@ -123,13 +134,23 @@ void ClassDef::insertMember(const MemberDef *md) { case MemberDef::Signal: signals.append(md); + functionMembers.inSort(md); break; case MemberDef::Slot: switch (md->protection()) { - case Protected: proSlots.append(md); break; - case Public: pubSlots.append(md); break; - case Private: priSlots.append(md); break; + case Protected: + proSlots.append(md); + functionMembers.inSort(md); + break; + case Public: + pubSlots.append(md); + functionMembers.inSort(md); + break; + case Private: + priSlots.append(md); + functionMembers.inSort(md); + break; } break; default: // any of the other members @@ -137,9 +158,15 @@ void ClassDef::insertMember(const MemberDef *md) { switch (md->protection()) { - case Protected: proStaticMembers.append(md); break; - case Public: pubStaticMembers.append(md); break; - case Private: priStaticMembers.append(md); break; + case Protected: + proStaticMembers.append(md); + break; + case Public: + pubStaticMembers.append(md); + break; + case Private: + priStaticMembers.append(md); + break; } } else @@ -151,12 +178,38 @@ void ClassDef::insertMember(const MemberDef *md) case Private: priMembers.append(md); break; } } + if (md->protection()!=Private || Config::extractPrivateFlag) + { + switch (md->memberType()) + { + case MemberDef::Typedef: + typedefMembers.inSort(md); + break; + case MemberDef::Enumeration: + enumMembers.inSort(md); + break; + case MemberDef::EnumValue: + enumValMembers.inSort(md); + break; + case MemberDef::Function: + if (md->name()==name() || md->name().find('~')!=-1) + constructors.append(md); + else + functionMembers.inSort(md); + break; + case MemberDef::Variable: + variableMembers.inSort(md); + break; + default: + printf("Unexpected member type %d found!\n",md->memberType()); + } + } break; } } } // check if we should add this member in the `all members' list - if (md->isFriend() || md->protection()!=Private || Config::extractPrivateFlag) + if (1 /*md->isFriend() || md->protection()!=Private || Config::extractPrivateFlag*/) { MemberInfo *mi = new MemberInfo((MemberDef *)md,Public,Normal); MemberNameInfo *mni=0; @@ -220,6 +273,19 @@ static void writeInheritanceSpecifier(OutputList &ol,BaseClassDef *bcd) } } +void ClassDef::setIncludeFile(FileDef *fd,const char *incName,bool local) +{ + if (!incInfo) incInfo=new IncludeInfo; + if ((incName && incInfo->includeName.isEmpty()) || + (fd!=0 && incInfo->fileDef==0) + ) + { + incInfo->fileDef = fd; + incInfo->includeName = incName; + incInfo->local = local; + } +} + // write all documentation for this class void ClassDef::writeDocumentation(OutputList &ol) { @@ -241,6 +307,8 @@ void ClassDef::writeDocumentation(OutputList &ol) parseText(ol,theTranslator->trCompoundReference(name(),compType)); endTitle(ol,getOutputFileBase(),name()); + ol.startTextBlock(); + // write brief description OutputList briefOutput(&ol); if (!briefDescription().isEmpty()) @@ -248,45 +316,50 @@ void ClassDef::writeDocumentation(OutputList &ol) parseDoc(briefOutput,name(),0,briefDescription()); ol+=briefOutput; ol.writeString(" \n"); + ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); ol.startTextLink(0,"_details"); parseText(ol,theTranslator->trMore()); ol.endTextLink(); - ol.enableAll(); + ol.popGeneratorState(); + ol.disable(OutputGenerator::Man); + ol.newParagraph(); + ol.enable(OutputGenerator::Man); } - ol.disable(OutputGenerator::Man); - ol.newParagraph(); - ol.enable(OutputGenerator::Man); ol.writeSynopsis(); - if (incFile) + if (incInfo) { - QCString nm=incName.copy(); - if (incName.isEmpty()) - { - nm=incFile->name(); - if (Config::fullPathNameFlag) - { - nm.prepend(stripFromPath(incFile->getPath().copy())); - } - } + QCString nm=incInfo->includeName.isEmpty() ? + incInfo->fileDef->docName().data() : + incInfo->includeName.data(); ol.startTypewriter(); - ol.docify("#include <"); + ol.docify("#include "); + if (incInfo->local) + ol.docify("\""); + else + ol.docify("<"); + ol.pushGeneratorState(); ol.disable(OutputGenerator::Html); ol.docify(nm); - ol.enableAll(); ol.disableAllBut(OutputGenerator::Html); - ol.writeObjectLink(0,fileName+"-include",0,nm); - ol.enableAll(); - ol.docify(">"); + ol.enable(OutputGenerator::Html); + ol.writeObjectLink(0,incInfo->fileDef->includeName(),0,nm); + ol.popGeneratorState(); + if (incInfo->local) + ol.docify("\""); + else + ol.docify(">"); ol.endTypewriter(); ol.newParagraph(); } - if (Config::genTagFile.length()>0) tagFile << ">" << name() << ":"; + + if (!Config::genTagFile.isEmpty()) tagFile << ">" << name() << ":"; if (Config::classDiagramFlag) ol.disableAllBut(OutputGenerator::Man); + // write superclasses int count; if ((count=inherits->count())>0) @@ -308,7 +381,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ClassDef *cd=bcd->classDef; if (cd->isLinkable()) { - if (Config::genTagFile.length()>0) tagFile << cd->getOutputFileBase() << "?"; + if (!Config::genTagFile.isEmpty()) tagFile << cd->getOutputFileBase() << "?"; ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,cd->name()+bcd->templSpecifiers); } else @@ -326,7 +399,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ol.newParagraph(); } - if (Config::genTagFile.length()>0) tagFile << " \"" << fileName << ".html\"\n"; + if (!Config::genTagFile.isEmpty()) tagFile << " \"" << fileName << ".html\"\n"; // write subclasses if ((count=inheritedBy->count())>0) @@ -362,6 +435,7 @@ void ClassDef::writeDocumentation(OutputList &ol) if (Config::classDiagramFlag) ol.enableAll(); + count=0; BaseClassDef *ibcd; ibcd=inheritedBy->first(); @@ -389,6 +463,25 @@ void ClassDef::writeDocumentation(OutputList &ol) ol.endClassDiagram(diagram,fileName,name()); } + if (Config::haveDotFlag && Config::collGraphFlag) + { + DotGfxUsageGraph usageImplGraph(this,TRUE); + if (!usageImplGraph.isTrivial()) + { + ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::Man); + ol.startCollaborationDiagram(); + parseText(ol,theTranslator->trCollaborationDiagram(name())); + //usageImplGraph.writeGraph(Config::htmlOutputDir); + //ol.writeString((QCString)"<p>Interface collaboration diagram for " + // "<a href=\"usage_intf_graph_"+name()+".html\">here</a>"); + //ol.writeString((QCString)"<p>Implementation collaboration diagram for " + // "<a href=\"usage_impl_graph_"+name()+".html\">here</a>"); + ol.endCollaborationDiagram(usageImplGraph); + ol.enableAll(); + } + } + // write link to list of all members (HTML only) if (allMemberNameInfoList->count()>0 /*&& compType==Class*/) { @@ -398,6 +491,8 @@ void ClassDef::writeDocumentation(OutputList &ol) ol.endTextLink(); ol.enableAll(); } + + ol.endTextBlock(); // write member groups ol.startMemberSections(); @@ -429,13 +524,15 @@ void ClassDef::writeDocumentation(OutputList &ol) exampleFlag) { ol.writeRuler(); - bool latexOn = ol.isEnabled(OutputGenerator::Latex); - if (latexOn) ol.disable(OutputGenerator::Latex); - ol.writeAnchor("_details"); - if (latexOn) ol.enable(OutputGenerator::Latex); + ol.pushGeneratorState(); + ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::RTF); + ol.writeAnchor("_details"); + ol.popGeneratorState(); ol.startGroupHeader(); parseText(ol,theTranslator->trDetailedDescription()); ol.endGroupHeader(); + ol.startTextBlock(); ArgumentList *al=0; int ti; @@ -486,6 +583,10 @@ void ClassDef::writeDocumentation(OutputList &ol) // write documentation if (!documentation().isEmpty()) { + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::RTF); + ol.newParagraph(); + ol.popGeneratorState(); parseDoc(ol,name(),0,documentation()+"\n"); } // write examples @@ -497,151 +598,90 @@ void ClassDef::writeDocumentation(OutputList &ol) ol.endBold(); ol.endDescTitle(); ol.writeDescItem(); + ol.newParagraph(); writeExample(ol,exampleList); //ol.endDescItem(); ol.endDescList(); } + ol.newParagraph(); writeSourceRef(ol,name()); + ol.endTextBlock(); } - pubMembers.countDocMembers(); - proMembers.countDocMembers(); - priMembers.countDocMembers(); - pubStaticMembers.countDocMembers(); - proStaticMembers.countDocMembers(); - priStaticMembers.countDocMembers(); - pubSlots.countDocMembers(); - proSlots.countDocMembers(); - priSlots.countDocMembers(); - related.countDocMembers(); - friends.countDocMembers(); - signals.countDocMembers(); - - if ( pubMembers.typedefCount() + proMembers.typedefCount() + - (Config::extractPrivateFlag ? priMembers.typedefCount() : 0 ) - ) + typedefMembers.countDocMembers(); + if (typedefMembers.totalCount()>0) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trMemberTypedefDocumentation()); ol.endGroupHeader(); - - pubMembers.writeDocumentation(ol,name(),MemberDef::Typedef); - proMembers.writeDocumentation(ol,name(),MemberDef::Typedef); - if (Config::extractPrivateFlag) - { - priMembers.writeDocumentation(ol,name(),MemberDef::Typedef); - } + typedefMembers.writeDocumentation(ol,name()); } - if (pubMembers.enumCount() + - proMembers.enumCount() + - ( Config::extractPrivateFlag ? priMembers.enumCount() : 0 ) - ) + enumMembers.countDocMembers(); + if (enumMembers.totalCount()>0) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trMemberEnumerationDocumentation()); ol.endGroupHeader(); - - pubMembers.writeDocumentation(ol,name(),MemberDef::Enumeration); - proMembers.writeDocumentation(ol,name(),MemberDef::Enumeration); - if (Config::extractPrivateFlag) - { - priMembers.writeDocumentation(ol,name(),MemberDef::Enumeration); - } + enumMembers.writeDocumentation(ol,name()); } - - if (pubMembers.enumValueCount() + - proMembers.enumValueCount() + - ( Config::extractPrivateFlag ? priMembers.enumValueCount() : 0 ) - ) + + enumValMembers.countDocMembers(); + if (enumValMembers.totalCount()>0) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trEnumerationValueDocumentation()); ol.endGroupHeader(); - - pubMembers.writeDocumentation(ol,name(),MemberDef::EnumValue); - proMembers.writeDocumentation(ol,name(),MemberDef::EnumValue); - if (Config::extractPrivateFlag) - { - priMembers.writeDocumentation(ol,name(),MemberDef::EnumValue); - } + enumValMembers.writeDocumentation(ol,name()); } - int func_count=0; - if ( - ( - func_count = - pubMembers.funcCount() + pubSlots.funcCount() + - pubStaticMembers.funcCount() + - proMembers.funcCount() + proSlots.funcCount() + - proStaticMembers.funcCount() + - (Config::extractPrivateFlag ? - priMembers.funcCount() + priSlots.funcCount() + - priStaticMembers.funcCount() : 0 - ) - ) - ) + constructors.countDocMembers(); + if (constructors.totalCount()>0) { ol.writeRuler(); ol.startGroupHeader(); - QCString countStr; - //countStr.sprintf(" (%d)",func_count); - parseText(ol,theTranslator->trMemberFunctionDocumentation()+countStr); + parseText(ol,theTranslator->trConstructorDocumentation()); ol.endGroupHeader(); - - pubMembers.writeDocumentation(ol,name(),MemberDef::Function); - pubSlots.writeDocumentation(ol,name(),MemberDef::Slot); - signals.writeDocumentation(ol,name(),MemberDef::Signal); - pubStaticMembers.writeDocumentation(ol,name(),MemberDef::Function); - proMembers.writeDocumentation(ol,name(),MemberDef::Function); - proSlots.writeDocumentation(ol,name(),MemberDef::Slot); - proStaticMembers.writeDocumentation(ol,name(),MemberDef::Function); - if (Config::extractPrivateFlag) - { - priMembers.writeDocumentation(ol,name(),MemberDef::Function); - priSlots.writeDocumentation(ol,name(),MemberDef::Slot); - priStaticMembers.writeDocumentation(ol,name(),MemberDef::Function); - } + constructors.writeDocumentation(ol,name()); } - - if ( friends.friendCount() + related.count() ) + + functionMembers.countDocMembers(); + if (functionMembers.totalCount()>0) + { + ol.writeRuler(); + ol.startGroupHeader(); + parseText(ol,theTranslator->trMemberFunctionDocumentation()); + ol.endGroupHeader(); + functionMembers.writeDocumentation(ol,name()); + } + + relatedMembers.countDocMembers(); + if (relatedMembers.totalCount()>0) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trRelatedFunctionDocumentation()); ol.endGroupHeader(); - friends.writeDocumentation(ol,name(),MemberDef::Friend); - related.writeDocumentation(ol,name(),MemberDef::Function); + relatedMembers.writeDocumentation(ol,name()); } - - - if ( pubMembers.varCount() + pubStaticMembers.varCount() + - proMembers.varCount() + proStaticMembers.varCount() + - (Config::extractPrivateFlag ? - priMembers.varCount() + priStaticMembers.varCount() : 0 - ) - ) + + variableMembers.countDocMembers(); + if (variableMembers.totalCount()>0) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trMemberDataDocumentation()); ol.endGroupHeader(); - - pubMembers.writeDocumentation(ol,name(),MemberDef::Variable); - pubStaticMembers.writeDocumentation(ol,name(),MemberDef::Variable); - proMembers.writeDocumentation(ol,name(),MemberDef::Variable); - proStaticMembers.writeDocumentation(ol,name(),MemberDef::Variable); - if (Config::extractPrivateFlag) - { - priMembers.writeDocumentation(ol,name(),MemberDef::Variable); - priStaticMembers.writeDocumentation(ol,name(),MemberDef::Variable); - } + variableMembers.writeDocumentation(ol,name()); } - // write the list of used files (Html and LaTeX only) + ol.startTextBlock(); + + // write the list of used files (not for man pages) + ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); ol.writeRuler(); parseText(ol,theTranslator->trGeneratedFromFiles(compType,files.count()==1)); @@ -689,7 +729,9 @@ void ClassDef::writeDocumentation(OutputList &ol) parseText(ol,theTranslator->trAuthor()); ol.endGroupHeader(); parseText(ol,theTranslator->trGeneratedAutomatically(Config::projectName)); - ol.enableAll(); + ol.popGeneratorState(); + + ol.endTextBlock(); endFile(ol); } @@ -698,8 +740,10 @@ void ClassDef::writeDocumentation(OutputList &ol) void ClassDef::writeMemberList(OutputList &ol) { if (allMemberNameInfoList->count()==0) return; - // do not generate Latex output + // only for HTML + ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); + startFile(ol,memListFileName,theTranslator->trMemberList()); startTitle(ol,0); parseText(ol,name()+" "+theTranslator->trMemberList()); @@ -833,35 +877,36 @@ void ClassDef::writeMemberList(OutputList &ol) } ol.endItemList(); endFile(ol); - ol.enableAll(); + ol.popGeneratorState(); } -void ClassDef::writeIncludeFile(OutputList &ol) -{ - if (!incFile) return; - //printf("incFile=%s\n",incFile->absFilePath().data()); - ol.disableAllBut(OutputGenerator::Html); - startFile(ol,fileName+"-include",name()+" Include File"); - startTitle(ol,0); - QCString n=incName.copy(); - if (incName.isEmpty()) - { - n=incFile->name(); - if (Config::fullPathNameFlag) - { - n.prepend(stripFromPath(incFile->getPath().copy())); - } - } - parseText(ol,n); - endTitle(ol,0,0); - parseText(ol,theTranslator->trVerbatimText(incFile->name())); - //ol.writeRuler(); - ol.startCodeFragment(); - parseCode(ol,n,fileToString(incFile->absFilePath()),FALSE,0); - ol.endCodeFragment(); - endFile(ol); - ol.enableAll(); -} +//void ClassDef::writeIncludeFile(OutputList &ol) +//{ +// initParseCodeContext(); +// if (!incFile) return; +// //printf("incFile=%s\n",incFile->absFilePath().data()); +// ol.disableAllBut(OutputGenerator::Html); +// startFile(ol,fileName+"-include",name()+" Include File"); +// startTitle(ol,0); +// QCString n=incName.copy(); +// if (incName.isEmpty()) +// { +// n=incFile->name(); +// if (Config::fullPathNameFlag) +// { +// n.prepend(stripFromPath(incFile->getPath().copy())); +// } +// } +// parseText(ol,n); +// endTitle(ol,0,0); +// parseText(ol,theTranslator->trVerbatimText(incFile->name())); +// //ol.writeRuler(); +// ol.startCodeFragment(); +// parseCode(ol,n,fileToString(incFile->absFilePath()),FALSE,0); +// ol.endCodeFragment(); +// endFile(ol); +// ol.enableAll(); +//} // add a reference to an example bool ClassDef::addExample(const char *anchor,const char *nameStr, @@ -890,7 +935,7 @@ bool ClassDef::hasExamples() } #if 0 -// write the list of all examples that are use this class. +// write the list of all examples that are used in this class. void ClassDef::writeExample(OutputList &ol) { QCString exampleLine=theTranslator->trWriteList(exampleList->count()); @@ -954,7 +999,7 @@ void ClassDef::setTemplateArguments(ArgumentList *al) // Argument *a=tempArgs->first(); // while (a) // { -// if (a->name.length()>0) // add template argument name +// if (!a->name.isEmpty()) // add template argument name // { // result+=a->name; // } @@ -1068,3 +1113,357 @@ bool ClassDef::isVisibleInHierarchy() // documented or show anyway or documentation is external (hasDocumentation() || !Config::hideClassFlag || isReference()); } + +//---------------------------------------------------------------------- +// recursive function: +// returns TRUE iff class definition `bcd' represents an (in)direct base +// class of class definition `cd'. + +bool ClassDef::isBaseClass(ClassDef *bcd) +{ + bool found=FALSE; + //printf("isBaseClass(cd=%s) looking for %s\n",cd->name().data(),bcd->name().data()); + BaseClassListIterator bcli(*baseClasses()); + for ( ; bcli.current() && !found ; ++bcli) + { + ClassDef *ccd=bcli.current()->classDef; + //printf("isBaseClass() baseclass %s\n",ccd->name().data()); + if (ccd==bcd) + found=TRUE; + else + found=ccd->isBaseClass(bcd); + } + return found; +} + +//---------------------------------------------------------------------------- +/*! + * recusively merges the `all members' lists of a class base + * with that of this class. Must only be called for classes without + * superclasses! + */ + +void ClassDef::mergeMembers(/*ClassDef *cd,BaseClassList *bcl*/) +{ + BaseClassListIterator bcli(*baseClasses()); + BaseClassDef *bcd; + for ( ; (bcd=bcli.current()) ; ++bcli ) + { + ClassDef *bClass=bcd->classDef; + // merge the members of bClass with the onces from cd + + bClass->mergeMembers(); + // the all member list of the branch until bClass is now complete + // so we can merge it with cd + + MemberNameInfoList *srcMnl = bClass->memberNameInfoList(); + MemberNameInfoDict *dstMnd = memberNameInfoDict(); + MemberNameInfoList *dstMnl = memberNameInfoList(); + + MemberNameInfoListIterator srcMnili(*srcMnl); + MemberNameInfo *srcMni; + for ( ; (srcMni=srcMnili.current()) ; ++srcMnili) + { + //printf("Base member name %s\n",srcMni->memberName()); + MemberNameInfo *dstMni; + if ((dstMni=dstMnd->find(srcMni->memberName()))) + // a member with that name is already in the class. + // the member may hide or reimplement the one in the super class + // or there may be another path to the base class that is already + // visited via another branch in the class hierarchy. + { + MemberNameInfoIterator srcMnii(*srcMni); + MemberInfo *srcMi; + for ( ; (srcMi=srcMnii.current()) ; ++srcMnii ) + { + MemberDef *srcMd = srcMi->memberDef; + bool found=FALSE; + bool ambigue=FALSE; + bool hidden=FALSE; + MemberNameInfoIterator dstMnii(*dstMni); + MemberInfo *dstMi; + ClassDef *srcCd = srcMd->memberClass(); + for ( ; (dstMi=dstMnii.current()) && !found; ++dstMnii ) + { + MemberDef *dstMd = dstMi->memberDef; + if (srcMd!=dstMd) // different members + { + ClassDef *dstCd = dstMd->memberClass(); + //printf("Is %s a base class of %s?\n",srcCd->name(),dstCd->name()); + if (srcCd==dstCd || dstCd->isBaseClass(srcCd)) + // member is in the same or a base class + { + found=matchArguments(srcMd->argumentList(), + dstMd->argumentList() + ); + //ambigue = ambigue || !found; + hidden = hidden || !found; + } + else // member is in a non base class => multiple inheritance + // using the same base class. + { + //printf("$$ Existing member %s %s add scope %s\n", + // dstMi->ambiguityResolutionScope.data(), + // dstMd->name().data(), + // dstMi->scopePath.left(dstMi->scopePath.find("::")+2).data()); + + QCString scope=dstMi->scopePath.left(dstMi->scopePath.find("::")+2); + if (scope!=dstMi->ambiguityResolutionScope.left(scope.length())) + dstMi->ambiguityResolutionScope.prepend(scope); + ambigue=TRUE; + } + } + else // same members + { + // do not add if base class is virtual or + // if scope paths are equal + if ((srcMi->virt==Virtual && dstMi->virt==Virtual) || + bClass->name()+"::"+srcMi->scopePath == dstMi->scopePath + ) + { + found=TRUE; + } + else // member can be reached via multiple paths in the + // inheritance tree + { + //printf("$$ Existing member %s %s add scope %s\n", + // dstMi->ambiguityResolutionScope.data(), + // dstMd->name().data(), + // dstMi->scopePath.left(dstMi->scopePath.find("::")+2).data()); + + QCString scope=dstMi->scopePath.left(dstMi->scopePath.find("::")+2); + if (scope!=dstMi->ambiguityResolutionScope.left(scope.length())) + dstMi->ambiguityResolutionScope.prepend(scope); + ambigue=TRUE; + } + } + } + //printf("member %s::%s hidden %d ambigue %d srcMi->ambigClass=%p\n", + // srcCd->name().data(),srcMd->name().data(),hidden,ambigue,srcMi->ambigClass); + + // TODO: fix the case where a member is hidden by inheritance + // of a member with the same name but with another prototype, + // while there is more than one path to the member in the + // base class due to multiple inheritance. In this case + // it seems that the member is not reachable by prefixing a + // scope name either (according to my compiler). Currently, + // this case is shown anyway. + if (!found && srcMd->protection()!=Private) + { + Specifier virt=srcMi->virt; + if (srcMi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt; + MemberInfo *newMi = new MemberInfo(srcMd,bcd->prot,virt); + newMi->scopePath=bClass->name()+"::"+srcMi->scopePath; + if (ambigue) + { + //printf("$$ New member %s %s add scope %s::\n", + // srcMi->ambiguityResolutionScope.data(), + // srcMd->name().data(), + // bClass->name().data()); + + QCString scope=bClass->name()+"::"; + if (scope!=srcMi->ambiguityResolutionScope.left(scope.length())) + newMi->ambiguityResolutionScope= + scope+srcMi->ambiguityResolutionScope.copy(); + } + if (hidden) + { + if (srcMi->ambigClass==0) + { + newMi->ambigClass=bClass; + newMi->ambiguityResolutionScope=bClass->name()+"::"; + } + else + { + newMi->ambigClass=srcMi->ambigClass; + newMi->ambiguityResolutionScope=srcMi->ambigClass->name()+"::"; + } + } + //printf("Adding!\n"); + dstMni->append(newMi); + } + } + } + else // base class has a member that is not in the super class => copy + { + // create a deep copy of the list (only the MemberInfo's will be + // copied, not the actual MemberDef's) + MemberNameInfo *newMni = new MemberNameInfo(srcMni->memberName()); + + // copy the member(s) from the base to the super class + MemberNameInfoIterator mnii(*srcMni); + MemberInfo *mi; + for (;(mi=mnii.current());++mnii) + { + if (mi->memberDef->protection()!=Private) + { + Specifier virt=mi->virt; + if (mi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt; + MemberInfo *newMi=new MemberInfo(mi->memberDef,bcd->prot,virt); + //if (mi->memberDef->memberClass()!=bClass) + newMi->scopePath=bClass->name()+"::"+mi->scopePath; + newMi->ambigClass=mi->ambigClass; + newMi->ambiguityResolutionScope=mi->ambiguityResolutionScope.copy(); + newMni->append(newMi); + } + } + + // add it to the list and dictionary + dstMnl->inSort(newMni); + dstMnd->insert(newMni->memberName(),newMni); + } + } + } +} + +//---------------------------------------------------------------------------- +/*! Builds up a dictionary of all classes that are used by the state of this + * class (the "implementation"). + * Must be called before mergeMembers() is called! + */ + +void ClassDef::determineImplUsageRelation() +{ + MemberNameInfoListIterator mnili(*allMemberNameInfoList); + MemberNameInfo *mni; + for (;(mni=mnili.current());++mnili) + { + MemberNameInfoIterator mnii(*mni); + MemberInfo *mi; + for (mnii.toFirst();(mi=mnii.current());++mnii) + { + MemberDef *md=mi->memberDef; + if (md->isVariable()) // for each member variable in this class + { + QCString type=md->typeString(); + static const QRegExp re("[a-z_A-Z][a-z_A-Z0-9:]*"); + //printf("in class %s found var type=`%s' name=`%s'\n", + // name().data(),type.data(),md->name().data()); + int p=0,i,l; + while ((i=re.match(type,p,&l))!=-1) // for each class name in the type + { + ClassDef *cd=getClass(name()+"::"+type.mid(i,l)); + if (cd==0) cd=getClass(type.mid(i,l)); // TODO: also try inbetween scopes! + if (cd && cd->isLinkable()) // class exists and is linkable + { + if (usesImplClassDict==0) usesImplClassDict = new UsesClassDict(257); + UsesClassDef *ucd=usesImplClassDict->find(cd->name()); + if (ucd==0) + { + ucd = new UsesClassDef(cd); + usesImplClassDict->insert(cd->name(),ucd); + //printf("Adding used class %s to class %s\n", + // cd->name().data(),name().data()); + } + ucd->addAccessor(md->name()); + //printf("Adding accessor %s to class %s\n", + // md->name().data(),ucd->classDef->name().data()); + } + p=i+l; + } + } + } + } +#ifdef DUMP + if (usesClassDict) + { + printf("Class %s uses the following classes:\n",name().data()); + UsesClassDictIterator ucdi(*usesClassDict); + UsesClassDef *ucd; + for (;(ucd=ucdi.current());++ucdi) + { + printf(" %s via ",ucd->classDef->name().data()); + QDictIterator<void> dvi(*ucd->accessors); + const char *s; + for (;(s=dvi.currentKey());++dvi) + { + printf("%s ",s); + } + printf("\n"); + } + } +#endif +} + +//---------------------------------------------------------------------------- + +#if 0 +// I have disabled this code because the graphs it renders quickly become +// too large to be of practical use. + +void ClassDef::addUsedInterfaceClasses(MemberDef *md,const char *typeStr) +{ + QCString type = typeStr; + static const QRegExp re("[a-z_A-Z][a-z_A-Z0-9:]*"); + int p=0,i,l; + while ((i=re.match(type,p,&l))!=-1) // for each class name in the type + { + ClassDef *cd=getClass(name()+"::"+type.mid(i,l)); + if (cd==0) cd=getClass(type.mid(i,l)); // TODO: also try inbetween scopes! + if (cd && cd!=this && !isBaseClass(cd)) + { + if (usesIntfClassDict==0) + { + usesIntfClassDict = new UsesClassDict(257); + } + UsesClassDef *ucd=usesIntfClassDict->find(cd->name()); + if (ucd==0) + { + ucd = new UsesClassDef(cd); + usesIntfClassDict->insert(cd->name(),ucd); + //printf("in class `%s' adding used intf class `%s'\n", + // name().data(),cd->name().data()); + } + ucd->addAccessor(md->name()); + printf("in class `%s' adding accessor `%s' to class `%s'\n", + name().data(),md->name().data(),ucd->classDef->name().data()); + } + p=i+l; + } +} + +void ClassDef::determineIntfUsageRelation() +{ + MemberNameInfoListIterator mnili(*allMemberNameInfoList); + MemberNameInfo *mni; + for (;(mni=mnili.current());++mnili) + { + MemberNameInfoIterator mnii(*mni); + MemberInfo *mi; + for (mnii.toFirst();(mi=mnii.current());++mnii) + { + MemberDef *md=mi->memberDef; + + // compute the protection level for this member + Protection protect=md->protection(); + if (mi->prot==Protected) // inherited protection + { + if (protect==Public) protect=Protected; + else if (protect==Protected) protect=Private; + } + + if (!md->name().isEmpty() && md->name()[0]!='@' && + (mi->prot!=Private && protect!=Private) + ) + { + // add classes found in the return type + addUsedInterfaceClasses(md,md->typeString()); + ArgumentList *al = md->argumentList(); + if (al) // member has arguments + { + // add classes found in the types of the argument list + ArgumentListIterator ali(*al); + Argument *a; + for (;(a=ali.current());++ali) + { + if (!a->type.isEmpty() && a->type.at(0)!='@') + { + addUsedInterfaceClasses(md,a->type); + } + } + } + } + } + } +} +#endif diff --git a/src/classdef.h b/src/classdef.h index 890cc4a..f891d8d 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -38,11 +38,12 @@ class MemberDef; class ExampleList; class MemberNameInfoList; class MemberNameInfoDict; +class UsesClassDict; +struct IncludeInfo; class ClassDef : public Definition { public: - enum CompoundType { Class=Entry::CLASS_SEC, Struct=Entry::STRUCT_SEC, Union=Entry::UNION_SEC, @@ -56,9 +57,9 @@ class ClassDef : public Definition BaseClassList *baseClasses() { return inherits; } void insertSuperClass(ClassDef *,Protection p,Specifier s,const char *t=0); BaseClassList *superClasses() { return inheritedBy; } - void setIncludeFile(FileDef *fd) { incFile=fd; } - FileDef *includeFile() const { return incFile; } - void setIncludeName(const char *n_) { incName=n_; } + void setIncludeFile(FileDef *fd,const char *incName,bool local); + //FileDef *includeFile() const { return incFile; } + //void setIncludeName(const char *n_) { incName=n_; } MemberNameInfoList *memberNameInfoList() { return allMemberNameInfoList; } MemberNameInfoDict *memberNameInfoDict() { return allMemberNameInfoDict; } void insertMember(const MemberDef *); @@ -68,7 +69,7 @@ class ClassDef : public Definition void dumpMembers(); void writeDocumentation(OutputList &ol); void writeMemberList(OutputList &ol); - void writeIncludeFile(OutputList &ol); + //void writeIncludeFile(OutputList &ol); //void writeMembersToContents(); void writeDeclaration(OutputList &ol,MemberDef *md); bool addExample(const char *anchor,const char *name, const char *file); @@ -96,17 +97,34 @@ class ClassDef : public Definition NamespaceDef *getNamespace() { return nspace; } void setFileDef(FileDef *fd) { fileDef=fd; } FileDef *getFileDef() const { return fileDef; } + void mergeMembers(); + bool isBaseClass(ClassDef *bcd); + void determineImplUsageRelation(); + void determineIntfUsageRelation(); + UsesClassDict *usedImplementationClasses() const + { + return usesImplClassDict; + } + UsesClassDict *usedInterfaceClasses() const + { + return usesIntfClassDict; + } bool visited; + protected: + void addUsedInterfaceClasses(MemberDef *md,const char *typeStr); + private: QCString fileName; // HTML containing the class docs - FileDef *incFile; // header file to refer to + IncludeInfo *incInfo; // header file to refer to QCString incName; // alternative include file name QCString memListFileName; BaseClassList *inherits; BaseClassList *inheritedBy; NamespaceDef *nspace; // the namespace this class is in + + /* member list by protection */ MemberList pubMembers; MemberList proMembers; MemberList priMembers; @@ -119,6 +137,16 @@ class ClassDef : public Definition MemberList related; MemberList signals; MemberList friends; + + /* member list by types */ + MemberList constructors; + MemberList typedefMembers; + MemberList enumMembers; + MemberList enumValMembers; + MemberList functionMembers; + MemberList relatedMembers; + MemberList variableMembers; + MemberNameInfoList *allMemberNameInfoList; MemberNameInfoDict *allMemberNameInfoDict; ArgumentList *tempArgs; @@ -128,8 +156,45 @@ class ClassDef : public Definition CompoundType compType; Protection prot; FileDef *fileDef; + UsesClassDict *usesImplClassDict; + UsesClassDict *usesIntfClassDict; }; +struct UsesClassDef +{ + UsesClassDef(ClassDef *cd) : classDef(cd) + { + accessors = new QDict<void>(17); + } + ~UsesClassDef() + { + delete accessors; + } + void addAccessor(const char *s) + { + if (accessors->find(s)==0) + { + accessors->insert(s,(void *)666); + } + } + ClassDef *classDef; + QDict<void> *accessors; +}; + +class UsesClassDict : public QDict<UsesClassDef> +{ + public: + UsesClassDict(int size) : QDict<UsesClassDef>(size) {} + ~UsesClassDict() {} +}; + +class UsesClassDictIterator : public QDictIterator<UsesClassDef> +{ + public: + UsesClassDictIterator(const QDict<UsesClassDef> &d) + : QDictIterator<UsesClassDef>(d) {} + ~UsesClassDictIterator() {} +}; struct BaseClassDef { diff --git a/src/classlist.cpp b/src/classlist.cpp index 518f757..d775679 100644 --- a/src/classlist.cpp +++ b/src/classlist.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -15,6 +15,7 @@ */ #include "classlist.h" +#include "config.h" ClassList::ClassList() : QList<ClassDef>() { @@ -28,7 +29,11 @@ int ClassList::compareItems(GCI item1, GCI item2) { ClassDef *c1=(ClassDef *)item1; ClassDef *c2=(ClassDef *)item2; - return strcmp(c1->name(),c2->name()); + + int prefixLength = Config::ignorePrefix.length(); + int i1 = c1->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0; + int i2 = c2->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0; + return strcmp(c1->name().data()+i1,c2->name().data()+i2); } ClassListIterator::ClassListIterator(const ClassList &cllist) : diff --git a/src/classlist.h b/src/classlist.h index 28d8454..c3269bd 100644 --- a/src/classlist.h +++ b/src/classlist.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/code.cpp b/src/code.cpp index 380e233..e754017 100644 --- a/src/code.cpp +++ b/src/code.cpp @@ -304,148 +304,146 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 77 -#define YY_END_OF_BUFFER 78 -static yyconst short int yy_acclist[771] = +#define YY_NUM_RULES 78 +#define YY_END_OF_BUFFER 79 +static yyconst short int yy_acclist[752] = { 0, - 31, 31, 78, 76, 77, 66, 75, 77, 1, 76, - 77, 76, 77, 76, 77, 76, 77, 31, 76, 77, - 31, 66, 75, 77, 1, 31, 76, 77, 33, 76, - 77, 31, 76, 77, 76, 77, 31, 76, 77, 31, - 76, 77, 6, 76, 77, 8, 66, 75, 77, 1, - 6, 76, 77, 6, 76, 77, 6, 76, 77, 6, - 76, 77, 6, 76, 77, 56, 76, 77, 56, 76, - 77, 1, 56, 76, 77, 76, 77, 76, 77, 56, - 76, 77, 76, 77, 76, 77, 58, 66, 75, 77, - 1, 76, 77, 76, 77, 76, 77, 76, 77, 62, - - 65, 76, 77, 64, 66, 75, 77, 1, 62, 65, - 76, 77, 65, 76, 77, 62, 65, 76, 77, 62, - 65, 76, 77, 62, 65, 76, 77, 76, 77, 66, - 75, 77, 1, 76, 77, 30, 76, 77, 76, 77, - 40, 76, 77, 76, 77, 37, 76, 77, 41, 76, - 77, 35, 76, 77, 8220, 76, 77,16412,16413, 8220, - 76, 77,16412,16413, 8220, 76, 77,16412,16413, 8220, - 76, 77,16412,16413, 8220, 76, 77,16412,16413, 8220, - 76, 77,16412,16413, 8220, 76, 77,16412,16413, 8220, - 76, 77,16412,16413, 8220, 76, 77,16412,16413, 8220, - - 76, 77,16412,16413, 8220, 76, 77,16412,16413, 8220, - 76, 77,16412,16413, 8220, 76, 77,16412,16413, 8220, - 76, 77,16412,16413, 8220, 76, 77,16412,16413, 10, - 76, 77, 11, 76, 77, 76, 77, 76, 77, 5, - 76, 77, 44, 76, 77, 45, 76, 77, 43, 76, - 77, 42, 76, 77,16436, 39, 76, 77, 39, 76, - 77, 66, 75, 77, 1, 39, 76, 77, 30, 39, - 76, 77, 39, 76, 77, 39, 76, 77, 39, 76, - 77, 76, 77,16422, 39, 76, 77, 39, 76, 77, - 39, 76, 77, 42, 76, 77,16437,16438, 50, 76, - - 77, 49, 76, 77, 76, 77, 66, 75, 77, 13, - 76, 77, 15, 76, 77, 12, 76, 77, 14, 76, - 77, 16, 76, 77, 76, 77, 76, 77, 25, 76, - 77, 22, 76, 77, 21, 76, 77, 21, 76, 77, - 21, 76, 77, 76, 77, 23, 76, 77, 24, 76, - 77, 76, 77,16388, 73, 74, 73, 74, 31, 31, - 31, 31, 32, 73, 31, 32, 74, 34, 31, 31, - 31, 32, 73, 31, 32, 74, 9, 74, 7, 9, - 74, 56, 56, 57, 55, 74, 56, 55, 74, 58, - 73, 74, 73, 74, 62, 61, 63, 73, 62, 63, - - 74, 62, 62, 63, 73, 62, 63, 74, 37, 41, - 8220, 8220, 8221, 8220,16412,16413, 8220,16412,16413, 8220, + 31, 31, 79, 77, 78, 67, 76, 78, 1, 77, + 78, 77, 78, 77, 78, 77, 78, 31, 77, 78, + 1, 31, 77, 78, 33, 77, 78, 31, 77, 78, + 77, 78, 31, 77, 78, 31, 77, 78, 6, 77, + 78, 8, 67, 76, 78, 1, 6, 77, 78, 6, + 77, 78, 6, 77, 78, 6, 77, 78, 6, 77, + 78, 57, 77, 78, 57, 77, 78, 1, 57, 77, + 78, 77, 78, 77, 78, 57, 77, 78, 77, 78, + 77, 78, 59, 67, 76, 78, 1, 77, 78, 77, + 78, 77, 78, 77, 78, 63, 66, 77, 78, 65, + + 67, 76, 78, 1, 63, 66, 77, 78, 66, 77, + 78, 63, 66, 77, 78, 63, 66, 77, 78, 63, + 66, 77, 78, 77, 78, 67, 76, 78, 1, 77, + 78, 30, 77, 78, 77, 78, 41, 77, 78, 77, + 78, 38, 77, 78, 42, 77, 78, 35, 77, 78, + 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, + 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, + 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, + 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, + 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, + + 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, + 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, + 8220, 77, 78,16412,16413, 10, 77, 78, 11, 77, + 78, 77, 78, 77, 78, 5, 77, 78, 45, 77, + 78, 46, 77, 78, 44, 77, 78, 43, 77, 78, + 16437, 40, 77, 78, 40, 77, 78, 67, 76, 78, + 1, 40, 77, 78, 30, 40, 77, 78, 40, 77, + 78, 40, 77, 78, 40, 77, 78, 77, 78,16423, + 40, 77, 78, 40, 77, 78, 40, 77, 78, 43, + 77, 78,16438,16439, 51, 77, 78, 50, 77, 78, + + 77, 78, 67, 76, 78, 13, 77, 78, 15, 77, + 78, 12, 77, 78, 14, 77, 78, 16, 77, 78, + 77, 78, 77, 78, 25, 77, 78, 22, 77, 78, + 21, 77, 78, 21, 77, 78, 21, 77, 78, 77, + 78, 23, 77, 78, 24, 77, 78, 77, 78,16388, + 74, 75, 74, 75, 31, 31, 32, 74, 31, 32, + 75, 34, 31, 31, 31, 32, 74, 31, 32, 75, + 9, 75, 7, 9, 75, 57, 57, 58, 56, 75, + 57, 56, 75, 59, 74, 75, 74, 75, 63, 62, + 64, 74, 63, 64, 75, 63, 63, 64, 74, 63, + + 64, 75, 38, 42, 8220, 8220, 8221, 8220,16412,16413, + 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220, 16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412, - 16413, 8220,16412,16413, 8220,16412,16413, 27, 8220,16412, + 16413, 27, 8220,16412,16413, 8220,16412,16413, 8220,16412, 16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220, 16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412, - 16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, - 5, 48, 46, 47, 51, 8244, 42,16436, 42, 8230, - 16422,16422, 8245, 8246, 42,16437,16438, 50, 15, 16, + 16413, 8220,16412,16413, 5, 49, 47, 48, 52, 8245, + 43,16437, 43, 8231,16423,16423, 8246, 8247, 43,16438, + 16439, 51, 15, 16, 13, 15, 14, 16, 21, 21, - 13, 15, 14, 16, 21, 21, 21, 21, 8196,16388, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 60, 62, 62, 62, 36, 36, 8220,16412,16413, 8220, - 16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412, - 16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, - 8220,16412,16413, 27, 8220, 27, 8220, 26, 8221, 8220, - 16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412, + 21, 21, 8196,16388, 31, 31, 31, 31, 31, 31, + 31, 31, 61, 63, 63, 63, 36, 36, 8220,16412, 16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220, - 8220, 8220,16412,16413,16422,16422, 21, 21, 21, 21, - - 16388, 71, 72, 68, 70, 71, 67, 68, 31, 31, - 31, 71, 31, 31, 72, 31, 31, 68, 31, 31, - 31, 70, 71, 31, 31, 67, 68, 71, 58, 71, - 72, 58, 68, 70, 71, 58, 70, 71, 58, 67, - 68, 60, 62, 62, 62, 8220,16412,16413, 8220,16412, - 16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, - 8220,16412,16413, 26, 8220,16412,16413, 8220,16412,16413, + 16412,16413, 8220,16412,16413, 27, 8220, 27, 8220, 26, + 8221, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220, - 16412,16413, 8220,16412,16413, 21, 21, 21, 21, 69, - 66, 70, 67, 31, 69, 31, 31, 66, 31, 70, + 16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412, + 16413, 8220, 8220, 8220,16412,16413,16423,16423, 21, 21, + 21, 21,16388, 72, 73, 69, 71, 72, 68, 69, - 31, 31, 67, 70, 58, 70, 58, 67, 62, 8220, + 31, 72, 31, 31, 73, 31, 31, 31, 31, 71, + 72, 31, 72, 59, 72, 73, 59, 69, 71, 72, + 59, 71, 72, 59, 68, 69, 61, 63, 63, 63, + 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220, + 16412,16413, 8220,16412,16413, 8220,16412,16413, 26, 8220, + 16412,16413, 8220,16412,16413, 8220,16412,16413, 27, 8220, 16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412, - 16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, - 8220,16412,16413, 21, 21, 21, 21, 31, 31, 3, - 8220, 3, 8220, 8220,16412,16413, 8220,16412,16413, 8220, - 16412,16413, 21, 21, 18, 21, 21, 59, 8220,16412, - 16413, 20, 21, 21, 17, 21, 21, 19, 21, 2 + 16413, 8220,16412,16413, 21, 21, 21, 21, 70, 67, + 71, 68, 31, 71, 31, 71, 59, 71, 59, 68, + 63, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, + + 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220, + 16412,16413, 8220,16412,16413, 21, 21, 21, 21, 3, + 8220, 3, 8220, 8220,16412,16413, 8220,16412,16413, 37, + 8220,16412,16413, 21, 21, 18, 21, 21, 60, 8220, + 16412,16413, 20, 21, 21, 17, 21, 21, 19, 21, + 2 } ; -static yyconst short int yy_accept[461] = +static yyconst short int yy_accept[449] = { 0, 1, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 6, 9, 12, 14, 16, 18, - 21, 25, 29, 32, 35, 37, 40, 43, 46, 50, - 54, 57, 60, 63, 66, 69, 72, 76, 78, 80, - 83, 85, 87, 91, 94, 96, 98, 100, 104, 108, - 113, 116, 120, 124, 128, 130, 133, 136, 139, 141, - 144, 146, 149, 152, 155, 160, 165, 170, 175, 180, - 185, 190, 195, 200, 205, 210, 215, 220, 225, 230, - - 233, 236, 238, 240, 243, 246, 249, 252, 256, 259, - 262, 265, 269, 273, 276, 279, 282, 285, 288, 291, - 294, 299, 302, 305, 307, 310, 313, 316, 319, 322, - 325, 327, 329, 332, 335, 338, 341, 344, 346, 349, - 352, 355, 355, 355, 356, 357, 357, 357, 358, 359, - 360, 361, 362, 365, 368, 369, 370, 371, 374, 377, - 379, 380, 382, 383, 384, 384, 385, 387, 388, 390, - 390, 391, 392, 393, 393, 393, 394, 395, 396, 397, - 399, 402, 403, 404, 406, 409, 409, 409, 409, 409, - 409, 410, 411, 411, 412, 413, 414, 417, 420, 423, - - 426, 429, 432, 435, 438, 442, 445, 448, 451, 454, - 457, 460, 463, 466, 469, 472, 475, 478, 478, 481, - 481, 482, 482, 482, 483, 484, 485, 486, 486, 487, - 489, 490, 490, 490, 490, 490, 490, 491, 492, 492, - 493, 493, 493, 494, 494, 495, 498, 499, 499, 499, - 500, 501, 501, 502, 503, 504, 505, 505, 505, 506, - 507, 508, 509, 509, 510, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 522, 523, 524, 525, - - 526, 527, 527, 530, 530, 533, 536, 539, 542, 545, - 548, 551, 554, 556, 558, 560, 563, 566, 569, 572, - 575, 578, 581, 584, 587, 590, 591, 592, 595, 595, - 595, 596, 596, 596, 597, 598, 599, 600, 601, 602, - 602, 602, 603, 603, 604, 604, 605, 605, 605, 607, - 607, 609, 610, 611, 613, 614, 616, 617, 619, 620, - 621, 624, 625, 628, 629, 631, 631, 632, 632, 634, - 634, 634, 636, 639, 639, 642, 642, 643, 643, 644, - 645, 646, 649, 652, 655, 658, 661, 664, 665, 668, - 671, 674, 677, 680, 683, 686, 686, 687, 688, 689, - - 690, 691, 691, 692, 693, 693, 694, 696, 697, 699, - 701, 702, 704, 705, 707, 707, 709, 709, 710, 713, - 716, 719, 722, 725, 728, 731, 734, 734, 735, 736, - 737, 738, 738, 738, 739, 740, 740, 742, 744, 747, - 750, 753, 753, 754, 755, 757, 758, 759, 762, 762, - 764, 765, 767, 767, 768, 768, 770, 770, 771, 771 + 21, 25, 28, 31, 33, 36, 39, 42, 46, 50, + 53, 56, 59, 62, 65, 68, 72, 74, 76, 79, + 81, 83, 87, 90, 92, 94, 96, 100, 104, 109, + 112, 116, 120, 124, 126, 129, 132, 135, 137, 140, + 142, 145, 148, 151, 156, 161, 166, 171, 176, 181, + 186, 191, 196, 201, 206, 211, 216, 221, 226, 229, + + 232, 234, 236, 239, 242, 245, 248, 252, 255, 258, + 261, 265, 269, 272, 275, 278, 281, 284, 287, 290, + 295, 298, 301, 303, 306, 309, 312, 315, 318, 321, + 323, 325, 328, 331, 334, 337, 340, 342, 345, 348, + 351, 351, 351, 352, 353, 353, 353, 354, 355, 356, + 359, 362, 363, 364, 365, 368, 371, 373, 374, 376, + 377, 378, 378, 379, 381, 382, 384, 384, 385, 386, + 387, 387, 387, 388, 389, 390, 391, 393, 396, 397, + 398, 400, 403, 403, 403, 403, 403, 403, 404, 405, + 405, 406, 407, 408, 411, 414, 417, 420, 423, 426, + + 429, 432, 436, 439, 442, 445, 448, 451, 454, 457, + 460, 463, 466, 469, 472, 472, 475, 475, 476, 476, + 476, 477, 478, 479, 480, 480, 481, 483, 484, 484, + 484, 484, 484, 484, 485, 486, 486, 487, 487, 487, + 488, 488, 489, 492, 493, 493, 493, 494, 495, 495, + 496, 497, 498, 499, 499, 499, 500, 501, 502, 503, + 503, 504, 505, 505, 505, 505, 505, 505, 505, 505, + 505, 505, 505, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 513, 513, 513, 513, 513, 513, 513, 513, + 513, 514, 515, 516, 517, 518, 519, 519, 522, 522, + + 525, 528, 531, 534, 537, 540, 543, 546, 548, 550, + 552, 555, 558, 561, 564, 567, 570, 573, 576, 579, + 582, 583, 584, 587, 587, 587, 588, 588, 588, 589, + 590, 591, 592, 593, 594, 594, 594, 595, 595, 596, + 596, 597, 597, 597, 599, 599, 601, 603, 604, 606, + 607, 608, 609, 612, 613, 614, 616, 616, 617, 617, + 619, 619, 619, 621, 624, 624, 627, 627, 628, 628, + 629, 630, 631, 634, 637, 640, 643, 646, 649, 650, + 653, 656, 659, 663, 666, 669, 672, 675, 675, 676, + 677, 678, 679, 680, 680, 681, 682, 682, 683, 685, + + 686, 687, 689, 689, 691, 691, 692, 695, 698, 701, + 704, 707, 710, 713, 713, 716, 716, 717, 718, 719, + 720, 720, 720, 720, 722, 724, 727, 730, 731, 734, + 734, 735, 736, 738, 739, 740, 743, 743, 745, 746, + 748, 748, 749, 749, 751, 751, 752, 752 } ; static yyconst int yy_ec[256] = @@ -489,372 +487,364 @@ static yyconst int yy_meta[50] = 14, 14, 14, 14, 14, 14, 1, 1, 16 } ; -static yyconst short int yy_base[514] = +static yyconst short int yy_base[500] = { 0, 0, 3, 5, 11, 20, 29, 35, 38, 45, 53, 55, 60, 62, 71, 87, 18, 136, 10, 185, 44, 229, 66, 275, 68, 324, 234, 373, 235, 420, 423, - 445, 237, 1529, 2037, 428, 2037, 6, 493, 65, 0, - 494, 0, 2037, 67, 0, 495, 226, 2037, 496, 2037, - 228, 1525, 497, 229, 0, 426, 0, 1511, 231, 502, - 417, 1523, 499, 1522, 504, 503, 505, 0, 520, 0, - 1508, 419, 521, 425, 522, 525, 528, 2037, 1499, 2037, - 1500, 2037, 1500, 1496, 545, 548, 513, 532, 531, 536, - 501, 521, 535, 539, 552, 542, 556, 549, 562, 2037, - - 2037, 531, 604, 1511, 2037, 598, 2037, 600, 2037, 621, - 624, 628, 2037, 1488, 597, 1493, 631, 634, 648, 631, - 653, 0, 2037, 651, 656, 636, 83, 2037, 0, 1507, - 659, 498, 2037, 2037, 0, 206, 1471, 663, 2037, 2037, - 654, 596, 666, 668, 676, 681, 672, 681, 680, 0, - 685, 678, 690, 684, 2037, 689, 687, 699, 702, 703, - 2037, 704, 0, 617, 1485, 2037, 707, 712, 710, 1495, - 2037, 722, 726, 714, 729, 732, 733, 0, 500, 728, - 734, 741, 735, 741, 743, 752, 1477, 758, 1485, 1484, - 2037, 1475, 761, 765, 769, 2037, 391, 741, 747, 737, - - 750, 756, 757, 766, 801, 765, 772, 775, 778, 783, - 787, 796, 800, 804, 793, 805, 816, 849, 852, 861, - 1489, 1457, 864, 2037, 2037, 2037, 2037, 1467, 2037, 860, - 0, 869, 1470, 882, 886, 889, 2037, 892, 910, 0, - 913, 918, 2037, 1465, 2037, 924, 0, 858, 906, 719, - 1480, 934, 823, 783, 0, 1477, 938, 711, 0, 868, - 1452, 1437, 928, 2037, 937, 0, 790, 853, 1464, 906, - 1471, 943, 941, 1445, 907, 1442, 946, 944, 955, 956, - 960, 964, 965, 971, 976, 983, 962, 987, 1438, 993, - 988, 994, 999, 1413, 878, 1006, 40, 996, 802, 2037, - - 1404, 1014, 779, 1017, 985, 988, 995, 998, 904, 992, - 1002, 1001, 1044, 1047, 2037, 1023, 1015, 1018, 1026, 1029, - 1032, 1036, 1039, 1040, 1049, 1083, 1085, 1092, 1372, 1094, - 1097, 1101, 1104, 1106, 1349, 1347, 1344, 1235, 1103, 0, - 1272, 2037, 1258, 2037, 1270, 2037, 0, 1269, 2037, 1268, - 2037, 1105, 1107, 0, 1252, 0, 1117, 0, 1112, 1124, - 0, 1129, 0, 1254, 2037, 1073, 1249, 1237, 2037, 1130, - 1230, 1208, 2037, 1200, 2037, 1135, 1142, 1143, 961, 1137, - 1144, 1116, 1120, 1119, 1131, 1124, 1127, 2037, 1135, 1139, - 1144, 1136, 1145, 1152, 1155, 1127, 1114, 1105, 1093, 1079, - - 2037, 1088, 1181, 2037, 1057, 2037, 0, 1188, 1188, 0, - 1196, 0, 1052, 2037, 1011, 2037, 1195, 1189, 1203, 1172, - 1173, 1181, 1180, 1184, 1187, 1200, 959, 883, 876, 870, - 831, 1216, 736, 1229, 641, 0, 1232, 1235, 1206, 1213, - 1218, 578, 575, 519, 0, 503, 2037, 1222, 220, 0, - 51, 0, 1, 0, 1256, 0, 1258, 2037, 2037, 1278, - 1294, 1310, 1326, 1342, 1358, 1374, 1390, 1406, 1422, 1438, - 1454, 1469, 1482, 1491, 1504, 1517, 1530, 1026, 1255, 1256, - 1540, 1553, 1568, 1572, 1585, 1600, 1606, 1620, 1636, 1652, - 1668, 1684, 1700, 1716, 1732, 1748, 1764, 1780, 1796, 1812, - - 1828, 1844, 1860, 1876, 1892, 1908, 1924, 1940, 1956, 1972, - 1988, 2004, 2020 + 445, 237, 1515, 1994, 428, 1994, 6, 493, 65, 0, + 0, 1994, 67, 0, 494, 226, 1994, 495, 1994, 228, + 1511, 496, 229, 0, 426, 0, 1497, 231, 501, 417, + 1509, 498, 1508, 503, 502, 504, 0, 506, 0, 1490, + 419, 519, 425, 521, 524, 527, 1994, 1479, 1994, 1480, + 1994, 1484, 1482, 534, 544, 510, 530, 520, 529, 536, + 537, 526, 547, 552, 541, 557, 564, 500, 1994, 1994, + + 606, 609, 1496, 1994, 612, 1994, 608, 1994, 617, 630, + 634, 1994, 1469, 580, 1472, 637, 640, 647, 590, 654, + 0, 1994, 658, 664, 616, 83, 1994, 0, 1485, 668, + 557, 1994, 1994, 0, 206, 1451, 671, 1994, 1994, 669, + 672, 642, 678, 673, 677, 665, 687, 690, 0, 689, + 691, 1994, 695, 686, 698, 703, 704, 1994, 707, 0, + 702, 1467, 1994, 708, 714, 712, 1479, 1994, 722, 726, + 719, 729, 734, 733, 0, 499, 728, 738, 742, 735, + 743, 745, 760, 1463, 763, 1471, 1470, 1994, 1461, 766, + 770, 773, 1994, 391, 716, 744, 753, 756, 764, 763, + + 760, 806, 769, 777, 780, 783, 788, 792, 801, 805, + 809, 798, 810, 821, 854, 857, 866, 1475, 1443, 869, + 1994, 1994, 1994, 1994, 1449, 1994, 865, 0, 874, 1450, + 887, 891, 894, 1994, 897, 915, 0, 918, 923, 1994, + 1445, 1994, 929, 0, 863, 911, 531, 1464, 939, 748, + 790, 0, 1463, 943, 615, 0, 561, 1437, 1406, 933, + 1994, 942, 0, 918, 797, 1422, 824, 1427, 948, 809, + 1393, 890, 1399, 959, 960, 964, 969, 858, 979, 986, + 990, 996, 997, 1395, 974, 1001, 1004, 1012, 1379, 883, + 1016, 40, 989, 554, 1994, 1369, 1019, 909, 1023, 913, + + 1004, 1001, 1007, 990, 997, 1010, 1014, 1056, 1059, 1994, + 1035, 1011, 1024, 1029, 1038, 1030, 1044, 1054, 1048, 1049, + 1091, 925, 1096, 1331, 1100, 1105, 1108, 643, 809, 1322, + 1222, 1228, 1208, 1108, 0, 1230, 1994, 1212, 1994, 1218, + 1994, 0, 1211, 1994, 1210, 1994, 0, 1186, 0, 1110, + 1116, 1114, 0, 1123, 1198, 1994, 908, 1186, 1180, 1994, + 1130, 1138, 1132, 1994, 1128, 1994, 1134, 1141, 1109, 966, + 1093, 1136, 1111, 1119, 1084, 1120, 1115, 1123, 1994, 1127, + 1128, 1132, 1174, 1137, 1144, 1149, 1150, 1073, 1063, 1046, + 1023, 1003, 1994, 1038, 971, 1994, 1033, 1994, 0, 1192, + + 998, 1994, 965, 1994, 1169, 1191, 1194, 1163, 1164, 1179, + 1182, 1168, 1186, 886, 1183, 826, 785, 756, 744, 728, + 995, 684, 0, 1228, 1237, 1193, 1201, 1994, 1215, 586, + 562, 518, 0, 464, 1994, 1218, 220, 0, 51, 0, + 1, 0, 1246, 0, 1247, 1994, 1994, 1267, 1283, 1299, + 1315, 1331, 1347, 1363, 1379, 1395, 1411, 1427, 1443, 1458, + 1471, 1480, 1493, 1506, 1519, 1240, 1246, 1251, 1529, 1542, + 1557, 1561, 1574, 1589, 1595, 1609, 1625, 1641, 1657, 1673, + 1689, 1705, 1721, 1737, 1753, 1769, 1785, 1801, 1817, 1833, + 1849, 1865, 1881, 1897, 1913, 1929, 1945, 1961, 1977 + } ; -static yyconst short int yy_def[514] = +static yyconst short int yy_def[500] = { 0, - 460, 460, 461, 461, 462, 462, 463, 463, 464, 464, - 465, 465, 460, 460, 459, 15, 459, 17, 459, 19, - 17, 21, 459, 23, 459, 25, 459, 27, 460, 460, - 459, 31, 459, 459, 459, 459, 459, 459, 459, 466, - 466, 466, 459, 466, 467, 466, 466, 459, 459, 459, - 459, 459, 459, 459, 468, 468, 468, 459, 459, 468, - 459, 469, 459, 469, 469, 469, 469, 470, 459, 470, - 459, 470, 470, 470, 459, 459, 459, 459, 471, 459, - 459, 459, 459, 459, 472, 472, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 459, - - 459, 473, 459, 459, 459, 459, 459, 474, 459, 459, - 459, 459, 459, 471, 459, 459, 475, 476, 459, 459, - 477, 478, 459, 459, 459, 459, 459, 459, 479, 459, - 459, 459, 459, 459, 480, 480, 480, 459, 459, 459, - 481, 459, 459, 459, 459, 459, 459, 459, 459, 466, - 466, 466, 466, 466, 459, 466, 466, 466, 466, 459, - 459, 459, 468, 468, 459, 459, 459, 468, 459, 469, - 459, 469, 469, 469, 469, 469, 469, 470, 459, 459, - 470, 470, 470, 459, 470, 459, 459, 459, 459, 471, - 459, 459, 482, 459, 459, 459, 86, 86, 86, 86, - - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 473, 483, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 474, - 484, 459, 459, 459, 485, 459, 459, 475, 476, 486, - 459, 459, 459, 459, 459, 477, 478, 459, 459, 459, - 459, 459, 459, 459, 479, 459, 459, 459, 480, 480, - 480, 480, 459, 459, 481, 487, 459, 459, 488, 488, - 489, 459, 459, 490, 490, 491, 466, 466, 492, 492, - 493, 466, 466, 494, 494, 495, 496, 496, 497, 469, - 469, 498, 498, 499, 459, 459, 500, 470, 501, 459, - - 459, 482, 86, 473, 86, 86, 86, 86, 86, 86, - 86, 86, 459, 459, 459, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 459, 459, 483, 459, 485, - 475, 476, 459, 486, 480, 480, 480, 480, 487, 502, - 503, 459, 459, 459, 489, 459, 504, 505, 459, 491, - 459, 506, 507, 466, 466, 466, 493, 466, 508, 509, - 466, 495, 466, 469, 459, 469, 469, 497, 459, 510, - 511, 469, 459, 499, 459, 459, 459, 459, 500, 512, - 501, 86, 86, 86, 86, 86, 86, 459, 86, 86, - 86, 86, 86, 86, 86, 459, 480, 480, 480, 480, - - 459, 503, 459, 459, 505, 459, 466, 507, 466, 466, - 509, 466, 469, 459, 511, 459, 459, 512, 86, 86, - 86, 86, 86, 86, 86, 86, 459, 480, 480, 480, - 480, 459, 459, 466, 466, 513, 459, 459, 86, 86, - 86, 459, 480, 480, 480, 480, 459, 86, 459, 480, - 480, 480, 459, 480, 459, 480, 459, 459, 0, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 459, 459 + 448, 448, 449, 449, 450, 450, 451, 451, 452, 452, + 453, 453, 448, 448, 447, 15, 447, 17, 447, 19, + 17, 21, 447, 23, 447, 25, 447, 27, 448, 448, + 447, 31, 447, 447, 447, 447, 447, 447, 447, 454, + 454, 447, 454, 455, 454, 454, 447, 447, 447, 447, + 447, 447, 447, 456, 456, 456, 447, 447, 456, 447, + 457, 447, 457, 457, 457, 457, 458, 447, 458, 447, + 458, 458, 458, 447, 447, 447, 447, 459, 447, 447, + 447, 447, 447, 460, 460, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 447, 447, + + 461, 447, 447, 447, 447, 447, 462, 447, 447, 447, + 447, 447, 459, 447, 447, 463, 464, 447, 447, 465, + 466, 447, 447, 447, 447, 447, 447, 467, 447, 447, + 447, 447, 447, 468, 468, 468, 447, 447, 447, 469, + 447, 447, 447, 447, 447, 447, 447, 447, 454, 454, + 454, 447, 454, 454, 454, 454, 447, 447, 447, 456, + 456, 447, 447, 447, 456, 447, 457, 447, 457, 457, + 457, 457, 457, 457, 458, 447, 447, 458, 458, 458, + 447, 458, 447, 447, 447, 447, 459, 447, 447, 470, + 447, 447, 447, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 461, 471, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 462, 472, 447, 447, + 447, 473, 447, 447, 463, 464, 474, 447, 447, 447, + 447, 447, 465, 466, 447, 447, 447, 447, 447, 447, + 447, 467, 447, 447, 447, 468, 468, 468, 468, 447, + 447, 469, 475, 447, 447, 476, 476, 477, 447, 447, + 478, 478, 479, 480, 480, 481, 454, 454, 482, 482, + 483, 484, 484, 485, 457, 457, 486, 486, 487, 447, + 447, 488, 458, 489, 447, 447, 470, 85, 461, 85, + + 85, 85, 85, 85, 85, 85, 85, 447, 447, 447, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 447, 447, 471, 447, 473, 463, 464, 447, 474, 468, + 468, 468, 468, 475, 490, 491, 447, 447, 447, 477, + 447, 492, 493, 447, 479, 447, 454, 454, 454, 481, + 494, 495, 454, 483, 457, 447, 457, 457, 485, 447, + 496, 497, 457, 447, 487, 447, 447, 447, 447, 488, + 498, 489, 85, 85, 85, 85, 85, 85, 447, 85, + 85, 85, 85, 85, 85, 85, 85, 447, 468, 468, + 468, 468, 447, 491, 447, 447, 493, 447, 454, 495, + + 457, 447, 497, 447, 447, 498, 85, 85, 85, 85, + 85, 85, 85, 447, 85, 447, 468, 468, 468, 468, + 447, 447, 499, 447, 447, 85, 85, 447, 85, 447, + 468, 468, 468, 468, 447, 85, 447, 468, 468, 468, + 447, 468, 447, 468, 447, 447, 0, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447 + } ; -static yyconst short int yy_nxt[2087] = +static yyconst short int yy_nxt[2044] = { 0, - 459, 333, 35, 36, 38, 35, 36, 41, 42, 237, - 43, 38, 46, 41, 42, 37, 43, 144, 39, 103, - 44, 145, 49, 50, 104, 39, 47, 456, 45, 455, - 53, 49, 50, 39, 45, 51, 56, 35, 57, 60, - 35, 57, 346, 52, 54, 119, 58, 63, 64, 58, - 59, 345, 52, 61, 66, 63, 64, 69, 70, 120, - 65, 73, 69, 70, 35, 36, 71, 38, 67, 38, - 72, 71, 38, 35, 36, 74, 148, 37, 153, 454, - 149, 39, 154, 39, 254, 254, 39, 34, 75, 76, - 77, 34, 78, 34, 34, 79, 34, 34, 34, 80, - - 81, 82, 37, 83, 84, 80, 34, 80, 34, 85, - 34, 86, 87, 88, 89, 90, 91, 92, 85, 93, - 85, 85, 85, 94, 85, 85, 95, 96, 97, 98, - 85, 99, 85, 100, 101, 102, 34, 34, 35, 36, - 34, 78, 34, 34, 79, 105, 106, 34, 107, 34, - 34, 37, 34, 34, 34, 34, 34, 34, 108, 34, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 34, 34, 34, 109, 110, 111, 112, 109, - 113, 109, 109, 114, 34, 109, 109, 109, 109, 109, - - 115, 34, 116, 109, 109, 109, 109, 117, 109, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 109, 109, 118, 34, 131, 138, 158, 38, 144, - 148, 159, 144, 160, 162, 260, 167, 453, 261, 39, - 39, 121, 39, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 34, 34, 35, 36, 34, + 447, 328, 35, 36, 38, 35, 36, 35, 41, 234, + 42, 38, 45, 35, 41, 37, 42, 143, 39, 102, + 43, 144, 48, 49, 103, 39, 46, 444, 44, 443, + 52, 48, 49, 39, 44, 50, 55, 35, 56, 59, + 35, 56, 341, 51, 53, 118, 57, 62, 63, 57, + 58, 340, 51, 60, 65, 62, 63, 68, 69, 119, + 64, 72, 68, 69, 35, 36, 70, 38, 66, 38, + 71, 70, 38, 35, 36, 73, 147, 37, 150, 442, + 148, 39, 151, 39, 251, 251, 39, 34, 74, 75, + 76, 34, 77, 34, 34, 78, 34, 34, 34, 79, + + 80, 81, 37, 82, 83, 79, 34, 79, 34, 84, + 34, 85, 86, 87, 88, 89, 90, 91, 84, 92, + 84, 84, 84, 93, 84, 84, 94, 95, 96, 97, + 84, 98, 84, 99, 100, 101, 34, 34, 35, 36, + 34, 77, 34, 34, 78, 104, 105, 34, 106, 34, + 34, 37, 34, 34, 34, 34, 34, 34, 107, 34, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 34, 34, 34, 108, 109, 110, 111, 108, + 112, 108, 108, 113, 34, 108, 108, 108, 108, 108, + + 114, 34, 115, 108, 108, 108, 108, 116, 108, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 108, 108, 117, 34, 130, 137, 155, 38, 143, + 147, 156, 143, 157, 159, 257, 164, 441, 258, 39, + 39, 120, 39, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 34, 34, 35, 36, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 37, 34, 34, 34, 34, 34, 34, 122, 34, 122, - - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 123, 34, 34, 34, 124, 125, 36, 34, 34, - 34, 126, 34, 34, 34, 126, 34, 34, 34, 37, - 34, 127, 128, 34, 34, 34, 129, 34, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 130, 34, 34, 34, 132, 35, 36, 34, 34, 34, - 34, 34, 34, 34, 34, 133, 34, 34, 37, 34, - 34, 34, 134, 34, 34, 135, 34, 135, 135, 135, - - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 136, 135, 135, 135, 135, 137, 135, 135, 130, - 34, 34, 35, 36, 38, 35, 36, 164, 148, 142, - 180, 197, 169, 197, 181, 37, 184, 165, 39, 139, - 185, 140, 139, 143, 140, 34, 34, 35, 36, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 141, - 37, 141, 34, 34, 34, 34, 34, 141, 34, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 34, 34, 34, 146, 151, 156, 142, 146, 258, - - 142, 295, 296, 168, 174, 171, 171, 171, 147, 152, - 157, 143, 147, 165, 143, 172, 176, 147, 175, 173, - 177, 142, 182, 186, 186, 186, 188, 186, 186, 186, - 186, 186, 218, 218, 218, 143, 183, 452, 207, 187, - 143, 197, 187, 197, 251, 187, 194, 195, 186, 194, - 195, 186, 200, 197, 196, 197, 201, 196, 208, 204, - 451, 197, 187, 197, 205, 187, 202, 209, 205, 203, - 206, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 210, 197, 197, 211, 197, 216, 212, 213, 198, 197, - 199, 197, 197, 217, 197, 214, 197, 142, 197, 223, - - 223, 215, 197, 450, 197, 220, 186, 186, 144, 227, - 221, 143, 145, 228, 229, 224, 225, 231, 164, 147, - 449, 187, 232, 232, 232, 234, 232, 232, 165, 232, - 232, 232, 236, 232, 232, 239, 239, 239, 233, 143, - 237, 233, 148, 253, 226, 233, 149, 253, 233, 241, - 232, 232, 248, 249, 242, 242, 278, 252, 249, 264, - 257, 249, 243, 147, 263, 233, 244, 245, 250, 266, - 231, 143, 269, 250, 147, 264, 250, 267, 147, 270, - 271, 268, 146, 272, 276, 274, 151, 273, 281, 277, - 156, 271, 275, 278, 279, 276, 147, 251, 282, 281, - - 152, 280, 283, 284, 157, 251, 286, 271, 276, 251, - 285, 271, 258, 168, 276, 174, 171, 286, 271, 276, - 254, 254, 271, 165, 171, 276, 287, 147, 171, 175, - 289, 171, 269, 288, 171, 171, 292, 294, 297, 270, - 290, 289, 182, 293, 291, 274, 272, 299, 294, 297, - 298, 268, 275, 186, 186, 186, 183, 251, 299, 188, - 186, 186, 302, 302, 302, 306, 194, 195, 186, 187, - 195, 195, 186, 143, 196, 187, 205, 197, 187, 197, - 309, 197, 187, 197, 254, 254, 187, 197, 305, 197, - 307, 308, 197, 310, 340, 311, 197, 197, 197, 197, - - 312, 340, 313, 314, 351, 316, 197, 197, 197, 304, - 315, 205, 197, 350, 197, 197, 317, 197, 197, 197, - 197, 197, 205, 197, 318, 197, 319, 197, 320, 197, - 253, 323, 321, 197, 253, 197, 197, 324, 197, 322, - 197, 197, 197, 197, 197, 197, 197, 197, 325, 205, - 218, 218, 218, 326, 327, 446, 197, 341, 197, 248, - 249, 196, 220, 186, 186, 223, 223, 221, 341, 227, - 232, 232, 232, 228, 229, 250, 147, 231, 187, 295, - 296, 224, 225, 234, 232, 232, 233, 330, 330, 330, - 236, 232, 232, 236, 232, 232, 445, 143, 237, 233, - - 335, 237, 444, 233, 251, 336, 233, 249, 249, 233, - 226, 239, 239, 239, 241, 232, 232, 459, 459, 242, - 242, 344, 344, 250, 443, 242, 242, 243, 147, 263, - 233, 244, 245, 243, 332, 252, 249, 244, 245, 257, - 249, 231, 264, 147, 384, 348, 197, 347, 353, 143, - 352, 250, 266, 147, 347, 250, 348, 352, 264, 353, - 342, 342, 358, 346, 365, 345, 355, 150, 359, 360, - 150, 356, 345, 366, 251, 359, 349, 170, 342, 342, - 360, 349, 355, 345, 251, 363, 150, 150, 350, 365, - 171, 356, 371, 442, 349, 171, 373, 370, 170, 349, - - 380, 373, 367, 371, 370, 366, 350, 376, 377, 170, - 170, 380, 382, 416, 367, 302, 302, 302, 218, 218, - 218, 378, 205, 205, 383, 197, 386, 197, 197, 387, - 197, 187, 197, 385, 197, 197, 247, 197, 197, 247, - 197, 197, 197, 197, 197, 313, 314, 186, 314, 314, - 186, 205, 205, 315, 171, 197, 388, 197, 197, 406, - 389, 187, 304, 197, 187, 197, 197, 393, 390, 197, - 391, 197, 205, 392, 197, 171, 197, 394, 197, 197, - 197, 197, 197, 395, 326, 327, 327, 327, 367, 197, - 403, 197, 196, 326, 327, 330, 330, 330, 236, 232, - - 232, 196, 239, 239, 239, 333, 237, 333, 264, 409, - 401, 233, 402, 237, 233, 237, 150, 404, 266, 358, - 150, 431, 345, 150, 264, 430, 412, 150, 401, 405, - 402, 363, 414, 429, 350, 404, 376, 377, 428, 406, - 345, 170, 332, 376, 377, 170, 351, 405, 405, 205, - 378, 205, 350, 427, 417, 350, 197, 378, 197, 419, - 197, 197, 197, 420, 197, 424, 421, 197, 422, 197, - 425, 197, 426, 197, 423, 197, 197, 197, 197, 197, - 205, 197, 432, 205, 197, 197, 197, 197, 419, 434, - 409, 406, 197, 402, 197, 197, 433, 197, 412, 436, - - 405, 405, 375, 435, 437, 438, 436, 440, 439, 205, - 171, 402, 197, 197, 197, 197, 205, 432, 205, 405, - 197, 197, 197, 197, 197, 419, 197, 197, 441, 197, - 434, 433, 416, 437, 438, 186, 438, 438, 186, 369, - 197, 196, 197, 197, 435, 197, 197, 205, 448, 187, - 205, 171, 187, 197, 205, 197, 171, 457, 197, 457, - 197, 458, 197, 458, 197, 255, 259, 356, 255, 259, - 351, 406, 346, 344, 403, 458, 400, 458, 34, 34, + 37, 34, 34, 34, 34, 34, 34, 121, 34, 121, + + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 122, 34, 34, 34, 123, 124, 36, 34, 34, + 34, 125, 34, 34, 34, 125, 34, 34, 34, 37, + 34, 126, 127, 34, 34, 34, 128, 34, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 129, 34, 34, 34, 131, 35, 36, 34, 34, 34, + 34, 34, 34, 34, 34, 132, 34, 34, 37, 34, + 34, 34, 133, 34, 34, 134, 34, 134, 134, 134, + + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 135, 134, 134, 134, 134, 136, 134, 134, 129, + 34, 34, 35, 36, 38, 35, 36, 161, 147, 141, + 177, 194, 166, 194, 178, 37, 181, 162, 39, 138, + 182, 139, 138, 142, 139, 34, 34, 35, 36, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 140, + 37, 140, 34, 34, 34, 34, 34, 140, 34, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 34, 34, 34, 145, 153, 141, 145, 440, 141, + + 290, 291, 165, 171, 168, 168, 168, 141, 146, 154, + 142, 146, 162, 142, 169, 173, 146, 172, 170, 174, + 179, 142, 183, 183, 183, 185, 183, 183, 183, 183, + 183, 214, 251, 251, 180, 191, 192, 183, 184, 142, + 194, 184, 194, 193, 184, 191, 192, 183, 201, 197, + 194, 184, 194, 193, 198, 202, 346, 202, 255, 439, + 194, 184, 194, 203, 199, 345, 194, 200, 194, 194, + 194, 194, 194, 204, 205, 206, 194, 194, 194, 194, + 207, 194, 208, 194, 195, 209, 196, 194, 210, 194, + 438, 143, 194, 330, 194, 144, 211, 194, 331, 194, + + 213, 147, 212, 248, 194, 148, 194, 215, 215, 215, + 217, 183, 183, 220, 220, 218, 255, 224, 229, 229, + 229, 225, 226, 250, 146, 228, 184, 250, 437, 221, + 222, 231, 229, 229, 230, 229, 229, 229, 233, 229, + 229, 236, 236, 236, 328, 142, 234, 230, 238, 229, + 229, 230, 234, 264, 230, 239, 239, 265, 223, 245, + 246, 248, 146, 240, 230, 249, 246, 241, 242, 254, + 246, 228, 260, 141, 261, 247, 269, 268, 145, 142, + 270, 247, 266, 146, 263, 247, 146, 142, 268, 267, + 261, 271, 146, 274, 273, 276, 153, 277, 272, 265, + + 275, 278, 279, 161, 248, 273, 276, 281, 268, 280, + 154, 273, 268, 162, 248, 165, 273, 248, 281, 268, + 171, 168, 273, 268, 168, 162, 282, 273, 168, 146, + 284, 168, 266, 283, 172, 168, 168, 289, 287, 267, + 285, 284, 292, 179, 286, 288, 269, 271, 289, 294, + 293, 202, 434, 292, 272, 250, 194, 180, 194, 250, + 294, 183, 183, 183, 185, 183, 183, 297, 297, 297, + 433, 191, 192, 183, 192, 192, 183, 184, 142, 193, + 184, 301, 432, 184, 194, 300, 194, 184, 304, 306, + 184, 251, 251, 194, 307, 194, 302, 303, 194, 305, + + 194, 336, 194, 194, 194, 194, 194, 308, 309, 311, + 328, 194, 336, 343, 299, 310, 202, 194, 234, 194, + 194, 312, 194, 194, 343, 194, 431, 202, 194, 313, + 194, 314, 194, 315, 194, 447, 318, 316, 194, 339, + 194, 194, 319, 194, 317, 194, 194, 194, 194, 194, + 194, 194, 194, 320, 202, 215, 215, 215, 321, 322, + 430, 194, 352, 194, 245, 246, 193, 217, 183, 183, + 220, 220, 218, 352, 224, 229, 229, 229, 225, 226, + 247, 146, 228, 184, 290, 291, 221, 222, 231, 229, + 229, 230, 325, 325, 325, 233, 229, 229, 233, 229, + + 229, 447, 142, 234, 230, 339, 234, 428, 230, 248, + 168, 230, 246, 246, 230, 223, 236, 236, 236, 238, + 229, 229, 335, 358, 239, 239, 322, 322, 247, 335, + 239, 239, 240, 146, 260, 230, 241, 242, 240, 327, + 249, 246, 241, 242, 254, 246, 228, 261, 146, 194, + 202, 194, 342, 194, 142, 194, 247, 263, 146, 342, + 247, 337, 337, 261, 337, 337, 341, 404, 341, 340, + 348, 149, 421, 351, 149, 349, 168, 340, 361, 248, + 351, 344, 337, 337, 344, 361, 422, 340, 344, 248, + 348, 344, 346, 371, 149, 345, 421, 149, 356, 356, + + 168, 349, 344, 168, 371, 362, 364, 357, 167, 344, + 422, 167, 358, 345, 364, 357, 362, 367, 368, 167, + 297, 297, 297, 167, 215, 215, 215, 358, 373, 202, + 375, 369, 194, 374, 377, 398, 184, 194, 376, 194, + 395, 194, 378, 194, 194, 420, 194, 194, 202, 194, + 194, 194, 194, 194, 194, 419, 194, 308, 309, 183, + 309, 309, 183, 202, 194, 310, 380, 299, 379, 194, + 383, 381, 194, 184, 418, 194, 184, 194, 194, 382, + 194, 384, 385, 387, 194, 386, 194, 417, 194, 194, + 194, 194, 321, 322, 194, 398, 194, 321, 322, 416, + + 193, 325, 325, 325, 397, 193, 233, 229, 229, 236, + 236, 236, 341, 261, 234, 340, 398, 230, 396, 397, + 405, 396, 230, 263, 407, 346, 194, 149, 345, 261, + 366, 149, 402, 340, 168, 367, 368, 397, 346, 396, + 404, 167, 367, 368, 202, 167, 345, 345, 327, 369, + 202, 194, 408, 194, 412, 194, 369, 409, 413, 194, + 194, 194, 194, 194, 410, 194, 411, 194, 194, 194, + 194, 415, 194, 423, 194, 308, 309, 194, 202, 194, + 423, 202, 360, 310, 194, 407, 194, 414, 168, 194, + 194, 194, 194, 398, 398, 424, 425, 397, 427, 426, + + 168, 349, 397, 194, 194, 194, 194, 202, 194, 407, + 194, 429, 346, 398, 194, 397, 194, 202, 202, 194, + 341, 194, 194, 194, 194, 194, 194, 339, 194, 424, + 425, 183, 395, 194, 194, 436, 194, 193, 425, 425, + 183, 194, 202, 194, 202, 184, 202, 445, 445, 392, + 244, 446, 446, 244, 184, 194, 252, 194, 194, 252, + 194, 256, 391, 390, 256, 446, 446, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 40, 40, 40, 40, 40, 40, - - 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 150, 150, 150, 150, 399, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 398, 150, - 155, 155, 397, 155, 155, 155, 155, 155, 155, 155, - - 155, 155, 155, 155, 155, 155, 163, 163, 396, 163, - 163, 163, 300, 163, 163, 375, 163, 163, 163, 163, - 163, 163, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 170, 178, 178, - 369, 178, 178, 178, 351, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 189, 189, 343, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 197, 197, 197, 346, 197, 343, 338, 337, 256, 197, - 197, 256, 197, 219, 219, 219, 245, 235, 229, 329, - 222, 192, 301, 300, 193, 219, 230, 171, 230, 230, - - 166, 230, 230, 262, 230, 238, 238, 238, 256, 238, - 235, 190, 222, 193, 238, 238, 192, 238, 240, 240, - 240, 191, 190, 179, 171, 171, 166, 161, 459, 459, - 240, 246, 246, 459, 459, 246, 459, 246, 246, 459, - 246, 246, 459, 246, 265, 459, 459, 459, 265, 265, - 265, 459, 265, 265, 303, 303, 303, 459, 459, 459, - 459, 459, 459, 459, 303, 459, 303, 459, 303, 328, - 328, 459, 459, 328, 459, 459, 459, 459, 328, 459, - 459, 328, 231, 231, 459, 231, 331, 331, 331, 459, - 459, 459, 459, 459, 459, 459, 331, 459, 331, 459, - - 331, 334, 459, 459, 459, 334, 459, 459, 459, 459, - 334, 459, 459, 334, 339, 459, 339, 459, 459, 339, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 459, - 342, 342, 342, 342, 342, 342, 345, 345, 345, 345, + 34, 34, 34, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 47, + + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 149, 149, 389, 149, 388, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 295, 149, 152, + 152, 366, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 160, 160, 360, 160, 160, + + 160, 346, 160, 160, 338, 160, 160, 160, 160, 160, + 160, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 175, 175, 341, + 175, 175, 175, 338, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 186, 186, 333, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 194, + 194, 194, 332, 194, 253, 253, 242, 232, 194, 194, + 226, 194, 216, 216, 216, 324, 219, 189, 296, 295, + 190, 168, 163, 259, 216, 227, 253, 227, 227, 232, + 227, 227, 187, 227, 235, 235, 235, 219, 235, 190, + + 189, 188, 187, 235, 235, 176, 235, 237, 237, 237, + 168, 168, 163, 158, 447, 447, 447, 447, 447, 237, + 243, 243, 447, 447, 243, 447, 243, 243, 447, 243, + 243, 447, 243, 262, 447, 447, 447, 262, 262, 262, + 447, 262, 262, 298, 298, 298, 447, 447, 447, 447, + 447, 447, 447, 298, 447, 298, 447, 298, 323, 323, + 447, 447, 323, 447, 447, 447, 447, 323, 447, 447, + 323, 228, 228, 447, 228, 326, 326, 326, 447, 447, + 447, 447, 447, 447, 447, 326, 447, 326, 447, 326, + 329, 447, 447, 447, 329, 447, 447, 447, 447, 329, + + 447, 447, 329, 334, 447, 334, 447, 447, 334, 337, + 337, 337, 337, 337, 337, 337, 337, 337, 447, 337, + 337, 337, 337, 337, 337, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 447, 344, 344, 344, 344, 344, 344, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 459, 349, 349, 349, 349, 349, 349, 350, 350, + 345, 345, 345, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - - 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 357, 357, 357, 357, 357, 357, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + + 350, 350, 350, 350, 350, 353, 353, 353, 353, 353, + 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 353, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 363, + 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, + 363, 363, 363, 363, 363, 365, 365, 365, 365, 365, + 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, + + 365, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 374, 374, 374, 374, - - 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, - 374, 374, 379, 379, 379, 379, 379, 379, 379, 379, - 379, 379, 379, 379, 379, 379, 379, 379, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 401, 401, 401, 401, 401, 401, - 459, 401, 401, 459, 401, 401, 401, 401, 401, 401, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 404, 404, 404, 404, - 404, 404, 459, 404, 404, 459, 404, 404, 404, 404, - 404, 404, 405, 405, 405, 405, 405, 405, 405, 405, - - 405, 405, 405, 405, 405, 405, 405, 405, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 408, 408, 408, 408, 408, 408, - 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, - 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 410, 410, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 413, 413, 413, 413, 413, 413, 413, 413, - 413, 413, 413, 413, 413, 413, 413, 413, 415, 415, - 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, - - 415, 415, 415, 415, 418, 418, 418, 418, 418, 418, - 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 447, 447, 447, 447, 447, 447, 459, 447, 447, 459, - 447, 447, 447, 447, 447, 447, 33, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459 + 372, 372, 372, 393, 393, 393, 393, 393, 393, 447, + 393, 393, 447, 393, 393, 393, 393, 393, 393, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 396, 396, 396, 396, 396, + 396, 447, 396, 396, 447, 396, 396, 396, 396, 396, + 396, 397, 397, 397, 397, 397, 397, 397, 397, 397, + 397, 397, 397, 397, 397, 397, 397, 399, 399, 399, + + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 400, 400, 400, 400, 400, 400, 400, + 400, 400, 400, 400, 400, 400, 400, 400, 400, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, + 403, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 435, 435, 435, + 435, 435, 435, 447, 435, 435, 447, 435, 435, 435, + 435, 435, 435, 33, 447, 447, 447, 447, 447, 447, + + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447 } ; -static yyconst short int yy_chk[2087] = +static yyconst short int yy_chk[2044] = { 0, - 0, 240, 1, 1, 2, 2, 2, 3, 3, 240, + 0, 237, 1, 1, 2, 2, 2, 3, 3, 237, 3, 18, 4, 4, 4, 1, 4, 37, 2, 16, - 3, 37, 5, 5, 16, 18, 4, 454, 3, 453, + 3, 37, 5, 5, 16, 18, 4, 442, 3, 441, 6, 6, 6, 16, 4, 5, 7, 7, 7, 8, - 8, 8, 297, 5, 6, 20, 7, 9, 9, 8, - 7, 297, 6, 8, 10, 10, 10, 11, 11, 20, + 8, 8, 292, 5, 6, 20, 7, 9, 9, 8, + 7, 292, 6, 8, 10, 10, 10, 11, 11, 20, 9, 12, 12, 12, 13, 13, 11, 22, 10, 24, - 11, 12, 14, 14, 14, 12, 39, 13, 44, 451, - 39, 22, 44, 24, 127, 127, 14, 15, 15, 15, + 11, 12, 14, 14, 14, 12, 39, 13, 43, 439, + 39, 22, 43, 24, 126, 126, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -871,8 +861,8 @@ static yyconst short int yy_chk[2087] = 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 21, 26, 28, 47, 32, 51, - 54, 47, 59, 51, 54, 136, 59, 449, 136, 26, + 19, 19, 19, 19, 21, 26, 28, 46, 32, 50, + 53, 46, 58, 50, 53, 135, 58, 437, 135, 26, 28, 21, 32, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 23, 23, 23, 23, 23, @@ -892,189 +882,185 @@ static yyconst short int yy_chk[2087] = 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 29, 29, 30, 30, 30, 56, 61, 35, - 72, 197, 61, 197, 72, 29, 74, 56, 30, 29, - 74, 29, 30, 35, 30, 31, 31, 31, 31, 31, + 27, 27, 29, 29, 30, 30, 30, 55, 60, 35, + 71, 194, 60, 194, 71, 29, 73, 55, 30, 29, + 73, 29, 30, 35, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 38, 41, 46, 49, 53, 132, - - 63, 179, 179, 60, 66, 66, 65, 67, 38, 41, - 46, 49, 53, 60, 63, 65, 67, 60, 66, 65, - 67, 69, 73, 75, 75, 75, 76, 76, 76, 77, - 77, 77, 102, 102, 102, 69, 73, 446, 91, 75, - 76, 91, 76, 91, 132, 77, 85, 85, 85, 86, - 86, 86, 87, 87, 85, 87, 88, 86, 92, 89, - 444, 92, 85, 92, 93, 86, 88, 94, 89, 88, - 90, 89, 88, 89, 88, 93, 90, 93, 90, 94, - 95, 94, 96, 96, 96, 98, 96, 97, 86, 98, - 86, 98, 95, 99, 95, 97, 97, 142, 97, 106, - - 106, 97, 99, 443, 99, 103, 103, 103, 115, 108, - 103, 142, 115, 108, 108, 106, 106, 108, 164, 103, - 442, 103, 110, 110, 110, 111, 111, 111, 164, 112, - 112, 112, 117, 117, 117, 118, 118, 118, 110, 111, - 117, 111, 120, 126, 106, 112, 120, 126, 117, 119, - 119, 119, 124, 124, 121, 121, 435, 125, 125, 141, - 131, 131, 121, 119, 138, 119, 121, 121, 124, 141, - 121, 125, 144, 125, 131, 141, 131, 143, 138, 144, - 145, 143, 146, 147, 149, 148, 151, 147, 154, 152, - 156, 145, 148, 152, 153, 149, 146, 124, 157, 154, - - 151, 153, 157, 158, 156, 131, 159, 160, 162, 138, - 158, 167, 258, 168, 169, 174, 174, 159, 160, 162, - 250, 250, 167, 168, 172, 169, 172, 168, 173, 174, - 173, 175, 180, 172, 176, 177, 176, 177, 181, 180, - 175, 173, 182, 176, 175, 184, 183, 185, 177, 181, - 183, 433, 184, 186, 186, 186, 182, 258, 185, 188, - 188, 188, 193, 193, 193, 200, 194, 194, 194, 186, - 195, 195, 195, 188, 194, 188, 198, 200, 193, 200, - 202, 198, 194, 198, 254, 254, 195, 199, 199, 199, - 201, 201, 201, 203, 267, 204, 202, 203, 202, 203, - - 204, 267, 205, 205, 299, 206, 204, 206, 204, 193, - 205, 207, 207, 299, 207, 208, 208, 208, 209, 303, - 209, 303, 209, 210, 210, 210, 211, 211, 212, 211, - 253, 215, 213, 215, 253, 215, 212, 216, 212, 213, - 213, 205, 213, 205, 214, 216, 214, 216, 217, 214, - 218, 218, 218, 219, 219, 431, 217, 268, 217, 248, - 248, 219, 220, 220, 220, 223, 223, 220, 268, 230, - 232, 232, 232, 230, 230, 248, 220, 230, 220, 295, - 295, 223, 223, 234, 234, 234, 232, 235, 235, 235, - 236, 236, 236, 238, 238, 238, 430, 234, 236, 234, - - 260, 238, 429, 235, 248, 260, 236, 249, 249, 238, - 223, 239, 239, 239, 241, 241, 241, 270, 275, 242, - 242, 270, 275, 249, 428, 246, 246, 242, 241, 263, - 241, 242, 242, 246, 235, 252, 252, 246, 246, 257, - 257, 246, 265, 263, 309, 273, 309, 272, 278, 252, - 277, 252, 265, 257, 272, 257, 273, 277, 265, 278, - 279, 280, 281, 379, 287, 281, 279, 280, 282, 283, - 279, 280, 379, 287, 263, 282, 284, 287, 279, 280, - 283, 285, 284, 281, 257, 286, 284, 285, 286, 288, - 291, 285, 291, 427, 284, 290, 292, 290, 288, 285, - - 298, 293, 288, 291, 290, 292, 286, 296, 296, 292, - 293, 298, 306, 415, 293, 302, 302, 302, 304, 304, - 304, 296, 305, 307, 308, 305, 311, 305, 306, 312, - 306, 302, 310, 310, 310, 307, 478, 307, 308, 478, - 308, 312, 311, 312, 311, 313, 313, 313, 314, 314, - 314, 316, 317, 313, 413, 317, 314, 317, 318, 405, - 318, 313, 302, 316, 314, 316, 319, 323, 319, 320, - 320, 320, 321, 322, 321, 366, 322, 324, 322, 323, - 324, 323, 324, 325, 326, 326, 327, 327, 366, 325, - 402, 325, 326, 328, 328, 330, 330, 330, 331, 331, - - 331, 328, 332, 332, 332, 333, 331, 334, 339, 353, - 352, 330, 353, 333, 331, 334, 352, 359, 339, 357, - 352, 400, 357, 359, 339, 399, 360, 359, 352, 360, - 353, 362, 370, 398, 362, 359, 376, 376, 397, 380, - 357, 370, 330, 377, 377, 370, 381, 360, 380, 382, - 376, 383, 362, 396, 378, 381, 382, 377, 382, 384, - 383, 384, 383, 385, 386, 390, 386, 387, 387, 387, - 391, 385, 393, 385, 389, 389, 392, 389, 392, 390, - 392, 390, 403, 395, 391, 393, 391, 393, 394, 409, - 408, 418, 394, 408, 394, 395, 403, 395, 411, 417, - - 418, 411, 374, 409, 419, 419, 417, 421, 420, 422, - 372, 408, 420, 421, 420, 421, 423, 432, 425, 411, - 423, 422, 423, 422, 424, 424, 424, 425, 426, 425, - 434, 432, 371, 437, 437, 437, 438, 438, 438, 368, - 426, 437, 426, 419, 434, 419, 439, 441, 439, 437, - 448, 367, 438, 440, 440, 440, 364, 455, 441, 457, - 441, 455, 448, 457, 448, 479, 480, 355, 479, 480, - 350, 348, 345, 343, 341, 455, 338, 457, 460, 460, - 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, - 460, 460, 460, 460, 461, 461, 461, 461, 461, 461, - - 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 464, 464, 464, 464, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 464, 464, 464, 465, 465, - 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, - 465, 465, 465, 465, 466, 466, 466, 466, 337, 466, - 466, 466, 466, 466, 466, 466, 466, 466, 336, 466, - 467, 467, 335, 467, 467, 467, 467, 467, 467, 467, - - 467, 467, 467, 467, 467, 467, 468, 468, 329, 468, - 468, 468, 301, 468, 468, 294, 468, 468, 468, 468, - 468, 468, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 470, 470, - 289, 470, 470, 470, 276, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 471, 471, 274, 471, 471, 471, - 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, - 472, 472, 472, 271, 472, 269, 262, 261, 256, 472, - 472, 251, 472, 473, 473, 473, 244, 233, 228, 222, - 221, 192, 190, 189, 187, 473, 474, 170, 474, 474, - - 165, 474, 474, 137, 474, 475, 475, 475, 130, 475, - 116, 114, 104, 84, 475, 475, 83, 475, 476, 476, - 476, 81, 79, 71, 64, 62, 58, 52, 33, 0, - 476, 477, 477, 0, 0, 477, 0, 477, 477, 0, - 477, 477, 0, 477, 481, 0, 0, 0, 481, 481, - 481, 0, 481, 481, 482, 482, 482, 0, 0, 0, - 0, 0, 0, 0, 482, 0, 482, 0, 482, 483, - 483, 0, 0, 483, 0, 0, 0, 0, 483, 0, - 0, 483, 484, 484, 0, 484, 485, 485, 485, 0, - 0, 0, 0, 0, 0, 0, 485, 0, 485, 0, - - 485, 486, 0, 0, 0, 486, 0, 0, 0, 0, - 486, 0, 0, 486, 487, 0, 487, 0, 0, 487, - 488, 488, 488, 488, 488, 488, 488, 488, 488, 0, - 488, 488, 488, 488, 488, 488, 489, 489, 489, 489, + 31, 31, 31, 31, 38, 45, 48, 52, 434, 62, + + 176, 176, 59, 65, 65, 64, 66, 68, 38, 45, + 48, 52, 59, 62, 64, 66, 59, 65, 64, 66, + 72, 68, 74, 74, 74, 75, 75, 75, 76, 76, + 76, 98, 247, 247, 72, 84, 84, 84, 74, 75, + 98, 75, 98, 84, 76, 85, 85, 85, 88, 86, + 86, 84, 86, 85, 87, 92, 294, 88, 131, 432, + 88, 85, 88, 89, 87, 294, 92, 87, 92, 89, + 87, 89, 87, 90, 91, 93, 90, 91, 90, 91, + 94, 95, 95, 95, 85, 95, 85, 93, 96, 93, + 431, 114, 94, 257, 94, 114, 96, 96, 257, 96, + + 97, 119, 96, 131, 97, 119, 97, 101, 101, 101, + 102, 102, 102, 105, 105, 102, 255, 107, 109, 109, + 109, 107, 107, 125, 102, 107, 102, 125, 430, 105, + 105, 110, 110, 110, 109, 111, 111, 111, 116, 116, + 116, 117, 117, 117, 328, 110, 116, 110, 118, 118, + 118, 111, 328, 142, 116, 120, 120, 142, 105, 123, + 123, 255, 118, 120, 118, 124, 124, 120, 120, 130, + 130, 120, 137, 141, 140, 123, 146, 144, 145, 124, + 146, 124, 143, 130, 140, 130, 137, 141, 144, 143, + 140, 147, 145, 150, 148, 151, 153, 154, 147, 422, + + 150, 154, 155, 161, 123, 148, 151, 156, 157, 155, + 153, 159, 164, 161, 130, 165, 166, 137, 156, 157, + 171, 171, 159, 164, 169, 165, 169, 166, 170, 165, + 170, 172, 177, 169, 171, 174, 173, 174, 173, 177, + 172, 170, 178, 179, 172, 173, 180, 181, 174, 182, + 180, 195, 420, 178, 181, 250, 195, 179, 195, 250, + 182, 183, 183, 183, 185, 185, 185, 190, 190, 190, + 419, 191, 191, 191, 192, 192, 192, 183, 185, 191, + 185, 197, 418, 190, 196, 196, 196, 191, 199, 201, + 192, 251, 251, 197, 201, 197, 198, 198, 198, 200, + + 201, 265, 201, 200, 199, 200, 199, 202, 202, 203, + 329, 203, 265, 270, 190, 202, 204, 204, 329, 204, + 205, 205, 205, 206, 270, 206, 417, 206, 207, 207, + 207, 208, 208, 209, 208, 267, 212, 210, 212, 267, + 212, 209, 213, 209, 210, 210, 202, 210, 202, 211, + 213, 211, 213, 214, 211, 215, 215, 215, 216, 216, + 416, 214, 278, 214, 245, 245, 216, 217, 217, 217, + 220, 220, 217, 278, 227, 229, 229, 229, 227, 227, + 245, 217, 227, 217, 290, 290, 220, 220, 231, 231, + 231, 229, 232, 232, 232, 233, 233, 233, 235, 235, + + 235, 272, 231, 233, 231, 272, 235, 414, 232, 245, + 357, 233, 246, 246, 235, 220, 236, 236, 236, 238, + 238, 238, 264, 357, 239, 239, 322, 322, 246, 264, + 243, 243, 239, 238, 260, 238, 239, 239, 243, 232, + 249, 249, 243, 243, 254, 254, 243, 262, 260, 298, + 300, 298, 269, 300, 249, 300, 249, 262, 254, 269, + 254, 274, 275, 262, 274, 275, 276, 403, 370, 276, + 274, 275, 395, 277, 274, 275, 285, 370, 285, 260, + 277, 279, 274, 275, 279, 285, 395, 276, 280, 254, + 279, 280, 281, 293, 279, 281, 421, 280, 282, 283, + + 401, 280, 279, 286, 293, 286, 287, 282, 283, 280, + 421, 282, 283, 281, 288, 287, 286, 291, 291, 287, + 297, 297, 297, 288, 299, 299, 299, 288, 301, 302, + 304, 291, 304, 303, 306, 397, 297, 305, 305, 305, + 394, 302, 307, 302, 301, 392, 301, 303, 312, 303, + 306, 312, 306, 312, 307, 391, 307, 308, 308, 308, + 309, 309, 309, 311, 313, 308, 313, 297, 309, 314, + 316, 314, 316, 308, 390, 311, 309, 311, 315, 315, + 315, 317, 318, 320, 317, 319, 317, 389, 319, 320, + 319, 320, 321, 321, 318, 371, 318, 323, 323, 388, + + 321, 325, 325, 325, 371, 323, 326, 326, 326, 327, + 327, 327, 350, 334, 326, 350, 352, 325, 351, 352, + 369, 351, 326, 334, 375, 354, 375, 351, 354, 334, + 365, 351, 361, 350, 363, 367, 367, 352, 372, 351, + 362, 361, 368, 368, 373, 361, 354, 372, 325, 367, + 374, 373, 376, 373, 381, 377, 368, 377, 382, 374, + 376, 374, 376, 378, 378, 378, 380, 380, 381, 380, + 381, 385, 382, 405, 382, 383, 383, 384, 387, 384, + 405, 384, 359, 383, 385, 386, 385, 383, 358, 386, + 387, 386, 387, 406, 400, 407, 407, 400, 409, 408, + + 355, 348, 406, 408, 409, 408, 409, 410, 412, 412, + 412, 415, 345, 343, 383, 400, 383, 413, 411, 410, + 340, 410, 411, 415, 411, 415, 413, 338, 413, 424, + 424, 424, 336, 426, 407, 426, 407, 424, 425, 425, + 425, 427, 427, 427, 429, 424, 436, 443, 445, 333, + 466, 443, 445, 466, 425, 429, 467, 429, 436, 467, + 436, 468, 332, 331, 468, 443, 445, 448, 448, 448, + 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, + 448, 448, 448, 449, 449, 449, 449, 449, 449, 449, + 449, 449, 449, 449, 449, 449, 449, 449, 449, 450, + + 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, + 450, 450, 450, 450, 450, 451, 451, 451, 451, 451, + 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, + 451, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 453, 453, 453, + 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, + 453, 453, 453, 454, 454, 330, 454, 324, 454, 454, + 454, 454, 454, 454, 454, 454, 454, 296, 454, 455, + 455, 289, 455, 455, 455, 455, 455, 455, 455, 455, + 455, 455, 455, 455, 455, 456, 456, 284, 456, 456, + + 456, 273, 456, 456, 271, 456, 456, 456, 456, 456, + 456, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 458, 458, 268, + 458, 458, 458, 266, 458, 458, 458, 458, 458, 458, + 458, 458, 458, 459, 459, 259, 459, 459, 459, 459, + 459, 459, 459, 459, 459, 459, 459, 459, 459, 460, + 460, 460, 258, 460, 253, 248, 241, 230, 460, 460, + 225, 460, 461, 461, 461, 219, 218, 189, 187, 186, + 184, 167, 162, 136, 461, 462, 129, 462, 462, 115, + 462, 462, 113, 462, 463, 463, 463, 103, 463, 83, + + 82, 80, 78, 463, 463, 70, 463, 464, 464, 464, + 63, 61, 57, 51, 33, 0, 0, 0, 0, 464, + 465, 465, 0, 0, 465, 0, 465, 465, 0, 465, + 465, 0, 465, 469, 0, 0, 0, 469, 469, 469, + 0, 469, 469, 470, 470, 470, 0, 0, 0, 0, + 0, 0, 0, 470, 0, 470, 0, 470, 471, 471, + 0, 0, 471, 0, 0, 0, 0, 471, 0, 0, + 471, 472, 472, 0, 472, 473, 473, 473, 0, 0, + 0, 0, 0, 0, 0, 473, 0, 473, 0, 473, + 474, 0, 0, 0, 474, 0, 0, 0, 0, 474, + + 0, 0, 474, 475, 0, 475, 0, 0, 475, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 0, 476, + 476, 476, 476, 476, 476, 477, 477, 477, 477, 477, + 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, + 477, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 0, 478, 478, 478, 478, 478, 478, 479, 479, 479, + 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, + 479, 479, 479, 480, 480, 480, 480, 480, 480, 480, + 480, 480, 480, 480, 480, 480, 480, 480, 480, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 482, 482, 482, 482, 482, + 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, + 482, 483, 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 484, 484, 484, + 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, + 484, 484, 484, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 485, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 487, 487, 487, 487, 487, + 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, + + 487, 488, 488, 488, 488, 488, 488, 488, 488, 488, + 488, 488, 488, 488, 488, 488, 488, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, - 489, 489, 490, 490, 490, 490, 490, 490, 490, 490, - 490, 0, 490, 490, 490, 490, 490, 490, 491, 491, + 489, 489, 489, 490, 490, 490, 490, 490, 490, 0, + 490, 490, 0, 490, 490, 490, 490, 490, 490, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, - 491, 491, 491, 491, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, + 491, 491, 491, 491, 491, 492, 492, 492, 492, 492, + 492, 0, 492, 492, 0, 492, 492, 492, 492, 492, + 492, 493, 493, 493, 493, 493, 493, 493, 493, 493, + 493, 493, 493, 493, 493, 493, 493, 494, 494, 494, - 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, - 493, 493, 493, 493, 493, 493, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, - 494, 494, 495, 495, 495, 495, 495, 495, 495, 495, - 495, 495, 495, 495, 495, 495, 495, 495, 496, 496, + 494, 494, 494, 495, 495, 495, 495, 495, 495, 495, + 495, 495, 495, 495, 495, 495, 495, 495, 495, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 497, 497, 497, 497, 497, 497, + 496, 496, 496, 496, 496, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, - 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, - 498, 498, 498, 498, 498, 498, 499, 499, 499, 499, - - 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, - 499, 499, 500, 500, 500, 500, 500, 500, 500, 500, - 500, 500, 500, 500, 500, 500, 500, 500, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 502, 502, 502, 502, 502, 502, - 0, 502, 502, 0, 502, 502, 502, 502, 502, 502, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 504, 504, 504, 504, - 504, 504, 0, 504, 504, 0, 504, 504, 504, 504, - 504, 504, 505, 505, 505, 505, 505, 505, 505, 505, - - 505, 505, 505, 505, 505, 505, 505, 505, 506, 506, - 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, - 506, 506, 506, 506, 507, 507, 507, 507, 507, 507, - 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, - 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, - 508, 508, 508, 508, 508, 508, 509, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 509, 509, 510, 510, 510, 510, 510, 510, 510, 510, - 510, 510, 510, 510, 510, 510, 510, 510, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - - 511, 511, 511, 511, 512, 512, 512, 512, 512, 512, - 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, - 513, 513, 513, 513, 513, 513, 0, 513, 513, 0, - 513, 513, 513, 513, 513, 513, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459 + 497, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 499, 499, 499, + 499, 499, 499, 0, 499, 499, 0, 499, 499, 499, + 499, 499, 499, 447, 447, 447, 447, 447, 447, 447, + + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447 } ; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; @@ -1105,7 +1091,7 @@ char *yytext; * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -1179,7 +1165,7 @@ typedef QList<CodeVarDef> CodeVarList; */ static CodeClassList g_codeClassList; -static CodeClassDict g_codeClassDict(17); +static CodeClassDict g_codeClassDict(1009); static CodeVarList g_codeVarList; static CodeVarList g_codeParmList; static const char * g_inputString; //!< the code fragment as text @@ -1305,10 +1291,10 @@ static void writeMultiLineCodeLink(OutputList &ol, static void addType() { if (g_name=="const") { g_name.resize(0); return; } - if (g_type.length()) g_type += ' ' ; + if (!g_type.isEmpty()) g_type += ' ' ; g_type += g_name ; g_name.resize(0) ; - if (g_type.length()) g_type += ' ' ; + if (!g_type.isEmpty()) g_type += ' ' ; g_type += g_args ; g_args.resize(0) ; } @@ -1316,7 +1302,7 @@ static void addType() static void addParmType() { if (g_parmName=="const") { g_parmName.resize(0); return; } - if (g_parmType.length()) g_parmType += ' ' ; + if (!g_parmType.isEmpty()) g_parmType += ' ' ; g_parmType += g_parmName ; g_parmName.resize(0) ; } @@ -1338,7 +1324,7 @@ static void addVariable() { g_cvd.name=g_name.copy().simplifyWhiteSpace(); g_cvd.type=g_type.copy().simplifyWhiteSpace(); - if (g_type.length()==0) + if (g_type.isEmpty()) return; else if ((getClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type])) { @@ -1351,7 +1337,7 @@ static void addParameter() { g_cvd.name=g_parmName.copy().simplifyWhiteSpace(); g_cvd.type=g_parmType.copy().simplifyWhiteSpace(); - if (g_cvd.type.length()==0) + if (g_cvd.type.isEmpty()) return; else if ((getClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type])) { @@ -1363,7 +1349,7 @@ static void addParameter() static void generateClassLink(OutputList &ol,char *clName) { QCString className=clName; - if (className.length()==0) return; + if (className.isEmpty()) return; ClassDef *cd; if ((cd=getClass(className)) && cd->isLinkable()) { @@ -1375,10 +1361,14 @@ static void generateClassLink(OutputList &ol,char *clName) // g_exampleFile.data()); if (cd->addExample(anchor,g_exampleName,g_exampleFile)) { - bool latexOn = ol.isEnabled(OutputGenerator::Latex); - if (latexOn) ol.disable(OutputGenerator::Latex); + ol.pushGeneratorState(); + //bool latexOn = ol.isEnabled(OutputGenerator::Latex); + //if (latexOn) ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::RTF); ol.writeAnchor(anchor); - if (latexOn) ol.enable(OutputGenerator::Latex); + //if (latexOn) ol.enable(OutputGenerator::Latex); + ol.popGeneratorState(); g_anchorCount++; } } @@ -1413,10 +1403,13 @@ static bool getLink(const char *className, // g_exampleFile.data()); if (md->addExample(anchor,g_exampleName,g_exampleFile)) { - bool latexEnabled = result.isEnabled(OutputGenerator::Latex); - if (latexEnabled) result.disable(OutputGenerator::Latex); + //bool latexEnabled = result.isEnabled(OutputGenerator::Latex); + result.pushGeneratorState(); + //if (latexEnabled) result.disable(OutputGenerator::Latex); + result.disable(OutputGenerator::Latex); result.writeAnchor(anchor); - if (latexEnabled) result.enable(OutputGenerator::Latex); + result.popGeneratorState(); + //if (latexEnabled) result.enable(OutputGenerator::Latex); g_anchorCount++; } } @@ -1439,7 +1432,7 @@ static bool getLink(const char *className, static ClassDef *stripClassName(const char *s) { QCString tmp=s; - QRegExp re("[a-z_A-Z][a-z_A-Z0-9]*"); + static const QRegExp re("[a-z_A-Z][a-z_A-Z0-9:]*"); int p=0,i,l; while ((i=re.match(tmp,p,&l))!=-1) { @@ -1577,7 +1570,7 @@ static void generateFunctionLink(OutputList &ol,char *funcName) locFunc=locFunc.right(locFunc.length()-i-2); } //printf("generateFunctionLink(%s) classScope=%s\n",locFunc.data(),locScope.data()); - if (locScope.length()>0 && (ccd=g_codeClassDict[locScope])) + if (!locScope.isEmpty() && (ccd=g_codeClassDict[locScope])) { //printf("using classScope %s\n",g_classScope.data()); char *s=ccd->bases.first(); @@ -1811,7 +1804,7 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 554 "code.l" +#line 561 "code.l" @@ -1862,14 +1855,14 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 460 ) + if ( yy_current_state >= 448 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *yy_state_ptr++ = yy_current_state; ++yy_cp; } - while ( yy_base[yy_current_state] != 2037 ); + while ( yy_base[yy_current_state] != 1994 ); yy_find_action: yy_current_state = *--yy_state_ptr; @@ -1920,12 +1913,12 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 556 "code.l" +#line 563 "code.l" YY_BREAK case 2: YY_RULE_SETUP -#line 557 "code.l" +#line 564 "code.l" { g_code->codify(yytext); BEGIN( ReadInclude ); @@ -1933,7 +1926,7 @@ YY_RULE_SETUP YY_BREAK case 3: YY_RULE_SETUP -#line 561 "code.l" +#line 568 "code.l" { codifyLines(yytext); //g_code->codify(yytext); @@ -1942,7 +1935,7 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 566 "code.l" +#line 573 "code.l" { //FileInfo *f; bool ambig; @@ -1965,7 +1958,7 @@ YY_RULE_SETUP YY_BREAK case 5: YY_RULE_SETUP -#line 585 "code.l" +#line 592 "code.l" { g_code->codify(yytext); BEGIN( SkipCPP ) ; @@ -1973,21 +1966,21 @@ YY_RULE_SETUP YY_BREAK case 6: YY_RULE_SETUP -#line 589 "code.l" +#line 596 "code.l" { g_code->codify(yytext); } YY_BREAK case 7: YY_RULE_SETUP -#line 592 "code.l" +#line 599 "code.l" { codifyLines(yytext); } YY_BREAK case 8: YY_RULE_SETUP -#line 595 "code.l" +#line 602 "code.l" { codifyLines(yytext); BEGIN( Body ) ; @@ -1995,14 +1988,14 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 599 "code.l" +#line 606 "code.l" { g_code->codify(yytext); } YY_BREAK case 10: YY_RULE_SETUP -#line 602 "code.l" +#line 609 "code.l" { g_code->codify(yytext); g_curlyCount++; @@ -2012,7 +2005,7 @@ YY_RULE_SETUP YY_BREAK case 11: YY_RULE_SETUP -#line 608 "code.l" +#line 615 "code.l" { g_code->codify(yytext); g_inClass=FALSE; @@ -2025,7 +2018,7 @@ YY_RULE_SETUP YY_BREAK case 12: YY_RULE_SETUP -#line 617 "code.l" +#line 624 "code.l" { g_code->codify(yytext); BEGIN( Body ); @@ -2033,7 +2026,7 @@ YY_RULE_SETUP YY_BREAK case 13: YY_RULE_SETUP -#line 621 "code.l" +#line 628 "code.l" { addType(); g_code->codify(yytext); @@ -2041,7 +2034,7 @@ YY_RULE_SETUP YY_BREAK case 14: YY_RULE_SETUP -#line 625 "code.l" +#line 632 "code.l" { g_ccd.name=yytext; addType(); @@ -2050,7 +2043,7 @@ YY_RULE_SETUP YY_BREAK case 15: YY_RULE_SETUP -#line 630 "code.l" +#line 637 "code.l" { codifyLines(yytext); BEGIN( Bases ); @@ -2058,12 +2051,12 @@ YY_RULE_SETUP YY_BREAK case 16: YY_RULE_SETUP -#line 634 "code.l" +#line 641 "code.l" { g_code->codify(yytext); g_curlyCount++; g_inClass=TRUE; - if (g_ccd.name.length()>0) + if (!g_ccd.name.isEmpty()) { g_classScope=g_ccd.name.copy(); CodeClassDef *cd=new CodeClassDef(g_ccd); @@ -2075,35 +2068,35 @@ YY_RULE_SETUP YY_BREAK case 17: YY_RULE_SETUP -#line 647 "code.l" +#line 654 "code.l" { g_code->codify(yytext); } YY_BREAK case 18: YY_RULE_SETUP -#line 650 "code.l" +#line 657 "code.l" { g_code->codify(yytext); } YY_BREAK case 19: YY_RULE_SETUP -#line 653 "code.l" +#line 660 "code.l" { g_code->codify(yytext); } YY_BREAK case 20: YY_RULE_SETUP -#line 656 "code.l" +#line 663 "code.l" { g_code->codify(yytext); } YY_BREAK case 21: YY_RULE_SETUP -#line 659 "code.l" +#line 666 "code.l" { //printf("%s:addBase(%s)\n",g_ccd.name.data(),yytext); g_ccd.bases.inSort(yytext); @@ -2112,7 +2105,7 @@ YY_RULE_SETUP YY_BREAK case 22: YY_RULE_SETUP -#line 664 "code.l" +#line 671 "code.l" { g_code->codify(yytext); g_sharpCount=1; @@ -2121,7 +2114,7 @@ YY_RULE_SETUP YY_BREAK case 23: YY_RULE_SETUP -#line 669 "code.l" +#line 676 "code.l" { g_code->codify(yytext); ++g_sharpCount; @@ -2129,7 +2122,7 @@ YY_RULE_SETUP YY_BREAK case 24: YY_RULE_SETUP -#line 673 "code.l" +#line 680 "code.l" { g_code->codify(yytext); if (--g_sharpCount<=0) @@ -2138,7 +2131,7 @@ YY_RULE_SETUP YY_BREAK case 25: YY_RULE_SETUP -#line 678 "code.l" +#line 685 "code.l" { g_code->codify(yytext); } @@ -2148,7 +2141,7 @@ case 26: yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 683 "code.l" +#line 690 "code.l" { codifyLines(yytext); g_name.resize(0);g_type.resize(0); @@ -2156,7 +2149,7 @@ YY_RULE_SETUP YY_BREAK case 27: YY_RULE_SETUP -#line 687 "code.l" +#line 694 "code.l" { codifyLines(yytext); g_name.resize(0);g_type.resize(0); @@ -2171,7 +2164,7 @@ YY_RULE_SETUP */ case 28: YY_RULE_SETUP -#line 698 "code.l" +#line 705 "code.l" { generateClassLink(*g_code,yytext); //codifyLines(yytext); @@ -2181,10 +2174,10 @@ YY_RULE_SETUP YY_BREAK case 29: YY_RULE_SETUP -#line 704 "code.l" +#line 711 "code.l" { addType(); - //if (type.length()==0) + //if (type.isEmpty()) QCString tmp=yytext; generateFunctionLink(*g_code,yytext); //else @@ -2197,7 +2190,7 @@ YY_RULE_SETUP YY_BREAK case 30: YY_RULE_SETUP -#line 716 "code.l" +#line 723 "code.l" { g_code->codify(yytext); g_lastStringContext=YY_START; @@ -2206,21 +2199,21 @@ YY_RULE_SETUP YY_BREAK case 31: YY_RULE_SETUP -#line 721 "code.l" +#line 728 "code.l" { g_code->codify(yytext); } YY_BREAK case 32: YY_RULE_SETUP -#line 724 "code.l" +#line 731 "code.l" { g_code->codify(yytext); } YY_BREAK case 33: YY_RULE_SETUP -#line 727 "code.l" +#line 734 "code.l" { g_code->codify(yytext); BEGIN( g_lastStringContext ); @@ -2228,14 +2221,14 @@ YY_RULE_SETUP YY_BREAK case 34: YY_RULE_SETUP -#line 731 "code.l" +#line 738 "code.l" { g_code->codify(yytext); } YY_BREAK case 35: YY_RULE_SETUP -#line 734 "code.l" +#line 741 "code.l" { g_code->codify(yytext); g_name.resize(0);g_type.resize(0); @@ -2243,24 +2236,29 @@ YY_RULE_SETUP YY_BREAK case 36: YY_RULE_SETUP -#line 738 "code.l" +#line 745 "code.l" { g_code->codify(yytext); } YY_BREAK case 37: YY_RULE_SETUP -#line 741 "code.l" +#line 748 "code.l" +{ g_code->codify(yytext); } + YY_BREAK +case 38: +YY_RULE_SETUP +#line 749 "code.l" { g_code->codify(yytext); BEGIN( MemberCall ); } YY_BREAK -case 38: +case 39: YY_RULE_SETUP -#line 745 "code.l" +#line 753 "code.l" { - if (g_name.length()>0) + if (!g_name.isEmpty()) generateMemberLink(*g_code,g_name,yytext); else g_code->codify(yytext); @@ -2269,9 +2267,9 @@ YY_RULE_SETUP BEGIN(FuncCall); } YY_BREAK -case 39: +case 40: YY_RULE_SETUP -#line 754 "code.l" +#line 762 "code.l" { g_code->codify(yytext); g_type.resize(0); @@ -2279,54 +2277,54 @@ YY_RULE_SETUP BEGIN(Body); } YY_BREAK -case 40: +case 41: YY_RULE_SETUP -#line 760 "code.l" +#line 768 "code.l" { g_code->codify(yytext); - if (g_type.length()>0) + if (!g_type.isEmpty()) addVariable(); g_name.resize(0); if (*yytext!=',') g_type.resize(0); g_args.resize(0); } YY_BREAK -case 41: +case 42: YY_RULE_SETUP -#line 768 "code.l" +#line 776 "code.l" { g_code->codify(yytext); } YY_BREAK -case 42: +case 43: YY_RULE_SETUP -#line 771 "code.l" +#line 779 "code.l" { addParmType(); g_parmName=yytext; generateClassLink(*g_code,yytext); } YY_BREAK -case 43: +case 44: YY_RULE_SETUP -#line 776 "code.l" +#line 784 "code.l" { g_code->codify(yytext); addParameter(); g_parmType.resize(0);g_parmName.resize(0); } YY_BREAK -case 44: +case 45: YY_RULE_SETUP -#line 781 "code.l" +#line 789 "code.l" { g_code->codify(yytext); g_bracketCount++; } YY_BREAK -case 45: +case 46: YY_RULE_SETUP -#line 785 "code.l" +#line 793 "code.l" { g_code->codify(yytext); if (--g_bracketCount<=0) @@ -2335,22 +2333,22 @@ YY_RULE_SETUP BEGIN( Body ); } YY_BREAK -case 46: +case 47: YY_RULE_SETUP -#line 792 "code.l" +#line 800 "code.l" { codifyLines(yytext); g_bracketCount=0; - if (!g_inClass && g_type.length()>0) + if (!g_inClass && !g_type.isEmpty()) addVariable(); g_name.resize(0);g_type.resize(0); g_parmType.resize(0);g_parmName.resize(0); BEGIN( Body ); } YY_BREAK -case 47: +case 48: YY_RULE_SETUP -#line 801 "code.l" +#line 809 "code.l" { addParameter(); g_parmType.resize(0);g_parmName.resize(0); @@ -2361,9 +2359,9 @@ YY_RULE_SETUP BEGIN( Body ); } YY_BREAK -case 48: +case 49: YY_RULE_SETUP -#line 810 "code.l" +#line 818 "code.l" { addParameter(); g_parmType.resize(0);g_parmName.resize(0); @@ -2373,46 +2371,46 @@ YY_RULE_SETUP BEGIN( SkipInits ); } YY_BREAK -case 49: +case 50: YY_RULE_SETUP -#line 818 "code.l" +#line 826 "code.l" { g_code->codify(yytext); g_curlyCount++; BEGIN( Body ); } YY_BREAK -case 50: +case 51: YY_RULE_SETUP -#line 823 "code.l" +#line 831 "code.l" { generateClassLink(*g_code,yytext); } YY_BREAK -case 51: +case 52: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 826 "code.l" +#line 834 "code.l" { generateFunctionLink(*g_code,yytext); } YY_BREAK -case 52: +case 53: YY_RULE_SETUP -#line 829 "code.l" +#line 837 "code.l" { g_code->codify(yytext); g_args=yytext; BEGIN( MemberCall2 ); } YY_BREAK -case 53: +case 54: YY_RULE_SETUP -#line 834 "code.l" +#line 842 "code.l" { - if (g_args.length()>0) + if (!g_args.isEmpty()) generateMemberLink(*g_code,g_args,yytext); else g_code->codify(yytext); @@ -2420,61 +2418,61 @@ YY_RULE_SETUP BEGIN( FuncCall ); } YY_BREAK -case 54: +case 55: YY_RULE_SETUP -#line 842 "code.l" +#line 850 "code.l" { g_code->codify(yytext); g_args=yytext; } YY_BREAK -case 55: +case 56: YY_RULE_SETUP -#line 846 "code.l" +#line 854 "code.l" { g_code->codify(yytext); } YY_BREAK -case 56: +case 57: YY_RULE_SETUP -#line 849 "code.l" +#line 857 "code.l" { g_code->codify(yytext); } YY_BREAK -case 57: +case 58: YY_RULE_SETUP -#line 852 "code.l" +#line 860 "code.l" { g_code->codify(yytext); BEGIN( g_lastCContext ) ; } YY_BREAK -case 58: +case 59: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 856 "code.l" +#line 864 "code.l" { //codifyLines(yytext); g_code->codify(yytext); BEGIN( g_lastCContext ) ; } YY_BREAK -case 59: +case 60: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 861 "code.l" +#line 869 "code.l" { g_yyLineNr+=QCString(yytext).contains('\n'); } YY_BREAK -case 60: +case 61: YY_RULE_SETUP -#line 864 "code.l" +#line 872 "code.l" { g_yyLineNr+=QCString(yytext).contains('\n'); g_code->endCodeLine(); @@ -2485,31 +2483,31 @@ YY_RULE_SETUP BEGIN(g_lastSpecialCContext); } YY_BREAK -case 61: +case 62: YY_RULE_SETUP -#line 873 "code.l" +#line 881 "code.l" { BEGIN(g_lastSpecialCContext); } YY_BREAK -case 62: +case 63: YY_RULE_SETUP -#line 876 "code.l" +#line 884 "code.l" YY_BREAK -case 63: +case 64: YY_RULE_SETUP -#line 877 "code.l" +#line 885 "code.l" YY_BREAK -case 64: +case 65: YY_RULE_SETUP -#line 878 "code.l" +#line 886 "code.l" { g_yyLineNr++; } YY_BREAK -case 65: +case 66: YY_RULE_SETUP -#line 879 "code.l" +#line 887 "code.l" YY_BREAK /* @@ -2536,9 +2534,9 @@ YY_RULE_SETUP codifyLines(yytext); } */ -case 66: +case 67: YY_RULE_SETUP -#line 904 "code.l" +#line 912 "code.l" { // remove special one-line comment g_yyLineNr+=((QCString)yytext).contains('\n'); g_code->endCodeLine(); @@ -2548,9 +2546,9 @@ YY_RULE_SETUP } } YY_BREAK -case 67: +case 68: YY_RULE_SETUP -#line 912 "code.l" +#line 920 "code.l" { // remove special one-line comment g_yyLineNr++; g_code->endCodeLine(); @@ -2560,81 +2558,81 @@ YY_RULE_SETUP } } YY_BREAK -case 68: +case 69: YY_RULE_SETUP -#line 920 "code.l" +#line 928 "code.l" { // strip special one-line comment char c[2]; c[0]='\n'; c[1]=0; codifyLines(c); } YY_BREAK -case 69: +case 70: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 924 "code.l" +#line 932 "code.l" { g_lastSpecialCContext = YY_START; g_yyLineNr++; BEGIN(RemoveSpecialCComment); } YY_BREAK -case 70: +case 71: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 929 "code.l" +#line 937 "code.l" { // special C comment block at a new line g_lastSpecialCContext = YY_START; BEGIN(RemoveSpecialCComment); } YY_BREAK -case 71: +case 72: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 3; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 933 "code.l" +#line 941 "code.l" { // special C comment block half way a line g_lastSpecialCContext = YY_START; BEGIN(RemoveSpecialCComment); } YY_BREAK -case 72: +case 73: YY_RULE_SETUP -#line 937 "code.l" +#line 945 "code.l" {} YY_BREAK -case 73: +case 74: YY_RULE_SETUP -#line 938 "code.l" +#line 946 "code.l" { g_code->codify(yytext); g_lastCContext = YY_START ; BEGIN( SkipComment ) ; } YY_BREAK -case 74: +case 75: YY_RULE_SETUP -#line 943 "code.l" +#line 951 "code.l" { g_code->codify(yytext); g_lastCContext = YY_START ; BEGIN( SkipCxxComment ) ; } YY_BREAK -case 75: +case 76: YY_RULE_SETUP -#line 948 "code.l" +#line 956 "code.l" { codifyLines(yytext); } YY_BREAK -case 76: +case 77: YY_RULE_SETUP -#line 951 "code.l" +#line 959 "code.l" { g_code->codify(yytext); } @@ -2648,9 +2646,9 @@ YY_RULE_SETUP codifyLines(yytext); } */ -case 77: +case 78: YY_RULE_SETUP -#line 964 "code.l" +#line 972 "code.l" ECHO; YY_BREAK case YY_STATE_EOF(INITIAL): @@ -2957,7 +2955,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 460 ) + if ( yy_current_state >= 448 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2987,11 +2985,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 460 ) + if ( yy_current_state >= 448 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 459); + yy_is_jam = (yy_current_state == 447); if ( ! yy_is_jam ) *yy_state_ptr++ = yy_current_state; @@ -3549,7 +3547,7 @@ int main() return 0; } #endif -#line 964 "code.l" +#line 972 "code.l" /*@ ---------------------------------------------------------------------------- @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -77,7 +77,7 @@ typedef QList<CodeVarDef> CodeVarList; */ static CodeClassList g_codeClassList; -static CodeClassDict g_codeClassDict(17); +static CodeClassDict g_codeClassDict(1009); static CodeVarList g_codeVarList; static CodeVarList g_codeParmList; static const char * g_inputString; //!< the code fragment as text @@ -203,10 +203,10 @@ static void writeMultiLineCodeLink(OutputList &ol, static void addType() { if (g_name=="const") { g_name.resize(0); return; } - if (g_type.length()) g_type += ' ' ; + if (!g_type.isEmpty()) g_type += ' ' ; g_type += g_name ; g_name.resize(0) ; - if (g_type.length()) g_type += ' ' ; + if (!g_type.isEmpty()) g_type += ' ' ; g_type += g_args ; g_args.resize(0) ; } @@ -214,7 +214,7 @@ static void addType() static void addParmType() { if (g_parmName=="const") { g_parmName.resize(0); return; } - if (g_parmType.length()) g_parmType += ' ' ; + if (!g_parmType.isEmpty()) g_parmType += ' ' ; g_parmType += g_parmName ; g_parmName.resize(0) ; } @@ -236,7 +236,7 @@ static void addVariable() { g_cvd.name=g_name.copy().simplifyWhiteSpace(); g_cvd.type=g_type.copy().simplifyWhiteSpace(); - if (g_type.length()==0) + if (g_type.isEmpty()) return; else if ((getClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type])) { @@ -249,7 +249,7 @@ static void addParameter() { g_cvd.name=g_parmName.copy().simplifyWhiteSpace(); g_cvd.type=g_parmType.copy().simplifyWhiteSpace(); - if (g_cvd.type.length()==0) + if (g_cvd.type.isEmpty()) return; else if ((getClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type])) { @@ -261,7 +261,7 @@ static void addParameter() static void generateClassLink(OutputList &ol,char *clName) { QCString className=clName; - if (className.length()==0) return; + if (className.isEmpty()) return; ClassDef *cd; if ((cd=getClass(className)) && cd->isLinkable()) { @@ -273,10 +273,14 @@ static void generateClassLink(OutputList &ol,char *clName) // g_exampleFile.data()); if (cd->addExample(anchor,g_exampleName,g_exampleFile)) { - bool latexOn = ol.isEnabled(OutputGenerator::Latex); - if (latexOn) ol.disable(OutputGenerator::Latex); + ol.pushGeneratorState(); + //bool latexOn = ol.isEnabled(OutputGenerator::Latex); + //if (latexOn) ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::RTF); ol.writeAnchor(anchor); - if (latexOn) ol.enable(OutputGenerator::Latex); + //if (latexOn) ol.enable(OutputGenerator::Latex); + ol.popGeneratorState(); g_anchorCount++; } } @@ -311,10 +315,13 @@ static bool getLink(const char *className, // g_exampleFile.data()); if (md->addExample(anchor,g_exampleName,g_exampleFile)) { - bool latexEnabled = result.isEnabled(OutputGenerator::Latex); - if (latexEnabled) result.disable(OutputGenerator::Latex); + //bool latexEnabled = result.isEnabled(OutputGenerator::Latex); + result.pushGeneratorState(); + //if (latexEnabled) result.disable(OutputGenerator::Latex); + result.disable(OutputGenerator::Latex); result.writeAnchor(anchor); - if (latexEnabled) result.enable(OutputGenerator::Latex); + result.popGeneratorState(); + //if (latexEnabled) result.enable(OutputGenerator::Latex); g_anchorCount++; } } @@ -337,7 +344,7 @@ static bool getLink(const char *className, static ClassDef *stripClassName(const char *s) { QCString tmp=s; - QRegExp re("[a-z_A-Z][a-z_A-Z0-9]*"); + static const QRegExp re("[a-z_A-Z][a-z_A-Z0-9:]*"); int p=0,i,l; while ((i=re.match(tmp,p,&l))!=-1) { @@ -475,7 +482,7 @@ static void generateFunctionLink(OutputList &ol,char *funcName) locFunc=locFunc.right(locFunc.length()-i-2); } //printf("generateFunctionLink(%s) classScope=%s\n",locFunc.data(),locScope.data()); - if (locScope.length()>0 && (ccd=g_codeClassDict[locScope])) + if (!locScope.isEmpty() && (ccd=g_codeClassDict[locScope])) { //printf("using classScope %s\n",g_classScope.data()); char *s=ccd->bases.first(); @@ -635,7 +642,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) g_code->codify(yytext); g_curlyCount++; g_inClass=TRUE; - if (g_ccd.name.length()>0) + if (!g_ccd.name.isEmpty()) { g_classScope=g_ccd.name.copy(); CodeClassDef *cd=new CodeClassDef(g_ccd); @@ -703,7 +710,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) } <Body>{SCOPENAME}/{B}*"(" { addType(); - //if (type.length()==0) + //if (type.isEmpty()) QCString tmp=yytext; generateFunctionLink(*g_code,yytext); //else @@ -718,7 +725,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) g_lastStringContext=YY_START; BEGIN( SkipString ); } -<SkipString>[^\"\\]* { +<SkipString>[^\"\\\n]* { g_code->codify(yytext); } <SkipString>"//"|"/*" { @@ -738,12 +745,13 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) <Body,MemberCall,MemberCall2,FuncCall>"'"((\\.)|(.))"'" { g_code->codify(yytext); } +<Body>"this->" { g_code->codify(yytext); } <Body>"."|"->" { g_code->codify(yytext); BEGIN( MemberCall ); } <MemberCall>{SCOPENAME}/{B}*"(" { - if (g_name.length()>0) + if (!g_name.isEmpty()) generateMemberLink(*g_code,g_name,yytext); else g_code->codify(yytext); @@ -759,7 +767,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) } <Body>[,=;\[] { g_code->codify(yytext); - if (g_type.length()>0) + if (!g_type.isEmpty()) addVariable(); g_name.resize(0); if (*yytext!=',') g_type.resize(0); @@ -792,7 +800,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) <MemberCall2,FuncCall>")"[ \t\n]*";" { codifyLines(yytext); g_bracketCount=0; - if (!g_inClass && g_type.length()>0) + if (!g_inClass && !g_type.isEmpty()) addVariable(); g_name.resize(0);g_type.resize(0); g_parmType.resize(0);g_parmName.resize(0); @@ -832,7 +840,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) BEGIN( MemberCall2 ); } <MemberCall2>([a-z_A-Z][a-z_A-Z0-9]*)/([ \t\n]*"(") { - if (g_args.length()>0) + if (!g_args.isEmpty()) generateMemberLink(*g_code,g_args,yytext); else g_code->codify(yytext); diff --git a/src/config.cpp b/src/config.cpp index 1760948..b6b421c 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -302,113 +302,124 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 93 -#define YY_END_OF_BUFFER 94 -static yyconst short int yy_accept[938] = +#define YY_NUM_RULES 102 +#define YY_END_OF_BUFFER 103 +static yyconst short int yy_accept[1039] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 94, 91, 92, 91, - 91, 2, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 88, 91, 79, 76, 80, 2, 91, - 79, 79, 86, 87, 78, 77, 87, 87, 85, 83, - 83, 85, 85, 85, 91, 0, 90, 0, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 0, 89, 79, 81, 79, 86, 87, - 78, 87, 84, 82, 0, 0, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 79, 87, 1, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 1, 1, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 0, 29, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 0, - 40, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 0, 13, 75, 75, 75, - - 75, 75, 0, 14, 75, 75, 0, 30, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 0, 12, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 0, 23, - 0, 35, 75, 0, 41, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 0, 17, 75, 75, 75, 0, - 42, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 0, 28, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 0, 7, 75, 75, 0, 20, 75, 0, - 37, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 0, 15, 75, 75, 75, 75, 75, 75, - 0, 16, 75, 75, 75, 75, 75, 0, 45, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 0, 10, 0, 9, 0, 6, 75, 75, 75, - 75, 0, 73, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 0, 43, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 0, 27, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 0, 50, 75, 75, 75, - 75, 75, 75, 0, 26, 0, 72, 75, 0, 19, - 75, 75, 0, 11, 0, 8, 75, 75, 75, 75, - 75, 0, 3, 75, 0, 62, 0, 44, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 0, 61, - 0, 47, 75, 75, 75, 75, 75, 75, 0, 36, - 0, 31, 75, 0, 49, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 0, 63, 75, 75, 0, 22, - - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 0, 60, 75, 75, 75, 75, 75, 75, - 0, 38, 75, 75, 0, 48, 75, 75, 75, 75, - 75, 0, 34, 0, 74, 75, 75, 75, 75, 0, - 71, 0, 4, 75, 0, 67, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 0, 46, 0, - 59, 75, 75, 75, 75, 75, 0, 24, 75, 0, - 52, 75, 0, 21, 0, 53, 0, 39, 75, 75, - 75, 75, 0, 64, 75, 75, 0, 33, 0, 32, - 75, 75, 0, 18, 75, 75, 75, 75, 0, 5, - - 0, 65, 75, 75, 0, 54, 75, 75, 75, 0, - 69, 75, 75, 75, 0, 68, 0, 70, 75, 75, - 75, 0, 58, 0, 57, 0, 56, 0, 66, 0, - 55, 0, 25, 75, 0, 51, 0 + 0, 0, 0, 0, 0, 0, 103, 100, 101, 100, + 100, 2, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 97, 100, 88, 85, 89, 2, 100, + 88, 88, 95, 96, 87, 86, 96, 96, 94, 92, + 92, 94, 94, 94, 100, 0, 99, 0, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 0, 98, 88, + 90, 88, 95, 96, 87, 96, 93, 91, 0, 0, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 88, 96, 1, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 1, + 1, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 0, 31, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 0, 42, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 0, 14, 84, 84, + 84, 84, 84, 84, 0, 15, 84, 84, 0, 32, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 0, 13, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 0, 77, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 0, 24, 0, 37, 84, 0, + 43, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 0, 18, 84, 84, + 84, 0, 44, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 0, 30, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 0, 7, 84, 84, 0, 21, 84, 0, + 39, 84, 84, 84, 84, 0, 9, 84, 84, 84, + + 84, 84, 84, 84, 84, 0, 16, 84, 84, 84, + 84, 84, 84, 0, 82, 84, 0, 17, 84, 84, + 84, 84, 84, 0, 47, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 0, + 11, 0, 10, 0, 6, 84, 84, 84, 84, 84, + 84, 0, 75, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 0, 45, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 0, 29, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 0, 52, 0, + + 81, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 0, 28, 0, 74, 84, 0, 20, 84, 84, 0, + 12, 0, 8, 84, 84, 84, 84, 84, 0, 3, + 84, 0, 64, 84, 0, 46, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 0, 63, 0, + 49, 84, 84, 84, 84, 84, 84, 0, 38, 0, + 33, 84, 0, 51, 84, 84, 84, 84, 84, 84, + 84, 84, 0, 27, 84, 0, 79, 84, 0, 65, + 84, 84, 0, 23, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 0, 62, 84, + + 84, 84, 84, 84, 84, 84, 0, 40, 84, 84, + 0, 50, 84, 84, 84, 84, 84, 84, 0, 36, + 0, 76, 84, 84, 84, 84, 0, 73, 0, 4, + 0, 83, 84, 0, 69, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 0, 48, 0, + 61, 84, 84, 84, 84, 84, 84, 0, 25, 84, + 0, 54, 84, 0, 22, 0, 55, 0, 41, 84, + 84, 84, 84, 0, 66, 84, 84, 84, 0, 35, + 0, 34, 84, 84, 0, 19, 84, 84, 84, 84, + 84, 0, 5, 0, 67, 84, 84, 0, 56, 84, + + 84, 84, 84, 0, 71, 84, 84, 84, 84, 0, + 70, 0, 72, 84, 84, 84, 84, 0, 60, 84, + 0, 59, 0, 58, 0, 68, 0, 57, 0, 78, + 0, 26, 84, 0, 80, 0, 53, 0 } ; static yyconst int yy_ec[256] = @@ -452,510 +463,560 @@ static yyconst int yy_meta[45] = 6, 6, 6, 1 } ; -static yyconst short int yy_base[949] = +static yyconst short int yy_base[1050] = { 0, 0, 1, 45, 0, 87, 88, 131, 174, 218, 262, - 305, 348, 100, 101, 392, 436, 1237, 1238, 1238, 3, - 1193, 1238, 0, 1211, 0, 0, 1, 0, 2, 1217, - 10, 7, 1220, 1219, 1218, 1197, 79, 1196, 1211, 83, - 1214, 1209, 1212, 1238, 6, 0, 1238, 1238, 0, 1216, - 12, 1180, 0, 0, 1220, 1238, 95, 1178, 1238, 1238, - 1238, 1212, 109, 1176, 1209, 114, 1238, 1207, 0, 95, - 1190, 1194, 1183, 1192, 1199, 13, 1180, 1195, 1196, 128, - 1184, 1183, 1180, 1189, 1179, 1190, 127, 1168, 1169, 3, - 1168, 1171, 1180, 1167, 131, 1175, 134, 1182, 1161, 1163, - - 6, 1162, 1161, 118, 1238, 0, 1238, 1180, 0, 0, - 1187, 1178, 1238, 1238, 1178, 1144, 1168, 1164, 1170, 1142, - 1164, 1163, 1139, 1147, 1146, 1148, 1162, 1134, 1159, 1147, - 1147, 1157, 123, 1152, 1144, 1150, 1149, 1141, 1145, 1139, - 1145, 1140, 1127, 1142, 1145, 1140, 1126, 1115, 1126, 1136, - 1112, 1127, 1134, 1127, 1131, 1114, 1129, 1115, 1114, 1122, - 1102, 1123, 1126, 1113, 1096, 1095, 1238, 1100, 1122, 1097, - 1120, 1114, 1091, 8, 1099, 1089, 1115, 1113, 133, 1102, - 1097, 1091, 1097, 1109, 1105, 1080, 1079, 1088, 1077, 1076, - 1098, 1081, 1083, 1086, 1079, 1080, 1093, 1072, 1080, 137, - - 1073, 1075, 1084, 1063, 1085, 1084, 1068, 1069, 1085, 1082, - 1081, 1067, 1063, 1072, 1079, 1070, 0, 0, 1058, 1075, - 1057, 1073, 1046, 1054, 1071, 1053, 1042, 1060, 1065, 1055, - 1064, 1047, 1059, 1051, 1058, 1057, 110, 1045, 1043, 1042, - 1056, 1035, 169, 1027, 1050, 1044, 1047, 155, 1037, 1035, - 1021, 1020, 1023, 1025, 1025, 1016, 1018, 1026, 1035, 1037, - 0, 1020, 1018, 1029, 1031, 1007, 1025, 1021, 1012, 1017, - 1025, 1024, 1000, 1008, 1013, 1020, 1011, 1011, 1018, 1007, - 1000, 1014, 999, 1005, 988, 1010, 1009, 985, 992, 995, - 1007, 1008, 1007, 987, 992, 993, 989, 998, 981, 981, - - 984, 994, 978, 969, 159, 1238, 990, 994, 991, 74, - 988, 972, 971, 962, 969, 972, 986, 977, 965, 171, - 1238, 975, 955, 112, 954, 975, 954, 974, 969, 970, - 958, 955, 970, 957, 967, 957, 965, 172, 960, 940, - 939, 938, 949, 186, 948, 935, 191, 947, 933, 959, - 931, 938, 937, 951, 951, 945, 938, 951, 931, 925, - 948, 920, 919, 170, 937, 933, 916, 938, 921, 917, - 935, 923, 170, 913, 932, 916, 921, 906, 911, 930, - 917, 921, 927, 910, 922, 907, 912, 905, 909, 913, - 916, 919, 906, 899, 190, 195, 1238, 916, 915, 903, - - 905, 912, 197, 1238, 894, 895, 202, 1238, 894, 895, - 177, 905, 891, 886, 897, 876, 888, 895, 881, 896, - 883, 886, 877, 880, 891, 880, 878, 880, 863, 889, - 888, 868, 871, 872, 864, 875, 882, 866, 863, 872, - 874, 864, 872, 858, 868, 860, 855, 857, 204, 230, - 843, 231, 869, 866, 848, 847, 864, 860, 232, 1238, - 857, 851, 861, 847, 840, 854, 857, 856, 844, 843, - 836, 842, 851, 846, 822, 215, 846, 834, 842, 841, - 824, 839, 216, 842, 827, 835, 819, 819, 834, 816, - 832, 819, 833, 814, 812, 813, 816, 824, 816, 239, - - 823, 152, 243, 817, 816, 821, 808, 809, 244, 1238, - 247, 1238, 813, 248, 1238, 808, 818, 817, 809, 811, - 787, 796, 797, 792, 807, 802, 793, 788, 787, 781, - 793, 795, 802, 782, 783, 786, 779, 797, 796, 795, - 767, 766, 775, 774, 771, 771, 273, 784, 768, 784, - 771, 767, 779, 768, 762, 776, 759, 765, 769, 274, - 772, 769, 275, 766, 276, 1238, 277, 761, 760, 278, - 1238, 767, 757, 758, 746, 740, 762, 747, 753, 755, - 279, 745, 748, 760, 752, 754, 753, 280, 739, 263, - 736, 727, 282, 732, 746, 744, 737, 749, 736, 728, - - 733, 739, 278, 732, 302, 303, 311, 736, 314, 1238, - 725, 734, 722, 315, 737, 721, 735, 722, 718, 715, - 715, 718, 316, 1238, 729, 710, 317, 1238, 710, 318, - 1238, 718, 715, 665, 0, 10, 62, 74, 111, 319, - 88, 144, 320, 1238, 129, 159, 183, 197, 175, 176, - 322, 1238, 188, 323, 200, 220, 210, 331, 1238, 239, - 236, 223, 230, 271, 273, 281, 334, 281, 276, 320, - 321, 345, 1238, 346, 1238, 354, 1238, 322, 314, 357, - 358, 359, 1238, 324, 360, 311, 331, 361, 362, 344, - 341, 336, 362, 353, 376, 360, 377, 378, 365, 365, - - 370, 368, 400, 1238, 364, 369, 375, 378, 374, 366, - 405, 406, 394, 408, 1238, 381, 383, 384, 383, 385, - 417, 420, 404, 444, 387, 422, 1238, 404, 413, 402, - 403, 413, 402, 445, 1238, 447, 1238, 404, 448, 1238, - 449, 422, 451, 1238, 453, 1238, 427, 456, 435, 447, - 436, 467, 1238, 440, 469, 1238, 470, 1238, 456, 444, - 444, 460, 452, 467, 467, 468, 484, 466, 486, 1238, - 487, 1238, 473, 465, 466, 476, 477, 493, 495, 1238, - 498, 1238, 470, 500, 1238, 486, 502, 482, 477, 495, - 497, 481, 513, 514, 515, 1238, 497, 493, 518, 1238, - - 491, 505, 521, 522, 497, 527, 511, 502, 519, 496, - 506, 507, 538, 1238, 515, 511, 512, 513, 529, 544, - 545, 1238, 546, 525, 549, 1238, 535, 522, 537, 538, - 557, 558, 1238, 560, 1238, 546, 562, 528, 564, 565, - 1238, 566, 1238, 569, 571, 1238, 573, 548, 563, 551, - 569, 584, 571, 557, 587, 588, 574, 590, 1238, 591, - 1238, 566, 593, 580, 568, 571, 602, 1238, 588, 605, - 1238, 606, 607, 1238, 608, 1238, 609, 1238, 610, 577, - 598, 614, 621, 1238, 607, 604, 625, 1238, 626, 1238, - 611, 628, 629, 1238, 601, 603, 604, 634, 637, 1238, - - 640, 1238, 641, 629, 643, 1238, 611, 622, 648, 649, - 1238, 652, 654, 655, 656, 1238, 657, 1238, 660, 661, - 646, 668, 1238, 669, 1238, 672, 1238, 673, 1238, 674, - 1238, 675, 1238, 676, 677, 1238, 1238, 689, 695, 701, - 707, 713, 719, 721, 727, 676, 733, 736 + 305, 348, 100, 101, 392, 436, 1357, 1358, 1358, 3, + 1313, 1358, 0, 1331, 0, 0, 1, 0, 2, 1, + 79, 76, 1341, 1340, 1339, 1318, 80, 1317, 0, 82, + 1336, 1331, 1334, 1358, 6, 0, 1358, 1358, 0, 1338, + 12, 1302, 0, 0, 1342, 1358, 39, 1300, 1358, 1358, + 1358, 1334, 113, 1298, 1331, 117, 1358, 1329, 0, 118, + 1312, 1316, 1305, 1314, 1321, 9, 1302, 1317, 1318, 115, + 1306, 1305, 1302, 1314, 1292, 1309, 1299, 1297, 1309, 134, + 1287, 1288, 97, 1287, 1290, 1299, 1286, 124, 1294, 10, + + 1296, 1300, 1279, 1281, 110, 1280, 1279, 153, 1358, 0, + 1358, 1298, 0, 0, 1305, 1296, 1358, 1358, 1296, 1262, + 1286, 1282, 1288, 1260, 1282, 1281, 1257, 1265, 128, 1267, + 1281, 1253, 1278, 1266, 1266, 1276, 120, 1271, 1263, 1269, + 1257, 1267, 1266, 1258, 1254, 1261, 1255, 1261, 1256, 1243, + 1258, 1261, 1256, 1242, 1231, 1242, 1252, 1228, 1243, 1250, + 1243, 1247, 1230, 1245, 1221, 1230, 1229, 1237, 1217, 1238, + 1241, 1228, 1211, 1210, 1358, 1215, 1237, 1212, 1235, 1229, + 1206, 135, 1214, 1231, 1203, 1229, 1227, 150, 1216, 1211, + 1205, 1211, 1223, 1219, 1194, 1193, 1202, 1211, 1190, 1189, + + 1188, 1197, 1209, 1192, 1194, 1197, 1190, 1191, 1204, 1183, + 1191, 147, 1184, 1186, 1195, 1174, 1196, 1195, 1179, 1180, + 1196, 145, 1193, 1192, 1178, 1174, 1183, 1190, 1181, 0, + 0, 1169, 1186, 1168, 1184, 1157, 1165, 1182, 1164, 1153, + 1178, 1170, 1175, 1165, 1174, 1157, 1169, 1161, 1168, 1167, + 133, 1155, 1153, 1152, 1166, 1157, 1161, 1143, 169, 1158, + 1134, 1157, 1151, 1154, 191, 1144, 1142, 1128, 1127, 1130, + 1132, 1132, 1123, 1125, 1133, 1142, 1144, 0, 1127, 1125, + 1119, 1122, 1134, 1136, 1112, 1130, 1126, 1117, 1122, 1130, + 1129, 1105, 1113, 1118, 1125, 1116, 1116, 1123, 1111, 1111, + + 1104, 1118, 1103, 1109, 1092, 1114, 1113, 1089, 1096, 1099, + 1111, 1112, 1111, 1091, 1107, 1094, 1094, 1095, 1091, 1100, + 1083, 1083, 1074, 1085, 1095, 1079, 1070, 182, 1358, 1091, + 1095, 1092, 165, 1089, 1073, 1072, 1063, 1070, 1073, 1087, + 1078, 1066, 186, 1358, 1076, 1056, 1067, 1062, 150, 1053, + 1074, 1053, 1073, 1068, 1069, 1057, 1054, 1069, 1056, 1066, + 1056, 1064, 189, 1059, 1049, 1038, 1037, 1036, 1047, 193, + 1046, 1033, 195, 1045, 1031, 1057, 1029, 1036, 1035, 1049, + 1052, 1032, 1047, 1041, 1034, 1047, 1027, 1021, 1029, 1043, + 1015, 1014, 178, 1032, 1028, 1011, 1033, 1016, 1012, 1030, + + 1018, 13, 1008, 1027, 1011, 1016, 1001, 1006, 1025, 1021, + 1009, 1010, 1014, 1020, 1003, 1015, 1000, 1005, 998, 1002, + 1006, 1009, 1012, 999, 992, 200, 202, 1358, 1009, 1008, + 1007, 186, 998, 1005, 230, 1358, 987, 988, 231, 1358, + 987, 988, 85, 998, 984, 979, 990, 969, 984, 232, + 980, 987, 973, 988, 975, 978, 971, 968, 187, 983, + 972, 970, 972, 955, 981, 980, 960, 963, 964, 956, + 967, 974, 958, 955, 964, 966, 956, 964, 950, 949, + 945, 958, 950, 945, 947, 234, 235, 933, 236, 959, + 956, 938, 937, 954, 950, 237, 1358, 947, 933, 940, + + 950, 930, 935, 928, 942, 945, 944, 932, 931, 924, + 930, 939, 934, 910, 255, 909, 238, 1358, 933, 921, + 929, 928, 911, 926, 925, 221, 911, 927, 912, 920, + 904, 904, 919, 901, 917, 904, 918, 899, 897, 898, + 901, 909, 901, 243, 908, 243, 249, 902, 898, 889, + 899, 904, 891, 892, 276, 1358, 279, 1358, 896, 280, + 1358, 891, 901, 900, 892, 894, 870, 879, 887, 879, + 874, 887, 888, 883, 874, 869, 868, 862, 874, 876, + 883, 863, 864, 867, 860, 878, 877, 857, 875, 867, + 846, 845, 854, 853, 850, 850, 862, 281, 862, 865, + + 845, 861, 848, 844, 856, 845, 839, 853, 836, 842, + 840, 282, 843, 835, 284, 792, 287, 1358, 288, 787, + 786, 293, 1358, 793, 788, 301, 782, 70, 87, 85, + 152, 140, 162, 187, 302, 181, 191, 239, 227, 239, + 243, 313, 260, 314, 267, 297, 266, 278, 318, 285, + 302, 302, 297, 311, 302, 296, 305, 314, 314, 313, + 320, 311, 335, 336, 344, 319, 319, 355, 1358, 311, + 314, 323, 327, 357, 345, 331, 347, 336, 334, 333, + 335, 341, 368, 1358, 356, 339, 371, 1358, 348, 373, + 1358, 359, 363, 360, 353, 379, 1358, 365, 351, 355, + + 360, 376, 400, 350, 379, 403, 1358, 366, 394, 383, + 383, 397, 375, 411, 1358, 378, 414, 1358, 390, 416, + 402, 403, 393, 420, 1358, 411, 408, 396, 398, 405, + 409, 417, 444, 445, 417, 432, 426, 434, 435, 451, + 1358, 452, 1358, 453, 1358, 441, 423, 434, 441, 460, + 464, 465, 1358, 451, 467, 439, 457, 471, 472, 457, + 455, 450, 472, 463, 485, 471, 487, 467, 489, 476, + 476, 481, 479, 494, 1358, 477, 483, 486, 478, 473, + 465, 467, 506, 507, 495, 509, 1358, 482, 483, 484, + 483, 485, 515, 518, 505, 521, 488, 523, 1358, 524, + + 1358, 507, 499, 518, 507, 509, 520, 536, 508, 538, + 540, 1358, 541, 1358, 513, 543, 1358, 544, 517, 547, + 1358, 549, 1358, 527, 555, 531, 541, 531, 561, 1358, + 534, 563, 1358, 535, 566, 1358, 552, 540, 539, 555, + 548, 560, 560, 562, 578, 562, 561, 581, 1358, 582, + 1358, 568, 560, 561, 571, 572, 589, 590, 1358, 593, + 1358, 565, 595, 1358, 581, 597, 576, 590, 573, 592, + 594, 578, 609, 1358, 610, 611, 1358, 612, 613, 1358, + 595, 591, 616, 1358, 589, 603, 624, 625, 627, 599, + 629, 612, 603, 618, 595, 607, 609, 640, 1358, 613, + + 618, 614, 615, 616, 632, 647, 648, 1358, 649, 629, + 652, 1358, 638, 626, 626, 641, 645, 661, 663, 1358, + 664, 1358, 650, 666, 632, 668, 669, 1358, 670, 1358, + 672, 1358, 675, 677, 1358, 681, 654, 669, 657, 675, + 689, 679, 678, 664, 694, 695, 681, 697, 1358, 698, + 1358, 674, 701, 689, 688, 678, 681, 710, 1358, 696, + 713, 1358, 714, 715, 1358, 716, 1358, 717, 1358, 718, + 685, 706, 722, 729, 1358, 704, 716, 714, 734, 1358, + 735, 1358, 720, 737, 738, 1358, 722, 712, 713, 714, + 746, 749, 1358, 750, 1358, 751, 739, 753, 1358, 736, + + 721, 733, 758, 762, 1358, 729, 765, 766, 767, 769, + 1358, 770, 1358, 771, 773, 774, 761, 782, 1358, 785, + 786, 1358, 787, 1358, 788, 1358, 789, 1358, 790, 1358, + 791, 1358, 793, 794, 1358, 802, 1358, 1358, 814, 820, + 826, 832, 838, 844, 846, 852, 801, 858, 861 } ; -static yyconst short int yy_def[949] = +static yyconst short int yy_def[1050] = { 0, - 938, 938, 937, 3, 938, 938, 939, 939, 940, 940, - 941, 941, 942, 942, 943, 943, 937, 937, 937, 937, - 937, 937, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 937, 937, 945, 937, 937, 945, 937, - 945, 945, 946, 947, 937, 937, 947, 947, 937, 937, - 937, 937, 937, 937, 948, 937, 937, 937, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - - 944, 944, 944, 937, 937, 945, 937, 945, 946, 947, - 937, 947, 937, 937, 948, 937, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 945, 947, 937, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 945, 947, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - - 944, 944, 944, 944, 937, 937, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 937, - 937, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 937, 937, 944, 944, 944, - - 944, 944, 937, 937, 944, 944, 937, 937, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 937, 937, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - - 944, 944, 944, 944, 944, 944, 944, 944, 937, 937, - 937, 937, 944, 937, 937, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 937, 937, 944, 944, 944, 937, - 937, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - - 944, 944, 944, 944, 944, 944, 944, 944, 937, 937, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 937, 937, 944, 944, 937, 937, 944, 937, - 937, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 937, 937, 944, 944, 944, 944, 944, 944, - 937, 937, 944, 944, 944, 944, 944, 937, 937, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 937, 937, 937, 937, 937, 937, 944, 944, 944, - 944, 937, 937, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - - 944, 944, 937, 937, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 937, 937, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 937, 937, 944, 944, 944, - 944, 944, 944, 937, 937, 937, 937, 944, 937, 937, - 944, 944, 937, 937, 937, 937, 944, 944, 944, 944, - 944, 937, 937, 944, 937, 937, 937, 937, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 937, 937, - 937, 937, 944, 944, 944, 944, 944, 944, 937, 937, - 937, 937, 944, 937, 937, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 937, 937, 944, 944, 937, 937, - - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 937, 937, 944, 944, 944, 944, 944, 944, - 937, 937, 944, 944, 937, 937, 944, 944, 944, 944, - 944, 937, 937, 937, 937, 944, 944, 944, 944, 937, - 937, 937, 937, 944, 937, 937, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 937, 937, 937, - 937, 944, 944, 944, 944, 944, 937, 937, 944, 937, - 937, 944, 937, 937, 937, 937, 937, 937, 944, 944, - 944, 944, 937, 937, 944, 944, 937, 937, 937, 937, - 944, 944, 937, 937, 944, 944, 944, 944, 937, 937, - - 937, 937, 944, 944, 937, 937, 944, 944, 944, 937, - 937, 944, 944, 944, 937, 937, 937, 937, 944, 944, - 944, 937, 937, 937, 937, 937, 937, 937, 937, 937, - 937, 937, 937, 944, 937, 937, 0, 937, 937, 937, - 937, 937, 937, 937, 937, 937, 937, 937 + 1039, 1039, 1038, 3, 1039, 1039, 1040, 1040, 1041, 1041, + 1042, 1042, 1043, 1043, 1044, 1044, 1038, 1038, 1038, 1038, + 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1038, 1038, 1046, 1038, 1038, 1046, 1038, + 1046, 1046, 1047, 1048, 1038, 1038, 1048, 1048, 1038, 1038, + 1038, 1038, 1038, 1038, 1049, 1038, 1038, 1038, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1046, + 1038, 1046, 1047, 1048, 1038, 1048, 1038, 1038, 1049, 1038, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1046, 1048, 1038, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1046, + 1048, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, + 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1038, 1038, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, + + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1038, 1038, 1038, 1038, 1045, 1038, + 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, + 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1038, 1038, 1045, 1045, 1038, 1038, 1045, 1038, + 1038, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, + + 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, + 1045, 1045, 1045, 1038, 1038, 1045, 1038, 1038, 1045, 1045, + 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, + 1038, 1038, 1038, 1038, 1038, 1045, 1045, 1045, 1045, 1045, + 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1038, + + 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1038, 1038, 1038, 1038, 1045, 1038, 1038, 1045, 1045, 1038, + 1038, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1038, 1038, + 1045, 1038, 1038, 1045, 1038, 1038, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1038, + 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1038, + 1038, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1038, 1038, 1045, 1038, 1038, 1045, 1038, 1038, + 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, + + 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, + 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, + 1038, 1038, 1045, 1045, 1045, 1045, 1038, 1038, 1038, 1038, + 1038, 1038, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1038, + 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, + 1038, 1038, 1045, 1038, 1038, 1038, 1038, 1038, 1038, 1045, + 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1038, 1038, + 1038, 1038, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1045, + 1045, 1038, 1038, 1038, 1038, 1045, 1045, 1038, 1038, 1045, + + 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1038, + 1038, 1038, 1038, 1045, 1045, 1045, 1045, 1038, 1038, 1045, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1045, 1038, 1038, 1038, 1038, 0, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038 } ; -static yyconst short int yy_nxt[1283] = +static yyconst short int yy_nxt[1403] = { 0, - 937, 320, 19, 19, 66, 67, 66, 104, 105, 104, - 937, 321, 73, 66, 67, 66, 698, 147, 74, 161, - 71, 77, 81, 75, 162, 79, 76, 78, 148, 72, - 84, 86, 87, 225, 82, 80, 125, 126, 20, 20, - 226, 85, 699, 21, 21, 18, 18, 19, 18, 18, + 1038, 343, 19, 19, 66, 67, 66, 108, 109, 108, + 1038, 344, 73, 66, 67, 66, 100, 83, 74, 1038, + 71, 77, 81, 75, 163, 79, 76, 78, 471, 72, + 84, 101, 129, 130, 82, 80, 472, 164, 20, 20, + 66, 67, 66, 21, 21, 18, 18, 19, 18, 18, 22, 18, 18, 18, 23, 23, 18, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 23, 34, 35, 23, 36, 37, 38, 39, 40, 41, 23, 42, 43, 23, 23, 23, 20, 23, 23, 23, 23, 21, 44, - 44, 92, 700, 368, 93, 94, 66, 67, 66, 98, + 44, 85, 95, 699, 88, 96, 97, 509, 102, 86, - 369, 701, 60, 60, 61, 61, 62, 62, 95, 99, - 66, 67, 66, 113, 100, 66, 67, 66, 117, 104, - 105, 104, 118, 702, 289, 45, 45, 705, 381, 119, + 89, 90, 60, 60, 61, 61, 62, 62, 103, 98, + 87, 154, 510, 104, 66, 67, 66, 117, 66, 67, + 66, 700, 155, 169, 701, 45, 45, 134, 170, 135, 21, 21, 18, 47, 18, 48, 49, 50, 63, 63, - 130, 140, 131, 64, 64, 231, 141, 153, 156, 290, - 142, 382, 184, 253, 143, 132, 305, 154, 144, 133, - 305, 157, 185, 254, 568, 232, 306, 706, 707, 51, - 306, 708, 320, 396, 52, 18, 47, 18, 48, 49, - 50, 296, 321, 397, 569, 436, 297, 403, 298, 470, - 426, 459, 407, 437, 307, 299, 396, 404, 403, 300, - - 427, 460, 408, 407, 471, 509, 397, 709, 404, 710, - 711, 712, 51, 408, 713, 510, 716, 52, 18, 18, + 160, 121, 136, 64, 64, 122, 137, 309, 147, 193, + 161, 184, 123, 148, 108, 109, 108, 149, 185, 194, + 238, 150, 245, 270, 281, 151, 412, 239, 702, 51, + 703, 282, 310, 271, 52, 18, 47, 18, 48, 49, + 50, 318, 246, 328, 397, 704, 319, 343, 320, 413, + 427, 398, 328, 329, 435, 321, 439, 344, 461, 322, + + 428, 496, 329, 427, 436, 527, 440, 705, 462, 501, + 708, 497, 51, 428, 528, 502, 709, 52, 18, 18, 47, 18, 18, 22, 18, 18, 18, 18, 18, 18, - 409, 511, 514, 459, 537, 547, 717, 718, 538, 539, - 565, 512, 515, 460, 570, 509, 540, 548, 511, 514, - 566, 719, 720, 721, 571, 510, 20, 18, 512, 515, - 722, 21, 18, 18, 47, 18, 18, 22, 18, 18, - 18, 18, 18, 18, 609, 623, 627, 565, 630, 570, - 643, 651, 654, 658, 610, 624, 628, 566, 631, 571, - 644, 652, 669, 659, 655, 723, 724, 725, 728, 729, - - 20, 18, 670, 672, 674, 21, 55, 56, 18, 48, - 22, 50, 676, 673, 675, 609, 682, 623, 627, 630, - 703, 643, 677, 651, 714, 610, 683, 624, 628, 631, - 704, 644, 658, 652, 715, 726, 730, 731, 732, 733, - 738, 741, 659, 57, 742, 727, 672, 674, 58, 55, - 56, 18, 48, 22, 50, 676, 673, 675, 734, 736, - 682, 739, 743, 745, 747, 677, 748, 749, 735, 737, - 683, 740, 744, 746, 750, 751, 754, 752, 755, 757, - 759, 760, 761, 762, 763, 764, 57, 753, 756, 758, - 765, 58, 18, 18, 19, 18, 18, 18, 18, 18, - - 18, 703, 766, 18, 767, 768, 769, 771, 773, 714, - 774, 704, 775, 776, 777, 778, 770, 772, 779, 715, - 783, 781, 787, 726, 788, 789, 790, 791, 780, 792, - 20, 782, 793, 727, 794, 21, 18, 18, 19, 18, - 18, 18, 18, 18, 18, 784, 734, 18, 736, 739, - 795, 797, 743, 798, 745, 785, 735, 799, 737, 740, - 796, 801, 744, 786, 746, 802, 803, 800, 752, 804, - 755, 757, 805, 806, 20, 807, 808, 809, 753, 21, - 756, 758, 810, 811, 812, 813, 815, 769, 771, 816, - 817, 818, 819, 820, 821, 814, 779, 770, 772, 781, - - 823, 784, 824, 825, 822, 827, 780, 828, 829, 782, - 830, 785, 831, 826, 832, 834, 795, 836, 837, 799, - 838, 839, 840, 842, 833, 835, 796, 844, 845, 800, - 847, 848, 841, 843, 849, 850, 851, 852, 846, 813, - 853, 854, 855, 856, 857, 858, 821, 860, 862, 814, - 825, 863, 864, 865, 866, 859, 822, 861, 867, 832, - 826, 834, 869, 870, 872, 873, 840, 842, 868, 833, - 875, 835, 845, 871, 877, 874, 841, 843, 879, 880, - 876, 881, 846, 882, 878, 883, 885, 886, 887, 889, - 891, 858, 860, 892, 893, 884, 895, 896, 888, 890, - - 897, 859, 861, 867, 894, 898, 870, 899, 873, 875, - 877, 901, 903, 868, 904, 905, 871, 900, 874, 876, - 878, 902, 883, 907, 908, 906, 887, 889, 909, 910, - 893, 912, 884, 913, 914, 915, 888, 890, 899, 911, - 894, 901, 917, 919, 905, 916, 920, 921, 900, 922, - 910, 902, 918, 924, 906, 926, 928, 915, 917, 923, - 911, 930, 932, 925, 934, 927, 929, 916, 918, 922, - 924, 931, 933, 926, 928, 930, 932, 935, 935, 923, - 925, 109, 697, 927, 929, 931, 933, 936, 936, 18, - 18, 18, 18, 18, 18, 46, 46, 46, 46, 46, - - 46, 53, 53, 53, 53, 53, 53, 54, 54, 54, - 54, 54, 54, 59, 59, 59, 59, 59, 59, 65, - 65, 65, 65, 65, 65, 69, 69, 106, 696, 106, - 106, 106, 106, 110, 695, 694, 110, 110, 110, 115, - 115, 115, 693, 692, 691, 690, 689, 688, 687, 686, - 685, 684, 681, 680, 679, 678, 671, 668, 667, 666, - 665, 664, 663, 662, 661, 660, 657, 656, 653, 650, - 649, 648, 647, 646, 645, 642, 641, 640, 639, 638, - 637, 636, 635, 634, 633, 632, 629, 626, 625, 622, - 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, - - 611, 608, 607, 606, 605, 604, 603, 602, 601, 600, - 599, 598, 597, 596, 595, 594, 593, 592, 591, 590, - 589, 588, 587, 586, 585, 584, 583, 582, 581, 580, - 579, 578, 577, 576, 575, 574, 573, 572, 567, 564, - 563, 562, 561, 560, 559, 558, 557, 556, 555, 554, - 553, 552, 551, 550, 549, 546, 545, 544, 543, 542, - 541, 536, 535, 534, 533, 532, 531, 530, 529, 528, - 527, 526, 525, 524, 523, 522, 521, 520, 519, 518, - 517, 516, 513, 508, 507, 506, 505, 504, 503, 502, - 501, 500, 499, 498, 497, 496, 495, 494, 493, 492, - - 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, - 481, 480, 479, 478, 477, 476, 475, 474, 473, 472, - 469, 468, 467, 466, 465, 464, 463, 462, 461, 458, - 457, 456, 455, 454, 453, 452, 451, 450, 449, 448, - 447, 446, 445, 444, 443, 442, 441, 440, 439, 438, - 435, 434, 433, 432, 431, 430, 429, 428, 425, 424, - 423, 422, 421, 420, 419, 418, 417, 416, 415, 414, - 413, 412, 411, 410, 406, 405, 402, 401, 400, 399, - 398, 395, 394, 393, 392, 391, 390, 389, 388, 387, - 386, 385, 384, 383, 380, 379, 378, 377, 376, 375, - - 374, 373, 372, 371, 370, 367, 366, 365, 364, 363, + 330, 435, 439, 517, 441, 555, 557, 560, 496, 517, + 598, 436, 440, 518, 617, 556, 558, 561, 497, 518, + 622, 710, 599, 711, 618, 620, 20, 18, 712, 713, + 623, 21, 18, 18, 47, 18, 18, 22, 18, 18, + 18, 18, 18, 18, 585, 621, 716, 555, 586, 587, + 557, 560, 668, 683, 588, 687, 589, 556, 617, 690, + 558, 561, 669, 684, 622, 688, 719, 722, 618, 691, + + 20, 18, 696, 706, 623, 21, 55, 56, 18, 48, + 22, 50, 697, 707, 714, 717, 720, 723, 726, 724, + 727, 728, 729, 730, 715, 718, 731, 732, 721, 725, + 733, 734, 735, 736, 737, 739, 740, 742, 746, 747, + 748, 749, 750, 57, 738, 744, 741, 743, 58, 55, + 56, 18, 48, 22, 50, 745, 668, 751, 752, 754, + 755, 756, 757, 758, 759, 760, 669, 761, 753, 683, + 762, 763, 687, 764, 690, 765, 766, 767, 768, 684, + 696, 769, 688, 770, 691, 771, 57, 772, 773, 776, + 697, 58, 18, 18, 19, 18, 18, 18, 18, 18, + + 18, 774, 777, 18, 706, 778, 779, 780, 781, 782, + 783, 775, 714, 784, 707, 717, 785, 786, 788, 789, + 790, 724, 715, 791, 792, 718, 793, 787, 794, 795, + 20, 725, 796, 797, 802, 21, 18, 18, 19, 18, + 18, 18, 18, 18, 18, 798, 800, 18, 803, 804, + 805, 806, 740, 742, 744, 799, 801, 807, 808, 809, + 810, 811, 741, 743, 745, 813, 752, 815, 816, 818, + 819, 812, 820, 822, 20, 814, 753, 824, 817, 21, + 825, 826, 821, 823, 827, 828, 829, 831, 832, 834, + 835, 837, 838, 839, 840, 774, 830, 841, 833, 842, + + 836, 843, 844, 845, 846, 775, 847, 848, 850, 852, + 786, 853, 854, 855, 856, 857, 858, 849, 851, 860, + 787, 862, 863, 866, 798, 800, 859, 867, 868, 861, + 869, 870, 864, 871, 799, 801, 872, 873, 875, 876, + 865, 811, 813, 878, 816, 879, 881, 874, 820, 877, + 822, 812, 814, 882, 817, 880, 883, 885, 821, 886, + 823, 887, 829, 888, 832, 889, 884, 835, 890, 891, + 892, 893, 830, 894, 833, 895, 896, 836, 897, 898, + 900, 901, 848, 850, 902, 903, 904, 905, 906, 899, + 907, 858, 849, 851, 860, 909, 863, 910, 911, 913, + + 908, 859, 914, 915, 861, 916, 864, 917, 912, 918, + 873, 919, 876, 921, 879, 923, 924, 883, 925, 926, + 874, 920, 877, 922, 880, 927, 929, 884, 931, 933, + 934, 936, 937, 938, 939, 928, 930, 940, 932, 941, + 935, 898, 942, 943, 944, 945, 946, 947, 948, 907, + 950, 899, 952, 911, 953, 954, 955, 956, 949, 908, + 951, 957, 958, 912, 919, 921, 960, 961, 963, 964, + 927, 929, 959, 931, 920, 922, 966, 962, 934, 965, + 928, 930, 968, 932, 970, 971, 967, 972, 935, 973, + 974, 976, 969, 977, 978, 979, 981, 983, 948, 950, + + 975, 984, 985, 987, 988, 980, 982, 989, 949, 951, + 990, 958, 986, 991, 961, 992, 964, 966, 968, 994, + 996, 959, 997, 998, 962, 993, 965, 967, 969, 995, + 974, 1000, 1001, 999, 1002, 979, 981, 1003, 1004, 985, + 975, 1006, 1007, 1008, 1009, 980, 982, 1010, 1005, 986, + 992, 994, 1012, 1014, 998, 1015, 1016, 1011, 1017, 1018, + 993, 995, 1013, 1004, 999, 1020, 1021, 1023, 1025, 1019, + 1010, 1012, 1027, 1005, 1029, 1031, 1022, 1024, 1026, 1033, + 1011, 1013, 1028, 1018, 1030, 1032, 1034, 1021, 1023, 1025, + 1027, 1029, 1031, 1019, 1036, 1034, 1035, 1022, 1024, 1026, + + 1028, 1030, 1032, 1036, 1037, 1035, 113, 698, 695, 694, + 693, 692, 689, 1037, 18, 18, 18, 18, 18, 18, + 46, 46, 46, 46, 46, 46, 53, 53, 53, 53, + 53, 53, 54, 54, 54, 54, 54, 54, 59, 59, + 59, 59, 59, 59, 65, 65, 65, 65, 65, 65, + 69, 69, 110, 686, 110, 110, 110, 110, 114, 685, + 682, 114, 114, 114, 119, 119, 119, 681, 680, 679, + 678, 677, 676, 675, 674, 673, 672, 671, 670, 667, + 666, 665, 664, 663, 662, 661, 660, 659, 658, 657, + 656, 655, 654, 653, 652, 651, 650, 649, 648, 647, + + 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, + 636, 635, 634, 633, 632, 631, 630, 629, 628, 627, + 626, 625, 624, 619, 616, 615, 614, 613, 612, 611, + 610, 609, 608, 607, 606, 605, 604, 603, 602, 601, + 600, 597, 596, 595, 594, 593, 592, 591, 590, 584, + 583, 582, 581, 580, 579, 578, 577, 576, 575, 574, + 573, 572, 571, 570, 569, 568, 567, 566, 565, 564, + 563, 562, 559, 554, 553, 552, 551, 550, 549, 548, + 547, 546, 545, 544, 543, 542, 541, 540, 539, 538, + 537, 536, 535, 534, 533, 532, 531, 530, 529, 526, + + 525, 524, 523, 522, 521, 520, 519, 516, 515, 514, + 513, 512, 511, 508, 507, 506, 505, 504, 503, 500, + 499, 498, 495, 494, 493, 492, 491, 490, 489, 488, + 487, 486, 485, 484, 483, 482, 481, 480, 479, 478, + 477, 476, 475, 474, 473, 470, 469, 468, 467, 466, + 465, 464, 463, 460, 459, 458, 457, 456, 455, 454, + 453, 452, 451, 450, 449, 448, 447, 446, 445, 444, + 443, 442, 438, 437, 434, 433, 432, 431, 430, 429, + 426, 425, 424, 423, 422, 421, 420, 419, 418, 417, + 416, 415, 414, 411, 410, 409, 408, 407, 406, 405, + + 404, 403, 402, 401, 400, 399, 396, 395, 394, 393, + 392, 391, 390, 389, 388, 387, 386, 385, 384, 383, + 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, + 372, 371, 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, - 352, 351, 350, 349, 348, 347, 346, 345, 344, 343, - 342, 341, 340, 339, 338, 337, 336, 335, 334, 333, - 332, 331, 330, 329, 328, 327, 326, 325, 324, 323, - 322, 319, 318, 317, 316, 315, 314, 313, 312, 311, - 310, 309, 308, 304, 303, 302, 301, 295, 294, 293, - 292, 291, 288, 287, 286, 285, 284, 283, 282, 281, - 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, - 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, - - 260, 259, 258, 257, 256, 255, 252, 251, 250, 249, - 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, - 238, 237, 236, 235, 234, 233, 230, 229, 228, 227, - 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, - 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, - 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, - 194, 193, 192, 191, 190, 189, 188, 187, 186, 183, - 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, - 172, 171, 170, 169, 168, 167, 114, 166, 111, 165, - 164, 163, 160, 159, 158, 155, 152, 151, 150, 149, - - 146, 145, 139, 138, 137, 136, 135, 134, 129, 128, - 127, 124, 123, 122, 121, 120, 116, 114, 68, 107, - 112, 111, 108, 107, 103, 102, 101, 97, 96, 91, - 90, 89, 88, 83, 70, 68, 937, 17, 937, 937, - 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, - 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, - 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, - 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, - 937, 937 + 352, 351, 350, 349, 348, 347, 346, 345, 342, 341, + 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, + 327, 326, 325, 324, 323, 317, 316, 315, 314, 313, + 312, 311, 308, 307, 306, 305, 304, 303, 302, 301, + 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, + + 290, 289, 288, 287, 286, 285, 284, 283, 280, 279, + 278, 277, 276, 275, 274, 273, 272, 269, 268, 267, + 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, + 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, + 244, 243, 242, 241, 240, 237, 236, 235, 234, 233, + 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, + 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, + 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, + 202, 201, 200, 199, 198, 197, 196, 195, 192, 191, + 190, 189, 188, 187, 186, 183, 182, 181, 180, 179, + + 178, 177, 176, 175, 118, 174, 115, 173, 172, 171, + 168, 167, 166, 165, 162, 159, 158, 157, 156, 153, + 152, 146, 145, 144, 143, 142, 141, 140, 139, 138, + 133, 132, 131, 128, 127, 126, 125, 124, 120, 118, + 68, 111, 116, 115, 112, 111, 107, 106, 105, 99, + 94, 93, 92, 91, 70, 68, 1038, 17, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + + 1038, 1038 } ; -static yyconst short int yy_chk[1283] = +static yyconst short int yy_chk[1403] = { 0, - 0, 261, 1, 2, 20, 20, 20, 45, 45, 45, - 0, 261, 26, 51, 51, 51, 635, 90, 26, 101, - 25, 27, 29, 26, 101, 28, 26, 27, 90, 25, - 31, 32, 32, 174, 29, 28, 76, 76, 1, 2, - 174, 31, 636, 1, 2, 3, 3, 3, 3, 3, + 0, 278, 1, 2, 20, 20, 20, 45, 45, 45, + 0, 278, 26, 51, 51, 51, 39, 30, 26, 0, + 25, 27, 29, 26, 100, 28, 26, 27, 402, 25, + 30, 39, 76, 76, 29, 28, 402, 100, 1, 2, + 57, 57, 57, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, - 6, 37, 637, 310, 37, 37, 57, 57, 57, 40, + 6, 31, 37, 628, 32, 37, 37, 443, 40, 31, - 310, 638, 13, 14, 13, 14, 13, 14, 37, 40, - 63, 63, 63, 63, 40, 66, 66, 66, 70, 104, - 104, 104, 70, 639, 237, 5, 6, 641, 324, 70, + 32, 32, 13, 14, 13, 14, 13, 14, 40, 37, + 31, 93, 443, 40, 63, 63, 63, 63, 66, 66, + 66, 629, 93, 105, 630, 5, 6, 80, 105, 80, 5, 6, 7, 7, 7, 7, 7, 7, 13, 14, - 80, 87, 80, 13, 14, 179, 87, 95, 97, 237, - 87, 324, 133, 200, 87, 80, 248, 95, 87, 80, - 305, 97, 133, 200, 502, 179, 248, 642, 645, 7, - 305, 646, 320, 338, 7, 8, 8, 8, 8, 8, - 8, 243, 320, 338, 502, 373, 243, 344, 243, 411, - 364, 395, 347, 373, 248, 243, 396, 344, 403, 243, - - 364, 395, 347, 407, 411, 449, 396, 647, 403, 648, - 649, 650, 8, 407, 653, 449, 655, 8, 9, 9, + 98, 70, 80, 13, 14, 70, 80, 251, 90, 137, + 98, 129, 70, 90, 108, 108, 108, 90, 129, 137, + 182, 90, 188, 212, 222, 90, 349, 182, 631, 7, + 632, 222, 251, 212, 7, 8, 8, 8, 8, 8, + 8, 259, 188, 328, 333, 633, 259, 343, 259, 349, + 363, 333, 265, 328, 370, 259, 373, 343, 393, 259, + + 363, 426, 265, 427, 370, 459, 373, 634, 393, 432, + 636, 426, 8, 427, 459, 432, 637, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 347, 450, 452, 459, 476, 483, 656, 657, 476, 476, - 500, 450, 452, 459, 503, 509, 476, 483, 511, 514, - 500, 660, 661, 662, 503, 509, 9, 9, 511, 514, - 663, 9, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 547, 560, 563, 565, 567, 570, - 581, 588, 590, 593, 547, 560, 563, 565, 567, 570, - 581, 588, 603, 593, 590, 664, 665, 666, 668, 669, - - 10, 10, 603, 605, 606, 10, 11, 11, 11, 11, - 11, 11, 607, 605, 606, 609, 614, 623, 627, 630, - 640, 643, 607, 651, 654, 609, 614, 623, 627, 630, - 640, 643, 658, 651, 654, 667, 670, 671, 678, 679, - 684, 686, 658, 11, 687, 667, 672, 674, 11, 12, - 12, 12, 12, 12, 12, 676, 672, 674, 680, 681, - 682, 685, 688, 689, 690, 676, 691, 692, 680, 681, - 682, 685, 688, 689, 693, 694, 696, 695, 697, 698, - 699, 700, 701, 702, 705, 706, 12, 695, 697, 698, - 707, 12, 15, 15, 15, 15, 15, 15, 15, 15, - - 15, 703, 708, 15, 709, 710, 711, 712, 713, 714, - 716, 703, 717, 718, 719, 720, 711, 712, 721, 714, - 723, 722, 725, 726, 728, 729, 730, 731, 721, 732, - 15, 722, 733, 726, 738, 15, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 724, 734, 16, 736, 739, - 741, 742, 743, 747, 745, 724, 734, 748, 736, 739, - 741, 749, 743, 724, 745, 750, 751, 748, 752, 754, - 755, 757, 759, 760, 16, 761, 762, 763, 752, 16, - 755, 757, 764, 765, 766, 767, 768, 769, 771, 773, - 774, 775, 776, 777, 778, 767, 779, 769, 771, 781, - - 783, 784, 786, 787, 778, 788, 779, 789, 790, 781, - 791, 784, 792, 787, 793, 794, 795, 797, 798, 799, - 801, 802, 803, 804, 793, 794, 795, 805, 806, 799, - 807, 808, 803, 804, 809, 810, 811, 812, 806, 813, - 815, 816, 817, 818, 819, 820, 821, 823, 824, 813, - 825, 827, 828, 829, 830, 820, 821, 823, 831, 832, - 825, 834, 836, 837, 838, 839, 840, 842, 831, 832, - 844, 834, 845, 837, 847, 839, 840, 842, 848, 849, - 844, 850, 845, 851, 847, 852, 853, 854, 855, 856, - 857, 858, 860, 862, 863, 852, 864, 865, 855, 856, - - 866, 858, 860, 867, 863, 869, 870, 872, 873, 875, - 877, 879, 880, 867, 881, 882, 870, 872, 873, 875, - 877, 879, 883, 885, 886, 882, 887, 889, 891, 892, - 893, 895, 883, 896, 897, 898, 887, 889, 899, 892, - 893, 901, 903, 904, 905, 898, 907, 908, 899, 909, - 910, 901, 903, 912, 905, 913, 914, 915, 917, 909, - 910, 919, 920, 912, 921, 913, 914, 915, 917, 922, - 924, 919, 920, 926, 928, 930, 932, 934, 935, 922, - 924, 946, 634, 926, 928, 930, 932, 934, 935, 938, - 938, 938, 938, 938, 938, 939, 939, 939, 939, 939, - - 939, 940, 940, 940, 940, 940, 940, 941, 941, 941, - 941, 941, 941, 942, 942, 942, 942, 942, 942, 943, - 943, 943, 943, 943, 943, 944, 944, 945, 633, 945, - 945, 945, 945, 947, 632, 629, 947, 947, 947, 948, - 948, 948, 626, 625, 622, 621, 620, 619, 618, 617, - 616, 615, 613, 612, 611, 608, 604, 602, 601, 600, - 599, 598, 597, 596, 595, 594, 592, 591, 589, 587, - 586, 585, 584, 583, 582, 580, 579, 578, 577, 576, - 575, 574, 573, 572, 569, 568, 564, 562, 561, 559, - 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, - - 548, 546, 545, 544, 543, 542, 541, 540, 539, 538, + 265, 435, 439, 450, 373, 486, 487, 489, 496, 517, + 526, 435, 439, 450, 544, 486, 487, 489, 496, 517, + 547, 638, 526, 639, 544, 546, 9, 9, 640, 641, + 547, 9, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 515, 546, 643, 555, 515, 515, + 557, 560, 598, 612, 515, 615, 515, 555, 617, 619, + 557, 560, 598, 612, 622, 615, 645, 647, 617, 619, + + 10, 10, 626, 635, 622, 10, 11, 11, 11, 11, + 11, 11, 626, 635, 642, 644, 646, 648, 650, 649, + 651, 652, 653, 654, 642, 644, 655, 656, 646, 649, + 657, 658, 659, 660, 661, 662, 663, 664, 666, 667, + 670, 671, 672, 11, 661, 665, 663, 664, 11, 12, + 12, 12, 12, 12, 12, 665, 668, 673, 674, 675, + 676, 677, 678, 679, 680, 681, 668, 682, 674, 683, + 685, 686, 687, 689, 690, 692, 693, 694, 695, 683, + 696, 698, 687, 699, 690, 700, 12, 701, 702, 704, + 696, 12, 15, 15, 15, 15, 15, 15, 15, 15, + + 15, 703, 705, 15, 706, 708, 709, 710, 711, 712, + 713, 703, 714, 716, 706, 717, 719, 720, 721, 722, + 723, 724, 714, 726, 727, 717, 728, 720, 729, 730, + 15, 724, 731, 732, 735, 15, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 733, 734, 16, 736, 737, + 738, 739, 740, 742, 744, 733, 734, 746, 747, 748, + 749, 750, 740, 742, 744, 751, 752, 754, 755, 756, + 757, 750, 758, 759, 16, 751, 752, 760, 755, 16, + 761, 762, 758, 759, 763, 764, 765, 766, 767, 768, + 769, 770, 771, 772, 773, 774, 765, 776, 767, 777, + + 769, 778, 779, 780, 781, 774, 782, 783, 784, 785, + 786, 788, 789, 790, 791, 792, 793, 783, 784, 794, + 786, 795, 796, 797, 798, 800, 793, 802, 803, 794, + 804, 805, 796, 806, 798, 800, 807, 808, 809, 810, + 796, 811, 813, 815, 816, 818, 819, 808, 820, 810, + 822, 811, 813, 824, 816, 818, 825, 826, 820, 827, + 822, 828, 829, 831, 832, 834, 825, 835, 837, 838, + 839, 840, 829, 841, 832, 842, 843, 835, 844, 845, + 846, 847, 848, 850, 852, 853, 854, 855, 856, 845, + 857, 858, 848, 850, 860, 862, 863, 865, 866, 867, + + 857, 858, 868, 869, 860, 870, 863, 871, 866, 872, + 873, 875, 876, 878, 879, 881, 882, 883, 885, 886, + 873, 875, 876, 878, 879, 887, 888, 883, 889, 890, + 891, 892, 893, 894, 895, 887, 888, 896, 889, 897, + 891, 898, 900, 901, 902, 903, 904, 905, 906, 907, + 909, 898, 910, 911, 913, 914, 915, 916, 906, 907, + 909, 917, 918, 911, 919, 921, 923, 924, 925, 926, + 927, 929, 918, 931, 919, 921, 933, 924, 934, 926, + 927, 929, 936, 931, 937, 938, 933, 939, 934, 940, + 941, 942, 936, 943, 944, 945, 946, 947, 948, 950, + + 941, 952, 953, 954, 955, 945, 946, 956, 948, 950, + 957, 958, 953, 960, 961, 963, 964, 966, 968, 970, + 971, 958, 972, 973, 961, 963, 964, 966, 968, 970, + 974, 976, 977, 973, 978, 979, 981, 983, 984, 985, + 974, 987, 988, 989, 990, 979, 981, 991, 984, 985, + 992, 994, 996, 997, 998, 1000, 1001, 991, 1002, 1003, + 992, 994, 996, 1004, 998, 1006, 1007, 1008, 1009, 1003, + 1010, 1012, 1014, 1004, 1015, 1016, 1007, 1008, 1009, 1017, + 1010, 1012, 1014, 1018, 1015, 1016, 1020, 1021, 1023, 1025, + 1027, 1029, 1031, 1018, 1033, 1034, 1020, 1021, 1023, 1025, + + 1027, 1029, 1031, 1036, 1033, 1034, 1047, 627, 625, 624, + 621, 620, 616, 1036, 1039, 1039, 1039, 1039, 1039, 1039, + 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 1041, 1041, + 1041, 1041, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043, + 1043, 1043, 1043, 1043, 1044, 1044, 1044, 1044, 1044, 1044, + 1045, 1045, 1046, 614, 1046, 1046, 1046, 1046, 1048, 613, + 611, 1048, 1048, 1048, 1049, 1049, 1049, 610, 609, 608, + 607, 606, 605, 604, 603, 602, 601, 600, 599, 597, + 596, 595, 594, 593, 592, 591, 590, 589, 588, 587, + 586, 585, 584, 583, 582, 581, 580, 579, 578, 577, + + 576, 575, 574, 573, 572, 571, 570, 569, 568, 567, + 566, 565, 564, 563, 562, 559, 554, 553, 552, 551, + 550, 549, 548, 545, 543, 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, 529, 528, - 527, 526, 525, 524, 523, 522, 521, 520, 519, 518, - 517, 516, 513, 508, 507, 506, 505, 504, 501, 499, - 498, 497, 496, 495, 494, 493, 492, 491, 490, 489, - 488, 487, 486, 485, 484, 482, 481, 480, 479, 478, - 477, 475, 474, 473, 472, 471, 470, 469, 468, 467, - 466, 465, 464, 463, 462, 461, 458, 457, 456, 455, - 454, 453, 451, 448, 447, 446, 445, 444, 443, 442, - 441, 440, 439, 438, 437, 436, 435, 434, 433, 432, - - 431, 430, 429, 428, 427, 426, 425, 424, 423, 422, - 421, 420, 419, 418, 417, 416, 415, 414, 413, 412, - 410, 409, 406, 405, 402, 401, 400, 399, 398, 394, - 393, 392, 391, 390, 389, 388, 387, 386, 385, 384, - 383, 382, 381, 380, 379, 378, 377, 376, 375, 374, - 372, 371, 370, 369, 368, 367, 366, 365, 363, 362, - 361, 360, 359, 358, 357, 356, 355, 354, 353, 352, - 351, 350, 349, 348, 346, 345, 343, 342, 341, 340, - 339, 337, 336, 335, 334, 333, 332, 331, 330, 329, - 328, 327, 326, 325, 323, 322, 319, 318, 317, 316, - - 315, 314, 313, 312, 311, 309, 308, 307, 304, 303, - 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, - 292, 291, 290, 289, 288, 287, 286, 285, 284, 283, - 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, - 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, - 262, 260, 259, 258, 257, 256, 255, 254, 253, 252, - 251, 250, 249, 247, 246, 245, 244, 242, 241, 240, - 239, 238, 236, 235, 234, 233, 232, 231, 230, 229, - 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, - 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, - - 206, 205, 204, 203, 202, 201, 199, 198, 197, 196, - 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, - 185, 184, 183, 182, 181, 180, 178, 177, 176, 175, - 173, 172, 171, 170, 169, 168, 166, 165, 164, 163, - 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, - 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, - 142, 141, 140, 139, 138, 137, 136, 135, 134, 132, - 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, - 121, 120, 119, 118, 117, 116, 115, 112, 111, 108, - 103, 102, 100, 99, 98, 96, 94, 93, 92, 91, - - 89, 88, 86, 85, 84, 83, 82, 81, 79, 78, - 77, 75, 74, 73, 72, 71, 68, 65, 64, 62, - 58, 55, 52, 50, 43, 42, 41, 39, 38, 36, - 35, 34, 33, 30, 24, 21, 17, 937, 937, 937, - 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, - 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, - 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, - 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, - 937, 937 + 527, 525, 524, 523, 522, 521, 520, 519, 516, 514, + 513, 512, 511, 510, 509, 508, 507, 506, 505, 504, + 503, 502, 501, 500, 499, 498, 495, 494, 493, 492, + 491, 490, 488, 485, 484, 483, 482, 481, 480, 479, + 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, + 468, 467, 466, 465, 464, 463, 462, 461, 460, 458, + + 457, 456, 455, 454, 453, 452, 451, 449, 448, 447, + 446, 445, 444, 442, 441, 438, 437, 434, 433, 431, + 430, 429, 425, 424, 423, 422, 421, 420, 419, 418, + 417, 416, 415, 414, 413, 412, 411, 410, 409, 408, + 407, 406, 405, 404, 403, 401, 400, 399, 398, 397, + 396, 395, 394, 392, 391, 390, 389, 388, 387, 386, + 385, 384, 383, 382, 381, 380, 379, 378, 377, 376, + 375, 374, 372, 371, 369, 368, 367, 366, 365, 364, + 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, + 352, 351, 350, 348, 347, 346, 345, 342, 341, 340, + + 339, 338, 337, 336, 335, 334, 332, 331, 330, 327, + 326, 325, 324, 323, 322, 321, 320, 319, 318, 317, + 316, 315, 314, 313, 312, 311, 310, 309, 308, 307, + 306, 305, 304, 303, 302, 301, 300, 299, 298, 297, + 296, 295, 294, 293, 292, 291, 290, 289, 288, 287, + 286, 285, 284, 283, 282, 281, 280, 279, 277, 276, + 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, + 264, 263, 262, 261, 260, 258, 257, 256, 255, 254, + 253, 252, 250, 249, 248, 247, 246, 245, 244, 243, + 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, + + 232, 229, 228, 227, 226, 225, 224, 223, 221, 220, + 219, 218, 217, 216, 215, 214, 213, 211, 210, 209, + 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, + 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, + 187, 186, 185, 184, 183, 181, 180, 179, 178, 177, + 176, 174, 173, 172, 171, 170, 169, 168, 167, 166, + 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, + 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, + 145, 144, 143, 142, 141, 140, 139, 138, 136, 135, + 134, 133, 132, 131, 130, 128, 127, 126, 125, 124, + + 123, 122, 121, 120, 119, 116, 115, 112, 107, 106, + 104, 103, 102, 101, 99, 97, 96, 95, 94, 92, + 91, 89, 88, 87, 86, 85, 84, 83, 82, 81, + 79, 78, 77, 75, 74, 73, 72, 71, 68, 65, + 64, 62, 58, 55, 52, 50, 43, 42, 41, 38, + 36, 35, 34, 33, 24, 21, 17, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + + 1038, 1038 } ; static yy_state_type yy_last_accepting_state; @@ -975,7 +1036,7 @@ char *yytext; * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -1034,13 +1095,13 @@ void warn(const char *fmt, ...) * exported variables */ - QCString Config::projectName; QCString Config::projectNumber; QCString Config::outputDir; QCString Config::htmlOutputDir; QCString Config::latexOutputDir; QCString Config::manOutputDir; +QCString Config::rtfOutputDir; QCString Config::outputLanguage; QCString Config::headerFile; QCString Config::latexHeaderFile; @@ -1056,6 +1117,7 @@ QCString Config::inputFilter; QCString Config::paperType; QCString Config::manExtension; QCString Config::htmlStyleSheet; +QCString Config::ignorePrefix; QStrList Config::includePath; QStrList Config::examplePath; QStrList Config::imagePath; @@ -1091,11 +1153,15 @@ bool Config::alphaIndexFlag = FALSE; bool Config::pdfHyperFlag = FALSE; bool Config::alwaysDetailsFlag = FALSE; bool Config::inlineSourceFlag = FALSE; +bool Config::rtfHyperFlag = FALSE; +bool Config::compactRTFFlag = FALSE; +bool Config::haveDotFlag = FALSE; bool Config::autoBriefFlag = TRUE; bool Config::warningFlag = TRUE; bool Config::generateHtml = TRUE; bool Config::generateLatex = TRUE; bool Config::generateMan = TRUE; +bool Config::generateRTF = FALSE; bool Config::preprocessingFlag = TRUE; bool Config::briefMemDescFlag = TRUE; bool Config::searchIncludeFlag = TRUE; @@ -1105,9 +1171,13 @@ bool Config::verbatimHeaderFlag = TRUE; bool Config::htmlAlignMemberFlag = TRUE; bool Config::inheritDocsFlag = TRUE; bool Config::inlineInfoFlag = TRUE; +bool Config::collGraphFlag = TRUE; +bool Config::includeGraphFlag = TRUE; +bool Config::gfxHierarchyFlag = TRUE; int Config::tabSize = 8; int Config::colsInAlphaIndex = 5; - + + /* ----------------------------------------------------------------- * * static variables @@ -1306,7 +1376,7 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 185 "config.l" +#line 194 "config.l" @@ -1359,13 +1429,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 938 ) + if ( yy_current_state >= 1039 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 1238 ); + while ( yy_base[yy_current_state] != 1358 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1393,390 +1463,435 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 187 "config.l" +#line 196 "config.l" YY_BREAK case 2: YY_RULE_SETUP -#line 188 "config.l" +#line 197 "config.l" { BEGIN(SkipComment); } YY_BREAK case 3: YY_RULE_SETUP -#line 189 "config.l" -{ BEGIN(GetString); s=&Config::projectName; } +#line 198 "config.l" +{ BEGIN(GetString); s=&Config::projectName; s->resize(0); } YY_BREAK case 4: YY_RULE_SETUP -#line 190 "config.l" -{ BEGIN(GetString); s=&Config::projectNumber; } +#line 199 "config.l" +{ BEGIN(GetString); s=&Config::projectNumber; s->resize(0); } YY_BREAK case 5: YY_RULE_SETUP -#line 191 "config.l" -{ BEGIN(GetString); s=&Config::outputDir; } +#line 200 "config.l" +{ BEGIN(GetString); s=&Config::outputDir; s->resize(0); } YY_BREAK case 6: YY_RULE_SETUP -#line 192 "config.l" -{ BEGIN(GetString); s=&Config::htmlOutputDir; } +#line 201 "config.l" +{ BEGIN(GetString); s=&Config::htmlOutputDir; s->resize(0); } YY_BREAK case 7: YY_RULE_SETUP -#line 193 "config.l" -{ BEGIN(GetString); s=&Config::manOutputDir; } +#line 202 "config.l" +{ BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); } YY_BREAK case 8: YY_RULE_SETUP -#line 194 "config.l" -{ BEGIN(GetString); s=&Config::latexOutputDir; } +#line 203 "config.l" +{ BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); } YY_BREAK case 9: YY_RULE_SETUP -#line 195 "config.l" -{ BEGIN(GetString); s=&Config::headerFile; } +#line 204 "config.l" +{ BEGIN(GetString); s=&Config::rtfOutputDir; s->resize(0); } YY_BREAK case 10: YY_RULE_SETUP -#line 196 "config.l" -{ BEGIN(GetString); s=&Config::footerFile; } +#line 205 "config.l" +{ BEGIN(GetString); s=&Config::headerFile; s->resize(0); } YY_BREAK case 11: YY_RULE_SETUP -#line 197 "config.l" -{ BEGIN(GetString); s=&Config::latexHeaderFile; } +#line 206 "config.l" +{ BEGIN(GetString); s=&Config::footerFile; s->resize(0); } YY_BREAK case 12: YY_RULE_SETUP -#line 198 "config.l" -{ BEGIN(GetString); s=&Config::cgiName; } +#line 207 "config.l" +{ BEGIN(GetString); s=&Config::latexHeaderFile; s->resize(0); } YY_BREAK case 13: YY_RULE_SETUP -#line 199 "config.l" -{ BEGIN(GetString); s=&Config::cgiURL; } +#line 208 "config.l" +{ BEGIN(GetString); s=&Config::cgiName; s->resize(0); } YY_BREAK case 14: YY_RULE_SETUP -#line 200 "config.l" -{ BEGIN(GetString); s=&Config::docURL; } +#line 209 "config.l" +{ BEGIN(GetString); s=&Config::cgiURL; s->resize(0); } YY_BREAK case 15: YY_RULE_SETUP -#line 201 "config.l" -{ BEGIN(GetString); s=&Config::binAbsPath; } +#line 210 "config.l" +{ BEGIN(GetString); s=&Config::docURL; s->resize(0); } YY_BREAK case 16: YY_RULE_SETUP -#line 202 "config.l" -{ BEGIN(GetString); s=&Config::docAbsPath; } +#line 211 "config.l" +{ BEGIN(GetString); s=&Config::binAbsPath; s->resize(0); } YY_BREAK case 17: YY_RULE_SETUP -#line 203 "config.l" -{ BEGIN(GetString); s=&Config::perlPath; } +#line 212 "config.l" +{ BEGIN(GetString); s=&Config::docAbsPath; s->resize(0); } YY_BREAK case 18: YY_RULE_SETUP -#line 204 "config.l" -{ BEGIN(GetString); s=&Config::genTagFile; } +#line 213 "config.l" +{ BEGIN(GetString); s=&Config::perlPath; s->resize(0); } YY_BREAK case 19: YY_RULE_SETUP -#line 205 "config.l" -{ BEGIN(GetString); s=&Config::inputFilter; } +#line 214 "config.l" +{ BEGIN(GetString); s=&Config::genTagFile; s->resize(0); } YY_BREAK case 20: YY_RULE_SETUP -#line 206 "config.l" -{ BEGIN(GetString); s=&Config::paperType; } +#line 215 "config.l" +{ BEGIN(GetString); s=&Config::inputFilter; s->resize(0); } YY_BREAK case 21: YY_RULE_SETUP -#line 207 "config.l" -{ BEGIN(GetString); s=&Config::outputLanguage; } +#line 216 "config.l" +{ BEGIN(GetString); s=&Config::paperType; s->resize(0); } YY_BREAK case 22: YY_RULE_SETUP -#line 208 "config.l" -{ BEGIN(GetString); s=&Config::manExtension; } +#line 217 "config.l" +{ BEGIN(GetString); s=&Config::outputLanguage; s->resize(0); } YY_BREAK case 23: YY_RULE_SETUP -#line 209 "config.l" -{ BEGIN(GetString); s=&tabSizeString; } +#line 218 "config.l" +{ BEGIN(GetString); s=&Config::manExtension; s->resize(0); } YY_BREAK case 24: YY_RULE_SETUP -#line 210 "config.l" -{ BEGIN(GetString); s=&Config::htmlStyleSheet; } +#line 219 "config.l" +{ BEGIN(GetString); s=&tabSizeString; s->resize(0); } YY_BREAK case 25: YY_RULE_SETUP -#line 211 "config.l" -{ BEGIN(GetString); s=&colsInAlphaIndexString; } +#line 220 "config.l" +{ BEGIN(GetString); s=&Config::htmlStyleSheet; s->resize(0); } YY_BREAK case 26: YY_RULE_SETUP -#line 212 "config.l" -{ BEGIN(GetStrList); l=&Config::includePath; elemStr=""; } +#line 221 "config.l" +{ BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); } YY_BREAK case 27: YY_RULE_SETUP -#line 213 "config.l" -{ BEGIN(GetStrList); l=&Config::examplePath; elemStr=""; } +#line 222 "config.l" +{ BEGIN(GetString); s=&Config::ignorePrefix; s->resize(0); } YY_BREAK case 28: YY_RULE_SETUP -#line 214 "config.l" -{ BEGIN(GetStrList); l=&Config::imagePath; elemStr=""; } +#line 223 "config.l" +{ BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; } YY_BREAK case 29: YY_RULE_SETUP -#line 215 "config.l" -{ BEGIN(GetStrList); l=&Config::inputSources; elemStr=""; } +#line 224 "config.l" +{ BEGIN(GetStrList); l=&Config::examplePath; l->clear(); elemStr=""; } YY_BREAK case 30: YY_RULE_SETUP -#line 216 "config.l" -{ BEGIN(GetStrList); l=&Config::excludeSources; elemStr=""; } +#line 225 "config.l" +{ BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; } YY_BREAK case 31: YY_RULE_SETUP -#line 217 "config.l" -{ BEGIN(GetStrList); l=&Config::filePatternList; elemStr=""; } +#line 226 "config.l" +{ BEGIN(GetStrList); l=&Config::inputSources; l->clear(); elemStr=""; } YY_BREAK case 32: YY_RULE_SETUP -#line 218 "config.l" -{ BEGIN(GetStrList); l=&Config::excludePatternList; elemStr=""; } +#line 227 "config.l" +{ BEGIN(GetStrList); l=&Config::excludeSources; l->clear(); elemStr=""; } YY_BREAK case 33: YY_RULE_SETUP -#line 219 "config.l" -{ BEGIN(GetStrList); l=&Config::examplePatternList; elemStr=""; } +#line 228 "config.l" +{ BEGIN(GetStrList); l=&Config::filePatternList; l->clear(); elemStr=""; } YY_BREAK case 34: YY_RULE_SETUP -#line 220 "config.l" -{ BEGIN(GetStrList); l=&Config::imagePatternList; elemStr=""; } +#line 229 "config.l" +{ BEGIN(GetStrList); l=&Config::excludePatternList; l->clear(); elemStr=""; } YY_BREAK case 35: YY_RULE_SETUP -#line 221 "config.l" -{ BEGIN(GetStrList); l=&Config::tagFileList; elemStr=""; } +#line 230 "config.l" +{ BEGIN(GetStrList); l=&Config::examplePatternList; l->clear(); elemStr=""; } YY_BREAK case 36: YY_RULE_SETUP -#line 222 "config.l" -{ BEGIN(GetStrList); l=&Config::extDocPathList; elemStr=""; } +#line 231 "config.l" +{ BEGIN(GetStrList); l=&Config::imagePatternList; l->clear(); elemStr=""; } YY_BREAK case 37: YY_RULE_SETUP -#line 223 "config.l" -{ BEGIN(GetStrList); l=&Config::predefined; elemStr=""; } +#line 232 "config.l" +{ BEGIN(GetStrList); l=&Config::tagFileList; l->clear(); elemStr=""; } YY_BREAK case 38: YY_RULE_SETUP -#line 224 "config.l" -{ BEGIN(GetStrList); l=&Config::extraPackageList; elemStr=""; } +#line 233 "config.l" +{ BEGIN(GetStrList); l=&Config::extDocPathList; l->clear(); elemStr=""; } YY_BREAK case 39: YY_RULE_SETUP -#line 225 "config.l" -{ BEGIN(GetStrList); l=&Config::stripFromPath; elemStr=""; } +#line 234 "config.l" +{ BEGIN(GetStrList); l=&Config::predefined; l->clear(); elemStr=""; } YY_BREAK case 40: YY_RULE_SETUP -#line 226 "config.l" -{ BEGIN(GetBool); b=&Config::quietFlag; } +#line 235 "config.l" +{ BEGIN(GetStrList); l=&Config::extraPackageList; l->clear(); elemStr=""; } YY_BREAK case 41: YY_RULE_SETUP -#line 227 "config.l" -{ BEGIN(GetBool); b=&Config::warningFlag; } +#line 236 "config.l" +{ BEGIN(GetStrList); l=&Config::stripFromPath; l->clear(); elemStr=""; } YY_BREAK case 42: YY_RULE_SETUP -#line 228 "config.l" -{ BEGIN(GetBool); b=&Config::recursiveFlag; } +#line 237 "config.l" +{ BEGIN(GetBool); b=&Config::quietFlag; } YY_BREAK case 43: YY_RULE_SETUP -#line 229 "config.l" -{ BEGIN(GetBool); b=&Config::allExtFlag; } +#line 238 "config.l" +{ BEGIN(GetBool); b=&Config::warningFlag; } YY_BREAK case 44: YY_RULE_SETUP -#line 230 "config.l" -{ BEGIN(GetBool); b=&Config::searchEngineFlag; } +#line 239 "config.l" +{ BEGIN(GetBool); b=&Config::recursiveFlag; } YY_BREAK case 45: YY_RULE_SETUP -#line 231 "config.l" -{ BEGIN(GetBool); b=&Config::extractAllFlag; } +#line 240 "config.l" +{ BEGIN(GetBool); b=&Config::allExtFlag; } YY_BREAK case 46: YY_RULE_SETUP -#line 232 "config.l" -{ BEGIN(GetBool); b=&Config::extractPrivateFlag; } +#line 241 "config.l" +{ BEGIN(GetBool); b=&Config::searchEngineFlag; } YY_BREAK case 47: YY_RULE_SETUP -#line 233 "config.l" -{ BEGIN(GetBool); b=&Config::noIndexFlag; } +#line 242 "config.l" +{ BEGIN(GetBool); b=&Config::extractAllFlag; } YY_BREAK case 48: YY_RULE_SETUP -#line 234 "config.l" -{ BEGIN(GetBool); b=&Config::generateLatex; } +#line 243 "config.l" +{ BEGIN(GetBool); b=&Config::extractPrivateFlag; } YY_BREAK case 49: YY_RULE_SETUP -#line 235 "config.l" -{ BEGIN(GetBool); b=&Config::generateHtml; } +#line 244 "config.l" +{ BEGIN(GetBool); b=&Config::noIndexFlag; } YY_BREAK case 50: YY_RULE_SETUP -#line 236 "config.l" -{ BEGIN(GetBool); b=&Config::generateMan; } +#line 245 "config.l" +{ BEGIN(GetBool); b=&Config::generateLatex; } YY_BREAK case 51: YY_RULE_SETUP -#line 237 "config.l" -{ BEGIN(GetBool); b=&Config::preprocessingFlag; } +#line 246 "config.l" +{ BEGIN(GetBool); b=&Config::generateHtml; } YY_BREAK case 52: YY_RULE_SETUP -#line 238 "config.l" -{ BEGIN(GetBool); b=&Config::macroExpansionFlag; } +#line 247 "config.l" +{ BEGIN(GetBool); b=&Config::generateMan; } YY_BREAK case 53: YY_RULE_SETUP -#line 239 "config.l" -{ BEGIN(GetBool); b=&Config::searchIncludeFlag; } +#line 248 "config.l" +{ BEGIN(GetBool); b=&Config::preprocessingFlag; } YY_BREAK case 54: YY_RULE_SETUP -#line 240 "config.l" -{ BEGIN(GetBool); b=&Config::briefMemDescFlag; } +#line 249 "config.l" +{ BEGIN(GetBool); b=&Config::macroExpansionFlag; } YY_BREAK case 55: YY_RULE_SETUP -#line 241 "config.l" -{ BEGIN(GetBool); b=&Config::alwaysDetailsFlag; } +#line 250 "config.l" +{ BEGIN(GetBool); b=&Config::searchIncludeFlag; } YY_BREAK case 56: YY_RULE_SETUP -#line 242 "config.l" -{ BEGIN(GetBool); b=&Config::hideMemberFlag; } +#line 251 "config.l" +{ BEGIN(GetBool); b=&Config::briefMemDescFlag; } YY_BREAK case 57: YY_RULE_SETUP -#line 243 "config.l" -{ BEGIN(GetBool); b=&Config::hideClassFlag; } +#line 252 "config.l" +{ BEGIN(GetBool); b=&Config::alwaysDetailsFlag; } YY_BREAK case 58: YY_RULE_SETUP -#line 244 "config.l" -{ BEGIN(GetBool); b=&Config::onlyPredefinedFlag; } +#line 253 "config.l" +{ BEGIN(GetBool); b=&Config::hideMemberFlag; } YY_BREAK case 59: YY_RULE_SETUP -#line 245 "config.l" -{ BEGIN(GetBool); b=&Config::fullPathNameFlag; } +#line 254 "config.l" +{ BEGIN(GetBool); b=&Config::hideClassFlag; } YY_BREAK case 60: YY_RULE_SETUP -#line 246 "config.l" -{ BEGIN(GetBool); b=&Config::classDiagramFlag; } +#line 255 "config.l" +{ BEGIN(GetBool); b=&Config::onlyPredefinedFlag; } YY_BREAK case 61: YY_RULE_SETUP -#line 247 "config.l" -{ BEGIN(GetBool); b=&Config::compactLatexFlag; } +#line 256 "config.l" +{ BEGIN(GetBool); b=&Config::fullPathNameFlag; } YY_BREAK case 62: YY_RULE_SETUP -#line 248 "config.l" -{ BEGIN(GetBool); b=&Config::repeatBriefFlag; } +#line 257 "config.l" +{ BEGIN(GetBool); b=&Config::classDiagramFlag; } YY_BREAK case 63: YY_RULE_SETUP -#line 249 "config.l" -{ BEGIN(GetBool); b=&Config::internalDocsFlag; } +#line 258 "config.l" +{ BEGIN(GetBool); b=&Config::compactLatexFlag; } YY_BREAK case 64: YY_RULE_SETUP -#line 250 "config.l" -{ BEGIN(GetBool); b=&Config::caseSensitiveNames; } +#line 259 "config.l" +{ BEGIN(GetBool); b=&Config::repeatBriefFlag; } YY_BREAK case 65: YY_RULE_SETUP -#line 251 "config.l" -{ BEGIN(GetBool); b=&Config::verbatimHeaderFlag; } +#line 260 "config.l" +{ BEGIN(GetBool); b=&Config::internalDocsFlag; } YY_BREAK case 66: YY_RULE_SETUP -#line 252 "config.l" -{ BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; } +#line 261 "config.l" +{ BEGIN(GetBool); b=&Config::caseSensitiveNames; } YY_BREAK case 67: YY_RULE_SETUP -#line 253 "config.l" -{ BEGIN(GetBool); b=&Config::sourceBrowseFlag; } +#line 262 "config.l" +{ BEGIN(GetBool); b=&Config::verbatimHeaderFlag; } YY_BREAK case 68: YY_RULE_SETUP -#line 254 "config.l" -{ BEGIN(GetBool); b=&Config::autoBriefFlag; } +#line 263 "config.l" +{ BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; } YY_BREAK case 69: YY_RULE_SETUP -#line 255 "config.l" -{ BEGIN(GetBool); b=&Config::htmlHelpFlag; } +#line 264 "config.l" +{ BEGIN(GetBool); b=&Config::sourceBrowseFlag; } YY_BREAK case 70: YY_RULE_SETUP -#line 256 "config.l" -{ BEGIN(GetBool); b=&Config::alphaIndexFlag; } +#line 265 "config.l" +{ BEGIN(GetBool); b=&Config::autoBriefFlag; } YY_BREAK case 71: YY_RULE_SETUP -#line 257 "config.l" -{ BEGIN(GetBool); b=&Config::pdfHyperFlag; } +#line 266 "config.l" +{ BEGIN(GetBool); b=&Config::htmlHelpFlag; } YY_BREAK case 72: YY_RULE_SETUP -#line 258 "config.l" -{ BEGIN(GetBool); b=&Config::inheritDocsFlag; } +#line 267 "config.l" +{ BEGIN(GetBool); b=&Config::alphaIndexFlag; } YY_BREAK case 73: YY_RULE_SETUP -#line 259 "config.l" -{ BEGIN(GetBool); b=&Config::inlineInfoFlag; } +#line 268 "config.l" +{ BEGIN(GetBool); b=&Config::pdfHyperFlag; } YY_BREAK case 74: YY_RULE_SETUP -#line 260 "config.l" -{ BEGIN(GetBool); b=&Config::inlineSourceFlag; } +#line 269 "config.l" +{ BEGIN(GetBool); b=&Config::inheritDocsFlag; } YY_BREAK case 75: YY_RULE_SETUP -#line 261 "config.l" -{ err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); } +#line 270 "config.l" +{ BEGIN(GetBool); b=&Config::inlineInfoFlag; } YY_BREAK case 76: YY_RULE_SETUP -#line 262 "config.l" -{ yyLineNr++; BEGIN(Start); } +#line 271 "config.l" +{ BEGIN(GetBool); b=&Config::inlineSourceFlag; } YY_BREAK case 77: YY_RULE_SETUP -#line 263 "config.l" +#line 272 "config.l" +{ BEGIN(GetBool); b=&Config::haveDotFlag; } + YY_BREAK +case 78: +YY_RULE_SETUP +#line 273 "config.l" +{ BEGIN(GetBool); b=&Config::collGraphFlag; } + YY_BREAK +case 79: +YY_RULE_SETUP +#line 274 "config.l" +{ BEGIN(GetBool); b=&Config::includeGraphFlag; } + YY_BREAK +case 80: +YY_RULE_SETUP +#line 275 "config.l" +{ BEGIN(GetBool); b=&Config::gfxHierarchyFlag; } + YY_BREAK +case 81: +YY_RULE_SETUP +#line 276 "config.l" +{ BEGIN(GetBool); b=&Config::generateRTF; } + YY_BREAK +case 82: +YY_RULE_SETUP +#line 277 "config.l" +{ BEGIN(GetBool); b=&Config::compactRTFFlag; } + YY_BREAK +case 83: +YY_RULE_SETUP +#line 278 "config.l" +{ BEGIN(GetBool); b=&Config::rtfHyperFlag; } + YY_BREAK +case 84: +YY_RULE_SETUP +#line 279 "config.l" +{ err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); } + YY_BREAK +case 85: +YY_RULE_SETUP +#line 280 "config.l" +{ yyLineNr++; BEGIN(Start); } + YY_BREAK +case 86: +YY_RULE_SETUP +#line 281 "config.l" { yyLineNr++; - if (elemStr.length()>0) + if (!elemStr.isEmpty()) { //printf("elemStr1=`%s'\n",elemStr.data()); l->append(elemStr); @@ -1784,11 +1899,11 @@ YY_RULE_SETUP BEGIN(Start); } YY_BREAK -case 78: +case 87: YY_RULE_SETUP -#line 272 "config.l" +#line 290 "config.l" { - if (elemStr.length()>0) + if (!elemStr.isEmpty()) { //printf("elemStr2=`%s'\n",elemStr.data()); l->append(elemStr); @@ -1796,31 +1911,31 @@ YY_RULE_SETUP elemStr.resize(0); } YY_BREAK -case 79: +case 88: YY_RULE_SETUP -#line 280 "config.l" +#line 298 "config.l" { (*s)+=yytext; } YY_BREAK -case 80: +case 89: YY_RULE_SETUP -#line 281 "config.l" +#line 299 "config.l" { lastState=YY_START; BEGIN(GetQuotedString); tmpString.resize(0); } YY_BREAK -case 81: +case 90: YY_RULE_SETUP -#line 285 "config.l" +#line 303 "config.l" { //printf(">> Enter env\n"); lastEnvState=YY_START; BEGIN(GetEnvVar); } YY_BREAK -case 82: +case 91: YY_RULE_SETUP -#line 290 "config.l" +#line 308 "config.l" { yytext[yyleng-1]='\0'; const char *env=getenv(yytext); @@ -1831,9 +1946,9 @@ YY_RULE_SETUP BEGIN(lastEnvState); } YY_BREAK -case 83: +case 92: YY_RULE_SETUP -#line 299 "config.l" +#line 317 "config.l" { //printf("Quoted String = `%s'\n",tmpString.data()); if (lastState==GetString) @@ -1848,21 +1963,21 @@ YY_RULE_SETUP BEGIN(lastState); } YY_BREAK -case 84: +case 93: YY_RULE_SETUP -#line 312 "config.l" +#line 330 "config.l" { tmpString+='"'; } YY_BREAK -case 85: +case 94: YY_RULE_SETUP -#line 315 "config.l" +#line 333 "config.l" { tmpString+=*yytext; } YY_BREAK -case 86: +case 95: YY_RULE_SETUP -#line 316 "config.l" +#line 334 "config.l" { QCString bs=yytext; bs=bs.upper(); @@ -1879,41 +1994,41 @@ YY_RULE_SETUP } } YY_BREAK -case 87: +case 96: YY_RULE_SETUP -#line 331 "config.l" +#line 349 "config.l" { elemStr+=yytext; } YY_BREAK -case 88: +case 97: YY_RULE_SETUP -#line 334 "config.l" +#line 352 "config.l" { yyLineNr++; BEGIN(Start); } YY_BREAK -case 89: +case 98: YY_RULE_SETUP -#line 335 "config.l" +#line 353 "config.l" { yyLineNr++; BEGIN(Start); } YY_BREAK -case 90: +case 99: YY_RULE_SETUP -#line 336 "config.l" +#line 354 "config.l" { yyLineNr++; } YY_BREAK -case 91: +case 100: YY_RULE_SETUP -#line 337 "config.l" +#line 355 "config.l" YY_BREAK -case 92: +case 101: YY_RULE_SETUP -#line 338 "config.l" +#line 356 "config.l" { yyLineNr++ ; } YY_BREAK -case 93: +case 102: YY_RULE_SETUP -#line 340 "config.l" +#line 358 "config.l" ECHO; YY_BREAK case YY_STATE_EOF(INITIAL): @@ -2214,7 +2329,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 938 ) + if ( yy_current_state >= 1039 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2249,11 +2364,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 938 ) + if ( yy_current_state >= 1039 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 937); + yy_is_jam = (yy_current_state == 1038); return yy_is_jam ? 0 : yy_current_state; } @@ -2808,7 +2923,7 @@ int main() return 0; } #endif -#line 340 "config.l" +#line 358 "config.l" /*@ ---------------------------------------------------------------------------- @@ -2871,6 +2986,7 @@ void Config::init() Config::htmlOutputDir = "html"; Config::latexOutputDir ="latex"; Config::manOutputDir ="man"; + Config::rtfOutputDir = "rtf"; Config::outputLanguage = "English"; Config::headerFile.resize(0); Config::latexHeaderFile.resize(0); @@ -2886,6 +3002,7 @@ void Config::init() Config::paperType = "a4wide"; Config::manExtension = ".3"; Config::htmlStyleSheet.resize(0); + Config::ignorePrefix.resize(0); Config::includePath.clear(); Config::examplePath.clear(); Config::imagePath.clear(); @@ -2923,10 +3040,14 @@ void Config::init() Config::pdfHyperFlag = FALSE; Config::alwaysDetailsFlag = FALSE; Config::inlineSourceFlag = FALSE; + Config::haveDotFlag = FALSE; + Config::compactRTFFlag = FALSE; + Config::rtfHyperFlag = FALSE; Config::warningFlag = TRUE; Config::generateHtml = TRUE; Config::generateLatex = TRUE; Config::generateMan = TRUE; + Config::generateRTF = FALSE; Config::preprocessingFlag = TRUE; Config::briefMemDescFlag = TRUE; Config::searchIncludeFlag = TRUE; @@ -2937,6 +3058,9 @@ void Config::init() Config::autoBriefFlag = TRUE; Config::inheritDocsFlag = TRUE; Config::inlineInfoFlag = TRUE; + Config::collGraphFlag = TRUE; + Config::includeGraphFlag = TRUE; + Config::gfxHierarchyFlag = TRUE; } void writeTemplateConfig(QFile *f,bool sl) @@ -3363,6 +3487,13 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; + } + t << "#---------------------------------------------------------------------------\n"; + t << "# configuration options related to the alphabetical class index\n"; + t << "#---------------------------------------------------------------------------\n"; + if (!sl) + { + t << "\n"; t << "# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index\n"; t << "# of all compounds will be generated. Enable this if the project\n"; t << "# contains a lot of classes, structs, unions or interfaces.\n"; @@ -3381,6 +3512,16 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; + t << "# In case all classes in a project start with a common prefix, all\n"; + t << "# classes will be put under the same header in the alphabetical index.\n"; + t << "# The IGNORE_PREFIX tag can be use to specify a prefix that should be ignored\n"; + t << "# while generating the index headers.\n"; + t << "\n"; + } + t << "IGNORE_PREFIX = \n"; + if (!sl) + { + t << "\n"; } t << "#---------------------------------------------------------------------------\n"; t << "# configuration options related to the LaTeX output\n"; @@ -3453,6 +3594,50 @@ void writeTemplateConfig(QFile *f,bool sl) t << "\n"; } t << "#---------------------------------------------------------------------------\n"; + t << "# configuration options related to the RTF output\n"; + t << "#---------------------------------------------------------------------------\n"; + if (!sl) + { + t << "\n"; + t << "# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output\n"; + t << "# For now this is experimental and is disabled by default. The RTF output\n"; + t << "# is optimised for Word 97 and may not look too pretty with other readers\n"; + t << "# or editors.\n"; + t << "\n"; + } + t << "GENERATE_RTF = NO\n"; + if (!sl) + { + t << "\n"; + t << "# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.\n"; + t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be\n"; + t << "# put in front of it. If left blank `rtf' will be used as the default path.\n"; + t << "\n"; + } + t << "RTF_OUTPUT =\n"; + if (!sl) + { + t << "\n"; + t << "# If the COMPACT_RTF tag is set to YES Doxygen generates more compact\n"; + t << "# RTF documents. This may be useful for small projects and may help to\n"; + t << "# save some trees in general.\n"; + t << "\n"; + } + t << "COMPACT_RTF = NO\n"; + if (!sl) + { + t << "\n"; + t << "# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated\n"; + t << "# will contain hyperlink fields. The RTF file will\n"; + t << "# contain links (just like the HTML output) instead of page references.\n"; + t << "# This makes the output suitable for online browsing using a WORD or other.\n"; + t << "# programs which support those fields.\n"; + t << "# Note: wordpad (write) and others do not support links.\n"; + t << "\n"; + } + t << "RTF_HYPERLINKS = NO\n"; + + t << "#---------------------------------------------------------------------------\n"; t << "# configuration options related to the man page output\n"; t << "#---------------------------------------------------------------------------\n"; if (!sl) @@ -3587,6 +3772,51 @@ void writeTemplateConfig(QFile *f,bool sl) t << "\n"; } t << "#---------------------------------------------------------------------------\n"; + t << "# Configuration options related to the dot tool \n"; + t << "#---------------------------------------------------------------------------\n"; + if (!sl) + { + t << "\n"; + t << "# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is\n"; + t << "# available from the path. This tool is part of Graphviz, a graph visualization\n"; + t << "# toolkit from AT&T and Lucent Bell Labs. The other options in this section\n"; + t << "# have no effect if this option is set to NO (the default)\n"; + t << "\n"; + } + t << "HAVE_DOT = NO\n"; + if (!sl) + { + t << "\n"; + t << "# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen\n"; + t << "# will generate a graph for each documented class showing the direct and\n"; + t << "# indirect implementation dependencies (inheritance, containment, and\n"; + t << "# class references variables) of the class with other documented classes.\n"; + t << "\n"; + } + t << "COLLABORATION_GRAPH = YES\n"; + if (!sl) + { + t << "\n"; + t << "# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to\n"; + t << "# YES then doxygen will generate a graph for each documented file showing\n"; + t << "# the direct and indirect include dependencies of the file with other \n"; + t << "# documented files.\n"; + t << "\n"; + } + t << "INCLUDE_GRAPH = YES\n"; + if (!sl) + { + t << "\n"; + t << "# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen\n"; + t << "# will graphical hierarchy of all classes instead of a textual one.\n"; + t << "\n"; + } + t << "GRAPHICAL_HIERARCHY = YES\n"; + if (!sl) + { + t << "\n"; + } + t << "#---------------------------------------------------------------------------\n"; t << "# Configuration options related to the search engine \n"; t << "#---------------------------------------------------------------------------\n"; if (!sl) @@ -3654,7 +3884,7 @@ void writeTemplateConfig(QFile *f,bool sl) void checkConfig() { - //if (projectName.length()>0) + //if (!projectName.isEmpty()) //{ // projectName[0]=toupper(projectName[0]); //} @@ -3762,7 +3992,8 @@ void checkConfig() Config::htmlOutputDir.prepend(Config::outputDir+'/'); } QDir htmlDir(Config::htmlOutputDir); - if (!htmlDir.exists() && !htmlDir.mkdir(Config::htmlOutputDir)) + if (Config::generateHtml && !htmlDir.exists() && + !htmlDir.mkdir(Config::htmlOutputDir)) { err("Could not create output directory %s\n",Config::htmlOutputDir.data()); exit(1); @@ -3777,12 +4008,29 @@ void checkConfig() Config::latexOutputDir.prepend(Config::outputDir+'/'); } QDir latexDir(Config::latexOutputDir); - if (!latexDir.exists() && !latexDir.mkdir(Config::latexOutputDir)) + if (Config::generateLatex && !latexDir.exists() && + !latexDir.mkdir(Config::latexOutputDir)) { err("Could not create output directory %s\n",Config::latexOutputDir.data()); exit(1); } + if (Config::rtfOutputDir.isEmpty() && Config::generateRTF) + { + Config::rtfOutputDir=Config::outputDir+"/rtf"; + } + else if (Config::rtfOutputDir && Config::rtfOutputDir[0]!='/') + { + Config::rtfOutputDir.prepend(Config::outputDir+'/'); + } + QDir rtfDir(Config::rtfOutputDir); + if (Config::generateRTF && !rtfDir.exists() && + !rtfDir.mkdir(Config::rtfOutputDir)) + { + err("Could not create output directory %s\n",Config::rtfOutputDir.data()); + exit(1); + } + if (Config::manOutputDir.isEmpty() && Config::generateMan) { Config::manOutputDir=Config::outputDir+"/man"; @@ -3792,14 +4040,15 @@ void checkConfig() Config::manOutputDir.prepend(Config::outputDir+'/'); } QDir manDir(Config::manOutputDir); - if (!manDir.exists() && !manDir.mkdir(Config::manOutputDir)) + if (Config::generateMan && !manDir.exists() && + !manDir.mkdir(Config::manOutputDir)) { err("Could not create output directory %s\n",Config::manOutputDir.data()); exit(1); } // Test to see if HTML header is valid - if (Config::headerFile.length()>0) + if (!Config::headerFile.isEmpty()) { QFileInfo fi(Config::headerFile); if (!fi.exists()) @@ -3810,7 +4059,7 @@ void checkConfig() } } // Test to see if HTML footer is valid - if (Config::footerFile.length()>0) + if (!Config::footerFile.isEmpty()) { QFileInfo fi(Config::footerFile); if (!fi.exists()) @@ -3821,7 +4070,7 @@ void checkConfig() } } // Test to see if LaTeX header is valid - if (Config::latexHeaderFile.length()>0) + if (!Config::latexHeaderFile.isEmpty()) { QFileInfo fi(Config::latexHeaderFile); if (!fi.exists()) @@ -3886,13 +4135,13 @@ void checkConfig() if (Config::searchEngineFlag) { // check cgi name - if (Config::cgiName.length()==0) + if (Config::cgiName.isEmpty()) { err("Error: tag CGI_NAME: no cgi script name after the CGI_NAME tag.\n"); exit(1); } // check cgi URL - if (Config::cgiURL.length()==0) + if (Config::cgiURL.isEmpty()) { err("Error: tag CGI_URL: no URL to cgi directory specified.\n"); exit(1); @@ -3904,7 +4153,7 @@ void checkConfig() exit(1); } // check documentation URL - if (Config::docURL.length()==0) + if (Config::docURL.isEmpty()) { Config::docURL = Config::outputDir.copy().prepend("file://").append("html"); } @@ -3915,7 +4164,7 @@ void checkConfig() exit(1); } // check absolute documentation path - if (Config::docAbsPath.length()==0) + if (Config::docAbsPath.isEmpty()) { Config::docAbsPath = Config::outputDir+"/html"; } @@ -3925,7 +4174,7 @@ void checkConfig() exit(1); } // check path to doxysearch - if (Config::binAbsPath.length()==0) + if (Config::binAbsPath.isEmpty()) { err("Error: tag BIN_ABSPATH: no absolute path to doxysearch " "specified.\n"); @@ -3939,7 +4188,7 @@ void checkConfig() // check perl path bool found=FALSE; - if (Config::perlPath.length()==0) + if (Config::perlPath.isEmpty()) { QFileInfo fi; fi.setFile("/usr/bin/perl"); diff --git a/src/config.h b/src/config.h index 2cd637a..7ed4b52 100644 --- a/src/config.h +++ b/src/config.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -37,6 +37,7 @@ struct Config static QCString htmlOutputDir; // the directory to put the HTML files static QCString latexOutputDir; // the directory to put the Latex files static QCString manOutputDir; // the directory to put the man pages + static QCString rtfOutputDir; // the directory to put the RTF files static QCString outputLanguage; // the output language static QCString headerFile; // the name of the personal HTML header static QCString latexHeaderFile; // the name of the personal LaTeX header @@ -52,6 +53,7 @@ struct Config static QCString paperType; // the page type to generate docs for static QCString manExtension; // extension the man page files static QCString htmlStyleSheet; // user defined cascading style sheet + static QCString ignorePrefix; // prefix to ignore for the alphabetical index static QStrList includePath; // list of include paths static QStrList examplePath; // list of example paths static QStrList imagePath; // list of image paths @@ -103,6 +105,13 @@ struct Config static int tabSize; // number of spaces in a tab static int colsInAlphaIndex; // number of columns in the alphabetical index static bool inlineSourceFlag; // inline the definition bodies in the docs? + static bool haveDotFlag; // indicates wether or not dot is present + static bool collGraphFlag; // collaboration graph + static bool includeGraphFlag; // include graph + static bool gfxHierarchyFlag; // flag to enable graphical hierarchy + static bool generateRTF; // generate RTF flag + static bool compactRTFFlag; // generate more compact RTF + static bool rtfHyperFlag; // generate hyper links in RTF }; #endif diff --git a/src/config.l b/src/config.l index 23e747a..004ba50 100644 --- a/src/config.l +++ b/src/config.l @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -62,13 +62,13 @@ void warn(const char *fmt, ...) * exported variables */ - QCString Config::projectName; QCString Config::projectNumber; QCString Config::outputDir; QCString Config::htmlOutputDir; QCString Config::latexOutputDir; QCString Config::manOutputDir; +QCString Config::rtfOutputDir; QCString Config::outputLanguage; QCString Config::headerFile; QCString Config::latexHeaderFile; @@ -84,6 +84,7 @@ QCString Config::inputFilter; QCString Config::paperType; QCString Config::manExtension; QCString Config::htmlStyleSheet; +QCString Config::ignorePrefix; QStrList Config::includePath; QStrList Config::examplePath; QStrList Config::imagePath; @@ -119,11 +120,15 @@ bool Config::alphaIndexFlag = FALSE; bool Config::pdfHyperFlag = FALSE; bool Config::alwaysDetailsFlag = FALSE; bool Config::inlineSourceFlag = FALSE; +bool Config::rtfHyperFlag = FALSE; +bool Config::compactRTFFlag = FALSE; +bool Config::haveDotFlag = FALSE; bool Config::autoBriefFlag = TRUE; bool Config::warningFlag = TRUE; bool Config::generateHtml = TRUE; bool Config::generateLatex = TRUE; bool Config::generateMan = TRUE; +bool Config::generateRTF = FALSE; bool Config::preprocessingFlag = TRUE; bool Config::briefMemDescFlag = TRUE; bool Config::searchIncludeFlag = TRUE; @@ -133,9 +138,13 @@ bool Config::verbatimHeaderFlag = TRUE; bool Config::htmlAlignMemberFlag = TRUE; bool Config::inheritDocsFlag = TRUE; bool Config::inlineInfoFlag = TRUE; +bool Config::collGraphFlag = TRUE; +bool Config::includeGraphFlag = TRUE; +bool Config::gfxHierarchyFlag = TRUE; int Config::tabSize = 8; int Config::colsInAlphaIndex = 5; - + + /* ----------------------------------------------------------------- * * static variables @@ -186,50 +195,52 @@ static int yyread(char *buf,int max_size) <*>\0x0d <Start,GetString,GetStrList,GetBool>"#" { BEGIN(SkipComment); } -<Start>"PROJECT_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::projectName; } -<Start>"PROJECT_NUMBER"[ \t]*"=" { BEGIN(GetString); s=&Config::projectNumber; } -<Start>"OUTPUT_DIRECTORY"[ \t]*"=" { BEGIN(GetString); s=&Config::outputDir; } -<Start>"HTML_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlOutputDir; } -<Start>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::manOutputDir; } -<Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; } -<Start>"HTML_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::headerFile; } -<Start>"HTML_FOOTER"[ \t]*"=" { BEGIN(GetString); s=&Config::footerFile; } -<Start>"LATEX_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::latexHeaderFile; } -<Start>"CGI_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiName; } -<Start>"CGI_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiURL; } -<Start>"DOC_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::docURL; } -<Start>"BIN_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::binAbsPath; } -<Start>"DOC_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::docAbsPath; } -<Start>"PERL_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::perlPath; } -<Start>"GENERATE_TAGFILE"[ \t]*"=" { BEGIN(GetString); s=&Config::genTagFile; } -<Start>"INPUT_FILTER"[ \t]*"=" { BEGIN(GetString); s=&Config::inputFilter; } -<Start>"PAPER_TYPE"[ \t]*"=" { BEGIN(GetString); s=&Config::paperType; } -<Start>"OUTPUT_LANGUAGE"[ \t]*"=" { BEGIN(GetString); s=&Config::outputLanguage; } -<Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&Config::manExtension; } -<Start>"TAB_SIZE"[ \t]*"=" { BEGIN(GetString); s=&tabSizeString; } -<Start>"HTML_STYLESHEET"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlStyleSheet; } -<Start>"COLS_IN_ALPHA_INDEX"[ \t]*"=" { BEGIN(GetString); s=&colsInAlphaIndexString; } -<Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; elemStr=""; } -<Start>"EXAMPLE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePath; elemStr=""; } -<Start>"IMAGE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePath; elemStr=""; } -<Start>"INPUT"[ \t]*"=" { BEGIN(GetStrList); l=&Config::inputSources; elemStr=""; } -<Start>"EXCLUDE"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludeSources; elemStr=""; } -<Start>"FILE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::filePatternList; elemStr=""; } -<Start>"EXCLUDE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludePatternList; elemStr=""; } -<Start>"EXAMPLE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePatternList; elemStr=""; } -<Start>"IMAGE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePatternList; elemStr=""; } -<Start>"TAGFILES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::tagFileList; elemStr=""; } -<Start>"EXT_DOC_PATHS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extDocPathList; elemStr=""; } -<Start>"PREDEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::predefined; elemStr=""; } -<Start>"EXTRA_PACKAGES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extraPackageList; elemStr=""; } -<Start>"STRIP_FROM_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::stripFromPath; elemStr=""; } -<Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; } -<Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; } -<Start>"RECURSIVE"[ \t]*"=" { BEGIN(GetBool); b=&Config::recursiveFlag; } -<Start>"ALLEXTERNALS"[ \t]*"=" { BEGIN(GetBool); b=&Config::allExtFlag; } +<Start>"PROJECT_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::projectName; s->resize(0); } +<Start>"PROJECT_NUMBER"[ \t]*"=" { BEGIN(GetString); s=&Config::projectNumber; s->resize(0); } +<Start>"OUTPUT_DIRECTORY"[ \t]*"=" { BEGIN(GetString); s=&Config::outputDir; s->resize(0); } +<Start>"HTML_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlOutputDir; s->resize(0); } +<Start>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); } +<Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); } +<Start>"RTF_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::rtfOutputDir; s->resize(0); } +<Start>"HTML_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::headerFile; s->resize(0); } +<Start>"HTML_FOOTER"[ \t]*"=" { BEGIN(GetString); s=&Config::footerFile; s->resize(0); } +<Start>"LATEX_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::latexHeaderFile; s->resize(0); } +<Start>"CGI_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiName; s->resize(0); } +<Start>"CGI_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiURL; s->resize(0); } +<Start>"DOC_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::docURL; s->resize(0); } +<Start>"BIN_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::binAbsPath; s->resize(0); } +<Start>"DOC_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::docAbsPath; s->resize(0); } +<Start>"PERL_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::perlPath; s->resize(0); } +<Start>"GENERATE_TAGFILE"[ \t]*"=" { BEGIN(GetString); s=&Config::genTagFile; s->resize(0); } +<Start>"INPUT_FILTER"[ \t]*"=" { BEGIN(GetString); s=&Config::inputFilter; s->resize(0); } +<Start>"PAPER_TYPE"[ \t]*"=" { BEGIN(GetString); s=&Config::paperType; s->resize(0); } +<Start>"OUTPUT_LANGUAGE"[ \t]*"=" { BEGIN(GetString); s=&Config::outputLanguage; s->resize(0); } +<Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&Config::manExtension; s->resize(0); } +<Start>"TAB_SIZE"[ \t]*"=" { BEGIN(GetString); s=&tabSizeString; s->resize(0); } +<Start>"HTML_STYLESHEET"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlStyleSheet; s->resize(0); } +<Start>"COLS_IN_ALPHA_INDEX"[ \t]*"=" { BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); } +<Start>"IGNORE_PREFIX"[ \t]*"=" { BEGIN(GetString); s=&Config::ignorePrefix; s->resize(0); } +<Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; } +<Start>"EXAMPLE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePath; l->clear(); elemStr=""; } +<Start>"IMAGE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; } +<Start>"INPUT"[ \t]*"=" { BEGIN(GetStrList); l=&Config::inputSources; l->clear(); elemStr=""; } +<Start>"EXCLUDE"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludeSources; l->clear(); elemStr=""; } +<Start>"FILE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::filePatternList; l->clear(); elemStr=""; } +<Start>"EXCLUDE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludePatternList; l->clear(); elemStr=""; } +<Start>"EXAMPLE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePatternList; l->clear(); elemStr=""; } +<Start>"IMAGE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePatternList; l->clear(); elemStr=""; } +<Start>"TAGFILES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::tagFileList; l->clear(); elemStr=""; } +<Start>"EXT_DOC_PATHS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extDocPathList; l->clear(); elemStr=""; } +<Start>"PREDEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::predefined; l->clear(); elemStr=""; } +<Start>"EXTRA_PACKAGES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extraPackageList; l->clear(); elemStr=""; } +<Start>"STRIP_FROM_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::stripFromPath; l->clear(); elemStr=""; } +<Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; } +<Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; } +<Start>"RECURSIVE"[ \t]*"=" { BEGIN(GetBool); b=&Config::recursiveFlag; } +<Start>"ALLEXTERNALS"[ \t]*"=" { BEGIN(GetBool); b=&Config::allExtFlag; } <Start>"SEARCHENGINE"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchEngineFlag; } -<Start>"EXTRACT_ALL"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractAllFlag; } -<Start>"EXTRACT_PRIVATE"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractPrivateFlag; } +<Start>"EXTRACT_ALL"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractAllFlag; } +<Start>"EXTRACT_PRIVATE"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractPrivateFlag; } <Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; } <Start>"GENERATE_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateLatex; } <Start>"GENERATE_HTML"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateHtml; } @@ -258,11 +269,18 @@ static int yyread(char *buf,int max_size) <Start>"INHERIT_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::inheritDocsFlag; } <Start>"INLINE_INFO"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineInfoFlag; } <Start>"INLINE_SOURCES"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineSourceFlag; } +<Start>"HAVE_DOT"[ \t]*"=" { BEGIN(GetBool); b=&Config::haveDotFlag; } +<Start>"COLLABORATION_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::collGraphFlag; } +<Start>"INCLUDE_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::includeGraphFlag; } +<Start>"GRAPHICAL_HIERARCHY"[ \t]*"=" { BEGIN(GetBool); b=&Config::gfxHierarchyFlag; } +<Start>"GENERATE_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateRTF; } +<Start>"COMPACT_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactRTFFlag; } +<Start>"RTF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::rtfHyperFlag; } <Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); } <GetString,GetBool>\n { yyLineNr++; BEGIN(Start); } <GetStrList>\n { yyLineNr++; - if (elemStr.length()>0) + if (!elemStr.isEmpty()) { //printf("elemStr1=`%s'\n",elemStr.data()); l->append(elemStr); @@ -270,7 +288,7 @@ static int yyread(char *buf,int max_size) BEGIN(Start); } <GetStrList>[ \t]+ { - if (elemStr.length()>0) + if (!elemStr.isEmpty()) { //printf("elemStr2=`%s'\n",elemStr.data()); l->append(elemStr); @@ -399,6 +417,7 @@ void Config::init() Config::htmlOutputDir = "html"; Config::latexOutputDir ="latex"; Config::manOutputDir ="man"; + Config::rtfOutputDir = "rtf"; Config::outputLanguage = "English"; Config::headerFile.resize(0); Config::latexHeaderFile.resize(0); @@ -414,6 +433,7 @@ void Config::init() Config::paperType = "a4wide"; Config::manExtension = ".3"; Config::htmlStyleSheet.resize(0); + Config::ignorePrefix.resize(0); Config::includePath.clear(); Config::examplePath.clear(); Config::imagePath.clear(); @@ -451,10 +471,14 @@ void Config::init() Config::pdfHyperFlag = FALSE; Config::alwaysDetailsFlag = FALSE; Config::inlineSourceFlag = FALSE; + Config::haveDotFlag = FALSE; + Config::compactRTFFlag = FALSE; + Config::rtfHyperFlag = FALSE; Config::warningFlag = TRUE; Config::generateHtml = TRUE; Config::generateLatex = TRUE; Config::generateMan = TRUE; + Config::generateRTF = FALSE; Config::preprocessingFlag = TRUE; Config::briefMemDescFlag = TRUE; Config::searchIncludeFlag = TRUE; @@ -465,6 +489,9 @@ void Config::init() Config::autoBriefFlag = TRUE; Config::inheritDocsFlag = TRUE; Config::inlineInfoFlag = TRUE; + Config::collGraphFlag = TRUE; + Config::includeGraphFlag = TRUE; + Config::gfxHierarchyFlag = TRUE; } void writeTemplateConfig(QFile *f,bool sl) @@ -891,6 +918,13 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; + } + t << "#---------------------------------------------------------------------------\n"; + t << "# configuration options related to the alphabetical class index\n"; + t << "#---------------------------------------------------------------------------\n"; + if (!sl) + { + t << "\n"; t << "# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index\n"; t << "# of all compounds will be generated. Enable this if the project\n"; t << "# contains a lot of classes, structs, unions or interfaces.\n"; @@ -909,6 +943,16 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; + t << "# In case all classes in a project start with a common prefix, all\n"; + t << "# classes will be put under the same header in the alphabetical index.\n"; + t << "# The IGNORE_PREFIX tag can be use to specify a prefix that should be ignored\n"; + t << "# while generating the index headers.\n"; + t << "\n"; + } + t << "IGNORE_PREFIX = \n"; + if (!sl) + { + t << "\n"; } t << "#---------------------------------------------------------------------------\n"; t << "# configuration options related to the LaTeX output\n"; @@ -981,6 +1025,50 @@ void writeTemplateConfig(QFile *f,bool sl) t << "\n"; } t << "#---------------------------------------------------------------------------\n"; + t << "# configuration options related to the RTF output\n"; + t << "#---------------------------------------------------------------------------\n"; + if (!sl) + { + t << "\n"; + t << "# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output\n"; + t << "# For now this is experimental and is disabled by default. The RTF output\n"; + t << "# is optimised for Word 97 and may not look too pretty with other readers\n"; + t << "# or editors.\n"; + t << "\n"; + } + t << "GENERATE_RTF = NO\n"; + if (!sl) + { + t << "\n"; + t << "# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.\n"; + t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be\n"; + t << "# put in front of it. If left blank `rtf' will be used as the default path.\n"; + t << "\n"; + } + t << "RTF_OUTPUT =\n"; + if (!sl) + { + t << "\n"; + t << "# If the COMPACT_RTF tag is set to YES Doxygen generates more compact\n"; + t << "# RTF documents. This may be useful for small projects and may help to\n"; + t << "# save some trees in general.\n"; + t << "\n"; + } + t << "COMPACT_RTF = NO\n"; + if (!sl) + { + t << "\n"; + t << "# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated\n"; + t << "# will contain hyperlink fields. The RTF file will\n"; + t << "# contain links (just like the HTML output) instead of page references.\n"; + t << "# This makes the output suitable for online browsing using a WORD or other.\n"; + t << "# programs which support those fields.\n"; + t << "# Note: wordpad (write) and others do not support links.\n"; + t << "\n"; + } + t << "RTF_HYPERLINKS = NO\n"; + + t << "#---------------------------------------------------------------------------\n"; t << "# configuration options related to the man page output\n"; t << "#---------------------------------------------------------------------------\n"; if (!sl) @@ -1115,6 +1203,51 @@ void writeTemplateConfig(QFile *f,bool sl) t << "\n"; } t << "#---------------------------------------------------------------------------\n"; + t << "# Configuration options related to the dot tool \n"; + t << "#---------------------------------------------------------------------------\n"; + if (!sl) + { + t << "\n"; + t << "# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is\n"; + t << "# available from the path. This tool is part of Graphviz, a graph visualization\n"; + t << "# toolkit from AT&T and Lucent Bell Labs. The other options in this section\n"; + t << "# have no effect if this option is set to NO (the default)\n"; + t << "\n"; + } + t << "HAVE_DOT = NO\n"; + if (!sl) + { + t << "\n"; + t << "# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen\n"; + t << "# will generate a graph for each documented class showing the direct and\n"; + t << "# indirect implementation dependencies (inheritance, containment, and\n"; + t << "# class references variables) of the class with other documented classes.\n"; + t << "\n"; + } + t << "COLLABORATION_GRAPH = YES\n"; + if (!sl) + { + t << "\n"; + t << "# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to\n"; + t << "# YES then doxygen will generate a graph for each documented file showing\n"; + t << "# the direct and indirect include dependencies of the file with other \n"; + t << "# documented files.\n"; + t << "\n"; + } + t << "INCLUDE_GRAPH = YES\n"; + if (!sl) + { + t << "\n"; + t << "# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen\n"; + t << "# will graphical hierarchy of all classes instead of a textual one.\n"; + t << "\n"; + } + t << "GRAPHICAL_HIERARCHY = YES\n"; + if (!sl) + { + t << "\n"; + } + t << "#---------------------------------------------------------------------------\n"; t << "# Configuration options related to the search engine \n"; t << "#---------------------------------------------------------------------------\n"; if (!sl) @@ -1182,7 +1315,7 @@ void writeTemplateConfig(QFile *f,bool sl) void checkConfig() { - //if (projectName.length()>0) + //if (!projectName.isEmpty()) //{ // projectName[0]=toupper(projectName[0]); //} @@ -1290,7 +1423,8 @@ void checkConfig() Config::htmlOutputDir.prepend(Config::outputDir+'/'); } QDir htmlDir(Config::htmlOutputDir); - if (!htmlDir.exists() && !htmlDir.mkdir(Config::htmlOutputDir)) + if (Config::generateHtml && !htmlDir.exists() && + !htmlDir.mkdir(Config::htmlOutputDir)) { err("Could not create output directory %s\n",Config::htmlOutputDir.data()); exit(1); @@ -1305,12 +1439,29 @@ void checkConfig() Config::latexOutputDir.prepend(Config::outputDir+'/'); } QDir latexDir(Config::latexOutputDir); - if (!latexDir.exists() && !latexDir.mkdir(Config::latexOutputDir)) + if (Config::generateLatex && !latexDir.exists() && + !latexDir.mkdir(Config::latexOutputDir)) { err("Could not create output directory %s\n",Config::latexOutputDir.data()); exit(1); } + if (Config::rtfOutputDir.isEmpty() && Config::generateRTF) + { + Config::rtfOutputDir=Config::outputDir+"/rtf"; + } + else if (Config::rtfOutputDir && Config::rtfOutputDir[0]!='/') + { + Config::rtfOutputDir.prepend(Config::outputDir+'/'); + } + QDir rtfDir(Config::rtfOutputDir); + if (Config::generateRTF && !rtfDir.exists() && + !rtfDir.mkdir(Config::rtfOutputDir)) + { + err("Could not create output directory %s\n",Config::rtfOutputDir.data()); + exit(1); + } + if (Config::manOutputDir.isEmpty() && Config::generateMan) { Config::manOutputDir=Config::outputDir+"/man"; @@ -1320,14 +1471,15 @@ void checkConfig() Config::manOutputDir.prepend(Config::outputDir+'/'); } QDir manDir(Config::manOutputDir); - if (!manDir.exists() && !manDir.mkdir(Config::manOutputDir)) + if (Config::generateMan && !manDir.exists() && + !manDir.mkdir(Config::manOutputDir)) { err("Could not create output directory %s\n",Config::manOutputDir.data()); exit(1); } // Test to see if HTML header is valid - if (Config::headerFile.length()>0) + if (!Config::headerFile.isEmpty()) { QFileInfo fi(Config::headerFile); if (!fi.exists()) @@ -1338,7 +1490,7 @@ void checkConfig() } } // Test to see if HTML footer is valid - if (Config::footerFile.length()>0) + if (!Config::footerFile.isEmpty()) { QFileInfo fi(Config::footerFile); if (!fi.exists()) @@ -1349,7 +1501,7 @@ void checkConfig() } } // Test to see if LaTeX header is valid - if (Config::latexHeaderFile.length()>0) + if (!Config::latexHeaderFile.isEmpty()) { QFileInfo fi(Config::latexHeaderFile); if (!fi.exists()) @@ -1414,13 +1566,13 @@ void checkConfig() if (Config::searchEngineFlag) { // check cgi name - if (Config::cgiName.length()==0) + if (Config::cgiName.isEmpty()) { err("Error: tag CGI_NAME: no cgi script name after the CGI_NAME tag.\n"); exit(1); } // check cgi URL - if (Config::cgiURL.length()==0) + if (Config::cgiURL.isEmpty()) { err("Error: tag CGI_URL: no URL to cgi directory specified.\n"); exit(1); @@ -1432,7 +1584,7 @@ void checkConfig() exit(1); } // check documentation URL - if (Config::docURL.length()==0) + if (Config::docURL.isEmpty()) { Config::docURL = Config::outputDir.copy().prepend("file://").append("html"); } @@ -1443,7 +1595,7 @@ void checkConfig() exit(1); } // check absolute documentation path - if (Config::docAbsPath.length()==0) + if (Config::docAbsPath.isEmpty()) { Config::docAbsPath = Config::outputDir+"/html"; } @@ -1453,7 +1605,7 @@ void checkConfig() exit(1); } // check path to doxysearch - if (Config::binAbsPath.length()==0) + if (Config::binAbsPath.isEmpty()) { err("Error: tag BIN_ABSPATH: no absolute path to doxysearch " "specified.\n"); @@ -1467,7 +1619,7 @@ void checkConfig() // check perl path bool found=FALSE; - if (Config::perlPath.length()==0) + if (Config::perlPath.isEmpty()) { QFileInfo fi; fi.setFile("/usr/bin/perl"); diff --git a/src/constexp.h b/src/constexp.h index 8c33a5e..7ac5fe3 100644 --- a/src/constexp.h +++ b/src/constexp.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/constexp.l b/src/constexp.l index 43c7167..5e63aa6 100644 --- a/src/constexp.l +++ b/src/constexp.l @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/cppvalue.cpp b/src/cppvalue.cpp index ab2a1d4..df404b9 100644 --- a/src/cppvalue.cpp +++ b/src/cppvalue.cpp @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/cppvalue.h b/src/cppvalue.h index d3751b2..d1bc13b 100644 --- a/src/cppvalue.h +++ b/src/cppvalue.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/debug.cpp b/src/debug.cpp index 96be18d..8b0b316 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/debug.h b/src/debug.h index 615a6be..b07cd14 100644 --- a/src/debug.h +++ b/src/debug.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/declinfo.cpp b/src/declinfo.cpp index cc19eb2..882f60c 100644 --- a/src/declinfo.cpp +++ b/src/declinfo.cpp @@ -302,13 +302,13 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 21 -#define YY_END_OF_BUFFER 22 +#define YY_NUM_RULES 22 +#define YY_END_OF_BUFFER 23 static yyconst short int yy_accept[89] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 20, 21, 5, 4, 8, 7, 20, 10, 2, + 23, 20, 21, 5, 4, 8, 7, 20, 10, 2, 9, 2, 20, 13, 11, 12, 18, 18, 20, 20, 21, 16, 20, 19, 5, 8, 7, 0, 10, 9, 4, 0, 6, 3, 2, 2, 0, 2, 0, 0, @@ -451,7 +451,7 @@ char *yytext; * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -967,7 +967,12 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 198 "declinfo.l" +#line 197 "declinfo.l" + + YY_BREAK +case 22: +YY_RULE_SETUP +#line 199 "declinfo.l" ECHO; YY_BREAK case YY_STATE_EOF(INITIAL): @@ -1864,7 +1869,7 @@ int main() return 0; } #endif -#line 198 "declinfo.l" +#line 199 "declinfo.l" /*@ ---------------------------------------------------------------------------- @@ -1876,9 +1881,9 @@ void parseFuncDecl(const QCString &decl,QCString &cl,QCString &ctl,QCString &t, inputString = decl; //printf("Input=`%s'\n",inputString); if (inputString==0) return; - inputPosition = 0; + inputPosition = 0; classTempListFound = FALSE; - funcTempListFound = FALSE; + funcTempListFound = FALSE; scope.resize(0); className.resize(0); classTempList.resize(0); @@ -1915,7 +1920,7 @@ void parseFuncDecl(const QCString &decl,QCString &cl,QCString &ctl,QCString &t, a=removeRedundantWhiteSpace(args); exc=removeRedundantWhiteSpace(exceptionString); - if (t.length()>0 && t.at(t.length()-1)==')') + if (!t.isEmpty() && t.at(t.length()-1)==')') { a.prepend(")"); t=t.left(t.length()-1); diff --git a/src/declinfo.h b/src/declinfo.h index df206e0..336e2d4 100644 --- a/src/declinfo.h +++ b/src/declinfo.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/declinfo.l b/src/declinfo.l index 51e10cb..67f537c 100644 --- a/src/declinfo.l +++ b/src/declinfo.l @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -194,6 +194,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]* exceptionString+=*yytext; } <*>. +<*>\n %% @@ -206,9 +207,9 @@ void parseFuncDecl(const QCString &decl,QCString &cl,QCString &ctl,QCString &t, inputString = decl; //printf("Input=`%s'\n",inputString); if (inputString==0) return; - inputPosition = 0; + inputPosition = 0; classTempListFound = FALSE; - funcTempListFound = FALSE; + funcTempListFound = FALSE; scope.resize(0); className.resize(0); classTempList.resize(0); @@ -245,7 +246,7 @@ void parseFuncDecl(const QCString &decl,QCString &cl,QCString &ctl,QCString &t, a=removeRedundantWhiteSpace(args); exc=removeRedundantWhiteSpace(exceptionString); - if (t.length()>0 && t.at(t.length()-1)==')') + if (!t.isEmpty() && t.at(t.length()-1)==')') { a.prepend(")"); t=t.left(t.length()-1); diff --git a/src/defargs.cpp b/src/defargs.cpp index 726f1dc..86adfb6 100644 --- a/src/defargs.cpp +++ b/src/defargs.cpp @@ -304,40 +304,49 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 33 -#define YY_END_OF_BUFFER 34 -static yyconst short int yy_acclist[133] = +#define YY_NUM_RULES 41 +#define YY_END_OF_BUFFER 42 +static yyconst short int yy_acclist[184] = { 0, - 2, 2, 34, 32, 33, 31, 33, 1, 32, 33, - 25, 32, 33, 20, 25, 32, 33, 25, 32, 33, - 27, 32, 33, 13, 27, 32, 33, 14, 27, 32, - 33, 26, 27, 32, 33, 15, 27, 32, 33, 16, - 27, 32, 33, 18, 27, 32, 33, 17, 27, 32, - 33, 24, 32, 33, 2, 24, 32, 33, 12, 24, - 32, 33, 22, 24, 32, 33, 12, 24, 32, 33, - 21, 24, 32, 33, 23, 24, 32, 33, 24, 32, - 33, 7, 25, 32, 33, 25, 32, 33, 12, 25, - 32, 33, 22, 25, 32, 33, 11, 24, 32, 33, - - 9, 23, 24, 32, 33, 32, 33, 32, 33, 32, - 33, 19, 26, 2,16392, 23, 3, 10, 9, 23, - 30,16392, 8200, 6, 6, 8200, 5, 4, 5, 4, - 28, 29 + 2, 2, 42, 40, 41, 39, 41, 40, 41, 1, + 40, 41, 26, 40, 41, 20, 26, 40, 41, 26, + 40, 41, 26, 40, 41, 28, 40, 41, 13, 28, + 40, 41, 14, 28, 40, 41, 28, 40, 41, 27, + 28, 40, 41, 15, 28, 40, 41, 16, 28, 40, + 41, 18, 28, 40, 41, 17, 28, 40, 41, 25, + 40, 41, 2, 25, 40, 41, 12, 25, 40, 41, + 23, 25, 40, 41, 25, 40, 41, 12, 25, 40, + 41, 21, 25, 40, 41, 24, 25, 40, 41, 25, + 40, 41, 7, 26, 40, 41, 26, 40, 41, 12, + + 26, 40, 41, 23, 26, 40, 41, 11, 25, 40, + 41, 9, 24, 25, 40, 41, 40, 41, 40, 41, + 40, 41, 32, 37, 40, 41, 36, 39, 41, 37, + 40, 41, 32, 37, 40, 41, 33, 40, 41, 35, + 39, 41, 33, 40, 41, 19, 27, 2,16392, 24, + 3, 10, 9, 24, 31, 32, 34, 32, 33, 33, + 33, 38,16392, 8200, 6, 6, 32, 38, 33, 38, + 38, 8200, 5, 4, 5, 32, 38, 33, 38, 22, + 4, 29, 30 } ; -static yyconst short int yy_accept[100] = +static yyconst short int yy_accept[135] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, - 3, 3, 3, 4, 6, 8, 11, 14, 18, 21, - 24, 28, 32, 36, 40, 44, 48, 52, 55, 59, - 63, 67, 71, 75, 79, 82, 86, 89, 93, 97, - 101, 106, 108, 110, 112, 113, 114, 115, 115, 115, - 116, 117, 117, 118, 118, 118, 118, 119, 121, 121, - 122, 122, 122, 122, 122, 122, 123, 124, 125, 125, - 126, 126, 126, 126, 126, 127, 128, 130, 130, 130, - 130, 131, 131, 132, 132, 132, 132, 133, 133 - + 3, 3, 3, 3, 3, 3, 3, 4, 6, 8, + 10, 13, 16, 20, 23, 26, 29, 33, 37, 40, + 44, 48, 52, 56, 60, 63, 67, 71, 75, 78, + 82, 86, 90, 93, 97, 100, 104, 108, 112, 117, + 119, 121, 123, 127, 130, 133, 137, 140, 143, 146, + 146, 146, 147, 148, 149, 149, 149, 150, 150, 150, + 151, 151, 152, 152, 152, 152, 153, 155, 155, 156, + 156, 156, 157, 158, 159, 160, 161, 162, 163, 163, + + 163, 163, 164, 165, 165, 165, 166, 166, 167, 167, + 167, 167, 169, 171, 172, 172, 173, 173, 174, 176, + 176, 176, 176, 178, 180, 181, 182, 182, 183, 183, + 183, 183, 184, 184 } ; static yyconst int yy_ec[256] = @@ -345,17 +354,17 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 4, 1, 1, 1, 5, 6, 7, - 8, 5, 1, 9, 1, 1, 1, 10, 11, 11, - 11, 11, 11, 11, 11, 12, 12, 13, 1, 14, - 15, 16, 1, 1, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 18, 19, 20, 1, 17, 1, 21, 17, 22, 17, - - 23, 17, 17, 17, 24, 17, 17, 25, 17, 26, - 27, 17, 17, 17, 28, 29, 17, 30, 17, 17, - 17, 17, 31, 1, 32, 1, 1, 1, 1, 1, + 1, 2, 4, 5, 1, 1, 1, 6, 7, 8, + 9, 10, 1, 11, 1, 1, 12, 13, 14, 14, + 14, 14, 14, 14, 14, 15, 15, 16, 1, 17, + 18, 19, 1, 1, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 21, 22, 23, 1, 20, 1, 24, 20, 25, 20, + + 26, 20, 20, 20, 27, 20, 20, 28, 20, 29, + 30, 20, 20, 20, 31, 32, 20, 33, 20, 20, + 20, 20, 34, 1, 35, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -372,124 +381,148 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[33] = +static yyconst int yy_meta[36] = { 0, - 1, 1, 2, 1, 1, 1, 1, 3, 1, 4, - 4, 4, 3, 1, 1, 1, 4, 1, 1, 1, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 1, 1 + 1, 1, 2, 1, 1, 1, 1, 1, 3, 4, + 1, 1, 5, 5, 5, 3, 1, 1, 1, 5, + 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 1, 1 } ; -static yyconst short int yy_base[109] = +static yyconst short int yy_base[149] = { 0, - 166, 165, 0, 1, 2, 6, 25, 0, 0, 0, - 51, 77, 55, 61, 109, 0, 139, 0, 170, 0, - 57, 58, 167, 292, 292, 292, 292, 292, 0, 292, - 292, 292, 0, 292, 292, 292, 292, 292, 164, 11, - 292, 292, 292, 0, 145, 292, 145, 292, 292, 10, - 0, 9, 136, 135, 292, 0, 159, 62, 69, 201, - 0, 140, 292, 153, 12, 74, 292, 0, 68, 292, - 132, 132, 64, 143, 92, 149, 231, 292, 146, 145, - 89, 122, 128, 96, 0, 292, 292, 96, 115, 79, - 292, 98, 292, 79, 71, 67, 292, 292, 263, 267, - - 271, 85, 275, 20, 279, 283, 16, 287 + 0, 1, 2, 3, 4, 18, 40, 0, 0, 0, + 68, 71, 73, 75, 109, 0, 142, 0, 174, 205, + 145, 155, 15, 19, 5, 21, 287, 363, 363, 22, + 363, 363, 363, 25, 0, 363, 363, 363, 26, 0, + 363, 363, 363, 363, 363, 284, 87, 84, 82, 363, + 363, 0, 258, 363, 258, 363, 89, 96, 0, 26, + 249, 248, 0, 363, 265, 90, 0, 363, 150, 95, + 152, 363, 0, 274, 150, 169, 237, 153, 162, 0, + 252, 363, 267, 177, 179, 363, 0, 180, 363, 244, + 244, 0, 363, 185, 0, 205, 206, 243, 210, 240, + + 238, 186, 269, 209, 212, 363, 248, 244, 214, 219, + 222, 225, 206, 363, 239, 0, 205, 363, 363, 245, + 188, 179, 0, 0, 363, 363, 188, 363, 142, 140, + 120, 363, 363, 302, 307, 312, 317, 322, 327, 103, + 332, 90, 337, 342, 73, 347, 352, 357 } ; -static yyconst short int yy_def[109] = +static yyconst short int yy_def[149] = { 0, - 99, 99, 99, 99, 100, 100, 98, 7, 7, 7, - 7, 7, 7, 7, 98, 15, 100, 17, 98, 19, - 99, 99, 98, 98, 98, 98, 98, 98, 101, 98, - 98, 98, 102, 98, 98, 98, 98, 98, 98, 103, - 98, 98, 98, 104, 105, 98, 106, 98, 98, 98, - 107, 98, 98, 98, 98, 102, 98, 103, 103, 103, - 104, 105, 98, 98, 108, 98, 98, 107, 98, 98, - 98, 98, 103, 98, 103, 60, 98, 98, 98, 98, - 98, 98, 98, 103, 77, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 0, 98, 98, - - 98, 98, 98, 98, 98, 98, 98, 98 + 134, 134, 134, 134, 135, 135, 133, 7, 7, 7, + 7, 7, 7, 7, 133, 15, 135, 17, 136, 136, + 134, 134, 137, 137, 138, 138, 133, 133, 133, 133, + 133, 133, 133, 133, 139, 133, 133, 133, 133, 140, + 133, 133, 133, 133, 133, 133, 141, 133, 133, 133, + 133, 142, 143, 133, 144, 133, 133, 133, 145, 133, + 133, 133, 146, 133, 133, 146, 147, 133, 147, 133, + 133, 133, 140, 133, 141, 141, 141, 133, 133, 142, + 143, 133, 133, 148, 133, 133, 145, 133, 133, 133, + 133, 146, 133, 146, 147, 147, 147, 133, 141, 133, + + 141, 77, 141, 133, 133, 133, 133, 133, 133, 133, + 133, 146, 147, 133, 141, 103, 133, 133, 133, 133, + 133, 133, 146, 147, 133, 133, 133, 133, 133, 133, + 133, 133, 0, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133 } ; -static yyconst short int yy_nxt[325] = +static yyconst short int yy_nxt[399] = { 0, - 98, 98, 25, 25, 25, 28, 26, 26, 25, 28, - 69, 66, 59, 26, 26, 60, 67, 80, 70, 68, - 29, 81, 81, 61, 29, 30, 30, 25, 30, 30, - 30, 31, 32, 30, 30, 30, 30, 30, 30, 30, - 30, 33, 30, 30, 30, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 30, 30, 30, 30, 25, - 25, 30, 30, 73, 34, 73, 35, 30, 30, 69, - 75, 52, 52, 60, 74, 66, 74, 70, 53, 53, - 67, 74, 36, 30, 30, 37, 54, 54, 56, 97, - 34, 37, 35, 75, 87, 96, 60, 59, 88, 88, - - 60, 91, 95, 91, 74, 92, 92, 94, 36, 38, - 39, 25, 38, 38, 38, 40, 41, 41, 38, 38, - 38, 38, 42, 43, 41, 44, 45, 38, 38, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 42, - 38, 25, 46, 93, 47, 48, 49, 49, 90, 89, - 86, 86, 48, 58, 49, 84, 83, 82, 78, 63, - 57, 72, 71, 65, 63, 57, 98, 25, 25, 48, - 38, 38, 25, 38, 38, 38, 38, 50, 38, 38, - 38, 38, 38, 38, 38, 38, 51, 38, 38, 38, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - - 38, 38, 76, 98, 98, 60, 98, 98, 98, 98, - 98, 98, 98, 74, 98, 98, 98, 77, 98, 98, - 98, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 58, 73, 58, 58, 58, 58, 58, 98, 58, - 85, 85, 85, 74, 58, 58, 58, 85, 58, 58, - 58, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 58, 58, 24, 24, 24, 24, 27, 27, 27, - 27, 55, 98, 55, 55, 58, 58, 98, 58, 62, - 62, 62, 62, 64, 98, 64, 64, 79, 98, 79, - 79, 23, 98, 98, 98, 98, 98, 98, 98, 98, - - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98 + 133, 133, 29, 29, 29, 29, 29, 68, 33, 31, + 31, 30, 30, 30, 30, 34, 69, 64, 31, 31, + 29, 64, 33, 68, 65, 35, 66, 88, 65, 34, + 66, 70, 69, 71, 70, 70, 71, 71, 89, 35, + 36, 36, 29, 36, 36, 36, 36, 37, 38, 36, + 36, 39, 36, 36, 36, 36, 36, 36, 36, 40, + 36, 36, 36, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 36, 36, 36, 36, 87, 36, 36, + 36, 36, 36, 36, 41, 78, 42, 41, 76, 42, + 78, 70, 77, 71, 80, 79, 77, 85, 98, 70, + + 79, 94, 43, 86, 98, 43, 44, 73, 44, 45, + 46, 29, 45, 45, 45, 45, 47, 48, 45, 48, + 49, 45, 45, 45, 45, 50, 51, 48, 52, 53, + 45, 45, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 50, 45, 29, 132, 54, 29, 55, 56, + 57, 99, 57, 34, 78, 98, 30, 29, 56, 96, + 57, 97, 60, 98, 79, 100, 30, 131, 130, 61, + 101, 104, 60, 105, 77, 56, 29, 62, 77, 61, + 85, 88, 58, 108, 100, 49, 86, 62, 112, 109, + 109, 75, 89, 59, 126, 75, 112, 59, 59, 59, + + 59, 59, 59, 59, 59, 59, 59, 29, 113, 113, + 129, 99, 117, 58, 113, 117, 49, 113, 117, 128, + 119, 125, 124, 117, 59, 100, 120, 120, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 102, 101, + 76, 123, 77, 77, 77, 122, 77, 77, 77, 121, + 118, 126, 100, 100, 118, 115, 103, 127, 127, 114, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 99, 111, 110, 106, 82, 74, 93, 91, 90, 84, + 82, 116, 116, 116, 100, 74, 133, 133, 116, 133, + 133, 133, 116, 116, 116, 116, 116, 116, 116, 116, + + 116, 116, 28, 28, 28, 28, 28, 32, 32, 32, + 32, 32, 45, 45, 45, 45, 45, 63, 63, 63, + 63, 63, 67, 67, 67, 67, 67, 72, 133, 72, + 72, 72, 75, 75, 133, 75, 75, 81, 81, 81, + 81, 81, 83, 133, 83, 83, 83, 92, 133, 92, + 133, 92, 95, 133, 95, 95, 95, 107, 133, 107, + 107, 107, 27, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133 + } ; -static yyconst short int yy_chk[325] = +static yyconst short int yy_chk[399] = { 0, - 0, 0, 3, 4, 5, 5, 3, 4, 6, 6, - 52, 50, 40, 3, 4, 40, 50, 65, 52, 107, - 5, 65, 65, 104, 6, 7, 7, 7, 7, 7, + 0, 0, 1, 2, 3, 4, 5, 25, 5, 3, + 4, 1, 2, 3, 4, 5, 25, 23, 3, 4, + 6, 24, 6, 26, 23, 5, 23, 60, 24, 6, + 24, 30, 26, 30, 34, 39, 34, 39, 60, 6, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 11, 11, 21, - 22, 13, 13, 58, 11, 73, 11, 14, 14, 69, - 59, 21, 22, 59, 58, 66, 73, 69, 21, 22, - 66, 59, 11, 12, 12, 13, 21, 22, 102, 96, - 12, 14, 12, 75, 81, 95, 75, 84, 81, 81, + 7, 7, 7, 7, 7, 11, 11, 145, 12, 12, + 13, 13, 14, 14, 11, 48, 11, 12, 47, 12, + 57, 49, 47, 49, 142, 48, 47, 58, 70, 66, - 84, 88, 94, 92, 75, 88, 88, 90, 12, 15, + 57, 66, 11, 58, 70, 12, 13, 140, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 17, 17, 89, 17, 17, 17, 17, 83, 82, - 80, 79, 17, 76, 17, 74, 72, 71, 64, 62, - 57, 54, 53, 47, 45, 39, 23, 2, 1, 17, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - - 19, 19, 60, 0, 0, 60, 0, 0, 0, 0, - 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, - 0, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 77, 77, 77, 77, 77, 77, 77, 0, 77, + 15, 15, 15, 15, 17, 131, 17, 21, 17, 17, + 17, 75, 17, 17, 78, 71, 21, 22, 17, 69, + 17, 69, 21, 71, 78, 75, 22, 130, 129, 21, + 76, 79, 22, 79, 76, 17, 19, 21, 76, 22, + 85, 88, 19, 84, 76, 19, 85, 22, 94, 84, + 84, 102, 88, 19, 127, 102, 94, 19, 19, 19, + + 19, 19, 19, 19, 19, 19, 19, 20, 96, 97, + 122, 99, 104, 20, 96, 105, 20, 97, 104, 121, + 109, 117, 113, 105, 20, 99, 109, 109, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 77, 101, + 115, 112, 77, 101, 115, 111, 77, 101, 115, 110, + 108, 120, 77, 101, 107, 100, 77, 120, 120, 98, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 99, 99, 99, 99, 100, 100, 100, - 100, 101, 0, 101, 101, 103, 103, 0, 103, 105, - 105, 105, 105, 106, 0, 106, 106, 108, 0, 108, - 108, 98, 98, 98, 98, 98, 98, 98, 98, 98, - - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98 + 103, 91, 90, 83, 81, 74, 65, 62, 61, 55, + 53, 103, 103, 103, 103, 46, 27, 0, 103, 0, + 0, 0, 103, 103, 103, 103, 103, 103, 103, 103, + + 103, 103, 134, 134, 134, 134, 134, 135, 135, 135, + 135, 135, 136, 136, 136, 136, 136, 137, 137, 137, + 137, 137, 138, 138, 138, 138, 138, 139, 0, 139, + 139, 139, 141, 141, 0, 141, 141, 143, 143, 143, + 143, 143, 144, 0, 144, 144, 144, 146, 0, 146, + 0, 146, 147, 0, 147, 147, 147, 148, 0, 148, + 148, 148, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133 + } ; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; @@ -520,7 +553,7 @@ char *yytext; * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -531,7 +564,31 @@ char *yytext; * All output generated with Doxygen is not covered by this license. * */ -#line 18 "defargs.l" +/*! \file + * This scanner is used to convert a string into a list of function or + * template arguments. Each parsed argument results in a Argument struct, + * that is put into an ArgumentList in declaration order. + * Comment blocks for arguments can also be included in the string. + * The argument string does not contain new-lines (except inside any + * comment blocks). + * An Argument consists of the string fields: + * type,name,default value, and documentation + * The Argument list as a whole can be pure, constant or volatile. + * + * Examples of input strings are: + * \code + * "(int a,int b) const" + * "(const char *s="hello world",int=5) = 0" + * "<class T,class N>" + * "(char c,const char)" + * \endcode + * + * Note: It is not always possible to distinguish between the name and + * type of an argument. In case of doubt the name is added to the + * type, and the matchArgumentList in util.cpp is be used to + * further determine the correct separation. + */ +#line 43 "defargs.l" /* * includes @@ -547,28 +604,27 @@ char *yytext; #include "entry.h" #include "util.h" -#define YY_NO_UNPUT #define YY_NEVER_INTERACTIVE 1 /* ----------------------------------------------------------------- - * - * statics + * state variables */ - -static const char *inputString; -static int inputPosition; -static ArgumentList *argList; -static QCString *copyArgValue; -static QCString curArgTypeName; -static QCString curArgDefValue; -static QCString curArgName; -static QCString curArgAttrib; -static int argRoundCount; -static int argSharpCount; -static int argCurlyCount; -static int readArgContext; - - +static const char *g_inputString; +static int g_inputPosition; +static ArgumentList *g_argList; +static QCString *g_copyArgValue; +static QCString g_curArgTypeName; +static QCString g_curArgDefValue; +static QCString g_curArgName; +static QCString g_curArgDocs; +static QCString g_curArgAttrib; +static QCString g_curArgArray; +static int g_argRoundCount; +static int g_argSharpCount; +static int g_argCurlyCount; +static int g_readArgContext; +static int g_lastDocContext; +static int g_lastDocChar; /* ----------------------------------------------------------------- */ @@ -578,9 +634,9 @@ static int readArgContext; static int yyread(char *buf,int max_size) { int c=0; - while( c < max_size && inputString[inputPosition] ) + while( c < max_size && g_inputString[g_inputPosition] ) { - *buf = inputString[inputPosition++] ; + *buf = g_inputString[g_inputPosition++] ; c++; buf++; } return c; @@ -606,6 +662,10 @@ static int yyread(char *buf,int max_size) #define FuncQual 10 +#define ReadDocBlock 11 + +#define ReadDocLine 12 + /* Macros after this point can all be overridden by user definitions in * section 1. @@ -756,7 +816,7 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 91 "defargs.l" +#line 117 "defargs.l" @@ -806,14 +866,14 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 99 ) + if ( yy_current_state >= 134 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *yy_state_ptr++ = yy_current_state; ++yy_cp; } - while ( yy_base[yy_current_state] != 292 ); + while ( yy_base[yy_current_state] != 363 ); yy_find_action: yy_current_state = *--yy_state_ptr; @@ -864,240 +924,261 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 93 "defargs.l" +#line 119 "defargs.l" { BEGIN(ReadFuncArgType); } YY_BREAK case 2: YY_RULE_SETUP -#line 95 "defargs.l" +#line 121 "defargs.l" { - curArgTypeName+=" "; + g_curArgTypeName+=" "; } YY_BREAK case 3: YY_RULE_SETUP -#line 98 "defargs.l" +#line 124 "defargs.l" { - if (curArgTypeName.stripWhiteSpace().isEmpty()) - curArgAttrib=yytext; - else - curArgTypeName+=yytext; + if (g_curArgTypeName.stripWhiteSpace().isEmpty()) + { + g_curArgAttrib=yytext; // for M$-IDL + } + else // array type + { + g_curArgArray+=yytext; + } } YY_BREAK case 4: YY_RULE_SETUP -#line 104 "defargs.l" -{ curArgDefValue+=yytext; } +#line 134 "defargs.l" +{ g_curArgDefValue+=yytext; } YY_BREAK case 5: YY_RULE_SETUP -#line 105 "defargs.l" -{ curArgDefValue+=yytext; } +#line 135 "defargs.l" +{ g_curArgDefValue+=yytext; } YY_BREAK case 6: YY_RULE_SETUP -#line 106 "defargs.l" -{ curArgDefValue+=yytext; } +#line 136 "defargs.l" +{ g_curArgDefValue+=yytext; } YY_BREAK case 7: YY_RULE_SETUP -#line 107 "defargs.l" +#line 137 "defargs.l" { - curArgDefValue+=*yytext; + g_curArgDefValue+=*yytext; BEGIN( CopyArgString ); } YY_BREAK case 8: YY_RULE_SETUP -#line 111 "defargs.l" +#line 141 "defargs.l" { // function pointer as argument - curArgTypeName+=yytext; - //curArgTypeName=curArgTypeName.simplifyWhiteSpace(); + g_curArgTypeName+=yytext; + //g_curArgTypeName=g_curArgTypeName.simplifyWhiteSpace(); BEGIN( ReadFuncArgPtr ); } YY_BREAK case 9: YY_RULE_SETUP -#line 117 "defargs.l" +#line 147 "defargs.l" { - curArgName=yytext; + g_curArgName=yytext; } YY_BREAK case 10: YY_RULE_SETUP -#line 120 "defargs.l" +#line 150 "defargs.l" { - curArgTypeName+=yytext; - //curArgTypeName=curArgTypeName.simplifyWhiteSpace(); - readArgContext = ReadFuncArgType; - copyArgValue=&curArgTypeName; - argRoundCount=0; + g_curArgTypeName+=yytext; + //g_curArgTypeName=g_curArgTypeName.simplifyWhiteSpace(); + g_readArgContext = ReadFuncArgType; + g_copyArgValue=&g_curArgTypeName; + g_argRoundCount=0; BEGIN( CopyArgRound2 ); } YY_BREAK case 11: YY_RULE_SETUP -#line 128 "defargs.l" +#line 158 "defargs.l" { // redundant braces detected / remove them - int i=curArgTypeName.findRev('('),l=curArgTypeName.length(); + int i=g_curArgTypeName.findRev('('),l=g_curArgTypeName.length(); if (i!=-1) - curArgTypeName=curArgTypeName.left(i)+ - curArgTypeName.right(l-i-1); - curArgTypeName+=curArgName; + g_curArgTypeName=g_curArgTypeName.left(i)+ + g_curArgTypeName.right(l-i-1); + g_curArgTypeName+=g_curArgName; BEGIN( ReadFuncArgType ); } YY_BREAK case 12: YY_RULE_SETUP -#line 136 "defargs.l" +#line 166 "defargs.l" { if (YY_START==ReadFuncArgType) { - curArgTypeName+=*yytext; - copyArgValue=&curArgTypeName; + g_curArgTypeName+=*yytext; + g_copyArgValue=&g_curArgTypeName; } else // YY_START==ReadFuncArgDef { - curArgDefValue+=*yytext; - copyArgValue=&curArgDefValue; + g_curArgDefValue+=*yytext; + g_copyArgValue=&g_curArgDefValue; } - readArgContext = YY_START; + g_readArgContext = YY_START; if (*yytext=='(') { - argRoundCount=0; + g_argRoundCount=0; BEGIN( CopyArgRound ); } else if (*yytext=='{') { - argCurlyCount=0; + g_argCurlyCount=0; BEGIN( CopyArgCurly ); } else // yytext=='<' { - argSharpCount=0; + g_argSharpCount=0; BEGIN( CopyArgSharp ); } } YY_BREAK case 13: YY_RULE_SETUP -#line 164 "defargs.l" +#line 194 "defargs.l" { - argRoundCount++; - *copyArgValue += *yytext; + g_argRoundCount++; + *g_copyArgValue += *yytext; } YY_BREAK case 14: YY_RULE_SETUP -#line 168 "defargs.l" +#line 198 "defargs.l" { - *copyArgValue += *yytext; - if (argRoundCount>0) + *g_copyArgValue += *yytext; + if (g_argRoundCount>0) { - argRoundCount--; + g_argRoundCount--; } else { if (YY_START==CopyArgRound2) { - *copyArgValue+=" "+curArgName; + *g_copyArgValue+=" "+g_curArgName; } - BEGIN( readArgContext ); + BEGIN( g_readArgContext ); } } YY_BREAK case 15: YY_RULE_SETUP -#line 183 "defargs.l" +#line 213 "defargs.l" { - argSharpCount++; - *copyArgValue += *yytext; + g_argSharpCount++; + *g_copyArgValue += *yytext; } YY_BREAK case 16: YY_RULE_SETUP -#line 187 "defargs.l" +#line 217 "defargs.l" { - *copyArgValue += *yytext; - if (argSharpCount>0) argSharpCount--; - else BEGIN( readArgContext ); + *g_copyArgValue += *yytext; + if (g_argSharpCount>0) g_argSharpCount--; + else BEGIN( g_readArgContext ); } YY_BREAK case 17: YY_RULE_SETUP -#line 192 "defargs.l" +#line 222 "defargs.l" { - argCurlyCount++; - *copyArgValue += *yytext; + g_argCurlyCount++; + *g_copyArgValue += *yytext; } YY_BREAK case 18: YY_RULE_SETUP -#line 196 "defargs.l" +#line 226 "defargs.l" { - *copyArgValue += *yytext; - if (argCurlyCount>0) argCurlyCount--; - else BEGIN( readArgContext ); + *g_copyArgValue += *yytext; + if (g_argCurlyCount>0) g_argCurlyCount--; + else BEGIN( g_readArgContext ); } YY_BREAK case 19: YY_RULE_SETUP -#line 201 "defargs.l" +#line 231 "defargs.l" { - curArgDefValue+=yytext; + g_curArgDefValue+=yytext; } YY_BREAK case 20: YY_RULE_SETUP -#line 204 "defargs.l" +#line 234 "defargs.l" { - curArgDefValue+=*yytext; + g_curArgDefValue+=*yytext; BEGIN( ReadFuncArgDef ); } YY_BREAK case 21: YY_RULE_SETUP -#line 208 "defargs.l" +#line 238 "defargs.l" { BEGIN( ReadFuncArgDef ); } YY_BREAK case 22: YY_RULE_SETUP -#line 211 "defargs.l" +#line 241 "defargs.l" +{ + g_lastDocContext=YY_START; + g_lastDocChar=*yytext; + QCString text=yytext; + if (text.find("//")!=-1) + BEGIN( ReadDocLine ); + else + BEGIN( ReadDocBlock ); + } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 250 "defargs.l" { - curArgTypeName=removeRedundantWhiteSpace( - curArgTypeName.simplifyWhiteSpace()); - curArgDefValue=curArgDefValue.stripWhiteSpace(); - int l=curArgTypeName.length(); + g_curArgTypeName=removeRedundantWhiteSpace( + g_curArgTypeName.simplifyWhiteSpace()); + g_curArgDefValue=g_curArgDefValue.stripWhiteSpace(); + int l=g_curArgTypeName.length(); if (l>0) { int i=l-1; while (i>=0 && ( - isspace(curArgTypeName.at(i)) || - isId(curArgTypeName.at(i)) + isspace(g_curArgTypeName.at(i)) || + isId(g_curArgTypeName.at(i)) ) ) i--; Argument *a = new Argument; - a->attrib = curArgAttrib.copy(); - if (i>=0 && curArgTypeName.at(i)!=':') + a->attrib = g_curArgAttrib.copy(); + if (i>=0 && g_curArgTypeName.at(i)!=':') { // type contains a name - a->type = curArgTypeName.left(i+1).stripWhiteSpace(); - a->name = curArgTypeName.right(curArgTypeName.length()-i-1); + a->type = g_curArgTypeName.left(i+1).stripWhiteSpace(); + a->name = g_curArgTypeName.right(g_curArgTypeName.length()-i-1); } else // assume only the type was specified, try to determine name later { - a->type = curArgTypeName.stripWhiteSpace(); + a->type = g_curArgTypeName.stripWhiteSpace(); } - a->defval = curArgDefValue.copy(); - //printf("----> Adding argument `%s' `%s' `%s'\n",a->type.data(),a->name.data(),a->defval.data()); - argList->append(a); + a->array = g_curArgArray.copy(); + a->defval = g_curArgDefValue.copy(); + a->docs = g_curArgDocs.stripWhiteSpace(); + //printf("Argument %s %s adding docs=`%s'\n",a->type.data(),a->name.data(),a->docs.data()); + g_argList->append(a); } - curArgAttrib.resize(0); - curArgTypeName.resize(0); - curArgDefValue.resize(0); + g_curArgAttrib.resize(0); + g_curArgTypeName.resize(0); + g_curArgDefValue.resize(0); + g_curArgArray.resize(0); + g_curArgDocs.resize(0); if (*yytext==')') { BEGIN(FuncQual); @@ -1109,78 +1190,136 @@ YY_RULE_SETUP } } YY_BREAK -case 23: +case 24: YY_RULE_SETUP -#line 253 "defargs.l" +#line 296 "defargs.l" { QCString name=yytext; //resolveDefines(yytext); //printf("resolveName `%s'->`%s'\n",yytext,name.data()); - curArgTypeName+=name; + g_curArgTypeName+=name; } YY_BREAK -case 24: +case 25: YY_RULE_SETUP -#line 258 "defargs.l" +#line 301 "defargs.l" { - curArgTypeName+=*yytext; + g_curArgTypeName+=*yytext; } YY_BREAK -case 25: +case 26: YY_RULE_SETUP -#line 261 "defargs.l" +#line 304 "defargs.l" { - curArgDefValue+=*yytext; + g_curArgDefValue+=*yytext; } YY_BREAK -case 26: +case 27: YY_RULE_SETUP -#line 264 "defargs.l" +#line 307 "defargs.l" { QCString name=yytext; //resolveDefines(yytext); - *copyArgValue+=name; + *g_copyArgValue+=name; } YY_BREAK -case 27: +case 28: YY_RULE_SETUP -#line 268 "defargs.l" +#line 311 "defargs.l" { - *copyArgValue += *yytext; + *g_copyArgValue += *yytext; } YY_BREAK -case 28: +case 29: YY_RULE_SETUP -#line 271 "defargs.l" +#line 314 "defargs.l" { - argList->constSpecifier=TRUE; + g_argList->constSpecifier=TRUE; } YY_BREAK -case 29: +case 30: YY_RULE_SETUP -#line 274 "defargs.l" +#line 317 "defargs.l" { - argList->volatileSpecifier=TRUE; + g_argList->volatileSpecifier=TRUE; } YY_BREAK -case 30: +case 31: YY_RULE_SETUP -#line 277 "defargs.l" +#line 320 "defargs.l" { - argList->pureSpecifier=TRUE; + g_argList->pureSpecifier=TRUE; } YY_BREAK -case 31: +case 32: +YY_RULE_SETUP +#line 323 "defargs.l" +{ + g_curArgDocs+=yytext; + } + YY_BREAK +case 33: +YY_RULE_SETUP +#line 326 "defargs.l" +{ + g_curArgDocs+=yytext; + } + YY_BREAK +case 34: +YY_RULE_SETUP +#line 329 "defargs.l" +{ + if (g_lastDocChar!=0) + unput(g_lastDocChar); + BEGIN(g_lastDocContext); + } + YY_BREAK +case 35: +YY_RULE_SETUP +#line 334 "defargs.l" +{ + if (g_lastDocChar!=0) + unput(g_lastDocChar); + BEGIN(g_lastDocContext); + } + YY_BREAK +case 36: +YY_RULE_SETUP +#line 339 "defargs.l" +{ + g_curArgDocs+=*yytext; + } + YY_BREAK +case 37: +YY_RULE_SETUP +#line 342 "defargs.l" +{ + g_curArgDocs+=*yytext; + } + YY_BREAK +case 38: +YY_RULE_SETUP +#line 345 "defargs.l" +{ + g_lastDocContext=YY_START; + g_lastDocChar=0; + if (yytext[1]=='/') + BEGIN( ReadDocLine ); + else + BEGIN( ReadDocBlock ); + } + YY_BREAK +case 39: YY_RULE_SETUP -#line 280 "defargs.l" +#line 353 "defargs.l" YY_BREAK -case 32: +case 40: YY_RULE_SETUP -#line 281 "defargs.l" +#line 354 "defargs.l" YY_BREAK -case 33: +case 41: YY_RULE_SETUP -#line 283 "defargs.l" +#line 356 "defargs.l" ECHO; YY_BREAK case YY_STATE_EOF(INITIAL): @@ -1194,6 +1333,8 @@ ECHO; case YY_STATE_EOF(ReadFuncArgDef): case YY_STATE_EOF(ReadFuncArgPtr): case YY_STATE_EOF(FuncQual): + case YY_STATE_EOF(ReadDocBlock): + case YY_STATE_EOF(ReadDocLine): yyterminate(); case YY_END_OF_BUFFER: @@ -1481,7 +1622,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 99 ) + if ( yy_current_state >= 134 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1511,11 +1652,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 99 ) + if ( yy_current_state >= 134 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 98); + yy_is_jam = (yy_current_state == 133); if ( ! yy_is_jam ) *yy_state_ptr++ = yy_current_state; @@ -2072,33 +2213,33 @@ int main() return 0; } #endif -#line 283 "defargs.l" +#line 356 "defargs.l" /* ---------------------------------------------------------------------------- */ -// converts an argument string into a list of Arguments. -// an Argument consists of a type, an optional name, and an optional -// default initializer. - +/*! Converts an argument string into an ArgumentList. + * \param argsString the list of Arguments. + * \param al a reference to resulting argument list pointer. + */ + void stringToArgumentList(const char *argsString,ArgumentList* &al) { - //if (al==0) al=new ArgumentList; // allocate new list if needed. if (al==0) return; - if (!argsString) return; - inputString = argsString; - inputPosition = 0; - curArgTypeName.resize(0); - curArgDefValue.resize(0); - curArgName.resize(0); - argList = al; + if (argsString==0) return; + g_inputString = argsString; + //printf("stringToArgumentList(%s)\n",argsString); + g_inputPosition = 0; + g_curArgTypeName.resize(0); + g_curArgDefValue.resize(0); + g_curArgName.resize(0); + g_argList = al; defargsYYrestart( defargsYYin ); BEGIN( Start ); defargsYYlex(); } extern "C" { // some bogus code to keep the compiler happy -// int defargsYYwrap() { return 1 ; } void defargsYYdummy() { yy_flex_realloc(0,0); } } diff --git a/src/defargs.h b/src/defargs.h index 70e901c..ca34550 100644 --- a/src/defargs.h +++ b/src/defargs.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/defargs.l b/src/defargs.l index 2a1249a..2744869 100644 --- a/src/defargs.l +++ b/src/defargs.l @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -14,6 +14,31 @@ * */ +/*! \file + * This scanner is used to convert a string into a list of function or + * template arguments. Each parsed argument results in a Argument struct, + * that is put into an ArgumentList in declaration order. + * Comment blocks for arguments can also be included in the string. + * The argument string does not contain new-lines (except inside any + * comment blocks). + * An Argument consists of the string fields: + * type,name,default value, and documentation + * The Argument list as a whole can be pure, constant or volatile. + * + * Examples of input strings are: + * \code + * "(int a,int b) const" + * "(const char *s="hello world",int=5) = 0" + * "<class T,class N>" + * "(char c,const char)" + * \endcode + * + * Note: It is not always possible to distinguish between the name and + * type of an argument. In case of doubt the name is added to the + * type, and the matchArgumentList in util.cpp is be used to + * further determine the correct separation. + */ + %{ /* @@ -30,28 +55,27 @@ #include "entry.h" #include "util.h" -#define YY_NO_UNPUT #define YY_NEVER_INTERACTIVE 1 /* ----------------------------------------------------------------- - * - * statics + * state variables */ - -static const char *inputString; -static int inputPosition; -static ArgumentList *argList; -static QCString *copyArgValue; -static QCString curArgTypeName; -static QCString curArgDefValue; -static QCString curArgName; -static QCString curArgAttrib; -static int argRoundCount; -static int argSharpCount; -static int argCurlyCount; -static int readArgContext; - - +static const char *g_inputString; +static int g_inputPosition; +static ArgumentList *g_argList; +static QCString *g_copyArgValue; +static QCString g_curArgTypeName; +static QCString g_curArgDefValue; +static QCString g_curArgName; +static QCString g_curArgDocs; +static QCString g_curArgAttrib; +static QCString g_curArgArray; +static int g_argRoundCount; +static int g_argSharpCount; +static int g_argCurlyCount; +static int g_readArgContext; +static int g_lastDocContext; +static int g_lastDocChar; /* ----------------------------------------------------------------- */ @@ -61,9 +85,9 @@ static int readArgContext; static int yyread(char *buf,int max_size) { int c=0; - while( c < max_size && inputString[inputPosition] ) + while( c < max_size && g_inputString[g_inputPosition] ) { - *buf = inputString[inputPosition++] ; + *buf = g_inputString[g_inputPosition++] ; c++; buf++; } return c; @@ -86,6 +110,8 @@ ID [a-z_A-Z][a-z_A-Z0-9]* %x ReadFuncArgDef %x ReadFuncArgPtr %x FuncQual +%x ReadDocBlock +%x ReadDocLine %% @@ -93,153 +119,170 @@ ID [a-z_A-Z][a-z_A-Z0-9]* <Start>[<(] { BEGIN(ReadFuncArgType); } <ReadFuncArgType>{B}* { - curArgTypeName+=" "; + g_curArgTypeName+=" "; } <ReadFuncArgType>"["[^\]]*"]" { - if (curArgTypeName.stripWhiteSpace().isEmpty()) - curArgAttrib=yytext; - else - curArgTypeName+=yytext; + if (g_curArgTypeName.stripWhiteSpace().isEmpty()) + { + g_curArgAttrib=yytext; // for M$-IDL + } + else // array type + { + g_curArgArray+=yytext; + } } -<ReadFuncArgDef>"'"\\[0-7]{1,3}"'" { curArgDefValue+=yytext; } -<ReadFuncArgDef>"'"\\."'" { curArgDefValue+=yytext; } -<ReadFuncArgDef>"'"."'" { curArgDefValue+=yytext; } +<ReadFuncArgDef>"'"\\[0-7]{1,3}"'" { g_curArgDefValue+=yytext; } +<ReadFuncArgDef>"'"\\."'" { g_curArgDefValue+=yytext; } +<ReadFuncArgDef>"'"."'" { g_curArgDefValue+=yytext; } <ReadFuncArgDef>\" { - curArgDefValue+=*yytext; + g_curArgDefValue+=*yytext; BEGIN( CopyArgString ); } <ReadFuncArgType>"("([^:)]+{B}*"::")*{B}*[&*]+{B}*/{ID} { // function pointer as argument - curArgTypeName+=yytext; - //curArgTypeName=curArgTypeName.simplifyWhiteSpace(); + g_curArgTypeName+=yytext; + //g_curArgTypeName=g_curArgTypeName.simplifyWhiteSpace(); BEGIN( ReadFuncArgPtr ); } <ReadFuncArgPtr>{ID} { - curArgName=yytext; + g_curArgName=yytext; } <ReadFuncArgPtr>")"{B}*"(" { - curArgTypeName+=yytext; - //curArgTypeName=curArgTypeName.simplifyWhiteSpace(); - readArgContext = ReadFuncArgType; - copyArgValue=&curArgTypeName; - argRoundCount=0; + g_curArgTypeName+=yytext; + //g_curArgTypeName=g_curArgTypeName.simplifyWhiteSpace(); + g_readArgContext = ReadFuncArgType; + g_copyArgValue=&g_curArgTypeName; + g_argRoundCount=0; BEGIN( CopyArgRound2 ); } <ReadFuncArgPtr>")" { // redundant braces detected / remove them - int i=curArgTypeName.findRev('('),l=curArgTypeName.length(); + int i=g_curArgTypeName.findRev('('),l=g_curArgTypeName.length(); if (i!=-1) - curArgTypeName=curArgTypeName.left(i)+ - curArgTypeName.right(l-i-1); - curArgTypeName+=curArgName; + g_curArgTypeName=g_curArgTypeName.left(i)+ + g_curArgTypeName.right(l-i-1); + g_curArgTypeName+=g_curArgName; BEGIN( ReadFuncArgType ); } <ReadFuncArgType,ReadFuncArgDef>[({<] { if (YY_START==ReadFuncArgType) { - curArgTypeName+=*yytext; - copyArgValue=&curArgTypeName; + g_curArgTypeName+=*yytext; + g_copyArgValue=&g_curArgTypeName; } else // YY_START==ReadFuncArgDef { - curArgDefValue+=*yytext; - copyArgValue=&curArgDefValue; + g_curArgDefValue+=*yytext; + g_copyArgValue=&g_curArgDefValue; } - readArgContext = YY_START; + g_readArgContext = YY_START; if (*yytext=='(') { - argRoundCount=0; + g_argRoundCount=0; BEGIN( CopyArgRound ); } else if (*yytext=='{') { - argCurlyCount=0; + g_argCurlyCount=0; BEGIN( CopyArgCurly ); } else // yytext=='<' { - argSharpCount=0; + g_argSharpCount=0; BEGIN( CopyArgSharp ); } } <CopyArgRound,CopyArgRound2>"(" { - argRoundCount++; - *copyArgValue += *yytext; + g_argRoundCount++; + *g_copyArgValue += *yytext; } <CopyArgRound,CopyArgRound2>")" { - *copyArgValue += *yytext; - if (argRoundCount>0) + *g_copyArgValue += *yytext; + if (g_argRoundCount>0) { - argRoundCount--; + g_argRoundCount--; } else { if (YY_START==CopyArgRound2) { - *copyArgValue+=" "+curArgName; + *g_copyArgValue+=" "+g_curArgName; } - BEGIN( readArgContext ); + BEGIN( g_readArgContext ); } } <CopyArgSharp>"<" { - argSharpCount++; - *copyArgValue += *yytext; + g_argSharpCount++; + *g_copyArgValue += *yytext; } <CopyArgSharp>">" { - *copyArgValue += *yytext; - if (argSharpCount>0) argSharpCount--; - else BEGIN( readArgContext ); + *g_copyArgValue += *yytext; + if (g_argSharpCount>0) g_argSharpCount--; + else BEGIN( g_readArgContext ); } <CopyArgCurly>"{" { - argCurlyCount++; - *copyArgValue += *yytext; + g_argCurlyCount++; + *g_copyArgValue += *yytext; } <CopyArgSharp>"}" { - *copyArgValue += *yytext; - if (argCurlyCount>0) argCurlyCount--; - else BEGIN( readArgContext ); + *g_copyArgValue += *yytext; + if (g_argCurlyCount>0) g_argCurlyCount--; + else BEGIN( g_readArgContext ); } <CopyArgString>\\. { - curArgDefValue+=yytext; + g_curArgDefValue+=yytext; } <CopyArgString>\" { - curArgDefValue+=*yytext; + g_curArgDefValue+=*yytext; BEGIN( ReadFuncArgDef ); } <ReadFuncArgType>"=" { BEGIN( ReadFuncArgDef ); } +<ReadFuncArgType,ReadFuncArgDef>[,)>]{B}*("/*"[*!]|"//"[/!])"<" { + g_lastDocContext=YY_START; + g_lastDocChar=*yytext; + QCString text=yytext; + if (text.find("//")!=-1) + BEGIN( ReadDocLine ); + else + BEGIN( ReadDocBlock ); + } <ReadFuncArgType,ReadFuncArgDef>[,)>] { - curArgTypeName=removeRedundantWhiteSpace( - curArgTypeName.simplifyWhiteSpace()); - curArgDefValue=curArgDefValue.stripWhiteSpace(); - int l=curArgTypeName.length(); + g_curArgTypeName=removeRedundantWhiteSpace( + g_curArgTypeName.simplifyWhiteSpace()); + g_curArgDefValue=g_curArgDefValue.stripWhiteSpace(); + int l=g_curArgTypeName.length(); if (l>0) { int i=l-1; while (i>=0 && ( - isspace(curArgTypeName.at(i)) || - isId(curArgTypeName.at(i)) + isspace(g_curArgTypeName.at(i)) || + isId(g_curArgTypeName.at(i)) ) ) i--; Argument *a = new Argument; - a->attrib = curArgAttrib.copy(); - if (i>=0 && curArgTypeName.at(i)!=':') + a->attrib = g_curArgAttrib.copy(); + if (i>=0 && g_curArgTypeName.at(i)!=':') { // type contains a name - a->type = curArgTypeName.left(i+1).stripWhiteSpace(); - a->name = curArgTypeName.right(curArgTypeName.length()-i-1); + a->type = g_curArgTypeName.left(i+1).stripWhiteSpace(); + a->name = g_curArgTypeName.right(g_curArgTypeName.length()-i-1); } else // assume only the type was specified, try to determine name later { - a->type = curArgTypeName.stripWhiteSpace(); + a->type = g_curArgTypeName.stripWhiteSpace(); } - a->defval = curArgDefValue.copy(); - //printf("----> Adding argument `%s' `%s' `%s'\n",a->type.data(),a->name.data(),a->defval.data()); - argList->append(a); + a->array = g_curArgArray.copy(); + a->defval = g_curArgDefValue.copy(); + a->docs = g_curArgDocs.stripWhiteSpace(); + //printf("Argument %s %s adding docs=`%s'\n",a->type.data(),a->name.data(),a->docs.data()); + g_argList->append(a); } - curArgAttrib.resize(0); - curArgTypeName.resize(0); - curArgDefValue.resize(0); + g_curArgAttrib.resize(0); + g_curArgTypeName.resize(0); + g_curArgDefValue.resize(0); + g_curArgArray.resize(0); + g_curArgDocs.resize(0); if (*yytext==')') { BEGIN(FuncQual); @@ -253,30 +296,60 @@ ID [a-z_A-Z][a-z_A-Z0-9]* <ReadFuncArgType,ReadFuncArgPtr>{ID} { QCString name=yytext; //resolveDefines(yytext); //printf("resolveName `%s'->`%s'\n",yytext,name.data()); - curArgTypeName+=name; + g_curArgTypeName+=name; } <ReadFuncArgType,ReadFuncArgPtr>. { - curArgTypeName+=*yytext; + g_curArgTypeName+=*yytext; } <ReadFuncArgDef,CopyArgString>. { - curArgDefValue+=*yytext; + g_curArgDefValue+=*yytext; } <CopyArgRound,CopyArgRound2,CopyArgSharp,CopyArgCurly>{ID} { QCString name=yytext; //resolveDefines(yytext); - *copyArgValue+=name; + *g_copyArgValue+=name; } <CopyArgRound,CopyArgRound2,CopyArgSharp,CopyArgCurly>. { - *copyArgValue += *yytext; + *g_copyArgValue += *yytext; } <FuncQual>"const" { - argList->constSpecifier=TRUE; + g_argList->constSpecifier=TRUE; } <FuncQual>"volatile" { - argList->volatileSpecifier=TRUE; + g_argList->volatileSpecifier=TRUE; } <FuncQual>"="{B}*"0" { - argList->pureSpecifier=TRUE; + g_argList->pureSpecifier=TRUE; + } +<ReadDocBlock>[^\*\n]+ { + g_curArgDocs+=yytext; + } +<ReadDocLine>[^\n]+ { + g_curArgDocs+=yytext; + } +<ReadDocBlock>"*/" { + if (g_lastDocChar!=0) + unput(g_lastDocChar); + BEGIN(g_lastDocContext); } +<ReadDocLine>\n { + if (g_lastDocChar!=0) + unput(g_lastDocChar); + BEGIN(g_lastDocContext); + } +<ReadDocBlock>\n { + g_curArgDocs+=*yytext; + } +<ReadDocBlock>. { + g_curArgDocs+=*yytext; + } +<*>("/*"[*!]|"//"[/!])("<"?) { + g_lastDocContext=YY_START; + g_lastDocChar=0; + if (yytext[1]=='/') + BEGIN( ReadDocLine ); + else + BEGIN( ReadDocBlock ); + } <*>\n <*>. @@ -285,27 +358,27 @@ ID [a-z_A-Z][a-z_A-Z0-9]* /* ---------------------------------------------------------------------------- */ -// converts an argument string into a list of Arguments. -// an Argument consists of a type, an optional name, and an optional -// default initializer. - +/*! Converts an argument string into an ArgumentList. + * \param argsString the list of Arguments. + * \param al a reference to resulting argument list pointer. + */ + void stringToArgumentList(const char *argsString,ArgumentList* &al) { - //if (al==0) al=new ArgumentList; // allocate new list if needed. if (al==0) return; - if (!argsString) return; - inputString = argsString; - inputPosition = 0; - curArgTypeName.resize(0); - curArgDefValue.resize(0); - curArgName.resize(0); - argList = al; + if (argsString==0) return; + g_inputString = argsString; + //printf("stringToArgumentList(%s)\n",argsString); + g_inputPosition = 0; + g_curArgTypeName.resize(0); + g_curArgDefValue.resize(0); + g_curArgName.resize(0); + g_argList = al; defargsYYrestart( defargsYYin ); BEGIN( Start ); defargsYYlex(); } extern "C" { // some bogus code to keep the compiler happy -// int defargsYYwrap() { return 1 ; } void defargsYYdummy() { yy_flex_realloc(0,0); } } diff --git a/src/define.cpp b/src/define.cpp index 343ac00..eaf424e 100644 --- a/src/define.cpp +++ b/src/define.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/define.h b/src/define.h index 8577b55..8778a54 100644 --- a/src/define.h +++ b/src/define.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/definition.cpp b/src/definition.cpp index 0c96b44..8928694 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -43,11 +43,13 @@ QCString Definition::nameToFile(const char *name) { switch(c) { - case ':': result+="_"; break; + case ':': result+="_c_"; break; case '<': result+="_lt"; break; case '>': result+="_gt"; break; case '*': result+="_ast"; break; case '&': result+="_amp"; break; + case '|': result+="_p_"; break; + case ',': result+="_x_"; break; case ' ': break; default: if (Config::caseSensitiveNames) @@ -161,17 +163,20 @@ static bool readCodeFragment(const char *fileName, /*! Write a reference to the source code defining this definition */ void Definition::writeSourceRef(OutputList &ol,const char *scopeName) { + ol.pushGeneratorState(); //printf("Definition::writeSourceRef %d %p\n",bodyLine,bodyDef); if (Config::sourceBrowseFlag && startBodyLine!=-1 && bodyDef) { + //ol.disable(OutputGenerator::RTF); ol.newParagraph(); + //ol.enableAll(); QCString refText = theTranslator->trDefinedAtLineInSourceFile(); int lineMarkerPos = refText.find("@0"); int fileMarkerPos = refText.find("@1"); if (lineMarkerPos!=-1 && fileMarkerPos!=-1) // should always pass this. { - QString lineStr,anchorStr; + QCString lineStr,anchorStr; lineStr.sprintf("%d",startBodyLine); anchorStr.sprintf("l%05d",startBodyLine); if (lineMarkerPos<fileMarkerPos) // line marker before file marker @@ -243,6 +248,10 @@ void Definition::writeSourceRef(OutputList &ol,const char *scopeName) { err("Error: translation error: invalid markers in trDefinedInSourceFile()\n"); } + + ol.disableAllBut(OutputGenerator::RTF); + ol.newParagraph(); + ol.enableAll(); } if (Config::inlineSourceFlag && startBodyLine!=-1 && endBodyLine>=startBodyLine && bodyDef) @@ -255,6 +264,7 @@ void Definition::writeSourceRef(OutputList &ol,const char *scopeName) actualStart,actualEnd,codeFragment) ) { + initParseCodeContext(); //printf("Read:\n`%s'\n\n",codeFragment.data()); ol.startCodeFragment(); parseCode(ol,scopeName,codeFragment,FALSE,0, @@ -262,6 +272,7 @@ void Definition::writeSourceRef(OutputList &ol,const char *scopeName) ol.endCodeFragment(); } } + ol.popGeneratorState(); } bool Definition::hasDocumentation() diff --git a/src/definition.h b/src/definition.h index 03c422a..9eaf438 100644 --- a/src/definition.h +++ b/src/definition.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -33,17 +33,17 @@ class Definition /*! destroys the definition */ virtual ~Definition(); /*! returns the name of the definition */ - QCString name() const { return n; } + const QCString& name() const { return n; } /*! returns the base name of the output file that contains this * definition. */ virtual QCString getOutputFileBase() const = 0; /*! Returns the name of the source listing of this file. */ - QCString sourceName() const { return getOutputFileBase()+"-source"; } + const QCString sourceName() const { return getOutputFileBase()+"-source"; } /*! returns the detailed description of this definition */ - QCString documentation() const { return doc; } + const QCString& documentation() const { return doc; } /*! returns the brief description of this definition */ - QCString briefDescription() const { return brief; } + const QCString& briefDescription() const { return brief; } /*! sets a new \a name for the definition */ void setName(const char *name) { n=name; } /*! sets the documentation of this definition to \a d. */ diff --git a/src/diagram.cpp b/src/diagram.cpp index af9650a..cb1efdb 100644 --- a/src/diagram.cpp +++ b/src/diagram.cpp @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -166,7 +166,7 @@ static void writeMapArea(QTextStream &t,ClassDef *cd,int x,int y,int w,int h) if ((dest=tagDestinationDict[ref])) t << *dest << "/"; } t << cd->getOutputFileBase() << ".html\" "; - t << "ALT=\"" << cd->name(); + t << "alt=\"" << cd->name(); t << "\" shape=\"rect\" coords=\"" << x << "," << y << ","; t << (x+w) << "," << (y+h) << "\">" << endl; } @@ -230,10 +230,11 @@ void DiagramItem::addChild(DiagramItem *di) void DiagramRow::insertClass(DiagramItem *parent,ClassDef *cd,bool doBases, Protection prot,Specifier virt,const char *ts) { - if (cd->visited) return; // error in the class diagram + //if (cd->visited) return; // the visit check does not work in case of + // multiple inheritance of the same class! DiagramItem *di=new DiagramItem(parent, diagram->at(level)->count(), cd,prot,virt,ts); - cd->visited=TRUE; + //cd->visited=TRUE; if (parent) parent->addChild(di); di->move(count()*gridWidth,level*gridHeight); append(di); @@ -244,7 +245,7 @@ void DiagramRow::insertClass(DiagramItem *parent,ClassDef *cd,bool doBases, while (bcd) { ClassDef *ccd=bcd->classDef; - if (ccd && ccd->isVisibleInHierarchy() && !ccd->visited) count++; + if (ccd && ccd->isVisibleInHierarchy() /*&& !ccd->visited*/) count++; bcd=bcl->next(); } if (count>0 && (prot!=Private || !doBases)) @@ -264,7 +265,7 @@ void DiagramRow::insertClass(DiagramItem *parent,ClassDef *cd,bool doBases, while (bcd) { ClassDef *ccd=bcd->classDef; - if (ccd && ccd->isVisibleInHierarchy() && !ccd->visited) + if (ccd && ccd->isVisibleInHierarchy() /*&& !ccd->visited*/) { row->insertClass(di,ccd,doBases,bcd->prot, doBases?bcd->virt:Normal, @@ -969,8 +970,8 @@ void ClassDiagram::writeFigure(QTextStream &output,const char *path, realWidth=pageWidth; } - output << "}\n" - "\\begin{figure}[H]\n" + //output << "}\n"; + output << ":\\begin{figure}[H]\n" "\\begin{center}\n" "\\leavevmode\n"; output << "\\setlength{\\epsfysize}{" << realHeight << "cm}\n"; @@ -1251,6 +1252,6 @@ void ClassDiagram::writeImageMap(QTextStream &t,const char *path, image.save((QCString)path+"/"+fileName+".gif"); - t << "</MAP></P>" << endl; + t << "</map></p>" << endl; } diff --git a/src/diagram.h b/src/diagram.h index 792aa8f..f7b152a 100644 --- a/src/diagram.h +++ b/src/diagram.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/dot.cpp b/src/dot.cpp new file mode 100644 index 0000000..56488bc --- /dev/null +++ b/src/dot.cpp @@ -0,0 +1,967 @@ +/***************************************************************************** + * + * $Id$ + * + * + * Copyright (C) 1997-2000 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * All output generated with Doxygen is not covered by this license. + * + */ + +#include <stdlib.h> + +#include "dot.h" +#include "doxygen.h" +#include "message.h" + +#include <qdir.h> +#include <qfile.h> +#include <qtextstream.h> + +//-------------------------------------------------------------------- + +const int maxImageWidth=1024; +const int maxImageHeight=1024; + + +/*! mapping from protection levels to color names */ +static char *edgeColorMap[] = +{ + "midnightblue", // Public + "darkgreen", // Protected + "firebrick4", // Private + "darkorchid3", // "use" relation + "grey" // Undocumented +}; + +static char *edgeStyleMap[] = +{ + "solid", // inheritance + "dashed" // usage +}; + +/*! converts the rectangles in a server site image map into a client + * site image map. + * \param t the stream to which the result is written. + * \param mapName the name of the map file. + * \returns TRUE if succesful. + */ +static bool convertMapFile(QTextStream &t,const char *mapName) +{ + QFile f(mapName); + if (!f.open(IO_ReadOnly)) return FALSE; + const int maxLineLen=1024; + char buf[maxLineLen]; + char url[maxLineLen]; + int x1,y1,x2,y2; + while (!f.atEnd()) + { + int numBytes = f.readLine(buf,maxLineLen); + buf[numBytes-1]='\0'; + //printf("ReadLine `%s'\n",buf); + if (strncmp(buf,"rect",4)==0) + { + sscanf(buf,"rect %s %d,%d %d,%d",url,&x1,&y2,&x2,&y1); + char *refPtr = url; + char *urlPtr = strchr(url,'$'); + //printf("url=`%s'\n",url); + if (urlPtr) + { + QCString *dest; + *urlPtr++='\0'; + //printf("refPtr=`%s' urlPtr=`%s'\n",refPtr,urlPtr); + //printf("Found url=%s coords=%d,%d,%d,%d\n",file,x1,y1,x2,y2); + t << "<area "; + if (*refPtr!='\0') + { + t << "doxygen=\"" << refPtr << ":"; + if ((dest=tagDestinationDict[refPtr])) t << *dest << "/"; + t << "\" "; + } + t << "href=\""; + if (*refPtr!='\0') + { + if ((dest=tagDestinationDict[refPtr])) t << *dest << "/"; + } + t << urlPtr << "\" shape=\"rect\" coords=\"" + << x1 << "," << y1 << "," << x2 << "," << y2 << "\">" << endl; + } + } + } + + return TRUE; +} + +static bool readBoundingBox(const char *fileName,int *width,int *height) +{ + QFile f(fileName); + if (!f.open(IO_ReadOnly)) return FALSE; + const int maxLineLen=1024; + char buf[maxLineLen]; + while (!f.atEnd()) + { + int numBytes = f.readLine(buf,maxLineLen); + buf[numBytes-1]='\0'; + if (strncmp(buf,"\tgraph [bb",10)==0) + { + int x,y,w,h; + if (sscanf(buf,"\tgraph [bb= \"%d,%d,%d,%d\"];",&x,&y,&w,&h)!=4) + { + return FALSE; + } + *width = w*96/72; // 96 pixels/inch, 72 points/inch + *height = h*96/72; // 96 pixels/inch, 72 points/inch + return TRUE; + } + } + return FALSE; +} + +/*! returns TRUE if class cd is a leaf (i.e. has no visible children) + */ +static bool isLeaf(ClassDef *cd) +{ + BaseClassList *bcl = cd->superClasses(); + if (bcl->count()>0) // class has children, check their visibility + { + BaseClassListIterator bcli(*bcl); + BaseClassDef *bcd; + for ( ; (bcd=bcli.current()); ++bcli ) + { + ClassDef *bClass = bcd->classDef; + if (bClass->isLinkable() || !isLeaf(bClass)) return FALSE; + } + } + return TRUE; +} + +//-------------------------------------------------------------------- + +class DotNodeList : public QList<DotNode> +{ + public: + DotNodeList() : QList<DotNode>() {} + ~DotNodeList() {} + int compareItems(GCI item1,GCI item2) + { + return strcmp(((DotNode *)item1)->m_label,((DotNode *)item2)->m_label); + } +}; + +//-------------------------------------------------------------------- + +DotNode::DotNode(int n,const char *lab,const char *url,int distance,bool isRoot) + : m_number(n), m_label(lab), m_url(url), m_isRoot(isRoot) +{ + m_children = 0; + m_edgeInfo = 0; + m_parents = 0; + m_subgraphId=-1; + m_deleted=FALSE; + m_written=FALSE; + m_distance = distance; +} + +DotNode::~DotNode() +{ + delete m_children; + delete m_parents; + delete m_edgeInfo; +} + +void DotNode::setDistance(int distance) +{ + if (distance<m_distance) m_distance=distance; +} + +void DotNode::addChild(DotNode *n, + int edgeColor, + int edgeStyle, + const char *edgeLab, + const char *edgeURL, + int edgeLabCol + ) +{ + if (m_children==0) + { + m_children = new QList<DotNode>; + m_edgeInfo = new QList<EdgeInfo>; + m_edgeInfo->setAutoDelete(TRUE); + } + m_children->insert(0,n); + EdgeInfo *ei = new EdgeInfo; + ei->m_color = edgeColor; + ei->m_style = edgeStyle; + ei->m_label = edgeLab; + ei->m_url = edgeURL; + if (edgeLabCol==-1) + ei->m_labColor=edgeColor; + else + ei->m_labColor=edgeLabCol; + m_edgeInfo->insert(0,ei); +} + +void DotNode::addParent(DotNode *n) +{ + if (m_parents==0) + { + m_parents = new QList<DotNode>; + } + m_parents->append(n); +} + +void DotNode::removeChild(DotNode *n) +{ + if (m_children) m_children->remove(n); +} + +void DotNode::removeParent(DotNode *n) +{ + if (m_parents) m_parents->remove(n); +} + +void DotNode::deleteNode() +{ + if (m_deleted) return; // avoid recursive loops in case the graph has cycles + m_deleted=TRUE; + if (m_parents!=0) + { + QListIterator<DotNode> dnlip(*m_parents); + DotNode *pn; + for (dnlip.toFirst();(pn=dnlip.current());++dnlip) + { + pn->removeChild(this); + if (!pn->m_deleted) + { + pn->deleteNode(); + } + // do not access pn after this! + } + } + if (m_children!=0) + { + QListIterator<DotNode> dnlic(*m_children); + DotNode *cn; + for (dnlic.toFirst();(cn=dnlic.current());++dnlic) + { + cn->removeParent(this); + if (!cn->m_deleted) + { + cn->deleteNode(); + } + // do not access cn after this! + } + } + //printf("delete node %s from memory (c=%d,p=%d)\n", + // m_label.data(), + // m_children?m_children->count():0, + // m_parents?m_parents->count():0); + delete this; +} + +void DotNode::write(QTextStream &t,int distance) +{ + if (m_written) return; // node already written to the output + if (m_distance>distance) return; + bool hasNonReachableChildren=FALSE; + if (m_distance==distance && m_children) + { + QListIterator<DotNode> dnli(*m_children); + DotNode *cn; + for (dnli.toFirst();(cn=dnli.current());++dnli) + { + if (cn->m_distance>distance) hasNonReachableChildren=TRUE; + } + } + const char *labCol = (hasNonReachableChildren) ? "red" : + (m_url.isEmpty() ? "grey" : "black"); + t << " Node" << m_number << " [shape=\"box\",label=\"" << m_label + << "\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\""; + t << ",color=\"" << labCol << "\""; + if (m_isRoot) + { + t << ",style=\"filled\" fontcolor=\"white\""; + } + else if (!m_url.isEmpty()) + { + t << ",URL=\"" << m_url << ".html\""; + } + t << "];" << endl; + m_written=TRUE; + if (m_children) + { + QListIterator<DotNode> dnli1(*m_children); + QListIterator<EdgeInfo> dnli2(*m_edgeInfo); + DotNode *cn; + for (dnli1.toFirst();(cn=dnli1.current());++dnli1,++dnli2) + { + if (cn->m_distance<=distance) + { + EdgeInfo *ei=dnli2.current(); + t << " Node" << cn->number() << " -> Node" << m_number + << " [dir=back,color=\"" << edgeColorMap[ei->m_color] + << "\",fontsize=10,style=\"" << edgeStyleMap[ei->m_style] << "\""; + if (!ei->m_label.isEmpty()) + { + t << ",label=\"" << ei->m_label << "\",fontname=\"doxfont\""; + } + t << "];" << endl; + } + cn->write(t,distance); + } + } +} + +void DotNode::clearWriteFlag() +{ + m_written=FALSE; + if (m_parents!=0) + { + QListIterator<DotNode> dnlip(*m_parents); + DotNode *pn; + for (dnlip.toFirst();(pn=dnlip.current());++dnlip) + { + if (pn->m_written) + { + pn->clearWriteFlag(); + } + } + } + if (m_children!=0) + { + QListIterator<DotNode> dnlic(*m_children); + DotNode *cn; + for (dnlic.toFirst();(cn=dnlic.current());++dnlic) + { + if (cn->m_written) + { + cn->clearWriteFlag(); + } + } + } +} + +void DotNode::colorConnectedNodes(int curColor) +{ + if (m_children) + { + QListIterator<DotNode> dnlic(*m_children); + DotNode *cn; + for (dnlic.toFirst();(cn=dnlic.current());++dnlic) + { + if (cn->m_subgraphId==-1) // uncolored child node + { + cn->m_subgraphId=curColor; + cn->colorConnectedNodes(curColor); + } + } + } + + if (m_parents) + { + QListIterator<DotNode> dnlip(*m_parents); + DotNode *pn; + for (dnlip.toFirst();(pn=dnlip.current());++dnlip) + { + if (pn->m_subgraphId==-1) // uncolored parent node + { + pn->m_subgraphId=curColor; + pn->colorConnectedNodes(curColor); + } + } + } +} + +const DotNode *DotNode::findRoot() const +{ + if (m_children==0 || m_children->count()==0) + { + return this; + } + else + { + DotNode *cn = m_children->first(); + return cn->findRoot(); + } +} + +//-------------------------------------------------------------------- + +int DotGfxHierarchyTable::m_curNodeNumber; + +void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) +{ + //printf("DotGfxHierarchyTable::writeGraph(%s)\n",name); + //printf("m_rootNodes=%p count=%d\n",m_rootNodes,m_rootNodes->count()); + if (m_rootSubgraphs->count()==0) return; + + QDir d(path); + // store the original directory + if (!d.exists()) + { + err("Error: Output dir %s does not exist!\n",path); exit(1); + } + QCString oldDir = convertToQCString(QDir::currentDirPath()); + // goto the html output directory (i.e. path) + QDir::setCurrent(d.absPath()); + QDir thisDir; + + //QFile ind("inherit.html"); + //if (ind.open(IO_WriteOnly)) + //{ + // QTextStream ti(&ind); + //ti << "<html><head><title>Class Hierarchy</title></head>" << endl; + //ti << "<body bgcolor=#ffffff>" << endl; + out << "<table border=0 cellspacing=10 cellpadding=0>" << endl; + + QListIterator<DotNode> dnli(*m_rootSubgraphs); + DotNode *n; + for (dnli.toFirst();(n=dnli.current());++dnli) + { + //printf("Node %s color=%d (c=%d,p=%d)\n", + // n->m_label.data(),n->m_subgraphId, + // n->m_children?n->m_children->count():0, + // n->m_parents?n->m_parents->count():0); + + QCString baseName; + baseName.sprintf("inherit_graph_%s",n->m_label.data()); + QCString dotName=baseName+".dot"; + QCString gifName=baseName+".gif"; + QCString mapName=baseName+".map"; + + QFile f(dotName); + if (!f.open(IO_WriteOnly)) return; + QTextStream t(&f); + t << "digraph inheritance" << endl; + t << "{" << endl; + t << " rankdir=LR;" << endl; + QListIterator<DotNode> dnli2(*m_rootNodes); + DotNode *node; + for (;(node=dnli2.current());++dnli2) + { + if (node->m_subgraphId==n->m_subgraphId) node->write(t); + } + t << "}" << endl; + f.close(); + + QCString dotCmd; + dotCmd.sprintf("dot -Tgif %s -o %s",dotName.data(),gifName.data()); + //printf("Running: dot -Tgif %s -o %s\n",dotName.data(),gifName.data()); + if (system(dotCmd)!=0) + { + err("Problems running dot. Check your installation!\n"); + out << "</table>" << endl; + return; + } + dotCmd.sprintf("dot -Timap %s -o %s",dotName.data(),mapName.data()); + //printf("Running: dot -Timap %s -o %s\n",dotName.data(),mapName.data()); + if (system(dotCmd)!=0) + { + err("Problems running dot. Check your installation!\n"); + out << "</table>" << endl; + return; + } + out << "<tr><td><img src=\"" << gifName << "\" border=\"0\" usemap=\"#" + << n->m_label << "_map\"></td></tr>" << endl; + out << "<map name=\"" << n->m_label << "_map\">" << endl; + convertMapFile(out,mapName); + out << "</map>" << endl; + thisDir.remove(dotName); + thisDir.remove(mapName); + } + out << "</table>" << endl; + // ti << "</body></html>" << endl; + // ind.close(); + //} + + QDir::setCurrent(oldDir); +} + +void DotGfxHierarchyTable::addHierarchy(DotNode *n,ClassDef *cd) +{ + BaseClassListIterator bcli(*cd->baseClasses()); + BaseClassDef *bcd; + for ( ; (bcd=bcli.current()) ; ++bcli ) + { + ClassDef *bClass=bcd->classDef; + DotNode *bn; + if ((bn=m_usedNodes->find(bClass->name()))) // node already used => make reference node to it + { + n->addChild(bn,bcd->prot); + bn->addParent(n); + //printf("Adding node %s to existing base node %s (c=%d,p=%d)\n", + // n->m_label.data(), + // bn->m_label.data(), + // bn->m_children ? bn->m_children->count() : 0, + // bn->m_parents ? bn->m_parents->count() : 0 + // ); + } + else // add new node + { + DotNode *newNode = new DotNode(m_curNodeNumber++, + bClass->name(), + bClass->getReference()+"$"+bClass->getOutputFileBase() + ); + n->addChild(newNode,bcd->prot); + newNode->addParent(n); + m_usedNodes->insert(bClass->name(),newNode); // add node to the used list + //printf("Adding node %s to new base node %s (c=%d,p=%d)\n", + // n->m_label.data(), + // newNode->m_label.data(), + // newNode->m_children ? newNode->m_children->count() : 0, + // newNode->m_parents ? newNode->m_parents->count() : 0 + // ); + addHierarchy(newNode,bClass); + } + } +} + +DotGfxHierarchyTable::DotGfxHierarchyTable() +{ + m_curNodeNumber=0; + m_rootNodes = new QList<DotNode>; + //m_rootNodes->setAutoDelete(TRUE); // rootNodes owns the nodes + m_usedNodes = new QDict<DotNode>(1009); // virtualNodes only aliases nodes + m_rootSubgraphs = new DotNodeList; + + // build a graph with each class as a node and the inheritance relations + // as edges + ClassListIterator cli(classList); + ClassDef *cd; + for (cli.toFirst();(cd=cli.current());++cli) + { + //printf("Trying %s superClasses=%d\n",cd->name().data(),cd->superClasses()->count()); + if (cd->isLinkable() && isLeaf(cd)) // root class in the graph + { + //printf("Inserting root class %s\n",cd->name().data()); + DotNode *n = new DotNode(m_curNodeNumber++, + cd->name(), + cd->getReference()+"$"+cd->getOutputFileBase() + ); + //m_usedNodes->clear(); + m_usedNodes->insert(cd->name(),n); + addHierarchy(n,cd); + m_rootNodes->insert(0,n); + } + } + // m_usedNodes now contains all nodes in the graph + + // color the graph into a set of independent subgraphs + bool done=FALSE; + int curColor=0; + QListIterator<DotNode> dnli(*m_rootNodes); + while (!done) // there are still nodes to color + { + DotNode *n; + done=TRUE; // we are done unless there are still uncolored nodes + for (dnli.toLast();(n=dnli.current());--dnli) + { + if (n->m_subgraphId==-1) // not yet colored + { + //printf("Starting at node %s\n",n->m_label.data()); + done=FALSE; // still uncolored nodes + n->m_subgraphId=curColor; + n->colorConnectedNodes(curColor); + curColor++; + m_rootSubgraphs->inSort(n->findRoot()); + } + } + } + + //printf("Number of independent subgraphs: %d\n",curColor); + //QListIterator<DotNode> dnli2(*m_rootSubgraphs); + //DotNode *n; + //for (dnli2.toFirst();(n=dnli2.current());++dnli2) + //{ + // printf("Node %s color=%d (c=%d,p=%d)\n", + // n->m_label.data(),n->m_subgraphId, + // n->m_children?n->m_children->count():0, + // n->m_parents?n->m_parents->count():0); + //} +} + +DotGfxHierarchyTable::~DotGfxHierarchyTable() +{ + DotNode *n = m_rootNodes->first(); + while (n) + { + DotNode *oldNode=n; + n=m_rootNodes->next(); + oldNode->deleteNode(); + } + delete m_rootNodes; + delete m_usedNodes; + delete m_rootSubgraphs; +} + +//-------------------------------------------------------------------- + +int DotGfxUsageGraph::m_curNodeNumber; + +void DotGfxUsageGraph::addClass(ClassDef *cd,DotNode *n,int prot, + const char *label,int distance) +{ + if (cd->isLinkable()) + { + //printf(":: DoxGfxUsageGraph::addClass(class=%s,parent=%s,prot=%d,label=%s,dist=%d)\n", + // cd->name().data(),n->m_label.data(),prot,label,distance); + int edgeStyle = label ? EdgeInfo::Dashed : EdgeInfo::Solid; + DotNode *bn = m_usedNodes->find(cd->name()); + if (bn) // class already inserted + { + n->addChild(bn,prot,edgeStyle,label); + bn->addParent(n); + bn->setDistance(distance); + //printf(" add exiting node %s of %s\n",bn->m_label.data(),n->m_label.data()); + } + else // new class + { + bn = new DotNode(m_curNodeNumber++, + cd->name(), + cd->getReference()+"$"+cd->getOutputFileBase(), + distance + ); + if (distance>m_maxDistance) m_maxDistance=distance; + n->addChild(bn,prot,edgeStyle,label); + bn->addParent(n); + m_usedNodes->insert(cd->name(),bn); + //printf(" add used node %s of %s\n",cd->name().data(),n->m_label.data()); + if (distance<m_recDepth) buildGraph(cd,bn,distance+1); + } + } +} + +void DotGfxUsageGraph::buildGraph(ClassDef *cd,DotNode *n,int distance) +{ + // add base classes + BaseClassListIterator bcli(*cd->baseClasses()); + BaseClassDef *bcd; + for ( ; (bcd=bcli.current()) ; ++bcli ) + { + addClass(bcd->classDef,n,bcd->prot,0,distance); + } + UsesClassDict *dict = m_impl ? cd->usedImplementationClasses() : + cd->usedInterfaceClasses(); + if (dict) + { + UsesClassDictIterator ucdi(*dict); + UsesClassDef *ucd; + for (;(ucd=ucdi.current());++ucdi) + { + QCString label; + QDictIterator<void> dvi(*ucd->accessors); + const char *s; + bool first=TRUE; + for (;(s=dvi.currentKey());++dvi) + { + if (first) + { + label=s; + first=FALSE; + } + else + { + label+=QCString("\\n")+s; + } + } + //printf("Found label=`%s'\n",label.data()); + addClass(ucd->classDef,n,EdgeInfo::Black,label,distance); + } + } +} + +DotGfxUsageGraph::DotGfxUsageGraph(ClassDef *cd,bool impl,int maxRecursionDepth) +{ + //printf("DotGfxUsage::DotGfxUsage %s\n",cd->name().data()); + m_impl = impl; + m_maxDistance = 0; + m_recDepth = maxRecursionDepth; + m_startNode = new DotNode(m_curNodeNumber++, + cd->name(), + cd->getReference()+"$"+cd->getOutputFileBase(), + 0, // distance + TRUE // is a root node + ); + m_usedNodes = new QDict<DotNode>(1009); + m_usedNodes->insert(cd->name(),m_startNode); + //printf("Root node %s\n",cd->name().data()); + if (m_recDepth>0) buildGraph(cd,m_startNode,1); + m_diskName = cd->getOutputFileBase().copy(); +} + +bool DotGfxUsageGraph::isTrivial() const +{ + return m_startNode->m_children==0; +} + +DotGfxUsageGraph::~DotGfxUsageGraph() +{ + m_startNode->deleteNode(); + delete m_usedNodes; +} + +static void writeDotGraph(DotNode *root,const QCString &baseName, + bool lrRank,int distance) +{ + // generate the graph description for dot + QFile f; + f.setName(baseName+".dot"); + if (f.open(IO_WriteOnly)) + { + QTextStream t(&f); + t << "digraph inheritance" << endl; + t << "{" << endl; + if (lrRank) + { + t << " rankdir=LR;" << endl; + } + root->clearWriteFlag(); + root->write(t,distance); + t << "}" << endl; + f.close(); + } +} + +static void findMaximalDotGraph(DotNode *root,int maxDist, + const QCString &baseName, + QDir &thisDir, + bool lrRank=FALSE + ) +{ + bool lastFit; + int minDistance=1; + int maxDistance=maxDist; + int curDistance=maxDistance; + int width=0; + int height=0; + + // binary search for the maximal inheritance depth that fits in a reasonable + // sized image (dimensions: maxImageWidth, maxImageHeight) + do + { + writeDotGraph(root,baseName,lrRank,curDistance); + + QCString dotCmd; + // create annotated dot file + dotCmd.sprintf("dot -Tdot %s.dot -o %s_tmp.dot\n",baseName.data(),baseName.data()); + if (system(dotCmd)!=0) + { + err("Problems running dot. Check your installation!\n"); + return; + } + + // extract bounding box from the result + readBoundingBox(baseName+"_tmp.dot",&width,&height); + //printf("Found bounding box (%d,%d)\n",width,height); + + lastFit=(width<maxImageWidth && height<maxImageHeight); + if (lastFit) // image is small enough + { + minDistance=curDistance; + //printf("Image fits [%d-%d]\n",minDistance,maxDistance); + } + else + { + maxDistance=curDistance; + //printf("Image does not fit [%d-%d]\n",minDistance,maxDistance); + } + curDistance=minDistance+(maxDistance-minDistance)/2; + //printf("curDistance=%d\n",curDistance); + + // remove temporary dot file + thisDir.remove(baseName+"_tmp.dot"); + + } while (maxDistance-minDistance>1); + + if (!lastFit) + { + //printf("Using last fit %d\n",minDistance); + writeDotGraph(root,baseName, + lrRank || (curDistance==1 && width>maxImageWidth), + minDistance + ); + } +} + +QCString DotGfxUsageGraph::diskName() const +{ + return m_diskName + "_coll_graph"; +} + +void DotGfxUsageGraph::writeGraph(QTextStream &out, + const char *path, + bool isTBRank) +{ + QDir d(path); + // store the original directory + if (!d.exists()) + { + err("Error: Output dir %s does not exist!\n",path); exit(1); + } + QCString oldDir = convertToQCString(QDir::currentDirPath()); + // goto the html output directory (i.e. path) + QDir::setCurrent(d.absPath()); + QDir thisDir; + + QCString baseName; + if (m_impl) + baseName.sprintf("%s_coll_graph",m_diskName.data()); + else + baseName.sprintf("%s_intf_graph",m_diskName.data()); + + // TODO: make sure curDistance>0 + + findMaximalDotGraph(m_startNode,m_maxDistance,baseName,thisDir,!isTBRank); + + // run dot to create a .gif image + QCString dotCmd; + dotCmd.sprintf("dot -Tgif %s.dot -o %s.gif\n",baseName.data(),baseName.data()); + if (system(dotCmd)!=0) + { + err("Problems running dot. Check your installation!\n"); + return; + } + //printf("dot -Tgif %s.dot -o %s.gif",baseName.data(),baseName.data()); + + // run dot again to create an image map + dotCmd.sprintf("dot -Timap %s.dot -o %s.map",baseName.data(),baseName.data()); + if (system(dotCmd)!=0) + { + err("Problems running dot. Check your installation!\n"); + return; + } + //printf("dot -Timap %s.dot -o %s.map\n",baseName.data(),baseName.data()); + + out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" + << m_startNode->m_label << "_impl_map\"></center>" << endl; + out << "<map name=\"" << m_startNode->m_label << "_impl_map\">" << endl; + convertMapFile(out,baseName+".map"); + out << "</map><p>" << endl; + + thisDir.remove(baseName+".dot"); + thisDir.remove(baseName+".map"); + + QDir::setCurrent(oldDir); +} + +//-------------------------------------------------------------------- + +int DotInclDepGraph::m_curNodeNumber; + +void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance) +{ + QList<IncludeInfo> *includeFiles = fd->includeFileList(); + QListIterator<IncludeInfo> ili(*includeFiles); + IncludeInfo *ii; + for (;(ii=ili.current());++ili) + { + FileDef *bfd = ii->fileDef; + QCString in = bfd ? bfd->absFilePath() : ii->includeName; + DotNode *bn = m_usedNodes->find(in); + if (bn) // file is already a node in the graph + { + n->addChild(bn,0,0,0); + bn->addParent(n); + bn->setDistance(distance); + } + else + { + bn = new DotNode( + m_curNodeNumber++, + ii->includeName, + bfd ? (bfd->getReference()+"$"+bfd->getOutputFileBase()).data() : 0, + distance + ); + if (distance>m_maxDistance) m_maxDistance=distance; + n->addChild(bn,0,0,0); + bn->addParent(n); + m_usedNodes->insert(in,bn); + if (bfd) buildGraph(bn,bfd,distance+1); + } + } +} + +DotInclDepGraph::DotInclDepGraph(FileDef *fd) +{ + m_maxDistance = 0; + m_diskName = fd->getOutputFileBase().copy(); + m_startNode = new DotNode(m_curNodeNumber++, + fd->name(), + fd->getReference()+"$"+fd->getOutputFileBase(), + 0, // distance + TRUE // root node + ); + m_usedNodes = new QDict<DotNode>(1009); + m_usedNodes->insert(fd->absFilePath(),m_startNode); + buildGraph(m_startNode,fd,1); +} + +DotInclDepGraph::~DotInclDepGraph() +{ + m_startNode->deleteNode(); + delete m_usedNodes; +} + +QCString DotInclDepGraph::diskName() const +{ + return m_diskName + "_incldep"; +} + +void DotInclDepGraph::writeGraph(QTextStream &out,const char *path) +{ + QDir d(path); + // store the original directory + if (!d.exists()) + { + err("Error: Output dir %s does not exist!\n",path); exit(1); + } + QCString oldDir = convertToQCString(QDir::currentDirPath()); + // goto the html output directory (i.e. path) + QDir::setCurrent(d.absPath()); + QDir thisDir; + + QCString baseName=m_diskName+"_incldep"; + + findMaximalDotGraph(m_startNode,m_maxDistance,baseName,thisDir); + + // run dot to create a .gif image + QCString dotCmd; + dotCmd.sprintf("dot -Tgif %s.dot -o %s.gif\n",baseName.data(),baseName.data()); + if (system(dotCmd)!=0) + { + err("Problems running dot. Check your installation!\n"); + return; + } + //printf("dot -Tgif %s.dot -o %s.gif",baseName.data(),baseName.data()); + + // run dot again to create an image map + dotCmd.sprintf("dot -Timap %s.dot -o %s.map",baseName.data(),baseName.data()); + if (system(dotCmd)!=0) + { + err("Problems running dot. Check your installation!\n"); + return; + } + + out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" + << m_startNode->m_label << "_map\"></center>" << endl; + out << "<map name=\"" << m_startNode->m_label << "_map\">" << endl; + convertMapFile(out,baseName+".map"); + out << "</map><p>" << endl; + + thisDir.remove(baseName+".dot"); + thisDir.remove(baseName+".map"); + + QDir::setCurrent(oldDir); +} + +bool DotInclDepGraph::isTrivial() const +{ + return m_startNode->m_children==0; +} diff --git a/src/dot.h b/src/dot.h new file mode 100644 index 0000000..5afaa2c --- /dev/null +++ b/src/dot.h @@ -0,0 +1,134 @@ +/****************************************************************************** + * + * $Id$ + * + * + * Copyright (C) 1997-2000 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * All output generated with Doxygen is not covered by this license. + * + */ + +#include "qtbc.h" +#include <qlist.h> +#include <qdict.h> + +class ClassDef; +class FileDef; +class QTextStream; +class DotNodeList; + +struct EdgeInfo +{ + enum Colors { Blue=0, Green=1, Red=2, Black=3, Grey=4 }; + enum Styles { Solid=0, Dashed=1 }; + EdgeInfo() : m_color(0), m_style(0), m_labColor(0) {} + ~EdgeInfo() {} + int m_color; + int m_style; + QCString m_label; + QCString m_url; + int m_labColor; +}; + +class DotNode +{ + friend class DotGfxHierarchyTable; + friend class DotGfxUsageGraph; + friend class DotInclDepGraph; + friend class DotNodeList; + public: + DotNode(int n,const char *lab,const char *url,int distance = 0,bool rootNode=FALSE); + ~DotNode(); + void addChild(DotNode *n, + int edgeColor=EdgeInfo::Black, + int edgeStyle=EdgeInfo::Solid, + const char *edgeLab=0, + const char *edgeURL=0, + int edgeLabCol=-1 + ); + void setDistance(int distance); + void addParent(DotNode *n); + void deleteNode(); + void removeChild(DotNode *n); + void removeParent(DotNode *n); + int number() const { return m_number; } + void write(QTextStream &t,int maxDistance=1000); + int m_subgraphId; + void clearWriteFlag(); + + private: + void colorConnectedNodes(int curColor); + const DotNode *findRoot() const; // only works for acyclic graphs! + int m_number; + QCString m_label; + QCString m_url; + QList<DotNode> *m_parents; //!< list of parent nodes (incoming arrows) + QList<DotNode> *m_children; //!< list of child nodes (outgoing arrows) + QList<EdgeInfo> *m_edgeInfo; //!< edge info for each child + bool m_deleted; //!< used to mark a node as deleted + bool m_written; //!< used to mark a node as written + int m_distance; //!< distance to the root node + bool m_isRoot; //!< indicates if this is a root node +}; + +class DotGfxHierarchyTable +{ + public: + DotGfxHierarchyTable(); + ~DotGfxHierarchyTable(); + void writeGraph(QTextStream &t,const char *path); + + private: + void addHierarchy(DotNode *n,ClassDef *cd); + + QList<DotNode> *m_rootNodes; + QDict<DotNode> *m_usedNodes; + static int m_curNodeNumber; + DotNodeList *m_rootSubgraphs; +}; + +class DotGfxUsageGraph +{ + public: + DotGfxUsageGraph(ClassDef *cd,bool impl,int maxRecusionDepth=1000); + ~DotGfxUsageGraph(); + bool isTrivial() const; + void writeGraph(QTextStream &t,const char *path,bool TBRank=TRUE); + QCString diskName() const; + + private: + void buildGraph(ClassDef *cd,DotNode *n,int level); + void addClass(ClassDef *cd,DotNode *n,int prot,const char *label,int level); + DotNode *m_startNode; + QDict<DotNode> *m_usedNodes; + static int m_curNodeNumber; + bool m_impl; + int m_recDepth; + QCString m_diskName; + int m_maxDistance; +}; + +class DotInclDepGraph +{ + public: + DotInclDepGraph(FileDef *fd); + ~DotInclDepGraph(); + void writeGraph(QTextStream &t, const char *path); + bool isTrivial() const; + QCString diskName() const; + + private: + void buildGraph(DotNode *n,FileDef *fd,int distance); + DotNode *m_startNode; + QDict<DotNode> *m_usedNodes; + static int m_curNodeNumber; + QCString m_diskName; + int m_maxDistance; +}; diff --git a/src/doxygen.cpp b/src/doxygen.cpp index ef00e2b..9e8bf7f 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -39,6 +39,7 @@ #include "util.h" #include "pre.h" #include "tag.h" +#include "dot.h" #include "outputlist.h" #include "declinfo.h" @@ -49,6 +50,7 @@ #include "debug.h" #include "htmlhelp.h" #include "defargs.h" +#include "rtfgen.h" #if defined(_MSC_VER) || defined(__BORLANDC__) #define popen _popen @@ -57,45 +59,78 @@ // lists -ClassList classList; // list of all documented classes -NamespaceList namespaceList; // list of all namespaces -PageList exampleList; // list of all example files -PageList pageList; // list of all related documentation pages -MemberNameList memberNameList; // list of class member + related functions -MemberNameList functionNameList; // list of all unrelated functions -FileNameList inputNameList; // list of all input files +ClassList classList; // all documented classes +NamespaceList namespaceList; // all namespaces +PageList exampleList; // all example files +PageList pageList; // all related documentation pages +MemberNameList memberNameList; // class member + related functions +MemberNameList functionNameList; // all unrelated functions +FileNameList inputNameList; // all input files StringList inputFiles; -FileList includeFiles; -GroupList groupList; // list of all groups -FormulaList formulaList; // list of all formulas +GroupList groupList; // all groups +FormulaList formulaList; // all formulas // dictionaries -PageDict pageDict(1009); // dictionary of all doc pages -PageDict exampleDict(1009); // dictionary of all examples -ClassDict classDict(1009); // dictionary of all documented classes -NamespaceDict namespaceDict(257); // dictionary of all documented namespaces -MemberNameDict memberNameDict(10007); // dictionary of all class member names -MemberNameDict functionNameDict(10007); // dictionary of all functions -StringDict substituteDict(1009); // dictionary of class name substitutes -SectionDict sectionDict(257); // dictionary of all page sections -FileNameDict inputNameDict(1009); // dictionary of sections -StringDict excludeNameDict(1009); // dictionary of sections -FileNameDict includeNameDict(1009); // dictionary of include names -FileNameDict exampleNameDict(1009); // dictionary of examples -FileNameDict imageNameDict(257); // dictionary of images -FileDict includeDict(1009); // dictionary of include files -DefineDict defineDict(10007); // dictionary of all defines -StringDict typedefDict(1009); // dictionary of all typedefs -GroupDict groupDict(257); // dictionary of all groups -FormulaDict formulaDict(1009); // dictionary of all formulas -FormulaDict formulaNameDict(1009); // dictionary of the label name of all formulas -StringDict tagDestinationDict(257); // dictionary of all tag locations +PageDict pageDict(1009); // all doc pages +PageDict exampleDict(1009); // all examples +ClassDict classDict(1009); // all documented classes +NamespaceDict namespaceDict(257); // all documented namespaces +MemberNameDict memberNameDict(10007); // all class member names +MemberNameDict functionNameDict(10007); // all functions +StringDict substituteDict(1009); // class name substitutes +SectionDict sectionDict(257); // all page sections +FileNameDict inputNameDict(1009); // sections +StringDict excludeNameDict(1009); // sections +FileNameDict includeNameDict(1009); // include names +FileNameDict exampleNameDict(1009); // examples +FileNameDict imageNameDict(257); // images +DefineDict defineDict(10007); // all defines +StringDict typedefDict(1009); // all typedefs +GroupDict groupDict(257); // all groups +FormulaDict formulaDict(1009); // all formulas +FormulaDict formulaNameDict(1009); // the label name of all formulas +StringDict tagDestinationDict(257); // all tag locations // a member group +OutputList *outputList = 0; // list of output generating objects -OutputList *outputList; // list of output generating objects - -PageInfo *mainPage=0; +PageInfo *mainPage = 0; + +void clearAll() +{ + classList.clear(); + namespaceList.clear(); + exampleList.clear(); + pageList.clear(); + memberNameList.clear(); + functionNameList.clear(); + inputNameList.clear(); + inputFiles.clear(); + groupList.clear(); + formulaList.clear(); + pageDict.clear(); + exampleDict.clear(); + classDict.clear(); + namespaceDict.clear(); + memberNameDict.clear(); + functionNameDict.clear(); + substituteDict.clear(); + sectionDict.clear(); + inputNameDict.clear(); + excludeNameDict.clear(); + includeNameDict.clear(); + exampleNameDict.clear(); + imageNameDict.clear(); + defineDict.clear(); + typedefDict.clear(); + groupDict.clear(); + formulaDict.clear(); + formulaNameDict.clear(); + tagDestinationDict.clear(); + delete outputList; outputList=0; + delete mainPage; mainPage=0; +} + //bool unrelatedFunctionsUsed; //ClassDef unrelatedClass("nothing",ClassDef::Class); @@ -135,7 +170,7 @@ const char *getOverloadDocs() void buildGroupList(Entry *root) { - if (root->section==Entry::GROUPDOC_SEC && root->name.length()>0) + if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty()) { //printf("Found group %s title=`%s'\n",root->name.data(),root->type.data()); @@ -169,7 +204,7 @@ void buildGroupList(Entry *root) //void computeGroupRelations(Entry *root) //{ -// if (root->section==Entry::GROUPDOC_SEC && root->name.length()>0) +// if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty()) // { // GroupDef *gd; // @@ -180,7 +215,7 @@ void buildGroupList(Entry *root) // for (;(s=sli.current());++sli) // { // GroupDef *pgd; -// if (s->length()>0 && (pgd=groupDict[*s])) +// if (!s->isEmpty() && (pgd=groupDict[*s])) // { // pgd->addGroup(gd); // printf("Group %s: in group %s\n",gd->groupName(),s->data()); @@ -202,15 +237,15 @@ void buildFileList(Entry *root) { if (((root->section==Entry::FILEDOC_SEC) || ((root->section & Entry::FILE_MASK) && Config::extractAllFlag)) && - root->name.length()>0 + !root->name.isEmpty() ) { bool ambig; FileDef *fd=findFileDef(&inputNameDict,root->name,ambig); if (fd && !ambig) { - if ((root->doc.length()>0 && !fd->documentation().isEmpty()) || - (root->brief.length()>0 && !fd->briefDescription().isEmpty())) + if ((!root->doc.isEmpty() && !fd->documentation().isEmpty()) || + (!root->brief.isEmpty() && !fd->briefDescription().isEmpty())) { warn("Warning: file %s already documented\n" " skipping documentation in file %s at line %d\n", @@ -226,7 +261,7 @@ void buildFileList(Entry *root) for (;(s=sli.current());++sli) { GroupDef *gd=0; - if (s->length()>0 && (gd=groupDict[*s])) + if (!s->isEmpty() && (gd=groupDict[*s])) { gd->addFile(fd); //printf("File %s: in group %s\n",fd->name().data(),s->data()); @@ -262,7 +297,7 @@ void buildFileList(Entry *root) } } -void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root) +static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root) { if ( (!root->doc.stripWhiteSpace().isEmpty() || @@ -304,25 +339,42 @@ void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root) fd=ifd; } - // if a file is found, we mark it for verbatim inclusion. + + // if a file is found, we mark it as a source file. if (fd) { + //printf("Adding file %s used by %s\n",fd->name().data(),cd->name().data()); //printf("fd->name()=%s fd->absFilePath()=%s\n",fd->name().data(), // fd->absFilePath().data()); // set include file definition - cd->setIncludeFile(fd); + //cd->setIncludeFile(fd); // set include supplied name - cd->setIncludeName(root->includeName); - if (cd->name().find('@')==-1) - { - fd->setIncludeName(cd->getOutputFileBase()+"-include"); - } - if (!fd->absFilePath().isEmpty() && - includeDict[fd->absFilePath()]==0) // include not inserted earlier + //cd->setIncludeName(root->includeName); + + QCString iName = !root->includeName.isEmpty() ? + root->includeName.data() : root->includeFile.data(); + bool local=FALSE; + if (!iName.isEmpty()) { - includeFiles.inSort(fd); - includeDict.insert(fd->absFilePath(),fd); + local = iName.at(0)=='"'; + if (local || iName.at(0)=='<') + { + iName=iName.mid(1,iName.length()-2); + } } + fd->setGenerateSource(TRUE); + cd->setIncludeFile(fd,iName,local); + + //if (cd->name().find('@')==-1) + //{ + // fd->setIncludeName(cd->getOutputFileBase()+"-include"); + //} + //if (!fd->absFilePath().isEmpty() && + // includeDict[fd->absFilePath()]==0) // include not inserted earlier + //{ + // includeFiles.inSort(fd); + // includeDict.insert(fd->absFilePath(),fd); + //} } } } @@ -335,7 +387,7 @@ void extractNamespaceName(const QCString &scopeName, { QCString clName=scopeName.copy(); QCString nsName; - if (clName.length()>0 && namespaceDict[clName] && getClass(clName)==0) + if (!clName.isEmpty() && namespaceDict[clName] && getClass(clName)==0) { // the whole name is a namespace (and not a class) namespaceName=clName.copy(); className.resize(0); @@ -401,11 +453,11 @@ void buildClassList(Entry *root) if ( ((root->section & Entry::COMPOUNDDOC_MASK) || ((root->section & Entry::COMPOUND_MASK))) && - root->name.length()>0 + !root->name.isEmpty() ) { QCString fullName=root->name.copy(); - if (fullName.length()==0) + if (fullName.isEmpty()) { // this should not be called warn("Warning: invalid class found in file %s at %d\n", @@ -418,6 +470,8 @@ void buildClassList(Entry *root) bool ambig; ClassDef *cd; + //printf("findFileDef(%s)\n",root->fileName.data()); + FileDef *fd=findFileDef(&inputNameDict,root->fileName,ambig); if ((cd=getClass(fullName))) { if (cd->templateArguments()==0) @@ -458,13 +512,21 @@ void buildClassList(Entry *root) cd->addSectionsToDefinition(root->anchors); cd->setName(fullName); // change name to match docs } - if (cd->includeFile()==0) + cd->setFileDef(fd); + if (cd->hasDocumentation()) { - FileDef *fd=findFileDef(&inputNameDict,root->fileName,ambig); - cd->setFileDef(fd); addIncludeFile(cd,fd,root); } addNamespace(root,cd); + if (fd && (root->section & Entry::COMPOUND_MASK)) + { + //printf(">> Inserting class `%s' in file `%s' (root->fileName=`%s')\n", + // cd->name().data(), + // fd->name().data(), + // root->fileName.data() + // ); + fd->insertClass(cd); + } } else // new class { @@ -489,16 +551,15 @@ void buildClassList(Entry *root) cd->setProtection(root->protection); cd->addSectionsToDefinition(root->anchors); // file definition containing the class cd - FileDef *ifd=findFileDef(&inputNameDict,root->fileName,ambig); cd->setBodySegment(root->bodyLine,root->endBodyLine); - cd->setBodyDef(ifd); + cd->setBodyDef(fd); QListIterator<QCString> sli(*root->groups); QCString *s; for (;(s=sli.current());++sli) { GroupDef *gd=0; - if (s->length()>0 && (gd=groupDict[*s])) + if (!s->isEmpty() && (gd=groupDict[*s])) { gd->addClass(cd); //printf("Compound %s: in group %s\n",cd->name().data(),s->data()); @@ -507,13 +568,23 @@ void buildClassList(Entry *root) bool found=addNamespace(root,cd); - - cd->setFileDef(ifd); - addIncludeFile(cd,ifd,root); + cd->setFileDef(fd); + if (cd->hasDocumentation()) + { + addIncludeFile(cd,fd,root); + } // if the class is not in a namespace then we insert // it in the file definition - if (!found && ifd) ifd->insertClass(cd); + if (!found && fd && (root->section & Entry::COMPOUND_MASK)) + { + //printf(">> Inserting class `%s' in file `%s' (root->fileName=`%s')\n", + // cd->name().data(), + // fd->name().data(), + // root->fileName.data() + // ); + fd->insertClass(cd); + } // the empty string test is needed for extract all case cd->setBriefDescription(root->brief); @@ -542,37 +613,37 @@ void buildNamespaceList(Entry *root) if ( (root->section==Entry::NAMESPACE_SEC) || (root->section==Entry::NAMESPACEDOC_SEC) && - root->name.length()>0 + !root->name.isEmpty() ) { QCString fullName=stripAnnonymousNamespaceScope(root->name.copy()); - if (fullName.length()>0) + if (!fullName.isEmpty()) { //printf("Found namespace %s in %s at line %d\n",root->name.data(), // root->fileName.data(), root->startLine); NamespaceDef *nd; if ((nd=namespaceDict[fullName])) { - if (root->doc.length()>0 || root->brief.length()>0) // block contains docs + if (!root->doc.isEmpty() || !root->brief.isEmpty()) // block contains docs { - if (nd->documentation().isEmpty() && root->doc.length()>0) + if (nd->documentation().isEmpty() && !root->doc.isEmpty()) { nd->setDocumentation(root->doc); nd->setName(fullName); // change name to match docs nd->addSectionsToDefinition(root->anchors); } - else if (!nd->documentation().isEmpty() && root->doc.length()>0) + else if (!nd->documentation().isEmpty() && !root->doc.isEmpty()) { warn("Warning: namespace %s already has a detailed description,\n" " skipping documentation in file %s at line %d\n", fullName.data(),root->fileName.data(),root->startLine); } - if (nd->briefDescription().isEmpty() && root->brief.length()>0) + if (nd->briefDescription().isEmpty() && !root->brief.isEmpty()) { nd->setBriefDescription(root->brief); nd->setName(fullName); // change name to match docs } - else if (!nd->briefDescription().isEmpty() && root->brief.length()>0) + else if (!nd->briefDescription().isEmpty() && !root->brief.isEmpty()) { warn("Warning: namespace %s already has a brief description,\n" " skipping documentation in file %s at line %d\n", @@ -586,8 +657,8 @@ void buildNamespaceList(Entry *root) // insert the namespace in the file definition if (fd) fd->insertNamespace(nd); } - else /* if (root->doc.length()>0 || - root->brief.length()>0 || + else /* if (!root->doc.isEmpty() || + !root->brief.isEmpty() || Config::extractAllFlag ) */ @@ -602,7 +673,7 @@ void buildNamespaceList(Entry *root) for (;(s=sli.current());++sli) { GroupDef *gd=0; - if (s->length()>0 && (gd=groupDict[*s])) + if (!s->isEmpty() && (gd=groupDict[*s])) gd->addNamespace(nd); } @@ -705,16 +776,17 @@ void findUsingDirectives(Entry *root) static MemberDef *addVariableToClass(Entry *root,ClassDef *cd, MemberDef::MemberType mtype,const QCString &scope,const QCString &name, - bool fromAnnScope,int indentDepth,MemberDef *fromAnnMemb) + bool fromAnnScope,int indentDepth,MemberDef *fromAnnMemb,Protection prot) { Debug::print(Debug::Variables,0, " class variable:\n" - " %s' %s'::`%s' `%s' prot=`%d\n", + " %s' %s'::`%s' `%s' prot=`%d ann=%d\n", root->type.data(), scope.data(), name.data(), root->args.data(), - root->protection + root->protection, + fromAnnScope ); // add template names, if the class is a non-specialized template //if (scope.find('<')==-1 && cd->templateArguments()) @@ -723,7 +795,7 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd, //} // generate member definition. QCString def; - if (root->type.length()>0) + if (!root->type.isEmpty()) { if (mtype==MemberDef::Friend) { @@ -760,7 +832,7 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd, } // new member variable, typedef or enum value MemberDef *md=new MemberDef(root->type,name,root->args,0, - root->protection,Normal,root->stat,FALSE, + prot,Normal,root->stat,FALSE, mtype,0,0); md->setMemberClass(cd); md->setDefFile(root->fileName); @@ -773,6 +845,7 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd, md->setFromAnnonymousMember(fromAnnMemb); md->setIndentDepth(indentDepth); md->setBodySegment(root->bodyLine,root->endBodyLine); + md->setInitializer(root->initializer); bool ambig; md->setBodyDef(findFileDef(&inputNameDict,root->fileName,ambig)); @@ -826,13 +899,14 @@ static MemberDef *addVariableToFile(Entry *root,MemberDef::MemberType mtype, md->setFromAnnonymousMember(fromAnnMemb); md->setIndentDepth(indentDepth); md->setBodySegment(root->bodyLine,root->endBodyLine); + md->setInitializer(root->initializer); bool ambig; FileDef *fd=findFileDef(&inputNameDict,root->fileName,ambig); md->setBodyDef(fd); // see if the function is inside a namespace NamespaceDef *nd = 0; - if (scope.length()>0) + if (!scope.isEmpty()) { nd = namespaceDict[scope]; } @@ -856,7 +930,7 @@ static MemberDef *addVariableToFile(Entry *root,MemberDef::MemberType mtype, if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@') // variable is inside a namespace, so put the scope before the name { - if (root->type.length()>0) + if (!root->type.isEmpty()) { def=root->type+" "+nd->name()+"::"+name+root->args; } @@ -867,7 +941,7 @@ static MemberDef *addVariableToFile(Entry *root,MemberDef::MemberType mtype, } else { - if (root->type.length()>0) + if (!root->type.isEmpty()) { if (name.at(0)=='@') // dummy variable representing annonymous union def=root->type; @@ -906,8 +980,9 @@ void buildVarList(Entry *root) { QRegExp re("([^)]*)"); int i=-1; - if (root->name.length()>0 && - root->type!="class" && root->type!="interface" && + if (!root->name.isEmpty() && + root->type!="class" && root->type!="interface" && + root->type!="struct" && root->type!="union" && ( (root->section==Entry::VARIABLE_SEC ) || @@ -1006,7 +1081,7 @@ void buildVarList(Entry *root) QCString classScope=stripAnnonymousNamespaceScope(scope); QCString annScopePrefix=scope.left(scope.length()-classScope.length()); scope=classScope; - if (scope.length()>0 && name.length()>0 && (cd=getClass(scope))) + if (!scope.isEmpty() && !name.isEmpty() && (cd=getClass(scope))) { MemberDef *md=0; // if cd is an annonymous scope we insert the member @@ -1020,40 +1095,17 @@ void buildVarList(Entry *root) ClassDef *pcd=0; pScope = scope.left(QMAX(si-2,0)); indentDepth = scope.right(scope.length()-si).contains("::")+1; -#if 0 - // Find the last annonymous scope while search from right to left - // Keep track of the number of scope names we skipped. - while ((i=pScope.findRev("::"))!=-1 && (int)pScope.length()>i+2 && - pScope.at(i+2)!='@' - ) - { - pScope=pScope.left(i); - indentDepth++; - } - while ((i=pScope.findRev("::"))!=-1 && (int)pScope.length()>i+2 && - pScope.at(i+2)=='@' - ) - { - pScope=pScope.left(i); - indentDepth++; - } - if (pScope.length()>0 && pScope.at(0)=='@') - { - pScope.resize(0); - indentDepth++; - } -#endif if (!pScope.isEmpty()) pScope.prepend(annScopePrefix); else if (annScopePrefix.length()>2) pScope=annScopePrefix.left(annScopePrefix.length()-2); //printf("pScope=`%s'\n",pScope.data()); - if (!name.isEmpty() && name.at(0)!='@') + if (name.at(0)!='@') { - if (pScope.length()>0 && (pcd=getClass(pScope))) + if (!pScope.isEmpty() && (pcd=getClass(pScope))) { - //printf("Inserting member in parent scope!\n"); - md=addVariableToClass(root,pcd,mtype,pScope,name,TRUE,indentDepth,0); + Protection p = (Protection)QMAX((int)root->protection,(int)cd->protection()); + md=addVariableToClass(root,pcd,mtype,pScope,name,TRUE,indentDepth,0,p); } else // annonymous scope inside namespace or file => put variable in the global scope { @@ -1062,13 +1114,26 @@ void buildVarList(Entry *root) } } } - addVariableToClass(root,cd,mtype,scope,name,FALSE,indentDepth,md); + addVariableToClass(root,cd,mtype,scope,name,FALSE,indentDepth,md,root->protection); } - else if (name.length()>0) // global variable + else if (!name.isEmpty()) // global variable { //printf("Inserting member in global scope %s!\n",scope.data()); addVariableToFile(root,mtype,scope,name,FALSE,0,0); } + //if (mtype==MemberDef::Typedef) + //{ + // static QRegExp r("[a-z_A-Z][a-z_A-Z0-9]*"); + // int i,l; + // if ((i=r.match(type,8,&l))!=-1) + // { + // //printf(">>> inserting typedef `%s'->`%s'\n",type.mid(i,l).data(),name.data()); + // if (getClass(type.mid(i,l))!=0) + // { + // typedefDict.insert(name,new QCString(type.mid(i,l))); + // } + // } + //} } nextMember: EntryListIterator eli(*root->sublist); @@ -1105,7 +1170,7 @@ void buildMemberList(Entry *root) bool isFriend=root->type.find("friend ")!=-1; - if (root->name.length()>0) + if (!root->name.isEmpty()) { ClassDef *cd=0; @@ -1117,7 +1182,7 @@ void buildMemberList(Entry *root) QCString scope=stripAnnonymousNamespaceScope(root->parent->name.copy()); int i; if (root->parent && - root->parent->name.length()>0 && + !root->parent->name.isEmpty() && (root->parent->section & Entry::COMPOUND_MASK) && (cd=getClass(scope)) && // do some fuzzy things to exclude function pointers @@ -1159,7 +1224,7 @@ void buildMemberList(Entry *root) //printf("new member: %s class template args=`%s'\n", // root->args.data(),argListToString(cd->templateArguments()).data()); MemberDef *md=new MemberDef(root->type,name,root->args,root->exception, - root->protection,root->virt,root->stat,root->relates.length()>0, + root->protection,root->virt,root->stat,!root->relates.isEmpty(), mtype,root->mtArgList,root->argList); md->setMemberClass(cd); md->setDefFile(root->fileName); @@ -1175,9 +1240,9 @@ void buildMemberList(Entry *root) //md->setScopeTemplateArguments(root->tArgList); md->addSectionsToDefinition(root->anchors); QCString def; - if (root->relates.length()>0 || isFriend) + if (!root->relates.isEmpty() || isFriend) { - if (root->type.length()>0) + if (!root->type.isEmpty()) { if (root->argList) { @@ -1202,7 +1267,7 @@ void buildMemberList(Entry *root) } else { - if (root->type.length()>0) + if (!root->type.isEmpty()) { if (root->argList) { @@ -1263,7 +1328,7 @@ void buildMemberList(Entry *root) else if (root->parent && !(root->parent->section & Entry::COMPOUND_MASK) && root->name.find("::")==-1 && - root->relates.length()==0 && + root->relates.isEmpty() && root->type.left(7)!="extern " && root->type.left(8)!="typedef " ) @@ -1332,7 +1397,7 @@ void buildMemberList(Entry *root) md->setGroupId(root->mGrpId); md->setInline(root->inLine); QCString def; - if (root->type.length()>0) + if (!root->type.isEmpty()) { if (root->argList) { @@ -1384,7 +1449,7 @@ void buildMemberList(Entry *root) // find file definition //FileDef *fd=0; //bool ambig; - //if (root->fileName.length()>0 && + //if (!root->fileName.isEmpty() && // (fd=findFileDef(&inputNameDict,root->fileName,ambig)) // ) if (fd) @@ -1418,7 +1483,7 @@ void buildMemberList(Entry *root) // root->parent->section,root->type.data(),root->name.data(),root->args.data()); } } - else if (root->name.length()==0) + else if (root->name.isEmpty()) { warn("Warning: Illegal member name found in file %s at line %d\n", root->fileName.data(),root->startLine); @@ -1578,7 +1643,7 @@ bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix, // baseClass,baseClassName.data(),templSpec.data()); } - bool found=baseClass!=0; + bool found=baseClass!=0 && baseClass!=cd; NamespaceDef *nd=cd->getNamespace(); if (!found) { @@ -1594,21 +1659,26 @@ bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix, NamespaceDef *nd; for (nli.toFirst() ; (nd=nli.current()) && !found ; ++nli) { - found = (baseClass=getClass(nd->name()+"::"+baseClassName))!=0; + QCString fName = nd->name()+"::"+baseClassName; + found = (baseClass=getClass(fName))!=0 && baseClass!=cd && + root->name!=fName; } } } if (!found && nd) // class is inside a namespace { NamespaceList *nl = nd->getUsedNamespaces(); - found = (baseClass=getClass(nd->name()+"::"+baseClassName))!=0; + QCString fName = nd->name()+"::"+baseClassName; + found = (baseClass=getClass(fName))!=0 && root->name!=fName; if (nl) // try to prepend any of the using namespace scopes. { NamespaceListIterator nli(*nl); NamespaceDef *nd; for (nli.toFirst() ; (nd=nli.current()) && !found ; ++nli) { - found = (baseClass=getClass(nd->name()+"::"+baseClassName))!=0; + fName = nd->name()+"::"+baseClassName; + found = (baseClass=getClass(fName))!=0 && baseClass!=cd && + root->name!=fName; } } } @@ -1659,7 +1729,7 @@ void computeClassRelations(Entry *root) ) ) && - root->name.length()>0 + !root->name.isEmpty() ) { ClassDef *cd; @@ -1692,7 +1762,7 @@ void computeClassRelations(Entry *root) } else if (bName.right(2)!="::") { - if (root->name.length()>0 && root->name[0]!='@') + if (!root->name.isEmpty() && root->name[0]!='@') warn("Warning: Compound %s\n" " defined in file %s at line %d\n" " is not documented\n", @@ -1789,7 +1859,7 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl, (root->parent->name.isEmpty() && /* or overwrite prototype docs */ !root->proto && md->isPrototype() /* with member definition docs */ ) - ) && root->doc.length()>0 + ) && !root->doc.isEmpty() ) { md->setDocumentation(root->doc); @@ -1801,12 +1871,17 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl, ( md->briefDescription().isEmpty() || /* no docs yet */ !root->parent->name.isEmpty() /* member of a class */ - ) && root->brief.length()>0 + ) && !root->brief.isEmpty() ) { md->setBriefDescription(root->brief); } + if (md->initializer().isEmpty() && !root->initializer.isEmpty()) + { + md->setInitializer(root->initializer); + } + //if (md->bodyCode().isEmpty() && !root->body.isEmpty()) /* no body yet */ //{ // md->setBody(root->body); @@ -1906,7 +1981,7 @@ static bool findUnrelatedFunction(Entry *root, const char *decl) { QCString n=name; - if (n.length()==0) return FALSE; + if (n.isEmpty()) return FALSE; if (n.find("::")!=-1) return FALSE; // skip undefined class members //printf("findUnrelatedFunction(namespace=%s,name=%s,tempArg=%s,decl=%s)\n", // namespaceName.data(),name,tempArg,decl); @@ -1931,7 +2006,7 @@ static bool findUnrelatedFunction(Entry *root, //printf("NamespaceList %p\n",nl); bool viaUsingDirective = nl && nd && nl->find(nd)!=-1; - if ((namespaceName.length()==0 && nd==0) || // not in a namespace + if ((namespaceName.isEmpty() && nd==0) || // not in a namespace (nd && nd->name()==namespaceName) || // or in the same namespace viaUsingDirective // member in `using' namespace ) @@ -2105,6 +2180,11 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded, funcDecl=funcDecl.right(funcDecl.length()-7); root->inLine=TRUE; } + if (funcDecl.left(8)=="virtual ") + { + funcDecl=funcDecl.right(funcDecl.length()-7); + root->inLine=TRUE; + } // delete any ; from the function declaration int sep; @@ -2114,7 +2194,7 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded, } // make sure the first character is a space to simplify searching. - if (funcDecl.length()>0 && funcDecl[0]!=' ') funcDecl.prepend(" "); + if (!funcDecl.isEmpty() && funcDecl[0]!=' ') funcDecl.prepend(" "); // remove some superfluous spaces funcDecl=substitute( @@ -2207,7 +2287,7 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded, if (!scopeName.isEmpty() && scopeName.find('<')==-1 && - classTempList.length()==0 + classTempList.isEmpty() ) { ClassDef *cd=getClass(scopeName); @@ -2258,9 +2338,9 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded, //printf("scopeName=`%s' className=`%s'\n",scopeName.data(),className.data()); // rebuild the function declaration (needed to get the scope right). - if (scopeName.length()>0 && !isRelated && !isFriend) + if (!scopeName.isEmpty() && !isRelated && !isFriend) { - if (funcType.length()>0) + if (!funcType.isEmpty()) { if (isFunc) // a function -> we use argList for the arguments { @@ -2285,7 +2365,7 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded, } else // build declaration without scope { - if (funcType.length()>0) // but with a type + if (!funcType.isEmpty()) // but with a type { if (isFunc) // function => omit argument list { @@ -2316,7 +2396,7 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded, //printf("scopeName=`%s' className=`%s'\n",scopeName.data(),className.data()); // destructor => do backward class name substitution if needed - //if (funcName.length()>0 && funcName[0]=='~') + //if (!funcName.isEmpty() && funcName[0]=='~') // funcName="~"+resolveDefines(className); // constructor => do backward class name substitution if needed //if (funcName==className) funcName=resolveDefines(className); @@ -2344,11 +2424,11 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded, ); MemberName *mn=0; - if (funcName.length()>0) // function name is valid + if (!funcName.isEmpty()) // function name is valid { Debug::print(Debug::FindMembers,0, "1. funcName=`%s'\n",funcName.data()); - //if (funcTempList.length()>0) // try with member specialization + //if (!funcTempList.isEmpty()) // try with member specialization //{ // mn=memberNameDict[funcName+funcTempList]; //} @@ -2360,11 +2440,13 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded, { Debug::print(Debug::FindMembers,0, "2. member name exists \n"); - if (className.length()>0) // class name is valid + if (!className.isEmpty()) // class name is valid { int count=0; - MemberDef *md=mn->first(); // for each member with that name - while (md) + //MemberDef *md=mn->first(); // for each member with that name + MemberNameIterator mni(*mn); + MemberDef *md; + for (mni.toFirst();(md=mni.current());++mni) { Debug::print(Debug::FindMembers,0, "3. member definition found scopeName=`%s'\n",scopeName.data()); @@ -2380,7 +2462,7 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded, NamespaceDef *nd = 0; FileDef *fd = 0; NamespaceList *nl = 0; - if (namespaceName.length()>0 && (nd=namespaceDict[namespaceName])) + if (!namespaceName.isEmpty() && (nd=namespaceDict[namespaceName])) { nl=nd->getUsedNamespaces(); } @@ -2506,7 +2588,6 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded, count++; } } - md=mn->next(); } if (count==0) warn("Warning: no matching member found for \n%s\n" @@ -2602,7 +2683,7 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded, } } } - else if (isRelated && related.length()>0) + else if (isRelated && !related.isEmpty()) { if (className.isEmpty()) className=related.copy(); ClassDef *cd; @@ -2714,7 +2795,7 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded, } else // unrelated not overloaded member found { - if (className.length()==0 && + if (className.isEmpty() && !findUnrelatedFunction(root,namespaceName,funcName,funcTempList,funcArgs,funcDecl)) { warn("Warning: class for member %s (file %s at line %d) cannot " @@ -2775,33 +2856,24 @@ void findMemberDocumentation(Entry *root) findMember(root,root->name,root->relates,TRUE,isFunc); } else if - (root->section==Entry::FUNCTION_SEC && - (!root->doc.isEmpty() || !root->brief.isEmpty() || - root->bodyLine!=-1 || root->mGrpId!=-1 /*|| Config::extractAllFlag*/ - || root->inLine - ) + ((root->section==Entry::FUNCTION_SEC || // function + (root->section==Entry::VARIABLE_SEC && + !root->type.isEmpty() && root->type.left(8)!="typedef " && + root->type!="class" && root->type!="interface" && + root->type!="struct" && root->type!="union") + ) && + (!root->doc.isEmpty() || !root->brief.isEmpty() || + root->bodyLine!=-1 || root->mGrpId!=-1 /*|| Config::extractAllFlag*/ + || root->inLine + ) ) { //printf("Documentation for member `%s' found args=`%s' excp=`%s'\n", // root->name.data(),root->args.data(),root->exception.data()); //if (root->relates.length()) printf(" Relates %s\n",root->relates.data()); //printf("Inside=%s\n Relates=%s\n",root->inside.data(),root->relates.data()); - if (root->type.length()>0) + if (!root->type.isEmpty()) { - //if (root->tArgList && root->mtArgList) // add member template specifier - //{ - // findMember(root, - // root->type+" "+ - // root->inside+ - // root->name+ - // tempArgListToString(root->mtArgList)+ - // root->args+ - // root->exception, - // root->relates, - // FALSE,isFunc); - // - //else - // findMember(root, root->type+" "+ root->inside+ @@ -2826,7 +2898,7 @@ void findMemberDocumentation(Entry *root) else if (root->section==Entry::VARIABLEDOC_SEC) { //printf("Documentation for variable %s found\n",root->name.data()); - //if (root->relates.length()>0) printf(" Relates %s\n",root->relates.data()); + //if (!root->relates.isEmpty()) printf(" Relates %s\n",root->relates.data()); findMember(root,root->name,root->relates,FALSE,FALSE); } else @@ -2869,7 +2941,7 @@ void findEnums(Entry *root) else // no scope, check the scope in which the docs where found { if (( root->parent->section & Entry::SCOPE_MASK ) - && root->parent->name.length()>0 + && !root->parent->name.isEmpty() ) // found enum docs inside a compound { QCString scope=root->parent->name; @@ -2877,7 +2949,7 @@ void findEnums(Entry *root) } name=root->name.copy(); } - if (cd && name.length()>0) // found a enum inside a compound + if (cd && !name.isEmpty()) // found a enum inside a compound { //printf("Enum `%s'::`%s'\n",cd->name(),name.data()); fd=0; @@ -2899,7 +2971,7 @@ void findEnums(Entry *root) mnl=&functionNameList; isGlobal=TRUE; } - if (name.length()>0) + if (!name.isEmpty()) { // new enum type md = new MemberDef(0,name,0,0,root->protection,Normal,FALSE,FALSE, @@ -2953,7 +3025,7 @@ void findEnums(Entry *root) for (;(e=eli.current());++eli) { MemberName *fmn=0; - if (e->name.length()>0 && (fmn=(*mnd)[e->name])) + if (!e->name.isEmpty() && (fmn=(*mnd)[e->name])) // get list of members with the same name as the field { MemberDef *fmd=fmn->first(); @@ -3009,7 +3081,7 @@ void findEnums(Entry *root) void findEnumDocumentation(Entry *root) { if (root->section==Entry::ENUMDOC_SEC - && root->name.length()>0 + && !root->name.isEmpty() && root->name[0]!='@' // skip anonymous enums ) { @@ -3027,14 +3099,14 @@ void findEnumDocumentation(Entry *root) else // no scope, check the scope in which the docs where found { if (( root->parent->section & Entry::COMPOUND_MASK ) - && root->parent->name.length()>0 + && !root->parent->name.isEmpty() ) // found enum docs inside a compound { cd=getClass(root->parent->name); } name=root->name.copy(); } - if (name.length()>0) + if (!name.isEmpty()) { bool found=FALSE; if (cd) @@ -3051,14 +3123,14 @@ void findEnumDocumentation(Entry *root) if (cd && cd->name()==className) { // documentation outside a compound overrides the documentation inside it - if (!md->documentation() || root->parent->name.length()==0) + if (!md->documentation() || root->parent->name.isEmpty()) { md->setDocumentation(root->doc); } // brief descriptions inside a compound override the documentation // outside it - if (!md->briefDescription() || root->parent->name.length()>0) + if (!md->briefDescription() || !root->parent->name.isEmpty()) { md->setBriefDescription(root->brief); } @@ -3144,27 +3216,6 @@ void findDocumentedEnumValues() findDEV(functionNameList); } -//---------------------------------------------------------------------- -// recursive function: -// returns TRUE iff class definition `bcd' represents an (in)direct base -// class of class definition `cd'. - -bool isBaseClass(ClassDef *bcd,ClassDef *cd) -{ - bool found=FALSE; - //printf("isBaseClass(cd=%s) looking for %s\n",cd->name().data(),bcd->name().data()); - BaseClassListIterator bcli(*cd->baseClasses()); - for ( ; bcli.current() && !found ; ++bcli) - { - ClassDef *ccd=bcli.current()->classDef; - //printf("isBaseClass() baseclass %s\n",ccd->name().data()); - if (ccd==bcd) - found=TRUE; - else - found=isBaseClass(bcd,ccd); - } - return found; -} //---------------------------------------------------------------------- // computes the relation between all members. For each member `m' @@ -3190,7 +3241,7 @@ void computeMemberRelations() // mcd->name().data(),md->name().data(), // bmcd->name().data(),bmd->name().data() // ); - if (md!=bmd && bmcd && mcd && isBaseClass(bmcd,mcd)) + if (md!=bmd && bmcd && mcd && mcd->isBaseClass(bmcd)) { //printf(" Base argList=`%s'\n Super argList=`%s'\n", // argListToString(bmd->argumentList()).data(), @@ -3214,161 +3265,33 @@ void computeMemberRelations() } } -//---------------------------------------------------------------------------- -// recusively merges the `all members' lists of class cd's base classes -// with that of class `cd' itself. -void mergeMembers(ClassDef *cd,BaseClassList *bcl) +//---------------------------------------------------------------------------- +void computeClassImplUsageRelations() { - //if (mcd->flag==TRUE) - //{ - // err("Error: Cyclic inhertance dependency found for class %s\n",mcd->name()); - // return; - //} - //mcd->flag=TRUE; + ClassDef *cd; + ClassListIterator cli(classList); + for (;(cd=cli.current());++cli) + { + cd->determineImplUsageRelation(); + } +} - BaseClassListIterator bcli(*bcl); - BaseClassDef *bcd; - for ( ; (bcd=bcli.current()) ; ++bcli ) +//---------------------------------------------------------------------------- +#if 0 +void computeClassIntfUsageRelations() +{ + ClassDef *cd; + ClassListIterator cli(classList); + for (;(cd=cli.current());++cli) { - ClassDef *bClass=bcd->classDef; - // merge the members of bClass with the onces from cd - - mergeMembers(bClass,bClass->baseClasses()); - // the all member list of the branch until bClass is now complete - // so we can merge it with cd - - MemberNameInfoList *srcMnl = bClass->memberNameInfoList(); - MemberNameInfoDict *dstMnd = cd->memberNameInfoDict(); - MemberNameInfoList *dstMnl = cd->memberNameInfoList(); - - MemberNameInfoListIterator srcMnili(*srcMnl); - MemberNameInfo *srcMni; - for ( ; (srcMni=srcMnili.current()) ; ++srcMnili) - { - //printf("Base member name %s\n",srcMni->memberName()); - MemberNameInfo *dstMni; - if ((dstMni=dstMnd->find(srcMni->memberName()))) - // a member with that name is already in the class. - // the member may hide or reimplement the one in the super class - // or there may be another path to the base class that is already - // visited via another branch in the class hierarchy. - { - MemberNameInfoIterator srcMnii(*srcMni); - MemberInfo *srcMi; - for ( ; (srcMi=srcMnii.current()) ; ++srcMnii ) - { - MemberDef *srcMd = srcMi->memberDef; - bool found=FALSE; - bool ambigue=FALSE; - MemberNameInfoIterator dstMnii(*dstMni); - MemberInfo *dstMi; - for ( ; (dstMi=dstMnii.current()) && !found; ++dstMnii ) - { - MemberDef *dstMd = dstMi->memberDef; - if (srcMd!=dstMd) // different members - { - ClassDef *srcCd = srcMd->memberClass(); - ClassDef *dstCd = dstMd->memberClass(); - //printf("Is %s a base class of %s?\n",srcCd->name(),dstCd->name()); - if (srcCd==dstCd || isBaseClass(srcCd,dstCd)) - // member is in the same or a base class - { - found = - /*matchArguments(srcMd->argsString(),dstMd->argsString());*/ - matchArguments(srcMd->argumentList(),dstMd->argumentList()); - ambigue=!found; - } - else // member is in a non base class => multiple inheritance - // using the same base class. - { - //printf("$$ Existing member %s %s add scope %s\n", - // dstMi->ambiguityResolutionScope.data(), - // dstMd->name().data(), - // dstMi->scopePath.left(dstMi->scopePath.find("::")+2).data()); - - QCString scope=dstMi->scopePath.left(dstMi->scopePath.find("::")+2); - if (scope!=dstMi->ambiguityResolutionScope.left(scope.length())) - dstMi->ambiguityResolutionScope.prepend(scope); - ambigue=TRUE; - } - } - else // same members - { - // do not add if base class is virtual or - // if scope paths are equal - if ((srcMi->virt==Virtual && dstMi->virt==Virtual) || - bClass->name()+"::"+srcMi->scopePath == dstMi->scopePath - ) found=TRUE; - else // member can be reached via multiple paths in the - // inheritance tree - { - //printf("$$ Existing member %s %s add scope %s\n", - // dstMi->ambiguityResolutionScope.data(), - // dstMd->name().data(), - // dstMi->scopePath.left(dstMi->scopePath.find("::")+2).data()); - - QCString scope=dstMi->scopePath.left(dstMi->scopePath.find("::")+2); - if (scope!=dstMi->ambiguityResolutionScope.left(scope.length())) - dstMi->ambiguityResolutionScope.prepend(scope); - ambigue=TRUE; - } - } - } - if (!found && srcMd->protection()!=Private) - { - Specifier virt=srcMi->virt; - if (srcMi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt; - MemberInfo *newMi = new MemberInfo(srcMd,bcd->prot,virt); - newMi->scopePath=bClass->name()+"::"+srcMi->scopePath; - if (ambigue) - { - //printf("$$ New member %s %s add scope %s::\n", - // srcMi->ambiguityResolutionScope.data(), - // srcMd->name().data(), - // bClass->name().data()); - - QCString scope=bClass->name().copy(); scope+="::"; - if (scope!=srcMi->ambiguityResolutionScope.left(scope.length())) - newMi->ambiguityResolutionScope= - scope+srcMi->ambiguityResolutionScope; - } - dstMni->append(newMi); - } - } - } - else // base class has a member that is not in the super class => copy - { - // create a deep copy of the list (only the MemberInfo's will be - // copied, not the actual MemberDef's) - MemberNameInfo *newMni = new MemberNameInfo(srcMni->memberName()); - - // copy the member(s) from the base to the super class - MemberNameInfoIterator mnii(*srcMni); - MemberInfo *mi; - for (;(mi=mnii.current());++mnii) - { - if (mi->memberDef->protection()!=Private) - { - Specifier virt=mi->virt; - if (mi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt; - MemberInfo *newMi=new MemberInfo(mi->memberDef,bcd->prot,virt); - //if (mi->memberDef->memberClass()!=bClass) - newMi->scopePath=bClass->name()+"::"+mi->scopePath; - newMi->ambiguityResolutionScope=mi->ambiguityResolutionScope.copy(); - newMni->append(newMi); - } - } - - // add it to the list and dictionary - dstMnl->inSort(newMni); - dstMnd->insert(newMni->memberName(),newMni); - } - } + cd->determineIntfUsageRelation(); } } +#endif //---------------------------------------------------------------------------- + // builds the list of all members for each class void buildCompleteMemberLists() @@ -3384,8 +3307,9 @@ void buildCompleteMemberLists() cd->superClasses()->count()==0 && // is a root of the hierarchy cd->baseClasses()->count()>0) // and has at least one base class { + cd->mergeMembers(); //printf("merging members for class %s\n",cd->name()); - mergeMembers(cd,cd->baseClasses()); + //mergeMembers(cd,cd->baseClasses()); } } } @@ -3405,11 +3329,22 @@ void generateFileDocs() FileDef *fd=fn->first(); while (fd) { - if (fd->isLinkableInProject()) + bool doc = fd->isLinkableInProject(); + bool src = fd->generateSource() || + (!fd->isReference() && Config::sourceBrowseFlag); + if (doc || src) { msg("Generating docs for file %s...\n",fd->name().data()); + } + if (doc) + { fd->writeDocumentation(*outputList); } + if (src) // TODO: can this be TRUE for tag files? + { + fd->writeSource(*outputList); + } + fd=fn->next(); } fn=inputNameList.next(); @@ -3419,29 +3354,29 @@ void generateFileDocs() //---------------------------------------------------------------------------- -void generateSources() -{ - if (Config::sourceBrowseFlag) - { - writeSourceIndex(*outputList); - - if (inputNameList.count()>0) - { - FileName *fn=inputNameList.first(); - while (fn) - { - FileDef *fd=fn->first(); - while (fd && !fd->isReference()) - { - msg("Generating source listing for file %s...\n",fd->name().data()); - fd->writeSource(*outputList); - fd=fn->next(); - } - fn=inputNameList.next(); - } - } - } -} +//void generateSources() +//{ +// if (Config::sourceBrowseFlag) +// { +// writeSourceIndex(*outputList); +// +// if (inputNameList.count()>0) +// { +// FileName *fn=inputNameList.first(); +// while (fn) +// { +// FileDef *fd=fn->first(); +// while (fd && !fd->isReference()) +// { +// msg("Generating source listing for file %s...\n",fd->name().data()); +// fd->writeSource(*outputList); +// fd=fn->next(); +// } +// fn=inputNameList.next(); +// } +// } +// } +//} void addSourceReferences() { @@ -3526,11 +3461,11 @@ void generateClassDocs() msg("Generating hierarchical class index...\n"); writeHierarchicalIndex(*outputList); - if (documentedIncludeFiles>0) - { - msg("Generating header index...\n"); - writeHeaderIndex(*outputList); - } + //if (documentedIncludeFiles>0) + //{ + // msg("Generating header index...\n"); + // writeHeaderIndex(*outputList); + //} msg("Generating member index...\n"); writeMemberIndex(*outputList); @@ -3551,7 +3486,11 @@ void generateClassDocs() cd->writeDocumentation(*outputList); cd->writeMemberList(*outputList); - if (Config::verbatimHeaderFlag) cd->writeIncludeFile(*outputList); + + //DotGfxUsageGraph usageIntfGraph(cd,FALSE,1); + //usageIntfGraph.writeGraph(Config::htmlOutputDir,FALSE); + + //if (Config::verbatimHeaderFlag) cd->writeIncludeFile(*outputList); } } } @@ -3594,7 +3533,7 @@ void inheritDocumentation() void findDefineDocumentation(Entry *root) { if ((root->section==Entry::DEFINEDOC_SEC || - root->section==Entry::DEFINE_SEC) && root->name.length()>0 + root->section==Entry::DEFINE_SEC) && !root->name.isEmpty() ) { //printf("found define `%s' `%s' brief=`%s' doc=`%s'\n", @@ -3629,7 +3568,11 @@ void findDefineDocumentation(Entry *root) } } else if (count>1 && - (root->doc.length()>0 || root->brief.length()>0 || root->bodyLine!=-1)) + (!root->doc.isEmpty() || + !root->brief.isEmpty() || + root->bodyLine!=-1 + ) + ) // multiple defines don't know where to add docs // but maybe they are in different files together with their documentation { @@ -3660,7 +3603,7 @@ void findDefineDocumentation(Entry *root) // root->startLine,root->fileName.data()); } } - else if (root->doc.length()>0 || root->brief.length()>0) // define not found + else if (!root->doc.isEmpty() || !root->brief.isEmpty()) // define not found { warn("Warning: documentation for unknown define %s found at line %d of " "file %s\n",root->name.data(),root->startLine,root->fileName.data()); @@ -3683,7 +3626,7 @@ void buildPageList(Entry *root) { if (root->section == Entry::PAGEDOC_SEC) { - if (root->name.length()>0) + if (!root->name.isEmpty()) { PageInfo *pi=0; if ((pi=pageDict[root->name])) @@ -3713,7 +3656,7 @@ void buildPageList(Entry *root) pageList.append(pi); pageDict.insert(baseName,pi); - if (pi->title.length()>0) + if (!pi->title.isEmpty()) { //outputList->writeTitle(pi->name,pi->title); @@ -3792,7 +3735,7 @@ void resolveUserReferences() // outputList->disable(OutputGenerator::Man); // startFile(*outputList,mainPage->name,mainPage->title); // SectionInfo *si=0; -// if (mainPage->title.length()>0 && mainPage->name.length()>0 && +// if (!mainPage->title.isEmpty() && !mainPage->name.isEmpty() && // (si=sectionDict[mainPage->name])!=0) // { // outputList->writeSection(si->label,si->title,FALSE); @@ -3818,12 +3761,14 @@ void generatePageDocs() startFile(*outputList,pageName,pi->title); SectionInfo *si=0; - if (pi->title.length()>0 && pi->name.length()>0 && + if (!pi->title.isEmpty() && !pi->name.isEmpty() && (si=sectionDict[pi->name])!=0) { outputList->writeSection(si->label,si->title,FALSE); } + outputList->startTextBlock(); parseDoc(*outputList,0,0,pi->doc); + outputList->endTextBlock(); endFile(*outputList); outputList->enable(OutputGenerator::Man); pi=pageList.next(); @@ -3837,7 +3782,7 @@ void buildExampleList(Entry *root) { if (root->section == Entry::EXAMPLE_SEC) { - if (root->name.length()>0) + if (!root->name.isEmpty()) { if (exampleDict[root->name]) { @@ -4385,7 +4330,7 @@ int readDir(QFileInfo *fi, { FileDef *fd=new FileDef(cfi->dirPath()+"/",name); FileName *fn=0; - if (name.length()>0 && (fn=(*fnDict)[name])) + if (!name.isEmpty() && (fn=(*fnDict)[name])) { fn->append(fd); } @@ -4486,7 +4431,7 @@ int readFileOrDirectory(const char *s, { FileDef *fd=new FileDef(fi.dirPath(TRUE)+"/",name); FileName *fn=0; - if (name.length()>0 && (fn=(*fnDict)[name])) + if (!name.isEmpty() && (fn=(*fnDict)[name])) { fn->append(fd); } @@ -4550,7 +4495,7 @@ void readFormulaRepository() void usage(const char *name) { - msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-1999\n\n",versionString); + msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2000\n\n",versionString); msg("You can use doxygen in two ways:\n\n"); msg("1) Use doxygen to generate a template configuration file:\n"); msg(" %s [-s] -g [configName]\n\n",name); @@ -4679,6 +4624,11 @@ int main(int argc,char **argv) outputList->add(new ManGenerator); ManGenerator::init(); } + if (Config::generateRTF) + { + outputList->add(new RTFGenerator); + RTFGenerator::init(); + } /************************************************************************** * Read and preprocess input * @@ -4738,7 +4688,7 @@ int main(int argc,char **argv) BufStr input(inputSize+1); // Add one byte extra for \0 termination readFiles(input); - if (input.length()==0) + if (input.isEmpty()) { warn("No input read, no output generated!\n"); exit(1); @@ -4762,7 +4712,7 @@ int main(int argc,char **argv) } QFile *tag =new QFile(Config::genTagFile); - if (Config::genTagFile.length()>0) + if (!Config::genTagFile.isEmpty()) { if (!tag->open(IO_WriteOnly)) { @@ -4820,9 +4770,6 @@ int main(int argc,char **argv) msg("Search for main page...\n"); findMainPage(root); -// msg("Adding compounds to file pages...\n"); -// findClassDefsInFiles(root); - msg("Building member list...\n"); // using class info only ! buildMemberList(root); transferFunctionDocumentation(); @@ -4863,9 +4810,18 @@ int main(int argc,char **argv) msg("Computing member relations...\n"); computeMemberRelations(); + if (Config::haveDotFlag && Config::collGraphFlag) + { + msg("Computing class implementation usage relations...\n"); + computeClassImplUsageRelations(); + } + msg("Building full member lists recursively...\n"); buildCompleteMemberLists(); + //msg("Computing class interface usage relations...\n"); + //computeClassIntfUsageRelations(); + msg("Determining member group documentation...\n"); computeMemberGroupDocumentation(); @@ -4879,11 +4835,14 @@ int main(int argc,char **argv) msg("Inheriting documentation...\n"); inheritDocumentation(); } - + /************************************************************************** * Generate documentation * **************************************************************************/ + if (Config::generateHtml) writeDoxFont(Config::htmlOutputDir); + if (Config::generateRTF) writeDoxFont(Config::rtfOutputDir); + // count the number of documented elements in the lists we have built. // If the result is 0 we do not generate the lists and omit the // corresponding links in the index. @@ -4896,7 +4855,7 @@ int main(int argc,char **argv) documentedGroups = countGroups(); documentedNamespaces = countNamespaces(); documentedNamespaceMembers = countNamespaceMembers(); - documentedIncludeFiles = countIncludeFiles(); + //documentedIncludeFiles = countIncludeFiles(); // compute the shortest possible names of all files // without loosing the uniqueness of the file names. @@ -4912,9 +4871,6 @@ int main(int argc,char **argv) msg("Generating file documentation...\n"); generateFileDocs(); - msg("Generating source listings...\n"); - generateSources(); - msg("Generating class documentation...\n"); generateClassDocs(); @@ -4942,9 +4898,6 @@ int main(int argc,char **argv) msg("Generating namespace member index...\n"); writeNamespaceMemberIndex(*outputList); -// msg("Generating define index...\n"); -// writeDefineIndex(*outputList); - msg("Generating page index...\n"); writePageIndex(*outputList); @@ -4968,6 +4921,22 @@ int main(int argc,char **argv) outputList->writeStyleInfo(4); // write last part outputList->enableAll(); + if (Config::generateRTF) + { + msg("Combining RTF output...\n"); + if (!RTFGenerator::preProcessFileInplace(Config::rtfOutputDir,"refman.rtf")) + { + err("Error processing RTF files!\n"); + exit(1); + } + } + + if (Config::haveDotFlag && Config::gfxHierarchyFlag) + { + msg("Generating graphical class hierarchy...\n"); + writeGraphicalClassHierarchy(*outputList); + } + if (formulaList.count()>0 && Config::generateHtml) { msg("Generating bitmaps for formulas in HTML...\n"); @@ -4987,6 +4956,9 @@ int main(int argc,char **argv) HtmlHelp::getInstance()->finalize(); } + if (Config::generateHtml) removeDoxFont(Config::htmlOutputDir); + if (Config::generateRTF) removeDoxFont(Config::rtfOutputDir); + delete tag; return 0; } diff --git a/src/doxygen.h b/src/doxygen.h index b6e0ef4..a6fba5b 100644 --- a/src/doxygen.h +++ b/src/doxygen.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -106,7 +106,7 @@ extern FileNameDict includeNameDict; extern FileNameDict exampleNameDict; extern FileNameDict inputNameDict; extern FileNameDict imageNameDict; -extern FileList includeFiles; +//extern FileList includeFiles; extern StringDict typedefDict; extern GroupList groupList; extern GroupDict groupDict; diff --git a/src/doxygen.pro.in b/src/doxygen.pro.in index e36c7e2..67591ad 100644 --- a/src/doxygen.pro.in +++ b/src/doxygen.pro.in @@ -23,7 +23,8 @@ HEADERS = doxygen.h scanner.h classdef.h classlist.h memberdef.h \ filename.h defargs.h groupdef.h gifenc.h diagram.h image.h \ namespacedef.h version.h language.h translator.h \ translator_nl.h translator_se.h translator_cz.h translator_fr.h \ - translator_it.h formula.h debug.h membergroup.h htmlhelp.h + translator_it.h formula.h debug.h membergroup.h htmlhelp.h \ + dot.h rtfgen.h SOURCES = doxygen.cpp scanner.cpp classdef.cpp classlist.cpp memberdef.cpp \ membername.cpp index.cpp memberlist.cpp \ entry.cpp logos.cpp instdox.cpp message.cpp code.cpp \ @@ -33,7 +34,7 @@ SOURCES = doxygen.cpp scanner.cpp classdef.cpp classlist.cpp memberdef.cpp tag.cpp filename.cpp declinfo.cpp defargs.cpp define.cpp \ diagram.cpp gifenc.cpp image.cpp namespacedef.cpp \ version.cpp language.cpp definition.cpp formula.cpp debug.cpp \ - membergroup.cpp htmlhelp.cpp + membergroup.cpp htmlhelp.cpp dot.cpp rtfgen.cpp win32:INCLUDEPATH += . TARGET = ../bin/doxygen OBJECTS_DIR = ../objects diff --git a/src/doxysearch.cpp b/src/doxysearch.cpp index 027b185..867ef94 100644 --- a/src/doxysearch.cpp +++ b/src/doxysearch.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -905,7 +905,11 @@ int main(int argc,char **argv) if (c=='+') *d++=' '; else if (c=='%') - *d++=asciiToHex(*s++)*16+asciiToHex(*s++); + { + *d=asciiToHex(*s++)*16; + *d+=asciiToHex(*s++); + d++; + } else *d++=c; } diff --git a/src/doxytag.cpp b/src/doxytag.cpp index 0ed8ae7..e31593e 100644 --- a/src/doxytag.cpp +++ b/src/doxytag.cpp @@ -756,7 +756,7 @@ char *yytext; * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -895,9 +895,9 @@ static void addReference() { //printf("addReference() key: %s ref:%s\n", // docRefName.data(),(docBaseLink+"#"+docAnchor).data()); - if (genIndex && docRefName.length()>0 && docBaseLink.length()>0) + if (genIndex && !docRefName.isEmpty() && !docBaseLink.isEmpty()) { - if (docAnchor.length()==0) + if (!docAnchor.isEmpty()) searchIndex.addReference(docRefName,docBaseLink); else searchIndex.addReference(docRefName,docBaseLink+"#"+docAnchor); @@ -1275,7 +1275,7 @@ YY_RULE_SETUP //printf("tag: %s#%s ref: %s word: `%s'\n", // docBaseLink.data(),docAnchor.data(), // docRefName.data(),yytext); - if (genIndex && docRefName.length()>0 && yyleng>2) + if (genIndex && !docRefName.isEmpty() && yyleng>2) searchIndex.addWord(docRefName, yytext,FALSE ); @@ -1530,7 +1530,7 @@ YY_RULE_SETUP #line 359 "doxytag.l" { //printf("SearchArg className=%s memberName=%s\n",className.data(),memberName.data()); - if (className.length()>0 && memberName.length()>0) + if (!className.isEmpty() && !memberName.isEmpty()) BEGIN( ReadArgs ); else BEGIN( Start ); @@ -2599,7 +2599,7 @@ void parseFileOrDir(const char *fileName) void usage(const char *name) { - fprintf(stderr,"Doxytag version %s\nCopyright Dimitri van Heesch 1997-1999\n\n", + fprintf(stderr,"Doxytag version %s\nCopyright Dimitri van Heesch 1997-2000\n\n", versionString); fprintf(stderr," Generates a tag file and/or a search index for a set of HTML files\n\n"); fprintf(stderr,"Usage: %s [-t tag_file] [-s index_file] [ html_file [html_file...] ]\n",name); @@ -2656,8 +2656,8 @@ int main(int argc,char **argv) optind++; } - genTag = tagName.length()>0; - genIndex = indexName.length()>0; + genTag = !tagName.isEmpty(); + genIndex = !indexName.isEmpty(); if (!genTag && !genIndex) { diff --git a/src/doxytag.l b/src/doxytag.l index 4110824..a72a53b 100644 --- a/src/doxytag.l +++ b/src/doxytag.l @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -142,9 +142,9 @@ static void addReference() { //printf("addReference() key: %s ref:%s\n", // docRefName.data(),(docBaseLink+"#"+docAnchor).data()); - if (genIndex && docRefName.length()>0 && docBaseLink.length()>0) + if (genIndex && !docRefName.isEmpty() && !docBaseLink.isEmpty()) { - if (docAnchor.length()==0) + if (!docAnchor.isEmpty()) searchIndex.addReference(docRefName,docBaseLink); else searchIndex.addReference(docRefName,docBaseLink+"#"+docAnchor); @@ -226,7 +226,7 @@ QCString unhtmlify(const char *str) //printf("tag: %s#%s ref: %s word: `%s'\n", // docBaseLink.data(),docAnchor.data(), // docRefName.data(),yytext); - if (genIndex && docRefName.length()>0 && yyleng>2) + if (genIndex && !docRefName.isEmpty() && yyleng>2) searchIndex.addWord(docRefName, yytext,FALSE ); @@ -358,7 +358,7 @@ QCString unhtmlify(const char *str) } <SearchArgs>"</a>" { //printf("SearchArg className=%s memberName=%s\n",className.data(),memberName.data()); - if (className.length()>0 && memberName.length()>0) + if (!className.isEmpty() && !memberName.isEmpty()) BEGIN( ReadArgs ); else BEGIN( Start ); @@ -478,7 +478,7 @@ void parseFileOrDir(const char *fileName) void usage(const char *name) { - fprintf(stderr,"Doxytag version %s\nCopyright Dimitri van Heesch 1997-1999\n\n", + fprintf(stderr,"Doxytag version %s\nCopyright Dimitri van Heesch 1997-2000\n\n", versionString); fprintf(stderr," Generates a tag file and/or a search index for a set of HTML files\n\n"); fprintf(stderr,"Usage: %s [-t tag_file] [-s index_file] [ html_file [html_file...] ]\n",name); @@ -535,8 +535,8 @@ int main(int argc,char **argv) optind++; } - genTag = tagName.length()>0; - genIndex = indexName.length()>0; + genTag = !tagName.isEmpty(); + genIndex = !indexName.isEmpty(); if (!genTag && !genIndex) { diff --git a/src/entry.cpp b/src/entry.cpp index 1c4d27e..8d4b9f2 100644 --- a/src/entry.cpp +++ b/src/entry.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -68,6 +68,7 @@ Entry::Entry(const Entry &e) bodyLine = e.bodyLine; endBodyLine = e.endBodyLine; inLine = e.inLine; + initializer = e.initializer; sublist = new QList<Entry>; sublist->setAutoDelete(TRUE); extends = new QList<BaseInfo>; @@ -203,6 +204,7 @@ void Entry::reset() fileName.resize(0); scopeSpec.resize(0); memberSpec.resize(0); + initializer.resize(0); bodyLine = -1; endBodyLine = -1; mGrpId = -1; @@ -240,6 +242,7 @@ int Entry::getSize() size+=brief.length()+1; size+=inside.length()+1; size+=fileName.length()+1; + size+=initializer.length()+1; BaseInfo *bi=extends->first(); while (bi) { @@ -302,3 +305,18 @@ int Entry::getSize() } return size; } + +/*! the argument list is documented if one of its + * arguments is documented + */ +bool ArgumentList::hasDocumentation() const +{ + bool hasDocs=FALSE; + ArgumentListIterator ali(*this); + Argument *a; + for (ali.toFirst();!hasDocs && (a=ali.current());++ali) + { + hasDocs = hasDocs || a->hasDocumentation(); + } + return hasDocs; +} diff --git a/src/entry.h b/src/entry.h index f78aa39..9141bbd 100644 --- a/src/entry.h +++ b/src/entry.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -26,7 +26,7 @@ enum Specifier { Normal, Virtual, Pure } ; struct BaseInfo { BaseInfo(const char *n,Protection p,Specifier v) : name(n),prot(p),virt(v) {} - QCString name; // the name of the base class + QCString name; // the name of the base class Protection prot; // inheritance type Specifier virt; // virtualness }; @@ -40,6 +40,8 @@ struct Argument type=a.type.copy(); name=a.name.copy(); defval=a.defval.copy(); + docs=a.docs.copy(); + array=a.array.copy(); } Argument &operator=(const Argument &a) { @@ -49,14 +51,22 @@ struct Argument type=a.type.copy(); name=a.name.copy(); defval=a.defval.copy(); + docs=a.docs.copy(); + array=a.array.copy(); } return *this; } + bool hasDocumentation() const + { + return !name.isEmpty() && !docs.isEmpty(); + } - QCString attrib; // argument attribute (IDL only) - QCString type; // argument type - QCString name; // argument name (if any) - QCString defval; // argument default value (if any) + QCString attrib; // argument attribute (IDL only) + QCString type; // argument type + QCString name; // argument name (if any) + QCString array; // argument array specifier (if any) + QCString defval; // argument default value (if any) + QCString docs; // arguments documentation (if any) }; class ArgumentList : public QList<Argument> @@ -67,6 +77,7 @@ class ArgumentList : public QList<Argument> constSpecifier(FALSE), volatileSpecifier(FALSE), pureSpecifier(FALSE) {} + bool hasDocumentation() const; bool constSpecifier; bool volatileSpecifier; bool pureSpecifier; @@ -74,6 +85,9 @@ class ArgumentList : public QList<Argument> typedef QListIterator<Argument> ArgumentListIterator; +/*! Raw entry. parseMain() in scanner.l will generate a tree of these + * entries. + */ class Entry { public: @@ -141,6 +155,7 @@ class Entry QCString scopeSpec; // template specialization of the scope QCString memberSpec; // template specialization of the member QCString program; // the program text + QCString initializer; // initial value (for variables) int bodyLine; // line number of the definition in the source int endBodyLine; // line number where the definition ends QCString includeFile; // include file (2 arg of \class, must be unique) diff --git a/src/example.h b/src/example.h index 6c79288..bd4fa08 100644 --- a/src/example.h +++ b/src/example.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/filedef.cpp b/src/filedef.cpp index 57b33cb..d81b602 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -27,6 +27,8 @@ #include "util.h" #include "language.h" #include "outputlist.h" +#include "dot.h" +#include "message.h" /*! create a new file definition, where \a p is the file path, \a the file name, and \a ref is an HTML anchor name if the @@ -40,22 +42,31 @@ FileDef::FileDef(const char *p,const char *nm,const char *ref) filename=nameToFile(nm); diskname=filename.copy(); setReference(ref); - memList = new MemberList; + //memList = new MemberList; classList = new ClassList; - includeList = new FileList; + includeList = new QList<IncludeInfo>; + includeList->setAutoDelete(TRUE); + includeDict = new QDict<IncludeInfo>(61); defineList = new DefineList; namespaceList = new NamespaceList; namespaceDict = new NamespaceDict(7); srcDefDict = 0; srcAnchorDict = 0; usingList = 0; + isSource = Config::extractAllFlag; + docname = nm; + if (Config::fullPathNameFlag) + { + docname.prepend(stripFromPath(path.copy())); + } } /*! destroy the file definition */ FileDef::~FileDef() { - delete memList; + //delete memList; delete classList; + delete includeDict; delete includeList; delete defineList; delete namespaceList; @@ -68,7 +79,7 @@ FileDef::~FileDef() /*! Compute the HTML anchor names for all members in the class */ void FileDef::computeAnchors() { - setAnchors('a',memList); + setAnchors('a',&allMemberList); } /*! Write the documentation page for this file to the file of output @@ -78,21 +89,22 @@ void FileDef::writeDocumentation(OutputList &ol) { //funcList->countDecMembers(); - QCString fn = name(); - if (Config::fullPathNameFlag) - { - fn.prepend(stripFromPath(getPath().copy())); - } + //QCString fn = name(); + //if (Config::fullPathNameFlag) + //{ + // fn.prepend(stripFromPath(getPath().copy())); + //} QCString pageTitle=name()+" File Reference"; startFile(ol,diskname,pageTitle); startTitle(ol,getOutputFileBase()); - parseText(ol,theTranslator->trFileReference(fn)); - endTitle(ol,getOutputFileBase(),fn); + parseText(ol,theTranslator->trFileReference(docname)); + endTitle(ol,getOutputFileBase(),getOutputFileBase()); //ol.newParagraph(); - if (Config::genTagFile.length()>0) tagFile << "&" << name() << ":\n"; + if (!Config::genTagFile.isEmpty()) tagFile << "&" << name() << ":\n"; + ol.startTextBlock(); //brief=brief.stripWhiteSpace(); //int bl=brief.length(); OutputList briefOutput(&ol); @@ -108,12 +120,88 @@ void FileDef::writeDocumentation(OutputList &ol) parseText(ol,theTranslator->trMore()); ol.endTextLink(); ol.enableAll(); + ol.disable(OutputGenerator::Man); + ol.newParagraph(); + ol.enable(OutputGenerator::Man); } - ol.disable(OutputGenerator::Man); - ol.newParagraph(); - ol.enable(OutputGenerator::Man); ol.writeSynopsis(); + ol.startTextBlock(TRUE); + QListIterator<IncludeInfo> ili(*includeList); + IncludeInfo *ii; + for (;(ii=ili.current());++ili) + { + FileDef *fd=ii->fileDef; + ol.startTypewriter(); + ol.docify("#include "); + if (ii->local) + ol.docify("\""); + else + ol.docify("<"); + ol.disable(OutputGenerator::Html); + ol.docify(ii->includeName); + ol.enableAll(); + ol.disableAllBut(OutputGenerator::Html); + if (fd && fd->isLinkable() && + (fd->generateSource() || Config::sourceBrowseFlag) + ) + { + ol.writeObjectLink(fd->getReference(),fd->includeName(),0,ii->includeName); + } + else + { + ol.docify(ii->includeName); + } + ol.enableAll(); + if (ii->local) + ol.docify("\""); + else + ol.docify(">"); + ol.endTypewriter(); + ol.disable(OutputGenerator::RTF); + ol.lineBreak(); + ol.enableAll(); + ol.disableAllBut(OutputGenerator::RTF); + ol.newParagraph(); + ol.enableAll(); + } + ol.endTextBlock(); + + if (Config::haveDotFlag && Config::includeGraphFlag) + { + //printf("Graph for file %s\n",name().data()); + DotInclDepGraph incDepGraph(this); + if (!incDepGraph.isTrivial()) + { + ol.disableAllBut(OutputGenerator::Html); + ol.newParagraph(); + ol.startInclDepGraph(); + parseText(ol,theTranslator->trInclDepGraph(name())); + ol.endInclDepGraph(incDepGraph); + ol.enableAll(); + } + //incDepGraph.writeGraph(Config::htmlOutputDir,fd->getOutputFileBase()); + } + + if (generateSource() || (!isReference() && Config::sourceBrowseFlag)) + { + ol.disableAllBut(OutputGenerator::Html); + ol.newParagraph(); + ol.startTextLink(includeName(),0); + parseText(ol,theTranslator->trGotoSourceCode()); + ol.endTextLink(); + ol.enableAll(); + } + + //ol.disableAllBut(OutputGenerator::Html); + //ol.writeString((QCString)"<p>Interface collaboration diagram for " + // "<a href=\"usage_intf_graph_"+name()+".html\">here</a>"); + //ol.writeString((QCString)"<p>Include dependency diagram for "+fn+" can be found "+ + // "<a href=\""+diskname+"_incldep.html\">here</a>."); + //ol.enableAll(); + + ol.endTextBlock(); + ol.startMemberSections(); if (namespaceList->count()>0) @@ -202,7 +290,7 @@ void FileDef::writeDocumentation(OutputList &ol) if (found) ol.endMemberList(); } - memList->writeDeclarations(ol,0,0,this,0,0); + allMemberList.writeDeclarations(ol,0,0,this,0,0); ol.endMemberSections(); //doc=doc.stripWhiteSpace(); @@ -212,10 +300,14 @@ void FileDef::writeDocumentation(OutputList &ol) startBodyLine!=-1) { ol.writeRuler(); - bool latexOn = ol.isEnabled(OutputGenerator::Latex); - if (latexOn) ol.disable(OutputGenerator::Latex); + ol.pushGeneratorState(); + //bool latexOn = ol.isEnabled(OutputGenerator::Latex); + //if (latexOn) ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::RTF); ol.writeAnchor("_details"); - if (latexOn) ol.enable(OutputGenerator::Latex); + //if (latexOn) ol.enable(OutputGenerator::Latex); + ol.popGeneratorState(); ol.startGroupHeader(); parseText(ol,theTranslator->trDetailedDescription()); ol.endGroupHeader(); @@ -250,69 +342,75 @@ void FileDef::writeDocumentation(OutputList &ol) } } - memList->countDocMembers(); - - if ( memList->defineCount()>0 ) + //memList->countDocMembers(); + defineMembers.countDocMembers(); + if ( /*memList->defineCount()>0*/ defineMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trDefineDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::Define); + /*memList->*/defineMembers.writeDocumentation(ol,name()/*,MemberDef::Define*/); } - if ( memList->protoCount()>0 ) + protoMembers.countDocMembers(); + if ( /*memList->protoCount()>0*/ protoMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trFunctionPrototypeDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::Prototype); + /*memList->*/protoMembers.writeDocumentation(ol,name()/*,MemberDef::Prototype*/); } - if ( memList->typedefCount()>0 ) + typedefMembers.countDocMembers(); + if ( /*memList->typedefCount()>0*/ typedefMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trTypedefDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::Typedef); + /*memList->*/typedefMembers.writeDocumentation(ol,name()/*,MemberDef::Typedef*/); } - if ( memList->enumCount()>0 ) + enumMembers.countDocMembers(); + if ( /*memList->enumCount()>0*/ enumMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trEnumerationTypeDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::Enumeration); + /*memList->*/enumMembers.writeDocumentation(ol,name()/*,MemberDef::Enumeration*/); } - if ( memList->enumValueCount()>0 ) + enumValMembers.countDocMembers(); + if ( /*memList->enumValueCount()>0*/ enumValMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trEnumerationValueDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::EnumValue); + /*memList->*/enumValMembers.writeDocumentation(ol,name()/*,MemberDef::EnumValue*/); } - if ( memList->funcCount()>0 ) + funcMembers.countDocMembers(); + if ( /*memList->funcCount()>0*/ funcMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trFunctionDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::Function); + /*memList->*/funcMembers.writeDocumentation(ol,name()/*,MemberDef::Function*/); } - if ( memList->varCount()>0 ) + varMembers.countDocMembers(); + if ( /*memList->varCount()>0*/ varMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trVariableDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::Variable); + /*memList->*/varMembers.writeDocumentation(ol,name()/*,MemberDef::Variable*/); } // write Author section (Man only) @@ -328,18 +426,27 @@ void FileDef::writeDocumentation(OutputList &ol) /*! Write a source listing of this file to the output */ void FileDef::writeSource(OutputList &ol) { - QCString fn=name(); - if (Config::fullPathNameFlag) - { - fn.prepend(stripFromPath(getPath().copy())); - } + //QCString fn=name(); + //if (Config::fullPathNameFlag) + //{ + // fn.prepend(stripFromPath(getPath().copy())); + //} ol.disableAllBut(OutputGenerator::Html); - startFile(ol,sourceName(),fn+" Source File"); + startFile(ol,sourceName(),docname+" Source File"); startTitle(ol,0); - parseText(ol,fn); + parseText(ol,docname); endTitle(ol,0,0); + + if (isLinkable()) + { + ol.startTextLink(getOutputFileBase(),0); + parseText(ol,theTranslator->trGotoDocumentation()); + ol.endTextLink(); + } + //parseText(ol,theTranslator->trVerbatimText(incFile->name())); //ol.writeRuler(); + initParseCodeContext(); ol.startCodeFragment(); parseCode(ol,0,fileToString(absFilePath()),FALSE,0,this); ol.endCodeFragment(); @@ -350,7 +457,19 @@ void FileDef::writeSource(OutputList &ol) /*! Adds member definition \a md to the list of all members of this file */ void FileDef::insertMember(MemberDef *md) { - memList->append(md); + allMemberList.append(md); + switch(md->memberType()) + { + case MemberDef::Variable: varMembers.inSort(md); break; + case MemberDef::Function: funcMembers.inSort(md); break; + case MemberDef::Typedef: typedefMembers.inSort(md); break; + case MemberDef::Enumeration: enumMembers.inSort(md); break; + case MemberDef::EnumValue: enumValMembers.inSort(md); break; + case MemberDef::Prototype: protoMembers.inSort(md); break; + case MemberDef::Define: defineMembers.inSort(md); break; + default: + err("FileDef::insertMembers(): unexpected member insert in file!\n"); + } } /*! Adds compound definition \a cd to the list of all compounds of this file */ @@ -416,6 +535,22 @@ void FileDef::addUsingDirective(NamespaceDef *nd) usingList->append(nd); } +void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local) +{ + QCString iName = fd ? fd->absFilePath().data() : incName; + if (!iName.isEmpty() && includeDict->find(iName)==0) + { + //printf("Adding include dependency `%s' to `%s'\n", + // fd->name().data(),name().data()); + IncludeInfo *ii = new IncludeInfo; + ii->fileDef = fd; + ii->includeName = incName; + ii->local = local; + includeList->append(ii); + includeDict->insert(iName,ii); + } +} + //----------------------------------------------------------------------------- /*! Creates a file list. */ @@ -431,11 +566,12 @@ FileList::~FileList() /*! Compares two files by name. */ int FileList::compareItems(GCI item1, GCI item2) { - FileDef *c1=(FileDef *)item1; - FileDef *c2=(FileDef *)item2; + FileDef *f1=(FileDef *)item1; + FileDef *f2=(FileDef *)item2; + ASSERT(f1!=0 && f2!=0); return Config::fullPathNameFlag ? - strcmp(c1->absFilePath(),c2->absFilePath()) : - strcmp(c1->name(),c2->name()); + strcmp(f1->absFilePath(),f2->absFilePath()) : + strcmp(f1->name(),f2->name()); } /*! Create a file list iterator. */ diff --git a/src/filedef.h b/src/filedef.h index 993a26e..a129fe6 100644 --- a/src/filedef.h +++ b/src/filedef.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -20,10 +20,12 @@ #include "index.h" #include <qlist.h> #include <qintdict.h> +#include <qdict.h> #include "config.h" #include "definition.h" +#include "memberlist.h" -class MemberList; +class FileDef; class FileList; class ClassList; class ClassDef; @@ -34,6 +36,15 @@ class NamespaceDef; class NamespaceList; class NamespaceDict; +struct IncludeInfo +{ + IncludeInfo() { fileDef=0; local=FALSE; } + ~IncludeInfo() {} + FileDef *fileDef; + QCString includeName; + bool local; +}; + /*! \class FileDef filedef.h \brief A File definition. @@ -69,14 +80,17 @@ class FileDef : public Definition QCString absFilePath() const { return filepath; } /*! Returns the name of the verbatim copy of this file (if any). */ - const char *includeName() const { return incName; } + QCString includeName() const { return diskname+"-source"; } + + /*! Returns the name as it is used in the documentation */ + QCString docName() const { return docname; } void addSourceRef(int line,Definition *d,const char *anchor); Definition *getSourceDefinition(int lineNr); QCString getSourceAnchor(int lineNr); - /*! Sets the name of the include file to \a n. */ - void setIncludeName(const char *n_) { incName=n_; } + /* Sets the name of the include file to \a n. */ + //void setIncludeName(const char *n_) { incName=n_; } /*! Returns the absolute path of this file. */ QCString getPath() const { return path; } @@ -102,10 +116,25 @@ class FileDef : public Definition void addUsingDirective(NamespaceDef *nd); NamespaceList *getUsedNamespaces() const { return usingList; } + void setGenerateSource(bool b) { isSource=b; } + bool generateSource() const { return isSource; } + void addIncludeDependency(FileDef *fd,const char *incName,bool local); + QList<IncludeInfo> *includeFileList() const { return includeList; } + QDict<IncludeInfo> *includeFileDict() const { return includeDict; } + private: - MemberList *memList; + MemberList allMemberList; + MemberList defineMembers; + MemberList protoMembers; + MemberList typedefMembers; + MemberList enumMembers; + MemberList enumValMembers; + MemberList funcMembers; + MemberList varMembers; + ClassList *classList; - FileList *includeList; + QDict<IncludeInfo> *includeDict; + QList<IncludeInfo> *includeList; NamespaceDict *namespaceDict; NamespaceList *namespaceList; NamespaceList *usingList; @@ -114,9 +143,11 @@ class FileDef : public Definition QCString filepath; QCString diskname; QCString filename; - QCString incName; + QCString docname; + //QCString incName; QIntDict<Definition> *srcDefDict; QIntDict<QCString> *srcAnchorDict; + bool isSource; }; /*! \class FileList filedef.h diff --git a/src/filename.cpp b/src/filename.cpp index 6ccdb63..81a37b0 100644 --- a/src/filename.cpp +++ b/src/filename.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/filename.h b/src/filename.h index 6167842..8db7a0c 100644 --- a/src/filename.h +++ b/src/filename.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/formula.cpp b/src/formula.cpp index 174ab36..22f154e 100644 --- a/src/formula.cpp +++ b/src/formula.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/formula.h b/src/formula.h index 8f38433..4d59daa 100644 --- a/src/formula.h +++ b/src/formula.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/gifenc.cpp b/src/gifenc.cpp index 1160531..1d5474b 100644 --- a/src/gifenc.cpp +++ b/src/gifenc.cpp @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -198,12 +198,6 @@ void GifEncoder::putByte( Byte b, QFile &fp ) fp.putch( b ); } -int GifEncoder::nextPixel() -{ - if ( --numPixels < 0) return EOF; - return *dataPtr++; -} - void GifEncoder::writeCode( int code, QFile &outfile ) { curAccum &= masks[ curBits ]; diff --git a/src/gifenc.h b/src/gifenc.h index 161e032..3c4ae33 100644 --- a/src/gifenc.h +++ b/src/gifenc.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -45,7 +45,11 @@ class GifEncoder void writeCode(int code, QFile &fp); void writeChar( Byte c, QFile &fp ); void writePacket(QFile &fp); - int nextPixel(); + int nextPixel() + { + if ( --numPixels < 0) return EOF; + return *dataPtr++; + } void clearHashTable(); private: diff --git a/src/groupdef.cpp b/src/groupdef.cpp index 67811df..5c775ec 100644 --- a/src/groupdef.cpp +++ b/src/groupdef.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -76,6 +76,7 @@ int GroupDef::countMembers() const void GroupDef::writeDocumentation(OutputList &ol) { + ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); startFile(ol,fileName,title); startTitle(ol,getOutputFileBase()); @@ -90,11 +91,14 @@ void GroupDef::writeDocumentation(OutputList &ol) parseDoc(briefOutput,name(),0,briefDescription()); ol+=briefOutput; ol.writeString(" \n"); + ol.pushGeneratorState(); ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::RTF); ol.startTextLink(0,"_details"); parseText(ol,theTranslator->trMore()); ol.endTextLink(); - ol.enable(OutputGenerator::Latex); + //ol.enable(OutputGenerator::Latex); + ol.popGeneratorState(); } if (fileList->count()>0) { @@ -144,10 +148,14 @@ void GroupDef::writeDocumentation(OutputList &ol) if (!briefDescription().isEmpty() || !documentation().isEmpty()) { ol.writeRuler(); - bool latexOn = ol.isEnabled(OutputGenerator::Latex); - if (latexOn) ol.disable(OutputGenerator::Latex); + ol.pushGeneratorState(); + //bool latexOn = ol.isEnabled(OutputGenerator::Latex); + //if (latexOn) ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::RTF); ol.writeAnchor("_details"); - if (latexOn) ol.enable(OutputGenerator::Latex); + //if (latexOn) ol.enable(OutputGenerator::Latex); + ol.popGeneratorState(); ol.startGroupHeader(); parseText(ol,theTranslator->trDetailedDescription()); ol.endGroupHeader(); @@ -165,5 +173,6 @@ void GroupDef::writeDocumentation(OutputList &ol) } endFile(ol); - ol.enable(OutputGenerator::Man); + //ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); } diff --git a/src/groupdef.h b/src/groupdef.h index 7b774d3..c3cf675 100644 --- a/src/groupdef.h +++ b/src/groupdef.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index f15f287..a1987da 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -26,6 +26,7 @@ #include "logos.h" #include "diagram.h" #include "version.h" +#include "dot.h" #define GROUP_COLOR "#ff8080" @@ -33,8 +34,8 @@ HtmlHelp *HtmlGenerator::htmlHelp = 0; HtmlGenerator::HtmlGenerator() : OutputGenerator() { - if (Config::headerFile.length()>0) header=fileToString(Config::headerFile); - if (Config::footerFile.length()>0) footer=fileToString(Config::footerFile); + if (!Config::headerFile.isEmpty()) header=fileToString(Config::headerFile); + if (!Config::footerFile.isEmpty()) footer=fileToString(Config::footerFile); dir=Config::htmlOutputDir; col=0; } @@ -68,7 +69,7 @@ void HtmlGenerator::startFile(const char *name,const char *title,bool external) if (fileName.right(5)!=".html") fileName+=".html"; startPlainFile(fileName); lastFile = fileName; - if (header.length()==0) + if (header.isEmpty()) { t << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n" "<html><head><meta name=\"robots\" content=\"noindex\">\n" @@ -102,14 +103,14 @@ void HtmlGenerator::startQuickIndexItem(const char *s,const char *l) QCString *dest; if (s) { - t << "<a class=\"qindexRef\""; + t << "<a class=\"qindexRef\" "; t << "doxygen=\"" << s << ":"; if ((dest=tagDestinationDict[s])) t << *dest << "/"; t << "\" "; } else { - t << "<a class=\"qindex\""; + t << "<a class=\"qindex\" "; } t << "href=\""; if (s) @@ -129,13 +130,13 @@ void HtmlGenerator::writeFooter(int part,bool external) switch (part) { case 0: - if (footer.length()==0) + if (footer.isEmpty()) t << "<hr><address><small>"; else t << substituteKeywords(footer,lastTitle); break; case 1: - if (footer.length()==0) + if (footer.isEmpty()) { t << endl << "<a href=\"http://www.stack.nl/~dimitri/doxygen/index.html\">"; t << endl << "<img "; @@ -153,9 +154,9 @@ void HtmlGenerator::writeFooter(int part,bool external) } break; default: - if (footer.length()==0) + if (footer.isEmpty()) t << " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n © " - "1997-1999</small></address>\n</body>\n</html>\n"; + "1997-2000</small></address>\n</body>\n</html>\n"; break; } @@ -774,3 +775,26 @@ void HtmlGenerator::endMemberDoc() { t << endl << "</b></td></tr></table>" << endl; } + +void HtmlGenerator::startCollaborationDiagram() +{ +} + +void HtmlGenerator::endCollaborationDiagram(DotGfxUsageGraph &g) +{ + g.writeGraph(t,Config::htmlOutputDir); +} + +void HtmlGenerator::startInclDepGraph() +{ +} + +void HtmlGenerator::endInclDepGraph(DotInclDepGraph &g) +{ + g.writeGraph(t,Config::htmlOutputDir); +} + +void HtmlGenerator::writeGraphicalHierarchy(DotGfxHierarchyTable &g) +{ + g.writeGraph(t,Config::htmlOutputDir); +} diff --git a/src/htmlgen.h b/src/htmlgen.h index 3b1fc86..65ede84 100644 --- a/src/htmlgen.h +++ b/src/htmlgen.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -201,6 +201,16 @@ class HtmlGenerator : public OutputGenerator { t << "</td></tr>" << endl; } //static void docifyStatic(QTextStream &t,const char *str); + void startCollaborationDiagram(); + void endCollaborationDiagram(DotGfxUsageGraph &g); + void startInclDepGraph(); + void endInclDepGraph(DotInclDepGraph &g); + void writeGraphicalHierarchy(DotGfxHierarchyTable &g); + + void startTextBlock(bool) {} + void endTextBlock() {} + void lastIndexPage() {} + private: QCString header; QCString footer; diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp index c95fe35..5da4f2a 100644 --- a/src/htmlhelp.cpp +++ b/src/htmlhelp.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/htmlhelp.h b/src/htmlhelp.h index d1d402e..5832f05 100644 --- a/src/htmlhelp.h +++ b/src/htmlhelp.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/image.cpp b/src/image.cpp index 78f92c1..a27447d 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/image.h b/src/image.h index a48a1f8..ae949b6 100644 --- a/src/image.h +++ b/src/image.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/index.cpp b/src/index.cpp index 2dfc36d..188bdcb 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -32,6 +32,7 @@ #include "groupdef.h" #include "language.h" #include "htmlhelp.h" +#include "dot.h" //---------------------------------------------------------------------------- @@ -57,7 +58,7 @@ QCString abbreviate(const char *s,const char *name) QCString start3=(QCString)"The "+name+" file "; result=result.stripWhiteSpace(); // strip trailing . - if (result.length()>0 && result.at(result.length()-1)=='.') + if (!result.isEmpty() && result.at(result.length()-1)=='.') result=result.left(result.length()-1); bool found=FALSE; found = found || stripWord(result,start1); @@ -78,7 +79,7 @@ QCString abbreviate(const char *s,const char *name) stripWord(result,"the "); } } - if (result.length()>0) + if (!result.isEmpty()) { int c=result[0]; if (c>='a' && c<='z') c+='A'-'a'; @@ -172,15 +173,14 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper) else { ol.writeIndexItem(0,0,cd->name()); - if (hasHtmlHelp) - { - htmlHelp->addContentsItem(cd->name(),"nodoc"); - } + //if (hasHtmlHelp) htmlHelp->addContentsItem(cd->name(),"nodoc"); } if (!cd->visited && !hideSuper && cd->superClasses()->count()>0) { - writeClassTree(ol,cd->superClasses(),cd->visited); + //printf("Class %s at %p visited=%d\n",cd->name().data(),cd,cd->visited); + bool wasVisited=cd->visited; cd->visited=TRUE; + writeClassTree(ol,cd->superClasses(),wasVisited); } } } @@ -237,7 +237,7 @@ void writeClassHierarchy(OutputList &ol) else { ol.writeIndexItem(0,0,cd->name()); - if (hasHtmlHelp) htmlHelp->addContentsItem(cd->name(),"nodoc"); + //if (hasHtmlHelp) htmlHelp->addContentsItem(cd->name(),"nodoc"); } } if (!cd->visited && cd->superClasses()->count()>0) @@ -274,23 +274,71 @@ int countClassHierarchy() void writeHierarchicalIndex(OutputList &ol) { if (hierarchyClasses==0) return; + ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); startFile(ol,"hierarchy","Hierarchical Index"); startTitle(ol,0); - QCString title = Config::projectName+" "+theTranslator->trClassHierarchy(); + QCString title = theTranslator->trClassHierarchy(); + if (!Config::projectName.isEmpty()) title.prepend(Config::projectName+" "); parseText(ol,title); endTitle(ol,0,0); + ol.startTextBlock(); HtmlHelp *htmlHelp = 0; if (Config::generateHtml && Config::htmlHelpFlag) { htmlHelp = HtmlHelp::getInstance(); htmlHelp->addContentsItem(title,"hierarchy"); } + if (Config::haveDotFlag && Config::gfxHierarchyFlag) + { + ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::RTF); + ol.startTextLink("inherits",0); + parseText(ol,theTranslator->trGotoGraphicalHierarchy()); + ol.endTextLink(); + ol.newParagraph(); + ol.enable(OutputGenerator::Latex); + ol.enable(OutputGenerator::RTF); + } parseText(ol,theTranslator->trClassHierarchyDescription()); - ol.newParagraph(); + //ol.newParagraph(); + ol.endTextBlock(); writeClassHierarchy(ol); endFile(ol); - ol.enable(OutputGenerator::Man); + //ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); +} + +//---------------------------------------------------------------------------- + +void writeGraphicalClassHierarchy(OutputList &ol) +{ + if (hierarchyClasses==0) return; + ol.disableAllBut(OutputGenerator::Html); + startFile(ol,"inherits","Graphical Class Hierarchy"); + startTitle(ol,0); + QCString title = theTranslator->trGraphicalHierarchy(); + if (!Config::projectName.isEmpty()) title.prepend(Config::projectName+" "); + parseText(ol,title); + endTitle(ol,0,0); + ol.startTextBlock(); + HtmlHelp *htmlHelp = 0; + if (Config::generateHtml && Config::htmlHelpFlag) + { + htmlHelp = HtmlHelp::getInstance(); + htmlHelp->addContentsItem(title,"inherits"); + } + ol.startTextLink("hierarchy",0); + parseText(ol,theTranslator->trGotoTextualHierarchy()); + ol.endTextLink(); + ol.newParagraph(); + parseText(ol,theTranslator->trClassHierarchyDescription()); + //ol.newParagraph(); + ol.endTextBlock(); + DotGfxHierarchyTable g; + ol.writeGraphicalHierarchy(g); + endFile(ol); + ol.enableAll(); } //---------------------------------------------------------------------------- @@ -306,7 +354,10 @@ int countFiles() FileDef *fd; for (;(fd=fni.current());++fni) { - if (fd->isLinkable()) count++; + if (fd->isLinkableInProject() || + fd->generateSource() || + (!fd->isReference() && Config::sourceBrowseFlag) + ) count++; } } return count; @@ -317,12 +368,15 @@ int countFiles() void writeFileIndex(OutputList &ol) { if (documentedFiles==0) return; + ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); startFile(ol,"files","File Index"); startTitle(ol,0); - QCString title = Config::projectName+" "+theTranslator->trFileList(); + QCString title = theTranslator->trFileList(); + if (!Config::projectName.isEmpty()) title.prepend(Config::projectName+" "); parseText(ol,title); endTitle(ol,0,0); + ol.startTextBlock(); HtmlHelp *htmlHelp = 0; bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag; if (hasHtmlHelp) @@ -331,9 +385,10 @@ void writeFileIndex(OutputList &ol) htmlHelp->addContentsItem(title,"files"); htmlHelp->incContentsDepth(); } - ol.newParagraph(); + //ol.newParagraph(); parseText(ol,theTranslator->trFileListDescription(Config::extractAllFlag)); - ol.newParagraph(); + //ol.newParagraph(); + ol.endTextBlock(); ol.startIndexList(); FileName *fn=inputNameList.first(); @@ -342,7 +397,9 @@ void writeFileIndex(OutputList &ol) FileDef *fd=fn->first(); while (fd) { - if (fd->isLinkableInProject()) + bool doc = fd->isLinkableInProject(); + bool src = fd->generateSource() || Config::sourceBrowseFlag; + if (doc || src) { //ol.writeIndexItem(fd->getReference(),fd->diskName(), // fd->name()); @@ -352,27 +409,72 @@ void writeFileIndex(OutputList &ol) path=stripFromPath(fd->getPath().copy()); } + // --------------- LaTeX only ----------------------------- + ol.pushGeneratorState(); + ol.disable(OutputGenerator::Html); ol.writeStartAnnoItem("file", fd->getOutputFileBase(), path, fd->name() ); - ol.docify(" ("); if (!fd->briefDescription().isEmpty()) { + ol.docify(" ("); OutputList briefOutput(&ol); parseDoc(briefOutput,0,0, abbreviate(fd->briefDescription(),fd->name())); ol+=briefOutput; + ol.docify(")"); + } + //else + //{ + // ol.startEmphasis(); + // parseText(ol,theTranslator->trNoDescriptionAvailable()); + // ol.endEmphasis(); + //} + ol.writeEndAnnoItem(fd->getOutputFileBase()); + //ol.enable(OutputGenerator::Html); + ol.popGeneratorState(); + // -------------------------------------------------------- + + // ----------------- HTML only ---------------------------- + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + ol.writeListItem(); + ol.docify(path); + if (doc) + { + ol.writeObjectLink(0,fd->getOutputFileBase(),0,fd->name()); } else { - ol.startEmphasis(); - parseText(ol,theTranslator->trNoDescriptionAvailable()); - ol.endEmphasis(); + ol.startBold(); + ol.docify(fd->name()); + ol.endBold(); } - ol.docify(")"); - ol.writeEndAnnoItem(fd->name()); + if (src) + { + ol.docify(" "); + ol.startTextLink(fd->includeName(),0); + ol.docify("["); + parseText(ol,theTranslator->trCode()); + ol.docify("]"); + ol.endTextLink(); + //ol.writeObjectLink(0,fd->includeName(),0," [src]"); + } + if (!fd->briefDescription().isEmpty()) + { + ol.docify(" ("); + OutputList briefOutput(&ol); + parseDoc(briefOutput,0,0, + abbreviate(fd->briefDescription(),fd->name())); + ol+=briefOutput; + ol.docify(")"); + } + //ol.enable(OutputGenerator::Latex); + ol.popGeneratorState(); + // -------------------------------------------------------- + if (hasHtmlHelp) { htmlHelp->addContentsItem(fd->name(),fd->getOutputFileBase()); @@ -388,7 +490,8 @@ void writeFileIndex(OutputList &ol) htmlHelp->decContentsDepth(); } endFile(ol); - ol.enable(OutputGenerator::Man); + //ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); } //---------------------------------------------------------------------------- @@ -398,9 +501,11 @@ void writeSourceIndex(OutputList &ol) ol.disableAllBut(OutputGenerator::Html); startFile(ol,"sources","Source Index"); startTitle(ol,0); - QCString title = Config::projectName+" "+theTranslator->trSources(); + QCString title = theTranslator->trSources(); + if (!Config::projectName.isEmpty()) title.prepend(Config::projectName+" "); parseText(ol,title); endTitle(ol,0,0); + ol.startTextBlock(); HtmlHelp *htmlHelp = 0; bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag; if (hasHtmlHelp) @@ -412,6 +517,7 @@ void writeSourceIndex(OutputList &ol) //ol.newParagraph(); //parseText(ol,theTranslator->trFileListDescription(Config::extractAllFlag)); //ol.newParagraph(); + ol.endTextBlock(); //ol.startIndexList(); bool started=FALSE; @@ -474,12 +580,15 @@ int countNamespaces() void writeNamespaceIndex(OutputList &ol) { if (documentedNamespaces==0) return; + ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); startFile(ol,"namespaces","Namespace Index"); startTitle(ol,0); - QCString title = Config::projectName+" "+theTranslator->trNamespaceList(); + QCString title = theTranslator->trNamespaceList(); + if (!Config::projectName.isEmpty()) title.prepend(Config::projectName+" "); parseText(ol,title); endTitle(ol,0,0); + ol.startTextBlock(); HtmlHelp *htmlHelp = 0; bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag; if (hasHtmlHelp) @@ -488,9 +597,10 @@ void writeNamespaceIndex(OutputList &ol) htmlHelp->addContentsItem(title,"namespaces"); htmlHelp->incContentsDepth(); } - ol.newParagraph(); + //ol.newParagraph(); parseText(ol,theTranslator->trNamespaceListDescription(Config::extractAllFlag)); - ol.newParagraph(); + //ol.newParagraph(); + ol.endTextBlock(); ol.startIndexList(); NamespaceDef *nd=namespaceList.first(); @@ -528,7 +638,8 @@ void writeNamespaceIndex(OutputList &ol) htmlHelp->decContentsDepth(); } endFile(ol); - ol.enable(OutputGenerator::Man); + //ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); } //---------------------------------------------------------------------------- @@ -612,13 +723,16 @@ void writeAlphabeticalClassList(OutputList &ol) ClassDef *cd; char startLetter=0; int headerItems=0; + int prefixLength = Config::ignorePrefix.length(); for (;(cd=cli.current());++cli) { if (cd->isLinkableInProject()) { - if (cd->name().at(0)!=startLetter) // new begin letter => new header + int index = cd->name().left(prefixLength)==Config::ignorePrefix ? + prefixLength : 0; + if (cd->name().at(index)!=startLetter) // new begin letter => new header { - startLetter=cd->name().at(0); + startLetter=cd->name().at(index); headerItems++; } } @@ -648,10 +762,12 @@ void writeAlphabeticalClassList(OutputList &ol) { if (cd->isLinkableInProject()) { - if (cd->name().at(0)!=startLetter) + int index = cd->name().left(prefixLength)==Config::ignorePrefix ? + prefixLength : 0; + if (cd->name().at(index)!=startLetter) { // insert a new header using a dummy class pointer. - startLetter=cd->name().at(0); + startLetter=cd->name().at(index); colList[col].append((ClassDef *)8); // insert dummy for the header row++; if ( row >= rows + ((col<itemsInLastRow) ? 0 : -1)) @@ -695,7 +811,9 @@ void writeAlphabeticalClassList(OutputList &ol) if (cd) { //printf("head ClassDef=%p %s\n",cd,cd ? cd->name().data() : "<none>"); - startLetter=cd->name().at(0); + int index = cd->name().left(prefixLength)==Config::ignorePrefix ? + prefixLength : 0; + startLetter=cd->name().at(index); char s[2]; s[0]=startLetter; s[1]=0; ol.writeIndexHeading(s); } @@ -746,12 +864,15 @@ void writeAnnotatedIndex(OutputList &ol) if (annotatedClasses==0) return; //if (classList.count()==0) return; + ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); startFile(ol,"annotated","Annotated Index"); startTitle(ol,0); - QCString title = Config::projectName+" "+theTranslator->trCompoundList(); + QCString title = theTranslator->trCompoundList(); + if (!Config::projectName.isEmpty()) title.prepend(Config::projectName+" "); parseText(ol,title); endTitle(ol,0,0); + ol.startTextBlock(); HtmlHelp *htmlHelp = 0; if (Config::generateHtml && Config::htmlHelpFlag) { @@ -760,6 +881,8 @@ void writeAnnotatedIndex(OutputList &ol) htmlHelp->incContentsDepth(); } parseText(ol,theTranslator->trCompoundListDescription()); + //ol.newParagraph(); + ol.endTextBlock(); writeAnnotatedClassList(ol); if (Config::generateHtml && Config::htmlHelpFlag) { @@ -767,7 +890,8 @@ void writeAnnotatedIndex(OutputList &ol) } endFile(ol); - ol.enable(OutputGenerator::Man); + //ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); } //---------------------------------------------------------------------------- @@ -886,8 +1010,10 @@ int countClassMembers() void writeMemberIndex(OutputList &ol) { if (memberNameList.count()==0) return; - ol.disable(OutputGenerator::Man); - ol.disable(OutputGenerator::Latex); + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + //ol.disable(OutputGenerator::Man); + //ol.disable(OutputGenerator::Latex); startFile(ol,"functions","Compound Member Index"); startTitle(ol,0); parseText(ol,Config::projectName+" "+theTranslator->trCompoundMembers()); @@ -895,8 +1021,9 @@ void writeMemberIndex(OutputList &ol) parseText(ol,theTranslator->trCompoundMembersDescription(Config::extractAllFlag)); writeMemberList(ol); endFile(ol); - ol.enable(OutputGenerator::Latex); - ol.enable(OutputGenerator::Man); + //ol.enable(OutputGenerator::Latex); + //ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); } //---------------------------------------------------------------------------- @@ -1079,8 +1206,10 @@ int countFileMembers() void writeFileMemberIndex(OutputList &ol) { if (documentedFunctions==0) return; - ol.disable(OutputGenerator::Man); - ol.disable(OutputGenerator::Latex); + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + //ol.disable(OutputGenerator::Man); + //ol.disable(OutputGenerator::Latex); startFile(ol,"globals","File Member Index"); startTitle(ol,0); parseText(ol,Config::projectName+" "+theTranslator->trFileMembers()); @@ -1088,8 +1217,9 @@ void writeFileMemberIndex(OutputList &ol) parseText(ol,theTranslator->trFileMembersDescription(Config::extractAllFlag)); writeFileMemberList(ol); endFile(ol); - ol.enable(OutputGenerator::Latex); - ol.enable(OutputGenerator::Man); + //ol.enable(OutputGenerator::Latex); + //ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); } //---------------------------------------------------------------------------- @@ -1097,8 +1227,10 @@ void writeFileMemberIndex(OutputList &ol) void writeNamespaceMemberIndex(OutputList &ol) { if (documentedNamespaceMembers==0) return; - ol.disable(OutputGenerator::Man); - ol.disable(OutputGenerator::Latex); + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + //ol.disable(OutputGenerator::Man); + //ol.disable(OutputGenerator::Latex); startFile(ol,"namespacemembers","Namespace Member Index"); startTitle(ol,0); parseText(ol,Config::projectName+" "+theTranslator->trNamespaceMembers()); @@ -1106,107 +1238,111 @@ void writeNamespaceMemberIndex(OutputList &ol) parseText(ol,theTranslator->trNamespaceMemberDescription(Config::extractAllFlag)); writeNamespaceMemberList(ol); endFile(ol); - ol.enable(OutputGenerator::Latex); - ol.enable(OutputGenerator::Man); -} - -//---------------------------------------------------------------------------- - -int countIncludeFiles() -{ - int count=0; - FileDef *fd=includeFiles.first(); - while (fd) - { - //if (fd->isLinkableInProject()) - //{ - count++; - //} - fd=includeFiles.next(); - } - return count; -} - -//---------------------------------------------------------------------------- - -void writeHeaderFileList(OutputList &ol) -{ - bool started=FALSE; - FileDef *fd=includeFiles.first(); - while (fd) - { - /* - if (fd->isLinkableInProject()) - { - */ - if (!started) - { - started=TRUE; - ol.startItemList(); - } - ol.writeListItem(); - QCString path; - if (Config::fullPathNameFlag) - { - path=stripFromPath(fd->getPath().copy()); - } - if (!path.isEmpty()) ol.docify(path); - ol.writeObjectLink(0,fd->includeName(),0,fd->name()); - ol.writeString("\n"); - if (Config::generateHtml && Config::htmlHelpFlag) - { - HtmlHelp::getInstance()->addContentsItem( - fd->name(),fd->includeName()); - } - /* - } - */ - fd=includeFiles.next(); - } - if (started) ol.endItemList(); + //ol.enable(OutputGenerator::Latex); + //ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); } //---------------------------------------------------------------------------- -void writeHeaderIndex(OutputList &ol) -{ - if (documentedIncludeFiles==0) return; - ol.disable(OutputGenerator::Man); - ol.disable(OutputGenerator::Latex); - startFile(ol,"headers","Header File Index"); - startTitle(ol,0); - QCString title = Config::projectName+" "+theTranslator->trHeaderFiles(); - parseText(ol,title); - endTitle(ol,0,0); - HtmlHelp *htmlHelp = 0; - if (Config::generateHtml && Config::htmlHelpFlag) - { - htmlHelp = HtmlHelp::getInstance(); - htmlHelp->addContentsItem(title,"headers"); - htmlHelp->incContentsDepth(); - } - parseText(ol,theTranslator->trHeaderFilesDescription()); - writeHeaderFileList(ol); - if (Config::generateHtml && Config::htmlHelpFlag) - { - htmlHelp->decContentsDepth(); - } - endFile(ol); - ol.enable(OutputGenerator::Latex); - ol.enable(OutputGenerator::Man); -} +//int countIncludeFiles() +//{ +// int count=0; +// FileDef *fd=includeFiles.first(); +// while (fd) +// { +// //if (fd->isLinkableInProject()) +// //{ +// count++; +// //} +// fd=includeFiles.next(); +// } +// return count; +//} +// +////---------------------------------------------------------------------------- +// +//void writeHeaderFileList(OutputList &ol) +//{ +// bool started=FALSE; +// FileDef *fd=includeFiles.first(); +// while (fd) +// { +// /* +// if (fd->isLinkableInProject()) +// { +// */ +// if (!started) +// { +// started=TRUE; +// ol.startItemList(); +// } +// ol.writeListItem(); +// QCString path; +// if (Config::fullPathNameFlag) +// { +// path=stripFromPath(fd->getPath().copy()); +// } +// if (!path.isEmpty()) ol.docify(path); +// ol.writeObjectLink(0,fd->includeName(),0,fd->name()); +// ol.writeString("\n"); +// if (Config::generateHtml && Config::htmlHelpFlag) +// { +// HtmlHelp::getInstance()->addContentsItem( +// fd->name(),fd->includeName()); +// } +// /* +// } +// */ +// fd=includeFiles.next(); +// } +// if (started) ol.endItemList(); +//} +// +////---------------------------------------------------------------------------- +// +//void writeHeaderIndex(OutputList &ol) +//{ +// if (documentedIncludeFiles==0) return; +// ol.disable(OutputGenerator::Man); +// ol.disable(OutputGenerator::Latex); +// startFile(ol,"headers","Header File Index"); +// startTitle(ol,0); +// QCString title = Config::projectName+" "+theTranslator->trHeaderFiles(); +// parseText(ol,title); +// endTitle(ol,0,0); +// HtmlHelp *htmlHelp = 0; +// if (Config::generateHtml && Config::htmlHelpFlag) +// { +// htmlHelp = HtmlHelp::getInstance(); +// htmlHelp->addContentsItem(title,"headers"); +// htmlHelp->incContentsDepth(); +// } +// parseText(ol,theTranslator->trHeaderFilesDescription()); +// writeHeaderFileList(ol); +// if (Config::generateHtml && Config::htmlHelpFlag) +// { +// htmlHelp->decContentsDepth(); +// } +// endFile(ol); +// ol.enable(OutputGenerator::Latex); +// ol.enable(OutputGenerator::Man); +//} //---------------------------------------------------------------------------- void writeExampleIndex(OutputList &ol) { if (exampleList.count()==0) return; + ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); startFile(ol,"examples","Example Index"); startTitle(ol,0); - QCString title = Config::projectName+" "+theTranslator->trExamples(); + QCString title = theTranslator->trExamples(); + if (!Config::projectName.isEmpty()) title.prepend(Config::projectName+" "); parseText(ol,title); endTitle(ol,0,0); + ol.startTextBlock(); HtmlHelp *htmlHelp = 0; bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag; if (hasHtmlHelp) @@ -1216,6 +1352,8 @@ void writeExampleIndex(OutputList &ol) htmlHelp->incContentsDepth(); } parseText(ol,theTranslator->trExamplesDescription()); + //ol.newParagraph(); + ol.endTextBlock(); ol.startIndexList(); PageInfo *pi=exampleList.first(); while (pi) @@ -1241,7 +1379,8 @@ void writeExampleIndex(OutputList &ol) htmlHelp->decContentsDepth(); } endFile(ol); - ol.enable(OutputGenerator::Man); + //ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); } //---------------------------------------------------------------------------- @@ -1249,12 +1388,15 @@ void writeExampleIndex(OutputList &ol) void writePageIndex(OutputList &ol) { if (pageList.count()==0) return; + ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); startFile(ol,"pages","Page Index"); startTitle(ol,0); - QCString title = Config::projectName+" "+theTranslator->trRelatedPages(); + QCString title = theTranslator->trRelatedPages(); + if (!Config::projectName.isEmpty()) title.prepend(Config::projectName+" "); ol.docify(title); endTitle(ol,0,0); + ol.startTextBlock(); HtmlHelp *htmlHelp = 0; bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag; if (hasHtmlHelp) @@ -1264,6 +1406,8 @@ void writePageIndex(OutputList &ol) htmlHelp->incContentsDepth(); } parseText(ol,theTranslator->trRelatedPagesDescription()); + //ol.newParagraph(); + ol.endTextBlock(); ol.startIndexList(); PageInfo *pi=pageList.first(); while (pi) @@ -1280,8 +1424,10 @@ void writePageIndex(OutputList &ol) else pageTitle=pi->title; - ol.writeListItem(); - ol.writeObjectLink(0,pageName,0,pageTitle); + //ol.writeListItem(); + ol.writeStartAnnoItem("pages",pageName,0,pageTitle); + //ol.writeObjectLink(0,pageName,0,pageTitle); + ol.writeEndAnnoItem(pageName); ol.writeString("\n"); if (hasHtmlHelp) htmlHelp->addContentsItem(pageTitle,pageName); pi=pageList.next(); @@ -1292,7 +1438,8 @@ void writePageIndex(OutputList &ol) htmlHelp->decContentsDepth(); } endFile(ol); - ol.enable(OutputGenerator::Man); + //ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); } //---------------------------------------------------------------------------- @@ -1338,12 +1485,15 @@ void writeGroupList(OutputList &ol) void writeGroupIndex(OutputList &ol) { if (documentedGroups==0) return; + ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); startFile(ol,"modules","Module Index"); startTitle(ol,0); - QCString title = Config::projectName+" "+theTranslator->trModules(); + QCString title = theTranslator->trModules(); + if (!Config::projectName.isEmpty()) title.prepend(Config::projectName+" "); parseText(ol,title); endTitle(ol,0,0); + ol.startTextBlock(); HtmlHelp *htmlHelp = 0; bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag; if (hasHtmlHelp) @@ -1353,21 +1503,25 @@ void writeGroupIndex(OutputList &ol) htmlHelp->incContentsDepth(); } parseText(ol,theTranslator->trModulesDescription()); + //ol.newParagraph(); + ol.endTextBlock(); writeGroupList(ol); if (hasHtmlHelp) { htmlHelp->decContentsDepth(); } endFile(ol); - ol.enable(OutputGenerator::Man); + //ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); } void writeIndex(OutputList &ol) { // save old generator state - bool manEnabled = ol.isEnabled(OutputGenerator::Man); - bool texEnabled = ol.isEnabled(OutputGenerator::Latex); - bool htmEnabled = ol.isEnabled(OutputGenerator::Html); + //bool manEnabled = ol.isEnabled(OutputGenerator::Man); + //bool texEnabled = ol.isEnabled(OutputGenerator::Latex); + //bool htmEnabled = ol.isEnabled(OutputGenerator::Html); + ol.pushGeneratorState(); QCString projPrefix; if (!Config::projectName.isEmpty()) @@ -1375,8 +1529,9 @@ void writeIndex(OutputList &ol) projPrefix=Config::projectName+" "; } // write HTML index - ol.disable(OutputGenerator::Man); - ol.disable(OutputGenerator::Latex); + //ol.disable(OutputGenerator::Man); + //ol.disable(OutputGenerator::Latex); + ol.disableAllBut(OutputGenerator::Html); if (!mainPage || mainPage->title.isEmpty()) ol.startFile("index","Main Index",FALSE); @@ -1411,37 +1566,43 @@ void writeIndex(OutputList &ol) endFile(ol); ol.disable(OutputGenerator::Html); - // write LaTeX index + // write LaTeX/RTF index ol.enable(OutputGenerator::Latex); + ol.enable(OutputGenerator::RTF); + ol.startFile("refman",0,FALSE); ol.startIndexSection(isTitlePageStart); - if (Config::latexHeaderFile.isEmpty()) + if (!Config::latexHeaderFile.isEmpty()) + { + ol.disable(OutputGenerator::Latex); + } + + parseText(ol,projPrefix+theTranslator->trReferenceManual()); + if (!Config::projectNumber.isEmpty()) { - parseText(ol,projPrefix+theTranslator->trReferenceManual()); - if (!Config::projectNumber.isEmpty()) + ol.startProjectNumber(); + parseDoc(ol,0,0,Config::projectNumber); + ol.endProjectNumber(); + } + ol.endIndexSection(isTitlePageStart); + ol.startIndexSection(isTitlePageAuthor); + parseText(ol,theTranslator->trGeneratedBy()); + ol.endIndexSection(isTitlePageAuthor); + if (mainPage) + { + ol.startIndexSection(isMainPage); + if (!mainPage->title.isEmpty()) { - ol.startProjectNumber(); - parseDoc(ol,0,0,Config::projectNumber); - ol.endProjectNumber(); + parseDoc(ol,0,0,mainPage->title); } - ol.endIndexSection(isTitlePageStart); - ol.startIndexSection(isTitlePageAuthor); - parseText(ol,theTranslator->trGeneratedBy()); - ol.endIndexSection(isTitlePageAuthor); - if (mainPage) + else { - ol.startIndexSection(isMainPage); - if (!mainPage->title.isEmpty()) - { - parseDoc(ol,0,0,mainPage->title); - } - else - { - parseText(ol,projPrefix+theTranslator->trMainPage()); - } - ol.endIndexSection(isMainPage); + parseText(ol,projPrefix+theTranslator->trMainPage()); } + ol.endIndexSection(isMainPage); } + ol.enable(OutputGenerator::Latex); + if (documentedGroups>0) { ol.startIndexSection(isModuleIndex); @@ -1472,6 +1633,13 @@ void writeIndex(OutputList &ol) parseText(ol,projPrefix+theTranslator->trFileIndex()); ol.endIndexSection(isFileIndex); } + if (pageList.count()>0) + { + ol.startIndexSection(isPageIndex); + parseText(ol,projPrefix+theTranslator->trPageIndex()); + ol.endIndexSection(isPageIndex); + } + ol.lastIndexPage(); if (documentedGroups>0) { ol.startIndexSection(isModuleDocumentation); @@ -1516,21 +1684,24 @@ void writeIndex(OutputList &ol) ol.disable(OutputGenerator::Man); startFile(ol,mainPage->name,mainPage->title); SectionInfo *si=0; - if (mainPage->title.length()>0 && mainPage->name.length()>0 && + if (!mainPage->title.isEmpty() && !mainPage->name.isEmpty() && (si=sectionDict[mainPage->name])!=0) { ol.writeSection(si->label,si->title,FALSE); } + ol.startTextBlock(); parseDoc(ol,0,0,mainPage->doc); + ol.endTextBlock(); endFile(ol); ol.enable(OutputGenerator::Man); } // restore generator state - if (manEnabled) ol.enable(OutputGenerator::Man); - else ol.disable(OutputGenerator::Man); - if (texEnabled) ol.enable(OutputGenerator::Latex); - else ol.disable(OutputGenerator::Latex); - if (htmEnabled) ol.enable(OutputGenerator::Html); - else ol.disable(OutputGenerator::Html); + //if (manEnabled) ol.enable(OutputGenerator::Man); + // else ol.disable(OutputGenerator::Man); + //if (texEnabled) ol.enable(OutputGenerator::Latex); + // else ol.disable(OutputGenerator::Latex); + //if (htmEnabled) ol.enable(OutputGenerator::Html); + // else ol.disable(OutputGenerator::Html); + ol.popGeneratorState(); } diff --git a/src/index.h b/src/index.h index a604052..e945e94 100644 --- a/src/index.h +++ b/src/index.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -30,6 +30,7 @@ enum IndexSections isClassHierarchyIndex, isCompoundIndex, isFileIndex, + isPageIndex, isModuleDocumentation, isNamespaceDocumentation, isClassDocumentation, @@ -59,6 +60,7 @@ void writeFileMemberIndex(OutputList &ol); void writeGroupIndex(OutputList &ol); void writeNamespaceIndex(OutputList &ol); void writeNamespaceMemberIndex(OutputList &ol); +void writeGraphicalClassHierarchy(OutputList &ol); int countClassHierarchy(); int countClassMembers(); diff --git a/src/instdox.cpp b/src/instdox.cpp index 53b9f2e..c9ae214 100644 --- a/src/instdox.cpp +++ b/src/instdox.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/instdox.h b/src/instdox.h index a149310..7dc29a3 100644 --- a/src/instdox.h +++ b/src/instdox.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/language.cpp b/src/language.cpp index 232c94e..771d4be 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/language.h b/src/language.h index c18eaed..49dc9fb 100644 --- a/src/language.h +++ b/src/language.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 18f129a..860e53c 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -254,6 +254,10 @@ void LatexGenerator::startIndexSection(IndexSections is) if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter"; t << "{"; //Annotated File Index}\n" break; + case isPageIndex: + if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter"; + t << "{"; //Annotated Page Index}\n" + break; case isModuleDocumentation: { GroupDef *gd=groupList.first(); @@ -383,6 +387,9 @@ void LatexGenerator::endIndexSection(IndexSections is) case isFileIndex: t << "}\n\\input{files}\n"; break; + case isPageIndex: + t << "}\n\\input{pages}\n"; + break; case isModuleDocumentation: { GroupDef *gd=groupList.first(); @@ -566,14 +573,14 @@ void LatexGenerator::writeStyleInfo(int part) break; case 2: { - t << " Dimitri van Heesch (c) 1997-1999}]{}\n"; + t << " Dimitri van Heesch (c) 1997-2000}]{}\n"; //QCString dtString=dateToString(FALSE); t << "\\lfoot[]{\\fancyplain{}{\\bfseries\\scriptsize "; } break; case 4: { - t << " Dimitri van Heesch (c) 1997-1999}}\n"; + t << " Dimitri van Heesch (c) 1997-2000}}\n"; t << "\\cfoot{}\n"; t << "\\newenvironment{CompactList}\n"; t << "{\\begin{list}{}{\n"; @@ -617,6 +624,25 @@ void LatexGenerator::writeStyleInfo(int part) t << "{\\end{list}}\n"; t << "\\setlength{\\parindent}{0cm}\n"; t << "\\setlength{\\parskip}{0.2cm}\n"; + t << "\\addtocounter{secnumdepth}{1}\n"; + if (!Config::compactLatexFlag) + { + t << "\\renewcommand{\\subsection}{\\@startsection{subsection}{2}{\\z@}\n"; + t << " {-3.25ex \\@plus -1ex \\@minus -.2ex}\n"; + t << " {1.5ex \\@plus.2ex}\n"; + t << " {\\normalfont\\large\\bfseries\\medskip\n"; + t << " \\vspace{0.6cm}\\hrule\\vspace{-0.6cm}}\n"; + t << " }\n"; + } + else + { + t << "\\renewcommand{\\subsubsection}{\\@startsection{subsubsection}{3}{\\z@}\n"; + t << " {-3.25ex \\@plus -1ex \\@minus -.2ex}\n"; + t << " {1.5ex \\@plus.2ex}\n"; + t << " {\\normalfont\\normalsize\\bfseries\\medskip\n"; + t << " \\vspace{0.6cm}\\hrule\\vspace{-0.6cm}}\n"; + t << " }\n"; + } t << "\\sloppy\n"; endPlainFile(); } @@ -789,7 +815,7 @@ void LatexGenerator::startTitle() void LatexGenerator::startGroupHeader() { - if (Config::compactLatexFlag) t << "\\subsubsection*{"; else t << "\\subsection*{"; + if (Config::compactLatexFlag) t << "\\subsubsection{"; else t << "\\subsection{"; } void LatexGenerator::endGroupHeader() @@ -824,11 +850,17 @@ void LatexGenerator::startMemberDoc(const char *clname, } t << "}" << endl; // - if (Config::compactLatexFlag) t << "\\subsubsection"; else t << "\\subsection"; + if (Config::compactLatexFlag) t << "\\paragraph"; else t << "\\subsubsection"; if (Config::pdfHyperFlag && title) t << "[" << filterTitle(title) << "]"; t << "{\\setlength{\\rightskip}{0pt plus 5cm}"; } +void LatexGenerator::endMemberDoc() +{ + t << "}"; + if (Config::compactLatexFlag) t << "\\hfill"; +} + void LatexGenerator::startDoxyAnchor(const char *fName,const char *clname, const char *anchor,const char *) { @@ -915,6 +947,7 @@ void LatexGenerator::writeSectionRefAnchor(const char *,const char *lab, //void LatexGenerator::docifyStatic(QTextStream &t,const char *str) void LatexGenerator::docify(const char *str) { + static bool isJapanese = theTranslator->latexBabelPackage()=="a4j"; if (str) { const unsigned char *p=(const unsigned char *)str; @@ -965,7 +998,7 @@ void LatexGenerator::docify(const char *str) break; default: - if (theTranslator->latexBabelPackage()=="a4j") + if (isJapanese) { // language is japanese if (c>=128) // wide character { @@ -1095,8 +1128,8 @@ void LatexGenerator::writeChar(char c) void LatexGenerator::startClassDiagram() { - if (Config::compactLatexFlag) t << "\\subsubsection*"; else t << "\\subsection*"; - t << "{"; + //if (Config::compactLatexFlag) t << "\\subsubsection"; else t << "\\subsection"; + //t << "{"; } void LatexGenerator::endClassDiagram(ClassDiagram &d, diff --git a/src/latexgen.h b/src/latexgen.h index d95cb6c..ba46e9f 100644 --- a/src/latexgen.h +++ b/src/latexgen.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -97,7 +97,7 @@ class LatexGenerator : public OutputGenerator void memberGroupSeparator() {} void insertMemberAlign() {} - void writeRuler() { t << "\\vspace{0.4cm}\\hrule\\vspace{0.2cm}" << endl; } + void writeRuler() { t << endl << endl; /*t << "\\vspace{0.4cm}\\hrule\\vspace{0.2cm}" << endl; */ } void writeAnchor(const char *name) { t << "\\label{" << name << "}" << endl; } void startCodeFragment() { t << "\\small\\begin{verbatim}"; } void endCodeFragment() { t << "\\end{verbatim}\\normalsize " << endl; } @@ -115,7 +115,7 @@ class LatexGenerator : public OutputGenerator void endDescItem() { t << "]" << endl; } void lineBreak() { t << "\\par\n"; } void startMemberDoc(const char *,const char *,const char *,const char *); - void endMemberDoc() { t << "}"; } + void endMemberDoc(); void startDoxyAnchor(const char *,const char *,const char *,const char *); void endDoxyAnchor(); void startCodeAnchor(const char *) {} @@ -200,8 +200,18 @@ class LatexGenerator : public OutputGenerator { t << "]"; } void startDescTableData() {} void endDescTableData() {} + void lastIndexPage() {} //static void docifyStatic(QTextStream &t,const char *str); + + void startCollaborationDiagram() {} + void endCollaborationDiagram(DotGfxUsageGraph &) {} + void startInclDepGraph() {} + void endInclDepGraph(DotInclDepGraph &) {} + void writeGraphicalHierarchy(DotGfxHierarchyTable &) {} + + void startTextBlock(bool) {} + void endTextBlock() {} private: LatexGenerator(const LatexGenerator &); diff --git a/src/logos.cpp b/src/logos.cpp index dbc47ff..0480d1f 100644 --- a/src/logos.cpp +++ b/src/logos.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -18,6 +18,7 @@ #include "qtbc.h" #include <qfile.h> +#include <qdir.h> unsigned char null_data[] = { @@ -499,6 +500,2740 @@ unsigned char search_data[] = { }; unsigned int search_len = 2010; +unsigned char doxfont_data[] = { + 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x80, 0x00, 0x03, 0x00, 0x70, + 0x4f, 0x53, 0x2f, 0x32, 0x70, 0x32, 0x72, 0xfd, 0x00, 0x00, 0x00, 0xfc, + 0x00, 0x00, 0x00, 0x56, 0x63, 0x6d, 0x61, 0x70, 0xcd, 0xf1, 0xa1, 0xad, + 0x00, 0x00, 0x01, 0x54, 0x00, 0x00, 0x01, 0x4a, 0x67, 0x61, 0x73, 0x70, + 0x00, 0x18, 0x00, 0x09, 0x00, 0x00, 0x02, 0xa0, 0x00, 0x00, 0x00, 0x10, + 0x67, 0x6c, 0x79, 0x66, 0x64, 0x39, 0x01, 0x32, 0x00, 0x00, 0x02, 0xb0, + 0x00, 0x00, 0x62, 0x94, 0x68, 0x65, 0x61, 0x64, 0x52, 0x77, 0xfb, 0x19, + 0x00, 0x00, 0x65, 0x44, 0x00, 0x00, 0x00, 0x36, 0x68, 0x68, 0x65, 0x61, + 0x0e, 0xfb, 0x06, 0x89, 0x00, 0x00, 0x65, 0x7c, 0x00, 0x00, 0x00, 0x24, + 0x68, 0x6d, 0x74, 0x78, 0x98, 0xb8, 0x23, 0x19, 0x00, 0x00, 0x65, 0xa0, + 0x00, 0x00, 0x01, 0x88, 0x6c, 0x6f, 0x63, 0x61, 0x00, 0x11, 0x2c, 0x88, + 0x00, 0x00, 0x67, 0x28, 0x00, 0x00, 0x01, 0x8c, 0x6b, 0x65, 0x72, 0x6e, + 0xff, 0xd5, 0xff, 0x45, 0x00, 0x00, 0x68, 0xb4, 0x00, 0x00, 0x02, 0x58, + 0x6d, 0x61, 0x78, 0x70, 0x03, 0x6b, 0x08, 0x7f, 0x00, 0x00, 0x6b, 0x0c, + 0x00, 0x00, 0x00, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x9d, 0xcb, 0xe0, 0x3f, + 0x00, 0x00, 0x6b, 0x2c, 0x00, 0x00, 0x00, 0x82, 0x70, 0x6f, 0x73, 0x74, + 0x33, 0x15, 0x3b, 0x1e, 0x00, 0x00, 0x6b, 0xb0, 0x00, 0x00, 0x00, 0xfd, + 0x63, 0x76, 0x74, 0x20, 0x7b, 0x24, 0x9d, 0x31, 0x00, 0x00, 0x6c, 0xb0, + 0x00, 0x00, 0x05, 0x88, 0x66, 0x70, 0x67, 0x6d, 0x77, 0x26, 0xa9, 0xf5, + 0x00, 0x00, 0x72, 0x38, 0x00, 0x00, 0x05, 0xb0, 0x70, 0x72, 0x65, 0x70, + 0x73, 0xc2, 0xd6, 0xc0, 0x00, 0x00, 0x77, 0xe8, 0x00, 0x00, 0x08, 0x0f, + 0x00, 0x01, 0x03, 0x88, 0x01, 0x90, 0x00, 0x05, 0x00, 0x00, 0x05, 0x9a, + 0x05, 0x33, 0x00, 0x00, 0x01, 0x1b, 0x05, 0x9a, 0x05, 0x33, 0x00, 0x00, + 0x03, 0xd1, 0x00, 0x66, 0x02, 0x12, 0x08, 0x05, 0x02, 0x0b, 0x06, 0x04, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x4f, + 0x4e, 0x4f, 0x00, 0x40, 0x00, 0x20, 0x00, 0xad, 0x05, 0xd3, 0xfe, 0x51, + 0x01, 0x33, 0x07, 0x3e, 0x01, 0xb2, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x01, 0x1a, + 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, + 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, + 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, + 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, + 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, + 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x7e, 0x00, 0xa0, 0x00, 0xad, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, + 0x00, 0xa0, 0x00, 0xad, 0xff, 0xff, 0xff, 0xe3, 0xff, 0x63, 0xff, 0x63, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x02, 0x00, 0x11, 0x00, 0x01, + 0xff, 0xff, 0x00, 0x03, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x42, 0xb4, 0x02, 0x01, 0xe4, + 0x06, 0x07, 0xb8, 0x02, 0x99, 0x40, 0x13, 0x00, 0x05, 0x04, 0xe4, 0x03, + 0x00, 0x0a, 0x07, 0x04, 0xe4, 0x01, 0x00, 0x19, 0x08, 0x06, 0x05, 0xe4, + 0x02, 0x03, 0xbc, 0x02, 0x31, 0x00, 0x09, 0x01, 0x99, 0x01, 0x2e, 0x00, + 0x18, 0x2b, 0x10, 0xf6, 0x3c, 0xfd, 0x3c, 0x4e, 0x10, 0xf4, 0x3c, 0x4d, + 0xfd, 0x3c, 0x00, 0x3f, 0x3c, 0xfd, 0x3c, 0x10, 0xfc, 0x3c, 0xfd, 0x3c, + 0x31, 0x30, 0x21, 0x11, 0x21, 0x11, 0x25, 0x21, 0x11, 0x21, 0x01, 0x00, + 0x04, 0x00, 0xfc, 0x20, 0x03, 0xc0, 0xfc, 0x40, 0x05, 0x00, 0xfb, 0x00, + 0x20, 0x04, 0xc0, 0x00, 0x00, 0x02, 0x00, 0xb0, 0x00, 0x00, 0x01, 0x8f, + 0x05, 0xba, 0x00, 0x05, 0x00, 0x09, 0x00, 0x57, 0xb1, 0x1c, 0x05, 0xb8, + 0x02, 0xaf, 0x40, 0x26, 0x08, 0x3c, 0x06, 0x02, 0x00, 0x06, 0x0a, 0x0b, + 0xcb, 0x03, 0x09, 0x3a, 0x05, 0x38, 0x04, 0x3c, 0x00, 0x38, 0x06, 0x3a, + 0x01, 0x03, 0x3c, 0x02, 0x02, 0x20, 0x01, 0x01, 0x01, 0xcb, 0x0a, 0x0a, + 0x0b, 0x81, 0x21, 0xa1, 0x98, 0x18, 0x2b, 0x2b, 0x4e, 0x10, 0xf4, 0x5d, + 0x3c, 0x4d, 0x10, 0xed, 0x10, 0xe4, 0xe4, 0xfd, 0xe4, 0xe4, 0x10, 0xee, + 0x00, 0x3f, 0x3f, 0x4d, 0x10, 0xfd, 0xe6, 0x4b, 0x53, 0x58, 0xb3, 0x05, + 0x04, 0x00, 0x01, 0x01, 0x10, 0x3c, 0x10, 0x3c, 0x59, 0x31, 0x30, 0x13, + 0x03, 0x11, 0x33, 0x11, 0x0b, 0x01, 0x35, 0x33, 0x15, 0xe7, 0x37, 0xdf, + 0x34, 0xa3, 0xcf, 0x01, 0x6c, 0x03, 0x09, 0x01, 0x45, 0xfe, 0xbb, 0xfc, + 0xf7, 0xfe, 0x94, 0xcd, 0xcd, 0x00, 0x00, 0x02, 0x00, 0x5e, 0x03, 0xb3, + 0x02, 0x77, 0x05, 0xba, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x75, 0xb9, 0x00, + 0x00, 0xff, 0xf8, 0xb3, 0x22, 0x25, 0x34, 0x05, 0xb8, 0xff, 0xf8, 0x40, + 0x22, 0x26, 0x29, 0x34, 0x0b, 0x06, 0x0a, 0x07, 0x05, 0x00, 0x04, 0x01, + 0x00, 0x05, 0x05, 0x06, 0x0b, 0xee, 0x09, 0x08, 0x08, 0x03, 0x03, 0x02, + 0x00, 0x07, 0x08, 0x3c, 0x0a, 0x0f, 0x09, 0x80, 0x09, 0x02, 0x09, 0xb8, + 0xff, 0xc0, 0x40, 0x15, 0x0d, 0x0f, 0x34, 0x09, 0xde, 0x01, 0x03, 0x04, + 0x3c, 0x02, 0x01, 0x40, 0x0d, 0x11, 0x34, 0x01, 0x19, 0x0c, 0x71, 0xa7, + 0x18, 0x2b, 0x4e, 0x10, 0xf4, 0x2b, 0x3c, 0x4d, 0xfd, 0x3c, 0x10, 0xfd, + 0x2b, 0x5d, 0x3c, 0xfd, 0x3c, 0x00, 0x3f, 0x3c, 0x10, 0x3c, 0x10, 0x3c, + 0xfd, 0x3c, 0x3c, 0x10, 0x3c, 0x01, 0x11, 0x12, 0x39, 0x39, 0x11, 0x12, + 0x39, 0x39, 0x31, 0x30, 0x01, 0x2b, 0x2b, 0x13, 0x03, 0x35, 0x33, 0x15, + 0x03, 0x33, 0x03, 0x35, 0x33, 0x15, 0x03, 0x90, 0x32, 0xcd, 0x2d, 0xdd, + 0x31, 0xcd, 0x30, 0x03, 0xb3, 0x01, 0x17, 0xf0, 0xf0, 0xfe, 0xe9, 0x01, + 0x17, 0xf0, 0xf0, 0xfe, 0xe9, 0x00, 0x00, 0x02, 0x00, 0x15, 0xff, 0xe7, + 0x04, 0x59, 0x05, 0xd3, 0x00, 0x1b, 0x00, 0x1f, 0x01, 0x31, 0x40, 0x87, + 0x28, 0x1d, 0x38, 0x1d, 0x02, 0x09, 0x04, 0x09, 0x1d, 0x02, 0x57, 0x0f, + 0xb7, 0x13, 0xb7, 0x1c, 0xc7, 0x13, 0xc7, 0x1c, 0xf8, 0x1d, 0x06, 0x01, + 0x02, 0x15, 0x00, 0x09, 0x04, 0x03, 0x14, 0x00, 0x09, 0x05, 0x06, 0x11, + 0x00, 0x09, 0x08, 0x07, 0x10, 0x00, 0x09, 0x0b, 0x07, 0x10, 0x1b, 0x0a, + 0x0c, 0x07, 0x10, 0x18, 0x0d, 0x0f, 0x07, 0x10, 0x17, 0x0e, 0x12, 0x06, + 0x11, 0x17, 0x0e, 0x13, 0x03, 0x14, 0x17, 0x0e, 0x16, 0x02, 0x15, 0x17, + 0x0e, 0x19, 0x02, 0x15, 0x18, 0x0d, 0x1a, 0x02, 0x15, 0x1b, 0x0a, 0x1c, + 0x03, 0x14, 0x1b, 0x0a, 0x1d, 0x03, 0x14, 0x18, 0x0d, 0x1e, 0x06, 0x11, + 0x18, 0x0d, 0x1f, 0x06, 0x11, 0x1b, 0x0a, 0x0a, 0x1b, 0x1b, 0x25, 0x00, + 0x09, 0x14, 0x00, 0x00, 0x09, 0x0d, 0x18, 0x18, 0x25, 0x17, 0x0e, 0x14, + 0x17, 0x17, 0x0e, 0x15, 0x02, 0x25, 0x14, 0x03, 0x03, 0x00, 0x10, 0x07, + 0x25, 0x11, 0x06, 0xb8, 0x01, 0xb6, 0x40, 0x38, 0x0e, 0x0e, 0x0d, 0x0d, + 0x0a, 0x0a, 0x09, 0x00, 0x1b, 0x18, 0x18, 0x17, 0x17, 0x00, 0x0a, 0x15, + 0x14, 0x14, 0x11, 0x10, 0x3e, 0x0e, 0x07, 0x06, 0x06, 0x03, 0x02, 0x3e, + 0x00, 0x18, 0x94, 0x0d, 0x17, 0x94, 0x0d, 0x25, 0x0e, 0x40, 0x11, 0x39, + 0x4f, 0x0e, 0x9f, 0x0e, 0x02, 0x0e, 0x75, 0x21, 0x0a, 0x94, 0x1b, 0x09, + 0x94, 0x1b, 0x25, 0x00, 0xb8, 0xff, 0xc0, 0xb5, 0x11, 0x39, 0x20, 0x00, + 0x01, 0x00, 0xb8, 0x02, 0xa1, 0xb3, 0x20, 0xa9, 0x68, 0x18, 0x2b, 0x10, + 0xf6, 0x5d, 0x2b, 0xed, 0xe4, 0x10, 0xe4, 0x10, 0xf6, 0x5d, 0x2b, 0xed, + 0xe4, 0x10, 0xe4, 0x10, 0xf4, 0x3c, 0x3c, 0x10, 0x3c, 0x10, 0xf4, 0x3c, + 0x3c, 0x10, 0x3c, 0x00, 0x3f, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x3f, 0x3c, + 0x10, 0x3c, 0x10, 0x3c, 0x10, 0xfd, 0x3c, 0xfd, 0x3c, 0x11, 0x39, 0x2f, + 0x3c, 0xfd, 0x3c, 0x87, 0x05, 0x2e, 0x2b, 0x7d, 0x10, 0xc4, 0x87, 0x2e, + 0x18, 0x2b, 0x7d, 0x10, 0xc4, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x31, 0x30, 0x01, + 0x5d, 0x5d, 0x71, 0x17, 0x13, 0x23, 0x35, 0x33, 0x13, 0x21, 0x35, 0x21, + 0x13, 0x33, 0x03, 0x21, 0x13, 0x33, 0x03, 0x33, 0x15, 0x23, 0x03, 0x21, + 0x15, 0x21, 0x03, 0x23, 0x13, 0x21, 0x03, 0x13, 0x21, 0x13, 0x21, 0x67, + 0x57, 0xa9, 0xc7, 0x4a, 0xfe, 0xef, 0x01, 0x2f, 0x57, 0x96, 0x57, 0x01, + 0x3b, 0x57, 0x97, 0x57, 0xad, 0xcb, 0x4b, 0x01, 0x16, 0xfe, 0xcc, 0x57, + 0x96, 0x56, 0xfe, 0xc6, 0x57, 0x75, 0x01, 0x3a, 0x4b, 0xfe, 0xc5, 0x19, + 0x01, 0xaa, 0x95, 0x01, 0x6b, 0x95, 0x01, 0xad, 0xfe, 0x53, 0x01, 0xad, + 0xfe, 0x53, 0x95, 0xfe, 0x95, 0x95, 0xfe, 0x56, 0x01, 0xaa, 0xfe, 0x56, + 0x02, 0x3f, 0x01, 0x6b, 0x00, 0x03, 0x00, 0x49, 0xff, 0x2d, 0x04, 0x13, + 0x06, 0x41, 0x00, 0x2a, 0x00, 0x31, 0x00, 0x38, 0x01, 0xd4, 0x40, 0x25, + 0x7c, 0x1e, 0x01, 0x04, 0x30, 0x2c, 0x36, 0x36, 0x2f, 0x46, 0x21, 0x55, + 0x21, 0x50, 0x2f, 0x5d, 0x36, 0x6a, 0x03, 0x63, 0x2f, 0x7a, 0x03, 0x77, + 0x21, 0x73, 0x2f, 0x7b, 0x36, 0x87, 0x21, 0x80, 0x2f, 0x8e, 0x36, 0x10, + 0x31, 0xb8, 0xff, 0xde, 0xb7, 0x0b, 0x39, 0x1e, 0x20, 0x20, 0x24, 0x34, + 0x2c, 0xb8, 0xff, 0xe0, 0x40, 0x2c, 0x20, 0x23, 0x34, 0x6a, 0x08, 0x38, + 0x2a, 0x16, 0x0c, 0x37, 0x20, 0x16, 0x2a, 0x30, 0x21, 0x0b, 0x00, 0x15, + 0x0c, 0x37, 0x31, 0x30, 0x21, 0x00, 0x15, 0x37, 0x21, 0x30, 0x30, 0xca, + 0x0c, 0x37, 0x14, 0x0c, 0x0c, 0x37, 0x30, 0x0c, 0x21, 0x37, 0x04, 0x17, + 0x32, 0x06, 0xb8, 0x02, 0xa4, 0xb6, 0x50, 0x05, 0x01, 0x05, 0xed, 0x01, + 0x1c, 0xba, 0x02, 0xa4, 0x00, 0x1b, 0x02, 0xad, 0xb3, 0x17, 0x1f, 0xd3, + 0x2b, 0xb8, 0x01, 0x35, 0x40, 0x0a, 0x14, 0x15, 0x16, 0x80, 0x17, 0x17, + 0x14, 0x05, 0x00, 0x2a, 0xb8, 0x01, 0x37, 0xb2, 0x01, 0x0a, 0x32, 0xb8, + 0x01, 0x35, 0xb4, 0x29, 0xd3, 0x01, 0x0d, 0x1c, 0xba, 0x01, 0x38, 0x00, + 0x1b, 0x02, 0x98, 0xb2, 0x35, 0x73, 0x26, 0xb8, 0xff, 0xc0, 0x40, 0x0a, + 0x12, 0x39, 0x30, 0x26, 0x40, 0x26, 0x80, 0x26, 0x03, 0x26, 0xb8, 0x02, + 0x52, 0x40, 0x0f, 0x2a, 0x16, 0x17, 0x17, 0x1f, 0x1f, 0x20, 0x20, 0x38, + 0x38, 0x32, 0x32, 0x29, 0x29, 0x2a, 0xb8, 0x01, 0x93, 0x40, 0x16, 0x00, + 0x15, 0x14, 0x14, 0x2b, 0x2b, 0x31, 0x31, 0x0b, 0x0b, 0x0a, 0x0a, 0x30, + 0x00, 0x40, 0x00, 0x80, 0x00, 0xd0, 0x00, 0x04, 0x00, 0xb8, 0x02, 0x0c, + 0x40, 0x09, 0x05, 0x2e, 0x73, 0x6f, 0x10, 0x7f, 0x10, 0x02, 0x10, 0xba, + 0x01, 0x8e, 0x00, 0x06, 0x01, 0x38, 0x40, 0x0f, 0x3f, 0x05, 0x4f, 0x05, + 0x7f, 0x05, 0x8f, 0x05, 0x04, 0x05, 0x19, 0x39, 0xc7, 0x8b, 0x18, 0x2b, + 0x4e, 0x10, 0xf4, 0x5d, 0x4d, 0xed, 0xf4, 0x71, 0xed, 0x10, 0xf4, 0x5d, + 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x10, + 0xfd, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x10, 0x3c, + 0x10, 0x3c, 0x10, 0xf4, 0x5d, 0x2b, 0xed, 0xf4, 0xed, 0x00, 0x3f, 0xf4, + 0xfd, 0x3c, 0x10, 0xf4, 0x3c, 0x3f, 0x3c, 0x10, 0xf4, 0x3c, 0x10, 0xfd, + 0xe4, 0x10, 0xfd, 0xe4, 0x10, 0xfd, 0x5d, 0xe4, 0x11, 0x12, 0x17, 0x39, + 0x87, 0x0e, 0x2e, 0x2b, 0x87, 0x0e, 0x7d, 0xc4, 0x0f, 0x0f, 0x0f, 0x0f, + 0x31, 0x30, 0x18, 0x43, 0x79, 0x40, 0x4a, 0x21, 0x37, 0x0c, 0x13, 0x24, + 0x25, 0x23, 0x25, 0x22, 0x25, 0x03, 0x06, 0x12, 0x26, 0x0e, 0x0f, 0x0d, + 0x0f, 0x02, 0x06, 0x37, 0x21, 0x35, 0x4f, 0x01, 0x33, 0x28, 0x35, 0x4f, + 0x01, 0x2c, 0x13, 0x2e, 0x4f, 0x00, 0x30, 0x0c, 0x2e, 0x4f, 0x00, 0x36, + 0x25, 0x38, 0x4f, 0x01, 0x21, 0x20, 0x37, 0x38, 0x34, 0x27, 0x32, 0x4f, + 0x00, 0x33, 0x32, 0x2d, 0x11, 0x2b, 0x4f, 0x01, 0x2c, 0x2b, 0x13, 0x14, + 0x2f, 0x0f, 0x31, 0x4f, 0x00, 0x30, 0x31, 0x0c, 0x0b, 0x00, 0x10, 0x3c, + 0x10, 0x3c, 0x2b, 0x10, 0x3c, 0x10, 0x3c, 0x2b, 0x10, 0x3c, 0x2b, 0x10, + 0x3c, 0x10, 0x3c, 0x2b, 0x01, 0x2b, 0x2b, 0x2b, 0x2b, 0x2a, 0x2b, 0x2a, + 0x81, 0x81, 0x01, 0x2b, 0x2b, 0x00, 0x2b, 0x5d, 0x01, 0x5d, 0x05, 0x35, + 0x2e, 0x02, 0x27, 0x37, 0x16, 0x17, 0x16, 0x17, 0x11, 0x26, 0x27, 0x2e, + 0x01, 0x35, 0x34, 0x37, 0x36, 0x37, 0x35, 0x33, 0x15, 0x16, 0x17, 0x16, + 0x17, 0x07, 0x2e, 0x01, 0x27, 0x11, 0x16, 0x17, 0x1e, 0x02, 0x15, 0x14, + 0x06, 0x07, 0x15, 0x03, 0x0e, 0x01, 0x15, 0x14, 0x16, 0x17, 0x13, 0x3e, + 0x01, 0x35, 0x34, 0x26, 0x27, 0x01, 0xfe, 0x87, 0xa9, 0x7b, 0x0a, 0xb5, + 0x15, 0x35, 0x4c, 0x6a, 0x6f, 0x74, 0x56, 0x5d, 0x88, 0x5b, 0xb3, 0x6a, + 0x9d, 0x5c, 0x76, 0x18, 0xba, 0x10, 0x65, 0x58, 0x88, 0x2c, 0x54, 0x6a, + 0x39, 0xee, 0xbd, 0x6a, 0x69, 0x79, 0x67, 0x7b, 0x6a, 0x69, 0x89, 0x61, + 0x91, 0xd3, 0xb4, 0x11, 0x57, 0xc2, 0x8c, 0x22, 0x91, 0x44, 0x60, 0x0b, + 0x02, 0x3d, 0x15, 0x41, 0x30, 0xaa, 0x6c, 0xc0, 0x77, 0x50, 0x12, 0x56, + 0x56, 0x0f, 0x4d, 0x62, 0xab, 0x1c, 0x6a, 0x71, 0x12, 0xfd, 0xf9, 0x22, + 0x13, 0x25, 0x6a, 0x92, 0x55, 0xbb, 0xfa, 0x09, 0xb6, 0x06, 0x28, 0x10, + 0x88, 0x5d, 0x5c, 0x7c, 0x25, 0xfd, 0x16, 0x0d, 0x9c, 0x73, 0x62, 0x77, + 0x2f, 0x00, 0x00, 0x05, 0x00, 0x77, 0xff, 0xca, 0x06, 0x9f, 0x05, 0xd3, + 0x00, 0x0b, 0x00, 0x17, 0x00, 0x1b, 0x00, 0x27, 0x00, 0x33, 0x01, 0x07, + 0x40, 0x0a, 0x90, 0x19, 0x90, 0x1a, 0x02, 0x68, 0x08, 0x1a, 0x1b, 0x1b, + 0xb8, 0x02, 0x9a, 0x40, 0x0f, 0x18, 0x19, 0x14, 0x18, 0x18, 0x19, 0x18, + 0x1b, 0x15, 0x0f, 0x19, 0x1a, 0x31, 0x2b, 0x12, 0xbc, 0x02, 0x9f, 0x00, + 0x09, 0x01, 0x65, 0x00, 0x0c, 0x02, 0x9f, 0x40, 0x0b, 0x03, 0x1a, 0x19, + 0x19, 0x03, 0x01, 0x1b, 0x18, 0x18, 0x25, 0x28, 0xbc, 0x02, 0x9f, 0x00, + 0x1f, 0x01, 0x65, 0x00, 0x2e, 0x02, 0x9f, 0xb2, 0x25, 0x0b, 0x1c, 0xbc, + 0x02, 0x9a, 0x00, 0x2b, 0x01, 0x00, 0x00, 0x31, 0x02, 0x9a, 0xb3, 0x22, + 0xac, 0x35, 0x06, 0xbc, 0x02, 0x9a, 0x00, 0x15, 0x01, 0x00, 0x00, 0x0f, + 0x02, 0x9a, 0x40, 0x09, 0x20, 0x00, 0x01, 0x00, 0x75, 0x34, 0x57, 0x5a, + 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0xed, 0xf4, 0xed, 0x10, 0xf6, 0xed, 0xf4, + 0xed, 0x00, 0x3f, 0xed, 0xfd, 0xed, 0x10, 0x3c, 0x10, 0x3c, 0x3f, 0x3c, + 0x10, 0x3c, 0x10, 0xed, 0xfd, 0xed, 0x01, 0x11, 0x12, 0x39, 0x39, 0x11, + 0x12, 0x39, 0x39, 0x87, 0x2e, 0x2b, 0x7d, 0x10, 0xc4, 0x31, 0x30, 0x18, + 0x43, 0x79, 0x40, 0x52, 0x01, 0x33, 0x29, 0x1e, 0x2b, 0x1f, 0x00, 0x33, + 0x20, 0x31, 0x1f, 0x01, 0x2d, 0x26, 0x2b, 0x1f, 0x00, 0x2f, 0x24, 0x31, + 0x1f, 0x01, 0x0d, 0x02, 0x0f, 0x1f, 0x00, 0x17, 0x04, 0x15, 0x1f, 0x01, + 0x11, 0x0a, 0x0f, 0x1f, 0x00, 0x13, 0x08, 0x15, 0x1f, 0x01, 0x2a, 0x1d, + 0x28, 0x1f, 0x01, 0x32, 0x21, 0x28, 0x1f, 0x01, 0x2c, 0x27, 0x2e, 0x1f, + 0x00, 0x30, 0x23, 0x2e, 0x1f, 0x00, 0x0e, 0x01, 0x0c, 0x1f, 0x01, 0x16, + 0x05, 0x0c, 0x1f, 0x01, 0x10, 0x0b, 0x12, 0x1f, 0x00, 0x14, 0x07, 0x12, + 0x1f, 0x00, 0x00, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x01, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x81, 0x01, 0x5d, 0x13, + 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x01, + 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x03, + 0x01, 0x33, 0x09, 0x01, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, + 0x23, 0x22, 0x26, 0x01, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, + 0x35, 0x34, 0x26, 0x77, 0x9e, 0x96, 0x8a, 0xb5, 0xb7, 0x86, 0x85, 0xb1, + 0x01, 0x39, 0x43, 0x59, 0x5a, 0x42, 0x44, 0x59, 0x5a, 0x42, 0x03, 0x22, + 0x92, 0xfc, 0xe1, 0x01, 0xe5, 0x9e, 0x97, 0x8a, 0xb5, 0xb7, 0x87, 0x85, + 0xb1, 0x01, 0x3a, 0x44, 0x59, 0x5a, 0x42, 0x45, 0x59, 0x5a, 0x04, 0x5a, + 0x9d, 0xdc, 0xc5, 0xbf, 0xba, 0xc9, 0xc6, 0x01, 0xc5, 0x74, 0x9b, 0x8d, + 0x73, 0x74, 0x9a, 0x8e, 0x73, 0xfa, 0x73, 0x06, 0x09, 0xf9, 0xf7, 0x01, + 0x8e, 0x9e, 0xdb, 0xc5, 0xbf, 0xba, 0xc9, 0xc7, 0x01, 0xc4, 0x74, 0x9b, + 0x8c, 0x74, 0x74, 0x9a, 0x8e, 0x73, 0x00, 0x03, 0x00, 0x58, 0xff, 0xde, + 0x05, 0x27, 0x05, 0xd3, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x36, 0x01, 0x3d, + 0x40, 0xc8, 0x7a, 0x15, 0x72, 0x16, 0x72, 0x17, 0x7a, 0x2e, 0x7a, 0x2f, + 0x86, 0x16, 0xa6, 0x2f, 0xdd, 0x00, 0x08, 0x96, 0x1d, 0xa3, 0x16, 0x02, + 0x89, 0x2f, 0x83, 0x36, 0x02, 0x83, 0x1c, 0x84, 0x21, 0x02, 0xb4, 0x16, + 0x01, 0x60, 0x17, 0x61, 0x21, 0x02, 0x16, 0x15, 0x40, 0x16, 0x6a, 0x00, + 0x03, 0xaa, 0x1e, 0xda, 0x16, 0x02, 0x73, 0x1c, 0x73, 0x1d, 0x02, 0x75, + 0x1a, 0x72, 0x1b, 0x02, 0x75, 0x00, 0x7b, 0x16, 0x02, 0x8a, 0x17, 0x83, + 0x1b, 0x02, 0xa9, 0x15, 0xae, 0x16, 0x02, 0x83, 0x1e, 0x8a, 0x20, 0x02, + 0x8a, 0x0a, 0x83, 0x1c, 0x02, 0xcb, 0x20, 0xc6, 0x27, 0x02, 0xcd, 0x16, + 0xc2, 0x1b, 0x02, 0xba, 0x1a, 0xc6, 0x14, 0x02, 0x69, 0x36, 0xba, 0x16, + 0x02, 0x69, 0x17, 0x65, 0x33, 0x02, 0x65, 0x2f, 0x01, 0x56, 0x33, 0x5c, + 0x36, 0x02, 0x46, 0x33, 0x5a, 0x1f, 0x02, 0x4d, 0x16, 0x42, 0x1b, 0x02, + 0x30, 0x1a, 0x39, 0x1f, 0x02, 0x26, 0x1b, 0x24, 0x20, 0x02, 0x00, 0x2d, + 0x2d, 0x1e, 0x2d, 0x2e, 0x0a, 0x0a, 0x00, 0x1b, 0x16, 0x16, 0x1d, 0x15, + 0x20, 0x16, 0x16, 0x20, 0x20, 0xba, 0x0a, 0x2d, 0x14, 0x0a, 0x0a, 0x2d, + 0x26, 0x29, 0x10, 0x01, 0x34, 0x29, 0x1e, 0x3a, 0x03, 0x0b, 0x1b, 0x86, + 0x1d, 0x23, 0x5e, 0x60, 0x13, 0x70, 0x13, 0xa0, 0x13, 0x03, 0x2f, 0x13, + 0x40, 0x13, 0x02, 0x13, 0xdc, 0x1d, 0x8f, 0x18, 0x01, 0x18, 0xb8, 0x02, + 0x5a, 0x40, 0x1c, 0x19, 0x3e, 0x1e, 0x72, 0x20, 0x1d, 0x01, 0x1d, 0x38, + 0x38, 0x29, 0x5e, 0xa0, 0x0d, 0x01, 0x0d, 0xa0, 0x31, 0x5e, 0x20, 0x07, + 0x01, 0x07, 0x6a, 0x37, 0x71, 0x98, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0xed, + 0xf4, 0x5d, 0xed, 0x10, 0xf4, 0x5d, 0xe4, 0xf4, 0xed, 0x5d, 0x10, 0xf4, + 0x5d, 0x5d, 0xed, 0x10, 0xe4, 0x00, 0x3f, 0xe4, 0xed, 0x3f, 0xed, 0x87, + 0x0e, 0x2e, 0x2b, 0x0e, 0x7d, 0x10, 0xc4, 0x07, 0x0e, 0x3c, 0x87, 0x0e, + 0x10, 0xc4, 0x07, 0x0e, 0x10, 0x3c, 0x3c, 0x87, 0x0e, 0x10, 0xc4, 0x31, + 0x30, 0x01, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, + 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x00, 0x5d, 0x5d, + 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x25, 0x0e, 0x01, 0x23, 0x22, 0x27, 0x26, + 0x35, 0x34, 0x36, 0x37, 0x2e, 0x01, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, + 0x15, 0x14, 0x05, 0x01, 0x36, 0x37, 0x17, 0x06, 0x07, 0x16, 0x17, 0x07, + 0x26, 0x01, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, + 0x16, 0x17, 0x09, 0x01, 0x0e, 0x01, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, + 0x03, 0xcd, 0x59, 0xd2, 0x7a, 0xe1, 0x84, 0x6b, 0xaf, 0xae, 0x63, 0x42, + 0xcf, 0x9d, 0x96, 0xbf, 0xfe, 0xeb, 0x01, 0x07, 0x2d, 0x19, 0xbb, 0x30, + 0x52, 0x65, 0x80, 0x79, 0x6d, 0xfe, 0x1e, 0x75, 0x45, 0x5f, 0x47, 0x49, + 0x61, 0x23, 0x23, 0x01, 0x4d, 0xfe, 0xb6, 0x92, 0x66, 0x8e, 0x82, 0x51, + 0xad, 0xad, 0x63, 0x63, 0x98, 0x7c, 0x99, 0x88, 0xdb, 0x53, 0x72, 0x8e, + 0x42, 0x84, 0xc3, 0xb8, 0x81, 0xd1, 0x94, 0xfe, 0xb1, 0x58, 0x74, 0x28, + 0xc0, 0x7c, 0x86, 0x5b, 0x8f, 0x46, 0x03, 0x85, 0x45, 0x68, 0x3f, 0x4b, + 0x5f, 0x5e, 0x44, 0x22, 0x4b, 0x2a, 0xfd, 0x35, 0x01, 0x99, 0x57, 0x95, + 0x49, 0x59, 0xc0, 0x65, 0x00, 0x01, 0x00, 0x5a, 0x03, 0xb3, 0x01, 0x27, + 0x05, 0xba, 0x00, 0x05, 0x00, 0x26, 0x40, 0x15, 0x00, 0x05, 0x03, 0x01, + 0x05, 0xee, 0x02, 0x00, 0x03, 0x81, 0x20, 0x01, 0x90, 0x01, 0x02, 0x01, + 0x6a, 0x06, 0x71, 0xa7, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0xed, 0x00, 0x3f, + 0xed, 0x01, 0x11, 0x12, 0x39, 0x39, 0x31, 0x30, 0x13, 0x03, 0x35, 0x33, + 0x15, 0x03, 0x88, 0x2e, 0xcd, 0x30, 0x03, 0xb3, 0x01, 0x12, 0xf5, 0xf5, + 0xfe, 0xee, 0x00, 0x01, 0x00, 0x7c, 0xfe, 0x51, 0x02, 0x60, 0x05, 0xd3, + 0x00, 0x10, 0x00, 0x3d, 0x40, 0x0a, 0x27, 0x0f, 0x01, 0x00, 0x10, 0x12, + 0x07, 0x08, 0x10, 0x10, 0xb8, 0x01, 0x33, 0xb3, 0x00, 0x9f, 0x0e, 0x08, + 0xb8, 0x01, 0x33, 0x40, 0x11, 0x07, 0x9f, 0x0e, 0x5e, 0x00, 0x03, 0x10, + 0x03, 0x20, 0x03, 0x03, 0x03, 0xac, 0x11, 0x9d, 0x8c, 0x18, 0x2b, 0x10, + 0xf6, 0x5d, 0xfd, 0xf6, 0xed, 0x10, 0xf6, 0xed, 0x00, 0x3f, 0x3c, 0x3f, + 0x3c, 0x31, 0x30, 0x01, 0x5d, 0x01, 0x26, 0x02, 0x11, 0x34, 0x37, 0x36, + 0x37, 0x33, 0x06, 0x07, 0x06, 0x07, 0x06, 0x15, 0x10, 0x01, 0x01, 0xdf, + 0x95, 0xce, 0x4d, 0x5a, 0xbc, 0x81, 0x79, 0x27, 0x3d, 0x23, 0x2b, 0x01, + 0x2b, 0xfe, 0x51, 0xbc, 0x01, 0xf8, 0x01, 0x0e, 0xee, 0xda, 0xfd, 0xfb, + 0xd0, 0x59, 0x8a, 0x96, 0xbb, 0xbd, 0xfe, 0x1f, 0xfe, 0x20, 0x00, 0x01, + 0x00, 0x4b, 0xfe, 0x51, 0x02, 0x2f, 0x05, 0xd3, 0x00, 0x10, 0x00, 0x3d, + 0x40, 0x0c, 0x28, 0x02, 0x28, 0x10, 0x02, 0x09, 0x0a, 0x10, 0x01, 0x00, + 0x12, 0x09, 0xb8, 0x01, 0x33, 0xb3, 0x0a, 0x9f, 0x03, 0x01, 0xb8, 0x01, + 0x33, 0x40, 0x0f, 0x00, 0x9f, 0x03, 0x5e, 0x0f, 0x0e, 0x1f, 0x0e, 0x02, + 0x0e, 0xac, 0x12, 0x9d, 0x8c, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0xfd, 0xf6, + 0xed, 0x10, 0xf6, 0xed, 0x00, 0x3f, 0x3c, 0x3f, 0x3c, 0x31, 0x30, 0x01, + 0x5d, 0x13, 0x23, 0x00, 0x11, 0x34, 0x27, 0x26, 0x27, 0x26, 0x27, 0x33, + 0x16, 0x17, 0x16, 0x15, 0x10, 0x02, 0xcc, 0x81, 0x01, 0x2b, 0x2b, 0x22, + 0x3d, 0x27, 0x7a, 0x81, 0xbc, 0x5a, 0x4d, 0xcf, 0xfe, 0x51, 0x01, 0xe0, + 0x01, 0xe1, 0xbc, 0xb9, 0x96, 0x8a, 0x5a, 0xd2, 0xfb, 0xfd, 0xda, 0xee, + 0xfe, 0xf2, 0xfe, 0x08, 0x00, 0x01, 0x00, 0x40, 0x03, 0x63, 0x02, 0xd5, + 0x05, 0xd3, 0x00, 0x18, 0x00, 0x86, 0x40, 0x4a, 0x0b, 0x01, 0x0b, 0x0a, + 0x1b, 0x01, 0x1b, 0x0a, 0x04, 0x0a, 0x09, 0x0c, 0x0e, 0x0f, 0x10, 0x11, + 0x07, 0x06, 0x0b, 0x01, 0x02, 0x18, 0x16, 0x15, 0x14, 0x13, 0x07, 0x00, + 0x04, 0x03, 0x08, 0x17, 0x12, 0x0d, 0x07, 0x07, 0x06, 0x05, 0x18, 0x17, + 0x16, 0x15, 0x13, 0x12, 0x11, 0x10, 0x0f, 0x0d, 0x0c, 0x0b, 0x14, 0x04, + 0x07, 0x03, 0x08, 0x01, 0x0a, 0x06, 0x05, 0x0b, 0x00, 0x00, 0x10, 0x20, + 0x14, 0x01, 0x14, 0xbf, 0x06, 0x05, 0x00, 0x0b, 0xa5, 0x06, 0xb8, 0x01, + 0x95, 0x40, 0x0d, 0x05, 0xa5, 0x00, 0x40, 0x11, 0x13, 0x34, 0x00, 0x19, + 0x19, 0x70, 0x8c, 0x18, 0x2b, 0x4e, 0x10, 0xf4, 0x2b, 0x4d, 0xf4, 0xfd, + 0xe4, 0x00, 0x3f, 0x3c, 0xfd, 0x5d, 0x3c, 0x39, 0x2f, 0x3c, 0x12, 0x17, + 0x39, 0x12, 0x17, 0x39, 0x01, 0x11, 0x12, 0x17, 0x39, 0x12, 0x17, 0x39, + 0x11, 0x12, 0x17, 0x39, 0x31, 0x30, 0x00, 0x5d, 0x13, 0x37, 0x16, 0x17, + 0x26, 0x27, 0x33, 0x06, 0x07, 0x36, 0x37, 0x17, 0x06, 0x07, 0x16, 0x17, + 0x07, 0x26, 0x27, 0x06, 0x07, 0x27, 0x36, 0x37, 0x26, 0x40, 0x2e, 0x9f, + 0x48, 0x13, 0x01, 0x91, 0x03, 0x14, 0x67, 0x85, 0x2e, 0x7f, 0x7a, 0x3d, + 0x6f, 0x78, 0x3a, 0x4f, 0x4a, 0x38, 0x76, 0x74, 0x32, 0x81, 0x04, 0xad, + 0x8e, 0x38, 0x29, 0xb5, 0x44, 0x63, 0x95, 0x34, 0x2c, 0x8e, 0x2a, 0x0e, + 0x35, 0x88, 0x55, 0x4f, 0x88, 0x8d, 0x4a, 0x55, 0x8f, 0x2e, 0x19, 0x00, + 0x00, 0x01, 0x00, 0x72, 0x00, 0xed, 0x04, 0x3a, 0x04, 0xb6, 0x00, 0x0b, + 0x00, 0x38, 0x40, 0x1f, 0x00, 0x6e, 0x09, 0x02, 0xf9, 0x08, 0x03, 0x6e, + 0x05, 0x07, 0x06, 0x09, 0x6e, 0x0a, 0x04, 0x0a, 0xf9, 0x05, 0x01, 0x6e, + 0x3f, 0x02, 0x4f, 0x02, 0x02, 0x02, 0x19, 0x0c, 0x57, 0x5a, 0x18, 0x2b, + 0x4e, 0x10, 0xf4, 0x5d, 0x4d, 0xf4, 0x3c, 0xed, 0x3c, 0x10, 0xe4, 0x3c, + 0x3c, 0x00, 0x2f, 0xf4, 0x3c, 0xfd, 0x3c, 0xf4, 0x31, 0x30, 0x25, 0x11, + 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x15, 0x21, 0x11, 0x02, 0x01, + 0xfe, 0x71, 0x01, 0x8f, 0xaa, 0x01, 0x8f, 0xfe, 0x71, 0xed, 0x01, 0x92, + 0xa8, 0x01, 0x8f, 0xfe, 0x71, 0xa8, 0xfe, 0x6e, 0x00, 0x01, 0x00, 0xaa, + 0xfe, 0xde, 0x01, 0x83, 0x00, 0xcd, 0x00, 0x0a, 0x00, 0x4e, 0xb5, 0x0a, + 0x03, 0x00, 0x07, 0xab, 0x06, 0xb8, 0x01, 0x50, 0x40, 0x26, 0x01, 0x03, + 0x3c, 0x02, 0x02, 0x01, 0x0a, 0x01, 0x3c, 0x00, 0x0a, 0x02, 0x03, 0x01, + 0x03, 0x3c, 0x00, 0x06, 0x38, 0x07, 0x3a, 0x4f, 0x00, 0x5f, 0x00, 0x6f, + 0x00, 0x7f, 0x00, 0xa0, 0x00, 0x05, 0x00, 0xa0, 0x0b, 0xa1, 0x98, 0x18, + 0x2b, 0x10, 0xf4, 0x5d, 0xf4, 0xe4, 0x10, 0xed, 0x3c, 0x10, 0x3c, 0x00, + 0x3f, 0xed, 0x3c, 0x10, 0x3c, 0x10, 0xed, 0x10, 0xfd, 0xed, 0x01, 0x11, + 0x12, 0x39, 0x31, 0x30, 0x33, 0x35, 0x33, 0x15, 0x14, 0x06, 0x07, 0x27, + 0x3e, 0x01, 0x37, 0xb6, 0xcd, 0x50, 0x57, 0x32, 0x39, 0x36, 0x03, 0xcd, + 0xcd, 0x71, 0x8b, 0x26, 0x4d, 0x19, 0x61, 0x5b, 0x00, 0x01, 0x00, 0x41, + 0x01, 0xb8, 0x02, 0x6a, 0x02, 0x6d, 0x00, 0x03, 0x00, 0x2c, 0x40, 0x19, + 0x70, 0x02, 0x70, 0x03, 0x02, 0x4d, 0x01, 0x4d, 0x02, 0x02, 0x01, 0x23, + 0x00, 0x02, 0x1a, 0x05, 0x70, 0x00, 0x01, 0x00, 0x19, 0x04, 0x70, 0x8d, + 0x18, 0x2b, 0x4e, 0x10, 0xe4, 0x5d, 0x10, 0xe6, 0x00, 0x2f, 0x4d, 0xed, + 0x31, 0x30, 0x00, 0x71, 0x01, 0x5d, 0x13, 0x35, 0x21, 0x15, 0x41, 0x02, + 0x29, 0x01, 0xb8, 0xb5, 0xb5, 0x00, 0x00, 0x01, 0x00, 0xba, 0x00, 0x00, + 0x01, 0x87, 0x00, 0xcd, 0x00, 0x03, 0x00, 0x25, 0x40, 0x18, 0x02, 0x3c, + 0x00, 0x0a, 0x02, 0x3c, 0x5f, 0x00, 0x6f, 0x00, 0x7f, 0x00, 0xaf, 0x00, + 0x04, 0xa0, 0x00, 0x01, 0x00, 0xa0, 0x04, 0xa1, 0x98, 0x18, 0x2b, 0x10, + 0xf6, 0x5d, 0x5d, 0xed, 0x00, 0x3f, 0xed, 0x31, 0x30, 0x33, 0x35, 0x33, + 0x15, 0xba, 0xcd, 0xcd, 0xcd, 0x00, 0x00, 0x01, 0x00, 0x00, 0xff, 0xe7, + 0x02, 0x39, 0x05, 0xd3, 0x00, 0x03, 0x00, 0x53, 0xb9, 0x00, 0x03, 0xff, + 0xde, 0xb2, 0x14, 0x39, 0x02, 0xb8, 0xff, 0xde, 0x40, 0x20, 0x14, 0x39, + 0x97, 0x03, 0x01, 0x02, 0x03, 0x9f, 0x03, 0xaf, 0x03, 0x02, 0x03, 0x76, + 0x00, 0x01, 0x14, 0x00, 0x00, 0x01, 0x02, 0x01, 0x00, 0x03, 0x00, 0x0a, + 0x03, 0xe8, 0x00, 0x02, 0xe8, 0x01, 0xb8, 0x01, 0xa9, 0xb5, 0x00, 0x00, + 0x04, 0xb3, 0x7a, 0x18, 0x2b, 0x10, 0x3c, 0x10, 0xf4, 0xed, 0x10, 0xed, + 0x00, 0x3f, 0x3c, 0x3f, 0x3c, 0x87, 0x05, 0x2e, 0x2b, 0x5d, 0x7d, 0x10, + 0xc4, 0x31, 0x30, 0x01, 0x5d, 0x2b, 0x2b, 0x15, 0x01, 0x33, 0x01, 0x01, + 0xa9, 0x90, 0xfe, 0x58, 0x19, 0x05, 0xec, 0xfa, 0x14, 0x00, 0x00, 0x02, + 0x00, 0x55, 0xff, 0xe7, 0x04, 0x11, 0x05, 0xc0, 0x00, 0x10, 0x00, 0x1d, + 0x00, 0xb5, 0xb4, 0x06, 0x20, 0x19, 0x10, 0x1c, 0xb8, 0xff, 0xf0, 0xb2, + 0x02, 0x20, 0x0b, 0xbe, 0xff, 0xe0, 0x00, 0x16, 0xff, 0xe0, 0x00, 0x12, + 0xff, 0xe0, 0x00, 0x0f, 0xff, 0xe0, 0x40, 0x62, 0x04, 0x06, 0x87, 0x02, + 0x88, 0x0b, 0x88, 0x0f, 0xc9, 0x0e, 0x05, 0x09, 0x07, 0x0b, 0x18, 0x02, + 0x45, 0x13, 0x4c, 0x15, 0x4a, 0x19, 0x43, 0x1b, 0x54, 0x13, 0x5c, 0x15, + 0x5c, 0x19, 0x52, 0x1b, 0x6b, 0x07, 0x6b, 0x0b, 0x63, 0x13, 0x6c, 0x15, + 0x6b, 0x19, 0x60, 0x1b, 0x79, 0x02, 0x77, 0x06, 0x76, 0x0b, 0x7a, 0x0f, + 0x87, 0x06, 0x98, 0x07, 0x96, 0x10, 0xc9, 0x18, 0xda, 0x02, 0xd6, 0x06, + 0xd6, 0x0b, 0xdb, 0x0f, 0x1a, 0x1a, 0x1e, 0x04, 0x05, 0x14, 0x1e, 0x0d, + 0x0d, 0x17, 0x73, 0x09, 0x40, 0x21, 0x23, 0x34, 0x30, 0x09, 0x01, 0x00, + 0x09, 0x10, 0x09, 0x02, 0x09, 0x90, 0x1f, 0x11, 0x73, 0x00, 0xb8, 0xff, + 0xc0, 0x40, 0x0e, 0x21, 0x23, 0x34, 0x20, 0x00, 0x40, 0x00, 0x02, 0x00, + 0x90, 0x1e, 0xc7, 0x8b, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0x2b, 0xed, 0x10, + 0xf6, 0x5d, 0x71, 0x2b, 0xed, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x31, 0x30, + 0x01, 0x5d, 0x71, 0x00, 0x5d, 0x00, 0x38, 0x38, 0x38, 0x38, 0x38, 0x01, + 0x38, 0x38, 0x38, 0x13, 0x10, 0x12, 0x36, 0x33, 0x32, 0x1e, 0x01, 0x12, + 0x15, 0x10, 0x02, 0x06, 0x23, 0x22, 0x27, 0x26, 0x13, 0x10, 0x16, 0x33, + 0x32, 0x36, 0x11, 0x10, 0x26, 0x23, 0x22, 0x07, 0x06, 0x55, 0x6b, 0xd3, + 0xa0, 0x76, 0xb2, 0x74, 0x42, 0x6a, 0xd3, 0xa1, 0xd4, 0x79, 0x91, 0xb9, + 0xa9, 0x7c, 0x7c, 0xa9, 0xa9, 0x7e, 0x7c, 0x4a, 0x5d, 0x02, 0xd3, 0x01, + 0x04, 0x01, 0x3d, 0xac, 0x5f, 0xb3, 0xfe, 0xff, 0xda, 0xfe, 0xfe, 0xfe, + 0xc3, 0xad, 0x98, 0xb7, 0x01, 0x9d, 0xfe, 0x97, 0xef, 0xf0, 0x01, 0x68, + 0x01, 0x6a, 0xee, 0x69, 0x86, 0x00, 0x00, 0x01, 0x00, 0xdf, 0x00, 0x00, + 0x02, 0xfb, 0x05, 0xc0, 0x00, 0x0a, 0x00, 0x73, 0x40, 0x20, 0x03, 0x40, + 0x0d, 0x11, 0x34, 0x6b, 0x04, 0x7f, 0x02, 0x8f, 0x02, 0x99, 0x08, 0x04, + 0xac, 0x04, 0x01, 0x09, 0x00, 0x06, 0x05, 0x02, 0x03, 0x09, 0x05, 0x01, + 0x0c, 0x02, 0x01, 0xca, 0x0a, 0x00, 0xb8, 0xff, 0xc0, 0x40, 0x12, 0x21, + 0x23, 0x34, 0x30, 0x00, 0x01, 0x20, 0x00, 0x01, 0x00, 0x1a, 0x0c, 0x05, + 0x40, 0x0d, 0x0f, 0x34, 0x05, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x21, 0x23, + 0x34, 0x30, 0x05, 0x01, 0x20, 0x05, 0x40, 0x05, 0x02, 0x05, 0x19, 0x0b, + 0xba, 0x01, 0x3c, 0x01, 0x85, 0x00, 0x18, 0x2b, 0x4e, 0x10, 0xe4, 0x5d, + 0x71, 0x2b, 0x2b, 0x10, 0xf6, 0x5d, 0x71, 0x2b, 0x3c, 0x4d, 0xfd, 0x3c, + 0x00, 0x3f, 0x3f, 0x17, 0x39, 0x01, 0x11, 0x39, 0x31, 0x30, 0x01, 0x5d, + 0x00, 0x5d, 0x2b, 0x21, 0x23, 0x11, 0x0e, 0x01, 0x07, 0x35, 0x3e, 0x01, + 0x37, 0x33, 0x02, 0xfb, 0xb4, 0x41, 0xd3, 0x54, 0x97, 0xe2, 0x2f, 0x74, + 0x04, 0x7b, 0x3e, 0x7c, 0x1f, 0xae, 0x47, 0xca, 0x5f, 0x00, 0x00, 0x01, + 0x00, 0x3c, 0x00, 0x00, 0x04, 0x07, 0x05, 0xc0, 0x00, 0x1e, 0x00, 0xe7, + 0x40, 0x36, 0x3b, 0x05, 0x3b, 0x06, 0xbb, 0x05, 0xbf, 0x06, 0xbb, 0x07, + 0xc7, 0x08, 0xc9, 0x1c, 0x07, 0x49, 0x0c, 0x59, 0x0c, 0x54, 0x0e, 0x6b, + 0x0c, 0x64, 0x0e, 0x7a, 0x12, 0x7a, 0x13, 0x89, 0x12, 0xbc, 0x12, 0xe5, + 0x1a, 0xe5, 0x1b, 0xf0, 0x1a, 0x0c, 0xbf, 0x0b, 0xb7, 0x13, 0x02, 0x1b, + 0x10, 0x1c, 0x10, 0x1d, 0x10, 0x1e, 0x10, 0x06, 0xbe, 0xff, 0xf0, 0x00, + 0x07, 0xff, 0xe0, 0x00, 0x08, 0xff, 0xf0, 0x00, 0x09, 0xff, 0xf0, 0x40, + 0x1a, 0x1e, 0x0a, 0x10, 0x08, 0x06, 0x06, 0xca, 0x1c, 0x1a, 0x14, 0x1c, + 0x1c, 0x1a, 0x08, 0x1c, 0x1a, 0x03, 0x01, 0x02, 0x08, 0x1a, 0x1c, 0x03, + 0x0d, 0x1e, 0x10, 0xb8, 0x02, 0xa4, 0xb3, 0x4f, 0x11, 0x01, 0x11, 0xb8, + 0x01, 0x18, 0xb5, 0x0d, 0x1e, 0x14, 0x05, 0x00, 0x1e, 0xb8, 0x02, 0xbb, + 0x40, 0x0f, 0x01, 0x02, 0x0c, 0x0a, 0x73, 0x17, 0xd3, 0x00, 0x00, 0x01, + 0x40, 0x21, 0x23, 0x34, 0x01, 0xbb, 0x02, 0x81, 0x00, 0x20, 0x00, 0x10, + 0x01, 0x38, 0x40, 0x0c, 0x11, 0xb5, 0x3f, 0x02, 0x5f, 0x02, 0x6f, 0x02, + 0x7f, 0x02, 0x04, 0x02, 0xba, 0x02, 0x24, 0x00, 0x1f, 0x01, 0x8f, 0xb1, + 0x8b, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0xf4, 0xed, 0x10, 0xf6, 0x2b, 0x3c, + 0x10, 0xf4, 0xed, 0x00, 0x3f, 0x3c, 0xfd, 0x3c, 0x3f, 0xed, 0xfd, 0x5d, + 0xe4, 0x11, 0x12, 0x17, 0x39, 0x01, 0x11, 0x12, 0x17, 0x39, 0x87, 0x0e, + 0x2e, 0x2b, 0x0e, 0x7d, 0x10, 0xc4, 0x01, 0x11, 0x12, 0x39, 0x31, 0x30, + 0x00, 0x38, 0x38, 0x38, 0x38, 0x01, 0x38, 0x38, 0x38, 0x38, 0x00, 0x5d, + 0x01, 0x5d, 0x72, 0x25, 0x15, 0x21, 0x26, 0x37, 0x3e, 0x01, 0x37, 0x3e, + 0x01, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, + 0x32, 0x16, 0x15, 0x14, 0x0e, 0x01, 0x07, 0x0e, 0x01, 0x07, 0x04, 0x07, + 0xfc, 0x37, 0x02, 0x17, 0x25, 0xa3, 0x9a, 0xef, 0xa8, 0x99, 0x7b, 0x82, + 0x9c, 0x01, 0xb9, 0x13, 0xf8, 0xd1, 0xd3, 0xf6, 0x48, 0xa7, 0xc2, 0xa2, + 0x5c, 0x1e, 0xad, 0xad, 0x41, 0x3c, 0x63, 0xc0, 0x7e, 0xc4, 0xe5, 0x66, + 0x6b, 0x93, 0x9c, 0x8a, 0x13, 0xcf, 0xd9, 0xea, 0xad, 0x58, 0xaa, 0xbc, + 0xa4, 0x88, 0x61, 0x31, 0x00, 0x01, 0x00, 0x56, 0xff, 0xe6, 0x04, 0x16, + 0x05, 0xc0, 0x00, 0x2b, 0x00, 0xd3, 0x40, 0x28, 0x05, 0x0d, 0x16, 0x0d, + 0x45, 0x0d, 0x86, 0x0d, 0x04, 0x45, 0x11, 0x57, 0x11, 0x76, 0x1b, 0x03, + 0x52, 0x16, 0x6c, 0x10, 0x6a, 0x14, 0x64, 0x16, 0x75, 0x0d, 0x79, 0x14, + 0x86, 0x0d, 0x8a, 0x14, 0x89, 0x1b, 0xa5, 0x0d, 0x0a, 0x05, 0x20, 0x03, + 0xb8, 0xff, 0xe0, 0x40, 0x0b, 0x0b, 0x0c, 0x0d, 0x0e, 0x04, 0x07, 0x01, + 0x23, 0x0d, 0x0c, 0x01, 0xb8, 0x02, 0xa4, 0xb3, 0x40, 0x00, 0x01, 0x00, + 0xbb, 0x01, 0x18, 0x00, 0x29, 0x00, 0x0d, 0x01, 0x35, 0xb4, 0x0c, 0x0c, + 0x15, 0x04, 0x18, 0xba, 0x02, 0xa4, 0x00, 0x19, 0x02, 0x68, 0x40, 0x24, + 0x15, 0x1e, 0x1c, 0x05, 0x04, 0x1e, 0x29, 0x0d, 0x12, 0x73, 0x5f, 0x20, + 0x6f, 0x20, 0x02, 0x20, 0x80, 0x07, 0x73, 0x26, 0x40, 0x21, 0x23, 0x34, + 0x30, 0x26, 0x01, 0x00, 0x26, 0x10, 0x26, 0x02, 0x26, 0x90, 0x2d, 0x18, + 0xb8, 0x01, 0x38, 0xb2, 0x19, 0xd3, 0x01, 0xba, 0x01, 0x38, 0x00, 0x00, + 0xff, 0xc0, 0x40, 0x0b, 0x21, 0x23, 0x34, 0x20, 0x00, 0x40, 0x00, 0x02, + 0x00, 0x90, 0x2c, 0xb8, 0x01, 0x92, 0xb1, 0x8b, 0x18, 0x2b, 0x10, 0xf6, + 0x5d, 0x2b, 0xed, 0xf4, 0xed, 0x10, 0xf6, 0x5d, 0x71, 0x2b, 0xed, 0xf4, + 0x5d, 0xed, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0xfd, 0xe4, 0x11, 0x12, 0x39, + 0x2f, 0xed, 0x10, 0xfd, 0x5d, 0xe4, 0x11, 0x12, 0x39, 0x01, 0x11, 0x12, + 0x17, 0x39, 0x31, 0x30, 0x01, 0x38, 0x38, 0x01, 0x5d, 0x00, 0x5d, 0x01, + 0x71, 0x13, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, + 0x22, 0x07, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x1e, 0x01, 0x15, 0x14, 0x06, + 0x07, 0x1e, 0x01, 0x15, 0x14, 0x00, 0x23, 0x22, 0x26, 0x56, 0xb4, 0x1f, + 0x95, 0x6b, 0x7f, 0xaf, 0xa2, 0x7d, 0x33, 0x4c, 0x14, 0x12, 0x0b, 0x73, + 0xb8, 0x86, 0x6a, 0x69, 0x8c, 0x14, 0xb4, 0x21, 0xea, 0xae, 0x78, 0xca, + 0x6b, 0x66, 0x64, 0x82, 0x90, 0xfe, 0xe8, 0xd6, 0xc1, 0xff, 0x01, 0x83, + 0x18, 0x99, 0x87, 0xb0, 0x82, 0x7c, 0xa1, 0x14, 0x9e, 0x02, 0x78, 0x7d, + 0x63, 0x82, 0x84, 0x84, 0x20, 0xb5, 0xc7, 0x67, 0xb2, 0x64, 0x5f, 0x9c, + 0x2e, 0x1e, 0xbd, 0x8e, 0xc0, 0xfe, 0xf5, 0xe6, 0x00, 0x02, 0x00, 0x1a, + 0x00, 0x00, 0x04, 0x10, 0x05, 0xba, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0xf4, + 0x40, 0x36, 0x12, 0x58, 0x0c, 0x68, 0x0c, 0x9a, 0x0c, 0xa9, 0x0c, 0xc9, + 0x0c, 0x05, 0x4c, 0x03, 0x4c, 0x0d, 0x94, 0x04, 0x03, 0x12, 0x01, 0x02, + 0x08, 0x00, 0x0c, 0x06, 0x03, 0x07, 0x05, 0x0a, 0x0b, 0x03, 0x07, 0x00, + 0x0c, 0x0c, 0x0d, 0x0d, 0xca, 0x03, 0x04, 0x14, 0x03, 0x03, 0x04, 0x03, + 0x0d, 0x00, 0x02, 0x0c, 0x0d, 0x04, 0x07, 0x03, 0xbb, 0x02, 0xbb, 0x00, + 0x08, 0x00, 0x02, 0x01, 0xa0, 0x40, 0x0a, 0x00, 0x04, 0x04, 0x00, 0x0c, + 0x0c, 0x00, 0xca, 0x0a, 0x04, 0xb8, 0x02, 0x66, 0xb7, 0x05, 0x05, 0x0a, + 0x40, 0x1d, 0x1f, 0x34, 0x0a, 0xb8, 0x01, 0x37, 0x40, 0x0d, 0x07, 0x40, + 0x22, 0x23, 0x34, 0x07, 0x80, 0x21, 0x35, 0x07, 0x90, 0x0f, 0x02, 0xb8, + 0xff, 0xc0, 0x40, 0x0d, 0x0d, 0x14, 0x34, 0x00, 0x02, 0x10, 0x02, 0x20, + 0x02, 0x03, 0x02, 0xb5, 0x0e, 0xb8, 0x01, 0x8c, 0xb1, 0x8b, 0x18, 0x2b, + 0x10, 0xec, 0x5d, 0x2b, 0x10, 0xf6, 0x2b, 0x2b, 0xf4, 0x2b, 0x3c, 0x10, + 0xe6, 0x10, 0xfd, 0x3c, 0x00, 0x3f, 0x3f, 0x10, 0xf4, 0x3c, 0xf6, 0x3c, + 0x11, 0x39, 0x39, 0x01, 0x11, 0x12, 0x39, 0x39, 0x87, 0x2e, 0x2b, 0x04, + 0x7d, 0x10, 0xc4, 0x0f, 0x0f, 0x0f, 0x31, 0x30, 0x01, 0x43, 0x5c, 0x58, + 0xb9, 0x00, 0x0d, 0xff, 0xde, 0xb2, 0x12, 0x39, 0x0d, 0xb8, 0xff, 0xd4, + 0x40, 0x0b, 0x33, 0x39, 0x03, 0x22, 0x2d, 0x39, 0x03, 0x04, 0x1d, 0x1d, + 0x3c, 0x2b, 0x2b, 0x2b, 0x2b, 0x59, 0x5d, 0x00, 0x5d, 0x43, 0x5c, 0x58, + 0x40, 0x14, 0x0c, 0x40, 0x0b, 0x39, 0x0c, 0x80, 0x50, 0x39, 0x0c, 0x40, + 0x26, 0x39, 0x0c, 0x22, 0x1c, 0x39, 0x0c, 0x40, 0x2d, 0x39, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x59, 0x21, 0x11, 0x21, 0x35, 0x01, 0x33, 0x11, 0x33, + 0x15, 0x23, 0x11, 0x03, 0x11, 0x01, 0x02, 0x96, 0xfd, 0x84, 0x02, 0x9d, + 0x93, 0xc6, 0xc6, 0xb4, 0xfe, 0x35, 0x01, 0x5f, 0xa5, 0x03, 0xb6, 0xfc, + 0x4a, 0xa5, 0xfe, 0xa1, 0x02, 0x04, 0x02, 0x95, 0xfd, 0x6b, 0x00, 0x01, + 0x00, 0x55, 0xff, 0xe7, 0x04, 0x21, 0x05, 0xa6, 0x00, 0x1e, 0x00, 0xea, + 0x40, 0x1d, 0x4b, 0x1a, 0x79, 0x1d, 0x8a, 0x1d, 0x96, 0x13, 0xa7, 0x13, + 0xc3, 0x0c, 0xd6, 0x0c, 0xdb, 0x1b, 0x08, 0x09, 0x13, 0x18, 0x0e, 0x2a, + 0x1a, 0x03, 0x09, 0x30, 0x05, 0x30, 0x0b, 0xba, 0xff, 0xe0, 0x00, 0x03, + 0xff, 0xe0, 0x40, 0x10, 0x13, 0x0a, 0x15, 0x12, 0x13, 0x13, 0xca, 0x0e, + 0x0f, 0x14, 0x0e, 0x13, 0x14, 0x0e, 0x0f, 0x0d, 0xb8, 0x02, 0xa4, 0x40, + 0x13, 0x0e, 0x0a, 0x1e, 0x15, 0x40, 0x0e, 0xa0, 0x0e, 0x02, 0x0e, 0x0e, + 0x0f, 0x40, 0x15, 0x01, 0x15, 0x15, 0x1c, 0x12, 0xb8, 0x02, 0xbb, 0xb7, + 0x0f, 0x04, 0x01, 0xd3, 0x40, 0x00, 0x01, 0x00, 0xb8, 0x01, 0x18, 0x40, + 0x23, 0x04, 0x1e, 0x1c, 0x0d, 0x11, 0x5f, 0x10, 0x6f, 0x10, 0x7f, 0x10, + 0x8f, 0x10, 0x04, 0x10, 0x80, 0x07, 0x73, 0x18, 0x40, 0x21, 0x23, 0x34, + 0x30, 0x18, 0x01, 0x00, 0x18, 0x10, 0x18, 0x02, 0x18, 0x90, 0x20, 0x12, + 0xbc, 0x01, 0x35, 0x00, 0x0f, 0x01, 0x95, 0x00, 0x0d, 0x01, 0x38, 0xb2, + 0x0e, 0xb5, 0x01, 0xba, 0x01, 0x38, 0x00, 0x00, 0xff, 0xc0, 0x40, 0x0b, + 0x21, 0x23, 0x34, 0x20, 0x00, 0x40, 0x00, 0x02, 0x00, 0x90, 0x1f, 0xb8, + 0x01, 0x92, 0xb1, 0x8b, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0x2b, 0xed, 0xf4, + 0xed, 0xf4, 0xed, 0x10, 0xf6, 0x5d, 0x71, 0x2b, 0xed, 0xf4, 0x5d, 0x3c, + 0x00, 0x3f, 0xed, 0xfd, 0x5d, 0xe4, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x5d, + 0x11, 0x39, 0x2f, 0x5d, 0x10, 0xed, 0x10, 0xe4, 0x87, 0x08, 0x2e, 0x2b, + 0x05, 0x7d, 0x10, 0xc4, 0x00, 0x11, 0x12, 0x39, 0x31, 0x30, 0x01, 0x38, + 0x38, 0x38, 0x38, 0x01, 0x71, 0x5d, 0x13, 0x37, 0x1e, 0x01, 0x33, 0x32, + 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x13, 0x21, 0x15, + 0x21, 0x03, 0x36, 0x33, 0x32, 0x00, 0x15, 0x14, 0x07, 0x06, 0x23, 0x22, + 0x26, 0x55, 0xbd, 0x15, 0x99, 0x6c, 0x82, 0xb4, 0xad, 0x8c, 0x57, 0x8c, + 0x28, 0xa9, 0x8e, 0x02, 0xd9, 0xfd, 0xb7, 0x4f, 0x84, 0x91, 0xc0, 0x01, + 0x08, 0x74, 0x8d, 0xf4, 0xc8, 0xfd, 0x01, 0x80, 0x10, 0x8a, 0x8b, 0xc4, + 0xa2, 0x9a, 0xb2, 0x4f, 0x3f, 0x16, 0x02, 0xf1, 0xac, 0xfe, 0x76, 0x5c, + 0xfe, 0xf6, 0xd1, 0xc7, 0x91, 0xb2, 0xe0, 0x00, 0x00, 0x02, 0x00, 0x4d, + 0xff, 0xe7, 0x04, 0x15, 0x05, 0xc0, 0x00, 0x1d, 0x00, 0x2a, 0x00, 0xb2, + 0x40, 0x27, 0x6b, 0x19, 0x01, 0x44, 0x07, 0x40, 0x15, 0x44, 0x19, 0x44, + 0x20, 0x5a, 0x12, 0x54, 0x20, 0x6b, 0x03, 0x64, 0x07, 0x64, 0x08, 0x6a, + 0x12, 0x64, 0x20, 0x74, 0x08, 0x75, 0x1c, 0x85, 0x08, 0x86, 0x1c, 0xd6, + 0x08, 0xd4, 0x16, 0x11, 0x07, 0xb8, 0xff, 0xe0, 0xb4, 0x27, 0x20, 0x23, + 0x20, 0x21, 0xb8, 0xff, 0xe0, 0x40, 0x11, 0x28, 0x1e, 0x40, 0x0d, 0x50, + 0x0d, 0x02, 0x0d, 0x0d, 0x14, 0x1b, 0x01, 0xd3, 0x5f, 0x00, 0x01, 0x00, + 0xb8, 0x02, 0x68, 0x40, 0x09, 0x05, 0x1e, 0x1b, 0x05, 0x22, 0x1e, 0x14, + 0x0d, 0x01, 0xb8, 0x01, 0x38, 0x40, 0x15, 0x00, 0xb5, 0x25, 0x73, 0x10, + 0x40, 0x21, 0x23, 0x34, 0x30, 0x10, 0x01, 0x00, 0x10, 0x10, 0x10, 0x02, + 0x10, 0x90, 0x2c, 0x0a, 0xba, 0x01, 0x38, 0x00, 0x1e, 0x01, 0x39, 0x40, + 0x0a, 0x3f, 0x17, 0x5f, 0x17, 0x6f, 0x17, 0x7f, 0x17, 0x04, 0x17, 0xb8, + 0x02, 0x24, 0xb3, 0x2b, 0xc7, 0x8b, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0xed, + 0xed, 0x10, 0xf6, 0x5d, 0x71, 0x2b, 0xed, 0xf4, 0xed, 0x00, 0x3f, 0xed, + 0x3f, 0xed, 0xfd, 0x5d, 0xe4, 0x11, 0x12, 0x39, 0x2f, 0x5d, 0xed, 0x31, + 0x30, 0x01, 0x38, 0x38, 0x38, 0x38, 0x01, 0x5d, 0x00, 0x5d, 0x01, 0x07, + 0x26, 0x27, 0x26, 0x23, 0x22, 0x07, 0x0e, 0x01, 0x07, 0x3e, 0x01, 0x33, + 0x32, 0x12, 0x15, 0x14, 0x0e, 0x01, 0x23, 0x22, 0x00, 0x11, 0x10, 0x37, + 0x36, 0x33, 0x32, 0x16, 0x01, 0x14, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, + 0x34, 0x26, 0x23, 0x22, 0x06, 0x03, 0xfb, 0xb3, 0x18, 0x2c, 0x49, 0x6b, + 0x56, 0x41, 0x55, 0x62, 0x02, 0x41, 0xbc, 0x67, 0xb4, 0xfd, 0x77, 0xd0, + 0x84, 0xe1, 0xfe, 0xe4, 0x9d, 0x89, 0xe8, 0xad, 0xdd, 0xfd, 0x37, 0x4f, + 0x8e, 0x4e, 0x72, 0xa4, 0xa2, 0x7b, 0x7a, 0xaa, 0x04, 0x53, 0x0e, 0x6a, + 0x30, 0x4d, 0x30, 0x3e, 0xee, 0xdc, 0x63, 0x60, 0xfe, 0xf7, 0xd2, 0x8a, + 0xed, 0x7e, 0x01, 0x4b, 0x01, 0x7c, 0x01, 0xa9, 0xc1, 0xa8, 0xc2, 0xfc, + 0xdd, 0x5d, 0xaa, 0x59, 0xb8, 0x9e, 0x98, 0xaf, 0xaf, 0x00, 0x00, 0x01, + 0x00, 0x61, 0x00, 0x00, 0x04, 0x16, 0x05, 0xa7, 0x00, 0x0d, 0x00, 0x70, + 0x40, 0x0e, 0xc4, 0x0d, 0x01, 0x04, 0x0d, 0x01, 0x04, 0x02, 0x08, 0x04, + 0x09, 0x03, 0x0d, 0x00, 0xb8, 0x02, 0xbb, 0x40, 0x30, 0x02, 0x01, 0x04, + 0x09, 0x0c, 0x0d, 0x73, 0x03, 0x03, 0x02, 0x40, 0x21, 0x23, 0x34, 0x4f, + 0x02, 0x5f, 0x02, 0x6f, 0x02, 0x03, 0x02, 0x1a, 0x0f, 0x08, 0x73, 0x09, + 0xeb, 0x00, 0x4f, 0x01, 0x5f, 0x01, 0x5f, 0x02, 0x03, 0x3f, 0x01, 0x5f, + 0x01, 0x6f, 0x01, 0x7f, 0x01, 0x04, 0x01, 0x19, 0x0e, 0xb8, 0x01, 0x92, + 0xb1, 0x8b, 0x18, 0x2b, 0x4e, 0x10, 0xf4, 0x5d, 0x71, 0x3c, 0x4d, 0xf4, + 0xed, 0x4e, 0x10, 0xf6, 0x71, 0x2b, 0x3c, 0x4d, 0x10, 0xed, 0x00, 0x3f, + 0x3f, 0x3c, 0xfd, 0x3c, 0x39, 0x11, 0x39, 0x01, 0x11, 0x12, 0x39, 0x31, + 0x30, 0x01, 0x71, 0x5d, 0x13, 0x35, 0x21, 0x15, 0x06, 0x00, 0x03, 0x06, + 0x07, 0x23, 0x36, 0x1a, 0x01, 0x37, 0x61, 0x03, 0xb5, 0x8c, 0xfe, 0xed, + 0x4b, 0x36, 0x0f, 0xb9, 0x03, 0x82, 0xf3, 0x89, 0x04, 0xfa, 0xad, 0x8c, + 0x95, 0xfe, 0x12, 0xfe, 0xfb, 0xb8, 0xdb, 0xad, 0x01, 0xea, 0x01, 0xc7, + 0x9c, 0x00, 0x00, 0x03, 0x00, 0x53, 0xff, 0xe7, 0x04, 0x19, 0x05, 0xc0, + 0x00, 0x17, 0x00, 0x23, 0x00, 0x30, 0x00, 0xdf, 0x40, 0x37, 0x35, 0x16, + 0x01, 0x29, 0x16, 0x49, 0x16, 0x49, 0x26, 0xe6, 0x0c, 0xe9, 0x30, 0x05, + 0x09, 0x30, 0x01, 0x7d, 0x00, 0x7d, 0x01, 0x7c, 0x04, 0x74, 0x08, 0x71, + 0x0b, 0x72, 0x0c, 0x75, 0x0d, 0x7a, 0x17, 0x8b, 0x00, 0x8a, 0x01, 0x8c, + 0x04, 0x86, 0x08, 0x81, 0x0b, 0x84, 0x0c, 0x86, 0x0d, 0x8d, 0x17, 0xcc, + 0x11, 0xc6, 0x13, 0x12, 0x22, 0xb8, 0xff, 0xe0, 0xb2, 0x1c, 0x20, 0x1a, + 0xb8, 0xff, 0xe0, 0xb2, 0x20, 0x20, 0x2f, 0xb8, 0xff, 0xe0, 0xb2, 0x2d, + 0x20, 0x26, 0xb8, 0xff, 0xe0, 0x40, 0x1e, 0x29, 0x20, 0x0c, 0x00, 0x1e, + 0x18, 0x00, 0x0c, 0x1b, 0x1e, 0x2e, 0xa0, 0x2e, 0x01, 0x2e, 0x12, 0x21, + 0x1e, 0x06, 0x05, 0x28, 0x1e, 0x12, 0x0d, 0x1e, 0x73, 0xbf, 0x09, 0x01, + 0x09, 0xb8, 0x02, 0x67, 0x40, 0x10, 0x2b, 0x73, 0x0f, 0x40, 0x20, 0x23, + 0x34, 0x30, 0x0f, 0x01, 0x00, 0x0f, 0x10, 0x0f, 0x02, 0x0f, 0xb8, 0x01, + 0x91, 0xb6, 0x32, 0x18, 0x73, 0xb0, 0x03, 0x01, 0x03, 0xb8, 0x02, 0x67, + 0xb2, 0x24, 0x73, 0x15, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x21, 0x23, 0x34, + 0x20, 0x15, 0x40, 0x15, 0x02, 0x15, 0x90, 0x31, 0xc7, 0x8b, 0x18, 0x2b, + 0x10, 0xf6, 0x5d, 0x2b, 0xed, 0xf4, 0x5d, 0xed, 0x10, 0xf4, 0x5d, 0x71, + 0x2b, 0xed, 0xf4, 0x5d, 0xed, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x5d, 0x2f, 0xed, 0x39, 0x39, 0x01, 0x11, 0x12, 0x39, 0x39, 0x31, 0x30, + 0x01, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x01, 0x5d, 0x72, + 0x71, 0x00, 0x71, 0x01, 0x2e, 0x01, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, + 0x15, 0x14, 0x06, 0x07, 0x1e, 0x01, 0x15, 0x14, 0x00, 0x23, 0x22, 0x00, + 0x35, 0x34, 0x36, 0x13, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, + 0x23, 0x22, 0x06, 0x03, 0x14, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x34, + 0x26, 0x23, 0x22, 0x06, 0x01, 0x6a, 0x70, 0x6c, 0xe6, 0xbf, 0xc0, 0xea, + 0x6b, 0x6d, 0x87, 0x8d, 0xfe, 0xf6, 0xd9, 0xd9, 0xfe, 0xf6, 0x91, 0x62, + 0x86, 0x6b, 0x68, 0x85, 0x89, 0x66, 0x67, 0x88, 0x3a, 0x49, 0x90, 0x53, + 0x81, 0xa8, 0xad, 0x82, 0x7f, 0xa7, 0x03, 0x1b, 0x29, 0x98, 0x6a, 0xa0, + 0xda, 0xdf, 0xa0, 0x66, 0x97, 0x29, 0x2c, 0xc4, 0x88, 0xbc, 0xff, 0x00, + 0x01, 0x01, 0xc0, 0x8f, 0xc1, 0x01, 0x54, 0x68, 0x84, 0x83, 0x5f, 0x63, + 0x87, 0x84, 0xfc, 0xff, 0x4d, 0x90, 0x4f, 0xa6, 0x80, 0x82, 0xaa, 0xa8, + 0x00, 0x02, 0x00, 0x55, 0xff, 0xe7, 0x04, 0x19, 0x05, 0xc0, 0x00, 0x1e, + 0x00, 0x2a, 0x00, 0xbe, 0x40, 0x34, 0x3a, 0x1a, 0x4c, 0x16, 0x40, 0x23, + 0x5b, 0x16, 0x57, 0x23, 0x66, 0x03, 0x6c, 0x16, 0x6d, 0x1a, 0x67, 0x23, + 0x7a, 0x1a, 0x7d, 0x1e, 0x8c, 0x1a, 0x8b, 0x1e, 0x9a, 0x16, 0xa9, 0x1a, + 0xbc, 0x1a, 0xea, 0x16, 0xe6, 0x20, 0xf6, 0x20, 0x13, 0x3d, 0x16, 0x9e, + 0x16, 0xad, 0x16, 0x03, 0x3a, 0x29, 0x64, 0x06, 0x02, 0x27, 0xba, 0xff, + 0xe0, 0x00, 0x23, 0xff, 0xe0, 0x40, 0x18, 0x21, 0x20, 0x06, 0x20, 0x28, + 0x1e, 0x4f, 0x0e, 0x5f, 0x0e, 0x02, 0x0e, 0x0e, 0x1c, 0x22, 0x1e, 0x14, + 0x05, 0x01, 0xd3, 0x50, 0x00, 0x01, 0x00, 0xb8, 0x02, 0x68, 0xb4, 0x04, + 0x1e, 0x1c, 0x0d, 0x1f, 0xba, 0x01, 0x39, 0x00, 0x0b, 0x01, 0x38, 0x40, + 0x11, 0x18, 0x40, 0x21, 0x23, 0x34, 0x30, 0x18, 0x01, 0x00, 0x18, 0x10, + 0x18, 0x02, 0x18, 0x90, 0x2c, 0x01, 0xb8, 0x01, 0x38, 0xb4, 0x00, 0xb5, + 0x25, 0x73, 0x11, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x21, 0x23, 0x34, 0x20, + 0x11, 0x40, 0x11, 0x02, 0x11, 0x90, 0x2b, 0xc7, 0x8b, 0x18, 0x2b, 0x10, + 0xf6, 0x5d, 0x2b, 0xed, 0xf4, 0xed, 0x10, 0xf6, 0x5d, 0x71, 0x2b, 0xed, + 0xed, 0x00, 0x3f, 0xed, 0xfd, 0x5d, 0xe4, 0x3f, 0xed, 0x12, 0x39, 0x2f, + 0x5d, 0xed, 0x31, 0x30, 0x01, 0x38, 0x38, 0x38, 0x38, 0x00, 0x5d, 0x71, + 0x01, 0x5d, 0x13, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x27, 0x0e, 0x01, 0x23, 0x22, 0x02, 0x35, 0x34, 0x00, 0x33, 0x32, 0x16, + 0x12, 0x11, 0x10, 0x02, 0x06, 0x23, 0x22, 0x26, 0x01, 0x34, 0x26, 0x23, + 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x70, 0xad, 0x16, 0x7c, + 0x61, 0x53, 0x7d, 0x50, 0x36, 0x01, 0x36, 0xbb, 0x6d, 0xb6, 0xfc, 0x01, + 0x07, 0xc6, 0x8f, 0xed, 0x7b, 0x7a, 0xf1, 0xa2, 0xac, 0xda, 0x02, 0xcb, + 0xa5, 0x74, 0x78, 0xb2, 0xa9, 0x7c, 0x7d, 0xa1, 0x01, 0x53, 0x10, 0x7a, + 0x6e, 0x4c, 0x7f, 0xd8, 0x70, 0x0c, 0x18, 0x56, 0x6b, 0x01, 0x08, 0xd8, + 0xdf, 0x01, 0x10, 0x9a, 0xfe, 0xe3, 0xfe, 0xf2, 0xfe, 0xe7, 0xfe, 0xb3, + 0xae, 0xbf, 0x03, 0x34, 0x9b, 0xb6, 0xc4, 0x9c, 0x8c, 0xaf, 0xaf, 0x00, + 0x00, 0x02, 0x00, 0xb9, 0x00, 0x00, 0x01, 0x86, 0x04, 0x26, 0x00, 0x03, + 0x00, 0x07, 0x00, 0x38, 0x40, 0x20, 0x04, 0x05, 0x00, 0x06, 0x07, 0x09, + 0x02, 0x06, 0x3c, 0x04, 0x03, 0x3c, 0x01, 0x06, 0x04, 0x0a, 0x02, 0x3c, + 0x2f, 0x00, 0x3f, 0x00, 0x02, 0x20, 0x00, 0x01, 0x00, 0xa1, 0x08, 0xa1, + 0x98, 0x18, 0x2b, 0x10, 0xf4, 0x5d, 0x71, 0xed, 0x00, 0x3f, 0x3f, 0xed, + 0x10, 0xed, 0x01, 0x11, 0x12, 0x39, 0x39, 0x12, 0x39, 0x39, 0x31, 0x30, + 0x13, 0x35, 0x33, 0x15, 0x03, 0x35, 0x33, 0x15, 0xb9, 0xcd, 0xcd, 0xcd, + 0x03, 0x59, 0xcd, 0xcd, 0xfc, 0xa7, 0xcd, 0xcd, 0x00, 0x02, 0x00, 0xaa, + 0xfe, 0xde, 0x01, 0x83, 0x04, 0x26, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x85, + 0x40, 0x2f, 0x73, 0x0b, 0x83, 0x0b, 0x93, 0x0b, 0xa3, 0x0b, 0xf0, 0x0b, + 0x05, 0x00, 0x0b, 0x01, 0x26, 0x0a, 0x37, 0x0a, 0x46, 0x0a, 0x56, 0x0a, + 0x65, 0x0a, 0xb5, 0x0a, 0xe2, 0x0a, 0x07, 0x0b, 0x0a, 0x0e, 0x07, 0x04, + 0x03, 0x3c, 0x01, 0x07, 0x3c, 0x06, 0x06, 0x05, 0x0e, 0x04, 0x0b, 0xab, + 0x0a, 0xb8, 0x01, 0x50, 0x40, 0x23, 0x05, 0x3c, 0x04, 0x01, 0x06, 0x04, + 0x0a, 0x02, 0x81, 0x00, 0x00, 0x05, 0x06, 0x07, 0x3c, 0x04, 0x0a, 0x38, + 0x0b, 0x3a, 0x05, 0x2f, 0x04, 0x3f, 0x04, 0x02, 0x20, 0x04, 0x01, 0x04, + 0xa1, 0x0f, 0xa1, 0x98, 0x18, 0x2b, 0x10, 0xf4, 0x5d, 0x71, 0x3c, 0xf4, + 0xe4, 0x10, 0xfd, 0x3c, 0x10, 0x3c, 0x10, 0xed, 0x00, 0x3f, 0x3f, 0x10, + 0xfd, 0xfd, 0xed, 0x10, 0x3c, 0x10, 0x3c, 0x10, 0xed, 0x10, 0xed, 0x01, + 0x11, 0x12, 0x39, 0x00, 0x10, 0xc9, 0x31, 0x30, 0x01, 0x71, 0x00, 0x72, + 0x71, 0x13, 0x35, 0x33, 0x15, 0x03, 0x35, 0x33, 0x15, 0x14, 0x06, 0x07, + 0x27, 0x3e, 0x01, 0x37, 0xb6, 0xcd, 0xcd, 0xcd, 0x50, 0x57, 0x32, 0x39, + 0x36, 0x03, 0x03, 0x59, 0xcd, 0xcd, 0xfc, 0xa7, 0xcd, 0xcd, 0x71, 0x8b, + 0x26, 0x4d, 0x19, 0x61, 0x5b, 0x00, 0x00, 0x01, 0x00, 0x70, 0x00, 0xe2, + 0x04, 0x3b, 0x04, 0xc3, 0x00, 0x06, 0x00, 0x5a, 0x40, 0x0c, 0x8f, 0x03, + 0x80, 0x05, 0x02, 0x03, 0x05, 0x06, 0x03, 0x08, 0x02, 0x05, 0xbb, 0x02, + 0x5a, 0x00, 0x06, 0x00, 0x03, 0x02, 0x5a, 0xb2, 0x02, 0x40, 0x06, 0xba, + 0x01, 0x50, 0x00, 0x02, 0x01, 0x50, 0x40, 0x15, 0x00, 0xab, 0x01, 0xab, + 0x20, 0x04, 0x02, 0x1a, 0x08, 0x04, 0x3c, 0x01, 0x20, 0x00, 0x01, 0x00, + 0x75, 0x07, 0x57, 0x5a, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0x3c, 0xed, 0x4e, + 0x10, 0xf6, 0x00, 0x19, 0x2f, 0x1a, 0x4d, 0xed, 0xed, 0xed, 0xed, 0x18, + 0x1a, 0x10, 0xed, 0x10, 0xed, 0x01, 0x11, 0x12, 0x17, 0x39, 0x31, 0x30, + 0x00, 0x5d, 0x13, 0x35, 0x01, 0x15, 0x09, 0x01, 0x15, 0x70, 0x03, 0xcb, + 0xfc, 0xfe, 0x03, 0x02, 0x02, 0x81, 0xa8, 0x01, 0x9a, 0xb3, 0xfe, 0xc4, + 0xfe, 0xc1, 0xb3, 0x00, 0x00, 0x02, 0x00, 0x72, 0x01, 0xa1, 0x04, 0x3a, + 0x04, 0x06, 0x00, 0x03, 0x00, 0x07, 0x00, 0x47, 0x40, 0x27, 0x05, 0x06, + 0x01, 0x04, 0x07, 0x09, 0x00, 0x25, 0x03, 0x01, 0x25, 0x03, 0x02, 0x07, + 0x25, 0x04, 0x04, 0x06, 0x25, 0x30, 0x02, 0x01, 0x9f, 0x02, 0xcf, 0x02, + 0x02, 0x02, 0xbf, 0x05, 0x00, 0x1a, 0x09, 0x01, 0x19, 0x08, 0x57, 0x5a, + 0x18, 0x2b, 0x4e, 0x10, 0xe4, 0x10, 0xe6, 0x00, 0x2f, 0x4d, 0xed, 0x5d, + 0x71, 0xed, 0x3c, 0x10, 0xed, 0x10, 0x3c, 0xed, 0x10, 0xed, 0x01, 0x11, + 0x39, 0x39, 0x11, 0x39, 0x39, 0x31, 0x30, 0x01, 0x21, 0x35, 0x21, 0x11, + 0x21, 0x35, 0x21, 0x04, 0x3a, 0xfc, 0x38, 0x03, 0xc8, 0xfc, 0x38, 0x03, + 0xc8, 0x03, 0x5e, 0xa8, 0xfd, 0x9b, 0xa8, 0x00, 0x00, 0x01, 0x00, 0x70, + 0x00, 0xe2, 0x04, 0x3b, 0x04, 0xc3, 0x00, 0x06, 0x00, 0x5a, 0x40, 0x0c, + 0x80, 0x02, 0x8f, 0x04, 0x02, 0x04, 0x02, 0x01, 0x03, 0x07, 0x05, 0x02, + 0xbb, 0x02, 0x5a, 0x00, 0x01, 0x00, 0x04, 0x02, 0x5a, 0xb2, 0x05, 0x40, + 0x01, 0xba, 0x01, 0x50, 0x00, 0x05, 0x01, 0x50, 0x40, 0x15, 0x00, 0xab, + 0x06, 0xab, 0x20, 0x03, 0x03, 0x3c, 0x06, 0x00, 0x1a, 0x08, 0x20, 0x05, + 0x01, 0x05, 0x75, 0x07, 0x57, 0x5a, 0x18, 0x2b, 0x10, 0xe6, 0x5d, 0x4e, + 0x10, 0xf6, 0x3c, 0x4d, 0xed, 0x00, 0x19, 0x2f, 0x1a, 0xed, 0xed, 0xed, + 0xed, 0x18, 0x1a, 0x10, 0xed, 0x10, 0xed, 0x01, 0x11, 0x12, 0x17, 0x39, + 0x31, 0x30, 0x00, 0x5d, 0x09, 0x01, 0x35, 0x09, 0x01, 0x35, 0x01, 0x04, + 0x3b, 0xfc, 0x35, 0x03, 0x01, 0xfc, 0xff, 0x03, 0xcb, 0x02, 0x81, 0xfe, + 0x61, 0xb3, 0x01, 0x3f, 0x01, 0x3c, 0xb3, 0xfe, 0x66, 0x00, 0x00, 0x02, + 0x00, 0x5a, 0x00, 0x00, 0x04, 0x0c, 0x05, 0xd3, 0x00, 0x1e, 0x00, 0x22, + 0x00, 0x84, 0x40, 0x2f, 0x8c, 0x1a, 0x8b, 0x1b, 0x02, 0x7c, 0x1a, 0x7c, + 0x1b, 0x02, 0x62, 0x1a, 0x65, 0x1b, 0x02, 0x6b, 0x0c, 0x61, 0x0e, 0x02, + 0x5a, 0x0c, 0x54, 0x0e, 0x02, 0x36, 0x0e, 0x44, 0x0e, 0x02, 0x1b, 0x19, + 0x08, 0x07, 0x04, 0x00, 0x10, 0x27, 0x11, 0x11, 0x00, 0x0d, 0x29, 0x14, + 0x01, 0x1e, 0x00, 0xb8, 0x02, 0xaf, 0x40, 0x23, 0x21, 0x22, 0x21, 0x3c, + 0x1f, 0x0a, 0x1f, 0x3c, 0x22, 0x22, 0x20, 0x3c, 0x21, 0x21, 0x1e, 0x00, + 0x5e, 0x1e, 0x6e, 0x0a, 0x5e, 0x17, 0x6a, 0x24, 0x10, 0x5e, 0x20, 0x11, + 0x01, 0x11, 0x6a, 0x23, 0x57, 0x5a, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0xed, + 0x10, 0xf6, 0xed, 0xf4, 0xed, 0x10, 0x3c, 0x10, 0xed, 0x3c, 0x10, 0xfd, + 0x00, 0x3f, 0xed, 0x3c, 0x10, 0xf6, 0x3c, 0x3f, 0xed, 0x12, 0x39, 0x2f, + 0xe4, 0x11, 0x17, 0x39, 0x31, 0x30, 0x01, 0x5d, 0x5d, 0x5d, 0x5d, 0x00, + 0x5d, 0x5d, 0x01, 0x26, 0x35, 0x34, 0x37, 0x36, 0x37, 0x3e, 0x02, 0x35, + 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x04, + 0x15, 0x14, 0x06, 0x07, 0x0e, 0x02, 0x07, 0x03, 0x35, 0x33, 0x15, 0x01, + 0xd8, 0x01, 0x1e, 0x16, 0x31, 0x24, 0xbb, 0x38, 0xa4, 0x77, 0x73, 0x9a, + 0x18, 0xb9, 0x19, 0xf7, 0xcb, 0xd7, 0x01, 0x00, 0x5a, 0x83, 0x58, 0x36, + 0x1a, 0x02, 0xb8, 0xcd, 0x01, 0x69, 0x24, 0x12, 0x6a, 0x4d, 0x3a, 0x3b, + 0x2b, 0xa5, 0x62, 0x3a, 0x69, 0x9f, 0x90, 0x99, 0x16, 0xcd, 0xda, 0xea, + 0xa6, 0x60, 0xa2, 0x74, 0x4e, 0x4a, 0x60, 0x6c, 0xfe, 0x97, 0xcd, 0xcd, + 0x00, 0x02, 0x00, 0x6f, 0xfe, 0x51, 0x07, 0xd5, 0x05, 0xd5, 0x00, 0x47, + 0x00, 0x57, 0x00, 0xf7, 0x40, 0x57, 0x04, 0x21, 0x10, 0x20, 0x16, 0x21, + 0x21, 0x25, 0x35, 0x0d, 0x33, 0x0e, 0x45, 0x0e, 0x49, 0x18, 0x44, 0x21, + 0x46, 0x24, 0x46, 0x49, 0x47, 0x56, 0x54, 0x0e, 0x7a, 0x29, 0x0e, 0x16, + 0x25, 0x29, 0x01, 0x26, 0x09, 0x2a, 0x1d, 0x26, 0x29, 0x35, 0x1a, 0x36, + 0x39, 0x43, 0x25, 0x56, 0x18, 0x59, 0x1d, 0x5b, 0x21, 0x56, 0x29, 0x56, + 0x49, 0x59, 0x56, 0x65, 0x18, 0x65, 0x25, 0x66, 0x29, 0x76, 0x1a, 0x7a, + 0x1d, 0x72, 0x24, 0x85, 0x18, 0x84, 0x1a, 0x8c, 0x1d, 0x8b, 0x21, 0x87, + 0x26, 0x19, 0x0e, 0x10, 0x50, 0x0e, 0x00, 0x03, 0x53, 0xb8, 0x02, 0xbb, + 0x40, 0x0a, 0x0f, 0x27, 0x30, 0x0b, 0x50, 0x0b, 0x02, 0x0b, 0x07, 0x16, + 0xbb, 0x02, 0x48, 0x00, 0x43, 0x00, 0x4b, 0x02, 0xbb, 0xb4, 0x43, 0x3a, + 0x03, 0x0a, 0x1f, 0xb8, 0x02, 0xbb, 0xb7, 0x3a, 0x01, 0x20, 0x2b, 0x70, + 0x2b, 0x02, 0x2b, 0xba, 0x01, 0x4d, 0x00, 0x27, 0x02, 0xbb, 0xb6, 0x2f, + 0x48, 0x24, 0x0f, 0x07, 0x01, 0x07, 0xb8, 0x02, 0x83, 0x40, 0x0f, 0x10, + 0x50, 0x3e, 0x00, 0x24, 0x12, 0xa0, 0x0f, 0x24, 0x30, 0x10, 0x70, 0x10, + 0x02, 0x10, 0xba, 0x01, 0xa9, 0x00, 0x1b, 0x02, 0x9e, 0xb4, 0x3f, 0x38, + 0x2a, 0x24, 0x2b, 0xba, 0x01, 0x09, 0x00, 0x23, 0x02, 0x9e, 0x40, 0x09, + 0x20, 0x35, 0x01, 0x35, 0x19, 0x58, 0x57, 0x8c, 0x18, 0x2b, 0x4e, 0x10, + 0xf4, 0x5d, 0x4d, 0xed, 0xfd, 0xed, 0xf4, 0xed, 0xf4, 0x5d, 0xed, 0xf4, + 0xfd, 0xe4, 0x10, 0xfd, 0x5d, 0xed, 0x00, 0x2f, 0xed, 0xed, 0x5d, 0x3f, + 0xed, 0x3f, 0xe4, 0xed, 0x10, 0xed, 0x3f, 0x5d, 0xe4, 0xed, 0x12, 0x39, + 0x39, 0x01, 0x11, 0x12, 0x39, 0x31, 0x30, 0x00, 0x5d, 0x01, 0x5d, 0x25, + 0x0e, 0x01, 0x23, 0x22, 0x2e, 0x01, 0x35, 0x34, 0x12, 0x36, 0x33, 0x32, + 0x16, 0x17, 0x37, 0x33, 0x03, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, + 0x36, 0x12, 0x35, 0x34, 0x02, 0x24, 0x23, 0x22, 0x04, 0x02, 0x15, 0x14, + 0x12, 0x04, 0x33, 0x20, 0x24, 0x37, 0x33, 0x0e, 0x01, 0x04, 0x23, 0x22, + 0x2c, 0x01, 0x27, 0x26, 0x35, 0x34, 0x37, 0x12, 0x00, 0x21, 0x32, 0x04, + 0x17, 0x16, 0x15, 0x10, 0x07, 0x06, 0x23, 0x22, 0x26, 0x27, 0x26, 0x01, + 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x04, 0x89, 0x41, 0xa1, 0x51, 0x59, 0xa8, 0x69, 0xa3, 0xf2, 0x72, + 0x57, 0x9e, 0x39, 0x22, 0xb3, 0x90, 0x1e, 0x29, 0x1d, 0x35, 0x56, 0x72, + 0x85, 0xab, 0xfe, 0xad, 0xcd, 0xea, 0xfe, 0x7d, 0xd5, 0xd5, 0x01, 0x93, + 0xf5, 0x01, 0x06, 0x01, 0x62, 0x58, 0xb5, 0x33, 0xf8, 0xfe, 0xaa, 0xf1, + 0xde, 0xfe, 0x89, 0xfe, 0xf8, 0x43, 0x54, 0x64, 0x7a, 0x01, 0xc1, 0x01, + 0x40, 0xf8, 0x01, 0x8b, 0x72, 0x61, 0xcc, 0xb6, 0xd8, 0x45, 0x55, 0x14, + 0x0d, 0xfe, 0x16, 0x82, 0x54, 0x38, 0x7c, 0x71, 0x48, 0x87, 0x61, 0x40, + 0x71, 0x6a, 0x40, 0xa3, 0x4b, 0x5b, 0x68, 0xd8, 0x81, 0x9f, 0x01, 0x3f, + 0xa0, 0x5b, 0x5d, 0x9b, 0xfd, 0x61, 0x8c, 0x0f, 0x1b, 0x27, 0x3d, 0x50, + 0x01, 0x0d, 0x8f, 0xa7, 0x01, 0x22, 0xae, 0xdb, 0xfe, 0x67, 0xea, 0xf5, + 0xfe, 0x9e, 0xa9, 0xb0, 0x7e, 0x69, 0xda, 0x7f, 0x72, 0xe5, 0x95, 0xbd, + 0xdb, 0xf4, 0xdd, 0x01, 0x0f, 0x01, 0x20, 0xcb, 0xc9, 0xad, 0xcb, 0xfe, + 0xde, 0xe1, 0xca, 0x2a, 0x27, 0x19, 0x01, 0x4c, 0x89, 0x98, 0x43, 0x84, + 0xcb, 0x66, 0x88, 0x96, 0x41, 0x90, 0xce, 0x00, 0x00, 0x02, 0xff, 0xfd, + 0x00, 0x00, 0x05, 0x59, 0x05, 0xba, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, + 0x23, 0x01, 0x33, 0x01, 0x23, 0x03, 0x21, 0x03, 0x13, 0x21, 0x03, 0x26, + 0x27, 0x06, 0x07, 0x03, 0x02, 0x33, 0xd1, 0x02, 0x58, 0xdd, 0xab, 0xfd, + 0x9b, 0xa1, 0xd9, 0x01, 0xf1, 0x99, 0x46, 0x22, 0x1c, 0x33, 0x05, 0xba, + 0xfa, 0x46, 0x01, 0xbc, 0xfe, 0x44, 0x02, 0x5a, 0x01, 0x96, 0xb9, 0x77, + 0x8d, 0x8b, 0x00, 0x03, 0x00, 0x96, 0x00, 0x00, 0x04, 0xe9, 0x05, 0xba, + 0x00, 0x11, 0x00, 0x1d, 0x00, 0x2a, 0x00, 0x81, 0x40, 0x50, 0x04, 0x04, + 0x46, 0x23, 0x56, 0x23, 0x66, 0x23, 0x73, 0x09, 0x84, 0x09, 0x06, 0x69, + 0x1a, 0x75, 0x05, 0x70, 0x09, 0x73, 0x0b, 0x83, 0x05, 0x83, 0x0b, 0x06, + 0x27, 0x16, 0x09, 0x03, 0x18, 0x27, 0x2a, 0x1e, 0x16, 0x1d, 0x09, 0x09, + 0x13, 0x12, 0x1e, 0x2a, 0x2a, 0x29, 0x29, 0x00, 0x1c, 0x1d, 0x1e, 0x02, + 0x01, 0x02, 0x1f, 0x1e, 0x1e, 0x11, 0x00, 0x08, 0x18, 0x26, 0x06, 0x54, + 0x25, 0x26, 0x0c, 0x1a, 0x2c, 0x1d, 0x1e, 0x20, 0x01, 0x20, 0x00, 0x01, + 0x00, 0x5d, 0x2b, 0x3b, 0x5c, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0x3c, 0xfd, + 0x3c, 0x4e, 0x10, 0xf6, 0x4d, 0xed, 0xf4, 0xed, 0x00, 0x3f, 0x3c, 0xfd, + 0x3c, 0x3f, 0x3c, 0xfd, 0x3c, 0x12, 0x39, 0x2f, 0x3c, 0x10, 0xfd, 0x3c, + 0x39, 0x2f, 0x11, 0x39, 0x11, 0x12, 0x39, 0x01, 0x12, 0x17, 0x39, 0x31, + 0x30, 0x01, 0x5d, 0x00, 0x5d, 0x33, 0x11, 0x21, 0x32, 0x1e, 0x01, 0x15, + 0x14, 0x06, 0x07, 0x1e, 0x01, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x01, 0x21, + 0x32, 0x37, 0x3e, 0x01, 0x35, 0x34, 0x2e, 0x01, 0x23, 0x21, 0x11, 0x21, + 0x32, 0x37, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x01, 0x23, 0x21, 0x96, 0x02, + 0x26, 0xa8, 0xcb, 0x73, 0x66, 0x67, 0x85, 0x8f, 0x57, 0x80, 0xc1, 0x8c, + 0xfe, 0x93, 0x01, 0x3d, 0x81, 0x38, 0x4a, 0x4b, 0x46, 0x82, 0x9e, 0xfe, + 0xdb, 0x01, 0x6d, 0x5e, 0x26, 0x43, 0x5a, 0x3a, 0x54, 0x95, 0x8c, 0xfe, + 0xad, 0x05, 0xba, 0x59, 0xb9, 0x65, 0x5e, 0xa6, 0x33, 0x27, 0xbc, 0x80, + 0x67, 0xb1, 0x60, 0x31, 0x03, 0x52, 0x11, 0x16, 0x66, 0x4d, 0x49, 0x6f, + 0x29, 0xfb, 0xa0, 0x07, 0x0c, 0x38, 0x6b, 0x46, 0x52, 0x79, 0x31, 0x00, + 0x00, 0x01, 0x00, 0x66, 0xff, 0xe7, 0x05, 0x76, 0x05, 0xd3, 0x00, 0x1d, + 0x00, 0xb8, 0x40, 0x60, 0x63, 0x02, 0x6a, 0x1d, 0x02, 0x20, 0x00, 0x32, + 0x0d, 0x63, 0x00, 0x70, 0x00, 0x74, 0x1d, 0x80, 0x00, 0x84, 0x1d, 0x90, + 0x00, 0x9a, 0x05, 0xab, 0x03, 0xa5, 0x0d, 0xb9, 0x03, 0xb4, 0x0d, 0xc7, + 0x0d, 0xd0, 0x00, 0xe4, 0x1d, 0xf3, 0x1d, 0x11, 0x0e, 0x12, 0x1d, 0x11, + 0x1d, 0x1d, 0x03, 0x2a, 0x06, 0x28, 0x11, 0x2a, 0x1c, 0x20, 0x1f, 0x47, + 0x0d, 0x56, 0x14, 0x57, 0x15, 0x56, 0x19, 0x68, 0x05, 0x6b, 0x1d, 0x7b, + 0x12, 0x8b, 0x12, 0x9a, 0x03, 0x99, 0x0e, 0x9a, 0x1c, 0xa8, 0x01, 0xa4, + 0x02, 0xa8, 0x11, 0xd5, 0x0e, 0x13, 0x00, 0x14, 0x00, 0x1a, 0x10, 0x14, + 0x10, 0x1a, 0x04, 0x02, 0xb8, 0xff, 0xde, 0xb2, 0x28, 0x39, 0x01, 0xb8, + 0xff, 0xc0, 0x40, 0x27, 0x28, 0x39, 0x10, 0x0f, 0x00, 0x01, 0x04, 0x1b, + 0x13, 0x1e, 0x0c, 0x03, 0x1b, 0x1e, 0x04, 0x09, 0x10, 0x26, 0x0f, 0x4a, + 0x00, 0x26, 0x20, 0x01, 0x01, 0x01, 0x1a, 0x1f, 0x17, 0x26, 0x20, 0x08, + 0x01, 0x08, 0x19, 0x1e, 0x63, 0x5c, 0x18, 0x2b, 0x4e, 0x10, 0xf4, 0x5d, + 0x4d, 0xed, 0x4e, 0x10, 0xf6, 0x5d, 0x4d, 0xed, 0xf4, 0xed, 0x00, 0x3f, + 0xed, 0x3f, 0xed, 0x11, 0x17, 0x39, 0x31, 0x30, 0x01, 0x2b, 0x2b, 0x5d, + 0x5d, 0x71, 0x00, 0x5d, 0x01, 0x72, 0x01, 0x17, 0x06, 0x04, 0x23, 0x22, + 0x24, 0x02, 0x35, 0x34, 0x12, 0x24, 0x33, 0x32, 0x04, 0x17, 0x07, 0x2e, + 0x01, 0x23, 0x22, 0x06, 0x02, 0x15, 0x14, 0x12, 0x16, 0x33, 0x32, 0x36, + 0x04, 0xb4, 0xc2, 0x3d, 0xfe, 0xc3, 0xe5, 0xed, 0xfe, 0xd7, 0x9b, 0xaf, + 0x01, 0x43, 0xc2, 0xdc, 0x01, 0x2c, 0x3b, 0xbf, 0x33, 0xc2, 0x93, 0xa9, + 0xe3, 0x5c, 0x6d, 0xe6, 0x86, 0xa3, 0xe2, 0x02, 0x02, 0x31, 0xef, 0xfb, + 0xc1, 0x01, 0x6e, 0xd2, 0xe5, 0x01, 0x55, 0xb1, 0xe0, 0xcb, 0x2d, 0xa0, + 0x92, 0xa2, 0xfe, 0xef, 0x91, 0xbb, 0xfe, 0xe9, 0x8a, 0xbc, 0x00, 0x02, + 0x00, 0x9e, 0x00, 0x00, 0x05, 0x5a, 0x05, 0xba, 0x00, 0x0f, 0x00, 0x1d, + 0x00, 0x84, 0x40, 0x26, 0x20, 0x1f, 0x01, 0x43, 0x08, 0x1c, 0x1d, 0x1e, + 0x02, 0x01, 0x02, 0x11, 0x10, 0x1e, 0x0f, 0x00, 0x08, 0x17, 0x26, 0x20, + 0x09, 0x01, 0x09, 0x1a, 0x1f, 0x1d, 0x10, 0x20, 0x01, 0x20, 0x00, 0x01, + 0x00, 0x5d, 0x1e, 0x3b, 0x5c, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0x3c, 0xfd, + 0x3c, 0x10, 0xf6, 0x5d, 0xed, 0x00, 0x3f, 0x3c, 0xfd, 0x3c, 0x3f, 0x3c, + 0xfd, 0x3c, 0x31, 0x30, 0x43, 0x79, 0x40, 0x36, 0x03, 0x1b, 0x07, 0x08, + 0x06, 0x08, 0x05, 0x08, 0x04, 0x08, 0x04, 0x06, 0x19, 0x18, 0x1a, 0x18, + 0x02, 0x06, 0x0b, 0x0a, 0x0c, 0x0a, 0x0d, 0x0a, 0x03, 0x06, 0x15, 0x16, + 0x14, 0x16, 0x13, 0x16, 0x03, 0x06, 0x1b, 0x03, 0x17, 0x21, 0x01, 0x12, + 0x0e, 0x17, 0x21, 0x01, 0x18, 0x08, 0x1c, 0x21, 0x01, 0x16, 0x0a, 0x11, + 0x21, 0x00, 0x2b, 0x2b, 0x01, 0x2b, 0x2b, 0x2a, 0x2a, 0x2a, 0x2a, 0x81, + 0x01, 0x5d, 0x33, 0x11, 0x21, 0x32, 0x17, 0x16, 0x17, 0x16, 0x12, 0x15, + 0x14, 0x02, 0x0e, 0x02, 0x23, 0x25, 0x21, 0x32, 0x36, 0x37, 0x3e, 0x01, + 0x35, 0x34, 0x26, 0x27, 0x26, 0x23, 0x21, 0x9e, 0x01, 0xf9, 0xab, 0x5a, + 0x7e, 0x59, 0x74, 0x73, 0x4e, 0x7a, 0x91, 0xcd, 0x85, 0xfe, 0xb1, 0x01, + 0x39, 0x91, 0xa5, 0x31, 0x45, 0x4d, 0x97, 0x6c, 0x4e, 0xad, 0xfe, 0xcc, + 0x05, 0xba, 0x15, 0x1d, 0x4c, 0x62, 0xfe, 0xcf, 0xc4, 0xa7, 0xfe, 0xfe, + 0xa9, 0x61, 0x32, 0xad, 0x36, 0x31, 0x45, 0xe9, 0xa6, 0xe6, 0xf7, 0x2a, + 0x1e, 0x00, 0x00, 0x01, 0x00, 0xa2, 0x00, 0x00, 0x04, 0xe8, 0x05, 0xba, + 0x00, 0x0b, 0x00, 0x5b, 0x40, 0x15, 0x06, 0x05, 0x1e, 0x08, 0x08, 0x07, + 0x07, 0x00, 0x03, 0x04, 0x1e, 0x02, 0x01, 0x02, 0x0a, 0x09, 0x1e, 0x0b, + 0x00, 0x08, 0x07, 0xb8, 0xff, 0xc0, 0x40, 0x1c, 0x10, 0x12, 0x34, 0x07, + 0x54, 0x03, 0x4a, 0x20, 0x0a, 0x20, 0x0d, 0x02, 0x0a, 0x1a, 0x0d, 0x04, + 0x09, 0x20, 0x01, 0x20, 0x00, 0x01, 0x00, 0x5d, 0x0c, 0x3b, 0x5b, 0x18, + 0x2b, 0x4e, 0x10, 0xf4, 0x5d, 0x3c, 0x4d, 0xfd, 0x3c, 0x4e, 0x10, 0xf6, + 0x5d, 0x4d, 0xf4, 0xe4, 0x2b, 0x00, 0x3f, 0x3c, 0xfd, 0x3c, 0x3f, 0x3c, + 0xfd, 0x3c, 0x12, 0x39, 0x2f, 0x3c, 0x10, 0xfd, 0x3c, 0x31, 0x30, 0x33, + 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0xa2, + 0x04, 0x24, 0xfc, 0x9e, 0x03, 0x2b, 0xfc, 0xd5, 0x03, 0x84, 0x05, 0xba, + 0xad, 0xfe, 0x3f, 0xac, 0xfe, 0x0d, 0xad, 0x00, 0x00, 0x01, 0x00, 0xa8, + 0x00, 0x00, 0x04, 0x85, 0x05, 0xba, 0x00, 0x09, 0x00, 0x4b, 0x40, 0x2a, + 0x06, 0x05, 0x1e, 0x08, 0x08, 0x8f, 0x07, 0x01, 0x07, 0x07, 0x00, 0x03, + 0x04, 0x1e, 0x02, 0x01, 0x02, 0x00, 0x08, 0x07, 0x9c, 0x20, 0x02, 0x20, + 0x0b, 0x02, 0x02, 0x1a, 0x0b, 0x04, 0x09, 0x20, 0x01, 0x20, 0x00, 0x01, + 0x00, 0x5d, 0x0a, 0x3b, 0x5c, 0x18, 0x2b, 0x4e, 0x10, 0xf4, 0x5d, 0x3c, + 0x4d, 0xfd, 0x3c, 0x4e, 0x10, 0xf6, 0x5d, 0x4d, 0xe4, 0x00, 0x3f, 0x3f, + 0x3c, 0xfd, 0x3c, 0x12, 0x39, 0x2f, 0x5d, 0x3c, 0x10, 0xfd, 0x3c, 0x31, + 0x30, 0x33, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0xa8, + 0x03, 0xdd, 0xfc, 0xe5, 0x02, 0xb0, 0xfd, 0x50, 0x05, 0xba, 0xad, 0xfe, + 0x3a, 0xad, 0xfd, 0x66, 0x00, 0x01, 0x00, 0x6d, 0xff, 0xe7, 0x05, 0xb9, + 0x05, 0xd3, 0x00, 0x25, 0x00, 0xd8, 0x40, 0x45, 0x1b, 0x14, 0x1b, 0x15, + 0x02, 0x60, 0x27, 0x01, 0x5e, 0x08, 0x13, 0x01, 0x12, 0x03, 0x24, 0x24, + 0x00, 0x21, 0x12, 0x17, 0x02, 0x25, 0x00, 0x1e, 0x02, 0x01, 0x01, 0x06, + 0x17, 0x1e, 0x0e, 0x03, 0x21, 0x1e, 0x06, 0x09, 0x01, 0x01, 0x26, 0x27, + 0x25, 0x24, 0x20, 0x03, 0x03, 0x20, 0x02, 0x20, 0x27, 0x60, 0x02, 0x03, + 0x02, 0x72, 0x80, 0x27, 0x01, 0x27, 0x1d, 0x26, 0x20, 0x0a, 0x01, 0x0a, + 0x19, 0x26, 0x63, 0x5b, 0x18, 0x2b, 0x4e, 0x10, 0xf4, 0x5d, 0x4d, 0xed, + 0x4d, 0x10, 0x5d, 0xf6, 0x5d, 0x3c, 0x4d, 0x10, 0xfd, 0x3c, 0x11, 0x12, + 0x39, 0x2f, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x3c, 0xfd, + 0x3c, 0x11, 0x12, 0x39, 0x11, 0x12, 0x39, 0x01, 0x11, 0x12, 0x39, 0x12, + 0x39, 0x31, 0x30, 0x43, 0x79, 0x40, 0x44, 0x04, 0x23, 0x1b, 0x1c, 0x1a, + 0x1c, 0x19, 0x1c, 0x03, 0x06, 0x0c, 0x26, 0x10, 0x25, 0x15, 0x26, 0x1f, + 0x26, 0x08, 0x25, 0x04, 0x26, 0x23, 0x25, 0x18, 0x0d, 0x1d, 0x21, 0x00, + 0x16, 0x0f, 0x13, 0x21, 0x01, 0x11, 0x12, 0x14, 0x13, 0x20, 0x07, 0x1d, + 0x21, 0x00, 0x22, 0x05, 0x25, 0x21, 0x01, 0x1c, 0x0b, 0x17, 0x21, 0x01, + 0x14, 0x11, 0x17, 0x21, 0x01, 0x1e, 0x09, 0x21, 0x21, 0x00, 0x24, 0x03, + 0x21, 0x21, 0x00, 0x00, 0x2b, 0x2b, 0x2b, 0x2b, 0x01, 0x2b, 0x2b, 0x10, + 0x3c, 0x10, 0x3c, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2a, 0x81, 0x01, 0x5d, 0x00, 0x5d, 0x01, 0x35, 0x25, 0x11, 0x06, 0x04, + 0x23, 0x22, 0x24, 0x02, 0x35, 0x34, 0x12, 0x24, 0x33, 0x32, 0x04, 0x16, + 0x17, 0x07, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x01, 0x07, 0x06, 0x15, 0x14, + 0x12, 0x04, 0x33, 0x32, 0x36, 0x37, 0x11, 0x03, 0x4c, 0x02, 0x6d, 0x8f, + 0xfe, 0xd0, 0xa0, 0xd8, 0xfe, 0x9f, 0xb4, 0xb3, 0x01, 0x50, 0xdb, 0x9f, + 0x01, 0x01, 0x92, 0x26, 0xaf, 0x21, 0x62, 0xb6, 0x6f, 0x85, 0xc2, 0x77, + 0x21, 0x38, 0x87, 0x01, 0x02, 0x91, 0x7e, 0xf0, 0x3e, 0x02, 0x3f, 0xac, + 0x01, 0xfd, 0xe0, 0x72, 0x73, 0xb9, 0x01, 0x5e, 0xd8, 0xd6, 0x01, 0x73, + 0xb4, 0x67, 0xb8, 0x94, 0x30, 0x70, 0x80, 0x4d, 0x51, 0x84, 0x4f, 0x88, + 0x9f, 0xc4, 0xfe, 0xf8, 0x80, 0x61, 0x37, 0x01, 0x11, 0x00, 0x00, 0x01, + 0x00, 0xa1, 0x00, 0x00, 0x05, 0x1f, 0x05, 0xba, 0x00, 0x0b, 0x00, 0x68, + 0xb9, 0x00, 0x0d, 0xff, 0xc0, 0x40, 0x27, 0x13, 0x15, 0x34, 0x04, 0x03, + 0x1e, 0x09, 0x0a, 0xa0, 0x0a, 0xd0, 0x0a, 0x02, 0x0a, 0x05, 0x02, 0x02, + 0x0b, 0x08, 0x08, 0x05, 0x08, 0x20, 0x07, 0x07, 0x06, 0x5d, 0x80, 0x0d, + 0x01, 0x0d, 0x02, 0x0b, 0x20, 0x01, 0x20, 0x00, 0x01, 0x00, 0xb8, 0xff, + 0xc0, 0x40, 0x15, 0x13, 0x15, 0x34, 0x00, 0x5d, 0x0c, 0x20, 0x0d, 0x01, + 0x20, 0x0d, 0x50, 0x0d, 0x60, 0x0d, 0x70, 0x0d, 0x04, 0x3b, 0x59, 0x18, + 0x2b, 0x5d, 0x71, 0x10, 0xf6, 0x2b, 0x5d, 0x3c, 0xfd, 0x3c, 0x10, 0x5d, + 0xf6, 0x3c, 0x10, 0xfd, 0x3c, 0x00, 0x3f, 0x3c, 0x3f, 0x3c, 0x39, 0x5d, + 0x2f, 0x3c, 0xfd, 0x3c, 0x31, 0x30, 0x01, 0x2b, 0x33, 0x11, 0x33, 0x11, + 0x21, 0x11, 0x33, 0x11, 0x23, 0x11, 0x21, 0x11, 0xa1, 0xc2, 0x02, 0xfa, + 0xc2, 0xc2, 0xfd, 0x06, 0x05, 0xba, 0xfd, 0xa6, 0x02, 0x5a, 0xfa, 0x46, + 0x02, 0xb3, 0xfd, 0x4d, 0x00, 0x01, 0x00, 0xbf, 0x00, 0x00, 0x01, 0x81, + 0x05, 0xba, 0x00, 0x03, 0x00, 0x94, 0xb5, 0x01, 0x02, 0x00, 0x08, 0x02, + 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x38, 0x3d, 0x34, 0x05, 0xb8, 0xff, 0xc0, + 0xb3, 0x33, 0x34, 0x34, 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x2d, 0x30, 0x34, + 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x28, 0x29, 0x34, 0x05, 0xb8, 0xff, 0xc0, + 0xb3, 0x23, 0x25, 0x34, 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x1d, 0x1e, 0x34, + 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x18, 0x1a, 0x34, 0x05, 0xb8, 0xff, 0xc0, + 0x40, 0x2f, 0x0d, 0x10, 0x34, 0x20, 0x05, 0x90, 0x05, 0xaf, 0x05, 0x03, + 0x03, 0x20, 0x01, 0x00, 0x00, 0x8f, 0x00, 0xa0, 0x00, 0xb0, 0x00, 0x04, + 0x2f, 0x00, 0x40, 0x00, 0x50, 0x00, 0xdf, 0x00, 0xf0, 0x00, 0x05, 0x12, + 0x20, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x03, 0x00, 0xa2, 0x04, 0xd6, 0x59, + 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0x43, 0x5c, 0x58, 0xb2, 0x80, 0x00, 0x01, + 0x01, 0x5d, 0x59, 0x71, 0x72, 0x3c, 0xfd, 0x5d, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x3c, 0x00, 0x3f, 0x3f, 0x31, 0x30, 0x33, 0x11, + 0x33, 0x11, 0xbf, 0xc2, 0x05, 0xba, 0xfa, 0x46, 0x00, 0x01, 0x00, 0x37, + 0xff, 0xe7, 0x03, 0x61, 0x05, 0xba, 0x00, 0x11, 0x00, 0x4d, 0x40, 0x10, + 0x65, 0x02, 0x67, 0x06, 0x74, 0x02, 0x75, 0x06, 0x88, 0x0d, 0x88, 0x11, + 0x06, 0x09, 0x02, 0x01, 0xb8, 0x01, 0x1a, 0x40, 0x21, 0x04, 0x1e, 0x0f, + 0x09, 0x09, 0x26, 0x0a, 0x0a, 0x08, 0x26, 0x0b, 0x5d, 0x20, 0x13, 0x01, + 0x20, 0x13, 0x40, 0x13, 0x50, 0x13, 0x60, 0x13, 0x04, 0x13, 0x01, 0x26, + 0x00, 0x4b, 0x12, 0xb6, 0x59, 0x18, 0x2b, 0x10, 0xf6, 0xed, 0x10, 0x5d, + 0x71, 0xf6, 0xed, 0x3c, 0x10, 0xed, 0x00, 0x3f, 0xed, 0xed, 0x3f, 0x31, + 0x30, 0x00, 0x5d, 0x13, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x3e, 0x01, 0x35, + 0x11, 0x33, 0x11, 0x14, 0x0e, 0x01, 0x23, 0x22, 0x26, 0x3b, 0xaf, 0x07, + 0x70, 0x63, 0x49, 0x6a, 0x28, 0xc2, 0x59, 0xc1, 0x82, 0xc1, 0xcd, 0x01, + 0xa0, 0x18, 0xa8, 0x7c, 0x43, 0x73, 0x7e, 0x03, 0xf2, 0xfc, 0x19, 0xb8, + 0xca, 0x6a, 0xde, 0x00, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x05, 0x52, + 0x05, 0xba, 0x00, 0x0b, 0x01, 0x85, 0x40, 0x31, 0x03, 0x22, 0x37, 0x39, + 0x08, 0x09, 0x3a, 0x27, 0x0a, 0x35, 0x06, 0x36, 0x0a, 0x47, 0x0a, 0x57, + 0x03, 0x86, 0x03, 0xd7, 0x03, 0x07, 0x76, 0x0a, 0xd9, 0x03, 0xd9, 0x0a, + 0x03, 0x28, 0x05, 0x8c, 0x04, 0x8a, 0x05, 0xaa, 0x04, 0xea, 0x08, 0x05, + 0x0a, 0x04, 0x01, 0x35, 0x04, 0xd6, 0x04, 0x02, 0x09, 0xb8, 0xff, 0xe0, + 0x40, 0x09, 0x12, 0x21, 0x34, 0x03, 0x20, 0x12, 0x21, 0x34, 0x03, 0xb8, + 0xff, 0xde, 0xb3, 0x0c, 0x39, 0x12, 0x09, 0xb8, 0xff, 0xe0, 0xb3, 0x12, + 0x21, 0x34, 0x08, 0xb8, 0xff, 0xe0, 0xb3, 0x12, 0x21, 0x34, 0x04, 0xb8, + 0xff, 0xe0, 0xb3, 0x1d, 0x21, 0x34, 0x04, 0xb8, 0xff, 0xc0, 0xb3, 0x12, + 0x16, 0x34, 0x08, 0xb8, 0xff, 0xde, 0x40, 0x3d, 0x19, 0x39, 0x08, 0x09, + 0x25, 0x25, 0x3d, 0x08, 0x09, 0x19, 0x19, 0x3d, 0x06, 0x06, 0x07, 0x09, + 0x0a, 0x09, 0x08, 0x0a, 0x05, 0x03, 0x04, 0x04, 0x20, 0x05, 0x0a, 0x14, + 0x05, 0x05, 0x0a, 0x09, 0x08, 0x08, 0x20, 0x07, 0x06, 0x14, 0x07, 0x07, + 0x06, 0x0a, 0x0a, 0x00, 0x05, 0x02, 0x04, 0x01, 0x02, 0x07, 0x0b, 0x08, + 0x00, 0x08, 0x0a, 0x03, 0x02, 0x0b, 0x01, 0x00, 0x04, 0xb8, 0x02, 0x3a, + 0x40, 0x0f, 0x30, 0x05, 0x01, 0xa0, 0x05, 0xb0, 0x05, 0xc0, 0x05, 0xe0, + 0x05, 0x04, 0x05, 0x4a, 0x08, 0xb8, 0x02, 0x3a, 0x40, 0x0b, 0x30, 0x07, + 0x01, 0x20, 0x07, 0x80, 0x07, 0xb0, 0x07, 0x03, 0x07, 0xb8, 0x02, 0x86, + 0x40, 0x0b, 0x0b, 0x20, 0x20, 0x00, 0x01, 0x00, 0x5d, 0x0c, 0x3b, 0xa8, + 0x18, 0x2b, 0x10, 0xf4, 0x5d, 0xed, 0xfd, 0x5d, 0x71, 0xed, 0xf4, 0x5d, + 0x71, 0xed, 0x10, 0x3c, 0x10, 0x3c, 0x3c, 0x3c, 0x00, 0x3f, 0x3c, 0x3c, + 0x3c, 0x3f, 0x3c, 0x3c, 0x3c, 0x12, 0x39, 0x2f, 0x87, 0x05, 0x2e, 0x2b, + 0x0e, 0x7d, 0x10, 0xc4, 0x87, 0x05, 0x2e, 0x18, 0x2b, 0x04, 0x7d, 0x10, + 0xc4, 0x07, 0x08, 0x10, 0x3c, 0x08, 0x3c, 0x01, 0x4b, 0xb0, 0x18, 0x53, + 0x4b, 0xb0, 0x1b, 0x51, 0x5a, 0x58, 0xb9, 0x00, 0x04, 0xff, 0xd8, 0x38, + 0x59, 0x31, 0x30, 0x01, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x43, + 0x5c, 0x58, 0x40, 0x11, 0x09, 0x22, 0x19, 0x39, 0x08, 0x2c, 0x19, 0x39, + 0x04, 0x2c, 0x19, 0x39, 0x04, 0x22, 0x1b, 0x39, 0x05, 0xb8, 0xff, 0xde, + 0xb6, 0x16, 0x39, 0x04, 0x22, 0x16, 0x39, 0x06, 0xb8, 0xff, 0xde, 0x40, + 0x0b, 0x12, 0x39, 0x08, 0x22, 0x14, 0x39, 0x04, 0x40, 0x14, 0x39, 0x08, + 0xb8, 0xff, 0xde, 0xb5, 0x25, 0x39, 0x04, 0x40, 0x15, 0x39, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x59, 0x00, 0x2b, + 0x2b, 0x2b, 0x01, 0x71, 0x72, 0x5d, 0x00, 0x71, 0x5d, 0x2b, 0x2b, 0x33, + 0x11, 0x33, 0x11, 0x01, 0x21, 0x09, 0x01, 0x21, 0x01, 0x07, 0x11, 0x96, + 0xc2, 0x02, 0xd8, 0x01, 0x07, 0xfd, 0x99, 0x02, 0x82, 0xff, 0x00, 0xfd, + 0xf6, 0xf0, 0x05, 0xba, 0xfd, 0x29, 0x02, 0xd7, 0xfd, 0xae, 0xfc, 0x98, + 0x02, 0xe6, 0xea, 0xfe, 0x04, 0x00, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, + 0x04, 0x2a, 0x05, 0xba, 0x00, 0x05, 0x00, 0x33, 0x40, 0x0c, 0x01, 0x02, + 0x04, 0x03, 0x1e, 0x05, 0x00, 0x08, 0x20, 0x04, 0x01, 0x04, 0xb8, 0x02, + 0xa7, 0x40, 0x0e, 0x07, 0x02, 0x03, 0x20, 0x01, 0x20, 0x00, 0x01, 0x00, + 0x5d, 0x06, 0x3b, 0x5c, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0x3c, 0xfd, 0x3c, + 0x10, 0xe6, 0x5d, 0x00, 0x3f, 0x3c, 0xfd, 0x3c, 0x3f, 0x31, 0x30, 0x33, + 0x11, 0x33, 0x11, 0x21, 0x15, 0x96, 0xc2, 0x02, 0xd2, 0x05, 0xba, 0xfa, + 0xf3, 0xad, 0x00, 0x01, 0x00, 0x98, 0x00, 0x00, 0x06, 0x0f, 0x05, 0xba, + 0x00, 0x10, 0x01, 0x75, 0x40, 0x7f, 0x00, 0x02, 0x0f, 0x08, 0x14, 0x02, + 0x1b, 0x08, 0x04, 0x76, 0x0c, 0x86, 0x0c, 0xc8, 0x0c, 0x03, 0x09, 0x0c, + 0x49, 0x0c, 0x49, 0x0f, 0x03, 0x29, 0x04, 0x25, 0x0d, 0x2c, 0x0e, 0x58, + 0x03, 0x5b, 0x04, 0x76, 0x0d, 0x78, 0x0e, 0x87, 0x0d, 0x08, 0x0b, 0x02, + 0x05, 0x08, 0x39, 0x0d, 0x36, 0x0e, 0x4f, 0x02, 0x4b, 0x03, 0x44, 0x07, + 0x40, 0x08, 0x4d, 0x0d, 0x42, 0x0e, 0x0a, 0x98, 0x02, 0x99, 0x03, 0x96, + 0x07, 0x96, 0x08, 0xa8, 0x03, 0xa7, 0x07, 0x06, 0x12, 0x02, 0x0f, 0x0e, + 0x0e, 0x30, 0x05, 0x02, 0x14, 0x05, 0x05, 0x02, 0x08, 0x0c, 0x0d, 0x0d, + 0x30, 0x05, 0x08, 0x14, 0x05, 0x05, 0x08, 0x0c, 0x52, 0x0f, 0x52, 0x01, + 0x40, 0x01, 0x02, 0x02, 0x08, 0x08, 0x09, 0x0a, 0x0b, 0x0b, 0x0d, 0x0d, + 0x0e, 0x0e, 0x10, 0x00, 0x08, 0x09, 0x02, 0x60, 0x12, 0x80, 0x12, 0x02, + 0x12, 0xba, 0x02, 0xa8, 0x00, 0x0d, 0x01, 0x31, 0xb2, 0x05, 0x20, 0x08, + 0xb8, 0x01, 0x31, 0x40, 0x0a, 0x0c, 0x09, 0x0a, 0x20, 0x40, 0x0c, 0x7f, + 0x0b, 0x01, 0x0b, 0xba, 0x02, 0x56, 0x00, 0x0e, 0x01, 0x0b, 0xb2, 0x05, + 0x20, 0x02, 0xb8, 0x01, 0x0b, 0x40, 0x09, 0x0f, 0x01, 0x00, 0x20, 0x0f, + 0x70, 0x10, 0x01, 0x10, 0xb8, 0x02, 0x56, 0xb7, 0x20, 0x05, 0x60, 0x05, + 0x80, 0x05, 0x03, 0x05, 0xb8, 0x02, 0xa8, 0xb3, 0x11, 0x3b, 0x59, 0x18, + 0x2b, 0x19, 0x10, 0xf4, 0x5d, 0xf4, 0x5d, 0x3c, 0x18, 0xfd, 0x3c, 0x10, + 0xed, 0x1a, 0x19, 0x10, 0xed, 0xf4, 0x5d, 0x3c, 0x1a, 0x18, 0xfd, 0x3c, + 0x10, 0xed, 0x1a, 0x19, 0x10, 0xed, 0xe4, 0x5d, 0x00, 0x18, 0x3f, 0x3f, + 0x3c, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x10, 0x3c, + 0x10, 0x3c, 0x1a, 0x10, 0xed, 0xed, 0x87, 0x05, 0x2e, 0x2b, 0x87, 0x7d, + 0xc4, 0x87, 0x2e, 0x18, 0x2b, 0x87, 0x7d, 0xc4, 0x31, 0x30, 0x00, 0x4b, + 0xb0, 0x0b, 0x53, 0x4b, 0xb0, 0x1e, 0x51, 0x5a, 0x58, 0xbd, 0x00, 0x0c, + 0xff, 0xfb, 0x00, 0x08, 0xff, 0xd6, 0x00, 0x02, 0xff, 0xd6, 0x38, 0x38, + 0x38, 0x59, 0x01, 0x4b, 0xb0, 0x0c, 0x53, 0x4b, 0xb0, 0x28, 0x51, 0x5a, + 0x58, 0xb9, 0x00, 0x0d, 0xff, 0xf8, 0xb1, 0x0e, 0x0a, 0x38, 0x38, 0x59, + 0x01, 0x43, 0x5c, 0x58, 0xb9, 0x00, 0x0d, 0xff, 0xd4, 0xb6, 0x21, 0x39, + 0x0e, 0x2c, 0x21, 0x39, 0x0d, 0xb8, 0xff, 0xd4, 0xb6, 0x37, 0x39, 0x0e, + 0x32, 0x37, 0x39, 0x0d, 0xb8, 0xff, 0xd4, 0xb5, 0x2d, 0x39, 0x0e, 0x2c, + 0x2d, 0x39, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x59, 0x72, 0x71, 0x5d, + 0x00, 0x71, 0x5d, 0x01, 0x5d, 0x33, 0x11, 0x21, 0x01, 0x16, 0x17, 0x36, + 0x37, 0x01, 0x21, 0x11, 0x23, 0x11, 0x01, 0x23, 0x01, 0x11, 0x98, 0x01, + 0x24, 0x01, 0x5b, 0x30, 0x16, 0x19, 0x35, 0x01, 0x5f, 0x01, 0x05, 0xbb, + 0xfe, 0x56, 0xaf, 0xfe, 0x58, 0x05, 0xba, 0xfb, 0xf2, 0x91, 0x48, 0x50, + 0x9b, 0x03, 0xfc, 0xfa, 0x46, 0x04, 0xcb, 0xfb, 0x35, 0x04, 0xe0, 0xfb, + 0x20, 0x00, 0x00, 0x01, 0x00, 0x9c, 0x00, 0x00, 0x05, 0x1f, 0x05, 0xba, + 0x00, 0x09, 0x00, 0xea, 0xb1, 0x12, 0x0b, 0xb8, 0xff, 0xc0, 0x40, 0x35, + 0x13, 0x15, 0x34, 0x08, 0x02, 0x03, 0x03, 0x20, 0x07, 0x08, 0x14, 0x07, + 0x07, 0x08, 0x02, 0x07, 0x03, 0x03, 0x08, 0x09, 0x04, 0x02, 0x02, 0x09, + 0x07, 0x08, 0x04, 0x03, 0x20, 0x06, 0x06, 0x05, 0x5d, 0x20, 0x0b, 0x01, + 0x20, 0x0b, 0x50, 0x0b, 0x60, 0x0b, 0x70, 0x0b, 0x80, 0x0b, 0x05, 0x0b, + 0x08, 0x09, 0x20, 0x01, 0x00, 0xb8, 0xff, 0xc0, 0x40, 0x0c, 0x13, 0x15, + 0x34, 0x20, 0x00, 0x01, 0x00, 0x5d, 0x0a, 0x3b, 0x59, 0x18, 0x2b, 0x10, + 0xf6, 0x5d, 0x2b, 0x3c, 0xfd, 0x3c, 0x10, 0x5d, 0x71, 0xf4, 0x3c, 0x10, + 0xfd, 0x3c, 0x00, 0x3f, 0x3c, 0x3f, 0x3c, 0x12, 0x39, 0x39, 0x01, 0x11, + 0x39, 0x39, 0x87, 0x04, 0x2e, 0x2b, 0x87, 0x7d, 0xc4, 0x31, 0x30, 0x01, + 0x2b, 0x43, 0x5c, 0x58, 0xb4, 0x08, 0x40, 0x46, 0x39, 0x03, 0xb8, 0xff, + 0xc0, 0xb6, 0x46, 0x39, 0x08, 0x40, 0x32, 0x39, 0x03, 0xb8, 0xff, 0xc0, + 0xb6, 0x32, 0x39, 0x07, 0x22, 0x19, 0x39, 0x02, 0xb8, 0xff, 0xde, 0xb6, + 0x19, 0x39, 0x07, 0x22, 0x32, 0x39, 0x02, 0xb8, 0xff, 0xde, 0xb6, 0x32, + 0x39, 0x07, 0x22, 0x23, 0x39, 0x02, 0xb8, 0xff, 0xde, 0x40, 0x0b, 0x23, + 0x39, 0x07, 0x0e, 0x14, 0x39, 0x07, 0x0e, 0x13, 0x39, 0x02, 0xb8, 0xff, + 0xf4, 0xb6, 0x13, 0x39, 0x07, 0x0e, 0x1d, 0x39, 0x02, 0xb8, 0xff, 0xf4, + 0xb6, 0x1d, 0x39, 0x07, 0x0e, 0x15, 0x39, 0x02, 0xb8, 0xff, 0xf8, 0xb1, + 0x15, 0x39, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x01, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x00, 0x2b, 0x2b, 0x2b, 0x2b, 0x59, 0x33, 0x11, + 0x33, 0x01, 0x11, 0x33, 0x11, 0x23, 0x01, 0x11, 0x9c, 0xc7, 0x03, 0x02, + 0xba, 0xc7, 0xfc, 0xfe, 0x05, 0xba, 0xfb, 0x81, 0x04, 0x7f, 0xfa, 0x46, + 0x04, 0x80, 0xfb, 0x80, 0x00, 0x02, 0x00, 0x63, 0xff, 0xe7, 0x05, 0xdd, + 0x05, 0xd4, 0x00, 0x0e, 0x00, 0x1b, 0x00, 0x7f, 0x40, 0x60, 0x1a, 0x0f, + 0x01, 0x14, 0x10, 0x14, 0x14, 0x1b, 0x17, 0x1b, 0x1b, 0x04, 0x04, 0x10, + 0x04, 0x14, 0x0b, 0x17, 0x0b, 0x1b, 0x04, 0xa9, 0x17, 0xb6, 0x0e, 0xc6, + 0x0e, 0x03, 0x17, 0x17, 0x18, 0x1b, 0x02, 0x20, 0x1d, 0x40, 0x11, 0x4f, + 0x13, 0x4f, 0x17, 0x40, 0x1a, 0x58, 0x05, 0x58, 0x09, 0x57, 0x10, 0x55, + 0x11, 0x5f, 0x13, 0x5a, 0x17, 0x5f, 0x18, 0x56, 0x1a, 0x57, 0x1b, 0x8b, + 0x17, 0x99, 0x02, 0x10, 0x19, 0x1e, 0x03, 0x03, 0x12, 0x1e, 0x0b, 0x09, + 0x15, 0x26, 0x20, 0x07, 0x01, 0x07, 0x1a, 0x80, 0x1d, 0x01, 0x1d, 0x0f, + 0x26, 0x20, 0x00, 0x01, 0x00, 0x19, 0x1c, 0x63, 0x5c, 0x18, 0x2b, 0x4e, + 0x10, 0xf4, 0x5d, 0x4d, 0xed, 0x4e, 0x10, 0x5d, 0xf6, 0x5d, 0x4d, 0xed, + 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x31, 0x30, 0x01, 0x5d, 0x71, 0x00, 0x5d, + 0x5d, 0x5d, 0x71, 0x13, 0x10, 0x00, 0x21, 0x32, 0x04, 0x12, 0x15, 0x14, + 0x02, 0x04, 0x23, 0x22, 0x24, 0x02, 0x37, 0x10, 0x00, 0x33, 0x32, 0x00, + 0x11, 0x34, 0x02, 0x26, 0x23, 0x22, 0x00, 0x63, 0x01, 0x88, 0x01, 0x36, + 0xcb, 0x01, 0x46, 0xab, 0xb4, 0xfe, 0xb6, 0xbf, 0xcf, 0xfe, 0xba, 0xa8, + 0xc8, 0x01, 0x1d, 0xd7, 0xdb, 0x01, 0x1b, 0x79, 0xe9, 0x91, 0xce, 0xfe, + 0xd7, 0x02, 0xca, 0x01, 0x6d, 0x01, 0x9d, 0xc2, 0xfe, 0xa5, 0xdc, 0xdf, + 0xfe, 0xa0, 0xb5, 0xc8, 0x01, 0x5a, 0xbe, 0xfe, 0xf7, 0xfe, 0xcf, 0x01, + 0x34, 0x01, 0x1b, 0xb3, 0x01, 0x0b, 0x93, 0xfe, 0xe5, 0x00, 0x00, 0x02, + 0x00, 0x9e, 0x00, 0x00, 0x04, 0xfd, 0x05, 0xba, 0x00, 0x0d, 0x00, 0x18, + 0x00, 0x57, 0x40, 0x35, 0x65, 0x11, 0x6b, 0x14, 0x02, 0x4b, 0x10, 0x4b, + 0x14, 0x5b, 0x10, 0x5b, 0x14, 0x04, 0x0b, 0x0c, 0x1e, 0x0f, 0x0e, 0x0e, + 0x00, 0x17, 0x18, 0x1e, 0x02, 0x01, 0x02, 0x00, 0x08, 0x12, 0x26, 0x08, + 0x1a, 0x20, 0x1a, 0x01, 0x20, 0x1a, 0x01, 0x1a, 0x18, 0x0d, 0x20, 0x01, + 0x20, 0x00, 0x01, 0x00, 0x5d, 0x19, 0x3b, 0x5c, 0x18, 0x2b, 0x10, 0xf6, + 0x5d, 0x3c, 0xfd, 0x3c, 0x4e, 0x10, 0x71, 0x5d, 0xf6, 0x4d, 0xed, 0x00, + 0x3f, 0x3f, 0x3c, 0xfd, 0x3c, 0x12, 0x39, 0x2f, 0x3c, 0xfd, 0x3c, 0x31, + 0x30, 0x01, 0x5d, 0x00, 0x5d, 0x33, 0x11, 0x21, 0x32, 0x17, 0x1e, 0x02, + 0x15, 0x14, 0x02, 0x29, 0x01, 0x19, 0x01, 0x21, 0x32, 0x36, 0x35, 0x34, + 0x26, 0x27, 0x26, 0x23, 0x21, 0x9e, 0x02, 0x29, 0x92, 0x4d, 0x6c, 0x92, + 0x59, 0xee, 0xfe, 0xc9, 0xfe, 0x88, 0x01, 0x7b, 0xbc, 0x9e, 0x5d, 0x4c, + 0x31, 0x84, 0xfe, 0x89, 0x05, 0xba, 0x0e, 0x12, 0x65, 0xb6, 0x6d, 0xbb, + 0xfe, 0xfd, 0xfd, 0xac, 0x03, 0x01, 0x8c, 0x7f, 0x5c, 0x83, 0x15, 0x0d, + 0x00, 0x02, 0x00, 0x58, 0xff, 0x8e, 0x05, 0xee, 0x05, 0xd4, 0x00, 0x15, + 0x00, 0x28, 0x01, 0x12, 0x40, 0x92, 0x5f, 0x26, 0x9f, 0x26, 0x02, 0x19, + 0x18, 0x37, 0x15, 0x02, 0x0b, 0x1c, 0x04, 0x1f, 0x04, 0x23, 0x1b, 0x1c, + 0x14, 0x1f, 0x14, 0x23, 0x06, 0x2a, 0x05, 0x2d, 0x17, 0x2b, 0x26, 0x3b, + 0x05, 0x3c, 0x17, 0x3a, 0x26, 0x4c, 0x05, 0x4c, 0x17, 0x49, 0x26, 0x5d, + 0x05, 0x55, 0x23, 0x58, 0x26, 0x6f, 0x05, 0x7b, 0x03, 0x7a, 0x05, 0x8c, + 0x03, 0x8c, 0x05, 0x95, 0x00, 0x9a, 0x03, 0xa4, 0x00, 0xab, 0x03, 0xd5, + 0x00, 0xd5, 0x16, 0xe5, 0x00, 0xe5, 0x17, 0xe5, 0x18, 0x1a, 0x1c, 0x05, + 0x2b, 0x00, 0x2a, 0x05, 0x3b, 0x05, 0x04, 0x5d, 0x05, 0x92, 0x18, 0x96, + 0x26, 0xd5, 0x26, 0x04, 0x25, 0x16, 0x2a, 0x26, 0x34, 0x16, 0x39, 0x26, + 0x49, 0x18, 0x49, 0x1c, 0x45, 0x1f, 0x45, 0x23, 0x4b, 0x26, 0x56, 0x08, + 0x58, 0x11, 0x55, 0x15, 0x5a, 0x1c, 0x5a, 0x1d, 0x56, 0x1f, 0x57, 0x20, + 0x57, 0x22, 0x69, 0x05, 0x66, 0x15, 0x6b, 0x26, 0x7b, 0x26, 0x8e, 0x1c, + 0x8e, 0x26, 0xdb, 0x18, 0xdc, 0x26, 0x19, 0x15, 0xb8, 0xff, 0xd4, 0xb2, + 0x1b, 0x39, 0x00, 0xb8, 0xff, 0xd4, 0x40, 0x3d, 0x1b, 0x39, 0x02, 0x03, + 0x16, 0x28, 0x03, 0x07, 0x28, 0x26, 0x18, 0x16, 0x05, 0x00, 0x06, 0x21, + 0x03, 0x13, 0x1a, 0x05, 0x02, 0x28, 0x26, 0x18, 0x16, 0x00, 0x05, 0x24, + 0x1e, 0x1e, 0x0f, 0x03, 0x02, 0x08, 0x24, 0x1e, 0x07, 0x09, 0x1a, 0x26, + 0x13, 0x4a, 0x02, 0x1a, 0x20, 0x2a, 0x80, 0x2a, 0x02, 0x2a, 0x21, 0x26, + 0x20, 0x0b, 0x01, 0x0b, 0x19, 0x29, 0x63, 0x5c, 0x18, 0x2b, 0x4e, 0x10, + 0xf4, 0x5d, 0x4d, 0xed, 0x4e, 0x10, 0x5d, 0xf6, 0x4d, 0xf4, 0xed, 0x00, + 0x3f, 0xed, 0x3f, 0x3f, 0xed, 0x11, 0x17, 0x39, 0x12, 0x39, 0x01, 0x11, + 0x12, 0x39, 0x12, 0x17, 0x39, 0x00, 0x11, 0x33, 0x10, 0xc9, 0x10, 0xc9, + 0x31, 0x30, 0x01, 0x2b, 0x2b, 0x5d, 0x00, 0x72, 0x71, 0x5d, 0x01, 0x5d, + 0x71, 0x72, 0x25, 0x16, 0x17, 0x07, 0x26, 0x27, 0x06, 0x23, 0x22, 0x24, + 0x02, 0x35, 0x34, 0x12, 0x24, 0x33, 0x32, 0x04, 0x12, 0x15, 0x14, 0x02, + 0x25, 0x16, 0x17, 0x36, 0x11, 0x34, 0x02, 0x26, 0x23, 0x22, 0x00, 0x11, + 0x10, 0x00, 0x33, 0x32, 0x37, 0x26, 0x27, 0x04, 0xf5, 0x87, 0x72, 0x39, + 0x9e, 0x9d, 0xa3, 0xc5, 0xc7, 0xfe, 0xbc, 0xaf, 0xb0, 0x01, 0x45, 0xc9, + 0xcb, 0x01, 0x46, 0xab, 0x6e, 0xfd, 0xe6, 0xa8, 0x6d, 0xab, 0x79, 0xe9, + 0x91, 0xd9, 0xfe, 0xe2, 0x01, 0x1b, 0xdc, 0x68, 0x5c, 0x5b, 0x65, 0x9d, + 0x5d, 0x2b, 0x87, 0x39, 0x7b, 0x5b, 0xc0, 0x01, 0x5c, 0xda, 0xd9, 0x01, + 0x64, 0xba, 0xc1, 0xfe, 0xa5, 0xda, 0xb5, 0xfe, 0xdf, 0x8d, 0x2f, 0x5d, + 0x9c, 0x01, 0x39, 0xb2, 0x01, 0x0a, 0x93, 0xfe, 0xd7, 0xfe, 0xd9, 0xfe, + 0xe2, 0xfe, 0xce, 0x27, 0x3b, 0x19, 0x00, 0x02, 0x00, 0xa1, 0x00, 0x00, + 0x05, 0xad, 0x05, 0xba, 0x00, 0x18, 0x00, 0x22, 0x01, 0x4c, 0x40, 0x0f, + 0x12, 0x0b, 0x0e, 0x01, 0x12, 0x36, 0x1c, 0x5a, 0x1f, 0x66, 0x08, 0x6d, + 0x1f, 0x04, 0x12, 0xb8, 0xff, 0xe2, 0xb3, 0x12, 0x1a, 0x34, 0x12, 0xb8, + 0xff, 0xf0, 0xb3, 0x22, 0x27, 0x34, 0x11, 0xb8, 0xff, 0xe2, 0xb3, 0x1d, + 0x27, 0x34, 0x10, 0xb8, 0xff, 0xe2, 0xb3, 0x1d, 0x27, 0x34, 0x0f, 0xb8, + 0xff, 0xe2, 0xb3, 0x1d, 0x27, 0x34, 0x12, 0xb8, 0xff, 0xd8, 0xb3, 0x1d, + 0x26, 0x34, 0x11, 0xb8, 0xff, 0xe2, 0xb3, 0x12, 0x1a, 0x34, 0x10, 0xb8, + 0xff, 0xe2, 0xb3, 0x12, 0x1a, 0x34, 0x0f, 0xb8, 0xff, 0xe2, 0x40, 0x73, + 0x12, 0x1a, 0x34, 0x25, 0x0e, 0x4a, 0x1c, 0x4a, 0x20, 0x53, 0x0b, 0x5c, + 0x1c, 0x6d, 0x1c, 0x72, 0x09, 0x78, 0x0e, 0x79, 0x0f, 0x85, 0x0a, 0x88, + 0x0f, 0x97, 0x0d, 0xa9, 0x0f, 0xb8, 0x0f, 0xe8, 0x0e, 0xe7, 0x0f, 0x10, + 0x0e, 0x0c, 0x0c, 0x20, 0x11, 0x0f, 0x14, 0x11, 0x11, 0x0f, 0x11, 0x0f, + 0x0c, 0x09, 0x12, 0x1b, 0x02, 0x21, 0x1a, 0x16, 0x0a, 0x06, 0x12, 0x11, + 0x10, 0x0d, 0x0c, 0x05, 0x18, 0x09, 0x09, 0x16, 0x17, 0x1a, 0x19, 0x1e, + 0x17, 0x17, 0x00, 0x21, 0x22, 0x1e, 0x02, 0x01, 0x02, 0x00, 0x18, 0x18, + 0x0f, 0x0f, 0x0e, 0x08, 0x1e, 0x26, 0x0e, 0x9c, 0x06, 0x5d, 0x20, 0x24, + 0x70, 0x24, 0x80, 0x24, 0x03, 0x24, 0x22, 0x18, 0x20, 0x01, 0x20, 0x00, + 0x01, 0x00, 0x5d, 0x23, 0x3b, 0xa8, 0x18, 0x2b, 0x4e, 0x10, 0xf4, 0x5d, + 0x3c, 0x4d, 0xfd, 0x3c, 0x10, 0x5d, 0xf6, 0x19, 0xe4, 0x18, 0xed, 0x00, + 0x3f, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x3f, 0x3c, 0xfd, 0x3c, 0x12, 0x39, + 0x2f, 0xfd, 0x3c, 0x10, 0x3c, 0x39, 0x2f, 0x12, 0x17, 0x39, 0x01, 0x11, + 0x17, 0x39, 0x87, 0x0e, 0x2e, 0x2b, 0x05, 0x7d, 0x10, 0xc4, 0x31, 0x30, + 0x01, 0x5d, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x00, + 0x5d, 0x43, 0x5c, 0x58, 0x40, 0x0a, 0x08, 0x40, 0x0f, 0x39, 0x0f, 0x10, + 0x3a, 0x11, 0x12, 0x3a, 0x2b, 0x2b, 0x2b, 0x59, 0x01, 0x71, 0x43, 0x5c, + 0x58, 0xb9, 0x00, 0x0e, 0xff, 0xde, 0x40, 0x1a, 0x19, 0x39, 0x11, 0x22, + 0x19, 0x39, 0x12, 0x22, 0x19, 0x39, 0x0e, 0x40, 0x1c, 0x39, 0x10, 0x22, + 0x14, 0x39, 0x10, 0x22, 0x1f, 0x39, 0x10, 0x22, 0x15, 0x39, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x59, 0x33, 0x11, 0x21, 0x32, 0x1e, 0x01, + 0x15, 0x14, 0x06, 0x07, 0x16, 0x17, 0x16, 0x17, 0x13, 0x23, 0x03, 0x2e, + 0x02, 0x27, 0x26, 0x2b, 0x01, 0x19, 0x01, 0x21, 0x32, 0x3e, 0x01, 0x35, + 0x34, 0x26, 0x23, 0x21, 0xa1, 0x02, 0x8a, 0xc4, 0xcc, 0x7a, 0xca, 0xd3, + 0x4d, 0x28, 0x55, 0x4c, 0xff, 0xf4, 0xc2, 0x55, 0x6e, 0x57, 0x2d, 0x21, + 0x4b, 0xe1, 0x01, 0xa1, 0x85, 0x96, 0x4e, 0x97, 0xa3, 0xfe, 0x30, 0x05, + 0xba, 0x4f, 0xc8, 0x79, 0x9c, 0xd6, 0x1d, 0x25, 0x24, 0x4e, 0x75, 0xfe, + 0x71, 0x01, 0x31, 0x84, 0x8c, 0x38, 0x0b, 0x07, 0xfd, 0x75, 0x03, 0x33, + 0x37, 0x79, 0x47, 0x68, 0x86, 0x00, 0x00, 0x01, 0x00, 0x5c, 0xff, 0xe7, + 0x04, 0xeb, 0x05, 0xd3, 0x00, 0x30, 0x00, 0xfe, 0x40, 0x9c, 0x63, 0x03, + 0x63, 0x04, 0x73, 0x03, 0x74, 0x04, 0x04, 0x25, 0x27, 0x35, 0x03, 0x39, + 0x1c, 0x43, 0x03, 0x49, 0x07, 0x4c, 0x1d, 0x45, 0x1f, 0x44, 0x24, 0x46, + 0x27, 0x53, 0x03, 0x59, 0x07, 0x5c, 0x1d, 0x57, 0x28, 0x89, 0x13, 0x0e, + 0x28, 0x0d, 0x26, 0x24, 0x02, 0x24, 0x03, 0x27, 0x25, 0x36, 0x0f, 0x34, + 0x23, 0x44, 0x25, 0x45, 0x2f, 0x5a, 0x20, 0x56, 0x23, 0x55, 0x25, 0x6c, + 0x0b, 0x6a, 0x0d, 0x6b, 0x0e, 0x66, 0x14, 0x65, 0x18, 0x79, 0x0b, 0x7a, + 0x0d, 0x7a, 0x0f, 0x7d, 0x10, 0x75, 0x24, 0x73, 0x25, 0x86, 0x03, 0x8a, + 0x0b, 0x89, 0x0d, 0x8a, 0x0f, 0x8d, 0x10, 0x85, 0x24, 0x83, 0x25, 0x92, + 0x0d, 0x96, 0x0f, 0x96, 0x15, 0x1e, 0x25, 0x24, 0x0e, 0x0d, 0x0b, 0x05, + 0x21, 0x1c, 0x1d, 0x1e, 0x1b, 0x08, 0x07, 0x06, 0x04, 0x03, 0x02, 0x06, + 0x01, 0x25, 0x24, 0x22, 0x0e, 0x0d, 0x0b, 0x06, 0x05, 0x1e, 0x1b, 0x2d, + 0x8f, 0x1a, 0x01, 0x1a, 0xed, 0x16, 0x00, 0x2d, 0x10, 0x01, 0x20, 0x01, + 0x50, 0x01, 0x60, 0x01, 0x70, 0x01, 0x90, 0x01, 0x06, 0x01, 0xb8, 0x01, + 0xb0, 0x40, 0x25, 0x2d, 0x1e, 0x1e, 0x16, 0x03, 0x05, 0x1e, 0x2d, 0x09, + 0x1b, 0x26, 0x1a, 0x4a, 0x09, 0x26, 0x00, 0x29, 0x01, 0x29, 0x1a, 0x32, + 0x21, 0x26, 0x12, 0x01, 0x26, 0x12, 0x54, 0x20, 0x00, 0x01, 0x00, 0x19, + 0x31, 0x63, 0x5b, 0x18, 0x2b, 0x4e, 0x10, 0xf4, 0x5d, 0x4d, 0xe4, 0xed, + 0x10, 0xed, 0x4e, 0x10, 0xf6, 0x5d, 0x4d, 0xed, 0xf4, 0xed, 0x00, 0x3f, + 0xed, 0x3f, 0xed, 0x10, 0xfd, 0x5d, 0xe4, 0x10, 0xfd, 0x5d, 0xf4, 0x11, + 0x12, 0x17, 0x39, 0x11, 0x17, 0x39, 0x11, 0x12, 0x39, 0x39, 0x01, 0x12, + 0x17, 0x39, 0x31, 0x30, 0x00, 0x5d, 0x71, 0x01, 0x5d, 0x71, 0x13, 0x37, + 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x27, 0x26, 0x24, + 0x27, 0x2e, 0x01, 0x35, 0x34, 0x3e, 0x01, 0x33, 0x32, 0x1e, 0x01, 0x17, + 0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, 0x14, 0x17, 0x16, 0x04, 0x17, + 0x1e, 0x01, 0x15, 0x14, 0x0e, 0x01, 0x23, 0x22, 0x24, 0x26, 0x5c, 0xb7, + 0x0d, 0x5f, 0xc8, 0x7d, 0x6f, 0xaa, 0x53, 0x50, 0x5c, 0x3b, 0xfe, 0x6c, + 0x51, 0x69, 0x67, 0x7e, 0xf2, 0x94, 0xa3, 0xf9, 0x86, 0x05, 0xba, 0x0f, + 0xad, 0xa9, 0xb0, 0xa1, 0x39, 0x38, 0x01, 0xd9, 0x58, 0x80, 0x7a, 0x86, + 0xfb, 0x9d, 0xc7, 0xfe, 0xf3, 0x99, 0x01, 0xd7, 0x10, 0x6e, 0x8d, 0x57, + 0x42, 0x73, 0x44, 0x45, 0x67, 0x23, 0x17, 0x61, 0x2b, 0x37, 0xa3, 0x65, + 0x6f, 0xc1, 0x64, 0x69, 0xcc, 0x81, 0x0e, 0x8b, 0x8e, 0x81, 0x5b, 0x4f, + 0x33, 0x33, 0x6b, 0x28, 0x3b, 0xb5, 0x76, 0x75, 0xcf, 0x73, 0x74, 0xe9, + 0x00, 0x01, 0x00, 0x30, 0x00, 0x00, 0x04, 0xba, 0x05, 0xba, 0x00, 0x07, + 0x00, 0x4f, 0x40, 0x0d, 0x05, 0x02, 0x1e, 0x04, 0x03, 0x02, 0x00, 0x08, + 0x07, 0x06, 0x05, 0x04, 0x09, 0xb8, 0x02, 0x73, 0xb3, 0x20, 0x04, 0x01, + 0x04, 0xb8, 0x01, 0x01, 0xb7, 0x06, 0x20, 0x01, 0x02, 0x2f, 0x03, 0x01, + 0x03, 0xb8, 0x01, 0x01, 0xb5, 0x01, 0x01, 0x20, 0x00, 0x01, 0x00, 0xb8, + 0x02, 0x73, 0xb3, 0x08, 0xb6, 0x99, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0x3c, + 0x10, 0xf4, 0x5d, 0x3c, 0x10, 0xfd, 0xe4, 0x5d, 0xe6, 0x10, 0x3c, 0x10, + 0x3c, 0x00, 0x3f, 0x3f, 0x3c, 0xfd, 0x3c, 0x31, 0x30, 0x21, 0x11, 0x21, + 0x35, 0x21, 0x15, 0x21, 0x11, 0x02, 0x13, 0xfe, 0x1d, 0x04, 0x8a, 0xfe, + 0x1b, 0x05, 0x0d, 0xad, 0xad, 0xfa, 0xf3, 0x00, 0x00, 0x01, 0x00, 0xa1, + 0xff, 0xe7, 0x05, 0x22, 0x05, 0xba, 0x00, 0x14, 0x00, 0x71, 0x40, 0x0a, + 0x26, 0x0f, 0x58, 0x04, 0x58, 0x08, 0xc9, 0x08, 0x04, 0x16, 0xb8, 0xff, + 0xc0, 0x40, 0x16, 0x13, 0x15, 0x34, 0x34, 0x04, 0x3b, 0x08, 0x46, 0x04, + 0x4a, 0x08, 0x76, 0x0f, 0xa6, 0x05, 0xe8, 0x0f, 0x07, 0x0c, 0x00, 0x02, + 0x11, 0xb8, 0x02, 0xbb, 0x40, 0x1c, 0x06, 0x09, 0x14, 0x26, 0x02, 0x5d, + 0x20, 0x16, 0x01, 0x20, 0x16, 0x50, 0x16, 0x02, 0x60, 0x16, 0x70, 0x16, + 0x80, 0x16, 0x03, 0x16, 0x0d, 0x26, 0x20, 0x0a, 0x01, 0x0a, 0xb8, 0xff, + 0xc0, 0x40, 0x09, 0x13, 0x15, 0x34, 0x0a, 0x5d, 0x15, 0x3b, 0x59, 0x18, + 0x2b, 0x4e, 0x10, 0xf4, 0x2b, 0x5d, 0xed, 0x4d, 0x10, 0x5d, 0x5d, 0x71, + 0xf6, 0x4d, 0xed, 0x00, 0x3f, 0xed, 0x3f, 0x3c, 0x31, 0x30, 0x01, 0x5d, + 0x2b, 0x00, 0x5d, 0x01, 0x33, 0x11, 0x14, 0x02, 0x04, 0x23, 0x22, 0x24, + 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x11, + 0x04, 0x60, 0xc2, 0x64, 0xfe, 0xfb, 0xd4, 0xce, 0xfe, 0xfa, 0x70, 0xc2, + 0x47, 0xad, 0x7d, 0xd6, 0xb6, 0x05, 0xba, 0xfc, 0xb1, 0xdd, 0xfe, 0xfc, + 0xa3, 0x8e, 0x01, 0x0d, 0xe9, 0x03, 0x4f, 0xfc, 0xb2, 0xbf, 0xb5, 0x62, + 0xc2, 0x01, 0x14, 0x00, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x05, 0x46, + 0x05, 0xba, 0x00, 0x0a, 0x00, 0xf5, 0x40, 0x48, 0x2f, 0x05, 0x01, 0x2a, + 0x00, 0x28, 0x03, 0x25, 0x0a, 0x2f, 0x0c, 0x30, 0x0c, 0x60, 0x0c, 0x89, + 0x08, 0x89, 0x09, 0x90, 0x0c, 0xc0, 0x0c, 0xf0, 0x0c, 0x0b, 0x20, 0x0c, + 0x50, 0x0c, 0x02, 0x04, 0x02, 0x0b, 0x08, 0x02, 0x0a, 0x09, 0x09, 0x20, + 0x08, 0x05, 0x14, 0x08, 0x08, 0x05, 0x00, 0x01, 0x01, 0x20, 0x02, 0x05, + 0x14, 0x02, 0x02, 0x05, 0x09, 0x01, 0x02, 0x05, 0xe9, 0x20, 0x0a, 0x00, + 0x08, 0x09, 0x65, 0x08, 0x01, 0x65, 0x02, 0x08, 0xb8, 0xff, 0xc0, 0x40, + 0x0b, 0x28, 0x39, 0x50, 0x08, 0x01, 0x80, 0x08, 0x90, 0x08, 0x02, 0x08, + 0xb8, 0x01, 0x01, 0x40, 0x0d, 0x02, 0x40, 0x28, 0x39, 0x5f, 0x02, 0x01, + 0x8f, 0x02, 0x9f, 0x02, 0x02, 0x02, 0xb8, 0x01, 0x01, 0x40, 0x11, 0x20, + 0x05, 0x50, 0x05, 0x02, 0x30, 0x05, 0x60, 0x05, 0x90, 0x05, 0xc0, 0x05, + 0xf0, 0x05, 0x05, 0x05, 0xb8, 0x02, 0x88, 0xb3, 0x0b, 0x60, 0xa8, 0x18, + 0x2b, 0x19, 0x10, 0xf4, 0x5d, 0x71, 0xe4, 0x5d, 0x71, 0x2b, 0xe4, 0x5d, + 0x71, 0x2b, 0x18, 0x10, 0xed, 0x10, 0xed, 0x00, 0x3f, 0x3c, 0x1a, 0x19, + 0xed, 0x18, 0x3f, 0x3c, 0x87, 0x05, 0x2e, 0x2b, 0x7d, 0x10, 0xc4, 0x87, + 0x2e, 0x18, 0x2b, 0x7d, 0x10, 0xc4, 0x01, 0x4b, 0xb0, 0x0b, 0x53, 0x4b, + 0xb0, 0x14, 0x51, 0x5a, 0x58, 0xb2, 0x00, 0x0f, 0x0a, 0xb8, 0xff, 0xf1, + 0xb2, 0x09, 0x12, 0x01, 0xb8, 0xff, 0xf1, 0xb2, 0x08, 0x14, 0x02, 0xb8, + 0xff, 0xee, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x59, 0x01, 0x4b, 0xb0, + 0x28, 0x53, 0x4b, 0xb0, 0x36, 0x51, 0x5a, 0x58, 0xb9, 0x00, 0x00, 0xff, + 0xc0, 0x38, 0x59, 0x31, 0x30, 0x01, 0x5d, 0x71, 0x5d, 0x00, 0x5d, 0x21, + 0x01, 0x33, 0x01, 0x16, 0x17, 0x36, 0x37, 0x01, 0x33, 0x01, 0x02, 0x41, + 0xfd, 0xc8, 0xd2, 0x01, 0x7d, 0x2e, 0x1f, 0x22, 0x2d, 0x01, 0x8c, 0xc6, + 0xfd, 0xc2, 0x05, 0xba, 0xfb, 0xd7, 0x80, 0x70, 0x78, 0x78, 0x04, 0x29, + 0xfa, 0x46, 0x00, 0x01, 0x00, 0x19, 0x00, 0x00, 0x07, 0x76, 0x05, 0xba, + 0x00, 0x18, 0x01, 0x8c, 0x40, 0x44, 0x29, 0x00, 0x26, 0x11, 0x29, 0x12, + 0x26, 0x18, 0x39, 0x00, 0x36, 0x11, 0x39, 0x12, 0x36, 0x18, 0x49, 0x00, + 0x47, 0x11, 0x49, 0x12, 0x47, 0x18, 0x58, 0x00, 0x57, 0x11, 0x58, 0x12, + 0x57, 0x18, 0x10, 0x98, 0x08, 0x98, 0x0f, 0x02, 0x03, 0x04, 0x05, 0x05, + 0x02, 0x06, 0x07, 0x08, 0x08, 0x05, 0x0a, 0x0b, 0x0c, 0x0c, 0x09, 0x0d, + 0x0e, 0x0f, 0x0f, 0x0c, 0x14, 0x13, 0x12, 0x12, 0x15, 0x16, 0x17, 0x18, + 0x18, 0x15, 0xb8, 0xff, 0x3c, 0xb3, 0x05, 0x00, 0x18, 0x20, 0xb8, 0xff, + 0x3c, 0xb3, 0x0c, 0x12, 0x11, 0x20, 0xb8, 0xff, 0x3c, 0x40, 0x5a, 0x15, + 0x08, 0x09, 0x20, 0x00, 0x05, 0x02, 0x02, 0x20, 0x01, 0x00, 0x14, 0x01, + 0x01, 0x00, 0x18, 0x05, 0x08, 0x08, 0x1e, 0x15, 0x18, 0x14, 0x15, 0x15, + 0x18, 0x12, 0x0c, 0x09, 0x09, 0x1e, 0x15, 0x12, 0x14, 0x15, 0x15, 0x12, + 0x11, 0x0c, 0x0f, 0x0f, 0x20, 0x10, 0x11, 0x14, 0x10, 0x10, 0x11, 0x12, + 0x09, 0x0c, 0x08, 0x18, 0x15, 0x05, 0x0f, 0x11, 0x10, 0x0c, 0x00, 0x02, + 0x05, 0x15, 0x0c, 0x05, 0x03, 0x18, 0x10, 0x0f, 0x0f, 0x09, 0x09, 0x08, + 0x08, 0x02, 0x02, 0x01, 0x02, 0x18, 0x12, 0x12, 0x11, 0x11, 0x00, 0x08, + 0x1a, 0x17, 0x17, 0x1a, 0x10, 0x41, 0x09, 0x01, 0x51, 0x00, 0x20, 0x00, + 0x0c, 0x01, 0x51, 0x00, 0x15, 0x01, 0x51, 0x00, 0x40, 0x00, 0x05, 0x01, + 0x51, 0xb6, 0x20, 0x20, 0x01, 0x01, 0x01, 0x19, 0x19, 0xb8, 0x01, 0x8b, + 0xb1, 0xa8, 0x18, 0x2b, 0x4e, 0x10, 0xf4, 0x5d, 0x1a, 0x19, 0x4d, 0xfd, + 0x1a, 0x18, 0xfd, 0xfd, 0x1a, 0x19, 0xfd, 0x18, 0x4e, 0x45, 0x65, 0x44, + 0xe6, 0x00, 0x3f, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x3f, 0x3c, 0x10, 0x3c, + 0x10, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x12, 0x17, 0x39, 0x01, 0x12, 0x39, + 0x39, 0x11, 0x12, 0x39, 0x39, 0x11, 0x12, 0x39, 0x39, 0x11, 0x39, 0x39, + 0x87, 0x4d, 0x2e, 0x2b, 0x87, 0x7d, 0xc4, 0x87, 0x2e, 0x18, 0x2b, 0x87, + 0x7d, 0xc4, 0x87, 0x2e, 0x18, 0x2b, 0x87, 0x7d, 0xc4, 0x87, 0x2e, 0x18, + 0x2b, 0x87, 0x7d, 0xc4, 0x2b, 0x2b, 0x2b, 0x87, 0x0e, 0x10, 0xc4, 0xc4, + 0x87, 0x0e, 0x10, 0x3c, 0xc4, 0x87, 0x0e, 0x10, 0xc4, 0xc4, 0x87, 0x0e, + 0x10, 0xc4, 0xc4, 0x87, 0x0e, 0x10, 0xc4, 0xc4, 0x87, 0x0e, 0x10, 0xc4, + 0xc4, 0x01, 0x4b, 0xb0, 0x0f, 0x53, 0x4b, 0xb0, 0x11, 0x51, 0x5a, 0x58, + 0xb2, 0x12, 0x0a, 0x18, 0xb8, 0xff, 0xf6, 0x38, 0x38, 0x59, 0x01, 0x4b, + 0xb0, 0x25, 0x53, 0x4b, 0xb0, 0x2a, 0x51, 0x5a, 0x58, 0xb9, 0x00, 0x00, + 0xff, 0xc0, 0x38, 0x59, 0x00, 0x4b, 0xb0, 0x0b, 0x53, 0x4b, 0xb0, 0x0e, + 0x51, 0x5a, 0x58, 0xb3, 0x0c, 0x40, 0x05, 0x40, 0x38, 0x38, 0x59, 0x31, + 0x30, 0x01, 0x72, 0x5d, 0x21, 0x01, 0x33, 0x13, 0x16, 0x17, 0x36, 0x37, + 0x01, 0x33, 0x13, 0x12, 0x17, 0x36, 0x37, 0x13, 0x33, 0x01, 0x23, 0x01, + 0x26, 0x27, 0x06, 0x07, 0x01, 0x01, 0x9e, 0xfe, 0x7b, 0xc7, 0xdf, 0x24, + 0x1a, 0x38, 0x0a, 0x01, 0x17, 0xea, 0xd2, 0x4f, 0x23, 0x1c, 0x2d, 0xe6, + 0xc3, 0xfe, 0x6e, 0xbb, 0xfe, 0xcb, 0x27, 0x07, 0x17, 0x14, 0xfe, 0xc9, + 0x05, 0xba, 0xfc, 0x3f, 0x97, 0x95, 0xeb, 0x24, 0x03, 0xde, 0xfd, 0x1a, + 0xfe, 0xec, 0xf3, 0x8b, 0xb4, 0x03, 0xae, 0xfa, 0x46, 0x04, 0x5d, 0x8c, + 0x20, 0x65, 0x47, 0xfb, 0xa3, 0x00, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, + 0x05, 0x49, 0x05, 0xba, 0x00, 0x13, 0x02, 0x57, 0x40, 0x29, 0x26, 0x12, + 0x01, 0x19, 0x01, 0x16, 0x0b, 0x02, 0x29, 0x12, 0x29, 0x13, 0x38, 0x01, + 0x37, 0x03, 0x38, 0x08, 0x38, 0x09, 0x38, 0x0d, 0x3a, 0x0e, 0x35, 0x12, + 0x37, 0x13, 0x0a, 0x12, 0x13, 0x20, 0x12, 0x21, 0x34, 0x12, 0x20, 0x12, + 0x21, 0x34, 0x0e, 0xb8, 0xff, 0xe0, 0xb3, 0x12, 0x21, 0x34, 0x0d, 0xb8, + 0xff, 0xe0, 0xb3, 0x12, 0x21, 0x34, 0x09, 0xb8, 0xff, 0xe0, 0xb3, 0x12, + 0x21, 0x34, 0x08, 0xb8, 0xff, 0xe0, 0x40, 0xc8, 0x12, 0x21, 0x34, 0x04, + 0x20, 0x12, 0x21, 0x34, 0x03, 0x20, 0x12, 0x21, 0x34, 0x77, 0x01, 0x77, + 0x0b, 0x02, 0x26, 0x04, 0x29, 0x07, 0x28, 0x0b, 0x2a, 0x0e, 0x26, 0x12, + 0x36, 0x04, 0x3a, 0x08, 0x3a, 0x0b, 0x3a, 0x0e, 0x35, 0x12, 0x48, 0x08, + 0x54, 0x04, 0x5d, 0x08, 0x5c, 0x0b, 0x5a, 0x0e, 0x54, 0x12, 0x67, 0x01, + 0x65, 0x04, 0x6a, 0x08, 0x6b, 0x0b, 0x69, 0x0e, 0x65, 0x12, 0x75, 0x04, + 0x7a, 0x08, 0x79, 0x0b, 0x7a, 0x0d, 0x77, 0x12, 0x77, 0x13, 0x86, 0x04, + 0x8a, 0x07, 0x8a, 0x0a, 0x95, 0x04, 0xb8, 0x08, 0xb7, 0x12, 0xc6, 0x04, + 0xc9, 0x08, 0xd7, 0x04, 0xd8, 0x08, 0xd9, 0x0e, 0xd6, 0x12, 0xe7, 0x04, + 0xe8, 0x08, 0xe8, 0x0e, 0xe6, 0x12, 0x2c, 0x06, 0x07, 0x08, 0x09, 0x09, + 0x01, 0x06, 0x05, 0x04, 0x03, 0x03, 0x0b, 0x10, 0x10, 0x13, 0x0f, 0x0e, + 0x0d, 0x0d, 0x01, 0x10, 0x10, 0x0d, 0x11, 0x12, 0x13, 0x13, 0x0b, 0x01, + 0x00, 0x09, 0x02, 0x0d, 0x0b, 0x03, 0x0c, 0x13, 0x0a, 0x0b, 0x01, 0x06, + 0x10, 0x02, 0x13, 0x09, 0x0a, 0x13, 0x13, 0x20, 0x00, 0x09, 0x14, 0x00, + 0x00, 0x09, 0x03, 0x02, 0x0d, 0x0d, 0x20, 0x0c, 0x03, 0x14, 0x0c, 0x0c, + 0x03, 0x0a, 0x09, 0x09, 0x03, 0x03, 0x02, 0x02, 0x13, 0x0d, 0x0d, 0x0c, + 0x0c, 0x00, 0x08, 0x2f, 0x15, 0x01, 0x15, 0x17, 0x17, 0x1a, 0x20, 0x0c, + 0x40, 0x0c, 0x02, 0x0c, 0xb8, 0x01, 0x5f, 0xb7, 0x20, 0x0a, 0x90, 0x0a, + 0xc0, 0x0a, 0x03, 0x0a, 0xb8, 0x01, 0xb8, 0xb5, 0x5f, 0x02, 0x9f, 0x02, + 0x02, 0x02, 0xb8, 0x01, 0xb8, 0x40, 0x0a, 0x06, 0xb4, 0x40, 0x10, 0x50, + 0x10, 0xcf, 0x10, 0x03, 0x10, 0xb8, 0x01, 0x5f, 0x40, 0x0a, 0x20, 0x00, + 0x19, 0x14, 0x15, 0xc2, 0x21, 0x60, 0xa8, 0x18, 0x2b, 0x2b, 0x4e, 0xf4, + 0x1a, 0x19, 0x4d, 0xfd, 0x5d, 0x18, 0xe5, 0x19, 0xed, 0x5d, 0xed, 0x5d, + 0xfd, 0x5d, 0x18, 0x4e, 0x45, 0x65, 0x44, 0xe6, 0x5d, 0x00, 0x3f, 0x3c, + 0x10, 0x3c, 0x10, 0x3c, 0x3f, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x87, 0x05, + 0x4d, 0x2e, 0x2b, 0x87, 0x7d, 0xc4, 0x87, 0x2e, 0x18, 0x2b, 0x87, 0x7d, + 0xc4, 0x00, 0x11, 0x12, 0x39, 0x39, 0x39, 0x39, 0x0f, 0x0f, 0x87, 0x0e, + 0x10, 0x3c, 0x3c, 0x08, 0xc4, 0x87, 0x0e, 0x10, 0x3c, 0x3c, 0x08, 0xc4, + 0x87, 0x0e, 0x10, 0x3c, 0x3c, 0xc4, 0x87, 0x0e, 0x10, 0xc4, 0xc4, 0xc4, + 0x31, 0x30, 0x01, 0x5d, 0x00, 0x5d, 0x01, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x43, 0x5c, 0x58, 0xb9, 0x00, 0x0b, 0xff, 0xde, 0x40, + 0x0b, 0x19, 0x39, 0x01, 0x22, 0x19, 0x39, 0x0e, 0x18, 0x1b, 0x39, 0x12, + 0xb8, 0xff, 0xde, 0xb2, 0x1b, 0x39, 0x13, 0xb8, 0xff, 0xde, 0xb2, 0x1b, + 0x39, 0x04, 0xb8, 0xff, 0xe8, 0xb6, 0x1b, 0x39, 0x08, 0x22, 0x1b, 0x39, + 0x09, 0xb8, 0xff, 0xc0, 0xb2, 0x1c, 0x39, 0x0d, 0xb8, 0xff, 0xc0, 0x40, + 0x1f, 0x1c, 0x39, 0x13, 0x40, 0x1c, 0x39, 0x03, 0x40, 0x1c, 0x39, 0x0d, + 0x0e, 0x16, 0x17, 0x3c, 0x13, 0x12, 0x16, 0x17, 0x3d, 0x08, 0x09, 0x16, + 0x17, 0x3c, 0x03, 0x04, 0x16, 0x17, 0x3d, 0x0b, 0xb8, 0xff, 0xde, 0x40, + 0x2e, 0x12, 0x39, 0x01, 0x22, 0x12, 0x39, 0x0b, 0x0c, 0x1d, 0x21, 0x3d, + 0x01, 0x00, 0x1d, 0x21, 0x3c, 0x0b, 0x0a, 0x1d, 0x21, 0x3d, 0x01, 0x02, + 0x1d, 0x21, 0x3c, 0x0b, 0x0c, 0x13, 0x17, 0x3d, 0x01, 0x00, 0x13, 0x17, + 0x3c, 0x0b, 0x0a, 0x13, 0x17, 0x3d, 0x01, 0x02, 0x13, 0x17, 0x3c, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x01, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x59, 0x01, 0x71, 0x01, 0x5d, 0x71, 0x33, 0x09, 0x01, 0x33, 0x01, + 0x16, 0x17, 0x36, 0x37, 0x01, 0x33, 0x09, 0x01, 0x23, 0x01, 0x26, 0x27, + 0x06, 0x07, 0x01, 0x09, 0x02, 0x37, 0xfe, 0x0c, 0xe7, 0x01, 0x0a, 0x53, + 0x23, 0x31, 0x43, 0x01, 0x27, 0xd3, 0xfd, 0xfd, 0x02, 0x2b, 0xf0, 0xfe, + 0x8f, 0x1f, 0x21, 0x31, 0x15, 0xfe, 0x90, 0x02, 0xfc, 0x02, 0xbe, 0xfe, + 0x88, 0x75, 0x3f, 0x50, 0x57, 0x01, 0x85, 0xfd, 0x4d, 0xfc, 0xf9, 0x02, + 0x0b, 0x2d, 0x35, 0x50, 0x1e, 0xfe, 0x01, 0x00, 0x00, 0x01, 0x00, 0x06, + 0x00, 0x00, 0x05, 0x46, 0x05, 0xba, 0x00, 0x0c, 0x01, 0x34, 0xb6, 0x08, + 0x09, 0x3a, 0x03, 0x04, 0x3b, 0x09, 0xb8, 0xff, 0xe7, 0xb3, 0x12, 0x17, + 0x34, 0x08, 0xb8, 0xff, 0xe7, 0x40, 0x0e, 0x12, 0x17, 0x34, 0x04, 0x19, + 0x12, 0x17, 0x34, 0x03, 0x19, 0x12, 0x17, 0x34, 0x09, 0xb8, 0xff, 0xd8, + 0xb3, 0x18, 0x21, 0x34, 0x08, 0xb8, 0xff, 0xd8, 0x40, 0x46, 0x18, 0x21, + 0x34, 0x04, 0x28, 0x18, 0x21, 0x34, 0x12, 0x26, 0x04, 0x29, 0x08, 0x2a, + 0x0a, 0x2f, 0x0e, 0x04, 0x68, 0x01, 0x68, 0x06, 0x68, 0x0b, 0xde, 0x06, + 0x04, 0x05, 0x04, 0x03, 0x03, 0x06, 0x08, 0x07, 0x09, 0x06, 0x06, 0x09, + 0x06, 0x03, 0x09, 0x20, 0x0a, 0x0b, 0x14, 0x0a, 0x0a, 0x0b, 0x06, 0x03, + 0x06, 0x09, 0x03, 0x20, 0x02, 0x01, 0x14, 0x02, 0x02, 0x01, 0x06, 0x0c, + 0x0b, 0x06, 0x01, 0x03, 0x02, 0x00, 0x01, 0x0b, 0xb8, 0x02, 0x19, 0x40, + 0x09, 0x0a, 0x0a, 0x09, 0x03, 0x02, 0x02, 0x00, 0x08, 0x0e, 0xb8, 0x02, + 0x18, 0x40, 0x09, 0x0c, 0x09, 0x52, 0x40, 0x0a, 0x80, 0x0a, 0x02, 0x0a, + 0xb8, 0x01, 0xb5, 0x40, 0x0d, 0x0b, 0x0b, 0x0c, 0x20, 0x00, 0x03, 0x52, + 0x4f, 0x02, 0x8f, 0x02, 0x02, 0x02, 0xb8, 0x01, 0xb5, 0xb2, 0x01, 0x01, + 0x00, 0xb8, 0x02, 0x18, 0xb6, 0x0d, 0x0e, 0xc2, 0x21, 0x60, 0xa8, 0x18, + 0x2b, 0x2b, 0xf6, 0x3c, 0x10, 0xf4, 0x5d, 0xed, 0x10, 0xfd, 0x3c, 0x10, + 0xf4, 0x5d, 0xed, 0x10, 0xe6, 0x00, 0x3f, 0x3f, 0x3c, 0x3c, 0x3c, 0x10, + 0xf4, 0x3c, 0x11, 0x12, 0x17, 0x39, 0x01, 0x12, 0x39, 0x87, 0x2e, 0x2b, + 0x08, 0x7d, 0x10, 0xc4, 0x05, 0x87, 0x2e, 0x18, 0x2b, 0x08, 0x7d, 0x10, + 0xc4, 0x87, 0x0e, 0xc4, 0xc4, 0x87, 0x10, 0x0e, 0xc4, 0xc4, 0x4b, 0xb0, + 0x17, 0x53, 0x4b, 0xb0, 0x1c, 0x51, 0x5a, 0x58, 0xb4, 0x08, 0x0c, 0x09, + 0x0c, 0x04, 0xba, 0xff, 0xf4, 0x00, 0x03, 0xff, 0xf4, 0x01, 0x38, 0x38, + 0x38, 0x38, 0x59, 0x31, 0x30, 0x00, 0x5d, 0x01, 0x5d, 0x43, 0x5c, 0x58, + 0x40, 0x09, 0x09, 0x22, 0x19, 0x39, 0x08, 0x22, 0x19, 0x39, 0x04, 0xb8, + 0xff, 0xde, 0xb1, 0x19, 0x39, 0x2b, 0x2b, 0x2b, 0x59, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x21, 0x11, 0x01, 0x33, 0x01, 0x16, + 0x17, 0x36, 0x37, 0x01, 0x33, 0x01, 0x11, 0x02, 0x3b, 0xfd, 0xcb, 0xec, + 0x01, 0x21, 0x50, 0x45, 0x42, 0x5e, 0x01, 0x1c, 0xe2, 0xfd, 0xb7, 0x02, + 0x6d, 0x03, 0x4d, 0xfe, 0x46, 0x7c, 0x7c, 0x73, 0x90, 0x01, 0xaf, 0xfc, + 0xb3, 0xfd, 0x93, 0x00, 0x00, 0x01, 0x00, 0x29, 0x00, 0x00, 0x04, 0xb0, + 0x05, 0xba, 0x00, 0x0c, 0x00, 0xe6, 0xb1, 0x12, 0x0e, 0xb8, 0xff, 0xc0, + 0x40, 0x3a, 0x0d, 0x11, 0x34, 0x48, 0x01, 0x47, 0x08, 0x48, 0x09, 0x03, + 0x0a, 0x08, 0x0b, 0x09, 0x02, 0xab, 0x04, 0x01, 0x03, 0x02, 0x01, 0x01, + 0x04, 0x09, 0x0a, 0x04, 0x08, 0x0a, 0x0a, 0x26, 0x1d, 0x21, 0x34, 0x28, + 0x0a, 0x01, 0xf9, 0x0a, 0x01, 0x0a, 0x20, 0x01, 0x04, 0x14, 0x01, 0x01, + 0x04, 0x0a, 0x28, 0x0b, 0x1c, 0x34, 0x01, 0x28, 0x0b, 0x1c, 0x34, 0x08, + 0xb8, 0xff, 0xd8, 0xb3, 0x0b, 0x1c, 0x34, 0x04, 0xb8, 0xff, 0xd8, 0x40, + 0x13, 0x0b, 0x1c, 0x34, 0x01, 0x0a, 0x04, 0x08, 0x05, 0x1e, 0x07, 0x06, + 0x02, 0x0b, 0x0a, 0x1e, 0x0c, 0x00, 0x08, 0x0a, 0xbb, 0x01, 0xb5, 0x00, + 0x01, 0x00, 0x04, 0x01, 0xb5, 0x40, 0x1b, 0x00, 0x07, 0x30, 0x08, 0x40, + 0x08, 0x02, 0x08, 0x4a, 0x0c, 0x3f, 0x0b, 0x01, 0x0b, 0x1a, 0x0e, 0x01, + 0x00, 0x05, 0x06, 0x51, 0x00, 0x19, 0x0d, 0xb6, 0x99, 0x18, 0x2b, 0x4e, + 0x10, 0xf4, 0x4d, 0xf4, 0x3c, 0x10, 0x3c, 0x4e, 0x10, 0xf6, 0x5d, 0x3c, + 0x4d, 0xf4, 0x71, 0x3c, 0x10, 0xe4, 0x10, 0xfc, 0x00, 0x3f, 0x3c, 0xfd, + 0x3c, 0x3f, 0x3c, 0xfd, 0x3c, 0x3c, 0x11, 0x39, 0x01, 0x2b, 0x2b, 0x2b, + 0x2b, 0x87, 0x05, 0x2e, 0x2b, 0x5d, 0x71, 0x2b, 0x87, 0x7d, 0xc4, 0x0e, + 0x10, 0xc4, 0x87, 0x0e, 0x10, 0xc4, 0xc4, 0x01, 0x72, 0x31, 0x30, 0x01, + 0x71, 0x5d, 0x2b, 0x43, 0x5c, 0x58, 0x40, 0x09, 0x02, 0x22, 0x21, 0x39, + 0x01, 0x18, 0x21, 0x39, 0x09, 0xb8, 0xff, 0xde, 0xb5, 0x19, 0x39, 0x02, + 0x22, 0x19, 0x39, 0x2b, 0x2b, 0x2b, 0x2b, 0x59, 0x33, 0x35, 0x01, 0x36, + 0x37, 0x21, 0x35, 0x21, 0x15, 0x01, 0x07, 0x21, 0x15, 0x29, 0x02, 0xef, + 0x50, 0x48, 0xfc, 0xce, 0x04, 0x1a, 0xfc, 0xc9, 0x59, 0x03, 0xa8, 0xb4, + 0x03, 0xab, 0x64, 0x4a, 0xad, 0xad, 0xfc, 0x07, 0x67, 0xad, 0x00, 0x01, + 0x00, 0x8b, 0xfe, 0x69, 0x02, 0x18, 0x05, 0xba, 0x00, 0x07, 0x00, 0x38, + 0x40, 0x1f, 0x04, 0x03, 0x2b, 0x01, 0x02, 0x10, 0x05, 0x06, 0x2b, 0x00, + 0x07, 0x12, 0x03, 0x02, 0x02, 0x07, 0x06, 0xae, 0x04, 0x05, 0x25, 0x01, + 0x20, 0x00, 0x01, 0x00, 0xac, 0x08, 0x9d, 0x68, 0x18, 0x2b, 0x10, 0xf6, + 0x5d, 0x3c, 0xfd, 0x3c, 0xf4, 0x3c, 0x3c, 0x10, 0x3c, 0x00, 0x3f, 0x3c, + 0xfd, 0x3c, 0x3f, 0x3c, 0xfd, 0x3c, 0x31, 0x30, 0x13, 0x11, 0x21, 0x15, + 0x23, 0x11, 0x33, 0x15, 0x8b, 0x01, 0x8d, 0xd9, 0xd9, 0xfe, 0x69, 0x07, + 0x51, 0x95, 0xf9, 0xd9, 0x95, 0x00, 0x00, 0x01, 0x00, 0x00, 0xff, 0xe7, + 0x02, 0x39, 0x05, 0xd3, 0x00, 0x03, 0x00, 0x4c, 0x40, 0x24, 0x01, 0x01, + 0x22, 0x14, 0x39, 0x00, 0x22, 0x14, 0x39, 0x98, 0x00, 0x01, 0x01, 0x00, + 0x90, 0x00, 0xa0, 0x00, 0x02, 0x00, 0x76, 0x03, 0x02, 0x14, 0x03, 0x03, + 0x02, 0x02, 0x01, 0x00, 0x03, 0x00, 0x0a, 0x03, 0xe8, 0x00, 0xb8, 0x01, + 0xa9, 0xb7, 0x02, 0xe8, 0x01, 0x01, 0x04, 0xb3, 0x7a, 0x18, 0x2b, 0x10, + 0x3c, 0x10, 0xed, 0xf4, 0xed, 0x00, 0x3f, 0x3c, 0x3f, 0x3c, 0x87, 0x05, + 0x2e, 0x2b, 0x5d, 0x7d, 0x10, 0xc4, 0x31, 0x30, 0x01, 0x5d, 0x2b, 0x2b, + 0x05, 0x01, 0x33, 0x01, 0x01, 0xa9, 0xfe, 0x57, 0x91, 0x01, 0xa8, 0x19, + 0x05, 0xec, 0xfa, 0x14, 0x00, 0x01, 0x00, 0x27, 0xfe, 0x69, 0x01, 0xb4, + 0x05, 0xba, 0x00, 0x07, 0x00, 0x34, 0x40, 0x1c, 0x04, 0x05, 0x2b, 0x07, + 0x06, 0x10, 0x03, 0x02, 0x2b, 0x00, 0x01, 0x12, 0x06, 0x05, 0x05, 0x01, + 0x02, 0xae, 0x04, 0x03, 0x25, 0x07, 0x00, 0xac, 0x09, 0x9b, 0x5a, 0x18, + 0x2b, 0x10, 0xf4, 0x3c, 0xfd, 0x3c, 0xf4, 0x3c, 0x3c, 0x10, 0x3c, 0x00, + 0x3f, 0x3c, 0xfd, 0x3c, 0x3f, 0x3c, 0xfd, 0x3c, 0x31, 0x30, 0x01, 0x21, + 0x35, 0x33, 0x11, 0x23, 0x35, 0x21, 0x01, 0xb4, 0xfe, 0x73, 0xd9, 0xd9, + 0x01, 0x8d, 0xfe, 0x69, 0x95, 0x06, 0x27, 0x95, 0x00, 0x01, 0x00, 0x36, + 0x02, 0xb2, 0x03, 0x8b, 0x05, 0xd3, 0x00, 0x06, 0x00, 0x61, 0xb9, 0x00, + 0x00, 0xff, 0xc0, 0x40, 0x15, 0x14, 0x39, 0x00, 0x40, 0x14, 0x39, 0x26, + 0x02, 0x29, 0x03, 0x02, 0x06, 0x02, 0x09, 0x03, 0x02, 0x05, 0x01, 0x06, + 0x3c, 0x01, 0xb8, 0x01, 0x65, 0x40, 0x17, 0x02, 0x05, 0x3c, 0x04, 0x00, + 0x3c, 0x01, 0x06, 0x06, 0x03, 0x02, 0x08, 0x38, 0x04, 0xdc, 0x03, 0x6c, + 0x02, 0xdc, 0x01, 0x69, 0x07, 0x08, 0xbc, 0x01, 0x32, 0x00, 0x21, 0x01, + 0xbf, 0x01, 0x81, 0x00, 0x18, 0x2b, 0x2b, 0xf6, 0xf4, 0xf6, 0xf4, 0xe4, + 0x11, 0x12, 0x3d, 0x39, 0x2f, 0x18, 0x10, 0xed, 0x10, 0xed, 0x00, 0x2f, + 0xed, 0xed, 0x10, 0x3c, 0x31, 0x30, 0x01, 0x71, 0x71, 0x2b, 0x2b, 0x13, + 0x23, 0x01, 0x33, 0x01, 0x23, 0x03, 0xef, 0xb9, 0x01, 0x61, 0x91, 0x01, + 0x63, 0xb5, 0xf7, 0x02, 0xb2, 0x03, 0x21, 0xfc, 0xdf, 0x02, 0x55, 0x00, + 0x00, 0x01, 0xff, 0xe1, 0xfe, 0x69, 0x04, 0x8a, 0xfe, 0xeb, 0x00, 0x03, + 0x00, 0x1a, 0x40, 0x0c, 0x01, 0x3f, 0x00, 0x02, 0x1a, 0x05, 0x00, 0x19, + 0x04, 0x43, 0x41, 0x18, 0x2b, 0x4e, 0x10, 0xe4, 0x10, 0xe6, 0x00, 0x2f, + 0x4d, 0xed, 0x31, 0x30, 0x03, 0x35, 0x21, 0x15, 0x1f, 0x04, 0xa9, 0xfe, + 0x69, 0x82, 0x82, 0x00, 0x00, 0x01, 0x00, 0x59, 0x04, 0xaa, 0x01, 0xd1, + 0x05, 0xc2, 0x00, 0x03, 0x00, 0x60, 0x40, 0x0b, 0x03, 0x38, 0x17, 0x19, + 0x34, 0x02, 0x40, 0x0f, 0x11, 0x34, 0x00, 0xb8, 0xff, 0xc0, 0xb3, 0x17, + 0x19, 0x34, 0x03, 0xb8, 0xff, 0xc0, 0x40, 0x1a, 0x16, 0x19, 0x34, 0x50, + 0x01, 0x50, 0x03, 0x02, 0x40, 0x03, 0x50, 0x00, 0x02, 0x03, 0x02, 0x00, + 0x00, 0x01, 0x10, 0x01, 0x02, 0x01, 0x87, 0x02, 0x00, 0x00, 0xb8, 0x02, + 0x53, 0xb2, 0x01, 0x86, 0x03, 0xb8, 0x02, 0x60, 0xb3, 0x02, 0x19, 0x04, + 0x71, 0xb9, 0x01, 0x2f, 0x00, 0x18, 0x2b, 0x4e, 0x10, 0xf4, 0x4d, 0xed, + 0xf4, 0xed, 0x00, 0x3f, 0xfd, 0x5d, 0x3c, 0x10, 0x3c, 0x31, 0x30, 0x01, + 0x5d, 0x5d, 0x2b, 0x2b, 0x2b, 0x2b, 0x01, 0x23, 0x03, 0x33, 0x01, 0xd1, + 0x91, 0xe7, 0xf1, 0x04, 0xaa, 0x01, 0x18, 0x00, 0x00, 0x02, 0x00, 0x4a, + 0xff, 0xe8, 0x04, 0x1c, 0x04, 0x3e, 0x00, 0x28, 0x00, 0x37, 0x01, 0x1d, + 0x40, 0x8e, 0x09, 0x0d, 0x09, 0x2a, 0x19, 0x0d, 0x1a, 0x2a, 0x29, 0x0d, + 0x2a, 0x2a, 0x39, 0x0d, 0x36, 0x15, 0x37, 0x1b, 0x3a, 0x2a, 0x49, 0x2a, + 0x5d, 0x0d, 0x5d, 0x2a, 0x6a, 0x0d, 0x69, 0x2a, 0x60, 0x30, 0x8a, 0x0d, + 0x86, 0x29, 0x9a, 0x16, 0x9b, 0x1a, 0xa9, 0x0d, 0x15, 0xa6, 0x19, 0xaa, + 0x28, 0xb6, 0x19, 0xbb, 0x28, 0xc4, 0x19, 0xcf, 0x28, 0xd2, 0x15, 0xdd, + 0x28, 0x08, 0x44, 0x16, 0x01, 0x1f, 0x17, 0x1f, 0x18, 0x2b, 0x2c, 0x2a, + 0x34, 0x39, 0x04, 0x39, 0x2c, 0x49, 0x04, 0x48, 0x2c, 0x56, 0x08, 0x59, + 0x2b, 0x66, 0x08, 0x69, 0x2b, 0x76, 0x0c, 0x87, 0x0c, 0xc9, 0x0c, 0xf9, + 0x0d, 0xf9, 0x2b, 0x11, 0x37, 0x34, 0x0e, 0x01, 0x04, 0x10, 0x2f, 0x24, + 0x34, 0x17, 0x32, 0x21, 0x14, 0x18, 0x5f, 0x29, 0x6f, 0x29, 0x02, 0x29, + 0x1c, 0x2f, 0x0e, 0x3f, 0x0e, 0x8f, 0x0e, 0x9f, 0x0e, 0xff, 0x0e, 0x05, + 0x9f, 0x0e, 0xaf, 0x0e, 0xef, 0x0e, 0x03, 0x0e, 0x0e, 0x1c, 0x03, 0x17, + 0xb8, 0x02, 0xaa, 0x40, 0x16, 0x18, 0x95, 0x14, 0x1c, 0x1c, 0x07, 0x00, + 0x45, 0x27, 0x0a, 0x32, 0x1c, 0x03, 0x0b, 0x29, 0x61, 0x10, 0x61, 0x00, + 0x25, 0x21, 0x24, 0xb8, 0x02, 0x5b, 0x40, 0x10, 0x27, 0x40, 0x00, 0x26, + 0x10, 0x26, 0x20, 0x26, 0x30, 0x26, 0xaf, 0x26, 0x05, 0x26, 0x31, 0x39, + 0xb8, 0xff, 0xc0, 0x40, 0x1f, 0x1e, 0x23, 0x34, 0x30, 0x39, 0xc0, 0x39, + 0x02, 0xa0, 0x39, 0x01, 0x39, 0x17, 0x25, 0x18, 0x22, 0x2f, 0x24, 0xbf, + 0x06, 0xcf, 0x06, 0x02, 0x1f, 0x06, 0x3f, 0x06, 0x02, 0x06, 0x31, 0x38, + 0x10, 0xf6, 0x5d, 0x71, 0xed, 0xf4, 0xed, 0x10, 0x5d, 0x71, 0x2b, 0xf6, + 0x5d, 0xed, 0xf4, 0x3c, 0xfd, 0xe5, 0xe5, 0x00, 0x3f, 0xed, 0x3f, 0xe4, + 0x3f, 0xed, 0xfd, 0xe4, 0x11, 0x12, 0x39, 0x2f, 0x5d, 0x71, 0xed, 0x71, + 0x11, 0x12, 0x39, 0x11, 0x12, 0x39, 0x39, 0x01, 0x11, 0x12, 0x17, 0x39, + 0x31, 0x30, 0x00, 0x5d, 0x01, 0x71, 0x5d, 0x00, 0x71, 0x25, 0x0e, 0x01, + 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x01, 0x37, 0x36, 0x37, 0x36, 0x37, + 0x36, 0x35, 0x34, 0x27, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x01, 0x17, 0x16, 0x1d, 0x01, 0x14, 0x16, 0x17, 0x23, + 0x26, 0x03, 0x06, 0x07, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, + 0x37, 0x36, 0x35, 0x03, 0x3c, 0x64, 0xb9, 0x6a, 0xaf, 0xbc, 0x47, 0x73, + 0x48, 0x35, 0x6b, 0xda, 0x67, 0x01, 0x33, 0x45, 0x88, 0x7f, 0x79, 0x1d, + 0xb0, 0x18, 0x6e, 0xd0, 0x89, 0x88, 0xaa, 0x50, 0x10, 0x09, 0x17, 0x22, + 0xbc, 0x1c, 0x17, 0x62, 0xc4, 0x6f, 0x5c, 0x32, 0x6d, 0x69, 0x68, 0xa2, + 0x26, 0x1d, 0x83, 0x55, 0x46, 0xab, 0x85, 0x4e, 0x81, 0x4e, 0x14, 0x0e, + 0x0d, 0x1a, 0x24, 0x25, 0x0a, 0x6e, 0x2d, 0x3d, 0x59, 0x71, 0x18, 0x71, + 0x8b, 0x4b, 0x40, 0x61, 0x4a, 0x2e, 0x78, 0xf0, 0xfb, 0x85, 0x3d, 0x38, + 0x01, 0xdd, 0x28, 0x1c, 0x10, 0x28, 0x4d, 0x2f, 0x48, 0x60, 0x5b, 0x4f, + 0x3d, 0x77, 0x00, 0x02, 0x00, 0x86, 0xff, 0xe8, 0x04, 0x1f, 0x05, 0xba, + 0x00, 0x10, 0x00, 0x1d, 0x00, 0xd6, 0x40, 0xac, 0x01, 0x05, 0x0c, 0x0f, + 0x24, 0x05, 0x35, 0x05, 0x45, 0x05, 0x05, 0x3f, 0x1f, 0xb0, 0x1f, 0x02, + 0x1f, 0x1f, 0x22, 0x1c, 0x33, 0x1c, 0x42, 0x1c, 0x70, 0x1f, 0x90, 0x1f, + 0x06, 0x3a, 0x13, 0x3c, 0x16, 0x3c, 0x1a, 0x4c, 0x16, 0x4c, 0x1a, 0x5d, + 0x08, 0x5d, 0x0d, 0x58, 0x0f, 0x5d, 0x16, 0x5e, 0x1a, 0x6a, 0x08, 0x6c, + 0x0d, 0x68, 0x0f, 0x6e, 0x16, 0x6e, 0x1a, 0xc0, 0x1f, 0xd9, 0x0c, 0xda, + 0x17, 0xda, 0x19, 0xe2, 0x13, 0xec, 0x17, 0xec, 0x19, 0xe3, 0x1d, 0xe0, + 0x1f, 0xff, 0x1f, 0x19, 0x20, 0x05, 0x2f, 0x0f, 0x2f, 0x14, 0x30, 0x05, + 0x3f, 0x0f, 0x40, 0x05, 0x4c, 0x0f, 0x50, 0x05, 0x66, 0x05, 0xda, 0x1d, + 0xf5, 0x04, 0xfa, 0x10, 0x0c, 0x10, 0x15, 0x0e, 0x04, 0x06, 0x02, 0x00, + 0x1b, 0x1c, 0x06, 0x07, 0x01, 0x0a, 0x15, 0x1c, 0x0e, 0x0b, 0x18, 0x24, + 0xd0, 0x0b, 0x01, 0x10, 0x0b, 0x40, 0x0b, 0x60, 0x0b, 0x80, 0x0b, 0x04, + 0x0b, 0x74, 0x01, 0x11, 0x33, 0x00, 0x33, 0x03, 0x25, 0x02, 0x02, 0xc0, + 0x01, 0x01, 0x90, 0x01, 0xa0, 0x01, 0xb0, 0x01, 0xf0, 0x01, 0x04, 0x1f, + 0x01, 0x3f, 0x01, 0x4f, 0x01, 0x03, 0x01, 0x19, 0x1e, 0x47, 0x37, 0x18, + 0x2b, 0x4e, 0x10, 0xf4, 0x5d, 0x71, 0x72, 0x3c, 0x4d, 0x10, 0xfd, 0xf4, + 0xe4, 0x10, 0xfd, 0x5d, 0x71, 0xed, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0xed, + 0x3f, 0x11, 0x39, 0x11, 0x12, 0x39, 0x31, 0x30, 0x00, 0x5d, 0x01, 0x5d, + 0x71, 0x72, 0x00, 0x71, 0x21, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x10, 0x00, 0x23, 0x22, 0x27, 0x03, 0x14, 0x17, 0x16, + 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x01, 0x2d, 0xa7, + 0xb4, 0x72, 0xb1, 0x62, 0xaf, 0x71, 0x40, 0xfe, 0xf2, 0xbd, 0xbc, 0x6b, + 0x02, 0x34, 0x55, 0x91, 0x76, 0xac, 0xa5, 0x75, 0x76, 0xac, 0x05, 0xba, + 0xfd, 0xf5, 0x8f, 0x4f, 0x8f, 0xca, 0x73, 0xfe, 0xef, 0xfe, 0xd6, 0x9d, + 0x01, 0x96, 0xbf, 0x55, 0x8b, 0xcd, 0xcb, 0xd0, 0xc6, 0xcd, 0x00, 0x01, + 0x00, 0x50, 0xff, 0xe8, 0x03, 0xed, 0x04, 0x3e, 0x00, 0x1a, 0x00, 0xcd, + 0x40, 0x47, 0x09, 0x0c, 0x01, 0x1f, 0x1c, 0x43, 0x13, 0x43, 0x17, 0x53, + 0x13, 0x53, 0x17, 0x60, 0x13, 0x60, 0x17, 0x9b, 0x02, 0x9b, 0x03, 0x9a, + 0x0d, 0xa4, 0x10, 0xa4, 0x1a, 0x0c, 0x08, 0x0d, 0x19, 0x0a, 0x6a, 0x02, + 0x69, 0x03, 0x6a, 0x05, 0x75, 0x0c, 0x70, 0x0d, 0x80, 0x0d, 0xa6, 0x0c, + 0xb5, 0x09, 0xb6, 0x0a, 0xb5, 0x0c, 0x0c, 0x16, 0x0c, 0x86, 0x0c, 0xe3, + 0x02, 0x03, 0x0e, 0x22, 0x5f, 0x0f, 0x6f, 0x0f, 0x7f, 0x0f, 0x03, 0x0f, + 0x01, 0xb8, 0x02, 0xaa, 0x40, 0x49, 0x30, 0x00, 0x40, 0x00, 0x50, 0x00, + 0x60, 0x00, 0x70, 0x00, 0x90, 0x00, 0xa0, 0x00, 0xe0, 0x00, 0xf0, 0x00, + 0x09, 0x00, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x04, 0x12, 0x1c, 0x0b, 0x07, + 0x18, 0x1c, 0x04, 0x0b, 0x1c, 0x0f, 0x01, 0x0f, 0x24, 0x0e, 0x22, 0x1b, + 0x00, 0x01, 0x00, 0x24, 0x0b, 0x2b, 0x1f, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x49, 0x1c, 0x15, 0x24, 0xcf, 0x07, 0x01, 0x1f, 0x07, 0x3f, 0x07, + 0x02, 0x07, 0x31, 0x1b, 0x34, 0xc4, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0x71, + 0xed, 0x10, 0xf6, 0x5d, 0x72, 0x4b, 0x53, 0x23, 0x4b, 0x51, 0x5a, 0x58, + 0xb9, 0x00, 0x01, 0xff, 0xc0, 0x38, 0x59, 0xed, 0x72, 0xf4, 0xed, 0x72, + 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x11, 0x39, 0x2f, 0x10, + 0x5d, 0xe4, 0x10, 0x5d, 0xe4, 0x31, 0x30, 0x00, 0x5d, 0x71, 0x01, 0x5d, + 0x71, 0x01, 0x17, 0x0e, 0x01, 0x23, 0x22, 0x00, 0x11, 0x34, 0x12, 0x36, + 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x36, 0x03, 0x3c, 0xb1, 0x1d, 0xef, 0xae, 0xda, 0xfe, + 0xf7, 0x72, 0xe9, 0x89, 0xad, 0xdc, 0x1f, 0xaf, 0x19, 0x7f, 0x5a, 0x88, + 0xaa, 0xa4, 0x84, 0x6a, 0x8e, 0x01, 0x85, 0x17, 0xb7, 0xcf, 0x01, 0x1d, + 0x01, 0x0a, 0xac, 0x01, 0x02, 0x81, 0xaf, 0xa1, 0x1b, 0x6b, 0x6c, 0xc3, + 0xd3, 0xd6, 0xc2, 0x82, 0x00, 0x02, 0x00, 0x46, 0xff, 0xe8, 0x03, 0xdf, + 0x05, 0xba, 0x00, 0x11, 0x00, 0x1d, 0x00, 0xd6, 0x40, 0xab, 0x0a, 0x02, + 0x04, 0x0d, 0x25, 0x0d, 0x34, 0x0d, 0x44, 0x0d, 0x05, 0x35, 0x14, 0x35, + 0x1c, 0x57, 0x02, 0x54, 0x0a, 0x52, 0x14, 0x53, 0x1c, 0x67, 0x02, 0x64, + 0x05, 0x65, 0x09, 0x63, 0x14, 0x60, 0x1c, 0xc0, 0x1f, 0xd4, 0x05, 0xd5, + 0x13, 0xdd, 0x19, 0xe5, 0x13, 0xe5, 0x14, 0xef, 0x17, 0xeb, 0x19, 0xe5, + 0x1d, 0xe0, 0x1f, 0xff, 0x1f, 0x16, 0x1f, 0x1f, 0x2b, 0x1a, 0x3c, 0x16, + 0x3c, 0x1a, 0x4b, 0x1a, 0x70, 0x1f, 0x90, 0x1f, 0x07, 0x2e, 0x02, 0x24, + 0x0d, 0x2e, 0x16, 0x3a, 0x02, 0x35, 0x0d, 0x4b, 0x02, 0x45, 0x0d, 0x46, + 0x14, 0x49, 0x1c, 0x57, 0x0a, 0x56, 0x0d, 0x67, 0x0d, 0xe5, 0x06, 0xe7, + 0x16, 0xfa, 0x01, 0xf4, 0x0e, 0x10, 0x01, 0x15, 0x03, 0x0e, 0x0b, 0x10, + 0x0f, 0x00, 0x1b, 0x1c, 0x0b, 0x07, 0x11, 0x00, 0x0a, 0x15, 0x1c, 0x03, + 0x0b, 0x18, 0x33, 0x01, 0x00, 0x25, 0x11, 0x0f, 0x25, 0x10, 0x10, 0xd0, + 0x11, 0x01, 0x10, 0x11, 0x40, 0x11, 0x60, 0x11, 0x80, 0x11, 0x04, 0x11, + 0x74, 0x12, 0x24, 0xbf, 0x07, 0xcf, 0x07, 0xdf, 0x07, 0xff, 0x07, 0x04, + 0x1f, 0x07, 0x3f, 0x07, 0x4f, 0x07, 0x03, 0x07, 0x19, 0x1e, 0x34, 0x50, + 0x18, 0x2b, 0x4e, 0x10, 0xf4, 0x5d, 0x71, 0x4d, 0xed, 0xfd, 0x5d, 0x71, + 0x3c, 0x10, 0xed, 0x10, 0xfd, 0x3c, 0xe4, 0x00, 0x3f, 0xed, 0x3f, 0x3c, + 0x3f, 0xed, 0x3f, 0x3c, 0x11, 0x39, 0x11, 0x12, 0x39, 0x31, 0x30, 0x00, + 0x5d, 0x01, 0x71, 0x5d, 0x00, 0x71, 0x21, 0x35, 0x06, 0x23, 0x22, 0x2e, + 0x01, 0x35, 0x34, 0x12, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x33, 0x11, + 0x01, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, + 0x03, 0x38, 0x65, 0xc4, 0x7f, 0xd5, 0x75, 0x6a, 0xd4, 0x83, 0x60, 0x96, + 0x2f, 0xb3, 0xfd, 0x20, 0xac, 0x75, 0x76, 0xa5, 0xa8, 0x7b, 0x78, 0xa1, + 0x86, 0x9e, 0x8c, 0xfb, 0xa3, 0x9f, 0x01, 0x03, 0x8a, 0x51, 0x41, 0x02, + 0x0e, 0xfa, 0x46, 0x02, 0x12, 0xcc, 0xca, 0xc1, 0xc6, 0xda, 0xcc, 0xc4, + 0x00, 0x02, 0x00, 0x4b, 0xff, 0xe8, 0x04, 0x1e, 0x04, 0x3e, 0x00, 0x15, + 0x00, 0x1d, 0x00, 0xde, 0x40, 0x64, 0x1f, 0x00, 0x1c, 0x15, 0x02, 0x55, + 0x03, 0x5d, 0x05, 0x5d, 0x09, 0x55, 0x0b, 0x65, 0x03, 0x6b, 0x05, 0x6f, + 0x09, 0x65, 0x0b, 0x08, 0x10, 0x00, 0x10, 0x01, 0x10, 0x02, 0x27, 0x12, + 0xd9, 0x05, 0xfa, 0x14, 0xf6, 0x1a, 0x07, 0x31, 0x12, 0x3a, 0x19, 0x31, + 0x1c, 0x41, 0x12, 0x4d, 0x1a, 0x41, 0x1c, 0x51, 0x12, 0x5c, 0x19, 0x52, + 0x1c, 0x61, 0x12, 0x6d, 0x1a, 0x61, 0x1c, 0x78, 0x06, 0x78, 0x15, 0xf6, + 0x02, 0xf6, 0x18, 0x10, 0x00, 0x16, 0x01, 0x0f, 0x0d, 0x17, 0x17, 0x50, + 0x16, 0x60, 0x16, 0x70, 0x16, 0x03, 0x16, 0x1c, 0x0f, 0x90, 0x10, 0xa0, + 0x10, 0x02, 0x10, 0x10, 0x04, 0x1b, 0x1c, 0x0a, 0x07, 0x00, 0xb8, 0x02, + 0xaa, 0x40, 0x09, 0x01, 0x95, 0x13, 0x1c, 0x04, 0x0b, 0x17, 0x40, 0x0d, + 0xb8, 0xff, 0xc0, 0x40, 0x09, 0x27, 0x2a, 0x34, 0xb0, 0x0d, 0x01, 0x0d, + 0x1a, 0x1f, 0xb8, 0xff, 0xc0, 0xb3, 0x25, 0x26, 0x34, 0x1f, 0xb8, 0xff, + 0xc0, 0x40, 0x1d, 0x1e, 0x23, 0x34, 0x30, 0x1f, 0x01, 0x1f, 0x16, 0x33, + 0x10, 0x24, 0x07, 0x40, 0x24, 0x2a, 0x34, 0x1f, 0x07, 0x3f, 0x07, 0x4f, + 0x07, 0x03, 0x07, 0x19, 0x1e, 0x34, 0x37, 0x18, 0x2b, 0x4e, 0x10, 0xf4, + 0x5d, 0x2b, 0x4d, 0xfd, 0xe4, 0x4e, 0x10, 0x71, 0x2b, 0x2b, 0xf6, 0x71, + 0x2b, 0x4d, 0xed, 0x00, 0x3f, 0xed, 0xfd, 0xe4, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0x5d, 0x3c, 0xfd, 0x71, 0x3c, 0x01, 0x11, 0x12, 0x39, 0x39, 0x12, + 0x39, 0x31, 0x30, 0x01, 0x5d, 0x00, 0x5d, 0x01, 0x71, 0x72, 0x01, 0x17, + 0x0e, 0x01, 0x23, 0x22, 0x00, 0x11, 0x10, 0x00, 0x33, 0x32, 0x00, 0x11, + 0x14, 0x07, 0x21, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x01, 0x21, 0x26, 0x27, + 0x26, 0x23, 0x22, 0x06, 0x03, 0x5e, 0xba, 0x2c, 0xee, 0xb9, 0xe9, 0xfe, + 0xef, 0x01, 0x14, 0xdc, 0xd5, 0x01, 0x0e, 0x01, 0xfc, 0xe8, 0x0a, 0xb2, + 0x85, 0x63, 0x8c, 0xfd, 0xda, 0x02, 0x51, 0x0c, 0x38, 0x56, 0x89, 0x7c, + 0xa9, 0x01, 0x56, 0x17, 0xa3, 0xb4, 0x01, 0x1f, 0x01, 0x03, 0x01, 0x0c, + 0x01, 0x28, 0xfe, 0xde, 0xfe, 0xf9, 0x10, 0x20, 0xaf, 0xba, 0x68, 0x01, + 0x95, 0x86, 0x43, 0x68, 0xa6, 0x00, 0x00, 0x01, 0x00, 0x13, 0x00, 0x00, + 0x02, 0x80, 0x05, 0xd3, 0x00, 0x17, 0x00, 0xb3, 0x40, 0x1e, 0x14, 0x09, + 0x01, 0x0f, 0x19, 0x2f, 0x19, 0x30, 0x19, 0x40, 0x19, 0x70, 0x19, 0x9b, + 0x0c, 0x9c, 0x0d, 0xa9, 0x0d, 0x08, 0x1a, 0x0d, 0x28, 0x0d, 0xb0, 0x19, + 0xc0, 0x19, 0x04, 0x19, 0xb8, 0xff, 0xc0, 0x40, 0x28, 0x1a, 0x1f, 0x34, + 0x1d, 0x08, 0x0d, 0x03, 0x0c, 0x0f, 0x1c, 0x0a, 0x01, 0x15, 0x02, 0x2b, + 0x14, 0x13, 0x04, 0x03, 0x06, 0x00, 0x0a, 0x9f, 0x14, 0x01, 0x14, 0xff, + 0x13, 0x40, 0x04, 0x17, 0x25, 0x04, 0x00, 0x03, 0x02, 0x92, 0x01, 0x01, + 0x00, 0xb8, 0xff, 0xc0, 0xb3, 0x31, 0x38, 0x34, 0x00, 0xb8, 0xff, 0xc0, + 0x40, 0x0a, 0x1c, 0x1f, 0x34, 0x90, 0x00, 0x01, 0x00, 0xa3, 0x18, 0x19, + 0xbc, 0x01, 0xba, 0x00, 0x21, 0x00, 0xf6, 0x01, 0x0a, 0x00, 0x18, 0x2b, + 0x2b, 0xf6, 0x5d, 0x2b, 0x2b, 0x3c, 0x10, 0xf4, 0x3c, 0x10, 0x3c, 0xed, + 0x10, 0xed, 0xed, 0x5d, 0x00, 0x3f, 0x3f, 0x3c, 0x3c, 0x3c, 0xfd, 0x3c, + 0x3f, 0xed, 0x39, 0x11, 0x39, 0x31, 0x30, 0x43, 0x79, 0x40, 0x14, 0x10, + 0x11, 0x06, 0x09, 0x07, 0x06, 0x08, 0x06, 0x02, 0x06, 0x10, 0x09, 0x12, + 0x1b, 0x00, 0x11, 0x06, 0x0f, 0x1b, 0x01, 0x2b, 0x01, 0x2b, 0x2a, 0x81, + 0x81, 0x01, 0x2b, 0x71, 0x5d, 0x00, 0x72, 0x33, 0x11, 0x23, 0x35, 0x33, + 0x35, 0x34, 0x37, 0x3e, 0x01, 0x33, 0x32, 0x17, 0x07, 0x26, 0x23, 0x22, + 0x06, 0x1d, 0x01, 0x33, 0x15, 0x23, 0x11, 0xb2, 0x9f, 0x9f, 0x13, 0x1a, + 0x83, 0x76, 0x4c, 0x5c, 0x1b, 0x38, 0x32, 0x52, 0x44, 0xcf, 0xcf, 0x03, + 0x9a, 0x8c, 0x71, 0x6b, 0x34, 0x46, 0x57, 0x12, 0x9d, 0x0a, 0x46, 0x60, + 0x62, 0x8c, 0xfc, 0x66, 0x00, 0x02, 0x00, 0x42, 0xfe, 0x51, 0x03, 0xea, + 0x04, 0x3e, 0x00, 0x1e, 0x00, 0x2a, 0x00, 0xf0, 0x40, 0x60, 0x0b, 0x0b, + 0x05, 0x14, 0x2c, 0x0b, 0x25, 0x14, 0x4c, 0x0b, 0x45, 0x14, 0x06, 0x09, + 0x1d, 0x19, 0x1d, 0x2c, 0x0b, 0x26, 0x14, 0x2c, 0x23, 0x39, 0x0b, 0x36, + 0x14, 0x4a, 0x0b, 0x46, 0x14, 0x56, 0x07, 0x58, 0x0b, 0x68, 0x0b, 0xfa, + 0x0a, 0xf5, 0x15, 0x0e, 0x2e, 0x23, 0x2c, 0x27, 0x3e, 0x23, 0x3e, 0x27, + 0x4c, 0x27, 0x90, 0x2c, 0xa0, 0x2c, 0x07, 0x36, 0x21, 0x36, 0x29, 0x3f, + 0x2c, 0x46, 0x0b, 0x46, 0x21, 0x45, 0x29, 0x54, 0x21, 0x54, 0x29, 0x69, + 0x07, 0x63, 0x21, 0x63, 0x29, 0x60, 0x2c, 0x80, 0x2c, 0xda, 0x27, 0xe8, + 0x21, 0xee, 0x23, 0xef, 0x27, 0x11, 0x17, 0x16, 0x06, 0x15, 0xb8, 0x02, + 0xb1, 0xb4, 0x28, 0x1c, 0x13, 0x07, 0x01, 0xb8, 0x02, 0xaa, 0x40, 0x10, + 0x20, 0x00, 0x30, 0x00, 0x60, 0x00, 0x70, 0x00, 0x80, 0x00, 0xc0, 0x00, + 0xd0, 0x00, 0x07, 0x00, 0xb8, 0x02, 0x7d, 0x40, 0x41, 0x05, 0x1c, 0x1c, + 0x0f, 0x0a, 0x45, 0x22, 0x1c, 0x0c, 0x0a, 0x16, 0x15, 0x33, 0x25, 0x33, + 0x0a, 0x25, 0x18, 0x18, 0xd0, 0x17, 0x01, 0x10, 0x17, 0x40, 0x17, 0x60, + 0x17, 0x80, 0x17, 0x04, 0x17, 0x74, 0x0f, 0x01, 0x25, 0x00, 0x22, 0x1f, + 0x24, 0xbf, 0x0f, 0xcf, 0x0f, 0xdf, 0x0f, 0xff, 0x0f, 0x04, 0x1f, 0x0f, + 0x3f, 0x0f, 0x4f, 0x0f, 0x03, 0x0f, 0x19, 0x2b, 0x2c, 0x74, 0x21, 0x34, + 0x50, 0x18, 0x2b, 0x2b, 0x4e, 0xf4, 0x5d, 0x71, 0x4d, 0xed, 0xf4, 0xed, + 0x10, 0xfd, 0x5d, 0x71, 0x3c, 0x10, 0xfd, 0xe4, 0xf6, 0x3c, 0x00, 0x3f, + 0xed, 0xe4, 0x3f, 0xed, 0xfd, 0x5d, 0xe4, 0x3f, 0xed, 0xe4, 0x3f, 0x3c, + 0x31, 0x30, 0x01, 0x5d, 0x71, 0x00, 0x5d, 0x71, 0x1f, 0x01, 0x16, 0x17, + 0x16, 0x33, 0x32, 0x36, 0x37, 0x36, 0x27, 0x06, 0x23, 0x22, 0x02, 0x35, + 0x34, 0x12, 0x36, 0x33, 0x32, 0x17, 0x35, 0x33, 0x11, 0x14, 0x0e, 0x01, + 0x23, 0x22, 0x26, 0x13, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, + 0x23, 0x22, 0x06, 0x66, 0xaf, 0x0b, 0x32, 0x43, 0x74, 0x7d, 0x88, 0x18, + 0x0e, 0x01, 0x76, 0xb0, 0xdb, 0xf0, 0x6e, 0xd1, 0x8d, 0xbc, 0x7a, 0xa6, + 0x65, 0xdb, 0xa0, 0xbe, 0xea, 0x99, 0xa6, 0x7d, 0x7c, 0xa8, 0xad, 0x7a, + 0x78, 0xa8, 0x58, 0x1a, 0x51, 0x25, 0x32, 0x64, 0x5a, 0x37, 0xb0, 0x8b, + 0x01, 0x3c, 0xdd, 0x98, 0x01, 0x01, 0x8c, 0x98, 0x80, 0xfc, 0x6a, 0xf8, + 0xcf, 0x78, 0xab, 0x03, 0x2a, 0xd1, 0xc0, 0xbf, 0xcc, 0xc3, 0xc6, 0xc3, + 0x00, 0x01, 0x00, 0x87, 0x00, 0x00, 0x03, 0xe8, 0x05, 0xba, 0x00, 0x14, + 0x00, 0xb1, 0xb9, 0x00, 0x16, 0xff, 0xc0, 0x40, 0x0d, 0x15, 0x17, 0x34, + 0x25, 0x04, 0x35, 0x03, 0x45, 0x03, 0xba, 0x0d, 0x04, 0x03, 0xb8, 0xff, + 0xe0, 0x40, 0x24, 0x17, 0x19, 0x34, 0x17, 0x08, 0x11, 0x0c, 0x11, 0x14, + 0x03, 0x05, 0x01, 0x00, 0x0f, 0x1c, 0x05, 0x07, 0x14, 0x0b, 0x0a, 0x0c, + 0x25, 0x09, 0x40, 0x33, 0x36, 0x34, 0xff, 0x09, 0x01, 0xc0, 0x09, 0x01, + 0x09, 0x4e, 0x16, 0xb8, 0xff, 0xc0, 0x40, 0x17, 0x34, 0x36, 0x34, 0xb0, + 0x16, 0xf0, 0x16, 0x02, 0x70, 0x16, 0xa0, 0x16, 0xb0, 0x16, 0xff, 0x16, + 0x04, 0x16, 0x02, 0x14, 0x25, 0x01, 0x00, 0xb8, 0xff, 0xc0, 0x40, 0x15, + 0x33, 0x36, 0x34, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0xd0, 0x00, + 0xe0, 0x00, 0x04, 0x00, 0x4e, 0x15, 0x47, 0x50, 0x18, 0x2b, 0x10, 0xf6, + 0x5d, 0x71, 0x2b, 0x3c, 0xfd, 0x3c, 0x10, 0x5d, 0x71, 0x2b, 0xf4, 0x5d, + 0x71, 0x2b, 0xed, 0x00, 0x3f, 0x3c, 0x3f, 0xed, 0x3f, 0x11, 0x39, 0x11, + 0x39, 0x01, 0x12, 0x39, 0x31, 0x30, 0x43, 0x79, 0x40, 0x0e, 0x06, 0x0e, + 0x07, 0x25, 0x0e, 0x06, 0x0c, 0x1b, 0x01, 0x0d, 0x08, 0x0f, 0x1b, 0x01, + 0x00, 0x2b, 0x01, 0x2b, 0x2b, 0x81, 0x00, 0x2b, 0x5d, 0x01, 0x2b, 0x33, + 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x1e, 0x01, 0x15, 0x11, 0x23, 0x11, + 0x34, 0x26, 0x23, 0x22, 0x0e, 0x01, 0x15, 0x11, 0x87, 0xb4, 0x7e, 0xc0, + 0x76, 0xae, 0x4b, 0xb4, 0x75, 0x6b, 0x50, 0x8d, 0x3c, 0x05, 0xba, 0xfd, + 0xf2, 0x92, 0x5d, 0xa4, 0x9c, 0xfd, 0x5f, 0x02, 0xa1, 0x87, 0x7b, 0x53, + 0x8e, 0x7d, 0xfd, 0xbb, 0x00, 0x02, 0x00, 0x88, 0x00, 0x00, 0x01, 0x3c, + 0x05, 0xba, 0x00, 0x03, 0x00, 0x07, 0x00, 0x7d, 0x40, 0x5d, 0x4f, 0x09, + 0x90, 0x09, 0xa0, 0x09, 0xb0, 0x09, 0xc0, 0x09, 0xdf, 0x09, 0xf0, 0x09, + 0x07, 0x00, 0x09, 0x1f, 0x09, 0x70, 0x09, 0x80, 0x09, 0x9f, 0x09, 0xb0, + 0x09, 0xc0, 0x09, 0xdf, 0x09, 0xe0, 0x09, 0xff, 0x09, 0x0a, 0x1f, 0x09, + 0x01, 0x00, 0x01, 0x07, 0x04, 0x02, 0x03, 0x09, 0x06, 0x03, 0x7e, 0x01, + 0x00, 0x06, 0x05, 0x06, 0x04, 0x0a, 0x06, 0x07, 0x25, 0x05, 0x00, 0x04, + 0x9f, 0x04, 0xa0, 0x04, 0xb0, 0x04, 0xc0, 0x04, 0xe0, 0x04, 0x06, 0xc0, + 0x04, 0xf0, 0x04, 0x02, 0x00, 0x04, 0x20, 0x04, 0xd0, 0x04, 0xe0, 0x04, + 0x04, 0x04, 0x4e, 0x08, 0x47, 0x50, 0x18, 0x2b, 0x10, 0xf6, 0x5d, 0x71, + 0x72, 0x3c, 0xfd, 0x3c, 0x00, 0x3f, 0x3f, 0x3c, 0x3f, 0xed, 0x01, 0x11, + 0x12, 0x39, 0x39, 0x11, 0x12, 0x39, 0x39, 0x31, 0x30, 0x01, 0x5d, 0x72, + 0x71, 0x13, 0x35, 0x33, 0x15, 0x03, 0x11, 0x33, 0x11, 0x88, 0xb4, 0xb4, + 0xb4, 0x04, 0xeb, 0xcf, 0xcf, 0xfb, 0x15, 0x04, 0x26, 0xfb, 0xda, 0x00, + 0x00, 0x02, 0xff, 0xa2, 0xfe, 0x51, 0x01, 0x3a, 0x05, 0xba, 0x00, 0x03, + 0x00, 0x12, 0x00, 0x99, 0x40, 0x4d, 0x04, 0x05, 0x25, 0x05, 0x3b, 0x04, + 0x33, 0x05, 0x86, 0x05, 0x05, 0x17, 0x08, 0x05, 0x05, 0x07, 0x04, 0x04, + 0x02, 0x04, 0x05, 0x13, 0x00, 0x01, 0x0d, 0x0b, 0x02, 0x03, 0x14, 0x0c, + 0x04, 0x11, 0x05, 0x0b, 0x07, 0x03, 0x7e, 0x01, 0x00, 0x0b, 0x06, 0x07, + 0x1c, 0x11, 0x0f, 0x90, 0x14, 0x01, 0x14, 0x17, 0x17, 0x1a, 0x0c, 0x0c, + 0x0d, 0x25, 0x0a, 0x0a, 0x90, 0x0b, 0x01, 0x1f, 0x0b, 0x3f, 0x0b, 0x4f, + 0x0b, 0x03, 0x0b, 0x19, 0x13, 0x14, 0xad, 0x21, 0x47, 0x50, 0x18, 0x2b, + 0x2b, 0x4e, 0xf4, 0x5d, 0x71, 0x3c, 0x4d, 0x10, 0xfd, 0x3c, 0x4e, 0x10, + 0x45, 0x65, 0x44, 0xe6, 0x71, 0x00, 0x3f, 0x4d, 0xed, 0x3f, 0x3f, 0xed, + 0x11, 0x12, 0x39, 0x12, 0x39, 0x01, 0x11, 0x12, 0x39, 0x39, 0x11, 0x12, + 0x39, 0x39, 0x11, 0x33, 0x33, 0x87, 0x10, 0x08, 0x3c, 0x31, 0x30, 0x43, + 0x79, 0x40, 0x0e, 0x08, 0x10, 0x0f, 0x26, 0x08, 0x10, 0x0a, 0x1b, 0x01, + 0x09, 0x0e, 0x07, 0x1b, 0x00, 0x00, 0x2b, 0x01, 0x2b, 0x2b, 0x81, 0x01, + 0x5d, 0x13, 0x35, 0x33, 0x15, 0x01, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, + 0x11, 0x33, 0x11, 0x14, 0x07, 0x06, 0x23, 0x22, 0x86, 0xb4, 0xfe, 0x68, + 0x22, 0x36, 0x1f, 0x37, 0x36, 0xb4, 0x33, 0x41, 0x97, 0x49, 0x04, 0xe9, + 0xd1, 0xd1, 0xf9, 0x7b, 0x99, 0x0e, 0x49, 0x92, 0x04, 0x5c, 0xfb, 0xa0, + 0xc4, 0x4d, 0x64, 0x00, 0x00, 0x01, 0x00, 0x88, 0x00, 0x00, 0x03, 0xf8, + 0x05, 0xba, 0x00, 0x0b, 0x01, 0xcc, 0x40, 0x1a, 0x07, 0x06, 0x56, 0x06, + 0x5a, 0x09, 0x03, 0x0f, 0x0d, 0xf3, 0x05, 0xf6, 0x06, 0x03, 0x55, 0x03, + 0x77, 0x0a, 0x02, 0x12, 0x06, 0x20, 0x13, 0x21, 0x34, 0x08, 0xb8, 0xff, + 0xf0, 0xb3, 0x12, 0x27, 0x34, 0x09, 0xb8, 0xff, 0xf0, 0xb4, 0x12, 0x27, + 0x34, 0x12, 0x05, 0xb8, 0xff, 0xf0, 0xb3, 0x12, 0x21, 0x34, 0x09, 0xb8, + 0xff, 0xf0, 0x40, 0x84, 0x12, 0x27, 0x34, 0x06, 0x04, 0x04, 0x05, 0x04, + 0x06, 0x37, 0x09, 0x47, 0x04, 0x05, 0x25, 0x06, 0x2d, 0x0a, 0x58, 0x0a, + 0x77, 0x03, 0x75, 0x0a, 0xda, 0x03, 0xe3, 0x06, 0x07, 0xa6, 0x06, 0x01, + 0x23, 0x06, 0x26, 0x07, 0x25, 0x08, 0x39, 0x06, 0x38, 0x09, 0x3f, 0x0d, + 0x4f, 0x0d, 0x59, 0x04, 0x59, 0x06, 0x58, 0x07, 0x59, 0x09, 0x7d, 0x04, + 0x79, 0x05, 0x99, 0x09, 0xc6, 0x06, 0xd2, 0x04, 0xd6, 0x06, 0xe4, 0x06, + 0xe9, 0x07, 0xf7, 0x06, 0xf9, 0x08, 0x15, 0x12, 0x0a, 0x0a, 0x05, 0x03, + 0x03, 0x04, 0x02, 0x06, 0x06, 0x07, 0x09, 0x09, 0x08, 0x0a, 0x0a, 0x05, + 0x09, 0x08, 0x08, 0x25, 0x07, 0x06, 0x14, 0x07, 0x07, 0x06, 0x03, 0x04, + 0x04, 0x25, 0x05, 0x0a, 0x14, 0x05, 0x05, 0x0a, 0x0a, 0x09, 0x06, 0x03, + 0x04, 0x08, 0x01, 0x02, 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x08, 0x0b, + 0x0b, 0x00, 0x0a, 0x04, 0xb8, 0x01, 0x0f, 0xb2, 0x05, 0x22, 0x08, 0xb8, + 0x01, 0x0f, 0x40, 0x23, 0x20, 0x07, 0x3f, 0x07, 0x02, 0x07, 0x1a, 0x90, + 0x0d, 0x01, 0x0d, 0x0b, 0x25, 0x00, 0x02, 0x25, 0x01, 0x01, 0x90, 0x00, + 0x01, 0x3f, 0x00, 0x4f, 0x00, 0x02, 0x00, 0x19, 0x0c, 0x0d, 0xe1, 0x21, + 0x47, 0x66, 0x18, 0x2b, 0x2b, 0x4e, 0xf4, 0x5d, 0x71, 0x3c, 0x4d, 0x10, + 0xed, 0x10, 0xed, 0x4e, 0x10, 0x71, 0xf6, 0x5d, 0x4d, 0xed, 0xf4, 0xed, + 0x00, 0x3f, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x3f, 0x3c, 0x3f, 0x3c, 0x11, + 0x17, 0x39, 0x87, 0x05, 0x2e, 0x2b, 0x04, 0x7d, 0x10, 0xc4, 0x87, 0x05, + 0x2e, 0x18, 0x2b, 0x0e, 0x7d, 0x10, 0xc4, 0x07, 0x10, 0x08, 0x3c, 0x08, + 0x3c, 0x03, 0x10, 0x08, 0x3c, 0x08, 0x3c, 0x31, 0x30, 0x01, 0x43, 0x5c, + 0x58, 0x40, 0x0a, 0x09, 0x2c, 0x1d, 0x39, 0x09, 0x08, 0x1d, 0x1d, 0x3c, + 0x06, 0xb8, 0xff, 0xde, 0xb2, 0x1d, 0x39, 0x06, 0xb8, 0xff, 0xd4, 0xb2, + 0x20, 0x39, 0x06, 0xb8, 0xff, 0xd4, 0xb1, 0x21, 0x39, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x59, 0x5d, 0x00, 0x71, 0x5d, 0x01, 0x71, 0x00, 0x2b, 0x2b, + 0x43, 0x5c, 0x58, 0xb9, 0x00, 0x06, 0xff, 0xc0, 0xb2, 0x21, 0x39, 0x03, + 0xb8, 0xff, 0xc0, 0xb2, 0x16, 0x39, 0x03, 0xb8, 0xff, 0xde, 0xb2, 0x10, + 0x39, 0x06, 0xb8, 0xff, 0xde, 0xb2, 0x10, 0x39, 0x03, 0xb8, 0xff, 0xde, + 0xb2, 0x0c, 0x39, 0x03, 0xb8, 0xff, 0xde, 0xb1, 0x0b, 0x39, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x59, 0x01, 0x2b, 0x2b, 0x2b, 0x43, 0x5c, 0x58, + 0x40, 0x12, 0xdd, 0x04, 0x01, 0x08, 0x14, 0x16, 0x39, 0x09, 0x08, 0x14, + 0x14, 0x3c, 0x09, 0x08, 0x14, 0x14, 0x3c, 0x06, 0xb8, 0xff, 0xf6, 0xb2, + 0x18, 0x39, 0x06, 0xb8, 0xff, 0xec, 0xb1, 0x1b, 0x39, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x01, 0x5d, 0x59, 0x00, 0x5d, 0x01, 0x5d, 0x71, 0x33, 0x11, + 0x33, 0x11, 0x01, 0x33, 0x09, 0x01, 0x23, 0x01, 0x07, 0x11, 0x88, 0xb4, + 0x01, 0xaa, 0xe9, 0xfe, 0x6a, 0x01, 0xbf, 0xde, 0xfe, 0xa1, 0x7f, 0x05, + 0xba, 0xfc, 0xbc, 0x01, 0xb0, 0xfe, 0x76, 0xfd, 0x64, 0x02, 0x1f, 0x7a, + 0xfe, 0x5b, 0x00, 0x01, 0x00, 0x83, 0x00, 0x00, 0x01, 0x37, 0x05, 0xba, + 0x00, 0x03, 0x00, 0x8c, 0xb9, 0x00, 0x05, 0xff, 0xc0, 0xb3, 0x37, 0x38, + 0x34, 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x34, 0x35, 0x34, 0x05, 0xb8, 0xff, + 0xc0, 0xb3, 0x30, 0x31, 0x34, 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x22, 0x25, + 0x34, 0x05, 0xb8, 0xff, 0xc0, 0x40, 0x25, 0x15, 0x17, 0x34, 0x0f, 0x05, + 0x1f, 0x05, 0x9f, 0x05, 0xdf, 0x05, 0x04, 0x4f, 0x05, 0xdf, 0x05, 0xf0, + 0x05, 0x03, 0x1f, 0x05, 0x70, 0x05, 0x80, 0x05, 0xff, 0x05, 0x04, 0x01, + 0x00, 0x00, 0x0a, 0x02, 0x03, 0x25, 0x01, 0x00, 0xb8, 0xff, 0xc0, 0xb3, + 0x37, 0x38, 0x34, 0x00, 0xb8, 0xff, 0xc0, 0x40, 0x1a, 0x33, 0x35, 0x34, + 0x9f, 0x00, 0x01, 0xc0, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, + 0xd0, 0x00, 0xe0, 0x00, 0x04, 0x00, 0x4e, 0x04, 0x47, 0x50, 0x18, 0x2b, + 0x10, 0xf6, 0x5d, 0x71, 0x72, 0x2b, 0x2b, 0x3c, 0xfd, 0x3c, 0x00, 0x3f, + 0x3f, 0x31, 0x30, 0x01, 0x5d, 0x71, 0x72, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x33, 0x11, 0x33, 0x11, 0x83, 0xb4, 0x05, 0xba, 0xfa, 0x46, 0x00, 0x01, + 0x00, 0x87, 0x00, 0x00, 0x06, 0x26, 0x04, 0x3e, 0x00, 0x23, 0x00, 0xc6, + 0xb9, 0x00, 0x09, 0xff, 0xd8, 0x40, 0x41, 0x0b, 0x0d, 0x34, 0x25, 0x04, + 0xe4, 0x04, 0xe4, 0x09, 0xe1, 0x17, 0xe5, 0x20, 0x05, 0xd5, 0x05, 0xf6, + 0x20, 0x02, 0x17, 0x08, 0x20, 0x23, 0x09, 0x18, 0x1b, 0x20, 0x09, 0x03, + 0x03, 0x23, 0x1e, 0x1c, 0x06, 0x15, 0x1c, 0x0b, 0x0b, 0x06, 0x07, 0x01, + 0x06, 0x23, 0x1a, 0x19, 0x10, 0x0a, 0xd0, 0x25, 0x01, 0x90, 0x25, 0xa0, + 0x25, 0x02, 0x25, 0x17, 0x17, 0x1a, 0x0e, 0x25, 0x90, 0x11, 0x01, 0x11, + 0xb8, 0x01, 0x5d, 0xb5, 0x18, 0x25, 0x90, 0x1b, 0x01, 0x1b, 0xb8, 0x01, + 0x5d, 0x40, 0x19, 0x00, 0x02, 0x33, 0x23, 0x25, 0x01, 0xd0, 0x00, 0x01, + 0x90, 0x00, 0xa0, 0x00, 0x02, 0x1f, 0x00, 0x3f, 0x00, 0x4f, 0x00, 0x03, + 0x00, 0x19, 0x24, 0x25, 0xb8, 0x01, 0x78, 0xb3, 0x21, 0x47, 0x50, 0x18, + 0x2b, 0x2b, 0x4e, 0xf4, 0x5d, 0x71, 0x72, 0x3c, 0x4d, 0xfd, 0xe4, 0x10, + 0xf4, 0x5d, 0xed, 0xf4, 0x5d, 0xfd, 0x4e, 0x45, 0x65, 0x44, 0xe6, 0x71, + 0x72, 0x00, 0x3f, 0x3c, 0x3c, 0x3c, 0x3f, 0x3f, 0x3c, 0x4d, 0x10, 0xed, + 0x10, 0xed, 0x11, 0x17, 0x39, 0x01, 0x11, 0x12, 0x39, 0x12, 0x39, 0x31, + 0x30, 0x43, 0x79, 0x40, 0x0e, 0x0c, 0x14, 0x13, 0x26, 0x14, 0x0c, 0x11, + 0x1b, 0x01, 0x12, 0x0d, 0x15, 0x1b, 0x01, 0x00, 0x2b, 0x01, 0x2b, 0x2b, + 0x81, 0x01, 0x5d, 0x00, 0x5d, 0x2b, 0x33, 0x11, 0x33, 0x15, 0x3e, 0x01, + 0x33, 0x32, 0x16, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, + 0x34, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, + 0x23, 0x22, 0x0e, 0x01, 0x15, 0x11, 0x87, 0xa1, 0x32, 0xa6, 0x6a, 0x76, + 0x97, 0x1f, 0x7e, 0xca, 0x9e, 0xaa, 0xb3, 0x23, 0x5c, 0x3e, 0x70, 0x94, + 0xb4, 0x58, 0x64, 0x4c, 0x81, 0x3a, 0x04, 0x26, 0x95, 0x4e, 0x5f, 0x62, + 0x58, 0xba, 0xaf, 0xb6, 0xfd, 0x27, 0x02, 0x9d, 0x6c, 0x5f, 0x3a, 0x95, + 0xa4, 0xfd, 0x97, 0x02, 0xb2, 0x78, 0x78, 0x50, 0x9a, 0x91, 0xfd, 0xd9, + 0x00, 0x01, 0x00, 0x87, 0x00, 0x00, 0x03, 0xe6, 0x04, 0x3e, 0x00, 0x16, + 0x00, 0xcc, 0x40, 0x13, 0x05, 0x03, 0x06, 0x13, 0x02, 0xa8, 0x10, 0xb8, + 0x10, 0xe3, 0x03, 0xe7, 0x13, 0xf0, 0x03, 0xf6, 0x13, 0x06, 0x04, 0xb8, + 0xff, 0xf0, 0x40, 0x31, 0x0b, 0x0d, 0x34, 0x79, 0x10, 0x01, 0x98, 0x10, + 0xd0, 0x18, 0xe0, 0x18, 0xff, 0x18, 0x04, 0x20, 0x08, 0x14, 0x0e, 0x14, + 0x16, 0x12, 0x1c, 0x05, 0x07, 0x01, 0x06, 0x16, 0x0d, 0x0a, 0x0d, 0x0e, + 0x0c, 0x0e, 0x24, 0x0b, 0x40, 0x33, 0x36, 0x34, 0xff, 0x0b, 0x01, 0xff, + 0x0b, 0x01, 0x0b, 0x4e, 0x18, 0xb8, 0xff, 0xc0, 0x40, 0x1a, 0x34, 0x36, + 0x34, 0xb0, 0x18, 0xf0, 0x18, 0x02, 0x70, 0x18, 0xa0, 0x18, 0xb0, 0x18, + 0xc0, 0x18, 0x04, 0x18, 0x03, 0x02, 0x33, 0x15, 0x16, 0x25, 0x01, 0x00, + 0xb8, 0xff, 0xc0, 0x40, 0x12, 0x33, 0x36, 0x34, 0xf0, 0x00, 0x01, 0x00, + 0x00, 0x20, 0x00, 0xd0, 0x00, 0xe0, 0x00, 0x04, 0x00, 0x4e, 0x17, 0x10, + 0xf6, 0x5d, 0x71, 0x2b, 0x3c, 0xfd, 0x3c, 0xf4, 0x3c, 0x10, 0x5d, 0x71, + 0x2b, 0xf6, 0x5d, 0x71, 0x2b, 0xed, 0x3c, 0x10, 0x3c, 0x00, 0x3f, 0x3c, + 0x3f, 0x3f, 0xed, 0x11, 0x39, 0x01, 0x12, 0x39, 0x31, 0x30, 0x43, 0x79, + 0x40, 0x16, 0x06, 0x11, 0x09, 0x0a, 0x08, 0x0a, 0x07, 0x0a, 0x03, 0x06, + 0x10, 0x26, 0x11, 0x06, 0x0e, 0x1b, 0x01, 0x0f, 0x0a, 0x12, 0x1b, 0x01, + 0x00, 0x2b, 0x01, 0x2b, 0x2b, 0x2a, 0x81, 0x01, 0x5d, 0x71, 0x00, 0x2b, + 0x5d, 0x71, 0x33, 0x11, 0x33, 0x15, 0x36, 0x33, 0x32, 0x1e, 0x01, 0x17, + 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, + 0x11, 0x87, 0xa2, 0x75, 0xdd, 0x60, 0xa1, 0x50, 0x10, 0x0a, 0xb4, 0x2a, + 0x6b, 0x48, 0x73, 0xa7, 0x04, 0x26, 0x97, 0xaf, 0x45, 0x70, 0x4d, 0x32, + 0x7d, 0xfd, 0x73, 0x02, 0x86, 0x6e, 0x6d, 0x41, 0x92, 0xcc, 0xfd, 0xbc, + 0x00, 0x02, 0x00, 0x44, 0xff, 0xe8, 0x04, 0x27, 0x04, 0x3e, 0x00, 0x0d, + 0x00, 0x19, 0x00, 0xc1, 0x40, 0x5d, 0x12, 0x07, 0x0a, 0x19, 0x0c, 0x47, + 0x06, 0x48, 0x08, 0x56, 0x06, 0x59, 0x08, 0x67, 0x06, 0x69, 0x08, 0x08, + 0x34, 0x10, 0x3a, 0x12, 0x3a, 0x16, 0x35, 0x18, 0x45, 0x10, 0x4b, 0x12, + 0x4b, 0x16, 0x45, 0x18, 0x5c, 0x05, 0x5c, 0x09, 0x52, 0x10, 0x5d, 0x12, + 0x5d, 0x16, 0x52, 0x18, 0x6d, 0x05, 0x6d, 0x09, 0x64, 0x10, 0x6d, 0x12, + 0x6d, 0x16, 0x64, 0x18, 0x77, 0x01, 0x15, 0x09, 0x06, 0x05, 0x0d, 0x5b, + 0x03, 0x54, 0x05, 0x54, 0x0a, 0x5b, 0x0c, 0x6c, 0x03, 0x65, 0x05, 0x65, + 0x0a, 0x6c, 0x0c, 0x0a, 0x17, 0x1c, 0x04, 0x07, 0x11, 0x1c, 0x0b, 0x0b, + 0x14, 0x24, 0x07, 0xb8, 0xff, 0xc0, 0x40, 0x13, 0x24, 0x25, 0x34, 0x30, + 0x07, 0x01, 0x00, 0x07, 0x10, 0x07, 0x20, 0x07, 0x03, 0x07, 0x31, 0xdf, + 0x1b, 0x01, 0x1b, 0xb8, 0xff, 0xc0, 0x40, 0x19, 0x1e, 0x23, 0x34, 0x30, + 0x1b, 0x01, 0x1b, 0x0e, 0x24, 0x00, 0x40, 0x24, 0x25, 0x34, 0x1f, 0x00, + 0x3f, 0x00, 0x02, 0x00, 0x31, 0x1a, 0x34, 0x37, 0x18, 0x2b, 0x10, 0xf6, + 0x5d, 0x2b, 0xed, 0x10, 0x71, 0x2b, 0x5d, 0xf6, 0x5d, 0x5d, 0x2b, 0xed, + 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x31, 0x30, 0x01, 0x71, 0x5d, 0x00, 0x71, + 0x43, 0x5c, 0x58, 0x40, 0x09, 0x53, 0x05, 0x53, 0x09, 0x62, 0x05, 0x62, + 0x09, 0x04, 0x01, 0x5d, 0x59, 0x13, 0x10, 0x37, 0x36, 0x33, 0x32, 0x00, + 0x15, 0x14, 0x0e, 0x01, 0x23, 0x22, 0x00, 0x13, 0x14, 0x16, 0x33, 0x32, + 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x44, 0xa4, 0x89, 0xc5, 0xdb, + 0x01, 0x16, 0x7b, 0xeb, 0x8b, 0xdf, 0xfe, 0xed, 0xb9, 0xb2, 0x87, 0x86, + 0xb2, 0xb3, 0x85, 0x87, 0xb2, 0x02, 0x13, 0x01, 0x27, 0x8e, 0x76, 0xfe, + 0xe1, 0xfd, 0xcd, 0xeb, 0x82, 0x01, 0x1e, 0x01, 0x0d, 0xcc, 0xcb, 0xcc, + 0xd1, 0xc5, 0xcb, 0xca, 0x00, 0x02, 0x00, 0x87, 0xfe, 0x69, 0x04, 0x21, + 0x04, 0x3e, 0x00, 0x12, 0x00, 0x1e, 0x00, 0xcf, 0x40, 0xa5, 0x0c, 0x10, + 0x2d, 0x10, 0x3d, 0x10, 0x4b, 0x10, 0x04, 0x3f, 0x20, 0xb0, 0x20, 0x02, + 0x1f, 0x20, 0x29, 0x0c, 0x23, 0x1d, 0x32, 0x15, 0x32, 0x1d, 0x42, 0x1d, + 0x70, 0x20, 0x90, 0x20, 0x08, 0x3a, 0x17, 0x3a, 0x1b, 0x4a, 0x17, 0x4a, + 0x1b, 0x59, 0x08, 0x5b, 0x0c, 0x5c, 0x17, 0x5c, 0x1b, 0x6a, 0x08, 0x6b, + 0x0c, 0x69, 0x10, 0x6d, 0x17, 0x6b, 0x1b, 0xc0, 0x20, 0xd3, 0x14, 0xdd, + 0x18, 0xdd, 0x1a, 0xd3, 0x1e, 0xe4, 0x14, 0xe4, 0x1e, 0xe0, 0x20, 0xff, + 0x20, 0x16, 0x23, 0x04, 0x2b, 0x10, 0x2b, 0x15, 0x35, 0x04, 0x3a, 0x10, + 0x46, 0x04, 0x4a, 0x10, 0x5a, 0x10, 0xe5, 0x0b, 0xeb, 0x1d, 0xfe, 0x10, + 0x0b, 0x11, 0x0e, 0x03, 0x16, 0x1c, 0x1c, 0x06, 0x07, 0x01, 0x06, 0x16, + 0x1c, 0x0e, 0x0b, 0x00, 0x0e, 0x19, 0x24, 0xd0, 0x0a, 0x01, 0x10, 0x0a, + 0x40, 0x0a, 0x60, 0x0a, 0x80, 0x0a, 0x04, 0x0a, 0x74, 0x01, 0x13, 0x33, + 0x02, 0x33, 0x12, 0x25, 0x00, 0x00, 0xc0, 0x01, 0x01, 0x90, 0x01, 0xa0, + 0x01, 0xb0, 0x01, 0xf0, 0x01, 0x04, 0x1f, 0x01, 0x3f, 0x01, 0x4f, 0x01, + 0x03, 0x01, 0x19, 0x1f, 0x47, 0x37, 0x18, 0x01, 0x2b, 0x4e, 0x10, 0xf4, + 0x5d, 0x71, 0x72, 0x3c, 0x4d, 0x10, 0xfd, 0xf4, 0xe4, 0x10, 0xfd, 0x5d, + 0x71, 0xed, 0x00, 0x3f, 0x3f, 0xed, 0x3f, 0x3f, 0xed, 0x11, 0x39, 0x12, + 0x39, 0x31, 0x30, 0x00, 0x5d, 0x01, 0x5d, 0x71, 0x72, 0x00, 0x71, 0x13, + 0x11, 0x33, 0x15, 0x3e, 0x01, 0x33, 0x32, 0x1e, 0x01, 0x15, 0x14, 0x02, + 0x06, 0x23, 0x22, 0x26, 0x27, 0x11, 0x03, 0x14, 0x16, 0x33, 0x32, 0x36, + 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x87, 0xa4, 0x3a, 0x92, 0x68, 0x88, + 0xd0, 0x6a, 0x75, 0xdf, 0x7b, 0x5a, 0x8f, 0x2e, 0x11, 0xa6, 0x76, 0x78, + 0xab, 0xa7, 0x74, 0x73, 0xb1, 0xfe, 0x69, 0x05, 0xbd, 0x8a, 0x51, 0x51, + 0x8c, 0xff, 0x98, 0xa3, 0xfe, 0xfb, 0x8b, 0x4c, 0x3a, 0xfd, 0xfb, 0x03, + 0xa4, 0xcd, 0xc4, 0xcb, 0xd5, 0xcb, 0xca, 0xd7, 0x00, 0x02, 0x00, 0x48, + 0xfe, 0x69, 0x03, 0xe0, 0x04, 0x3e, 0x00, 0x10, 0x00, 0x1c, 0x00, 0xbe, + 0x40, 0x98, 0x0b, 0x02, 0x2b, 0x02, 0x2a, 0x18, 0x3b, 0x02, 0x4b, 0x02, + 0x79, 0x0c, 0x06, 0x3f, 0x15, 0x3f, 0x19, 0x4b, 0x19, 0x90, 0x1e, 0xa0, + 0x1e, 0x05, 0x34, 0x13, 0x34, 0x1b, 0x3f, 0x1e, 0x44, 0x13, 0x44, 0x1b, + 0x53, 0x13, 0x53, 0x1b, 0x63, 0x13, 0x63, 0x1b, 0x60, 0x1e, 0x80, 0x1e, + 0xd4, 0x06, 0xd5, 0x12, 0xe6, 0x06, 0xe9, 0x0c, 0xea, 0x18, 0x10, 0x29, + 0x02, 0x22, 0x0c, 0x2b, 0x15, 0x39, 0x02, 0x35, 0x0c, 0x49, 0x02, 0x46, + 0x0c, 0x5a, 0x02, 0x69, 0x02, 0xd9, 0x0c, 0xdb, 0x18, 0xe3, 0x16, 0xe9, + 0x19, 0xe6, 0x1b, 0xfc, 0x02, 0x0f, 0x01, 0x04, 0x0d, 0x14, 0x1a, 0x1c, + 0x0b, 0x07, 0x0e, 0x06, 0x14, 0x1c, 0x04, 0x0b, 0x00, 0x0e, 0x17, 0x0e, + 0x33, 0x00, 0x25, 0x10, 0x10, 0xd0, 0x0f, 0x01, 0x10, 0x0f, 0x40, 0x0f, + 0x60, 0x0f, 0x80, 0x0f, 0x04, 0x0f, 0x74, 0x11, 0x24, 0xbf, 0x07, 0xcf, + 0x07, 0xdf, 0x07, 0xff, 0x07, 0x04, 0x1f, 0x07, 0x3f, 0x07, 0x4f, 0x07, + 0x03, 0x07, 0x19, 0x1d, 0x1e, 0x74, 0x21, 0x34, 0x50, 0x18, 0x2b, 0x2b, + 0x4e, 0xf4, 0x5d, 0x71, 0x4d, 0xed, 0xfd, 0x5d, 0x71, 0x3c, 0x10, 0xfd, + 0xf4, 0x3c, 0x00, 0x3f, 0x3f, 0xed, 0x3f, 0x3f, 0xed, 0x11, 0x39, 0x12, + 0x39, 0x31, 0x30, 0x00, 0x5d, 0x01, 0x5d, 0x71, 0x00, 0x71, 0x01, 0x11, + 0x0e, 0x01, 0x23, 0x22, 0x00, 0x11, 0x34, 0x3e, 0x01, 0x33, 0x32, 0x17, + 0x35, 0x33, 0x11, 0x01, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, + 0x23, 0x22, 0x06, 0x03, 0x2c, 0x2a, 0x97, 0x55, 0xbd, 0xfe, 0xef, 0x6f, + 0xd3, 0x7e, 0xc5, 0x71, 0xa2, 0xfd, 0x21, 0xac, 0x78, 0x73, 0xa6, 0xaf, + 0x76, 0x75, 0xa3, 0xfe, 0x69, 0x02, 0x08, 0x3b, 0x4e, 0x01, 0x2e, 0x01, + 0x07, 0xa0, 0xfe, 0x83, 0xa6, 0x8e, 0xfa, 0x43, 0x03, 0xad, 0xcd, 0xcd, + 0xc3, 0xc7, 0xd4, 0xd6, 0xc7, 0x00, 0x00, 0x01, 0x00, 0x85, 0x00, 0x00, + 0x02, 0xc6, 0x04, 0x3e, 0x00, 0x11, 0x00, 0x83, 0x40, 0x3b, 0x2f, 0x13, + 0x01, 0x10, 0x04, 0x01, 0x23, 0x04, 0x34, 0x04, 0x43, 0x04, 0x53, 0x04, + 0x66, 0x04, 0x74, 0x04, 0x06, 0x09, 0x11, 0x08, 0x09, 0x08, 0x09, 0x0d, + 0x13, 0x11, 0x09, 0x0d, 0x00, 0x03, 0x08, 0x01, 0x0b, 0x1c, 0x06, 0x07, + 0x01, 0x06, 0x00, 0x0a, 0x09, 0x28, 0x90, 0x08, 0x01, 0x08, 0x22, 0x20, + 0x13, 0x01, 0x13, 0x02, 0x22, 0x11, 0x25, 0x01, 0x00, 0xb8, 0xff, 0xc0, + 0x40, 0x15, 0x33, 0x36, 0x34, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, + 0xd0, 0x00, 0xe0, 0x00, 0x04, 0x00, 0x4e, 0x12, 0x47, 0xc4, 0x18, 0x2b, + 0x10, 0xf6, 0x5d, 0x71, 0x2b, 0x3c, 0xfd, 0xe4, 0x10, 0x5d, 0xf4, 0x72, + 0xe4, 0x00, 0x3f, 0x3f, 0x3f, 0xed, 0x11, 0x39, 0x39, 0x11, 0x39, 0x39, + 0x01, 0x11, 0x12, 0x39, 0x39, 0x00, 0x10, 0xc9, 0x87, 0x0e, 0x7d, 0xc4, + 0x31, 0x30, 0x00, 0x5d, 0x72, 0x01, 0x5d, 0x33, 0x11, 0x33, 0x15, 0x3e, + 0x01, 0x33, 0x32, 0x17, 0x07, 0x26, 0x23, 0x22, 0x06, 0x07, 0x06, 0x15, + 0x11, 0x85, 0xa2, 0x3e, 0x69, 0x3f, 0x5b, 0x5e, 0x3e, 0x42, 0x42, 0x3b, + 0x5e, 0x14, 0x1e, 0x04, 0x26, 0xa1, 0x71, 0x48, 0x3a, 0xa7, 0x27, 0x47, + 0x3f, 0x60, 0x72, 0xfd, 0xd4, 0x00, 0x00, 0x01, 0x00, 0x3f, 0xff, 0xe8, + 0x03, 0xb1, 0x04, 0x3e, 0x00, 0x30, 0x01, 0xd9, 0x40, 0x7b, 0x04, 0x22, + 0x14, 0x22, 0x3a, 0x09, 0x4a, 0x09, 0x44, 0x24, 0x56, 0x22, 0x65, 0x22, + 0x7c, 0x09, 0x8e, 0x09, 0x84, 0x24, 0xa6, 0x13, 0xab, 0x2c, 0xc2, 0x03, + 0x0d, 0x09, 0x17, 0x1a, 0x18, 0x17, 0x30, 0x4b, 0x2c, 0xd6, 0x17, 0x05, + 0x1b, 0x02, 0x55, 0x02, 0x02, 0x10, 0x32, 0x01, 0x0a, 0x18, 0x5c, 0x08, + 0x5c, 0x09, 0x5c, 0x0a, 0x5c, 0x0b, 0x5c, 0x0c, 0x5c, 0x0d, 0x6a, 0x08, + 0x6a, 0x09, 0x6a, 0x0a, 0x6a, 0x0b, 0x6a, 0x0c, 0x6a, 0x0d, 0xb4, 0x26, + 0xb4, 0x27, 0x0f, 0x27, 0x26, 0x24, 0x27, 0x24, 0x29, 0x36, 0x24, 0x5a, + 0x0a, 0x59, 0x0b, 0x64, 0x26, 0x64, 0x28, 0x74, 0x23, 0x74, 0x24, 0x80, + 0x24, 0x93, 0x0a, 0x9c, 0x0c, 0x92, 0x28, 0x97, 0x2c, 0x95, 0x30, 0xa4, + 0x0a, 0xa9, 0x0c, 0xa3, 0x27, 0xa4, 0x28, 0xb3, 0x26, 0xc5, 0x26, 0x16, + 0x1d, 0xb8, 0xff, 0xde, 0x40, 0x12, 0x1e, 0x39, 0x5a, 0x08, 0x27, 0x25, + 0x0c, 0x0a, 0x04, 0x1a, 0x20, 0x26, 0x15, 0x04, 0x0b, 0x2e, 0x1d, 0x1a, + 0xb8, 0x02, 0xaa, 0x40, 0x1c, 0x1f, 0x19, 0x3f, 0x19, 0x4f, 0x19, 0x5f, + 0x19, 0xaf, 0x19, 0xcf, 0x19, 0x06, 0x0f, 0x19, 0x1f, 0x19, 0x6f, 0x19, + 0xdf, 0x19, 0x04, 0x1f, 0x19, 0x8f, 0x19, 0x02, 0x19, 0xbb, 0x02, 0x55, + 0x00, 0x15, 0x00, 0x00, 0x02, 0xaa, 0x40, 0x10, 0x10, 0x01, 0x40, 0x01, + 0x02, 0x10, 0x01, 0xd0, 0x01, 0x02, 0x00, 0x01, 0x10, 0x01, 0x02, 0x01, + 0xb8, 0xff, 0xc0, 0xb3, 0x14, 0x16, 0x34, 0x01, 0xb8, 0xff, 0xc0, 0x40, + 0x1e, 0x0e, 0x11, 0x34, 0x01, 0x01, 0x2e, 0x5c, 0x1d, 0x6c, 0x1d, 0x02, + 0x1d, 0x1c, 0x15, 0x07, 0x04, 0x1c, 0x2e, 0x0b, 0x1f, 0x1a, 0x01, 0x1a, + 0x24, 0x19, 0x40, 0x13, 0x18, 0x34, 0x19, 0xb8, 0x02, 0x5b, 0xb2, 0x07, + 0x24, 0x2a, 0xb8, 0xff, 0xc0, 0xb7, 0x1c, 0x39, 0xd0, 0x2a, 0x01, 0x2a, + 0x1a, 0x32, 0xb8, 0xff, 0xc0, 0x40, 0x26, 0x27, 0x2a, 0x34, 0x60, 0x32, + 0xc0, 0x32, 0x02, 0x3f, 0x32, 0x80, 0x32, 0x02, 0x32, 0x10, 0x01, 0x01, + 0x01, 0x24, 0x00, 0x20, 0x24, 0x0f, 0x22, 0xdf, 0x00, 0x01, 0x3f, 0x00, + 0x4f, 0x00, 0x02, 0x00, 0x19, 0x31, 0x34, 0x37, 0x18, 0x2b, 0x4e, 0x10, + 0xf4, 0x5d, 0x71, 0x4d, 0xf4, 0xed, 0x10, 0xed, 0x72, 0x4e, 0x10, 0x5d, + 0x71, 0x2b, 0xf6, 0x71, 0x2b, 0x4d, 0xed, 0xf4, 0x2b, 0xed, 0x72, 0x00, + 0x3f, 0xed, 0x3f, 0xed, 0x71, 0x12, 0x39, 0x2f, 0x2b, 0x2b, 0x5d, 0x71, + 0x72, 0xe4, 0x10, 0xfd, 0x5d, 0x71, 0x72, 0xe4, 0x11, 0x12, 0x39, 0x11, + 0x12, 0x39, 0x01, 0x11, 0x12, 0x17, 0x39, 0x31, 0x30, 0x43, 0x79, 0x40, + 0x40, 0x27, 0x2d, 0x1e, 0x23, 0x05, 0x14, 0x2c, 0x26, 0x11, 0x10, 0x12, + 0x10, 0x13, 0x10, 0x03, 0x06, 0x22, 0x0d, 0x20, 0x1b, 0x00, 0x09, 0x28, + 0x07, 0x1b, 0x01, 0x05, 0x2d, 0x07, 0x1b, 0x01, 0x1e, 0x14, 0x20, 0x1b, + 0x00, 0x21, 0x0e, 0x23, 0x1b, 0x00, 0x22, 0x23, 0x0d, 0x0c, 0x08, 0x29, + 0x0a, 0x1b, 0x01, 0x28, 0x27, 0x09, 0x0a, 0x06, 0x2b, 0x04, 0x1b, 0x00, + 0x1f, 0x10, 0x1d, 0x1b, 0x01, 0x00, 0x2b, 0x2b, 0x10, 0x3c, 0x10, 0x3c, + 0x2b, 0x10, 0x3c, 0x10, 0x3c, 0x2b, 0x01, 0x2b, 0x2b, 0x2b, 0x2b, 0x2a, + 0x2b, 0x81, 0x81, 0x81, 0x00, 0x2b, 0x5d, 0x71, 0x01, 0x5d, 0x72, 0x71, + 0x5d, 0x13, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x26, + 0x27, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x37, 0x3e, 0x01, 0x33, 0x32, 0x1e, + 0x01, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, 0x14, 0x17, 0x16, + 0x17, 0x16, 0x17, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x01, 0x23, 0x22, 0x26, + 0x3f, 0xb2, 0x0f, 0x89, 0x7b, 0x7c, 0x78, 0x35, 0x25, 0x93, 0xc6, 0x99, + 0x4f, 0x41, 0x38, 0x2a, 0x91, 0x53, 0x7d, 0xbd, 0x5a, 0x11, 0xb0, 0x0c, + 0x73, 0x69, 0x7c, 0x6a, 0x16, 0x16, 0x2f, 0x1b, 0x84, 0xbf, 0x97, 0x56, + 0x69, 0xc6, 0x7d, 0xcf, 0xd9, 0x01, 0x3d, 0x1c, 0x6b, 0x72, 0x65, 0x44, + 0x3d, 0x23, 0x18, 0x25, 0x32, 0x49, 0x81, 0x4e, 0x47, 0x79, 0x28, 0x1f, + 0x2b, 0x48, 0x7b, 0x67, 0x18, 0x52, 0x5c, 0x52, 0x37, 0x23, 0x1c, 0x1d, + 0x13, 0x0a, 0x24, 0x33, 0x41, 0x7c, 0x5c, 0x5a, 0x9f, 0x57, 0xac, 0x00, + 0x00, 0x01, 0x00, 0x24, 0xff, 0xf2, 0x02, 0x2a, 0x05, 0x99, 0x00, 0x17, + 0x00, 0x80, 0xb9, 0x00, 0x0a, 0xff, 0xc0, 0xb3, 0x23, 0x26, 0x34, 0x09, + 0xb8, 0xff, 0xc0, 0x40, 0x41, 0x23, 0x26, 0x34, 0x80, 0x19, 0x01, 0x00, + 0x01, 0x0c, 0x0d, 0x0a, 0x01, 0x03, 0x00, 0x16, 0x10, 0x09, 0x2b, 0x0f, + 0x0a, 0x06, 0x16, 0x1c, 0x03, 0x0b, 0x0f, 0x10, 0x22, 0x00, 0x22, 0x01, + 0x0d, 0x12, 0x25, 0x0c, 0x01, 0xff, 0x07, 0x08, 0x45, 0x09, 0x45, 0x60, + 0x07, 0x70, 0x07, 0x80, 0x07, 0x90, 0x07, 0x04, 0x00, 0x07, 0x20, 0x07, + 0xa0, 0x07, 0xb0, 0x07, 0xc0, 0x07, 0xd0, 0x07, 0x06, 0x07, 0xba, 0x02, + 0x6a, 0x00, 0x18, 0x01, 0x36, 0xb1, 0x66, 0x18, 0x2b, 0x10, 0xf6, 0x5d, + 0x71, 0xf4, 0xe4, 0x10, 0xed, 0x3c, 0xfd, 0x3c, 0x10, 0xe4, 0xf4, 0x3c, + 0x00, 0x3f, 0xed, 0x3f, 0x3c, 0xfd, 0x3c, 0x11, 0x39, 0x12, 0x39, 0x11, + 0x33, 0x33, 0x10, 0xc9, 0x31, 0x30, 0x01, 0x5d, 0x2b, 0x2b, 0x25, 0x17, + 0x06, 0x23, 0x22, 0x2e, 0x01, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x37, + 0x11, 0x33, 0x15, 0x23, 0x11, 0x14, 0x1e, 0x01, 0x33, 0x32, 0x02, 0x10, + 0x1a, 0x4c, 0x3c, 0x62, 0x6c, 0x2c, 0x84, 0x84, 0xb3, 0xb5, 0xb5, 0x13, + 0x2b, 0x28, 0x1e, 0xa1, 0x9f, 0x10, 0x3e, 0x65, 0xa2, 0x02, 0x63, 0x8c, + 0x01, 0x07, 0x6c, 0xfe, 0x8d, 0x8c, 0xfd, 0x93, 0x4d, 0x2c, 0x1a, 0x00, + 0x00, 0x01, 0x00, 0x83, 0xff, 0xe8, 0x03, 0xe0, 0x04, 0x26, 0x00, 0x18, + 0x00, 0xbd, 0xb9, 0x00, 0x1a, 0xff, 0xc0, 0x40, 0x09, 0x15, 0x17, 0x34, + 0x02, 0x20, 0x13, 0x16, 0x34, 0x0f, 0xb8, 0xff, 0xf0, 0x40, 0x29, 0x12, + 0x14, 0x34, 0x2b, 0x13, 0x01, 0x24, 0x08, 0x13, 0x16, 0x0c, 0x01, 0x13, + 0x16, 0x0b, 0x06, 0x00, 0x0a, 0x11, 0x1c, 0x03, 0x0b, 0x00, 0x33, 0x16, + 0x25, 0x18, 0x17, 0x40, 0x33, 0x36, 0x34, 0xff, 0x17, 0x01, 0xc0, 0x17, + 0x01, 0x17, 0x4e, 0x1a, 0xb8, 0xff, 0xc0, 0x40, 0x15, 0x34, 0x36, 0x34, + 0xb0, 0x1a, 0xf0, 0x1a, 0x02, 0x70, 0x1a, 0xa0, 0x1a, 0xb0, 0x1a, 0xff, + 0x1a, 0x04, 0x1a, 0x0c, 0x25, 0x09, 0xb8, 0xff, 0xc0, 0x40, 0x15, 0x33, + 0x36, 0x34, 0xf0, 0x09, 0x01, 0x00, 0x09, 0x20, 0x09, 0xd0, 0x09, 0xe0, + 0x09, 0x04, 0x09, 0x4e, 0x19, 0x47, 0x50, 0x18, 0x2b, 0x10, 0xf6, 0x5d, + 0x71, 0x2b, 0xed, 0x10, 0x5d, 0x71, 0x2b, 0xf6, 0x5d, 0x71, 0x2b, 0x3c, + 0xfd, 0xe4, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x3c, 0x39, 0x39, 0x01, 0x11, + 0x12, 0x39, 0x31, 0x30, 0x43, 0x79, 0x40, 0x1a, 0x04, 0x10, 0x0e, 0x0d, + 0x0f, 0x0d, 0x02, 0x06, 0x07, 0x08, 0x06, 0x08, 0x05, 0x08, 0x03, 0x06, + 0x10, 0x04, 0x0c, 0x1b, 0x00, 0x0d, 0x08, 0x11, 0x1b, 0x00, 0x00, 0x2b, + 0x01, 0x2b, 0x2a, 0x2a, 0x81, 0x00, 0x5d, 0x01, 0x2b, 0x2b, 0x2b, 0x21, + 0x35, 0x06, 0x23, 0x22, 0x2e, 0x01, 0x27, 0x26, 0x35, 0x11, 0x33, 0x11, + 0x14, 0x17, 0x1e, 0x01, 0x33, 0x32, 0x3e, 0x01, 0x35, 0x11, 0x33, 0x11, + 0x03, 0x3f, 0x7c, 0xd5, 0x5e, 0xa3, 0x4f, 0x10, 0x0b, 0xb4, 0x0b, 0x11, + 0x6e, 0x51, 0x51, 0x8e, 0x3b, 0xb4, 0x9c, 0xb4, 0x48, 0x6d, 0x4f, 0x35, + 0x73, 0x02, 0x92, 0xfd, 0xb3, 0x8d, 0x31, 0x47, 0x51, 0x53, 0x8f, 0x88, + 0x02, 0x39, 0xfb, 0xda, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x03, 0xe8, + 0x04, 0x26, 0x00, 0x0a, 0x01, 0x5e, 0xb7, 0x35, 0x05, 0x01, 0x00, 0x22, + 0x11, 0x39, 0x0a, 0xb8, 0xff, 0xde, 0x40, 0x0d, 0x11, 0x39, 0x09, 0x16, + 0x12, 0x1c, 0x34, 0x08, 0x16, 0x12, 0x1c, 0x34, 0x02, 0xb8, 0xff, 0xea, + 0xb3, 0x12, 0x1c, 0x34, 0x01, 0xb8, 0xff, 0xea, 0xb3, 0x12, 0x1c, 0x34, + 0x0a, 0xb8, 0xff, 0xd8, 0x40, 0x09, 0x1e, 0x21, 0x34, 0x00, 0x28, 0x1e, + 0x21, 0x34, 0x0a, 0xb8, 0xff, 0xe8, 0x40, 0x09, 0x22, 0x25, 0x34, 0x00, + 0x16, 0x22, 0x25, 0x34, 0x0a, 0xb8, 0xff, 0xda, 0x40, 0xb5, 0x28, 0x2e, + 0x34, 0x00, 0x20, 0x28, 0x2e, 0x34, 0x0f, 0x0c, 0x29, 0x00, 0x28, 0x09, + 0x26, 0x0a, 0x39, 0x00, 0x35, 0x0a, 0x48, 0x00, 0x47, 0x0a, 0x56, 0x01, + 0x56, 0x02, 0x59, 0x08, 0x58, 0x09, 0x66, 0x01, 0x66, 0x02, 0x69, 0x08, + 0x69, 0x09, 0x78, 0x00, 0x77, 0x01, 0x77, 0x02, 0x79, 0x08, 0x78, 0x09, + 0x77, 0x0a, 0x87, 0x01, 0x87, 0x02, 0x86, 0x03, 0x89, 0x07, 0x88, 0x08, + 0x8a, 0x09, 0x9d, 0x00, 0x98, 0x09, 0x91, 0x0a, 0xac, 0x00, 0xa2, 0x0a, + 0xbd, 0x00, 0xb7, 0x07, 0xb1, 0x0a, 0xc9, 0x00, 0xc5, 0x0a, 0xda, 0x00, + 0xd5, 0x0a, 0xec, 0x00, 0xe3, 0x0a, 0xfb, 0x00, 0xf4, 0x0a, 0x2c, 0x0a, + 0x00, 0x05, 0x0a, 0x18, 0x00, 0x16, 0x0a, 0x28, 0x00, 0x26, 0x0a, 0x37, + 0x0a, 0x4f, 0x00, 0x40, 0x0a, 0x09, 0x05, 0x40, 0x12, 0x16, 0x34, 0x05, + 0x40, 0x0b, 0x0d, 0x34, 0x0a, 0x07, 0x08, 0x08, 0x25, 0x09, 0x0a, 0x14, + 0x09, 0x09, 0x0a, 0x00, 0x03, 0x02, 0x02, 0x25, 0x01, 0x00, 0x14, 0x01, + 0x01, 0x00, 0x05, 0x0a, 0x0a, 0x00, 0x0a, 0x09, 0x08, 0x08, 0x02, 0x02, + 0x01, 0x06, 0x07, 0x0a, 0x09, 0x03, 0x00, 0x01, 0x05, 0x2f, 0x0c, 0x01, + 0x0c, 0x22, 0x08, 0x40, 0x40, 0x40, 0x09, 0x80, 0x09, 0x02, 0x09, 0xb8, + 0x01, 0x1b, 0xb5, 0x40, 0x05, 0x80, 0x05, 0x02, 0x05, 0xb8, 0x01, 0x1b, + 0x40, 0x09, 0x20, 0x02, 0x40, 0x01, 0x22, 0x0b, 0xea, 0xd2, 0x18, 0x2b, + 0x10, 0xf6, 0xed, 0x1a, 0x19, 0xfd, 0x5d, 0xfd, 0x5d, 0x1a, 0x18, 0xed, + 0xe4, 0x5d, 0x11, 0x12, 0x39, 0x39, 0x12, 0x39, 0x39, 0x00, 0x3f, 0x3c, + 0x10, 0x3c, 0x10, 0x3c, 0x3f, 0x3c, 0x11, 0x39, 0x87, 0x05, 0x2e, 0x2b, + 0x87, 0x7d, 0xc4, 0x87, 0x2e, 0x18, 0x2b, 0x87, 0x7d, 0xc4, 0x31, 0x30, + 0x00, 0x2b, 0x2b, 0x01, 0x71, 0x5d, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x00, 0x5d, 0x21, 0x01, 0x33, 0x13, + 0x16, 0x17, 0x36, 0x37, 0x13, 0x33, 0x01, 0x01, 0xae, 0xfe, 0x6c, 0xbe, + 0xe4, 0x25, 0x1f, 0x18, 0x2b, 0xec, 0xb9, 0xfe, 0x6e, 0x04, 0x26, 0xfd, + 0x84, 0x67, 0x6f, 0x54, 0x76, 0x02, 0x88, 0xfb, 0xda, 0x00, 0x00, 0x01, + 0x00, 0x06, 0x00, 0x00, 0x05, 0xb7, 0x04, 0x26, 0x00, 0x12, 0x02, 0xb1, + 0x40, 0x10, 0x0f, 0x14, 0x01, 0x2a, 0x04, 0x29, 0x0a, 0x02, 0x4a, 0x11, + 0x5b, 0x11, 0x8e, 0x11, 0x03, 0x11, 0xb8, 0xff, 0xf0, 0x40, 0x09, 0x1f, + 0x21, 0x34, 0x10, 0x1c, 0x1d, 0x27, 0x34, 0x09, 0xb8, 0xff, 0xf0, 0x40, + 0xad, 0x1f, 0x24, 0x34, 0x04, 0x06, 0x0c, 0x09, 0x13, 0x06, 0x1b, 0x09, + 0x19, 0x12, 0x05, 0x04, 0x00, 0x04, 0x06, 0x0b, 0x09, 0x0b, 0x0e, 0x08, + 0x12, 0x10, 0x00, 0x13, 0x03, 0x14, 0x07, 0x1c, 0x08, 0x1b, 0x0b, 0x1d, + 0x0e, 0x24, 0x00, 0x25, 0x07, 0x2a, 0x08, 0x2b, 0x0e, 0x34, 0x00, 0x35, + 0x07, 0x3a, 0x08, 0x3b, 0x0e, 0x44, 0x03, 0x47, 0x06, 0x40, 0x07, 0x4d, + 0x08, 0x4b, 0x0b, 0x43, 0x0f, 0x47, 0x11, 0x4a, 0x12, 0x5b, 0x0f, 0x52, + 0x12, 0x6b, 0x07, 0x64, 0x08, 0x67, 0x12, 0x79, 0x06, 0x7a, 0x07, 0x74, + 0x08, 0xb9, 0x06, 0xba, 0x0f, 0xb6, 0x12, 0xf5, 0x06, 0xfb, 0x09, 0x28, + 0x0b, 0x11, 0x28, 0x00, 0x28, 0x0d, 0x27, 0x0e, 0x28, 0x0f, 0x27, 0x12, + 0x2f, 0x14, 0x38, 0x00, 0x37, 0x12, 0x77, 0x08, 0x86, 0x08, 0x98, 0x03, + 0x97, 0x0c, 0xa7, 0x01, 0xa8, 0x02, 0xa8, 0x0b, 0xa6, 0x0c, 0xb5, 0x00, + 0xb6, 0x06, 0xba, 0x0e, 0xc8, 0x04, 0xd6, 0x06, 0xd9, 0x09, 0xe8, 0x04, + 0xe8, 0x0f, 0xe7, 0x12, 0xf4, 0x06, 0xfa, 0x09, 0x1c, 0x12, 0x03, 0x05, + 0x05, 0x02, 0x06, 0x07, 0x07, 0x05, 0x09, 0x0a, 0x0a, 0x08, 0x0b, 0x0c, + 0x0c, 0x0a, 0x10, 0x11, 0x11, 0x0f, 0xb8, 0xff, 0x4b, 0xb3, 0x05, 0x00, + 0x12, 0x20, 0xb8, 0xff, 0x49, 0x40, 0x66, 0x0a, 0x0f, 0x0e, 0x20, 0xc3, + 0x11, 0x07, 0x08, 0x20, 0x07, 0x11, 0x12, 0x12, 0x2b, 0x05, 0x07, 0x14, + 0x05, 0x05, 0x07, 0x0e, 0x0a, 0x0c, 0x0c, 0x25, 0x0d, 0x0e, 0x14, 0x0d, + 0x0d, 0x0e, 0x08, 0x11, 0x0f, 0x0f, 0x2b, 0x0a, 0x08, 0x14, 0x0a, 0x0a, + 0x08, 0x00, 0x05, 0x02, 0x02, 0x25, 0x01, 0x00, 0x14, 0x01, 0x01, 0x00, + 0x00, 0x02, 0x01, 0x07, 0x12, 0x04, 0x08, 0x0f, 0x11, 0x0c, 0x0e, 0x0d, + 0x0a, 0x11, 0x0a, 0x04, 0x03, 0x12, 0x0d, 0x0c, 0x0c, 0x08, 0x08, 0x07, + 0x07, 0x02, 0x02, 0x01, 0x06, 0x12, 0x0f, 0x0f, 0x0e, 0x0e, 0x00, 0x0a, + 0x14, 0xf6, 0x10, 0x0d, 0x01, 0x60, 0x0d, 0x70, 0x0d, 0x80, 0x0d, 0x03, + 0x0d, 0xb8, 0x01, 0xa7, 0x40, 0x0a, 0x20, 0x4f, 0x0a, 0x01, 0x6f, 0x0a, + 0x7f, 0x0a, 0x02, 0x0a, 0xb8, 0x02, 0x55, 0x40, 0x09, 0x4f, 0x11, 0x01, + 0x6f, 0x11, 0x7f, 0x11, 0x02, 0x11, 0xb8, 0x02, 0x55, 0x40, 0x0b, 0x10, + 0x05, 0x01, 0x60, 0x05, 0x70, 0x05, 0x80, 0x05, 0x03, 0x05, 0xb8, 0x01, + 0xa7, 0xb5, 0x01, 0xf6, 0x13, 0xf6, 0x66, 0x18, 0x2b, 0x4e, 0x10, 0xf4, + 0x19, 0x4d, 0xf4, 0x5d, 0x5d, 0x18, 0xfd, 0x5d, 0x71, 0xfd, 0x5d, 0x71, + 0x1a, 0x19, 0xfd, 0x5d, 0x5d, 0x18, 0xe6, 0x00, 0x3f, 0x3c, 0x10, 0x3c, + 0x10, 0x3c, 0x3f, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x10, 0x3c, + 0x12, 0x17, 0x39, 0x01, 0x11, 0x12, 0x39, 0x39, 0x12, 0x39, 0x39, 0x11, + 0x39, 0x39, 0x12, 0x39, 0x39, 0x87, 0x4d, 0x2e, 0x2b, 0x87, 0x7d, 0xc4, + 0x87, 0x2e, 0x18, 0x2b, 0x87, 0x7d, 0xc4, 0x87, 0x2e, 0x18, 0x2b, 0x87, + 0x7d, 0xc4, 0x87, 0x2e, 0x18, 0x2b, 0x87, 0x7d, 0xc4, 0x2b, 0x2b, 0x2b, + 0x87, 0x0e, 0x10, 0xc4, 0x07, 0x0e, 0x10, 0x3c, 0x07, 0x0e, 0x10, 0x3c, + 0x87, 0x0e, 0x10, 0xc4, 0x87, 0x0e, 0x10, 0xc4, 0x4b, 0xb0, 0x1f, 0x53, + 0x58, 0xb4, 0x0d, 0x20, 0x0c, 0x20, 0x02, 0xbc, 0xff, 0xe0, 0x00, 0x01, + 0xff, 0xe0, 0x00, 0x0e, 0xff, 0xd0, 0xb4, 0x00, 0x30, 0x0f, 0x20, 0x12, + 0xb8, 0xff, 0xe0, 0x01, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x59, 0x4b, 0xb0, 0x34, 0x53, 0x58, 0xb9, 0x00, 0x08, 0xff, 0xd0, 0xb1, + 0x07, 0x30, 0x01, 0x38, 0x38, 0x59, 0x4b, 0xb0, 0x21, 0x53, 0x4b, 0xb0, + 0x33, 0x51, 0x5a, 0x58, 0xb9, 0x00, 0x08, 0xff, 0xe0, 0xb1, 0x07, 0x20, + 0x01, 0x38, 0x38, 0x59, 0x4b, 0xb0, 0x12, 0x53, 0x4b, 0xb0, 0x1e, 0x51, + 0x5a, 0x58, 0xb9, 0x00, 0x0e, 0xff, 0xd0, 0xb6, 0x0f, 0x20, 0x0d, 0x20, + 0x0c, 0x20, 0x08, 0xb8, 0xff, 0xd0, 0xb2, 0x07, 0x30, 0x12, 0xb8, 0xff, + 0xe0, 0xb2, 0x00, 0x38, 0x02, 0xba, 0xff, 0xe0, 0x00, 0x01, 0xff, 0xe0, + 0x01, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x59, + 0x4b, 0xb0, 0x12, 0x53, 0x4b, 0xb0, 0x17, 0x51, 0x5a, 0x58, 0xb9, 0x00, + 0x11, 0xff, 0xe0, 0xb3, 0x0a, 0x20, 0x04, 0x20, 0x00, 0x38, 0x38, 0x38, + 0x59, 0x31, 0x30, 0x01, 0x43, 0x5c, 0x58, 0xb9, 0x00, 0x0e, 0xff, 0xd4, + 0xb6, 0x12, 0x39, 0x00, 0x2c, 0x12, 0x39, 0x00, 0xb8, 0xff, 0xd4, 0xb1, + 0x13, 0x39, 0x2b, 0x2b, 0x2b, 0x59, 0x5d, 0x71, 0x72, 0x2b, 0x2b, 0x2b, + 0x00, 0x71, 0x5d, 0x01, 0x5d, 0x21, 0x01, 0x33, 0x13, 0x17, 0x36, 0x37, + 0x13, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x01, 0x23, 0x03, 0x27, 0x03, + 0x01, 0x4b, 0xfe, 0xbb, 0xba, 0xa9, 0x3f, 0x04, 0x33, 0xa9, 0xb9, 0x9f, + 0x35, 0x3d, 0xb6, 0xaf, 0xfe, 0xb4, 0xbb, 0xa9, 0x29, 0xd7, 0x04, 0x26, + 0xfd, 0x9b, 0xe4, 0x11, 0xca, 0x02, 0x6e, 0xfd, 0x98, 0xcb, 0xcd, 0x02, + 0x66, 0xfb, 0xda, 0x02, 0x7c, 0xb5, 0xfc, 0xcf, 0x00, 0x01, 0x00, 0x0f, + 0x00, 0x00, 0x03, 0xf1, 0x04, 0x26, 0x00, 0x10, 0x01, 0x77, 0xb7, 0x0f, + 0x12, 0x01, 0x0f, 0x22, 0x19, 0x39, 0x06, 0xb8, 0xff, 0xde, 0x40, 0xb6, + 0x19, 0x39, 0x5a, 0x0f, 0x96, 0x04, 0x96, 0x08, 0x99, 0x0e, 0x9a, 0x0f, + 0xc0, 0x05, 0xc0, 0x06, 0xc0, 0x07, 0xcb, 0x0f, 0x09, 0x0f, 0x40, 0x16, + 0x39, 0x1a, 0x03, 0x13, 0x09, 0x15, 0x0d, 0x1a, 0x10, 0x35, 0x01, 0x3a, + 0x0b, 0x81, 0x01, 0x8e, 0x0b, 0x08, 0x2f, 0x12, 0x57, 0x04, 0x59, 0x07, + 0x59, 0x0b, 0x58, 0x0e, 0x97, 0x01, 0x98, 0x0a, 0x98, 0x0b, 0xb7, 0x02, + 0xb8, 0x0c, 0xc8, 0x0b, 0xca, 0x0e, 0xcc, 0x10, 0xda, 0x03, 0xd5, 0x09, + 0xd1, 0x0d, 0xdb, 0x10, 0xe5, 0x0a, 0x12, 0x12, 0x06, 0x06, 0x03, 0x07, + 0x08, 0x09, 0x09, 0x01, 0x06, 0x06, 0x09, 0x05, 0x04, 0x03, 0x03, 0x0b, + 0x0f, 0x0f, 0x10, 0x0e, 0x0d, 0x0d, 0x01, 0x0f, 0x0f, 0x0d, 0x10, 0x0b, + 0x01, 0x00, 0x09, 0x02, 0x0d, 0x0b, 0x03, 0x0c, 0x10, 0x0a, 0x06, 0x0f, + 0x02, 0x0f, 0x0a, 0x10, 0xc6, 0x00, 0xc6, 0x09, 0x02, 0x10, 0x25, 0x00, + 0x09, 0x14, 0x00, 0x00, 0x09, 0x03, 0x02, 0x0d, 0xc6, 0x0d, 0x01, 0x0d, + 0x25, 0x0c, 0x03, 0x14, 0x0c, 0x0c, 0x03, 0x0a, 0x09, 0x09, 0x03, 0x03, + 0x02, 0x06, 0x10, 0x0d, 0x0d, 0x0c, 0x0c, 0x00, 0x0a, 0x4f, 0x12, 0x01, + 0x12, 0x49, 0x0d, 0x7e, 0x0c, 0x22, 0x0a, 0x0f, 0x61, 0x06, 0x09, 0x7e, + 0x40, 0x0a, 0xb8, 0x01, 0x1b, 0xb7, 0x40, 0x06, 0x50, 0x06, 0x80, 0x06, + 0x03, 0x06, 0xb8, 0x02, 0x43, 0x40, 0x0e, 0x20, 0x03, 0x7e, 0x02, 0x22, + 0x4f, 0x00, 0x01, 0x00, 0x49, 0x11, 0x7c, 0xc4, 0x18, 0x2b, 0x10, 0xf6, + 0x5d, 0xf4, 0xed, 0x1a, 0x19, 0xfd, 0x5d, 0xfd, 0x1a, 0x18, 0xed, 0x10, + 0xe5, 0x10, 0xf4, 0xed, 0xe6, 0x5d, 0x00, 0x3f, 0x3c, 0x10, 0x3c, 0x10, + 0x3c, 0x3f, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x87, 0x05, 0x2e, 0x2b, 0x5d, + 0x87, 0x7d, 0xc4, 0x87, 0x2e, 0x18, 0x2b, 0x5d, 0x7d, 0x10, 0xc4, 0x00, + 0x11, 0x12, 0x39, 0x39, 0x0f, 0x0f, 0x87, 0x08, 0xc4, 0x87, 0x0e, 0x10, + 0xc4, 0x08, 0xc4, 0x87, 0x0e, 0x10, 0xc4, 0xc4, 0x08, 0xc4, 0x07, 0x0e, + 0x10, 0x3c, 0x3c, 0x08, 0x3c, 0x31, 0x30, 0x01, 0x43, 0x5c, 0x58, 0xb4, + 0x0e, 0x18, 0x1d, 0x39, 0x0b, 0xb8, 0xff, 0xde, 0x40, 0x0b, 0x1d, 0x39, + 0x0c, 0x22, 0x17, 0x39, 0x03, 0x22, 0x17, 0x39, 0x0b, 0xb8, 0xff, 0xde, + 0xb2, 0x21, 0x39, 0x10, 0xb8, 0xff, 0xc0, 0x40, 0x0a, 0x15, 0x39, 0x01, + 0x22, 0x21, 0x39, 0x09, 0x40, 0x1c, 0x39, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x59, 0x5d, 0x71, 0x00, 0x2b, 0x5d, 0x2b, 0x2b, 0x01, + 0x5d, 0x33, 0x09, 0x01, 0x33, 0x17, 0x16, 0x17, 0x36, 0x3f, 0x01, 0x33, + 0x09, 0x01, 0x23, 0x03, 0x27, 0x01, 0x0f, 0x01, 0x84, 0xfe, 0x99, 0xe1, + 0xa3, 0x2e, 0x1c, 0x2c, 0x25, 0xb3, 0xd7, 0xfe, 0x91, 0x01, 0x8b, 0xdd, + 0xda, 0x3a, 0xfe, 0xe9, 0x02, 0x28, 0x01, 0xfe, 0xf9, 0x47, 0x30, 0x42, + 0x33, 0xfb, 0xfe, 0x0c, 0xfd, 0xce, 0x01, 0x4a, 0x59, 0xfe, 0x5d, 0x00, + 0x00, 0x01, 0x00, 0x21, 0xfe, 0x51, 0x03, 0xee, 0x04, 0x26, 0x00, 0x1a, + 0x01, 0x87, 0xb3, 0x0f, 0x1c, 0x01, 0x0f, 0xb8, 0xff, 0xde, 0x40, 0xa4, + 0x1c, 0x39, 0x28, 0x14, 0x56, 0x0f, 0xaf, 0x0a, 0x03, 0x40, 0x0d, 0x40, + 0x0f, 0x02, 0x0f, 0x20, 0x28, 0x30, 0x34, 0x10, 0x20, 0x28, 0x30, 0x34, + 0x07, 0x0c, 0x09, 0x12, 0x16, 0x0d, 0x18, 0x12, 0x27, 0x0b, 0x27, 0x0c, + 0x27, 0x0d, 0x36, 0x0c, 0x36, 0x0d, 0x35, 0x0e, 0x99, 0x11, 0x0b, 0x28, + 0x12, 0x28, 0x13, 0x48, 0x16, 0x59, 0x12, 0x59, 0x13, 0x59, 0x15, 0x69, + 0x12, 0x69, 0x13, 0x69, 0x15, 0x79, 0x06, 0x76, 0x0d, 0x79, 0x11, 0x7a, + 0x14, 0x7a, 0x15, 0x85, 0x0d, 0x8a, 0x11, 0x8c, 0x12, 0x8c, 0x13, 0x89, + 0x14, 0x98, 0x0a, 0xa8, 0x0b, 0xbc, 0x10, 0xbb, 0x11, 0xba, 0x14, 0xea, + 0x0a, 0xe7, 0x14, 0xf5, 0x0d, 0xfd, 0x10, 0xf9, 0x14, 0xff, 0x1c, 0x1e, + 0x12, 0x0f, 0x0f, 0x0c, 0x10, 0x11, 0x12, 0x12, 0x0a, 0x00, 0x03, 0x19, + 0x14, 0x13, 0x13, 0x25, 0x12, 0x0a, 0x14, 0x12, 0x12, 0x0a, 0x0f, 0x0c, + 0x0f, 0x11, 0x0c, 0x25, 0x0b, 0x0a, 0x14, 0x0b, 0x0b, 0x0a, 0x13, 0x12, + 0x12, 0x0c, 0x0c, 0x0b, 0x06, 0x03, 0x1c, 0x19, 0x0f, 0x00, 0x1c, 0x10, + 0x1c, 0x02, 0x2f, 0x1c, 0xbf, 0x1c, 0x02, 0x1c, 0xb8, 0x02, 0x3f, 0xb5, + 0x0f, 0x13, 0x40, 0x12, 0x40, 0x14, 0xb8, 0x02, 0x54, 0x40, 0x0b, 0x3f, + 0x12, 0x40, 0x12, 0x02, 0x5f, 0x12, 0xbf, 0x12, 0x02, 0x12, 0xb8, 0x01, + 0x42, 0xb6, 0x0f, 0x01, 0x22, 0x00, 0x45, 0x1b, 0x0a, 0xb8, 0x02, 0x54, + 0x40, 0x12, 0x0f, 0x20, 0x0b, 0x40, 0x40, 0x20, 0x0c, 0x30, 0x0c, 0x4f, + 0x0c, 0x03, 0x50, 0x0c, 0xff, 0x0c, 0x02, 0x0c, 0xb8, 0x01, 0x42, 0xb3, + 0x2f, 0x0f, 0x01, 0x0f, 0xb8, 0x02, 0x3f, 0xb4, 0x1b, 0x20, 0x7c, 0x66, + 0x18, 0x2b, 0x1a, 0x19, 0x10, 0xfd, 0x71, 0xf4, 0x5d, 0x71, 0x1a, 0x18, + 0xed, 0x1a, 0x19, 0x10, 0xed, 0x18, 0x10, 0xf4, 0xe4, 0x19, 0x10, 0xe4, + 0x5d, 0x71, 0xed, 0x1a, 0x18, 0x10, 0xed, 0x19, 0x10, 0xe4, 0x5d, 0x71, + 0x00, 0x18, 0x3f, 0xed, 0x3f, 0x3c, 0x10, 0x3c, 0x10, 0x3c, 0x87, 0x05, + 0x2e, 0x2b, 0x08, 0x7d, 0x10, 0xc4, 0x87, 0x05, 0x2e, 0x18, 0x2b, 0x0e, + 0x7d, 0x10, 0xc4, 0x00, 0x11, 0x12, 0x39, 0x87, 0x0e, 0x10, 0x3c, 0x3c, + 0x08, 0xc4, 0x4b, 0xb0, 0x0e, 0x53, 0x4b, 0xb0, 0x18, 0x51, 0x5a, 0x58, + 0xbb, 0x00, 0x0c, 0xff, 0xe8, 0x00, 0x0b, 0xff, 0xe8, 0x01, 0x38, 0x38, + 0x59, 0x31, 0x30, 0x01, 0x43, 0x5c, 0x58, 0xb9, 0x00, 0x14, 0xff, 0xde, + 0xb6, 0x37, 0x39, 0x0a, 0x22, 0x37, 0x39, 0x0e, 0xb8, 0xff, 0xe8, 0xb5, + 0x15, 0x39, 0x11, 0x22, 0x15, 0x39, 0x2b, 0x2b, 0x2b, 0x2b, 0x59, 0x5d, + 0x71, 0x2b, 0x2b, 0x00, 0x71, 0x5d, 0x2b, 0x01, 0x5d, 0x13, 0x27, 0x16, + 0x33, 0x32, 0x36, 0x37, 0x36, 0x37, 0x36, 0x37, 0x01, 0x33, 0x13, 0x16, + 0x17, 0x36, 0x37, 0x13, 0x33, 0x01, 0x06, 0x07, 0x0e, 0x01, 0x23, 0x22, + 0x7f, 0x14, 0x3b, 0x2c, 0x3c, 0x48, 0x17, 0x11, 0x26, 0x05, 0x0b, 0xfe, + 0x6d, 0xc2, 0xdd, 0x2b, 0x22, 0x1f, 0x2b, 0xe3, 0xb4, 0xfe, 0x6c, 0x41, + 0x24, 0x30, 0x7c, 0x56, 0x34, 0xfe, 0x67, 0xa9, 0x10, 0x28, 0x24, 0x1b, + 0x6b, 0x0f, 0x1d, 0x04, 0x28, 0xfd, 0x99, 0x75, 0x81, 0x7c, 0x76, 0x02, + 0x6b, 0xfb, 0xc8, 0xaf, 0x42, 0x59, 0x53, 0x00, 0x00, 0x01, 0x00, 0x28, + 0x00, 0x00, 0x03, 0xd4, 0x04, 0x26, 0x00, 0x0e, 0x01, 0x88, 0x40, 0x0d, + 0x12, 0xb8, 0x02, 0xc9, 0x08, 0x02, 0x12, 0x01, 0x32, 0x12, 0x17, 0x34, + 0x08, 0xb8, 0xff, 0xce, 0x40, 0x09, 0x12, 0x17, 0x34, 0x01, 0x3e, 0x1e, + 0x21, 0x34, 0x08, 0xb8, 0xff, 0xc2, 0x40, 0x4a, 0x1e, 0x21, 0x34, 0x29, + 0x02, 0x28, 0x09, 0x2f, 0x10, 0x39, 0x01, 0x39, 0x0a, 0x49, 0x01, 0x46, + 0x02, 0x46, 0x08, 0x49, 0x09, 0x4f, 0x10, 0x5c, 0x01, 0x54, 0x02, 0x54, + 0x08, 0x5a, 0x09, 0x50, 0x10, 0x6c, 0x01, 0x63, 0x02, 0x63, 0x08, 0x6a, + 0x09, 0x7b, 0x01, 0x74, 0x08, 0x7b, 0x09, 0x8b, 0x01, 0x85, 0x08, 0x89, + 0x09, 0xf9, 0x01, 0xf4, 0x02, 0x1b, 0x19, 0x08, 0x26, 0x01, 0x29, 0x08, + 0x2b, 0x09, 0x39, 0x08, 0xa5, 0x08, 0xd7, 0x01, 0x07, 0x10, 0xb8, 0xff, + 0xc0, 0xb7, 0x10, 0x15, 0x34, 0x02, 0x2c, 0x12, 0x39, 0x09, 0xb8, 0xff, + 0xd4, 0x40, 0x27, 0x12, 0x39, 0x01, 0x02, 0x3a, 0x09, 0x0a, 0x02, 0x08, + 0x0a, 0x0a, 0x25, 0x01, 0x02, 0x14, 0x01, 0x01, 0x02, 0x01, 0x0d, 0x0e, + 0x08, 0x06, 0x02, 0x61, 0x05, 0x2b, 0x07, 0x06, 0x06, 0x0a, 0x61, 0x0d, + 0x00, 0x0d, 0x2b, 0x0e, 0x0a, 0x02, 0xb8, 0x01, 0x0f, 0xb4, 0x08, 0x08, + 0x07, 0x05, 0x06, 0xb8, 0x02, 0x5b, 0x40, 0x2c, 0x00, 0x07, 0x22, 0x0d, + 0xa0, 0x0e, 0x01, 0x00, 0x0e, 0x40, 0x0e, 0x60, 0x0e, 0x80, 0x0e, 0xf0, + 0x0e, 0x05, 0x0e, 0x74, 0x00, 0x0a, 0x7e, 0x01, 0x01, 0xaf, 0x00, 0x01, + 0x4f, 0x00, 0x6f, 0x00, 0xff, 0x00, 0x03, 0x00, 0x19, 0x0f, 0x10, 0x74, + 0x21, 0x7c, 0xc4, 0x18, 0x2b, 0x2b, 0x4e, 0xf4, 0x5d, 0x71, 0x3c, 0x4d, + 0x10, 0xed, 0x10, 0xfd, 0x5d, 0x71, 0x3c, 0xe4, 0x10, 0xf4, 0x3c, 0x10, + 0x3c, 0x10, 0xfd, 0x00, 0x3f, 0xed, 0x3c, 0x10, 0xe5, 0x3f, 0x3c, 0xfd, + 0xe5, 0x11, 0x39, 0x11, 0x12, 0x39, 0x87, 0x05, 0x2e, 0x2b, 0x87, 0x7d, + 0xc4, 0x10, 0x0e, 0xc4, 0x2b, 0x31, 0x30, 0x01, 0x2b, 0x2b, 0x2b, 0x71, + 0x5d, 0x00, 0x2b, 0x2b, 0x2b, 0x2b, 0x43, 0x5c, 0x58, 0xb5, 0x29, 0x01, + 0x26, 0x08, 0x02, 0x01, 0xb8, 0xff, 0xce, 0x40, 0x09, 0x12, 0x17, 0x34, + 0x08, 0x32, 0x12, 0x17, 0x34, 0x01, 0xb8, 0xff, 0xc2, 0xb7, 0x1e, 0x21, + 0x34, 0x08, 0x3e, 0x1e, 0x21, 0x34, 0x00, 0x2b, 0x2b, 0x2b, 0x2b, 0x01, + 0x71, 0x59, 0x01, 0x5d, 0x43, 0x5c, 0x58, 0xb9, 0x00, 0x08, 0xff, 0xde, + 0xb2, 0x0f, 0x39, 0x09, 0xb8, 0xff, 0xde, 0xb2, 0x0f, 0x39, 0x09, 0xb8, + 0xff, 0xe8, 0xb7, 0x1b, 0x39, 0x09, 0x08, 0x16, 0x1b, 0x3d, 0x09, 0xb8, + 0xff, 0xf0, 0xb2, 0x17, 0x39, 0x09, 0xb8, 0xff, 0xf8, 0x40, 0x0a, 0x16, + 0x39, 0x02, 0x14, 0x16, 0x39, 0x02, 0x1a, 0x16, 0x39, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x59, 0x33, 0x35, 0x01, 0x06, 0x23, 0x21, + 0x35, 0x21, 0x15, 0x01, 0x07, 0x36, 0x33, 0x21, 0x15, 0x28, 0x02, 0xa4, + 0x73, 0x58, 0xfe, 0x4f, 0x03, 0x64, 0xfd, 0xc1, 0x6f, 0x79, 0x6a, 0x01, + 0xeb, 0x92, 0x03, 0x08, 0x06, 0x92, 0x77, 0xfd, 0x5e, 0x7b, 0x09, 0x9b, + 0x00, 0x01, 0x00, 0x39, 0xfe, 0x51, 0x02, 0x7c, 0x05, 0xd3, 0x00, 0x2a, + 0x00, 0x7b, 0x40, 0x4d, 0x47, 0x0f, 0x01, 0x28, 0x12, 0x0f, 0x11, 0x34, + 0x02, 0x12, 0x0f, 0x11, 0x34, 0x07, 0x18, 0x0b, 0x0e, 0x34, 0x25, 0x12, + 0x0b, 0x0e, 0x34, 0x16, 0x27, 0x16, 0x00, 0x29, 0x2a, 0x2a, 0x0c, 0x1f, + 0x25, 0x20, 0x13, 0x0d, 0x25, 0x0c, 0x11, 0x0d, 0x0c, 0x0c, 0x1f, 0x20, + 0xae, 0x1b, 0x12, 0x11, 0x25, 0x05, 0x19, 0x3a, 0x1b, 0x25, 0x26, 0x03, + 0x3a, 0x05, 0xae, 0x2a, 0x27, 0x3a, 0x26, 0xae, 0x2a, 0x2a, 0x5f, 0x00, + 0x8f, 0x00, 0x02, 0x00, 0x69, 0x2b, 0x70, 0x68, 0x18, 0x2b, 0x10, 0xf6, + 0x5d, 0x3c, 0x10, 0xf4, 0xe4, 0x10, 0xf4, 0xe4, 0x10, 0xfd, 0xe4, 0x10, + 0xfd, 0x3c, 0x10, 0xf4, 0x3c, 0x3c, 0x10, 0x3c, 0x00, 0x3f, 0xed, 0x3f, + 0xed, 0x12, 0x39, 0x2f, 0xed, 0x39, 0x01, 0x12, 0x39, 0x31, 0x30, 0x2b, + 0x2b, 0x2b, 0x2b, 0x01, 0x71, 0x13, 0x3e, 0x02, 0x12, 0x37, 0x3e, 0x02, + 0x37, 0x36, 0x3b, 0x01, 0x15, 0x23, 0x22, 0x06, 0x15, 0x10, 0x07, 0x0e, + 0x01, 0x07, 0x1e, 0x01, 0x15, 0x14, 0x17, 0x1e, 0x01, 0x3b, 0x01, 0x15, + 0x23, 0x22, 0x27, 0x2e, 0x02, 0x02, 0x2e, 0x01, 0x27, 0x39, 0x4d, 0x61, + 0x20, 0x02, 0x05, 0x09, 0x31, 0x48, 0x38, 0x26, 0x56, 0x38, 0x1f, 0x68, + 0x44, 0x0b, 0x12, 0x57, 0x5d, 0x6e, 0x63, 0x04, 0x08, 0x41, 0x5f, 0x1f, + 0x38, 0x62, 0x2c, 0x40, 0x54, 0x19, 0x02, 0x20, 0x61, 0x4d, 0x02, 0x64, + 0x02, 0x4f, 0x8a, 0x01, 0x4e, 0x35, 0x54, 0x66, 0x3d, 0x10, 0x0a, 0x9d, + 0x4b, 0x82, 0xfe, 0xfa, 0x45, 0x6b, 0x74, 0x2d, 0x2e, 0xbd, 0xd7, 0xc3, + 0x25, 0x44, 0x36, 0x9d, 0x10, 0x17, 0x67, 0x9e, 0x01, 0x68, 0x8a, 0x50, + 0x02, 0x00, 0x00, 0x01, 0x00, 0xbc, 0xfe, 0x51, 0x01, 0x59, 0x05, 0xd3, + 0x00, 0x03, 0x00, 0x32, 0xb9, 0x00, 0x03, 0x01, 0x7e, 0x40, 0x18, 0x01, + 0x00, 0x05, 0xa1, 0x02, 0x02, 0x9f, 0x03, 0xaf, 0x03, 0x02, 0x03, 0x76, + 0x00, 0x00, 0x20, 0x01, 0x01, 0x01, 0xa1, 0x04, 0xa1, 0x98, 0x18, 0x2b, + 0x4e, 0x10, 0xf4, 0x5d, 0x3c, 0x4d, 0x10, 0xfd, 0x5d, 0x3c, 0x10, 0xee, + 0x00, 0x3f, 0x4d, 0xed, 0x31, 0x30, 0x13, 0x11, 0x33, 0x11, 0xbc, 0x9d, + 0xfe, 0x51, 0x07, 0x82, 0xf8, 0x7e, 0x00, 0x01, 0x00, 0x2f, 0xfe, 0x51, + 0x02, 0x72, 0x05, 0xd3, 0x00, 0x2a, 0x00, 0x81, 0xb9, 0x00, 0x03, 0xff, + 0xee, 0xb3, 0x0f, 0x11, 0x34, 0x29, 0xb8, 0xff, 0xee, 0xb3, 0x0f, 0x11, + 0x34, 0x26, 0xb8, 0xff, 0xe8, 0xb3, 0x0b, 0x0e, 0x34, 0x08, 0xb8, 0xff, + 0xee, 0x40, 0x39, 0x0b, 0x0e, 0x34, 0x17, 0x28, 0x17, 0x00, 0x29, 0x01, + 0x01, 0x0d, 0x20, 0x25, 0x21, 0x11, 0x0e, 0x25, 0x0d, 0x13, 0x21, 0x20, + 0x20, 0x0e, 0x0d, 0xae, 0x12, 0x1a, 0x3a, 0x1c, 0x25, 0x27, 0x14, 0x3a, + 0x12, 0x25, 0x06, 0x27, 0x3a, 0x28, 0xae, 0x01, 0x04, 0x3a, 0x06, 0xae, + 0x00, 0x50, 0x01, 0x80, 0x01, 0x02, 0x01, 0x69, 0x2c, 0x9b, 0x8d, 0x18, + 0x2b, 0x10, 0xf4, 0x5d, 0x3c, 0xf4, 0xe4, 0x10, 0xf4, 0xe4, 0x10, 0xfd, + 0xe4, 0x10, 0xfd, 0xe4, 0x10, 0xf4, 0x3c, 0x3c, 0x10, 0x3c, 0x00, 0x3f, + 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x39, 0x01, 0x11, 0x39, 0x31, + 0x30, 0x2b, 0x2b, 0x2b, 0x2b, 0x01, 0x15, 0x0e, 0x02, 0x02, 0x07, 0x0e, + 0x02, 0x07, 0x06, 0x2b, 0x01, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x37, + 0x3e, 0x01, 0x37, 0x2e, 0x01, 0x35, 0x34, 0x27, 0x2e, 0x01, 0x2b, 0x01, + 0x35, 0x33, 0x32, 0x17, 0x1e, 0x02, 0x12, 0x1e, 0x01, 0x02, 0x72, 0x4d, + 0x61, 0x20, 0x02, 0x05, 0x09, 0x31, 0x48, 0x38, 0x26, 0x56, 0x38, 0x1f, + 0x68, 0x44, 0x09, 0x10, 0x60, 0x58, 0x73, 0x5e, 0x05, 0x07, 0x41, 0x5f, + 0x1f, 0x38, 0x62, 0x2c, 0x40, 0x54, 0x19, 0x02, 0x20, 0x61, 0x02, 0x64, + 0xa3, 0x02, 0x50, 0x89, 0xfe, 0xb2, 0x35, 0x55, 0x65, 0x3d, 0x10, 0x0b, + 0x9d, 0x4b, 0x83, 0xfa, 0x43, 0x6f, 0x85, 0x25, 0x37, 0xb5, 0xd7, 0xc3, + 0x26, 0x43, 0x35, 0x9d, 0x10, 0x16, 0x68, 0x9e, 0xfe, 0x98, 0x89, 0x50, + 0x00, 0x01, 0x00, 0x57, 0x02, 0x2d, 0x04, 0x56, 0x03, 0x75, 0x00, 0x16, + 0x00, 0x55, 0x40, 0x14, 0x0b, 0x0b, 0x04, 0x16, 0x1b, 0x0b, 0x14, 0x16, + 0x04, 0x0d, 0x20, 0x2b, 0x0c, 0x3b, 0x0c, 0x02, 0x0c, 0x01, 0x20, 0x00, + 0xb8, 0xff, 0xe0, 0x40, 0x0e, 0x0b, 0x0e, 0x34, 0x00, 0x10, 0x20, 0x09, + 0xd4, 0x0c, 0x00, 0xd4, 0x14, 0x20, 0x03, 0xb8, 0x02, 0x58, 0x40, 0x0c, + 0x0c, 0x0d, 0x0c, 0x1a, 0x18, 0x01, 0x00, 0x19, 0x17, 0x71, 0x8c, 0x18, + 0x2b, 0x4e, 0x10, 0xf4, 0x3c, 0x10, 0xf6, 0x3c, 0x00, 0x2f, 0x4d, 0xf4, + 0xfd, 0xe4, 0x10, 0xf4, 0xed, 0x10, 0x2b, 0xed, 0x10, 0x5d, 0xed, 0x31, + 0x30, 0x00, 0x5d, 0x13, 0x35, 0x36, 0x33, 0x32, 0x16, 0x17, 0x1e, 0x01, + 0x33, 0x32, 0x36, 0x37, 0x15, 0x0e, 0x01, 0x23, 0x22, 0x2e, 0x01, 0x23, + 0x22, 0x06, 0x57, 0x6a, 0xac, 0x3c, 0x84, 0x7a, 0x45, 0x45, 0x23, 0x41, + 0x8b, 0x36, 0x40, 0x83, 0x52, 0x3c, 0x6d, 0xed, 0x4f, 0x40, 0x71, 0x02, + 0x2d, 0xcd, 0x78, 0x23, 0x34, 0x1d, 0x12, 0x4e, 0x3b, 0xd4, 0x3c, 0x36, + 0x1c, 0x6a, 0x37, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, + 0x98, 0x16, 0xa9, 0x36, 0x5f, 0x0f, 0x3c, 0xf5, 0x00, 0x19, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa2, 0xe3, 0x27, 0x2a, 0x00, 0x00, 0x00, 0x00, + 0xb0, 0xd9, 0x61, 0x28, 0xff, 0xa2, 0xfe, 0x51, 0x07, 0xd5, 0x06, 0x41, + 0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x07, 0x3e, 0xfe, 0x4e, 0x00, 0x43, 0x08, 0x1f, + 0xff, 0xa2, 0xff, 0xb9, 0x07, 0xd5, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, + 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x39, 0x00, 0x00, + 0x02, 0x39, 0x00, 0x00, 0x02, 0x39, 0x00, 0xb0, 0x02, 0xd7, 0x00, 0x5e, + 0x04, 0x73, 0x00, 0x15, 0x04, 0x73, 0x00, 0x49, 0x07, 0x1d, 0x00, 0x77, + 0x05, 0x56, 0x00, 0x58, 0x01, 0x87, 0x00, 0x5a, 0x02, 0xaa, 0x00, 0x7c, + 0x02, 0xaa, 0x00, 0x7c, 0x03, 0x1d, 0x00, 0x40, 0x04, 0xac, 0x00, 0x72, + 0x02, 0x39, 0x00, 0xaa, 0x02, 0xaa, 0x00, 0x41, 0x02, 0x39, 0x00, 0xba, + 0x02, 0x39, 0x00, 0x00, 0x04, 0x73, 0x00, 0x55, 0x04, 0x73, 0x00, 0xdf, + 0x04, 0x73, 0x00, 0x3c, 0x04, 0x73, 0x00, 0x56, 0x04, 0x73, 0x00, 0x1a, + 0x04, 0x73, 0x00, 0x55, 0x04, 0x73, 0x00, 0x4d, 0x04, 0x73, 0x00, 0x61, + 0x04, 0x73, 0x00, 0x53, 0x04, 0x73, 0x00, 0x55, 0x02, 0x39, 0x00, 0xb9, + 0x02, 0x39, 0x00, 0xaa, 0x04, 0xac, 0x00, 0x70, 0x04, 0xac, 0x00, 0x72, + 0x04, 0xac, 0x00, 0x70, 0x04, 0x73, 0x00, 0x5a, 0x08, 0x1f, 0x00, 0x6f, + 0x05, 0x56, 0xff, 0xfd, 0x05, 0x56, 0x00, 0x96, 0x05, 0xc7, 0x00, 0x66, + 0x05, 0xc7, 0x00, 0x9e, 0x05, 0x56, 0x00, 0xa2, 0x04, 0xe3, 0x00, 0xa8, + 0x06, 0x39, 0x00, 0x6d, 0x05, 0xc7, 0x00, 0xa4, 0x02, 0x39, 0x00, 0xbf, + 0x04, 0x00, 0x00, 0x37, 0x05, 0x56, 0x00, 0x96, 0x04, 0x73, 0x00, 0x96, + 0x06, 0xaa, 0x00, 0x98, 0x05, 0xc7, 0x00, 0x9c, 0x06, 0x39, 0x00, 0x63, + 0x05, 0x56, 0x00, 0x9e, 0x06, 0x39, 0x00, 0x58, 0x05, 0xc7, 0x00, 0xa1, + 0x05, 0x56, 0x00, 0x5c, 0x04, 0xe3, 0x00, 0x30, 0x05, 0xc7, 0x00, 0xa1, + 0x05, 0x56, 0x00, 0x09, 0x07, 0x8d, 0x00, 0x19, 0x05, 0x56, 0x00, 0x09, + 0x05, 0x56, 0x00, 0x06, 0x04, 0xe3, 0x00, 0x29, 0x02, 0x39, 0x00, 0x8b, + 0x02, 0x39, 0x00, 0x00, 0x02, 0x39, 0x00, 0x27, 0x03, 0xc1, 0x00, 0x36, + 0x04, 0x73, 0xff, 0xe1, 0x02, 0xaa, 0x00, 0x59, 0x04, 0x73, 0x00, 0x4a, + 0x04, 0x73, 0x00, 0x86, 0x04, 0x00, 0x00, 0x50, 0x04, 0x73, 0x00, 0x46, + 0x04, 0x73, 0x00, 0x4b, 0x02, 0x39, 0x00, 0x13, 0x04, 0x73, 0x00, 0x42, + 0x04, 0x73, 0x00, 0x87, 0x01, 0xc7, 0x00, 0x88, 0x01, 0xc7, 0xff, 0xa2, + 0x04, 0x00, 0x00, 0x88, 0x01, 0xc7, 0x00, 0x83, 0x06, 0xaa, 0x00, 0x87, + 0x04, 0x73, 0x00, 0x87, 0x04, 0x73, 0x00, 0x44, 0x04, 0x73, 0x00, 0x87, + 0x04, 0x73, 0x00, 0x48, 0x02, 0xaa, 0x00, 0x85, 0x04, 0x00, 0x00, 0x3f, + 0x02, 0x39, 0x00, 0x24, 0x04, 0x73, 0x00, 0x83, 0x04, 0x00, 0x00, 0x1a, + 0x05, 0xc7, 0x00, 0x06, 0x04, 0x00, 0x00, 0x0f, 0x04, 0x00, 0x00, 0x21, + 0x04, 0x00, 0x00, 0x28, 0x02, 0xac, 0x00, 0x39, 0x02, 0x14, 0x00, 0xbc, + 0x02, 0xac, 0x00, 0x2f, 0x04, 0xac, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6c, + 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x01, 0x9a, + 0x00, 0x00, 0x03, 0x3c, 0x00, 0x00, 0x05, 0xc2, 0x00, 0x00, 0x07, 0x6a, + 0x00, 0x00, 0x09, 0x54, 0x00, 0x00, 0x09, 0x9a, 0x00, 0x00, 0x0a, 0x1a, + 0x00, 0x00, 0x0a, 0x98, 0x00, 0x00, 0x0b, 0x78, 0x00, 0x00, 0x0b, 0xe0, + 0x00, 0x00, 0x0c, 0x58, 0x00, 0x00, 0x0c, 0x9e, 0x00, 0x00, 0x0c, 0xda, + 0x00, 0x00, 0x0d, 0x4a, 0x00, 0x00, 0x0e, 0x66, 0x00, 0x00, 0x0f, 0x06, + 0x00, 0x00, 0x10, 0x50, 0x00, 0x00, 0x11, 0xa4, 0x00, 0x00, 0x12, 0xd2, + 0x00, 0x00, 0x14, 0x20, 0x00, 0x00, 0x15, 0x5a, 0x00, 0x00, 0x16, 0x06, + 0x00, 0x00, 0x17, 0x78, 0x00, 0x00, 0x18, 0xbc, 0x00, 0x00, 0x19, 0x18, + 0x00, 0x00, 0x19, 0xd6, 0x00, 0x00, 0x1a, 0x58, 0x00, 0x00, 0x1a, 0xc8, + 0x00, 0x00, 0x1b, 0x4e, 0x00, 0x00, 0x1c, 0x40, 0x00, 0x00, 0x1e, 0x40, + 0x00, 0x00, 0x1e, 0x82, 0x00, 0x00, 0x1f, 0x88, 0x00, 0x00, 0x20, 0xa6, + 0x00, 0x00, 0x21, 0x8e, 0x00, 0x00, 0x22, 0x18, 0x00, 0x00, 0x22, 0x8c, + 0x00, 0x00, 0x23, 0xe2, 0x00, 0x00, 0x24, 0x78, 0x00, 0x00, 0x25, 0x24, + 0x00, 0x00, 0x25, 0xb0, 0x00, 0x00, 0x27, 0x6e, 0x00, 0x00, 0x27, 0xbe, + 0x00, 0x00, 0x29, 0x7a, 0x00, 0x00, 0x2a, 0x90, 0x00, 0x00, 0x2b, 0x7a, + 0x00, 0x00, 0x2c, 0x24, 0x00, 0x00, 0x2d, 0xc2, 0x00, 0x00, 0x2f, 0x7e, + 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0x31, 0x84, 0x00, 0x00, 0x32, 0x40, + 0x00, 0x00, 0x33, 0x6a, 0x00, 0x00, 0x35, 0x5a, 0x00, 0x00, 0x38, 0x08, + 0x00, 0x00, 0x39, 0x78, 0x00, 0x00, 0x3a, 0x92, 0x00, 0x00, 0x3a, 0xee, + 0x00, 0x00, 0x3b, 0x58, 0x00, 0x00, 0x3b, 0xb0, 0x00, 0x00, 0x3c, 0x38, + 0x00, 0x00, 0x3c, 0x6c, 0x00, 0x00, 0x3c, 0xe8, 0x00, 0x00, 0x3e, 0xaa, + 0x00, 0x00, 0x3f, 0xde, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00, 0x42, 0x38, + 0x00, 0x00, 0x43, 0x82, 0x00, 0x00, 0x44, 0x7c, 0x00, 0x00, 0x45, 0xec, + 0x00, 0x00, 0x46, 0xe0, 0x00, 0x00, 0x47, 0x84, 0x00, 0x00, 0x48, 0x60, + 0x00, 0x00, 0x4a, 0x62, 0x00, 0x00, 0x4b, 0x06, 0x00, 0x00, 0x4c, 0x34, + 0x00, 0x00, 0x4d, 0x48, 0x00, 0x00, 0x4e, 0x60, 0x00, 0x00, 0x4f, 0x90, + 0x00, 0x00, 0x50, 0xae, 0x00, 0x00, 0x51, 0x6e, 0x00, 0x00, 0x53, 0xd8, + 0x00, 0x00, 0x54, 0xa4, 0x00, 0x00, 0x55, 0xb0, 0x00, 0x00, 0x57, 0x42, + 0x00, 0x00, 0x5a, 0x40, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0xe8, + 0x00, 0x00, 0x5f, 0xa8, 0x00, 0x00, 0x60, 0xa6, 0x00, 0x00, 0x60, 0xf2, + 0x00, 0x00, 0x61, 0xf4, 0x00, 0x00, 0x62, 0x94, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x02, 0x54, 0x00, 0x01, 0x00, 0x61, 0x01, 0x80, 0x00, 0x06, + 0x00, 0xc6, 0x00, 0x03, 0x00, 0x24, 0xff, 0x8f, 0x00, 0x03, 0x00, 0x37, + 0xff, 0xdb, 0x00, 0x03, 0x00, 0x3c, 0xff, 0xdb, 0x00, 0x14, 0x00, 0x14, + 0xff, 0x68, 0x00, 0x24, 0x00, 0x03, 0xff, 0x8f, 0x00, 0x24, 0x00, 0x37, + 0xff, 0x68, 0x00, 0x24, 0x00, 0x39, 0xff, 0x68, 0x00, 0x24, 0x00, 0x3a, + 0xff, 0xb4, 0x00, 0x24, 0x00, 0x3c, 0xff, 0x68, 0x00, 0x24, 0x00, 0x59, + 0xff, 0xdb, 0x00, 0x24, 0x00, 0x5a, 0xff, 0xdb, 0x00, 0x24, 0x00, 0x5c, + 0xff, 0xdb, 0x00, 0x29, 0x00, 0x0f, 0xff, 0x1d, 0x00, 0x29, 0x00, 0x11, + 0xff, 0x1d, 0x00, 0x29, 0x00, 0x24, 0xff, 0x8f, 0x00, 0x2f, 0x00, 0x03, + 0xff, 0xb4, 0x00, 0x2f, 0x00, 0x37, 0xff, 0x68, 0x00, 0x2f, 0x00, 0x39, + 0xff, 0x68, 0x00, 0x2f, 0x00, 0x3a, 0xff, 0x68, 0x00, 0x2f, 0x00, 0x3c, + 0xff, 0x68, 0x00, 0x2f, 0x00, 0x5c, 0xff, 0xb4, 0x00, 0x33, 0x00, 0x03, + 0xff, 0xdb, 0x00, 0x33, 0x00, 0x0f, 0xfe, 0xf8, 0x00, 0x33, 0x00, 0x11, + 0xfe, 0xf8, 0x00, 0x33, 0x00, 0x24, 0xff, 0x68, 0x00, 0x35, 0x00, 0x37, + 0xff, 0xdb, 0x00, 0x35, 0x00, 0x39, 0xff, 0xdb, 0x00, 0x35, 0x00, 0x3a, + 0xff, 0xdb, 0x00, 0x35, 0x00, 0x3c, 0xff, 0xdb, 0x00, 0x37, 0x00, 0x03, + 0xff, 0xdb, 0x00, 0x37, 0x00, 0x0f, 0xff, 0x1d, 0x00, 0x37, 0x00, 0x10, + 0xff, 0x8f, 0x00, 0x37, 0x00, 0x11, 0xff, 0x1d, 0x00, 0x37, 0x00, 0x1d, + 0xff, 0x1d, 0x00, 0x37, 0x00, 0x1e, 0xff, 0x1d, 0x00, 0x37, 0x00, 0x24, + 0xff, 0x68, 0x00, 0x37, 0x00, 0x32, 0xff, 0xdb, 0x00, 0x37, 0x00, 0x44, + 0xff, 0x1d, 0x00, 0x37, 0x00, 0x46, 0xff, 0x1d, 0x00, 0x37, 0x00, 0x48, + 0xff, 0x1d, 0x00, 0x37, 0x00, 0x4c, 0xff, 0xb4, 0x00, 0x37, 0x00, 0x52, + 0xff, 0x1d, 0x00, 0x37, 0x00, 0x55, 0xff, 0xb4, 0x00, 0x37, 0x00, 0x56, + 0xff, 0x1d, 0x00, 0x37, 0x00, 0x58, 0xff, 0xb4, 0x00, 0x37, 0x00, 0x5a, + 0xff, 0x8f, 0x00, 0x37, 0x00, 0x5c, 0xff, 0x8f, 0x00, 0x39, 0x00, 0x0f, + 0xff, 0x44, 0x00, 0x39, 0x00, 0x10, 0xff, 0x8f, 0x00, 0x39, 0x00, 0x11, + 0xff, 0x44, 0x00, 0x39, 0x00, 0x1d, 0xff, 0xb4, 0x00, 0x39, 0x00, 0x1e, + 0xff, 0xb4, 0x00, 0x39, 0x00, 0x24, 0xff, 0x68, 0x00, 0x39, 0x00, 0x44, + 0xff, 0x68, 0x00, 0x39, 0x00, 0x48, 0xff, 0x8f, 0x00, 0x39, 0x00, 0x4c, + 0xff, 0xdb, 0x00, 0x39, 0x00, 0x52, 0xff, 0x8f, 0x00, 0x39, 0x00, 0x55, + 0xff, 0xb4, 0x00, 0x39, 0x00, 0x58, 0xff, 0xb4, 0x00, 0x39, 0x00, 0x5c, + 0xff, 0xb4, 0x00, 0x3a, 0x00, 0x0f, 0xff, 0x8f, 0x00, 0x3a, 0x00, 0x10, + 0xff, 0xdb, 0x00, 0x3a, 0x00, 0x11, 0xff, 0x8f, 0x00, 0x3a, 0x00, 0x1d, + 0xff, 0xdb, 0x00, 0x3a, 0x00, 0x1e, 0xff, 0xdb, 0x00, 0x3a, 0x00, 0x24, + 0xff, 0xb4, 0x00, 0x3a, 0x00, 0x44, 0xff, 0xb4, 0x00, 0x3a, 0x00, 0x48, + 0xff, 0xdb, 0x00, 0x3a, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x52, + 0xff, 0xdb, 0x00, 0x3a, 0x00, 0x55, 0xff, 0xdb, 0x00, 0x3a, 0x00, 0x58, + 0xff, 0xdb, 0x00, 0x3a, 0x00, 0x5c, 0xff, 0xee, 0x00, 0x3c, 0x00, 0x03, + 0xff, 0xdb, 0x00, 0x3c, 0x00, 0x0f, 0xfe, 0xf8, 0x00, 0x3c, 0x00, 0x10, + 0xff, 0x44, 0x00, 0x3c, 0x00, 0x11, 0xfe, 0xf8, 0x00, 0x3c, 0x00, 0x1d, + 0xff, 0x8f, 0x00, 0x3c, 0x00, 0x1e, 0xff, 0x7b, 0x00, 0x3c, 0x00, 0x24, + 0xff, 0x68, 0x00, 0x3c, 0x00, 0x44, 0xff, 0x68, 0x00, 0x3c, 0x00, 0x48, + 0xff, 0x44, 0x00, 0x3c, 0x00, 0x4c, 0xff, 0xb4, 0x00, 0x3c, 0x00, 0x52, + 0xff, 0x44, 0x00, 0x3c, 0x00, 0x53, 0xff, 0x68, 0x00, 0x3c, 0x00, 0x54, + 0xff, 0x44, 0x00, 0x3c, 0x00, 0x58, 0xff, 0x8f, 0x00, 0x3c, 0x00, 0x59, + 0xff, 0x8f, 0x00, 0x49, 0x00, 0x49, 0xff, 0xdb, 0x00, 0x55, 0x00, 0x0f, + 0xff, 0x8f, 0x00, 0x55, 0x00, 0x11, 0xff, 0x8f, 0x00, 0x59, 0x00, 0x0f, + 0xff, 0x68, 0x00, 0x59, 0x00, 0x11, 0xff, 0x68, 0x00, 0x5a, 0x00, 0x0f, + 0xff, 0x8f, 0x00, 0x5a, 0x00, 0x11, 0xff, 0x8f, 0x00, 0x5c, 0x00, 0x0f, + 0xff, 0x68, 0x00, 0x5c, 0x00, 0x11, 0xff, 0x68, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x62, 0x00, 0x58, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x10, 0x00, 0x16, 0x00, 0x42, 0x00, 0x00, 0x02, 0xb1, 0x08, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, 0x05, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x2a, 0x41, 0x72, + 0x69, 0x61, 0x6c, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x72, + 0x69, 0x61, 0x6c, 0x00, 0x00, 0x41, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, + 0x00, 0x6c, 0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x75, 0x00, 0x6c, + 0x00, 0x61, 0x00, 0x72, 0x00, 0x41, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, + 0x00, 0x6c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x27, 0x00, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x62, 0x00, 0x00, 0x01, 0x02, 0x01, 0x03, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, + 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, + 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, + 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, + 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, + 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, + 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, + 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, + 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, + 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, + 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, + 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, + 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, + 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, + 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, + 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x05, 0x2e, 0x6e, 0x75, 0x6c, 0x6c, + 0x10, 0x6e, 0x6f, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x00, 0x00, 0x00, 0x05, 0xba, 0x00, 0x19, + 0x05, 0xba, 0x00, 0x1a, 0x05, 0xa7, 0x00, 0x19, 0x04, 0x26, 0x00, 0x18, + 0x00, 0x00, 0xff, 0xe7, 0x00, 0x00, 0xff, 0xe8, 0x00, 0x00, 0xff, 0xe7, + 0xfe, 0x69, 0xff, 0xe8, 0x05, 0xba, 0x00, 0x19, 0xfe, 0x69, 0xff, 0xe8, + 0x02, 0xea, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb8, 0xff, 0xff, + 0xff, 0xff, 0x00, 0xa8, 0x00, 0xad, 0x01, 0x69, 0x00, 0xad, 0x00, 0xbf, + 0x00, 0xc2, 0x01, 0xf0, 0x00, 0x18, 0x00, 0xaf, 0x00, 0xb9, 0x00, 0xb4, + 0x00, 0xc8, 0x00, 0x17, 0x00, 0x44, 0x00, 0x9c, 0x00, 0x7c, 0x00, 0x94, + 0x00, 0x87, 0x00, 0x06, 0x00, 0x5a, 0x00, 0xc8, 0x00, 0x89, 0x00, 0x52, + 0x00, 0x52, 0x00, 0x05, 0x00, 0x44, 0x00, 0x94, 0x01, 0x19, 0xff, 0xb4, + 0x00, 0x2f, 0x00, 0xa1, 0x00, 0x03, 0x00, 0xa1, 0x00, 0xcd, 0x00, 0x17, + 0x00, 0x57, 0x00, 0x7e, 0x00, 0xba, 0x00, 0x16, 0x01, 0x18, 0xff, 0xe9, + 0x00, 0x7f, 0x00, 0x85, 0x03, 0xd3, 0x00, 0x87, 0x00, 0x85, 0x00, 0x0d, + 0x00, 0x22, 0x00, 0x41, 0x00, 0x50, 0x00, 0x6f, 0x00, 0x8d, 0x01, 0x4c, + 0xff, 0x75, 0x00, 0x5c, 0x00, 0xdf, 0x04, 0x83, 0x00, 0x37, 0x00, 0x4c, + 0x00, 0x6e, 0x00, 0x70, 0x01, 0x80, 0xff, 0x58, 0xff, 0x8e, 0xff, 0x92, + 0xff, 0xa4, 0x00, 0xa5, 0x00, 0xb9, 0x03, 0xc8, 0xff, 0xfd, 0x00, 0x0b, + 0x00, 0x1a, 0x00, 0x63, 0x00, 0x63, 0x00, 0xcd, 0xff, 0xee, 0x05, 0xd8, + 0xff, 0xdc, 0x00, 0x2d, 0x00, 0x5c, 0x00, 0x95, 0x00, 0x99, 0x00, 0xdf, + 0x01, 0x92, 0x09, 0xb5, 0x00, 0x40, 0x00, 0x57, 0x00, 0x80, 0x00, 0xb9, + 0x03, 0x9d, 0x00, 0x72, 0x00, 0x9a, 0x03, 0x5d, 0x04, 0x01, 0xff, 0x67, + 0xff, 0xfa, 0x00, 0x03, 0x00, 0x21, 0x00, 0x77, 0x00, 0xcd, 0x00, 0x04, + 0x00, 0x4d, 0x00, 0xcd, 0x01, 0xc0, 0x02, 0x2b, 0x00, 0x4c, 0x00, 0x65, + 0x00, 0xe7, 0x01, 0x18, 0x01, 0x7c, 0x03, 0x43, 0x05, 0xd8, 0xff, 0xa3, + 0xff, 0xb0, 0xff, 0xc4, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x5d, 0x00, 0x68, + 0x00, 0x9a, 0x00, 0xba, 0x01, 0x35, 0x01, 0x47, 0x02, 0x21, 0x05, 0x5c, + 0xff, 0x4d, 0xff, 0xcd, 0x00, 0x16, 0x00, 0x2d, 0x00, 0x78, 0x00, 0x80, + 0x00, 0x99, 0x00, 0xb2, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0xb8, 0x00, 0xbd, + 0x00, 0xda, 0x01, 0x0c, 0x05, 0xf0, 0xff, 0xa4, 0xff, 0xf0, 0x00, 0x19, + 0x00, 0x2c, 0x00, 0x49, 0x00, 0x7f, 0x00, 0xb4, 0x00, 0xce, 0x01, 0xc0, + 0x03, 0xfe, 0xfd, 0x81, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x05, 0x00, 0x18, + 0x00, 0x29, 0x00, 0x39, 0x00, 0x49, 0x00, 0x6f, 0x00, 0xbe, 0x00, 0xc7, + 0x00, 0xd0, 0x01, 0x23, 0x01, 0xc1, 0x02, 0x6f, 0x05, 0x0c, 0x05, 0x32, + 0x05, 0x40, 0x05, 0x7a, 0xff, 0xd4, 0x00, 0x14, 0x00, 0x31, 0x00, 0x55, + 0x00, 0x57, 0x00, 0xa7, 0x00, 0xb4, 0x00, 0xe6, 0x01, 0xf7, 0x02, 0x7e, + 0x02, 0x7e, 0x02, 0x7f, 0x03, 0xc6, 0x04, 0x46, 0xff, 0x42, 0x00, 0x0e, + 0x00, 0x85, 0x00, 0x91, 0x00, 0xbf, 0x00, 0xc2, 0x00, 0xc5, 0x00, 0xe1, + 0x01, 0x1a, 0x01, 0x2f, 0x01, 0x4f, 0x01, 0x56, 0x02, 0x29, 0x02, 0x6f, + 0x02, 0x9e, 0x03, 0x72, 0x00, 0x08, 0x00, 0x2c, 0x00, 0x31, 0x00, 0x31, + 0x00, 0x64, 0x00, 0x69, 0x00, 0x89, 0x00, 0x98, 0x00, 0xc7, 0x00, 0xde, + 0x01, 0x2b, 0x01, 0xb6, 0x02, 0x0c, 0x02, 0xcf, 0x03, 0xa3, 0x04, 0xab, + 0x04, 0xfb, 0x06, 0x1d, 0xfe, 0xe0, 0xff, 0x0e, 0x00, 0x06, 0x00, 0x26, + 0x00, 0x9b, 0x00, 0x9d, 0x00, 0xc1, 0x01, 0x0d, 0x01, 0x18, 0x01, 0x20, + 0x01, 0x73, 0x01, 0x82, 0x01, 0xd6, 0x01, 0xe3, 0x02, 0x43, 0x02, 0x5f, + 0x02, 0x9b, 0x02, 0xe2, 0x03, 0x94, 0x04, 0xa9, 0x04, 0xd2, 0x07, 0x61, + 0x00, 0x1c, 0x00, 0x5e, 0x00, 0x6d, 0x00, 0x8d, 0x00, 0xab, 0x00, 0xf7, + 0x01, 0x12, 0x01, 0x38, 0x01, 0x51, 0x01, 0x5b, 0x01, 0x68, 0x01, 0x7c, + 0x01, 0x87, 0x01, 0x91, 0x01, 0x99, 0x01, 0xcd, 0x01, 0xd0, 0x01, 0xe8, + 0x02, 0x41, 0x02, 0x54, 0x02, 0x6b, 0x02, 0xef, 0x03, 0x68, 0x03, 0x71, + 0x03, 0xbd, 0x04, 0x42, 0x04, 0x42, 0x04, 0x53, 0x04, 0x73, 0x04, 0x83, + 0x05, 0x86, 0x05, 0x8b, 0x06, 0xe8, 0xfe, 0x58, 0xfe, 0xc4, 0xfe, 0xd1, + 0xfe, 0xf7, 0xff, 0x32, 0xff, 0x86, 0x00, 0x51, 0x00, 0x7c, 0x00, 0x81, + 0x00, 0x91, 0x00, 0x95, 0x00, 0x9e, 0x00, 0xb4, 0x00, 0xb9, 0x00, 0xcf, + 0x00, 0xd9, 0x00, 0xd9, 0x00, 0xdf, 0x00, 0xe2, 0x01, 0x05, 0x01, 0x0b, + 0x01, 0x0e, 0x01, 0x0e, 0x01, 0x20, 0x01, 0x21, 0x01, 0x55, 0x01, 0x7b, + 0x01, 0x7b, 0x01, 0x7e, 0x01, 0x8d, 0x01, 0xa2, 0x01, 0xa8, 0x01, 0xa9, + 0x01, 0xb4, 0x01, 0xd0, 0x01, 0xd0, 0x01, 0xe2, 0x01, 0xe9, 0x01, 0xf2, + 0x01, 0xf5, 0x01, 0xfb, 0x02, 0x00, 0x02, 0x00, 0x02, 0x06, 0x02, 0x1b, + 0x02, 0x21, 0x02, 0x22, 0x02, 0x22, 0x02, 0x23, 0x02, 0x72, 0x02, 0x77, + 0x02, 0x94, 0x02, 0x9c, 0x02, 0xcf, 0x02, 0xcf, 0x02, 0xd0, 0x02, 0xec, + 0x02, 0xf9, 0x03, 0x17, 0x03, 0x22, 0x03, 0x2b, 0x03, 0x35, 0x03, 0x3c, + 0x03, 0x59, 0x03, 0x6f, 0x03, 0x71, 0x03, 0x87, 0x03, 0x90, 0x03, 0x90, + 0x03, 0xb5, 0x03, 0xe1, 0x04, 0x1a, 0x04, 0xcf, 0x04, 0xff, 0x05, 0x32, + 0x05, 0x32, 0x05, 0x96, 0x05, 0x9f, 0x05, 0xa8, 0x05, 0xab, 0x05, 0xc2, + 0x05, 0xf0, 0x06, 0x0c, 0x07, 0x82, 0x08, 0x00, 0x08, 0xcc, 0xfc, 0xa3, + 0xfd, 0x2a, 0xfd, 0xde, 0xfe, 0x00, 0xfe, 0x88, 0xfe, 0x96, 0xfe, 0xb2, + 0xfe, 0xb4, 0xff, 0xe1, 0x00, 0x15, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1c, + 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x51, 0x00, 0x61, 0x00, 0x61, 0x00, 0x6a, + 0x00, 0x78, 0x00, 0x96, 0x00, 0xa5, 0x00, 0xaf, 0x00, 0xd3, 0x01, 0x0c, + 0x01, 0x18, 0x01, 0x1a, 0x01, 0x2a, 0x01, 0x3e, 0x01, 0x4c, 0x01, 0x51, + 0x01, 0x5f, 0x01, 0x6a, 0x01, 0x71, 0x01, 0x78, 0x01, 0x82, 0x01, 0x84, + 0x01, 0x9a, 0x01, 0xa5, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xae, 0x01, 0xbc, + 0x01, 0xcd, 0x01, 0xd7, 0x01, 0xef, 0x02, 0x00, 0x02, 0x0d, 0x02, 0x1c, + 0x02, 0x21, 0x02, 0x22, 0x02, 0x2e, 0x02, 0x35, 0x02, 0x42, 0x02, 0x4f, + 0x02, 0x4f, 0x02, 0x5e, 0x02, 0x65, 0x02, 0x71, 0x02, 0x90, 0x02, 0x92, + 0x02, 0xb4, 0x02, 0xd6, 0x02, 0xfa, 0x03, 0x07, 0x03, 0x0b, 0x03, 0x0f, + 0x03, 0x15, 0x03, 0x2a, 0x03, 0x47, 0x03, 0x5d, 0x03, 0x65, 0x03, 0x74, + 0x03, 0x79, 0x03, 0x96, 0x03, 0xb0, 0x03, 0xcc, 0x03, 0xdd, 0x03, 0xe2, + 0x03, 0xf6, 0x03, 0xfc, 0x03, 0xfc, 0x03, 0xff, 0x04, 0x0a, 0x04, 0x1f, + 0x04, 0x22, 0x04, 0x26, 0x04, 0x2b, 0x04, 0x47, 0x04, 0x5f, 0x04, 0x75, + 0x04, 0x9e, 0x04, 0xe7, 0x04, 0xe7, 0x05, 0x5c, 0x05, 0xcb, 0x05, 0xe5, + 0x06, 0x0a, 0x06, 0x6d, 0x06, 0x86, 0x06, 0xb8, 0x06, 0xf1, 0x07, 0x36, + 0x07, 0x3e, 0x07, 0x50, 0x07, 0x51, 0x07, 0x5d, 0x07, 0x8f, 0x07, 0xb6, + 0x07, 0xd4, 0x08, 0x60, 0x00, 0xb6, 0x00, 0xc3, 0x00, 0xb5, 0x00, 0xb7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xe0, 0x03, 0x81, 0x03, 0x45, 0x03, 0xb5, 0x00, 0x8e, 0x02, 0x33, + 0x04, 0x19, 0x02, 0xce, 0x02, 0xce, 0x00, 0x2d, 0x00, 0x5f, 0x00, 0x64, + 0x03, 0x4d, 0x02, 0x3f, 0x00, 0x00, 0x02, 0xa8, 0x01, 0x88, 0x02, 0x7d, + 0x01, 0xb4, 0x02, 0x24, 0x05, 0x78, 0x06, 0x3b, 0x02, 0x3b, 0x01, 0x4e, + 0x00, 0xf0, 0x04, 0x26, 0x02, 0x94, 0x02, 0xc6, 0x02, 0x9f, 0x02, 0xf6, + 0x02, 0x3b, 0x03, 0x4d, 0x01, 0x4b, 0x01, 0x53, 0x00, 0x6a, 0x02, 0x31, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x14, 0x04, 0xaa, 0x00, 0x00, + 0x00, 0x3c, 0x04, 0xc3, 0x00, 0xed, 0x04, 0xbc, 0x02, 0x65, 0x02, 0xce, + 0x03, 0xb5, 0x00, 0x78, 0x06, 0x0c, 0x01, 0x7e, 0x02, 0xef, 0x06, 0x0c, + 0x00, 0xb2, 0x01, 0x00, 0x02, 0x39, 0x00, 0x00, 0x01, 0xc5, 0x03, 0x30, + 0x04, 0x2b, 0x03, 0xcb, 0x00, 0xda, 0x03, 0xdf, 0x01, 0x07, 0x04, 0xa1, + 0x00, 0xdb, 0x04, 0x0a, 0x01, 0x17, 0x01, 0xed, 0x02, 0xa7, 0x03, 0x50, + 0x01, 0x0b, 0x01, 0xbd, 0x04, 0x3e, 0x05, 0x58, 0x00, 0x21, 0x03, 0x9c, + 0x00, 0xae, 0x03, 0x71, 0x01, 0x7d, 0x00, 0xb5, 0x02, 0x45, 0x00, 0x00, + 0x0a, 0xfb, 0x08, 0x8c, 0x01, 0x2b, 0x01, 0x4e, 0x01, 0xaa, 0x00, 0x87, + 0x00, 0x54, 0x01, 0x32, 0x01, 0xf8, 0x03, 0xff, 0x00, 0x03, 0x02, 0x4e, + 0x00, 0xb4, 0x00, 0x37, 0x03, 0xe3, 0x00, 0x83, 0x00, 0x6b, 0x02, 0xd8, + 0x00, 0xed, 0x00, 0x77, 0x00, 0x88, 0x00, 0x97, 0x01, 0x64, 0x04, 0x67, + 0x00, 0x8e, 0x00, 0x33, 0x01, 0x7c, 0x00, 0xe7, 0x00, 0xa6, 0x02, 0x9e, + 0x03, 0x29, 0x05, 0x6e, 0x06, 0x2a, 0x06, 0x15, 0x01, 0xc9, 0x02, 0x69, + 0x04, 0x8a, 0x02, 0x13, 0x01, 0xb4, 0x00, 0x02, 0x04, 0xa9, 0x00, 0x00, + 0x02, 0x39, 0x01, 0x24, 0x01, 0x03, 0x05, 0x14, 0x00, 0x84, 0x01, 0x5d, + 0x03, 0x9a, 0x06, 0xef, 0x02, 0xd9, 0x00, 0x75, 0x00, 0xcf, 0x04, 0x0a, + 0x00, 0xde, 0x03, 0xac, 0x04, 0xbc, 0x02, 0xcf, 0x02, 0xae, 0x03, 0x4d, + 0x04, 0xf0, 0x05, 0x52, 0x01, 0x68, 0x00, 0x6d, 0x00, 0x7d, 0x00, 0x86, + 0x00, 0x71, 0xff, 0x81, 0x00, 0x79, 0x05, 0x58, 0x04, 0xd2, 0x01, 0x67, + 0x00, 0x03, 0x01, 0x56, 0x00, 0x25, 0x04, 0xe0, 0x00, 0x94, 0x00, 0x7c, + 0x03, 0x32, 0x04, 0x21, 0x00, 0x94, 0x00, 0x7f, 0x00, 0x72, 0x00, 0x5c, + 0x00, 0x2f, 0x00, 0xb6, 0x00, 0x18, 0x00, 0xba, 0x00, 0xb8, 0x00, 0x41, + 0x03, 0x4d, 0x00, 0x72, 0x00, 0x18, 0x00, 0x1f, 0x00, 0x4c, 0x01, 0x6a, + 0x01, 0x55, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x98, 0x00, 0xb2, + 0x00, 0x04, 0x00, 0x78, 0x00, 0x69, 0x00, 0x14, 0x00, 0x57, 0x00, 0x6e, + 0x00, 0xce, 0x00, 0xb4, 0x06, 0x54, 0x02, 0xb8, 0x00, 0x67, 0x05, 0x0e, + 0x01, 0x65, 0x00, 0xe7, 0x00, 0x00, 0x04, 0xcb, 0x40, 0x41, 0x41, 0x40, + 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x35, 0x34, 0x33, + 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x27, + 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1f, 0x1e, 0x1d, 0x1c, 0x1b, + 0x1a, 0x19, 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x0f, + 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, + 0x02, 0x01, 0x00, 0x2c, 0x45, 0x23, 0x46, 0x60, 0x20, 0xb0, 0x26, 0x60, + 0xb0, 0x04, 0x26, 0x23, 0x48, 0x48, 0x2d, 0x2c, 0x45, 0x23, 0x46, 0x23, + 0x61, 0x20, 0xb0, 0x26, 0x61, 0xb0, 0x04, 0x26, 0x23, 0x48, 0x48, 0x2d, + 0x2c, 0x45, 0x23, 0x46, 0x60, 0xb0, 0x20, 0x61, 0x20, 0xb0, 0x46, 0x60, + 0xb0, 0x04, 0x26, 0x23, 0x48, 0x48, 0x2d, 0x2c, 0x45, 0x23, 0x46, 0x23, + 0x61, 0xb0, 0x20, 0x60, 0x20, 0xb0, 0x26, 0x61, 0xb0, 0x20, 0x61, 0xb0, + 0x04, 0x26, 0x23, 0x48, 0x48, 0x2d, 0x2c, 0x45, 0x23, 0x46, 0x60, 0xb0, + 0x40, 0x61, 0x20, 0xb0, 0x66, 0x60, 0xb0, 0x04, 0x26, 0x23, 0x48, 0x48, + 0x2d, 0x2c, 0x45, 0x23, 0x46, 0x23, 0x61, 0xb0, 0x40, 0x60, 0x20, 0xb0, + 0x26, 0x61, 0xb0, 0x40, 0x61, 0xb0, 0x04, 0x26, 0x23, 0x48, 0x48, 0x2d, + 0x2c, 0x01, 0x10, 0x20, 0x3c, 0x00, 0x3c, 0x2d, 0x2c, 0x20, 0x45, 0x23, + 0x20, 0xb0, 0xcd, 0x44, 0x23, 0x20, 0xb8, 0x01, 0x5a, 0x51, 0x58, 0x23, + 0x20, 0xb0, 0x8d, 0x44, 0x23, 0x59, 0x20, 0xb0, 0xed, 0x51, 0x58, 0x23, + 0x20, 0xb0, 0x4d, 0x44, 0x23, 0x59, 0x20, 0xb0, 0x90, 0x51, 0x58, 0x23, + 0x20, 0xb0, 0x0d, 0x44, 0x23, 0x59, 0x21, 0x21, 0x2d, 0x2c, 0x20, 0x20, + 0x45, 0x18, 0x68, 0x44, 0x20, 0xb0, 0x01, 0x60, 0x20, 0x45, 0xb0, 0x46, + 0x76, 0x68, 0x8a, 0x45, 0x60, 0x44, 0x2d, 0x2c, 0x01, 0xb1, 0x0b, 0x0a, + 0x43, 0x23, 0x43, 0x65, 0x0a, 0x2d, 0x2c, 0x00, 0xb1, 0x0a, 0x0b, 0x43, + 0x23, 0x43, 0x0b, 0x2d, 0x2c, 0x00, 0xb0, 0x17, 0x23, 0x70, 0xb1, 0x01, + 0x17, 0x3e, 0x01, 0xb0, 0x17, 0x23, 0x70, 0xb1, 0x02, 0x17, 0x45, 0x3a, + 0xb1, 0x02, 0x00, 0x08, 0x0d, 0x2d, 0x2c, 0x45, 0xb0, 0x1a, 0x23, 0x44, + 0x45, 0xb0, 0x19, 0x23, 0x44, 0x2d, 0x2c, 0x20, 0x45, 0xb0, 0x03, 0x25, + 0x45, 0x61, 0x64, 0xb0, 0x50, 0x51, 0x58, 0x45, 0x44, 0x1b, 0x21, 0x21, + 0x59, 0x2d, 0x2c, 0xb0, 0x01, 0x43, 0x63, 0x23, 0x62, 0xb0, 0x00, 0x23, + 0x42, 0xb0, 0x0f, 0x2b, 0x2d, 0x2c, 0x20, 0x45, 0xb0, 0x00, 0x43, 0x60, + 0x44, 0x2d, 0x2c, 0x01, 0xb0, 0x06, 0x43, 0xb0, 0x07, 0x43, 0x65, 0x0a, + 0x2d, 0x2c, 0x20, 0x69, 0xb0, 0x40, 0x61, 0xb0, 0x00, 0x8b, 0x20, 0xb1, + 0x2c, 0xc0, 0x8a, 0x8c, 0xb8, 0x10, 0x00, 0x62, 0x60, 0x2b, 0x0c, 0x64, + 0x23, 0x64, 0x61, 0x5c, 0x58, 0xb0, 0x03, 0x61, 0x59, 0x2d, 0x2c, 0x45, + 0xb0, 0x11, 0x2b, 0xb0, 0x17, 0x23, 0x44, 0xb0, 0x17, 0x7a, 0xe4, 0x18, + 0x2d, 0x2c, 0x45, 0xb0, 0x11, 0x2b, 0xb0, 0x17, 0x23, 0x44, 0x2d, 0x2c, + 0xb0, 0x12, 0x43, 0x58, 0x87, 0x45, 0xb0, 0x11, 0x2b, 0xb0, 0x17, 0x23, + 0x44, 0xb0, 0x17, 0x7a, 0xe4, 0x1b, 0x03, 0x8a, 0x45, 0x18, 0x69, 0x20, + 0xb0, 0x17, 0x23, 0x44, 0x8a, 0x8a, 0x87, 0x20, 0xb0, 0xa0, 0x51, 0x58, + 0xb0, 0x11, 0x2b, 0xb0, 0x17, 0x23, 0x44, 0xb0, 0x17, 0x7a, 0xe4, 0x1b, + 0x21, 0xb0, 0x17, 0x7a, 0xe4, 0x59, 0x59, 0x18, 0x2d, 0x2c, 0x2d, 0x2c, + 0xb0, 0x02, 0x25, 0x46, 0x60, 0x8a, 0x46, 0xb0, 0x40, 0x61, 0x8c, 0x48, + 0x2d, 0x2c, 0x4b, 0x53, 0x20, 0x5c, 0x58, 0xb0, 0x02, 0x85, 0x59, 0x58, + 0xb0, 0x01, 0x85, 0x59, 0x2d, 0x2c, 0x20, 0xb0, 0x03, 0x25, 0x45, 0xb0, + 0x19, 0x23, 0x44, 0x45, 0xb0, 0x1a, 0x23, 0x44, 0x45, 0x65, 0x23, 0x45, + 0x20, 0xb0, 0x03, 0x25, 0x60, 0x6a, 0x20, 0xb0, 0x09, 0x23, 0x42, 0x23, + 0x68, 0x8a, 0x6a, 0x60, 0x61, 0x20, 0xb0, 0x1a, 0x8a, 0xb0, 0x00, 0x52, + 0x79, 0x21, 0xb2, 0x1a, 0x1a, 0x40, 0xb9, 0xff, 0xe0, 0x00, 0x1a, 0x45, + 0x20, 0x8a, 0x54, 0x58, 0x23, 0x21, 0xb0, 0x3f, 0x1b, 0x23, 0x59, 0x61, + 0x44, 0x1c, 0xb1, 0x14, 0x00, 0x8a, 0x52, 0x79, 0xb3, 0x19, 0x40, 0x20, + 0x19, 0x45, 0x20, 0x8a, 0x54, 0x58, 0x23, 0x21, 0xb0, 0x3f, 0x1b, 0x23, + 0x59, 0x61, 0x44, 0x2d, 0x2c, 0xb1, 0x10, 0x11, 0x43, 0x23, 0x43, 0x0b, + 0x2d, 0x2c, 0xb1, 0x0e, 0x0f, 0x43, 0x23, 0x43, 0x0b, 0x2d, 0x2c, 0xb1, + 0x0c, 0x0d, 0x43, 0x23, 0x43, 0x0b, 0x2d, 0x2c, 0xb1, 0x0c, 0x0d, 0x43, + 0x23, 0x43, 0x65, 0x0b, 0x2d, 0x2c, 0xb1, 0x0e, 0x0f, 0x43, 0x23, 0x43, + 0x65, 0x0b, 0x2d, 0x2c, 0xb1, 0x10, 0x11, 0x43, 0x23, 0x43, 0x65, 0x0b, + 0x2d, 0x2c, 0x4b, 0x52, 0x58, 0x45, 0x44, 0x1b, 0x21, 0x21, 0x59, 0x2d, + 0x2c, 0x01, 0x20, 0xb0, 0x03, 0x25, 0x23, 0x49, 0xb0, 0x40, 0x60, 0xb0, + 0x20, 0x63, 0x20, 0xb0, 0x00, 0x52, 0x58, 0x23, 0xb0, 0x02, 0x25, 0x38, + 0x23, 0xb0, 0x02, 0x25, 0x65, 0x38, 0x00, 0x8a, 0x63, 0x38, 0x1b, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x59, 0x01, 0x2d, 0x2c, 0x4b, 0xb0, 0x64, 0x51, + 0x58, 0x45, 0x69, 0xb0, 0x09, 0x43, 0x60, 0x8a, 0x10, 0x3a, 0x1b, 0x21, + 0x21, 0x21, 0x59, 0x2d, 0x2c, 0x01, 0xb0, 0x05, 0x25, 0x10, 0x23, 0x20, + 0x8a, 0xf5, 0x00, 0xb0, 0x01, 0x60, 0x23, 0xed, 0xec, 0x2d, 0x2c, 0x01, + 0xb0, 0x05, 0x25, 0x10, 0x23, 0x20, 0x8a, 0xf5, 0x00, 0xb0, 0x01, 0x61, + 0x23, 0xed, 0xec, 0x2d, 0x2c, 0x01, 0xb0, 0x06, 0x25, 0x10, 0xf5, 0x00, + 0xed, 0xec, 0x2d, 0x2c, 0x20, 0xb0, 0x01, 0x60, 0x01, 0x10, 0x20, 0x3c, + 0x00, 0x3c, 0x2d, 0x2c, 0x20, 0xb0, 0x01, 0x61, 0x01, 0x10, 0x20, 0x3c, + 0x00, 0x3c, 0x2d, 0x2c, 0xb0, 0x2b, 0x2b, 0xb0, 0x2a, 0x2a, 0x2d, 0x2c, + 0x00, 0xb0, 0x07, 0x43, 0xb0, 0x06, 0x43, 0x0b, 0x2d, 0x2c, 0x3e, 0xb0, + 0x2a, 0x2a, 0x2d, 0x2c, 0x35, 0x2d, 0x2c, 0x76, 0xb8, 0x02, 0x23, 0x23, + 0x70, 0x10, 0x20, 0xb8, 0x02, 0x23, 0x45, 0x20, 0xb0, 0x00, 0x50, 0x58, + 0xb0, 0x01, 0x61, 0x59, 0x3a, 0x2f, 0x18, 0x2d, 0x2c, 0x21, 0x21, 0x0c, + 0x64, 0x23, 0x64, 0x8b, 0xb8, 0x40, 0x00, 0x62, 0x2d, 0x2c, 0x21, 0xb0, + 0x80, 0x51, 0x58, 0x0c, 0x64, 0x23, 0x64, 0x8b, 0xb8, 0x20, 0x00, 0x62, + 0x1b, 0xb2, 0x00, 0x40, 0x2f, 0x2b, 0x59, 0xb0, 0x02, 0x60, 0x2d, 0x2c, + 0x21, 0xb0, 0xc0, 0x51, 0x58, 0x0c, 0x64, 0x23, 0x64, 0x8b, 0xb8, 0x15, + 0x55, 0x62, 0x1b, 0xb2, 0x00, 0x80, 0x2f, 0x2b, 0x59, 0xb0, 0x02, 0x60, + 0x2d, 0x2c, 0x0c, 0x64, 0x23, 0x64, 0x8b, 0xb8, 0x40, 0x00, 0x62, 0x60, + 0x23, 0x21, 0x2d, 0x2c, 0xb4, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0xb0, + 0x08, 0x26, 0xb0, 0x08, 0x26, 0xb0, 0x08, 0x26, 0xb0, 0x08, 0x26, 0x0f, + 0x10, 0x16, 0x13, 0x45, 0x68, 0x3a, 0xb0, 0x01, 0x16, 0x2d, 0x2c, 0xb4, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0xb0, 0x08, 0x26, 0xb0, 0x08, 0x26, + 0xb0, 0x08, 0x26, 0xb0, 0x08, 0x26, 0x0f, 0x10, 0x16, 0x13, 0x45, 0x68, + 0x65, 0x3a, 0xb0, 0x01, 0x16, 0x2d, 0x2c, 0x4b, 0x53, 0x23, 0x4b, 0x51, + 0x5a, 0x58, 0x20, 0x45, 0x8a, 0x60, 0x44, 0x1b, 0x21, 0x21, 0x59, 0x2d, + 0x2c, 0x4b, 0x54, 0x58, 0x20, 0x45, 0x8a, 0x60, 0x44, 0x1b, 0x21, 0x21, + 0x59, 0x2d, 0x2c, 0x4b, 0x53, 0x23, 0x4b, 0x51, 0x5a, 0x58, 0x38, 0x1b, + 0x21, 0x21, 0x59, 0x2d, 0x2c, 0x4b, 0x54, 0x58, 0x38, 0x1b, 0x21, 0x21, + 0x59, 0x2d, 0x2c, 0xb0, 0x13, 0x43, 0x58, 0x03, 0x1b, 0x02, 0x59, 0x2d, + 0x2c, 0xb0, 0x13, 0x43, 0x58, 0x02, 0x1b, 0x03, 0x59, 0x2d, 0x2c, 0x4b, + 0x54, 0xb0, 0x12, 0x43, 0x5c, 0x5a, 0x58, 0x38, 0x1b, 0x21, 0x21, 0x59, + 0x2d, 0x2c, 0xb0, 0x12, 0x43, 0x5c, 0x58, 0x0c, 0xb0, 0x04, 0x25, 0xb0, + 0x04, 0x25, 0x06, 0x0c, 0x64, 0x23, 0x64, 0x61, 0x64, 0xb8, 0x07, 0x08, + 0x51, 0x58, 0xb0, 0x04, 0x25, 0xb0, 0x04, 0x25, 0x01, 0x20, 0x46, 0xb0, + 0x10, 0x60, 0x48, 0x20, 0x46, 0xb0, 0x10, 0x60, 0x48, 0x59, 0x0a, 0x21, + 0x21, 0x1b, 0x21, 0x21, 0x59, 0x2d, 0x2c, 0xb0, 0x12, 0x43, 0x5c, 0x58, + 0x0c, 0xb0, 0x04, 0x25, 0xb0, 0x04, 0x25, 0x06, 0x0c, 0x64, 0x23, 0x64, + 0x61, 0x64, 0xb8, 0x07, 0x08, 0x51, 0x58, 0xb0, 0x04, 0x25, 0xb0, 0x04, + 0x25, 0x01, 0x20, 0x46, 0xb8, 0xff, 0xf0, 0x60, 0x48, 0x20, 0x46, 0xb8, + 0xff, 0xf0, 0x60, 0x48, 0x59, 0x0a, 0x21, 0x21, 0x1b, 0x21, 0x21, 0x59, + 0x2d, 0x2c, 0x4b, 0x53, 0x23, 0x4b, 0x51, 0x5a, 0x58, 0xb0, 0x3a, 0x2b, + 0x1b, 0x21, 0x21, 0x59, 0x2d, 0x2c, 0x4b, 0x53, 0x23, 0x4b, 0x51, 0x5a, + 0x58, 0xb0, 0x3b, 0x2b, 0x1b, 0x21, 0x21, 0x59, 0x2d, 0x2c, 0x4b, 0x53, + 0x23, 0x4b, 0x51, 0x5a, 0xb0, 0x12, 0x43, 0x5c, 0x5a, 0x58, 0x38, 0x1b, + 0x21, 0x21, 0x59, 0x2d, 0x2c, 0x0c, 0x8a, 0x03, 0x4b, 0x54, 0xb0, 0x04, + 0x26, 0x02, 0x4b, 0x54, 0x5a, 0x8a, 0x8a, 0x0a, 0xb0, 0x12, 0x43, 0x5c, + 0x5a, 0x58, 0x38, 0x1b, 0x21, 0x21, 0x59, 0x2d, 0x2c, 0x4b, 0x52, 0x58, + 0xb0, 0x04, 0x25, 0xb0, 0x04, 0x25, 0x49, 0xb0, 0x04, 0x25, 0xb0, 0x04, + 0x25, 0x49, 0x61, 0x20, 0xb0, 0x00, 0x54, 0x58, 0x21, 0x20, 0x43, 0xb0, + 0x00, 0x55, 0x58, 0xb0, 0x03, 0x25, 0xb0, 0x03, 0x25, 0xb8, 0xff, 0xc0, + 0x38, 0xb8, 0xff, 0xc0, 0x38, 0x59, 0x1b, 0xb0, 0x40, 0x54, 0x58, 0x20, + 0x43, 0xb0, 0x00, 0x54, 0x58, 0xb0, 0x02, 0x25, 0xb8, 0xff, 0xc0, 0x38, + 0x59, 0x1b, 0x20, 0x43, 0xb0, 0x00, 0x54, 0x58, 0xb0, 0x03, 0x25, 0xb0, + 0x03, 0x25, 0xb8, 0xff, 0xc0, 0x38, 0xb8, 0xff, 0xc0, 0x38, 0x1b, 0xb0, + 0x03, 0x25, 0xb8, 0xff, 0xc0, 0x38, 0x59, 0x59, 0x59, 0x59, 0x21, 0x21, + 0x21, 0x21, 0x2d, 0x2c, 0x46, 0x23, 0x46, 0x60, 0x8a, 0x8a, 0x46, 0x23, + 0x20, 0x46, 0x8a, 0x60, 0x8a, 0x61, 0xb8, 0xff, 0x80, 0x62, 0x23, 0x20, + 0x10, 0x23, 0x8a, 0xb9, 0x02, 0xc2, 0x02, 0xc2, 0x8a, 0x70, 0x45, 0x60, + 0x20, 0xb0, 0x00, 0x50, 0x58, 0xb0, 0x01, 0x61, 0xb8, 0xff, 0xba, 0x8b, + 0x1b, 0xb0, 0x46, 0x8c, 0x59, 0xb0, 0x10, 0x60, 0x68, 0x01, 0x3a, 0x2d, + 0xb8, 0x02, 0xc1, 0xb3, 0x24, 0x12, 0x1f, 0xff, 0x41, 0x11, 0x02, 0xbf, + 0x00, 0x01, 0x00, 0x1f, 0x02, 0xbf, 0x00, 0x2f, 0x02, 0xbf, 0x00, 0x3f, + 0x02, 0xbf, 0x00, 0x4f, 0x02, 0xbf, 0x00, 0x5f, 0x02, 0xbf, 0x00, 0x8f, + 0x02, 0xbf, 0x00, 0x06, 0x02, 0xbf, 0x02, 0x22, 0xb2, 0x64, 0x1f, 0x12, + 0x41, 0x0b, 0x02, 0xbb, 0x00, 0xca, 0x08, 0x00, 0x00, 0x1f, 0x02, 0xb2, + 0x00, 0xe9, 0x08, 0x00, 0x00, 0x1f, 0x02, 0xa6, 0x00, 0xa2, 0x08, 0x00, + 0x40, 0x6a, 0x1f, 0x40, 0x26, 0x43, 0x49, 0x32, 0x40, 0x20, 0x43, 0x49, + 0x32, 0x40, 0x26, 0x3a, 0x3d, 0x32, 0x40, 0x20, 0x3a, 0x3d, 0x32, 0x9f, + 0x20, 0x9f, 0x26, 0x02, 0x40, 0x26, 0x96, 0x99, 0x32, 0x40, 0x20, 0x96, + 0x99, 0x32, 0x40, 0x26, 0x8e, 0x92, 0x32, 0x40, 0x20, 0x8e, 0x92, 0x32, + 0x40, 0x26, 0x84, 0x8c, 0x32, 0x40, 0x20, 0x84, 0x8c, 0x32, 0x40, 0x26, + 0x7a, 0x81, 0x32, 0x40, 0x20, 0x7a, 0x81, 0x32, 0x40, 0x26, 0x6c, 0x76, + 0x32, 0x40, 0x20, 0x6c, 0x76, 0x32, 0x40, 0x26, 0x64, 0x6a, 0x32, 0x40, + 0x20, 0x64, 0x6a, 0x32, 0x40, 0x26, 0x5a, 0x5f, 0x32, 0x40, 0x20, 0x5a, + 0x5f, 0x32, 0x40, 0x26, 0x4f, 0x54, 0x32, 0x40, 0x20, 0x4f, 0x54, 0x32, + 0xb8, 0x02, 0x9e, 0xb7, 0x24, 0x27, 0x1f, 0x37, 0x4f, 0x6b, 0x01, 0x20, + 0x41, 0x0f, 0x02, 0x77, 0x00, 0x30, 0x02, 0x77, 0x00, 0x40, 0x02, 0x77, + 0x00, 0x50, 0x02, 0x77, 0x00, 0x04, 0x02, 0x77, 0x02, 0x77, 0x02, 0x77, + 0x00, 0xf9, 0x04, 0x00, 0x00, 0x1f, 0x02, 0x9b, 0xb2, 0x2a, 0x2a, 0x1f, + 0xb8, 0x02, 0x9a, 0x40, 0x2b, 0x29, 0x2a, 0x1f, 0x80, 0xba, 0x01, 0x80, + 0xbc, 0x01, 0x80, 0x52, 0x01, 0x80, 0xa2, 0x01, 0x80, 0x65, 0x01, 0x80, + 0x7e, 0x01, 0x80, 0x81, 0x01, 0x80, 0x3c, 0x01, 0x80, 0x5e, 0x01, 0x80, + 0x2b, 0x01, 0x80, 0x1c, 0x01, 0x80, 0x1e, 0x01, 0x80, 0x40, 0x01, 0x80, + 0xbb, 0x01, 0x38, 0x00, 0x01, 0x00, 0x80, 0x01, 0x40, 0xb4, 0x01, 0x80, + 0x40, 0x01, 0x80, 0xbb, 0x01, 0x38, 0x00, 0x01, 0x00, 0x80, 0x01, 0x39, + 0x40, 0x18, 0x01, 0x80, 0xca, 0x01, 0x80, 0xad, 0x01, 0x80, 0x73, 0x01, + 0x80, 0x26, 0x01, 0x80, 0x25, 0x01, 0x80, 0x24, 0x01, 0x80, 0x20, 0x01, + 0x37, 0x40, 0xb8, 0x02, 0x21, 0xb2, 0x49, 0x33, 0x40, 0xb8, 0x02, 0x21, + 0xb2, 0x45, 0x33, 0x40, 0xb8, 0x02, 0x21, 0xb3, 0x41, 0x42, 0x32, 0x40, + 0xb8, 0x02, 0x21, 0xb3, 0x3d, 0x3e, 0x32, 0x0f, 0x41, 0x0f, 0x02, 0x21, + 0x00, 0x3f, 0x02, 0x21, 0x00, 0x7f, 0x02, 0x21, 0x00, 0x03, 0x00, 0xbf, + 0x02, 0x21, 0x00, 0xcf, 0x02, 0x21, 0x00, 0xff, 0x02, 0x21, 0x00, 0x03, + 0x00, 0x40, 0x02, 0x21, 0xb3, 0x20, 0x22, 0x32, 0x40, 0xb8, 0x02, 0x21, + 0xb3, 0x19, 0x1e, 0x32, 0x40, 0xb8, 0x02, 0x22, 0xb3, 0x2a, 0x3f, 0x32, + 0x40, 0xb8, 0x02, 0x21, 0xb3, 0x2e, 0x3a, 0x32, 0x6f, 0x41, 0x48, 0x02, + 0xc3, 0x00, 0x7f, 0x02, 0xc3, 0x00, 0x8f, 0x02, 0xc3, 0x00, 0xdf, 0x02, + 0xc3, 0x00, 0x04, 0x00, 0x2f, 0x02, 0xc3, 0x00, 0x60, 0x02, 0xc3, 0x00, + 0xcf, 0x02, 0xc3, 0x00, 0x03, 0x00, 0x0f, 0x02, 0xc3, 0x00, 0x3f, 0x02, + 0xc3, 0x00, 0x5f, 0x02, 0xc3, 0x00, 0xc0, 0x02, 0xc3, 0x00, 0xef, 0x02, + 0xc3, 0x00, 0xff, 0x02, 0xc3, 0x00, 0x06, 0x00, 0xdf, 0x02, 0x22, 0x00, + 0x01, 0x00, 0x8f, 0x02, 0x22, 0x00, 0x01, 0x00, 0x0f, 0x02, 0x22, 0x00, + 0x2f, 0x02, 0x22, 0x00, 0x3f, 0x02, 0x22, 0x00, 0x5f, 0x02, 0x22, 0x00, + 0x7f, 0x02, 0x22, 0x00, 0xef, 0x02, 0x22, 0x00, 0x06, 0x00, 0xbf, 0x02, + 0x21, 0x00, 0xef, 0x02, 0x21, 0x00, 0x02, 0x00, 0x6f, 0x02, 0x21, 0x00, + 0x7f, 0x02, 0x21, 0x00, 0xaf, 0x02, 0x21, 0x00, 0x03, 0x00, 0x2f, 0x02, + 0x21, 0x00, 0x3f, 0x02, 0x21, 0x00, 0x4f, 0x02, 0x21, 0x00, 0x03, 0x02, + 0xc3, 0x02, 0xc3, 0x02, 0x22, 0x02, 0x22, 0x02, 0x21, 0x02, 0x21, 0x40, + 0x1d, 0x10, 0x1c, 0x10, 0x2b, 0x10, 0x48, 0x03, 0x8f, 0x1c, 0x01, 0x0f, + 0x1e, 0x01, 0x4f, 0x1e, 0xff, 0x1e, 0x02, 0x37, 0x00, 0x16, 0x16, 0x00, + 0x00, 0x00, 0x12, 0x11, 0x08, 0x11, 0xb8, 0x01, 0x0d, 0xb6, 0xf7, 0x0d, + 0xf8, 0xf7, 0x0d, 0x00, 0x09, 0x41, 0x09, 0x02, 0x8e, 0x02, 0x8f, 0x00, + 0x1d, 0x00, 0x1f, 0x02, 0x90, 0x02, 0x8f, 0x00, 0x1d, 0x00, 0x1f, 0x02, + 0x8f, 0xb2, 0xf9, 0x1d, 0x1f, 0xb8, 0x01, 0x98, 0xb2, 0x26, 0xbb, 0x1f, + 0x41, 0x15, 0x01, 0x97, 0x00, 0x1e, 0x04, 0x01, 0x00, 0x1f, 0x01, 0x39, + 0x00, 0x26, 0x01, 0x25, 0x00, 0x1f, 0x01, 0x38, 0x00, 0x73, 0x04, 0x01, + 0x00, 0x1f, 0x01, 0x35, 0x00, 0x1c, 0x08, 0x01, 0x00, 0x1f, 0x01, 0x34, + 0x00, 0x1c, 0x02, 0xab, 0x00, 0x1f, 0x01, 0x32, 0xb2, 0x1c, 0x56, 0x1f, + 0xb8, 0x01, 0x0f, 0xb2, 0x26, 0x2c, 0x1f, 0xba, 0x01, 0x0e, 0x00, 0x1e, + 0x04, 0x01, 0xb6, 0x1f, 0xf9, 0x1c, 0xe4, 0x1f, 0xe9, 0x1c, 0xb8, 0x02, + 0x01, 0xb6, 0x1f, 0xe8, 0x1c, 0xbb, 0x1f, 0xd7, 0x20, 0xb8, 0x04, 0x01, + 0xb2, 0x1f, 0xd5, 0x1c, 0xb8, 0x02, 0xab, 0xb6, 0x1f, 0xd4, 0x1c, 0x89, + 0x1f, 0xc9, 0x2f, 0xb8, 0x08, 0x01, 0xb2, 0x1f, 0xbc, 0x26, 0xb8, 0x01, + 0x01, 0xb2, 0x1f, 0xba, 0x20, 0xb8, 0x02, 0x01, 0xb6, 0x1f, 0xb9, 0x1c, + 0x38, 0x1f, 0xad, 0xca, 0xb8, 0x04, 0x01, 0xb2, 0x1f, 0x81, 0x26, 0xb8, + 0x01, 0x9a, 0xb2, 0x1f, 0x7e, 0x26, 0xb8, 0x01, 0x9a, 0xb6, 0x1f, 0x7d, + 0x1c, 0x47, 0x1f, 0x6b, 0x1c, 0xb8, 0x04, 0x01, 0xb2, 0x1f, 0x65, 0x26, + 0xb8, 0x01, 0x9a, 0xb2, 0x1f, 0x5e, 0x73, 0xb8, 0x04, 0x01, 0x40, 0x0f, + 0x1f, 0x52, 0x26, 0x5a, 0x1f, 0x48, 0x1c, 0x89, 0x1f, 0x44, 0x1c, 0x62, + 0x1f, 0x40, 0x73, 0xb8, 0x08, 0x01, 0xb6, 0x1f, 0x3f, 0x1c, 0x5e, 0x1f, + 0x3c, 0x26, 0xb8, 0x01, 0x9a, 0xb2, 0x1f, 0x35, 0x1c, 0xb8, 0x04, 0x01, + 0xb6, 0x1f, 0x30, 0x1c, 0xbb, 0x1f, 0x2b, 0x1c, 0xb8, 0x04, 0x01, 0xb6, + 0x1f, 0x2a, 0x1c, 0x56, 0x1f, 0x29, 0x1c, 0xb8, 0x01, 0x01, 0xb2, 0x1f, + 0x23, 0x1e, 0xb8, 0x04, 0x01, 0xb2, 0x1f, 0x55, 0x37, 0xb8, 0x01, 0x68, + 0x40, 0x2c, 0x07, 0x96, 0x07, 0x58, 0x07, 0x4f, 0x07, 0x36, 0x07, 0x32, + 0x07, 0x2c, 0x07, 0x21, 0x07, 0x1f, 0x07, 0x1d, 0x07, 0x1b, 0x07, 0x14, + 0x08, 0x12, 0x08, 0x10, 0x08, 0x0e, 0x08, 0x0c, 0x08, 0x0a, 0x08, 0x08, + 0x08, 0x06, 0x08, 0x04, 0x08, 0x02, 0x08, 0x00, 0x08, 0x14, 0xb8, 0xff, + 0xe0, 0x40, 0x2b, 0x00, 0x00, 0x01, 0x00, 0x14, 0x06, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x06, 0x04, 0x00, 0x00, 0x01, 0x00, 0x04, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x10, 0x02, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x02, 0x01, 0x08, 0x02, 0x00, 0x4a, 0x00, 0xb0, 0x13, + 0x03, 0x4b, 0x02, 0x4b, 0x53, 0x42, 0x01, 0x4b, 0xb0, 0xc0, 0x63, 0x00, + 0x4b, 0x62, 0x20, 0xb0, 0xf6, 0x53, 0x23, 0xb8, 0x01, 0x0a, 0x51, 0x5a, + 0xb0, 0x05, 0x23, 0x42, 0x01, 0xb0, 0x12, 0x4b, 0x00, 0x4b, 0x54, 0x42, + 0xb0, 0x38, 0x2b, 0x4b, 0xb8, 0x07, 0xff, 0x52, 0xb0, 0x37, 0x2b, 0x4b, + 0xb0, 0x07, 0x50, 0x5b, 0x58, 0xb1, 0x01, 0x01, 0x8e, 0x59, 0xb0, 0x38, + 0x2b, 0xb0, 0x02, 0x88, 0xb8, 0x01, 0x00, 0x54, 0x58, 0xb8, 0x01, 0xff, + 0xb1, 0x01, 0x01, 0x8e, 0x85, 0x1b, 0xb0, 0x12, 0x43, 0x58, 0xb9, 0x00, + 0x01, 0x01, 0x11, 0x85, 0x8d, 0x1b, 0xb9, 0x00, 0x01, 0x01, 0x28, 0x85, + 0x8d, 0x59, 0x59, 0x00, 0x18, 0x16, 0x76, 0x3f, 0x18, 0x3f, 0x12, 0x3e, + 0x11, 0x39, 0x46, 0x44, 0x3e, 0x11, 0x39, 0x46, 0x44, 0x3e, 0x11, 0x39, + 0x46, 0x44, 0x3e, 0x11, 0x39, 0x46, 0x44, 0x3e, 0x11, 0x39, 0x46, 0x60, + 0x44, 0x3e, 0x11, 0x39, 0x46, 0x60, 0x44, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x18, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x18, 0x2b, 0x1d, 0xb0, 0x96, 0x4b, + 0x53, 0x58, 0xb0, 0xaa, 0x1d, 0x59, 0xb0, 0x32, 0x4b, 0x53, 0x58, 0xb0, + 0xff, 0x1d, 0x59, 0x4b, 0xb0, 0x93, 0x53, 0x20, 0x5c, 0x58, 0xb9, 0x01, + 0xf2, 0x01, 0xf0, 0x45, 0x44, 0xb9, 0x01, 0xf1, 0x01, 0xf0, 0x45, 0x44, + 0x59, 0x58, 0xb9, 0x03, 0x3e, 0x01, 0xf2, 0x45, 0x52, 0x58, 0xb9, 0x01, + 0xf2, 0x03, 0x3e, 0x44, 0x59, 0x59, 0x4b, 0xb8, 0x01, 0x56, 0x53, 0x20, + 0x5c, 0x58, 0xb9, 0x00, 0x20, 0x01, 0xf1, 0x45, 0x44, 0xb9, 0x00, 0x26, + 0x01, 0xf1, 0x45, 0x44, 0x59, 0x58, 0xb9, 0x08, 0x1e, 0x00, 0x20, 0x45, + 0x52, 0x58, 0xb9, 0x00, 0x20, 0x08, 0x1e, 0x44, 0x59, 0x59, 0x4b, 0xb8, + 0x01, 0x9a, 0x53, 0x20, 0x5c, 0x58, 0xb9, 0x00, 0x25, 0x01, 0xf2, 0x45, + 0x44, 0xb9, 0x00, 0x24, 0x01, 0xf2, 0x45, 0x44, 0x59, 0x58, 0xb9, 0x09, + 0x09, 0x00, 0x25, 0x45, 0x52, 0x58, 0xb9, 0x00, 0x25, 0x09, 0x09, 0x44, + 0x59, 0x59, 0x4b, 0xb8, 0x04, 0x01, 0x53, 0x20, 0x5c, 0x58, 0xb1, 0x73, + 0x24, 0x45, 0x44, 0xb1, 0x24, 0x24, 0x45, 0x44, 0x59, 0x58, 0xb9, 0x17, + 0x20, 0x00, 0x73, 0x45, 0x52, 0x58, 0xb9, 0x00, 0x73, 0x17, 0x20, 0x44, + 0x59, 0x59, 0x4b, 0xb8, 0x04, 0x01, 0x53, 0x20, 0x5c, 0x58, 0xb1, 0xca, + 0x25, 0x45, 0x44, 0xb1, 0x25, 0x25, 0x45, 0x44, 0x59, 0x58, 0xb9, 0x16, + 0x80, 0x00, 0xca, 0x45, 0x52, 0x58, 0xb9, 0x00, 0xca, 0x16, 0x80, 0x44, + 0x59, 0x59, 0x4b, 0xb0, 0x3e, 0x53, 0x20, 0x5c, 0x58, 0xb1, 0x1c, 0x1c, + 0x45, 0x44, 0xb1, 0x1e, 0x1c, 0x45, 0x44, 0x59, 0x58, 0xb9, 0x01, 0x1a, + 0x00, 0x1c, 0x45, 0x52, 0x58, 0xb9, 0x00, 0x1c, 0x01, 0x1a, 0x44, 0x59, + 0x59, 0x4b, 0xb0, 0x56, 0x53, 0x20, 0x5c, 0x58, 0xb1, 0x1c, 0x1c, 0x45, + 0x44, 0xb1, 0x2f, 0x1c, 0x45, 0x44, 0x59, 0x58, 0xb9, 0x01, 0x89, 0x00, + 0x1c, 0x45, 0x52, 0x58, 0xb9, 0x00, 0x1c, 0x01, 0x89, 0x44, 0x59, 0x59, + 0x4b, 0xb8, 0x03, 0x01, 0x53, 0x20, 0x5c, 0x58, 0xb1, 0x1c, 0x1c, 0x45, + 0x44, 0xb1, 0x1c, 0x1c, 0x45, 0x44, 0x59, 0x58, 0xb9, 0x0d, 0xe0, 0x00, + 0x1c, 0x45, 0x52, 0x58, 0xb9, 0x00, 0x1c, 0x0d, 0xe0, 0x44, 0x59, 0x59, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x65, 0x42, 0x2b, 0x2b, 0x01, 0xb3, 0x3b, + 0x59, 0x63, 0x5c, 0x45, 0x65, 0x23, 0x45, 0x60, 0x23, 0x45, 0x65, 0x60, + 0x23, 0x45, 0x60, 0xb0, 0x8b, 0x76, 0x68, 0x18, 0xb0, 0x80, 0x62, 0x20, + 0x20, 0xb1, 0x63, 0x59, 0x45, 0x65, 0x23, 0x45, 0x20, 0xb0, 0x03, 0x26, + 0x60, 0x62, 0x63, 0x68, 0x20, 0xb0, 0x03, 0x26, 0x61, 0x65, 0xb0, 0x59, + 0x23, 0x65, 0x44, 0xb0, 0x63, 0x23, 0x44, 0x20, 0xb1, 0x3b, 0x5c, 0x45, + 0x65, 0x23, 0x45, 0x20, 0xb0, 0x03, 0x26, 0x60, 0x62, 0x63, 0x68, 0x20, + 0xb0, 0x03, 0x26, 0x61, 0x65, 0xb0, 0x5c, 0x23, 0x65, 0x44, 0xb0, 0x3b, + 0x23, 0x44, 0xb1, 0x00, 0x5c, 0x45, 0x54, 0x58, 0xb1, 0x5c, 0x40, 0x65, + 0x44, 0xb2, 0x3b, 0x40, 0x3b, 0x45, 0x23, 0x61, 0x44, 0x59, 0xb3, 0x47, + 0x50, 0x34, 0x37, 0x45, 0x65, 0x23, 0x45, 0x60, 0x23, 0x45, 0x65, 0x60, + 0x23, 0x45, 0x60, 0xb0, 0x89, 0x76, 0x68, 0x18, 0xb0, 0x80, 0x62, 0x20, + 0x20, 0xb1, 0x34, 0x50, 0x45, 0x65, 0x23, 0x45, 0x20, 0xb0, 0x03, 0x26, + 0x60, 0x62, 0x63, 0x68, 0x20, 0xb0, 0x03, 0x26, 0x61, 0x65, 0xb0, 0x50, + 0x23, 0x65, 0x44, 0xb0, 0x34, 0x23, 0x44, 0x20, 0xb1, 0x47, 0x37, 0x45, + 0x65, 0x23, 0x45, 0x20, 0xb0, 0x03, 0x26, 0x60, 0x62, 0x63, 0x68, 0x20, + 0xb0, 0x03, 0x26, 0x61, 0x65, 0xb0, 0x37, 0x23, 0x65, 0x44, 0xb0, 0x47, + 0x23, 0x44, 0xb1, 0x00, 0x37, 0x45, 0x54, 0x58, 0xb1, 0x37, 0x40, 0x65, + 0x44, 0xb2, 0x47, 0x40, 0x47, 0x45, 0x23, 0x61, 0x44, 0x59, 0x00, 0x4b, + 0x53, 0x42, 0x01, 0x4b, 0x50, 0x58, 0xb1, 0x08, 0x00, 0x42, 0x59, 0x43, + 0x5c, 0x58, 0xb1, 0x08, 0x00, 0x42, 0x59, 0xb3, 0x02, 0x0b, 0x0a, 0x12, + 0x43, 0x58, 0x60, 0x1b, 0x21, 0x59, 0x42, 0x16, 0x10, 0x70, 0x3e, 0xb0, + 0x12, 0x43, 0x58, 0xb9, 0x3b, 0x21, 0x18, 0x7e, 0x1b, 0xba, 0x04, 0x00, + 0x01, 0xa8, 0x00, 0x0b, 0x2b, 0x59, 0xb0, 0x0c, 0x23, 0x42, 0xb0, 0x0d, + 0x23, 0x42, 0xb0, 0x12, 0x43, 0x58, 0xb9, 0x2d, 0x41, 0x2d, 0x41, 0x1b, + 0xba, 0x04, 0x00, 0x04, 0x00, 0x00, 0x0b, 0x2b, 0x59, 0xb0, 0x0e, 0x23, + 0x42, 0xb0, 0x0f, 0x23, 0x42, 0xb0, 0x12, 0x43, 0x58, 0xb9, 0x18, 0x7e, + 0x3b, 0x21, 0x1b, 0xba, 0x01, 0xa8, 0x04, 0x00, 0x00, 0x0b, 0x2b, 0x59, + 0xb0, 0x10, 0x23, 0x42, 0xb0, 0x11, 0x23, 0x42, 0x00, 0x2b, 0x74, 0x75, + 0x73, 0x75, 0x00, 0x18, 0x45, 0x69, 0x44, 0x45, 0x69, 0x44, 0x45, 0x69, + 0x44, 0x73, 0x73, 0x73, 0x73, 0x74, 0x75, 0x73, 0x74, 0x75, 0x2b, 0x2b, + 0x2b, 0x2b, 0x74, 0x75, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x73, 0x73, 0x73, + 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, + 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x2b, 0x2b, + 0x2b, 0x45, 0xb0, 0x40, 0x61, 0x44, 0x73, 0x74, 0x00, 0x00, 0x4b, 0xb0, + 0x2a, 0x53, 0x4b, 0xb0, 0x3f, 0x51, 0x5a, 0x58, 0xb1, 0x07, 0x07, 0x45, + 0xb0, 0x40, 0x60, 0x44, 0x59, 0x00, 0x4b, 0xb0, 0x3a, 0x53, 0x4b, 0xb0, + 0x3f, 0x51, 0x5a, 0x58, 0xb1, 0x0b, 0x0b, 0x45, 0xb8, 0xff, 0xc0, 0x60, + 0x44, 0x59, 0x00, 0x4b, 0xb0, 0x2e, 0x53, 0x4b, 0xb0, 0x3a, 0x51, 0x5a, + 0x58, 0xb1, 0x03, 0x03, 0x45, 0xb0, 0x40, 0x60, 0x44, 0x59, 0x00, 0x4b, + 0xb0, 0x2e, 0x53, 0x4b, 0xb0, 0x3c, 0x51, 0x5a, 0x58, 0xb1, 0x09, 0x09, + 0x45, 0xb8, 0xff, 0xc0, 0x60, 0x44, 0x59, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x75, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x43, 0x5c, 0x58, + 0xb9, 0x00, 0x80, 0x02, 0xbb, 0xb3, 0x01, 0x40, 0x1e, 0x01, 0x74, 0x00, + 0x73, 0x59, 0x03, 0xb0, 0x1e, 0x4b, 0x54, 0x02, 0xb0, 0x12, 0x4b, 0x54, + 0x5a, 0xb0, 0x12, 0x43, 0x5c, 0x5a, 0x58, 0xba, 0x00, 0x9f, 0x02, 0x22, + 0x00, 0x01, 0x00, 0x73, 0x59, 0x00, 0x2b, 0x74, 0x73, 0x01, 0x2b, 0x00 +}; +unsigned int doxfont_len = 32760; + void writeNullImage(const char *dir) { QCString fileName=(QCString)dir+"/null.gif"; @@ -538,4 +3273,21 @@ void writeSearchButton(const char *dir) f.close(); } +void writeDoxFont(const char *dir) +{ + QCString fileName=(QCString)dir+"/doxfont.ttf"; + QFile f(fileName); + if (f.open(IO_WriteOnly)) + f.writeBlock((char *)doxfont_data,doxfont_len); + else + { + fprintf(stderr,"Warning: Cannot open file %s for writing\n",fileName.data()); + } + f.close(); +} +void removeDoxFont(const char *dir) +{ + QDir d(dir); + d.remove("doxfont.ttf"); +} diff --git a/src/logos.h b/src/logos.h index dc2ec51..8bfff9f 100644 --- a/src/logos.h +++ b/src/logos.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -20,5 +20,7 @@ extern void writeLogo(const char *dir); extern void writeNullImage(const char *dir); extern void writeSearchButton(const char *dir); +extern void writeDoxFont(const char *dir); +extern void removeDoxFont(const char *dir); #endif diff --git a/src/mangen.cpp b/src/mangen.cpp index 90ba4a3..fbe5a59 100644 --- a/src/mangen.cpp +++ b/src/mangen.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -45,7 +45,7 @@ void ManGenerator::append(const OutputGenerator *g) t << r.upper(); else t << r; - if (r.length()>0) + if (!r.isEmpty()) firstCol = r.at(r.length()-1)=='\n'; else firstCol = ((ManGenerator *)g)->firstCol; diff --git a/src/mangen.h b/src/mangen.h index c9bea9d..610ad9e 100644 --- a/src/mangen.h +++ b/src/mangen.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -190,6 +190,16 @@ class ManGenerator : public OutputGenerator void startDescTableData() { } void endDescTableData() {} + void startCollaborationDiagram() {} + void endCollaborationDiagram(DotGfxUsageGraph &) {} + void startInclDepGraph() {} + void endInclDepGraph(DotInclDepGraph &) {} + void writeGraphicalHierarchy(DotGfxHierarchyTable &) {} + + void startTextBlock(bool) {} + void endTextBlock() {} + void lastIndexPage() {} + private: bool firstCol; bool paragraph; diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 67baec7..61679c3 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -69,7 +69,8 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, { ArgumentList *argList=md->argumentList(); if (argList==0) return; // member has no function like argument list - ol.docify(" ("); // start argument list + if (!md->isDefine()) ol.docify(" "); + ol.docify("("); // start argument list Argument *a=argList->first(); QCString cName; if (md->scopeDefTemplateArguments()) @@ -108,16 +109,16 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, if ((vp=a->type.find(re))!=-1) // argument type is a function pointer { QCString n=a->type.left(vp); - if (cName.length()>0) n=addTemplateNames(n,cd->name(),cName); + if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName); linkifyText(ol,scopeName,md->name(),n); } else // non-function pointer type { QCString n=a->type; - if (cName.length()>0) n=addTemplateNames(n,cd->name(),cName); + if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName); linkifyText(ol,scopeName,md->name(),n); } - if (a->name.length()>0) // argument has a name + if (!a->name.isEmpty()) // argument has a name { ol.docify(" "); ol.disable(OutputGenerator::Man); @@ -128,15 +129,19 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, ol.endEmphasis(); ol.enable(OutputGenerator::Man); } + if (!a->array.isEmpty()) + { + ol.docify(a->array); + } if (vp!=-1) // write the part of the argument type // that comes after the name { linkifyText(ol,scopeName,md->name(),a->type.right(a->type.length()-vp)); } - if (a->defval.length()>0) // write the default value + if (!a->defval.isEmpty()) // write the default value { QCString n=a->defval; - if (cName.length()>0) n=addTemplateNames(n,cd->name(),cName); + if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName); ol.docify(" = "); linkifyText(ol,scopeName,md->name(),n); } @@ -173,13 +178,11 @@ static void writeTemplatePrefix(OutputList &ol,ArgumentList *al,bool br=TRUE) ol.docify("> "); if (br) { - bool latexEnabled = ol.isEnabled(OutputGenerator::Latex); - bool manEnabled = ol.isEnabled(OutputGenerator::Man); - if (latexEnabled) ol.disable(OutputGenerator::Latex); - if (manEnabled) ol.disable(OutputGenerator::Man); + ol.pushGeneratorState(); + ol.disable(OutputGenerator::Man); + ol.disable(OutputGenerator::Latex); ol.lineBreak(); - if (latexEnabled) ol.enable(OutputGenerator::Latex); - if (manEnabled) ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); } } @@ -448,11 +451,20 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi //printf("%s MemberDef::writeDeclaration(): hasDocs %d\n",name().data(),hasDocs); //if (cd) printf("MemberDef: %s in class %s annScope=%d annMemb=%p\n", // name().data(),cd->name().data(),annScope,annMemb); + + // hide members in annonymous scopes + // (they are displayed by there parent placeholder) if (annScope) return; + // hide undocumented members unless overwritten by the configuration if (!hasDocs && Config::hideMemberFlag) return; + // hide members with no detailed desciption and brief descriptions explicitly + // disabled. if (Config::hideMemberFlag && documentation().isEmpty() && !Config::briefMemDescFlag && !Config::repeatBriefFlag ) return; + // hide static file & namespace members unless extract private is on + if (cd==0 && isStatic() && !Config::extractPrivateFlag) return; + QCString type=typeString(); // strip `static' keyword from type if (type.left(7)=="static ") type=type.right(type.length()-7); @@ -462,7 +474,7 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi if ((i=r.match(type,0,&l))==-1 || !enumUsed()) { - if (Config::genTagFile.length()>0) + if (!Config::genTagFile.isEmpty()) { tagFile << name() << " " << anchor() << " \"" << argsString() << "\"\n"; @@ -618,7 +630,7 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi linkifyText(ol,cname,name(),type); } bool htmlOn = ol.isEnabled(OutputGenerator::Html); - if (htmlOn && Config::htmlAlignMemberFlag && type.length()>0) + if (htmlOn && Config::htmlAlignMemberFlag && !type.isEmpty()) { ol.disable(OutputGenerator::Html); } @@ -630,13 +642,16 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi if (annMemb) { - bool latexOn = ol.isEnabled(OutputGenerator::Latex); - bool manOn = ol.isEnabled(OutputGenerator::Man); - if (latexOn) ol.disable(OutputGenerator::Latex); - if (manOn) ol.disable(OutputGenerator::Man); + //bool latexOn = ol.isEnabled(OutputGenerator::Latex); + //bool manOn = ol.isEnabled(OutputGenerator::Man); + //if (latexOn) ol.disable(OutputGenerator::Latex); + //if (manOn) ol.disable(OutputGenerator::Man); + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); ol.writeNonBreakableSpace(); - if (latexOn) ol.enable(OutputGenerator::Latex); - if (manOn) ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); + //if (latexOn) ol.enable(OutputGenerator::Latex); + //if (manOn) ol.enable(OutputGenerator::Man); } else ol.insertMemberAlign(); @@ -691,7 +706,7 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi if (argsString()) { - ol.writeString(" "); + if (!isDefine()) ol.writeString(" "); //ol.docify(argsString()); linkifyText(ol,cname,name(),argsString()); } @@ -702,6 +717,12 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi ol.docify(excpString()); } + if (!init.isEmpty() && initLines==0) // add initializer + { + if (!isDefine()) ol.writeString(" = "); else ol.writeNonBreakableSpace(); + linkifyText(ol,cname,name(),init); + } + if (!detailsVisible && !Config::extractAllFlag && !annMemb) { ol.endDoxyAnchor(); @@ -735,13 +756,14 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi } -void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *scopeName, - MemberType m) +void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, + const char *scopeName) { + if (memberClass()==0 && isStatic() && !Config::extractPrivateFlag) return; bool hasDocs = detailsAreVisible(); //printf("%s MemberDef::writeDocumentation(): hasDocs %d\n",name().data(),hasDocs); if ( - (memberType()==m && // filter member type + (/*memberType()==m &&*/ // filter member type (Config::extractAllFlag || hasDocs) && groupId()==-1 // not in a group ) || /* member is part of an annonymous scope that is the type of @@ -750,14 +772,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco (!hasDocs && !briefDescription().isEmpty() && annUsed) ) { - //printf("************* Writing docs for member %s\n",name().data()); - //if (Config::extractAllFlag && !hasDocs) - //{ - // ol.disable(OutputGenerator::Latex); // Latex cannot insert a pagebreak - // // if there are a lot of empty sections, - // // so we disable LaTeX for all empty - // // sections even if Config::extractAllFlag is enabled - //} NamespaceDef *nd=getNamespace(); ClassDef *cd=memberClass(); FileDef *fd=getFileDef(); @@ -805,6 +819,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco ol+=*vmd->enumDecl(); linkifyText(ol,scopeName,name(),def.right(def.length()-i-l)); //ol.endDoxyAnchor(); + found=TRUE; } } @@ -878,7 +893,12 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco } linkifyText(ol,scopeName,name(),def); writeDefArgumentList(ol,cd,scopeName,this); - if (excpString()) + if (!init.isEmpty() && initLines==0) // add initializer + { + if (!isDefine()) ol.docify(" = "); else ol.writeNonBreakableSpace(); + linkifyText(ol,scopeName,name(),init); + } + if (excpString()) // add exception list { ol.docify(" "); linkifyText(ol,scopeName,name(),excpString()); @@ -895,7 +915,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco if (isStatic() || protection()!=Public || virt!=Normal || isSignal() || isFriend() || - isRelated() || isSlot() || + isRelated() || isSlot() || (isInline() && Config::inlineInfoFlag) ) { @@ -931,8 +951,24 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco ol.endMemberDoc(); ol.endDoxyAnchor(); ol.startIndent(); + + ol.pushGeneratorState(); + ol.disable(OutputGenerator::RTF); ol.newParagraph(); + ol.popGeneratorState(); + /* write multi-line initializer (if any) */ + if (initLines>0 && initLines<maxInitLines) + { + ol.startBold(); + parseText(ol,theTranslator->trInitialValue()); + ol.endBold(); + ol.startCodeFragment(); + parseCode(ol,scopeName,init,FALSE,0); + ol.endCodeFragment(); + } + + /* write brief description */ if (!briefDescription().isEmpty() && (Config::repeatBriefFlag /* || (!Config::briefMemDescFlag && documentation().isEmpty())*/ @@ -942,17 +978,50 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco parseDoc(ol,scopeName,name(),briefDescription()); ol.newParagraph(); } + + /* write detailed description */ if (!documentation().isEmpty()) { parseDoc(ol,scopeName,name(),documentation()+"\n"); + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::RTF); + ol.newParagraph(); + ol.popGeneratorState(); } - //if (!bodyCode().isEmpty()) - //{ - // ol.startCodeFragment(); - // parseCode(ol,scopeName,bodyCode(),FALSE,0); - // ol.endCodeFragment(); - //} + //printf("***** argList=%p name=%s docs=%s hasDocs=%d\n", + // argList, + // argList?argList->hasDocumentation():-1); + if (argList && argList->hasDocumentation()) + { + //printf("***** argumentList is documented\n"); + ol.startDescList(); + ol.startBold(); + parseText(ol,theTranslator->trParameters()+": "); + ol.endBold(); + ol.endDescTitle(); + ol.writeDescItem(); + ol.startDescTable(); + ArgumentListIterator ali(*argList); + Argument *a; + for (ali.toFirst();(a=ali.current());++ali) + { + if (a->hasDocumentation()) + { + ol.startDescTableTitle(); + ol.startEmphasis(); + ol.docify(a->name); + ol.endEmphasis(); + ol.endDescTableTitle(); + ol.startDescTableData(); + parseDoc(ol,scopeName,name(),a->docs); + ol.endDescTableData(); + } + } + ol.endDescTable(); + ol.endDescList(); + } + if (isEnumerate()) { bool first=TRUE; @@ -1057,7 +1126,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco { ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(), bmd->anchor(),bcd->name()); - if ( bcd->isLinkableInProject() && !Config::pdfHyperFlag ) + if ( bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ ) { writePageRef(ol,bcd->name(),bmd->anchor()); } @@ -1066,7 +1135,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco { ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(), 0,bcd->name()); - if (bcd->isLinkableInProject() && !Config::pdfHyperFlag ) + if (bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ ) { writePageRef(ol,bcd->name(),0); } @@ -1074,6 +1143,9 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco parseText(ol,reimplFromLine.right( reimplFromLine.length()-markerPos-2)); // text right from marker + ol.disableAllBut(OutputGenerator::RTF); + ol.newParagraph(); + ol.enableAll(); } else { @@ -1101,9 +1173,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco mli.toFirst(); // write the list of classes that overwrite this member ol.newParagraph(); - //parseText(ol,theTranslator->trReimplementedIn()); - //ol.writeString("Reimplemented in "); - //ol.docify(" "); QCString reimplInLine = theTranslator->trReimplementedInList(count); @@ -1130,29 +1199,20 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco if (ok && bcd && bmd) // write link for marker { - //if (bmd->hasDocumentation() && - // (bmd->protection()!=Private || Config::extractPrivateFlag) - // ) - //{ ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(), bmd->anchor(),bcd->name()); - if (bcd->isLinkableInProject() && !Config::pdfHyperFlag ) + if (bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ ) { writePageRef(ol,bcd->name(),bmd->anchor()); } - //} - //else - //{ - // ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(), - // 0,bcd->name()); - // if (!bcd->isReference() && bcd->isVisible()) - // ol.writePageRef(bcd->name(),0); - //} } ++mli; index=newIndex+matchLen; } parseText(ol,reimplInLine.right(reimplInLine.length()-index)); + ol.disableAllBut(OutputGenerator::RTF); + ol.newParagraph(); + ol.enableAll(); } } // write the list of examples that use this member @@ -1222,7 +1282,9 @@ bool MemberDef::detailsAreVisible() const (!briefDescription().isEmpty() && (!Config::briefMemDescFlag || Config::alwaysDetailsFlag) && Config::repeatBriefFlag // has brief description inside detailed area - ); + ) || + (initLines>0 && initLines<maxInitLines) + ; } void MemberDef::setEnumDecl(OutputList &ed) diff --git a/src/memberdef.h b/src/memberdef.h index b26b802..801147a 100644 --- a/src/memberdef.h +++ b/src/memberdef.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -49,6 +49,12 @@ class MemberDef : public Definition Slot, Friend }; + + enum + { + maxInitLines = 30 // maximum number of lines shown for member + // initialization + }; MemberDef(const char *type,const char *name,const char *args, const char *excp,Protection prot,Specifier virt,bool stat, @@ -61,7 +67,7 @@ class MemberDef : public Definition void writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,FileDef *fd, int prevGroupId,bool inGroup); void writeDocumentation(MemberList *ml,OutputList &ol, - const char *scopeName,MemberType m); + const char *scopeName/*,MemberType m*/); void warnIfUndocumented(); QCString getOutputFileBase() const; @@ -71,7 +77,8 @@ class MemberDef : public Definition const char *argsString() const { return args; } const char *excpString() const { return exception; } const char *anchor() const { return anc; } - //QCString bodyCode() const { return body; } + const QCString &initializer() const { return init; } + int initializerLines() const { return initLines; } ClassDef *memberClass() { return classDef; } Protection protection() const { return prot; } Specifier virtualness() const { return virt; } @@ -84,8 +91,11 @@ class MemberDef : public Definition void setFileDec(FileDef *fd) { fileDec=fd; } void setAnchor(const char *a) { anc=a; } void setProtection(Protection p) { prot=p; } - //void setBody(const QCString &b) { body=b; } void setInline(bool in) { inLine=in; } + void setInitializer(const char *i) { init=i; + init=init.stripWhiteSpace(); + initLines=init.contains('\n'); + } FileDef *getFileDef() { return fileDef; } FileDef *getFileDec() { return fileDec; } void setMemberClass(ClassDef *cd) { classDef=cd; } @@ -195,7 +205,8 @@ class MemberDef : public Definition QCString type; // return type QCString args; // function arguments/variable array specifiers QCString exception; // exceptions that can be thrown - //QCString body; // function body code + QCString init; // initializer + int initLines; // number of lines in the initializer QCString decl; // member declaration in class QCString declFile; // file where the declaration was found int declLine; // line where the declaration was found diff --git a/src/membergroup.cpp b/src/membergroup.cpp index a20f7a2..8f0bb91 100644 --- a/src/membergroup.cpp +++ b/src/membergroup.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -76,15 +76,18 @@ void MemberGroup::writeDocumentation(OutputList &ol) ol.writeString(" \n"); if (!documentation().isEmpty() || Config::repeatBriefFlag) { - bool htmlEnabled = ol.isEnabled(OutputGenerator::Html); - bool latexEnabled = ol.isEnabled(OutputGenerator::Latex); - if (htmlEnabled) ol.disable(OutputGenerator::Html); - if (latexEnabled) ol.disable(OutputGenerator::Latex); + //bool htmlEnabled = ol.isEnabled(OutputGenerator::Html); + //bool latexEnabled = ol.isEnabled(OutputGenerator::Latex); + //if (htmlEnabled) ol.disable(OutputGenerator::Html); + //if (latexEnabled) ol.disable(OutputGenerator::Latex); + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); ol.startTextLink(0,"_details"); parseText(ol,theTranslator->trMore()); ol.endTextLink(); - if (htmlEnabled) ol.enable(OutputGenerator::Html); - if (latexEnabled) ol.enable(OutputGenerator::Latex); + ol.popGeneratorState(); + //if (htmlEnabled) ol.enable(OutputGenerator::Html); + //if (latexEnabled) ol.enable(OutputGenerator::Latex); } } // TODO: man page synopsis @@ -138,10 +141,13 @@ void MemberGroup::writeDocumentation(OutputList &ol) !documentation().isEmpty()) { ol.writeRuler(); - bool latexOn = ol.isEnabled(OutputGenerator::Latex); - if (latexOn) ol.disable(OutputGenerator::Latex); + //bool latexOn = ol.isEnabled(OutputGenerator::Latex); + //if (latexOn) ol.disable(OutputGenerator::Latex); + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); ol.writeAnchor("_details"); - if (latexOn) ol.enable(OutputGenerator::Latex); + //if (latexOn) ol.enable(OutputGenerator::Latex); + ol.popGeneratorState(); ol.startGroupHeader(); parseText(ol,theTranslator->trDetailedDescription()); ol.endGroupHeader(); diff --git a/src/membergroup.h b/src/membergroup.h index 01e2598..8826f1b 100644 --- a/src/membergroup.h +++ b/src/membergroup.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/memberlist.cpp b/src/memberlist.cpp index 55f84df..ebe6925 100644 --- a/src/memberlist.cpp +++ b/src/memberlist.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -42,32 +42,38 @@ int MemberList::compareItems(GCI item1, GCI item2) void MemberList::countDecMembers() { varCnt=funcCnt=enumCnt=enumValCnt=typeCnt=protoCnt=defCnt=friendCnt=0; + m_count=0; MemberDef *md=first(); while (md) { - if ((!Config::hideMemberFlag || md->hasDocumentation()) && - (!Config::hideMemberFlag || !md->documentation().isEmpty() || - Config::briefMemDescFlag || Config::repeatBriefFlag - ) || Config::extractAllFlag || - (md->isEnumerate() && - md->hasDocumentedEnumValues() + if (!(md->memberClass()==0 && md->isStatic() && !Config::extractPrivateFlag) && + (!Config::hideMemberFlag || md->hasDocumentation()) && + ( + (!Config::hideMemberFlag || !md->documentation().isEmpty() || + Config::briefMemDescFlag || Config::repeatBriefFlag + ) || Config::extractAllFlag || + (md->isEnumerate() && + md->hasDocumentedEnumValues() + ) ) ) { switch(md->memberType()) { - case MemberDef::Variable: varCnt++; break; + case MemberDef::Variable: varCnt++,m_count++; break; case MemberDef::Function: // fall through case MemberDef::Signal: // fall through - case MemberDef::Slot: funcCnt++; break; - case MemberDef::Enumeration: enumCnt++; break; - case MemberDef::EnumValue: enumValCnt++; break; - case MemberDef::Typedef: typeCnt++; break; - case MemberDef::Prototype: protoCnt++; break; - case MemberDef::Define: if (Config::extractAllFlag || md->argsString() || md->hasDocumentation() ) - defCnt++; + case MemberDef::Slot: funcCnt++,m_count++; break; + case MemberDef::Enumeration: enumCnt++,m_count++; break; + case MemberDef::EnumValue: enumValCnt++,m_count++; break; + case MemberDef::Typedef: typeCnt++,m_count++; break; + case MemberDef::Prototype: protoCnt++,m_count++; break; + case MemberDef::Define: if (Config::extractAllFlag || + md->argsString() || + md->hasDocumentation() + ) defCnt++,m_count++; break; - case MemberDef::Friend: friendCnt++; break; + case MemberDef::Friend: friendCnt++,m_count++; break; default: err("Error: Unknown member type found!"); } @@ -78,31 +84,29 @@ void MemberList::countDecMembers() void MemberList::countDocMembers(bool inGroup) { - varCnt=funcCnt=enumCnt=enumValCnt=typeCnt=protoCnt=defCnt=friendCnt=0; + /*varCnt=funcCnt=enumCnt=enumValCnt=typeCnt=protoCnt=defCnt=friendCnt=0;*/ + m_count=0; MemberDef *md=first(); while (md) { //printf("%s MemberList::countDocMembers() details=%d\n", // md->name().data(),md->detailsAreVisible()); - if ((Config::extractAllFlag || md->detailsAreVisible()) && - (md->groupId()==-1 || inGroup)) + bool visibleIfStatic = + !(md->memberClass()==0 && md->isStatic() && !Config::extractPrivateFlag); + + if (visibleIfStatic && + (Config::extractAllFlag || md->detailsAreVisible()) && + (md->groupId()==-1 || inGroup) + ) { - QRegExp r("@[0-9]+"); + static QRegExp r("@[0-9]+"); int dummy; switch(md->memberType()) { - case MemberDef::Variable: - varCnt++; - break; - case MemberDef::Function: - case MemberDef::Signal: - case MemberDef::Slot: - funcCnt++; - break; case MemberDef::Enumeration: if (r.match(md->name(),0,&dummy)==-1) { - enumCnt++; + m_count++; } break; case MemberDef::EnumValue: @@ -110,21 +114,52 @@ void MemberList::countDocMembers(bool inGroup) MemberDef *scope; scope=md->getEnumScope(); if (scope && r.match(scope->name(),0,&dummy)!=-1) - enumValCnt++; + m_count++; } break; - case MemberDef::Typedef: - typeCnt++; - break; - case MemberDef::Prototype: - protoCnt++; - break; - case MemberDef::Define: - defCnt++; + default: + m_count++; break; - case MemberDef::Friend: - friendCnt++; } + +// QRegExp r("@[0-9]+"); +// int dummy; +// switch(md->memberType()) +// { +// case MemberDef::Variable: +// varCnt++; +// break; +// case MemberDef::Function: +// case MemberDef::Signal: +// case MemberDef::Slot: +// funcCnt++; +// break; +// case MemberDef::Enumeration: +// if (r.match(md->name(),0,&dummy)==-1) +// { +// enumCnt++; +// } +// break; +// case MemberDef::EnumValue: +// { +// MemberDef *scope; +// scope=md->getEnumScope(); +// if (scope && r.match(scope->name(),0,&dummy)!=-1) +// enumValCnt++; +// } +// break; +// case MemberDef::Typedef: +// typeCnt++; +// break; +// case MemberDef::Prototype: +// protoCnt++; +// break; +// case MemberDef::Define: +// defCnt++; +// break; +// case MemberDef::Friend: +// friendCnt++; +// } } md=next(); } @@ -262,7 +297,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,ClassDef *cd, // ) if (md->isLinkableInProject() || md->hasDocumentedEnumValues()) { - if (Config::genTagFile.length()>0) + if (!Config::genTagFile.isEmpty()) tagFile << md->name() << " " << md->anchor() << " \"\"" << endl; md->writeLink(typeDecl,cd,nd,fd,0); @@ -281,15 +316,23 @@ void MemberList::writePlainDeclarations(OutputList &ol,ClassDef *cd, MemberDef *fmd=fmdl->first(); while (fmd) { - if (fmd->hasDocumentation()) + if (fmd->hasDocumentation()) // enum value has docs { - if (Config::genTagFile.length()>0) + if (!Config::genTagFile.isEmpty()) tagFile << fmd->name() << " " << fmd->anchor() << " \"" << fmd->argsString() << "\""; fmd->writeLink(typeDecl,cd,nd,fd,0); } - else + else // no docs for this enum value + { typeDecl.writeBoldString(fmd->name()); + } + if (!fmd->initializer().isEmpty()) // enum value has initializer + { + typeDecl.writeString(" = "); + parseText(typeDecl,fmd->initializer()); + } + fmd=fmdl->next(); if (fmd) typeDecl.writeString(", "); typeDecl.disable(OutputGenerator::Man); @@ -499,12 +542,12 @@ void MemberList::writeDeclarations(OutputList &ol,ClassDef *cd,NamespaceDef *nd, } void MemberList::writeDocumentation(OutputList &ol, - const char *scopeName, MemberDef::MemberType m) + const char *scopeName/*, MemberDef::MemberType m*/) { MemberListIterator mli(*this); MemberDef *md; for ( ; (md=mli.current()) ; ++mli) { - md->writeDocumentation(this,ol,scopeName,m); + md->writeDocumentation(this,ol,scopeName); } } diff --git a/src/memberlist.h b/src/memberlist.h index abc84f2..37ea894 100644 --- a/src/memberlist.h +++ b/src/memberlist.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -40,17 +40,20 @@ class MemberList : public QList<MemberDef> void countDecMembers(); void countDocMembers(bool inGroup=FALSE); int totalCount() const - { return varCnt+funcCnt+enumCnt+enumValCnt+typeCnt+ - protoCnt+defCnt+friendCnt; } + { return //varCnt+funcCnt+enumCnt+enumValCnt+typeCnt+ + //protoCnt+defCnt+friendCnt; + m_count; + } void writePlainDeclarations(OutputList &ol,ClassDef *cd, NamespaceDef *nd,FileDef *fd,bool inGroup=FALSE); void writeDeclarations(OutputList &ol,ClassDef *cd,NamespaceDef *nd,FileDef *fd, const char *title,const char *subtitle,bool inGroup=FALSE); - void writeDocumentation(OutputList &ol,const char *scopeName, - MemberDef::MemberType m); + void writeDocumentation(OutputList &ol,const char *scopeName + /*,MemberDef::MemberType m*/); private: int varCnt,funcCnt,enumCnt,enumValCnt,typeCnt,protoCnt,defCnt,friendCnt; + int m_count; }; class MemberListIterator : public QListIterator<MemberDef> diff --git a/src/membername.cpp b/src/membername.cpp index eb28091..ff72448 100644 --- a/src/membername.cpp +++ b/src/membername.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/membername.h b/src/membername.h index f410746..5477e0f 100644 --- a/src/membername.h +++ b/src/membername.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -58,13 +58,14 @@ typedef QDict<MemberName> MemberNameDict; struct MemberInfo { MemberInfo(MemberDef *md,Protection p,Specifier v) : - memberDef(md), prot(p), virt(v) {} + memberDef(md), prot(p), virt(v),ambigClass(0) {} ~MemberInfo() {} MemberDef *memberDef; Protection prot; Specifier virt; QCString scopePath; QCString ambiguityResolutionScope; + ClassDef *ambigClass; }; class MemberNameInfo : public QList<MemberInfo> diff --git a/src/message.cpp b/src/message.cpp index c7b2a34..f7c8654 100644 --- a/src/message.cpp +++ b/src/message.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/message.h b/src/message.h index f7586ca..a053ff8 100644 --- a/src/message.h +++ b/src/message.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index 9b8db4f..c6bc347 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -24,12 +24,13 @@ #include "classlist.h" #include "memberlist.h" #include "doxygen.h" +#include "message.h" NamespaceDef::NamespaceDef(const char *name,const char *ref) : Definition(name) { fileName="namespace_"+nameToFile(name); classList = new ClassList; - memList = new MemberList; + //memList = new MemberList; usingList = 0; setReference(ref); } @@ -37,7 +38,7 @@ NamespaceDef::NamespaceDef(const char *name,const char *ref) : Definition(name) NamespaceDef::~NamespaceDef() { delete classList; - delete memList; + //delete memList; delete usingList; } @@ -53,12 +54,25 @@ void NamespaceDef::insertClass(ClassDef *cd) void NamespaceDef::insertMember(MemberDef *md) { - memList->append(md); + //memList->append(md); + allMemberList.append(md); + switch(md->memberType()) + { + case MemberDef::Variable: varMembers.inSort(md); break; + case MemberDef::Function: funcMembers.inSort(md); break; + case MemberDef::Typedef: typedefMembers.inSort(md); break; + case MemberDef::Enumeration: enumMembers.inSort(md); break; + case MemberDef::EnumValue: enumValMembers.inSort(md); break; + case MemberDef::Prototype: protoMembers.inSort(md); break; + case MemberDef::Define: defineMembers.inSort(md); break; + default: + err("NamespaceDef::insertMembers(): unexpected member insert in file!\n"); + } } void NamespaceDef::computeAnchors() { - setAnchors('a',memList); + setAnchors('a',&allMemberList); } void NamespaceDef::writeDocumentation(OutputList &ol) @@ -70,24 +84,29 @@ void NamespaceDef::writeDocumentation(OutputList &ol) parseText(ol,theTranslator->trNamespaceReference(name())); endTitle(ol,getOutputFileBase(),name()); - if (Config::genTagFile.length()>0) tagFile << "%" << name() << ":\n"; + if (!Config::genTagFile.isEmpty()) tagFile << "%" << name() << ":\n"; + ol.startTextBlock(); + OutputList briefOutput(&ol); if (!briefDescription().isEmpty()) { parseDoc(briefOutput,name(),0,briefDescription()); ol+=briefOutput; ol.writeString(" \n"); + ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); ol.startTextLink(0,"_details"); parseText(ol,theTranslator->trMore()); ol.endTextLink(); - ol.enableAll(); + ol.popGeneratorState(); } ol.disable(OutputGenerator::Man); ol.newParagraph(); ol.enable(OutputGenerator::Man); ol.writeSynopsis(); + + ol.endTextBlock(); ol.startMemberSections(); if (classList->count()>0) @@ -143,19 +162,23 @@ void NamespaceDef::writeDocumentation(OutputList &ol) if (found) ol.endMemberList(); } - memList->writeDeclarations(ol,0,this,0,0,0); + /*memList->*/allMemberList.writeDeclarations(ol,0,this,0,0,0); ol.endMemberSections(); if (!briefDescription().isEmpty() || !documentation().isEmpty()) { ol.writeRuler(); - bool latexOn = ol.isEnabled(OutputGenerator::Latex); - if (latexOn) ol.disable(OutputGenerator::Latex); + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + //bool latexOn = ol.isEnabled(OutputGenerator::Latex); + //if (latexOn) ol.disable(OutputGenerator::Latex); ol.writeAnchor("_details"); - if (latexOn) ol.enable(OutputGenerator::Latex); + //if (latexOn) ol.enable(OutputGenerator::Latex); + ol.popGeneratorState(); ol.startGroupHeader(); parseText(ol,theTranslator->trDetailedDescription()); ol.endGroupHeader(); + ol.startTextBlock(); if (!briefDescription().isEmpty()) { ol+=briefOutput; @@ -166,81 +189,96 @@ void NamespaceDef::writeDocumentation(OutputList &ol) parseDoc(ol,name(),0,documentation()+"\n"); ol.newParagraph(); } + ol.endTextBlock(); } - memList->countDocMembers(); - - if ( memList->protoCount()>0 ) + //memList->countDocMembers(); + defineMembers.countDocMembers(); + if ( defineMembers.totalCount()>0 ) + { + ol.writeRuler(); + ol.startGroupHeader(); + parseText(ol,theTranslator->trDefineDocumentation()); + ol.endGroupHeader(); + defineMembers.writeDocumentation(ol,name()); + } + + protoMembers.countDocMembers(); + if ( protoMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trFunctionPrototypeDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::Prototype); + protoMembers.writeDocumentation(ol,name()); } - if ( memList->typedefCount()>0 ) + typedefMembers.countDocMembers(); + if ( typedefMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trTypedefDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::Typedef); + typedefMembers.writeDocumentation(ol,name()); } - - if ( memList->enumCount()>0 ) + + enumMembers.countDocMembers(); + if ( enumMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trEnumerationTypeDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::Enumeration); + enumMembers.writeDocumentation(ol,name()); } - if ( memList->enumValueCount()>0 ) + enumValMembers.countDocMembers(); + if ( enumValMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trEnumerationValueDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::EnumValue); + enumValMembers.writeDocumentation(ol,name()); } - int cnt; - if ( (cnt=memList->funcCount()>0) ) + funcMembers.countDocMembers(); + if ( funcMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); - QCString cntString; - //cntString.sprintf(" (%d)",cnt); - parseText(ol,theTranslator->trFunctionDocumentation()+cntString); + parseText(ol,theTranslator->trFunctionDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::Function); + funcMembers.writeDocumentation(ol,name()); } - - if ( memList->varCount()>0 ) + + varMembers.countDocMembers(); + if ( varMembers.totalCount()>0 ) { ol.writeRuler(); ol.startGroupHeader(); parseText(ol,theTranslator->trVariableDocumentation()); ol.endGroupHeader(); - memList->writeDocumentation(ol,name(),MemberDef::Variable); + varMembers.writeDocumentation(ol,name()); } // write Author section (Man only) + ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Man); ol.startGroupHeader(); parseText(ol,theTranslator->trAuthor()); ol.endGroupHeader(); parseText(ol,theTranslator->trGeneratedAutomatically(Config::projectName)); - ol.enableAll(); + //ol.enableAll(); + ol.popGeneratorState(); endFile(ol); } int NamespaceDef::countMembers() { - memList->countDocMembers(); - return memList->totalCount()+classList->count(); + allMemberList.countDocMembers(); + return allMemberList.totalCount()+classList->count(); } void NamespaceDef::addUsingDirective(NamespaceDef *nd) diff --git a/src/namespacedef.h b/src/namespacedef.h index cf661b5..91c8634 100644 --- a/src/namespacedef.h +++ b/src/namespacedef.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -21,11 +21,11 @@ #include <qstrlist.h> #include <qdict.h> #include "definition.h" +#include "memberlist.h" class ClassDef; class OutputList; class ClassList; -class MemberList; class MemberDef; class NamespaceList; @@ -73,8 +73,16 @@ class NamespaceDef : public Definition QCString fileName; QStrList files; ClassList *classList; - MemberList *memList; NamespaceList *usingList; + + MemberList allMemberList; + MemberList defineMembers; + MemberList protoMembers; + MemberList typedefMembers; + MemberList enumMembers; + MemberList enumValMembers; + MemberList funcMembers; + MemberList varMembers; }; class NamespaceList : public QList<NamespaceDef> diff --git a/src/outputgen.cpp b/src/outputgen.cpp index 3496aad..5e176b8 100644 --- a/src/outputgen.cpp +++ b/src/outputgen.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -28,12 +28,15 @@ OutputGenerator::OutputGenerator() b.open( IO_WriteOnly ); t.setDevice(&b); active=TRUE; + genStack = new QStack<bool>; + genStack->setAutoDelete(TRUE); } OutputGenerator::~OutputGenerator() { //printf("OutputGenerator::~OutputGenerator()\n"); delete file; + delete genStack; } void OutputGenerator::startPlainFile(const char *name) @@ -76,3 +79,15 @@ QCString OutputGenerator::getContents() const return s; } +void OutputGenerator::pushGeneratorState() +{ + genStack->push(new bool(isEnabled())); +} + +void OutputGenerator::popGeneratorState() +{ + bool *b = genStack->pop(); + ASSERT(b!=0); + if (b==0) return; // for some robustness against superfluous \endhtmlonly commands. + if (*b) enable(); else disable(); +} diff --git a/src/outputgen.h b/src/outputgen.h index 18534c9..31291b0 100644 --- a/src/outputgen.h +++ b/src/outputgen.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -21,14 +21,18 @@ #include <qtextstream.h> #include <qbuffer.h> #include <qfile.h> +#include <qstack.h> #include "index.h" class ClassDiagram; +class DotGfxUsageGraph; +class DotInclDepGraph; +class DotGfxHierarchyTable; class OutputGenerator { public: - enum OutputType { Html, Latex, Man }; + enum OutputType { Html, Latex, Man, RTF }; OutputGenerator(); virtual ~OutputGenerator(); @@ -191,12 +195,25 @@ class OutputGenerator virtual void startDescTableData() = 0; virtual void endDescTableData() = 0; + virtual void startCollaborationDiagram() = 0; + virtual void endCollaborationDiagram(DotGfxUsageGraph &g) = 0; + virtual void startInclDepGraph() = 0; + virtual void endInclDepGraph(DotInclDepGraph &g) = 0; + virtual void writeGraphicalHierarchy(DotGfxHierarchyTable &g) = 0; + + virtual void startTextBlock(bool) = 0; + virtual void endTextBlock() = 0; + virtual void lastIndexPage() = 0; + + void clear() { b.close(); a.resize(0); b.setBuffer(a); b.open(IO_WriteOnly); t.setDevice(&b); } void startPlainFile(const char *name); void endPlainFile(); QCString getContents() const; bool isEnabled() const { return active; } + void pushGeneratorState(); + void popGeneratorState(); protected: QTextStream fs; QByteArray a; @@ -209,6 +226,7 @@ class OutputGenerator private: OutputGenerator(const OutputGenerator &o); OutputGenerator &operator=(const OutputGenerator &o); + QStack<bool> *genStack; }; #endif diff --git a/src/outputlist.cpp b/src/outputlist.cpp index 47354eb..b404210 100644 --- a/src/outputlist.cpp +++ b/src/outputlist.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -157,6 +157,26 @@ OutputList &OutputList::operator+=(const OutputList &outputList) return *this; } +void OutputList::pushGeneratorState() +{ + OutputGenerator *og=outputs->first(); + while (og) + { + og->pushGeneratorState(); + og=outputs->next(); + } +} + +void OutputList::popGeneratorState() +{ + OutputGenerator *og=outputs->first(); + while (og) + { + og->popGeneratorState(); + og=outputs->next(); + } +} + //-------------------------------------------------------------------------- // Create some overloaded definitions of the forall function. // Using template functions here would have made it a little less @@ -226,6 +246,9 @@ void OutputList::forall(void (OutputGenerator::*func)(a1,a2,a3,a4),a1,a2,a3,a4) FORALL1(const char *a1,a1) FORALL1(char a1,a1) FORALL1(int a1,a1) +FORALL1(DotGfxUsageGraph &a1,a1) +FORALL1(DotInclDepGraph &a1,a1) +FORALL1(DotGfxHierarchyTable &a1,a1) #if defined(HAS_BOOL_TYPE) FORALL1(bool a1,a1) FORALL2(bool a1,int a2,a1,a2) diff --git a/src/outputlist.h b/src/outputlist.h index 5c2d834..c3ac2a2 100644 --- a/src/outputlist.h +++ b/src/outputlist.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -32,6 +32,9 @@ void forall(void (OutputGenerator::*func)(arg1,arg2,arg3,arg4),arg1,arg2,arg3,arg4) class ClassDiagram; +class DotGfxUsageGraph; +class DotInclDepGraph; +class DotGfxHierarchyTable; class OutputList { @@ -49,6 +52,8 @@ class OutputList void disable(OutputGenerator::OutputType o); void enable(OutputGenerator::OutputType o); bool isEnabled(OutputGenerator::OutputType o); + void pushGeneratorState(); + void popGeneratorState(); //void writeIndex() //{ forall(&OutputGenerator::writeIndex); } @@ -334,6 +339,22 @@ class OutputList { forall(&OutputGenerator::startDescTableData); } void endDescTableData() { forall(&OutputGenerator::endDescTableData); } + void startCollaborationDiagram() + { forall(&OutputGenerator::startCollaborationDiagram); } + void endCollaborationDiagram(DotGfxUsageGraph &g) + { forall(&OutputGenerator::endCollaborationDiagram,g); } + void startInclDepGraph() + { forall(&OutputGenerator::startInclDepGraph); } + void endInclDepGraph(DotInclDepGraph &g) + { forall(&OutputGenerator::endInclDepGraph,g); } + void writeGraphicalHierarchy(DotGfxHierarchyTable &g) + { forall(&OutputGenerator::writeGraphicalHierarchy,g); } + void startTextBlock(bool dense=FALSE) + { forall(&OutputGenerator::startTextBlock,dense); } + void endTextBlock() + { forall(&OutputGenerator::endTextBlock); } + void lastIndexPage() + { forall(&OutputGenerator::lastIndexPage); } private: void debug(); @@ -344,6 +365,9 @@ class OutputList FORALLPROTO1(char); FORALLPROTO1(IndexSections); FORALLPROTO1(int); + FORALLPROTO1(DotGfxUsageGraph &); + FORALLPROTO1(DotInclDepGraph &); + FORALLPROTO1(DotGfxHierarchyTable &); #if defined(HAS_BOOL_TYPE) FORALLPROTO1(bool); FORALLPROTO2(bool,int); diff --git a/src/pre.cpp b/src/pre.cpp index aa77ed1..96f5312 100644 --- a/src/pre.cpp +++ b/src/pre.cpp @@ -394,7 +394,7 @@ static yyconst short int yy_acclist[768] = 34, 40, 39, 8212, 8212, 34, 8212 } ; -static yyconst short int yy_accept[364] = +static yyconst short int yy_accept[366] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -424,18 +424,18 @@ static yyconst short int yy_accept[364] = 619, 620, 621, 623, 625, 626, 627, 628, 629, 630, 630, 631, 633, 633, 634, 635, 636, 636, 637, 638, 639, 640, 641, 644, 644, 645, 646, 647, 648, 648, - 649, 650, 650, 651, 653, 655, 656, 657, 658, 659, - 660, 661, 662, 664, 667, 668, 671, 674, 675, 676, - 678, 681, 682, 685, 688, 689, 689, 690, 691, 692, - 694, 696, 697, 698, 700, 702, 703, 704, 705, 706, - - 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 718, 719, 719, 720, 721, 722, 723, 724, - 725, 726, 727, 728, 730, 731, 732, 733, 733, 734, - 736, 737, 738, 739, 740, 741, 742, 743, 745, 746, - 746, 747, 748, 749, 750, 751, 752, 753, 753, 754, - 755, 756, 758, 758, 759, 760, 762, 763, 764, 765, - 767, 768, 768 + 649, 650, 650, 651, 653, 655, 656, 657, 657, 658, + 659, 660, 661, 662, 664, 667, 668, 671, 674, 675, + 676, 678, 681, 682, 685, 688, 689, 689, 689, 690, + 691, 692, 694, 696, 697, 698, 700, 702, 703, 704, + + 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, + 715, 716, 717, 718, 718, 719, 719, 720, 721, 722, + 723, 724, 725, 726, 727, 728, 730, 731, 732, 733, + 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, + 745, 746, 746, 747, 748, 749, 750, 751, 752, 753, + 753, 754, 755, 756, 758, 758, 759, 760, 762, 763, + 764, 765, 767, 768, 768 } ; static yyconst int yy_ec[256] = @@ -477,244 +477,244 @@ static yyconst int yy_meta[31] = 11, 11, 11, 11, 11, 11, 11, 11, 11, 1 } ; -static yyconst short int yy_base[404] = +static yyconst short int yy_base[406] = { 0, 0, 29, 58, 87, 117, 0, 147, 0, 176, 205, 235, 0, 264, 293, 322, 0, 334, 0, 361, 0, 390, 0, 419, 448, 477, 506, 535, 564, 593, 622, 651, 680, 709, 738, 767, 796, 825, 854, 884, 0, 905, 0, 933, 962, 991, 1020, 1032, 0, 1060, 1089, - 1118, 1147, 1176, 1205, 374, 1633, 1633, 1633, 1633, 1, + 1118, 1147, 1176, 1205, 378, 1633, 1633, 1633, 1633, 1, 1633, 1633, 1633, 0, 1633, 1633, 1633, 2, 1633, 1633, - 1633, 1633, 1633, 6, 0, 349, 0, 1, 342, 1633, - 1633, 1633, 1633, 1633, 7, 0, 9, 344, 1633, 0, + 1633, 1633, 1633, 6, 0, 354, 0, 1, 349, 1633, + 1633, 1633, 1633, 1633, 7, 0, 9, 351, 1633, 0, 0, 1633, 0, 8, 0, 1633, 1633, 1633, 1633, 18, 35, 1633, 31, 35, 36, 40, 39, 46, 61, 58, - 364, 363, 362, 341, 1633, 1633, 3, 1633, 1633, 1633, - 335, 1633, 36, 1633, 0, 336, 1633, 1633, 1633, 1633, + 371, 369, 366, 355, 1633, 1633, 3, 1633, 1633, 1633, + 360, 1633, 36, 1633, 0, 4, 1633, 1633, 1633, 1633, 55, 1633, 1633, 1633, 64, 1633, 1633, 1633, 62, 1633, - 0, 0, 1633, 0, 325, 63, 0, 0, 0, 1633, - 0, 64, 0, 0, 0, 1633, 0, 324, 68, 0, + 0, 0, 1633, 0, 352, 63, 0, 0, 0, 1633, + 0, 64, 0, 0, 0, 1633, 0, 351, 68, 0, 0, 0, 0, 69, 0, 1633, 1633, 1633, 1633, 70, - 333, 312, 1633, 1633, 1633, 1633, 1633, 82, 0, 330, + 19, 331, 1633, 1633, 1633, 1633, 1633, 82, 0, 338, 1633, 1633, 0, 1633, 1633, 1633, 1633, 84, 0, 1633, 1633, 1633, 1633, 1633, 86, 0, 1633, 0, 1633, 1633, 1633, 88, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, - 92, 1633, 1633, 1633, 1633, 1633, 1633, 93, 327, 1633, - 1633, 1633, 1633, 102, 1633, 0, 308, 83, 309, 176, - 309, 307, 1633, 1633, 0, 85, 306, 186, 0, 179, - 1633, 188, 188, 1633, 194, 195, 193, 1633, 211, 5, - 1633, 1633, 212, 214, 322, 319, 318, 317, 306, 305, - 109, 310, 313, 1633, 1633, 0, 1633, 1633, 215, 1633, - 0, 1633, 1633, 0, 0, 0, 0, 0, 1633, 1633, - 0, 0, 0, 0, 1633, 291, 0, 1633, 0, 1633, - 1633, 1633, 0, 1633, 1633, 1633, 289, 289, 289, 286, - - 1633, 286, 286, 280, 282, 280, 280, 277, 1633, 278, - 278, 283, 290, 267, 264, 220, 1221, 266, 263, 263, - 254, 206, 222, 0, 180, 175, 1633, 160, 163, 1633, - 1633, 1236, 223, 91, 92, 84, 1633, 0, 224, 63, - 82, 1633, 225, 1633, 264, 35, 21, 1, 8, 268, - 1633, 269, 271, 273, 1633, 0, 279, 1633, 0, 0, - 0, 1633, 1265, 1276, 1287, 1298, 1309, 1320, 1331, 1342, - 1353, 1364, 1375, 1386, 1397, 1408, 1419, 1430, 1441, 1443, - 1445, 1456, 1466, 1477, 1487, 1497, 1501, 1503, 1514, 1525, - 1536, 1547, 1558, 1560, 1562, 1573, 1575, 1586, 1597, 1607, - - 1617, 1619, 1621 + 92, 1633, 1633, 1633, 1633, 1633, 1633, 93, 334, 1633, + 1633, 1633, 1633, 102, 1633, 0, 315, 83, 316, 176, + 316, 313, 1633, 1633, 0, 85, 312, 186, 0, 179, + 1633, 188, 188, 1633, 194, 195, 193, 1633, 211, 82, + 1633, 1633, 212, 214, 330, 329, 328, 327, 316, 315, + 109, 318, 319, 1633, 1633, 0, 1633, 317, 1633, 215, + 1633, 0, 1633, 1633, 0, 0, 0, 0, 0, 1633, + 1633, 0, 0, 0, 0, 1633, 316, 295, 0, 1633, + 0, 1633, 1633, 1633, 0, 1633, 1633, 1633, 293, 293, + + 293, 290, 1633, 291, 291, 286, 288, 285, 285, 281, + 1633, 282, 282, 290, 299, 276, 273, 220, 1221, 272, + 269, 269, 262, 266, 222, 0, 263, 262, 1633, 256, + 207, 1633, 1633, 1236, 223, 180, 177, 184, 1633, 0, + 224, 163, 112, 1633, 225, 1633, 264, 91, 84, 36, + 8, 268, 1633, 269, 271, 273, 1633, 0, 279, 1633, + 0, 0, 0, 1633, 1265, 1276, 1287, 1298, 1309, 1320, + 1331, 1342, 1353, 1364, 1375, 1386, 1397, 1408, 1419, 1430, + 1441, 1443, 1445, 1456, 1466, 1477, 1487, 1497, 1501, 1503, + 1514, 1525, 1536, 1547, 1558, 1560, 1562, 1573, 1575, 1586, + + 1597, 1607, 1617, 1619, 1621 } ; -static yyconst short int yy_def[404] = +static yyconst short int yy_def[406] = { 0, - 363, 363, 363, 364, 362, 5, 362, 7, 365, 365, - 362, 11, 366, 366, 363, 15, 15, 17, 17, 19, - 362, 21, 367, 368, 363, 363, 363, 363, 369, 369, - 370, 370, 371, 371, 372, 372, 373, 373, 362, 39, - 39, 41, 374, 374, 375, 375, 17, 47, 376, 376, - 377, 377, 378, 378, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 379, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 380, 380, 380, 380, 380, 362, - 362, 362, 362, 362, 362, 381, 381, 381, 362, 382, - 382, 362, 382, 362, 382, 362, 362, 362, 362, 362, - - 383, 362, 384, 384, 384, 384, 384, 385, 386, 362, - 362, 362, 362, 387, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 388, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 389, 362, 362, 362, 362, 362, - 390, 390, 362, 390, 362, 390, 390, 391, 391, 362, - 391, 391, 391, 392, 392, 362, 392, 362, 392, 392, - 393, 393, 393, 393, 393, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 394, 362, - 362, 362, 395, 362, 362, 362, 362, 362, 396, 362, - 362, 362, 362, 362, 362, 396, 362, 397, 362, 362, - - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 379, 362, 380, 380, 380, 380, 380, - 380, 380, 362, 362, 381, 381, 381, 381, 382, 362, - 362, 383, 384, 362, 384, 384, 362, 362, 385, 362, - 362, 362, 386, 362, 362, 362, 362, 362, 362, 387, - 362, 362, 362, 362, 362, 388, 362, 362, 389, 362, - 390, 362, 362, 390, 391, 391, 391, 392, 362, 362, - 392, 393, 393, 393, 362, 362, 394, 362, 395, 362, - 362, 362, 397, 362, 362, 362, 380, 380, 380, 380, - - 362, 380, 380, 380, 380, 381, 381, 381, 362, 381, - 381, 362, 362, 362, 380, 380, 398, 380, 380, 380, - 380, 380, 381, 381, 381, 381, 362, 362, 380, 362, - 362, 399, 380, 380, 380, 380, 362, 381, 381, 362, - 380, 362, 362, 362, 380, 380, 362, 362, 362, 362, - 362, 400, 362, 401, 362, 402, 362, 362, 403, 402, - 403, 0, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - - 362, 362, 362 + 365, 365, 365, 366, 364, 5, 364, 7, 367, 367, + 364, 11, 368, 368, 365, 15, 15, 17, 17, 19, + 364, 21, 369, 370, 365, 365, 365, 365, 371, 371, + 372, 372, 373, 373, 374, 374, 375, 375, 364, 39, + 39, 41, 376, 376, 377, 377, 17, 47, 378, 378, + 379, 379, 380, 380, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 381, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 382, 382, 382, 382, 382, 364, + 364, 364, 364, 364, 364, 383, 383, 383, 364, 384, + 384, 364, 384, 364, 384, 364, 364, 364, 364, 364, + + 385, 364, 386, 386, 386, 386, 386, 387, 388, 364, + 364, 364, 364, 389, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 390, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 391, 364, 364, 364, 364, 364, + 392, 392, 364, 392, 364, 392, 392, 393, 393, 364, + 393, 393, 393, 394, 394, 364, 394, 364, 394, 394, + 395, 395, 395, 395, 395, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 396, 364, + 364, 364, 397, 364, 364, 364, 364, 364, 398, 364, + 364, 364, 364, 364, 364, 398, 364, 399, 364, 364, + + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 381, 364, 382, 382, 382, 382, 382, + 382, 382, 364, 364, 383, 383, 383, 383, 384, 364, + 364, 385, 386, 364, 386, 386, 364, 364, 387, 364, + 364, 364, 388, 364, 364, 364, 364, 364, 364, 389, + 364, 364, 364, 364, 364, 390, 364, 364, 364, 391, + 364, 392, 364, 364, 392, 393, 393, 393, 394, 364, + 364, 394, 395, 395, 395, 364, 364, 364, 396, 364, + 397, 364, 364, 364, 399, 364, 364, 364, 382, 382, + + 382, 382, 364, 382, 382, 382, 382, 383, 383, 383, + 364, 383, 383, 364, 364, 364, 382, 382, 400, 382, + 382, 382, 382, 382, 383, 383, 383, 383, 364, 364, + 382, 364, 364, 401, 382, 382, 382, 382, 364, 383, + 383, 364, 382, 364, 364, 364, 382, 382, 364, 364, + 364, 364, 364, 402, 364, 403, 364, 404, 364, 364, + 405, 404, 405, 0, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + + 364, 364, 364, 364, 364 } ; static yyconst short int yy_nxt[1664] = { 0, - 362, 57, 224, 58, 59, 261, 225, 250, 251, 262, - 349, 221, 221, 60, 222, 222, 221, 233, 233, 222, - 234, 234, 353, 347, 230, 228, 229, 231, 221, 61, + 364, 57, 224, 58, 59, 261, 225, 267, 268, 262, + 351, 221, 221, 60, 222, 222, 221, 233, 233, 222, + 234, 234, 286, 287, 230, 228, 229, 231, 221, 61, 57, 222, 58, 59, 236, 237, 244, 240, 240, 240, 244, 244, 60, 241, 244, 244, 264, 244, 247, 265, - 245, 244, 244, 246, 248, 244, 244, 352, 61, 57, - 254, 58, 59, 250, 251, 233, 269, 255, 234, 252, - 270, 60, 233, 273, 276, 234, 274, 277, 280, 283, - 221, 281, 284, 222, 349, 348, 347, 61, 63, 64, - 65, 66, 221, 67, 290, 222, 221, 291, 221, 222, - - 68, 222, 221, 294, 224, 222, 295, 298, 225, 306, - 299, 261, 307, 346, 345, 262, 69, 70, 71, 70, + 245, 244, 244, 246, 248, 244, 244, 355, 61, 57, + 254, 58, 59, 250, 251, 233, 270, 255, 234, 252, + 271, 60, 233, 274, 277, 234, 275, 278, 281, 284, + 221, 282, 285, 222, 250, 251, 349, 61, 63, 64, + 65, 66, 221, 67, 292, 222, 221, 293, 221, 222, + + 68, 222, 221, 296, 224, 222, 297, 300, 225, 308, + 301, 261, 309, 354, 351, 262, 69, 70, 71, 70, 72, 73, 70, 70, 70, 70, 70, 70, 70, 70, 74, 70, 70, 70, 70, 75, 70, 75, 76, 77, 75, 78, 75, 75, 75, 79, 80, 81, 82, 81, 83, 84, 81, 81, 81, 81, 81, 81, 81, 81, 85, 81, 81, 81, 81, 86, 81, 86, 86, 87, - 86, 88, 86, 86, 86, 86, 89, 91, 301, 92, - 93, 240, 240, 240, 301, 341, 340, 241, 309, 94, - 240, 240, 240, 244, 309, 247, 241, 302, 339, 244, - - 244, 248, 303, 338, 244, 95, 91, 310, 92, 93, - 244, 244, 311, 247, 250, 251, 254, 269, 94, 248, - 252, 270, 330, 255, 337, 343, 309, 343, 330, 336, - 337, 344, 309, 344, 95, 96, 97, 96, 98, 99, + 86, 88, 86, 86, 86, 86, 89, 91, 303, 92, + 93, 240, 240, 240, 303, 350, 349, 241, 311, 94, + 240, 240, 240, 244, 311, 247, 241, 304, 348, 244, + + 244, 248, 305, 347, 244, 95, 91, 312, 92, 93, + 244, 244, 313, 247, 250, 251, 254, 270, 94, 248, + 252, 271, 332, 255, 339, 345, 311, 345, 332, 343, + 339, 346, 311, 346, 95, 96, 97, 96, 98, 99, 96, 96, 96, 96, 96, 96, 96, 96, 100, 96, 96, 96, 96, 101, 96, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 102, 104, 350, 58, 105, 56, - 350, 354, 351, 357, 355, 354, 351, 106, 355, 358, - 56, 357, 335, 226, 355, 334, 333, 358, 355, 332, - 329, 328, 313, 107, 104, 327, 58, 105, 56, 310, - - 326, 325, 324, 323, 322, 321, 106, 320, 319, 56, - 318, 317, 316, 315, 314, 313, 263, 259, 312, 258, - 257, 256, 107, 57, 257, 58, 59, 308, 305, 304, - 300, 297, 296, 288, 286, 60, 285, 279, 272, 267, - 108, 263, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 61, 109, 259, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 110, 258, 257, 256, 238, 232, 111, - 112, 227, 113, 362, 362, 362, 362, 362, 362, 114, - 362, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 101, 101, 101, 101, 102, 104, 352, 58, 105, 56, + 352, 356, 353, 359, 357, 356, 353, 106, 357, 360, + 56, 359, 342, 226, 357, 341, 340, 360, 357, 338, + 337, 336, 335, 107, 104, 334, 58, 105, 56, 331, + + 330, 315, 329, 312, 328, 327, 106, 326, 325, 56, + 324, 323, 322, 321, 320, 319, 318, 317, 316, 286, + 267, 315, 107, 57, 263, 58, 59, 259, 314, 258, + 257, 256, 257, 310, 307, 60, 306, 302, 299, 298, + 108, 290, 108, 108, 108, 108, 108, 108, 108, 108, + 108, 61, 109, 288, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 110, 280, 273, 263, 259, 258, 111, + 112, 257, 113, 256, 238, 232, 227, 364, 364, 114, + 364, 114, 114, 114, 114, 114, 114, 114, 114, 114, 115, 116, 117, 118, 119, 120, 121, 122, 115, 115, 115, 115, 115, 123, 115, 115, 115, 124, 125, 126, 125, 125, 125, 125, 125, 125, 125, 125, 125, 127, - 129, 362, 58, 130, 362, 362, 362, 362, 362, 362, - 362, 362, 131, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 132, 134, - 135, 136, 137, 362, 138, 362, 362, 362, 362, 362, - 362, 139, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 140, 57, 362, - 58, 59, 362, 362, 362, 362, 362, 362, 362, 362, - 60, 362, 362, 362, 362, 362, 362, 362, 362, 362, - - 362, 362, 362, 362, 362, 362, 61, 57, 362, 58, - 59, 362, 362, 362, 362, 362, 362, 362, 362, 60, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 61, 57, 362, 58, 59, - 362, 362, 362, 362, 362, 362, 362, 362, 60, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 61, 57, 362, 58, 59, 362, - 362, 362, 362, 362, 362, 362, 362, 60, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 61, 142, 362, 143, 144, 362, 362, - - 362, 362, 362, 145, 362, 362, 146, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 147, 142, 362, 143, 144, 362, 362, 362, - 362, 362, 145, 362, 362, 146, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 147, 149, 362, 150, 151, 362, 362, 362, 362, - 362, 362, 362, 362, 152, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 153, 149, 362, 150, 151, 362, 362, 362, 362, 362, - 362, 362, 362, 152, 362, 362, 362, 362, 362, 362, - - 362, 362, 362, 362, 362, 362, 362, 362, 362, 153, - 155, 362, 156, 157, 362, 362, 362, 362, 362, 158, - 362, 362, 159, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 160, 155, - 362, 156, 157, 362, 362, 362, 362, 362, 158, 362, - 362, 159, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 160, 162, 362, - 150, 163, 362, 362, 362, 362, 362, 362, 362, 362, - 164, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 165, 162, 362, 150, - - 163, 362, 362, 362, 362, 362, 362, 362, 362, 164, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 165, 167, 362, 168, 169, - 362, 362, 362, 362, 362, 362, 362, 362, 170, 362, - 362, 362, 362, 362, 171, 362, 172, 362, 362, 362, - 362, 362, 362, 362, 173, 167, 362, 168, 169, 362, - 362, 362, 362, 362, 362, 362, 362, 170, 362, 362, - 362, 362, 362, 171, 362, 172, 362, 362, 362, 362, - 362, 362, 362, 173, 174, 175, 174, 176, 177, 174, + 129, 364, 58, 130, 364, 364, 364, 364, 364, 364, + 364, 364, 131, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 132, 134, + 135, 136, 137, 364, 138, 364, 364, 364, 364, 364, + 364, 139, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 140, 57, 364, + 58, 59, 364, 364, 364, 364, 364, 364, 364, 364, + 60, 364, 364, 364, 364, 364, 364, 364, 364, 364, + + 364, 364, 364, 364, 364, 364, 61, 57, 364, 58, + 59, 364, 364, 364, 364, 364, 364, 364, 364, 60, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 61, 57, 364, 58, 59, + 364, 364, 364, 364, 364, 364, 364, 364, 60, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 61, 57, 364, 58, 59, 364, + 364, 364, 364, 364, 364, 364, 364, 60, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 61, 142, 364, 143, 144, 364, 364, + + 364, 364, 364, 145, 364, 364, 146, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 147, 142, 364, 143, 144, 364, 364, 364, + 364, 364, 145, 364, 364, 146, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 147, 149, 364, 150, 151, 364, 364, 364, 364, + 364, 364, 364, 364, 152, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 153, 149, 364, 150, 151, 364, 364, 364, 364, 364, + 364, 364, 364, 152, 364, 364, 364, 364, 364, 364, + + 364, 364, 364, 364, 364, 364, 364, 364, 364, 153, + 155, 364, 156, 157, 364, 364, 364, 364, 364, 158, + 364, 364, 159, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 160, 155, + 364, 156, 157, 364, 364, 364, 364, 364, 158, 364, + 364, 159, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 160, 162, 364, + 150, 163, 364, 364, 364, 364, 364, 364, 364, 364, + 164, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 165, 162, 364, 150, + + 163, 364, 364, 364, 364, 364, 364, 364, 364, 164, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 165, 167, 364, 168, 169, + 364, 364, 364, 364, 364, 364, 364, 364, 170, 364, + 364, 364, 364, 364, 171, 364, 172, 364, 364, 364, + 364, 364, 364, 364, 173, 167, 364, 168, 169, 364, + 364, 364, 364, 364, 364, 364, 364, 170, 364, 364, + 364, 364, 364, 171, 364, 172, 364, 364, 364, 364, + 364, 364, 364, 173, 174, 175, 174, 176, 177, 174, 174, 174, 174, 174, 174, 174, 174, 178, 174, 174, 174, 174, 179, 180, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 181, 182, 362, 362, 362, 362, 362, - 362, 362, 362, 183, 362, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 185, 362, 58, 186, 187, 362, - 362, 362, 362, 362, 362, 362, 188, 362, 362, 362, - 362, 362, 189, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 190, 185, 362, 58, 186, 187, 362, 362, - 362, 362, 362, 362, 362, 188, 362, 362, 362, 362, - 362, 189, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 190, 192, 362, 58, 193, 362, 362, 194, 362, - - 362, 362, 362, 362, 195, 362, 362, 362, 362, 362, - 196, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 197, 192, 362, 58, 193, 362, 362, 194, 362, 362, - 362, 362, 362, 195, 362, 362, 362, 362, 362, 196, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 197, - 198, 362, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 200, 362, 72, 201, 362, 362, 362, 362, 362, - 362, 362, 362, 202, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 203, - 200, 362, 72, 201, 362, 362, 362, 362, 362, 362, - - 362, 362, 202, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 203, 205, - 362, 206, 207, 208, 362, 362, 209, 210, 362, 362, - 362, 211, 362, 362, 362, 212, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 213, 205, 362, - 206, 207, 208, 362, 362, 209, 210, 362, 362, 362, - 211, 362, 362, 362, 212, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 213, 215, 362, 58, - 216, 217, 362, 362, 362, 362, 362, 362, 362, 218, - 362, 362, 362, 362, 362, 219, 362, 362, 362, 362, - - 362, 362, 362, 362, 362, 220, 215, 362, 58, 216, - 217, 362, 362, 362, 362, 362, 362, 362, 218, 362, - 362, 362, 362, 362, 219, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 220, 226, 362, 362, 362, 226, - 362, 226, 226, 226, 226, 226, 226, 226, 226, 226, - 226, 362, 362, 362, 226, 362, 226, 226, 226, 226, + 179, 179, 179, 181, 182, 364, 364, 364, 364, 364, + 364, 364, 364, 183, 364, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 185, 364, 58, 186, 187, 364, + 364, 364, 364, 364, 364, 364, 188, 364, 364, 364, + 364, 364, 189, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 190, 185, 364, 58, 186, 187, 364, 364, + 364, 364, 364, 364, 364, 188, 364, 364, 364, 364, + 364, 189, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 190, 192, 364, 58, 193, 364, 364, 194, 364, + + 364, 364, 364, 364, 195, 364, 364, 364, 364, 364, + 196, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 197, 192, 364, 58, 193, 364, 364, 194, 364, 364, + 364, 364, 364, 195, 364, 364, 364, 364, 364, 196, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 197, + 198, 364, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 200, 364, 72, 201, 364, 364, 364, 364, 364, + 364, 364, 364, 202, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 203, + 200, 364, 72, 201, 364, 364, 364, 364, 364, 364, + + 364, 364, 202, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 203, 205, + 364, 206, 207, 208, 364, 364, 209, 210, 364, 364, + 364, 211, 364, 364, 364, 212, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 213, 205, 364, + 206, 207, 208, 364, 364, 209, 210, 364, 364, 364, + 211, 364, 364, 364, 212, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 213, 215, 364, 58, + 216, 217, 364, 364, 364, 364, 364, 364, 364, 218, + 364, 364, 364, 364, 364, 219, 364, 364, 364, 364, + + 364, 364, 364, 364, 364, 220, 215, 364, 58, 216, + 217, 364, 364, 364, 364, 364, 364, 364, 218, 364, + 364, 364, 364, 364, 219, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 220, 226, 364, 364, 364, 226, + 364, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 364, 364, 364, 226, 364, 226, 226, 226, 226, 226, 226, 226, 226, 226, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 90, 90, 90, @@ -736,75 +736,75 @@ static yyconst short int yy_nxt[1664] = 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 223, 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 226, 226, 235, 235, 239, 239, 362, 239, - 239, 239, 239, 239, 362, 239, 239, 242, 242, 242, - 362, 242, 362, 362, 362, 242, 242, 243, 243, 362, - 243, 243, 243, 243, 243, 243, 243, 243, 249, 362, - 362, 362, 249, 362, 362, 362, 249, 249, 253, 253, - - 362, 362, 253, 362, 362, 362, 253, 253, 260, 362, - 260, 260, 266, 266, 268, 268, 268, 268, 268, 268, - 268, 268, 268, 268, 268, 271, 271, 362, 271, 271, - 271, 362, 271, 271, 271, 271, 275, 275, 362, 275, - 275, 275, 275, 275, 275, 275, 275, 278, 278, 362, - 278, 278, 278, 362, 278, 278, 278, 278, 282, 282, - 362, 282, 282, 282, 282, 282, 282, 282, 282, 287, - 287, 289, 289, 292, 292, 362, 292, 292, 292, 292, - 292, 292, 292, 292, 293, 293, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 342, 342, 342, - - 342, 342, 342, 342, 342, 342, 342, 342, 356, 362, - 362, 356, 362, 362, 362, 362, 356, 356, 359, 362, - 362, 359, 362, 362, 362, 362, 362, 359, 360, 360, - 361, 361, 55, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362 + 223, 223, 226, 226, 235, 235, 239, 239, 364, 239, + 239, 239, 239, 239, 364, 239, 239, 242, 242, 242, + 364, 242, 364, 364, 364, 242, 242, 243, 243, 364, + 243, 243, 243, 243, 243, 243, 243, 243, 249, 364, + 364, 364, 249, 364, 364, 364, 249, 249, 253, 253, + + 364, 364, 253, 364, 364, 364, 253, 253, 260, 364, + 260, 260, 266, 266, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 272, 272, 364, 272, 272, + 272, 364, 272, 272, 272, 272, 276, 276, 364, 276, + 276, 276, 276, 276, 276, 276, 276, 279, 279, 364, + 279, 279, 279, 364, 279, 279, 279, 279, 283, 283, + 364, 283, 283, 283, 283, 283, 283, 283, 283, 289, + 289, 291, 291, 294, 294, 364, 294, 294, 294, 294, + 294, 294, 294, 294, 295, 295, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 344, 344, 344, + + 344, 344, 344, 344, 344, 344, 344, 344, 358, 364, + 364, 358, 364, 364, 364, 364, 358, 358, 361, 364, + 364, 361, 364, 364, 364, 364, 364, 361, 362, 362, + 363, 363, 55, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364 } ; static yyconst short int yy_chk[1664] = { 0, - 0, 1, 64, 1, 1, 117, 64, 250, 250, 117, - 349, 60, 68, 1, 60, 68, 74, 85, 94, 74, - 85, 94, 348, 347, 78, 77, 77, 78, 100, 1, + 0, 1, 64, 1, 1, 117, 64, 126, 126, 117, + 351, 60, 68, 1, 60, 68, 74, 85, 94, 74, + 85, 94, 171, 171, 78, 77, 77, 78, 100, 1, 2, 100, 2, 2, 87, 87, 103, 101, 101, 101, 104, 105, 2, 101, 107, 106, 123, 103, 108, 123, - 106, 104, 105, 106, 108, 107, 106, 346, 2, 3, + 106, 104, 105, 106, 108, 107, 106, 350, 2, 3, 110, 3, 3, 109, 109, 131, 135, 110, 131, 109, 135, 3, 139, 146, 152, 139, 146, 152, 159, 164, - 170, 159, 164, 170, 341, 340, 336, 3, 4, 4, + 170, 159, 164, 170, 250, 250, 349, 3, 4, 4, 4, 4, 178, 4, 188, 178, 195, 188, 202, 195, 4, 202, 211, 218, 224, 211, 218, 228, 224, 236, - 228, 261, 236, 335, 334, 261, 4, 5, 5, 5, + 228, 261, 236, 348, 343, 261, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 230, 9, - 9, 240, 240, 240, 230, 329, 328, 240, 238, 9, - 242, 242, 242, 243, 238, 247, 242, 230, 326, 245, + 9, 240, 240, 240, 230, 342, 338, 240, 238, 9, + 242, 242, 242, 243, 238, 247, 242, 230, 337, 245, - 246, 247, 230, 325, 243, 9, 10, 238, 10, 10, - 245, 246, 238, 249, 253, 253, 254, 269, 10, 249, - 253, 269, 316, 254, 323, 333, 339, 343, 316, 322, - 323, 333, 339, 343, 10, 11, 11, 11, 11, 11, + 246, 247, 230, 336, 243, 9, 10, 238, 10, 10, + 245, 246, 238, 249, 253, 253, 254, 270, 10, 249, + 253, 270, 318, 254, 325, 335, 341, 345, 318, 331, + 325, 335, 341, 345, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 13, 345, 13, 13, 13, - 350, 352, 345, 353, 352, 354, 350, 13, 354, 353, - 13, 357, 321, 352, 352, 320, 319, 357, 354, 318, - 315, 314, 313, 13, 14, 312, 14, 14, 14, 311, - - 310, 308, 307, 306, 305, 304, 14, 303, 302, 14, - 300, 299, 298, 297, 286, 263, 262, 260, 259, 258, - 257, 256, 14, 15, 255, 15, 15, 237, 232, 231, - 229, 227, 219, 180, 172, 15, 171, 158, 145, 126, - 15, 121, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 17, 114, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 19, 113, 112, 111, 88, 79, 19, - 19, 76, 19, 55, 0, 0, 0, 0, 0, 19, + 11, 11, 11, 11, 11, 13, 347, 13, 13, 13, + 352, 354, 347, 355, 354, 356, 352, 13, 356, 355, + 13, 359, 330, 354, 354, 328, 327, 359, 356, 324, + 323, 322, 321, 13, 14, 320, 14, 14, 14, 317, + + 316, 315, 314, 313, 312, 310, 14, 309, 308, 14, + 307, 306, 305, 304, 302, 301, 300, 299, 288, 287, + 268, 263, 14, 15, 262, 15, 15, 260, 259, 258, + 257, 256, 255, 237, 232, 15, 231, 229, 227, 219, + 15, 180, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 17, 172, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 19, 158, 145, 121, 114, 113, 19, + 19, 112, 19, 111, 88, 79, 76, 55, 0, 19, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, @@ -899,54 +899,54 @@ static yyconst short int yy_chk[1664] = 0, 0, 0, 0, 0, 53, 54, 0, 54, 54, 54, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 317, 0, 0, 0, 317, - 0, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 332, 0, 0, 0, 332, 0, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 363, 363, 363, 363, 363, - 363, 363, 363, 363, 363, 363, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 365, 365, 365, - 365, 365, 365, 365, 365, 365, 365, 365, 366, 366, - - 366, 366, 366, 366, 366, 366, 366, 366, 366, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 374, 374, 374, 374, - 374, 374, 374, 374, 374, 374, 374, 375, 375, 375, - - 375, 375, 375, 375, 375, 375, 375, 375, 376, 376, - 376, 376, 376, 376, 376, 376, 376, 376, 376, 377, - 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 379, 379, 379, 379, 379, 379, 379, 379, 379, - 379, 379, 380, 380, 381, 381, 382, 382, 0, 382, - 382, 382, 382, 382, 0, 382, 382, 383, 383, 383, - 0, 383, 0, 0, 0, 383, 383, 384, 384, 0, - 384, 384, 384, 384, 384, 384, 384, 384, 385, 0, - 0, 0, 385, 0, 0, 0, 385, 385, 386, 386, - - 0, 0, 386, 0, 0, 0, 386, 386, 387, 0, - 387, 387, 388, 388, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 390, 390, 0, 390, 390, - 390, 0, 390, 390, 390, 390, 391, 391, 0, 391, - 391, 391, 391, 391, 391, 391, 391, 392, 392, 0, - 392, 392, 392, 0, 392, 392, 392, 392, 393, 393, - 0, 393, 393, 393, 393, 393, 393, 393, 393, 394, - 394, 395, 395, 396, 396, 0, 396, 396, 396, 396, - 396, 396, 396, 396, 397, 397, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 399, 399, 399, - - 399, 399, 399, 399, 399, 399, 399, 399, 400, 0, - 0, 400, 0, 0, 0, 0, 400, 400, 401, 0, - 0, 401, 0, 0, 0, 0, 0, 401, 402, 402, - 403, 403, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362 + 0, 0, 0, 0, 54, 319, 0, 0, 0, 319, + 0, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 334, 0, 0, 0, 334, 0, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 365, 365, 365, 365, 365, + 365, 365, 365, 365, 365, 365, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 367, 367, 367, + 367, 367, 367, 367, 367, 367, 367, 367, 368, 368, + + 368, 368, 368, 368, 368, 368, 368, 368, 368, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 374, 374, 374, 374, 374, 374, + 374, 374, 374, 374, 374, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 376, 376, 376, 376, + 376, 376, 376, 376, 376, 376, 376, 377, 377, 377, + + 377, 377, 377, 377, 377, 377, 377, 377, 378, 378, + 378, 378, 378, 378, 378, 378, 378, 378, 378, 379, + 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, + 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, + 380, 381, 381, 381, 381, 381, 381, 381, 381, 381, + 381, 381, 382, 382, 383, 383, 384, 384, 0, 384, + 384, 384, 384, 384, 0, 384, 384, 385, 385, 385, + 0, 385, 0, 0, 0, 385, 385, 386, 386, 0, + 386, 386, 386, 386, 386, 386, 386, 386, 387, 0, + 0, 0, 387, 0, 0, 0, 387, 387, 388, 388, + + 0, 0, 388, 0, 0, 0, 388, 388, 389, 0, + 389, 389, 390, 390, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 392, 392, 0, 392, 392, + 392, 0, 392, 392, 392, 392, 393, 393, 0, 393, + 393, 393, 393, 393, 393, 393, 393, 394, 394, 0, + 394, 394, 394, 0, 394, 394, 394, 394, 395, 395, + 0, 395, 395, 395, 395, 395, 395, 395, 395, 396, + 396, 397, 397, 398, 398, 0, 398, 398, 398, 398, + 398, 398, 398, 398, 399, 399, 400, 400, 400, 400, + 400, 400, 400, 400, 400, 400, 400, 401, 401, 401, + + 401, 401, 401, 401, 401, 401, 401, 401, 402, 0, + 0, 402, 0, 0, 0, 0, 402, 402, 403, 0, + 0, 403, 0, 0, 0, 0, 0, 403, 404, 404, + 405, 405, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364 } ; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; @@ -977,7 +977,7 @@ char *yytext; * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -1037,50 +1037,58 @@ struct FileState /* ----------------------------------------------------------------- * - * statics + * scanner's state */ -static int yyLineNr = 1; -static QCString yyFileName; -static int ifcount = 0; -static QStrList *pathList = 0; -static QStack<FileState> includeStack; -static QDict<int> *argDict; -static int defArgs = -1; -static QCString defName; -static QCString defText; -static QCString defArgsStr; -static bool defVarArgs; -static int level; -static int lastCContext; -static int lastCPPContext; -static QArray<int> levelGuard; -static QCString guardExpr; -static BufStr *outputBuf; -static int roundCount; -static bool quoteArg; -static DefineDict *fileDefineDict; -static DefineDict *expandedDict; -static int findDefArgContext; - -static QCString lastGuardName; - +static int g_yyLineNr = 1; +static QCString g_yyFileName; +static FileDef *g_yyFileDef; +static int g_ifcount = 0; +static QStrList *g_pathList = 0; +static QStack<FileState> g_includeStack; +static QDict<int> *g_argDict; +static int g_defArgs = -1; +static QCString g_defName; +static QCString g_defText; +static QCString g_defLitText; +static QCString g_defArgsStr; +static bool g_defVarArgs; +static int g_level; +static int g_lastCContext; +static int g_lastCPPContext; +static QArray<int> g_levelGuard; +static BufStr *g_outputBuf; +static int g_roundCount; +static bool g_quoteArg; +static DefineDict *g_fileDefineDict; +static DefineDict *g_expandedDict; +static int g_findDefArgContext; +static QCString g_lastGuardName; +static QCString g_incName; +static QCString g_guardExpr; + +static void setFileName(const char *name) +{ + bool ambig; + g_yyFileName=name; + g_yyFileDef=findFileDef(&inputNameDict,g_yyFileName,ambig); +} static void incrLevel() { - level++; - levelGuard.resize(level); - levelGuard[level-1]=FALSE; - //printf("%s line %d: incrLevel %d\n",yyFileName.data(),yyLineNr,level); + g_level++; + g_levelGuard.resize(g_level); + g_levelGuard[g_level-1]=FALSE; + //printf("%s line %d: incrLevel %d\n",g_yyFileName.data(),g_yyLineNr,g_level); } static void decrLevel() { - //printf("%s line %d: decrLevel %d\n",yyFileName.data(),yyLineNr,level); - if (level > 0) + //printf("%s line %d: decrLevel %d\n",g_yyFileName.data(),g_yyLineNr,g_level); + if (g_level > 0) { - level--; - levelGuard.resize(level); + g_level--; + g_levelGuard.resize(g_level); } else { @@ -1090,12 +1098,12 @@ static void decrLevel() static bool otherCaseDone() { - return levelGuard[level-1]; + return g_levelGuard[g_level-1]; } static void setCaseDone(bool value) { - levelGuard[level-1]=value; + g_levelGuard[g_level-1]=value; } static Define *isDefined(const char *name) @@ -1103,20 +1111,20 @@ static Define *isDefined(const char *name) if (name) { Define *def; - //if ((def=fileDefineCache->findDefine(yyFileName,name)) && !def->undef) + //if ((def=fileDefineCache->findDefine(g_yyFileName,name)) && !def->undef) // return def; - if ((def=fileDefineDict->find(name)) && !def->undef) return def; + if ((def=g_fileDefineDict->find(name)) && !def->undef) return def; } return 0; } static FILE *findFile(const char *fileName) { - if (pathList==0) + if (g_pathList==0) { return 0; } - char *s=pathList->first(); + char *s=g_pathList->first(); while (s) { QCString absName=(QCString)s+"/"+fileName; @@ -1137,12 +1145,12 @@ static FILE *findFile(const char *fileName) } if (f) { - yyFileName=absName; - yyLineNr=1; + setFileName(absName); + g_yyLineNr=1; return f; } } - s=pathList->next(); + s=g_pathList->next(); } return 0; } @@ -1265,7 +1273,7 @@ static void processConcatOperators(QCString &expr) */ static bool replaceFunctionMacro(const QCString &expr,QCString *rest,int pos,int &len,const Define *def,QCString &result) { - //printf("replaceFunctionMacro(expr=%s,rest=%s,pos=%d,def=%s) level=%d\n",expr.data(),rest ? rest->data() : 0,pos,def->name.data(),level); + //printf("replaceFunctionMacro(expr=%s,rest=%s,pos=%d,def=%s) level=%d\n",expr.data(),rest ? rest->data() : 0,pos,def->name.data(),g_level); //bool replaced=FALSE; uint j=pos; len=0; @@ -1540,7 +1548,7 @@ static void expandExpression(QCString &expr,QCString *rest,int pos) //printf("macroName %s found\n",macroName.data()); if (p<2 || !(expr.at(p-2)=='@' && expr.at(p-1)=='-')) // no-rescan marker? { - if (expandedDict->find(macroName)==0) // expand macro + if (g_expandedDict->find(macroName)==0) // expand macro { Define *def=isDefined(macroName); //printf("name is not an expanded macro def=%s\n",def ? def->name.data() : 0); @@ -1567,9 +1575,9 @@ static void expandExpression(QCString &expr,QCString *rest,int pos) processConcatOperators(resultExpr); if (!def->nonRecursive) { - expandedDict->insert(macroName,def); + g_expandedDict->insert(macroName,def); expandExpression(resultExpr,&restExpr,0); - expandedDict->remove(macroName); + g_expandedDict->remove(macroName); } expr=expr.left(p)+resultExpr+restExpr; i=p; @@ -1685,7 +1693,7 @@ bool computeExpression(const QCString &expr) QCString e=expr; expandExpression(e,0,0); e = removeIdsAndMarkers(e); - if (e.length()==0) return FALSE; + if (e.isEmpty()) return FALSE; return parseCppExpression(e); } @@ -1705,92 +1713,115 @@ QCString expandMacro(const QCString &name) Define *newDefine() { Define *def=new Define; - def->name = defName; - def->definition = defText.stripWhiteSpace(); - def->nargs = defArgs; - def->fileName = yyFileName; - def->lineNr = yyLineNr; - def->varArgs = defVarArgs; + def->name = g_defName; + def->definition = g_defText.stripWhiteSpace(); + def->nargs = g_defArgs; + def->fileName = g_yyFileName; + def->lineNr = g_yyLineNr; + def->varArgs = g_defVarArgs; return def; } void addDefine() { - bool ambig; - FileDef *fd=findFileDef(&inputNameDict,yyFileName,ambig); - MemberDef *md=new MemberDef("#define",defName,defArgsStr,0, + //bool ambig; + //FileDef *fd=findFileDef(&inputNameDict,g_yyFileName,ambig); + MemberDef *md=new MemberDef("#define",g_defName,g_defArgsStr,0, Public,Normal,FALSE,FALSE,MemberDef::Define,0,0); - ArgumentList *argList = new ArgumentList; - stringToArgumentList(defArgsStr,argList); - md->setArgumentList(argList); - md->setDefFile(yyFileName); - md->setDefLine(yyLineNr); - md->setFileDef(fd); - md->setDefinition("#define "+defName); - - MemberName *mn=functionNameDict[defName]; + if (!g_defArgsStr.isEmpty()) + { + ArgumentList *argList = new ArgumentList; + //printf("addDefine() g_defName=`%s' g_defArgsStr=`%s'\n",g_defName.data(),g_defArgsStr.data()); + stringToArgumentList(g_defArgsStr,argList); + md->setArgumentList(argList); + } + //printf("Setting initializer for `%s' to `%s'\n",g_defName.data(),g_defText.data()); + md->setInitializer(g_defLitText); + + md->setDefFile(g_yyFileName); + md->setDefLine(g_yyLineNr); + md->setFileDef(g_yyFileDef); + md->setDefinition("#define "+g_defName); + + MemberName *mn=functionNameDict[g_defName]; if (mn==0) { - mn = new MemberName(defName); + mn = new MemberName(g_defName); functionNameList.inSort(mn); - functionNameDict.insert(defName,mn); + functionNameDict.insert(g_defName,mn); } mn->append(md); - if (fd) fd->insertMember(md); + if (g_yyFileDef) g_yyFileDef->insertMember(md); Define *d; - if ((d=defineDict[defName])==0) defineDict.insert(defName,newDefine()); - + if ((d=defineDict[g_defName])==0) defineDict.insert(g_defName,newDefine()); } static void outputChar(char c) { - if (includeStack.isEmpty()) outputBuf->addChar(c); + if (g_includeStack.isEmpty()) g_outputBuf->addChar(c); } static void outputArray(const char *a,int len) { - if (includeStack.isEmpty()) outputBuf->addArray(a,len); + if (g_includeStack.isEmpty()) g_outputBuf->addArray(a,len); } static void readIncludeFile(const QCString &inc) { if (!Config::searchIncludeFlag) return; // do not read include files uint i=0; + // find the start of the include file name while (i<inc.length() && (inc.at(i)==' ' || inc.at(i)=='"' || inc.at(i)=='<') ) i++; uint s=i; + + // was it a local include? + bool localInclude = s>0 && inc.at(s-1)=='"'; + // find the end of the include file name - while (i<inc.length() && - inc.at(i)!='"' && inc.at(i)!='>') i++; + while (i<inc.length() && inc.at(i)!='"' && inc.at(i)!='>') i++; + if (s<inc.length() && i>s) // valid include file name found { + // extract include path+name QCString incFileName=inc.mid(s,i-s).stripWhiteSpace(); FILE *f; - QCString oldFileName=yyFileName.copy(); + QCString oldFileName = g_yyFileName.copy(); + FileDef *oldFileDef = g_yyFileDef; if ((f=findFile(incFileName))) // see if the include file can be found { #if SHOW_INCLUDES - for (i=0;i<includeStack.count();i++) msg(" "); + for (i=0;i<g_includeStack.count();i++) msg(" "); msg("#include %s: parsing...\n",incFileName.data()); #endif + if (oldFileDef) + { + // add include dependency to the file in which the #include was found + oldFileDef->addIncludeDependency(g_yyFileDef,incFileName,localInclude); + } // store the state of the old file FileState *fs=new FileState; fs->bufState=YY_CURRENT_BUFFER; - fs->lineNr=yyLineNr; + fs->lineNr=g_yyLineNr; fs->fileName=oldFileName; fs->filePtr=f; // push the state on the stack - includeStack.push(fs); + g_includeStack.push(fs); // set the scanner to the include file preYYin=f; yy_switch_to_buffer(yy_create_buffer(preYYin, YY_BUF_SIZE)); } else { + if (oldFileDef) + { + // add include dependency to the file in which the #include was found + oldFileDef->addIncludeDependency(0,incFileName,localInclude); + } #if SHOW_INCLUDES msg("#include %s: not found! skipping...\n",incFileName.data()); //printf("Error: include file %s not found\n",yytext); @@ -1845,7 +1876,7 @@ static void readIncludeFile(const QCString &inc) #define SkipSingleQuote 22 -#define UndefName 23 +#define Ung_defName 23 #define IgnoreLine 24 @@ -2006,7 +2037,7 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 865 "pre.l" +#line 896 "pre.l" @@ -2057,7 +2088,7 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 363 ) + if ( yy_current_state >= 365 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2115,35 +2146,35 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 867 "pre.l" +#line 898 "pre.l" YY_BREAK case 2: YY_RULE_SETUP -#line 868 "pre.l" +#line 899 "pre.l" YY_BREAK case 3: YY_RULE_SETUP -#line 869 "pre.l" +#line 900 "pre.l" YY_BREAK /* <Start>^{B}*([^ \t#\n\/][^\n]*)?"\n" { - //printf("%s line %d: %s",yyFileName.data(),yyLineNr,yytext); - if (includeStack.isEmpty()) + //printf("%s line %d: %s",g_yyFileName.data(),g_yyLineNr,yytext); + if (g_includeStack.isEmpty()) { //preprocessedFile+=yytext; //char *s=yytext,c; //if (s) while ((c=*s++)) *dataPtr++=c; - outputBuf->addArray(yytext,yyleng); + g_outputBuf->addArray(yytext,yyleng); } - yyLineNr++; + g_yyLineNr++; } */ case 4: YY_RULE_SETUP -#line 883 "pre.l" +#line 914 "pre.l" { BEGIN(Command); } YY_BREAK case 5: @@ -2151,7 +2182,7 @@ case 5: yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 884 "pre.l" +#line 915 "pre.l" { outputArray(yytext,yyleng); BEGIN(CopyLine); @@ -2164,29 +2195,29 @@ YY_RULE_SETUP */ case 6: YY_RULE_SETUP -#line 893 "pre.l" +#line 924 "pre.l" { Define *def=0; //printf("Search for define %s\n",yytext); - if (includeStack.isEmpty() && + if (g_includeStack.isEmpty() && Config::macroExpansionFlag && - /* (expandDefine=fileDefineCache->findDefine(yyFileName,yytext)) */ - (def=fileDefineDict->find(yytext)) && + /* (expandDefine=fileDefineCache->findDefine(g_yyFileName,yytext)) */ + (def=g_fileDefineDict->find(yytext)) && (!Config::onlyPredefinedFlag || def->isPredefined) ) { //printf("Found it!\n"); - roundCount=0; - defArgsStr=yytext; + g_roundCount=0; + g_defArgsStr=yytext; if (def->nargs==-1) // no function macro { - QCString result = expandMacro(defArgsStr); + QCString result = expandMacro(g_defArgsStr); //printf("result=`%s'\n",result.data()); outputArray(result,result.length()); } else // zero or more arguments { - findDefArgContext = CopyLine; + g_findDefArgContext = CopyLine; BEGIN(FindDefineArgs); } } @@ -2198,13 +2229,13 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -#line 923 "pre.l" +#line 954 "pre.l" { Define *def=0; //printf("Search for define %s\n",yytext); - if (includeStack.isEmpty() && + if (g_includeStack.isEmpty() && Config::macroExpansionFlag && - (def=fileDefineDict->find(yytext)) && + (def=g_fileDefineDict->find(yytext)) && def->nargs==-1 && (!Config::onlyPredefinedFlag || def->isPredefined) ) @@ -2223,44 +2254,44 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 944 "pre.l" +#line 975 "pre.l" { outputChar(*yytext); } YY_BREAK case 9: YY_RULE_SETUP -#line 947 "pre.l" +#line 978 "pre.l" { outputChar('\n'); BEGIN(Start); - yyLineNr++; + g_yyLineNr++; } YY_BREAK case 10: YY_RULE_SETUP -#line 952 "pre.l" +#line 983 "pre.l" { - defArgsStr+='('; - roundCount++; + g_defArgsStr+='('; + g_roundCount++; } YY_BREAK case 11: YY_RULE_SETUP -#line 956 "pre.l" +#line 987 "pre.l" { - defArgsStr+=')'; - roundCount--; - if (roundCount==0) + g_defArgsStr+=')'; + g_roundCount--; + if (g_roundCount==0) { - //printf("defArgsStr=`%s'\n",defArgsStr.data()); - QCString result=expandMacro(defArgsStr); - if (findDefArgContext==CopyLine) + //printf("g_defArgsStr=`%s'\n",g_defArgsStr.data()); + QCString result=expandMacro(g_defArgsStr); + if (g_findDefArgContext==CopyLine) { outputArray(result,result.length()); - BEGIN(findDefArgContext); + BEGIN(g_findDefArgContext); } - else // findDefArgContext==IncludeID + else // g_findDefArgContext==IncludeID { readIncludeFile(result); BEGIN(Start); @@ -2270,71 +2301,71 @@ YY_RULE_SETUP YY_BREAK /* <FindDefineArgs>")"{B}*"(" { - defArgsStr+=yytext; + g_defArgsStr+=yytext; } */ case 12: YY_RULE_SETUP -#line 980 "pre.l" +#line 1011 "pre.l" { - defArgsStr+=*yytext; + g_defArgsStr+=*yytext; BEGIN(ReadString); } YY_BREAK case 13: YY_RULE_SETUP -#line 984 "pre.l" +#line 1015 "pre.l" { - yyLineNr++; + g_yyLineNr++; outputChar('\n'); } YY_BREAK case 14: YY_RULE_SETUP -#line 988 "pre.l" +#line 1019 "pre.l" { - defArgsStr+="@@"; + g_defArgsStr+="@@"; } YY_BREAK case 15: YY_RULE_SETUP -#line 991 "pre.l" +#line 1022 "pre.l" { - defArgsStr+=*yytext; + g_defArgsStr+=*yytext; } YY_BREAK case 16: YY_RULE_SETUP -#line 994 "pre.l" +#line 1025 "pre.l" { - defArgsStr+=yytext; + g_defArgsStr+=yytext; } YY_BREAK case 17: YY_RULE_SETUP -#line 997 "pre.l" +#line 1028 "pre.l" { - defArgsStr+=*yytext; + g_defArgsStr+=*yytext; BEGIN(FindDefineArgs); } YY_BREAK case 18: YY_RULE_SETUP -#line 1001 "pre.l" +#line 1032 "pre.l" { - defArgsStr+=yytext; + g_defArgsStr+=yytext; } YY_BREAK case 19: YY_RULE_SETUP -#line 1004 "pre.l" +#line 1035 "pre.l" { - defArgsStr+=*yytext; + g_defArgsStr+=*yytext; } YY_BREAK case 20: YY_RULE_SETUP -#line 1007 "pre.l" +#line 1038 "pre.l" { if (Config::macroExpansionFlag) BEGIN(IncludeID); @@ -2342,14 +2373,17 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 1011 "pre.l" +#line 1042 "pre.l" { + char c[2]; + c[0]=yytext[yyleng-1];c[1]='\0'; + g_incName=c; BEGIN(Include); } YY_BREAK case 22: YY_RULE_SETUP -#line 1014 "pre.l" +#line 1048 "pre.l" { //printf("!!!DefName\n"); BEGIN(DefName); @@ -2360,10 +2394,10 @@ case 23: yy_c_buf_p = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1018 "pre.l" +#line 1052 "pre.l" { incrLevel(); - guardExpr.resize(0); + g_guardExpr.resize(0); BEGIN(DefinedExpr2); } YY_BREAK @@ -2372,11 +2406,11 @@ case 24: yy_c_buf_p = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1023 "pre.l" +#line 1057 "pre.l" { //printf("Pre.l: ifdef\n"); incrLevel(); - guardExpr.resize(0); + g_guardExpr.resize(0); BEGIN(DefinedExpr1); } YY_BREAK @@ -2385,10 +2419,10 @@ case 25: yy_c_buf_p = yy_cp = yy_bp + 6; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1029 "pre.l" +#line 1063 "pre.l" { incrLevel(); - guardExpr="! "; + g_guardExpr="! "; BEGIN(DefinedExpr2); } YY_BREAK @@ -2397,10 +2431,10 @@ case 26: yy_c_buf_p = yy_cp = yy_bp + 6; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1034 "pre.l" +#line 1068 "pre.l" { incrLevel(); - guardExpr="! "; + g_guardExpr="! "; BEGIN(DefinedExpr1); } YY_BREAK @@ -2409,10 +2443,10 @@ case 27: yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1039 "pre.l" +#line 1073 "pre.l" { incrLevel(); - guardExpr.resize(0); + g_guardExpr.resize(0); BEGIN(Guard); } YY_BREAK @@ -2421,16 +2455,16 @@ case 28: yy_c_buf_p = yy_cp = yy_bp + 4; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1044 "pre.l" +#line 1078 "pre.l" { if (!otherCaseDone()) { - guardExpr.resize(0); + g_guardExpr.resize(0); BEGIN(Guard); } else { - ifcount=0; + g_ifcount=0; BEGIN(SkipCPPBlock); } } @@ -2440,26 +2474,26 @@ case 29: yy_c_buf_p = yy_cp = yy_bp + 4; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1056 "pre.l" +#line 1090 "pre.l" { - //printf("else levelGuard[%d]=%d\n",level-1,levelGuard[level-1]); + //printf("else g_levelGuard[%d]=%d\n",g_level-1,g_levelGuard[g_level-1]); if (otherCaseDone()) { - ifcount=0; + g_ifcount=0; BEGIN(SkipCPPBlock); } else { setCaseDone(TRUE); - //levelGuard[level-1]=TRUE; + //g_levelGuard[g_level-1]=TRUE; } } YY_BREAK case 30: YY_RULE_SETUP -#line 1069 "pre.l" +#line 1103 "pre.l" { - BEGIN(UndefName); + BEGIN(Ung_defName); } YY_BREAK case 31: @@ -2467,11 +2501,11 @@ case 31: yy_c_buf_p = yy_cp = yy_bp + 4; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1072 "pre.l" +#line 1106 "pre.l" { if (!otherCaseDone()) { - guardExpr.resize(0); + g_guardExpr.resize(0); BEGIN(Guard); } } @@ -2481,7 +2515,7 @@ case 32: yy_c_buf_p = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1079 "pre.l" +#line 1113 "pre.l" { //printf("Pre.l: #endif\n"); decrLevel(); @@ -2489,33 +2523,33 @@ YY_RULE_SETUP YY_BREAK case 33: YY_RULE_SETUP -#line 1083 "pre.l" +#line 1117 "pre.l" { outputChar('\n'); BEGIN(Start); - yyLineNr++; + g_yyLineNr++; } YY_BREAK case 34: YY_RULE_SETUP -#line 1088 "pre.l" +#line 1122 "pre.l" { // unknown directive BEGIN(IgnoreLine); } YY_BREAK case 35: YY_RULE_SETUP -#line 1091 "pre.l" +#line 1125 "pre.l" YY_BREAK case 36: YY_RULE_SETUP -#line 1092 "pre.l" +#line 1126 "pre.l" YY_BREAK case 37: YY_RULE_SETUP -#line 1093 "pre.l" +#line 1127 "pre.l" { Define *def; if ((def=isDefined(yytext))) @@ -2528,11 +2562,11 @@ YY_RULE_SETUP YY_BREAK case 38: YY_RULE_SETUP -#line 1102 "pre.l" +#line 1136 "pre.l" { outputChar('\n'); - guardExpr+=' '; - yyLineNr++; + g_guardExpr+=' '; + g_yyLineNr++; } YY_BREAK case 39: @@ -2540,7 +2574,7 @@ case 39: yy_c_buf_p = yy_cp = yy_bp + 7; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1107 "pre.l" +#line 1141 "pre.l" { BEGIN(DefinedExpr2); } @@ -2550,89 +2584,89 @@ case 40: yy_c_buf_p = yy_cp = yy_bp + 7; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1110 "pre.l" +#line 1144 "pre.l" { BEGIN(DefinedExpr1); } YY_BREAK case 41: YY_RULE_SETUP -#line 1113 "pre.l" -{ guardExpr+=*yytext; } +#line 1147 "pre.l" +{ g_guardExpr+=*yytext; } YY_BREAK case 42: YY_RULE_SETUP -#line 1114 "pre.l" +#line 1148 "pre.l" { outputChar('\n'); - yyLineNr++; + g_yyLineNr++; //printf("Guard: `%s'\n", - // guardExpr.data()); - bool guard=computeExpression(guardExpr); + // g_guardExpr.data()); + bool guard=computeExpression(g_guardExpr); setCaseDone(guard); - //printf("if levelGuard[%d]=%d\n",level-1,levelGuard[level-1]); + //printf("if g_levelGuard[%d]=%d\n",g_level-1,g_levelGuard[g_level-1]); if (guard) { BEGIN(Start); } else { - ifcount=0; + g_ifcount=0; BEGIN(SkipCPPBlock); } } YY_BREAK case 43: YY_RULE_SETUP -#line 1132 "pre.l" -{ yyLineNr++; outputChar('\n'); } +#line 1166 "pre.l" +{ g_yyLineNr++; outputChar('\n'); } YY_BREAK case 44: YY_RULE_SETUP -#line 1133 "pre.l" +#line 1167 "pre.l" { if (isDefined(yytext)) - guardExpr+=" 1L "; + g_guardExpr+=" 1L "; else - guardExpr+=" 0L "; - lastGuardName=yytext; + g_guardExpr+=" 0L "; + g_lastGuardName=yytext; BEGIN(Guard); } YY_BREAK case 45: YY_RULE_SETUP -#line 1141 "pre.l" +#line 1175 "pre.l" { if (isDefined(yytext)) - guardExpr+=" 1L "; + g_guardExpr+=" 1L "; else - guardExpr+=" 0L "; - lastGuardName.resize(0); + g_guardExpr+=" 0L "; + g_lastGuardName.resize(0); } YY_BREAK case 46: YY_RULE_SETUP -#line 1148 "pre.l" +#line 1182 "pre.l" { // should not happen, handle anyway - ifcount=0; + g_ifcount=0; BEGIN(SkipCPPBlock); } YY_BREAK case 47: YY_RULE_SETUP -#line 1152 "pre.l" +#line 1186 "pre.l" { BEGIN(Guard); } YY_BREAK case 48: YY_RULE_SETUP -#line 1155 "pre.l" +#line 1189 "pre.l" YY_BREAK case 49: YY_RULE_SETUP -#line 1156 "pre.l" +#line 1190 "pre.l" { BEGIN(SkipCommand); } YY_BREAK case 50: @@ -2640,12 +2674,12 @@ case 50: yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1157 "pre.l" +#line 1191 "pre.l" { BEGIN(SkipLine); } YY_BREAK case 51: YY_RULE_SETUP -#line 1158 "pre.l" +#line 1192 "pre.l" YY_BREAK case 52: @@ -2653,19 +2687,19 @@ case 52: yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1159 "pre.l" +#line 1193 "pre.l" { incrLevel(); - ifcount++; - //printf("#if... depth=%d\n",ifcount); + g_ifcount++; + //printf("#if... depth=%d\n",g_ifcount); } YY_BREAK case 53: YY_RULE_SETUP -#line 1164 "pre.l" +#line 1198 "pre.l" { - //printf("Else! ifcount=%d otherCaseDone=%d\n",ifcount,otherCaseDone()); - if (ifcount==0 && !otherCaseDone()) + //printf("Else! g_ifcount=%d otherCaseDone=%d\n",g_ifcount,otherCaseDone()); + if (g_ifcount==0 && !otherCaseDone()) { setCaseDone(TRUE); //outputChar('\n'); @@ -2678,14 +2712,14 @@ case 54: yy_c_buf_p = yy_cp = yy_bp + 4; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1173 "pre.l" +#line 1207 "pre.l" { - if (ifcount==0) + if (g_ifcount==0) { if (!otherCaseDone()) { - guardExpr.resize(0); - lastGuardName.resize(0); + g_guardExpr.resize(0); + g_lastGuardName.resize(0); BEGIN(Guard); } else @@ -2697,10 +2731,10 @@ YY_RULE_SETUP YY_BREAK case 55: YY_RULE_SETUP -#line 1188 "pre.l" +#line 1222 "pre.l" { decrLevel(); - if (--ifcount<0) + if (--g_ifcount<0) { //outputChar('\n'); BEGIN(Start); @@ -2709,57 +2743,57 @@ YY_RULE_SETUP YY_BREAK case 56: YY_RULE_SETUP -#line 1196 "pre.l" +#line 1230 "pre.l" { outputChar('\n'); - yyLineNr++; + g_yyLineNr++; BEGIN(SkipCPPBlock); } YY_BREAK case 57: YY_RULE_SETUP -#line 1201 "pre.l" +#line 1235 "pre.l" { // unknown directive BEGIN(SkipLine); } YY_BREAK case 58: YY_RULE_SETUP -#line 1204 "pre.l" +#line 1238 "pre.l" YY_BREAK case 59: YY_RULE_SETUP -#line 1205 "pre.l" +#line 1239 "pre.l" YY_BREAK case 60: YY_RULE_SETUP -#line 1206 "pre.l" +#line 1240 "pre.l" YY_BREAK case 61: YY_RULE_SETUP -#line 1207 "pre.l" +#line 1241 "pre.l" { - lastCPPContext=YY_START; + g_lastCPPContext=YY_START; BEGIN(RemoveCPPComment); } YY_BREAK case 62: YY_RULE_SETUP -#line 1211 "pre.l" +#line 1245 "pre.l" { - lastCContext=YY_START; + g_lastCContext=YY_START; BEGIN(RemoveCComment); } YY_BREAK case 63: YY_RULE_SETUP -#line 1215 "pre.l" +#line 1249 "pre.l" { outputChar('\n'); - yyLineNr++; + g_yyLineNr++; BEGIN(SkipCPPBlock); } YY_BREAK @@ -2768,17 +2802,17 @@ case 64: yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1220 "pre.l" +#line 1254 "pre.l" { - roundCount=0; - defArgsStr=yytext; - findDefArgContext = IncludeID; + g_roundCount=0; + g_defArgsStr=yytext; + g_findDefArgContext = IncludeID; BEGIN(FindDefineArgs); } YY_BREAK case 65: YY_RULE_SETUP -#line 1226 "pre.l" +#line 1260 "pre.l" { readIncludeFile(expandMacro(yytext)); BEGIN(Start); @@ -2786,18 +2820,18 @@ YY_RULE_SETUP YY_BREAK case 66: YY_RULE_SETUP -#line 1230 "pre.l" +#line 1264 "pre.l" { - QCString incName=yytext; + g_incName+=yytext; //int l=incName.length(); //QCString incFileName=incName.left(l-1); //if (fileDefineCache->fileCached(incFileName)) //{ // printf("file already cached!\n"); - // fileDefineCache->merge(incFileName,yyFileName); + // fileDefineCache->merge(incFileName,g_yyFileName); //} //else if ((f=findFile(incFileName))) - readIncludeFile(incName); + readIncludeFile(g_incName); BEGIN(Start); } @@ -2807,336 +2841,345 @@ case 67: yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1244 "pre.l" +#line 1278 "pre.l" { //printf("Define() `%s'\n",yytext); - argDict = new QDict<int>(31); - argDict->setAutoDelete(TRUE); - defArgs = 0; - defArgsStr.resize(0); - defText.resize(0); - defName = yytext; - defVarArgs = FALSE; + g_argDict = new QDict<int>(31); + g_argDict->setAutoDelete(TRUE); + g_defArgs = 0; + g_defArgsStr.resize(0); + g_defText.resize(0); + g_defLitText.resize(0); + g_defName = yytext; + g_defVarArgs = FALSE; BEGIN(DefineArg); } YY_BREAK case 68: YY_RULE_SETUP -#line 1255 "pre.l" +#line 1290 "pre.l" { //printf("Define `%s'\n",yytext); - argDict = 0; - defArgs = -1; - defArgsStr.resize(0); - defText.resize(0); - defName = yytext; - defVarArgs = FALSE; - QCString tmp=(QCString)"#define "+defName+defArgsStr; + g_argDict = 0; + g_defArgs = -1; + g_defArgsStr.resize(0); + g_defText.resize(0); + g_defLitText.resize(0); + g_defName = yytext; + g_defVarArgs = FALSE; + QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr; outputArray(tmp.data(),tmp.length()); - quoteArg=FALSE; + g_quoteArg=FALSE; BEGIN(DefineText); } YY_BREAK case 69: YY_RULE_SETUP -#line 1268 "pre.l" +#line 1304 "pre.l" { - argDict = 0; - defArgs = -1; - defName = yytext; - defArgsStr.resize(0); - defText.resize(0); - defVarArgs = FALSE; - if ( defName!=lastGuardName ) + g_argDict = 0; + g_defArgs = -1; + g_defName = yytext; + g_defArgsStr.resize(0); + g_defText.resize(0); + g_defLitText.resize(0); + g_defVarArgs = FALSE; + if ( g_defName!=g_lastGuardName ) { // define may appear in the output - QCString tmp=(QCString)"#define "+defName+defArgsStr; + QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr; outputArray(tmp.data(),tmp.length()); - quoteArg=FALSE; + g_quoteArg=FALSE; BEGIN(DefineText); } else // define is a guard => hide { //printf("Found a guard %s\n",yytext); Define *def=0; - //if (includeStack.isEmpty()) + //if (g_includeStack.isEmpty()) //{ // addDefine(); //} - if (/*!Config::onlyPredefinedFlag &&*/ (def=fileDefineDict->find(defName))==0) + if (/*!Config::onlyPredefinedFlag &&*/ (def=g_fileDefineDict->find(g_defName))==0) { - fileDefineDict->insert(defName,newDefine()); + g_fileDefineDict->insert(g_defName,newDefine()); } else if (def)// name already exists { if (def->undef) // undefined name { def->undef = FALSE; - def->name = defName; - def->definition = defText.stripWhiteSpace(); - def->nargs = defArgs; - def->fileName = yyFileName; - def->lineNr = yyLineNr; + def->name = g_defName; + def->definition = g_defText.stripWhiteSpace(); + def->nargs = g_defArgs; + def->fileName = g_yyFileName.copy(); + def->lineNr = g_yyLineNr; } else { - //printf("Error: define %s is defined more than once!\n",defName.data()); + //printf("Error: define %s is defined more than once!\n",g_defName.data()); } } //outputChar('\n'); - lastGuardName.resize(0); + g_lastGuardName.resize(0); BEGIN(Start); } } YY_BREAK case 70: YY_RULE_SETUP -#line 1315 "pre.l" -{ defArgsStr+=yytext; } +#line 1352 "pre.l" +{ g_defArgsStr+=yytext; } YY_BREAK case 71: YY_RULE_SETUP -#line 1316 "pre.l" -{ defArgsStr+=yytext; } +#line 1353 "pre.l" +{ g_defArgsStr+=yytext; } YY_BREAK case 72: YY_RULE_SETUP -#line 1317 "pre.l" +#line 1354 "pre.l" { - defArgsStr+=yytext; - QCString tmp=(QCString)"#define "+defName+defArgsStr; + g_defArgsStr+=yytext; + QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr; outputArray(tmp.data(),tmp.length()); - quoteArg=FALSE; + g_quoteArg=FALSE; BEGIN(DefineText); } YY_BREAK case 73: YY_RULE_SETUP -#line 1324 "pre.l" +#line 1361 "pre.l" { //printf("Define addArg(%s)\n",yytext); QCString argName=yytext; - defVarArgs = yytext[yyleng-1]=='.'; - if (defVarArgs) // strip ellipsis + g_defVarArgs = yytext[yyleng-1]=='.'; + if (g_defVarArgs) // strip ellipsis argName=argName.left(argName.length()-3); - defArgsStr+=yytext; - argDict->insert(argName,new int(defArgs)); - defArgs++; + g_defArgsStr+=yytext; + g_argDict->insert(argName,new int(g_defArgs)); + g_defArgs++; } YY_BREAK case 74: YY_RULE_SETUP -#line 1334 "pre.l" +#line 1371 "pre.l" { outputChar('/');outputChar('*'); - defText+=' '; - lastCContext=YY_START; + g_defText+=' '; + g_defLitText+=' '; + g_lastCContext=YY_START; BEGIN(SkipCComment); } YY_BREAK case 75: YY_RULE_SETUP -#line 1340 "pre.l" +#line 1378 "pre.l" { outputChar('/');outputChar('/'); - lastCPPContext=YY_START; + g_lastCPPContext=YY_START; + g_defLitText+=' '; BEGIN(SkipCPPComment); } YY_BREAK case 76: YY_RULE_SETUP -#line 1345 "pre.l" +#line 1384 "pre.l" { outputChar('*');outputChar('/'); - BEGIN(lastCContext); + BEGIN(g_lastCContext); } YY_BREAK case 77: YY_RULE_SETUP -#line 1349 "pre.l" +#line 1388 "pre.l" { outputChar('/');outputChar('/'); } YY_BREAK case 78: YY_RULE_SETUP -#line 1352 "pre.l" +#line 1391 "pre.l" { outputChar('/');outputChar('*'); } YY_BREAK case 79: YY_RULE_SETUP -#line 1355 "pre.l" +#line 1394 "pre.l" { outputArray(yytext,yyleng); } YY_BREAK case 80: YY_RULE_SETUP -#line 1358 "pre.l" +#line 1397 "pre.l" { - yyLineNr++; + g_yyLineNr++; outputChar('\n'); } YY_BREAK case 81: YY_RULE_SETUP -#line 1362 "pre.l" +#line 1401 "pre.l" { outputChar(*yytext); } YY_BREAK case 82: YY_RULE_SETUP -#line 1365 "pre.l" -{ BEGIN(lastCContext); } +#line 1404 "pre.l" +{ BEGIN(g_lastCContext); } YY_BREAK case 83: YY_RULE_SETUP -#line 1366 "pre.l" +#line 1405 "pre.l" YY_BREAK case 84: YY_RULE_SETUP -#line 1367 "pre.l" +#line 1406 "pre.l" YY_BREAK case 85: YY_RULE_SETUP -#line 1368 "pre.l" +#line 1407 "pre.l" YY_BREAK case 86: YY_RULE_SETUP -#line 1369 "pre.l" -{ yyLineNr++; outputChar('\n'); } +#line 1408 "pre.l" +{ g_yyLineNr++; outputChar('\n'); } YY_BREAK case 87: YY_RULE_SETUP -#line 1370 "pre.l" +#line 1409 "pre.l" YY_BREAK case 88: YY_RULE_SETUP -#line 1371 "pre.l" +#line 1410 "pre.l" { unput(*yytext); - BEGIN(lastCPPContext); + BEGIN(g_lastCPPContext); } YY_BREAK case 89: YY_RULE_SETUP -#line 1375 "pre.l" +#line 1414 "pre.l" { outputChar('/');outputChar('*'); } YY_BREAK case 90: YY_RULE_SETUP -#line 1378 "pre.l" +#line 1417 "pre.l" { outputChar('/');outputChar('/'); } YY_BREAK case 91: YY_RULE_SETUP -#line 1381 "pre.l" +#line 1420 "pre.l" { outputArray(yytext,yyleng); } YY_BREAK case 92: YY_RULE_SETUP -#line 1384 "pre.l" +#line 1423 "pre.l" { outputChar(*yytext); } YY_BREAK case 93: YY_RULE_SETUP -#line 1387 "pre.l" +#line 1426 "pre.l" YY_BREAK case 94: YY_RULE_SETUP -#line 1388 "pre.l" +#line 1427 "pre.l" YY_BREAK case 95: YY_RULE_SETUP -#line 1389 "pre.l" +#line 1428 "pre.l" YY_BREAK case 96: YY_RULE_SETUP -#line 1390 "pre.l" +#line 1429 "pre.l" YY_BREAK case 97: YY_RULE_SETUP -#line 1391 "pre.l" +#line 1430 "pre.l" { - quoteArg=TRUE; + g_quoteArg=TRUE; + g_defLitText+=yytext; } YY_BREAK case 98: YY_RULE_SETUP -#line 1394 "pre.l" +#line 1434 "pre.l" { - if (quoteArg) + g_defLitText+=yytext; + if (g_quoteArg) { - defText+="\""; + g_defText+="\""; } - if (defArgs>0) + if (g_defArgs>0) { int *n; - if ((n=(*argDict)[yytext])) + if ((n=(*g_argDict)[yytext])) { - if (!quoteArg) defText+=' '; - defText+='@'; + if (!g_quoteArg) g_defText+=' '; + g_defText+='@'; QCString numStr; numStr.setNum(*n); - defText+=numStr; - if (!quoteArg) defText+=' '; + g_defText+=numStr; + if (!g_quoteArg) g_defText+=' '; } else { - defText+=yytext; + g_defText+=yytext; } } else { - defText+=yytext; + g_defText+=yytext; } - if (quoteArg) + if (g_quoteArg) { - defText+="\""; + g_defText+="\""; } - quoteArg=FALSE; + g_quoteArg=FALSE; } YY_BREAK case 99: YY_RULE_SETUP -#line 1426 "pre.l" +#line 1467 "pre.l" { + g_defLitText+=yytext; outputChar('\n'); - defText += ' '; yyLineNr++; + g_defText += ' '; g_yyLineNr++; } YY_BREAK case 100: YY_RULE_SETUP -#line 1430 "pre.l" +#line 1472 "pre.l" { + g_defLitText+=yytext; outputChar('\n'); Define *def=0; - //printf("Define name=`%s' text=`%s'\n",defName.data(),defText.data()); - if (includeStack.isEmpty()) + //printf("Define name=`%s' text=`%s'\n",g_defName.data(),g_defText.data()); + if (g_includeStack.isEmpty()) { addDefine(); } - if (/*!Config::onlyPredefinedFlag &&*/ (def=fileDefineDict->find(defName))==0) + if (/*!Config::onlyPredefinedFlag &&*/ (def=g_fileDefineDict->find(g_defName))==0) { - fileDefineDict->insert(defName,newDefine()); + g_fileDefineDict->insert(g_defName,newDefine()); } else if (def)// name already exists { @@ -3144,99 +3187,101 @@ YY_RULE_SETUP if (def->undef) // undefined name { def->undef = FALSE; - def->name = defName; - def->definition = defText.stripWhiteSpace(); - def->nargs = defArgs; - def->fileName = yyFileName; - def->lineNr = yyLineNr; + def->name = g_defName; + def->definition = g_defText.stripWhiteSpace(); + def->nargs = g_defArgs; + def->fileName = g_yyFileName.copy(); + def->lineNr = g_yyLineNr; } else { - //printf("Error: define %s is defined more than once!\n",defName.data()); + //printf("Error: define %s is defined more than once!\n",g_defName.data()); } } - delete argDict; - yyLineNr++; - lastGuardName.resize(0); + delete g_argDict; g_argDict=0; + g_yyLineNr++; + g_lastGuardName.resize(0); BEGIN(Start); } YY_BREAK case 101: YY_RULE_SETUP -#line 1464 "pre.l" -{ defText += ' '; } +#line 1507 "pre.l" +{ g_defText += ' '; g_defLitText+=yytext; } YY_BREAK case 102: YY_RULE_SETUP -#line 1465 "pre.l" -{ defText += "##"; } +#line 1508 "pre.l" +{ g_defText += "##"; g_defLitText+=yytext; } YY_BREAK case 103: YY_RULE_SETUP -#line 1466 "pre.l" -{ defText += "@@"; } +#line 1509 "pre.l" +{ g_defText += "@@"; g_defLitText+=yytext; } YY_BREAK case 104: YY_RULE_SETUP -#line 1467 "pre.l" -{ defText += *yytext; - BEGIN(SkipDoubleQuote); +#line 1510 "pre.l" +{ g_defText += *yytext; + g_defLitText+=yytext; + BEGIN(SkipDoubleQuote); } YY_BREAK case 105: YY_RULE_SETUP -#line 1470 "pre.l" -{ defText += *yytext; +#line 1514 "pre.l" +{ g_defText += *yytext; + g_defLitText+=yytext; BEGIN(SkipSingleQuote); } YY_BREAK case 106: YY_RULE_SETUP -#line 1473 "pre.l" -{ defText += yytext; } +#line 1518 "pre.l" +{ g_defText += yytext; g_defLitText+=yytext; } YY_BREAK case 107: YY_RULE_SETUP -#line 1474 "pre.l" -{ defText += yytext; } +#line 1519 "pre.l" +{ g_defText += yytext; g_defLitText+=yytext; } YY_BREAK case 108: YY_RULE_SETUP -#line 1475 "pre.l" +#line 1520 "pre.l" { - defText += *yytext; + g_defText += *yytext; g_defLitText+=yytext; BEGIN(DefineText); } YY_BREAK case 109: YY_RULE_SETUP -#line 1479 "pre.l" +#line 1524 "pre.l" { - defText += yytext; + g_defText += yytext; g_defLitText+=yytext; } YY_BREAK case 110: YY_RULE_SETUP -#line 1482 "pre.l" +#line 1527 "pre.l" { - defText += *yytext; + g_defText += *yytext; g_defLitText+=yytext; BEGIN(DefineText); } YY_BREAK case 111: YY_RULE_SETUP -#line 1486 "pre.l" -{ defText += *yytext; } +#line 1531 "pre.l" +{ g_defText += *yytext; g_defLitText+=yytext; } YY_BREAK case 112: YY_RULE_SETUP -#line 1487 "pre.l" -{ defText += *yytext; } +#line 1532 "pre.l" +{ g_defText += *yytext; g_defLitText+=yytext; } YY_BREAK case 113: YY_RULE_SETUP -#line 1488 "pre.l" -{ defText += *yytext; } +#line 1533 "pre.l" +{ g_defText += *yytext; g_defLitText+=yytext; } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(Start): @@ -3261,23 +3306,23 @@ case YY_STATE_EOF(DefinedExpr1): case YY_STATE_EOF(DefinedExpr2): case YY_STATE_EOF(SkipDoubleQuote): case YY_STATE_EOF(SkipSingleQuote): -case YY_STATE_EOF(UndefName): +case YY_STATE_EOF(Ung_defName): case YY_STATE_EOF(IgnoreLine): case YY_STATE_EOF(FindDefineArgs): case YY_STATE_EOF(ReadString): -#line 1489 "pre.l" +#line 1534 "pre.l" { //printf("End of include file\n"); - //printf("Include stack depth=%d\n",includeStack.count()); - if (includeStack.isEmpty()) + //printf("Include stack depth=%d\n",g_includeStack.count()); + if (g_includeStack.isEmpty()) { //printf("Terminating scanner!\n"); yyterminate(); } else { - FileState *fs=includeStack.pop(); - //fileDefineCache->merge(yyFileName,fs->fileName); + FileState *fs=g_includeStack.pop(); + //fileDefineCache->merge(g_yyFileName,fs->fileName); if (Config::inputFilter.isEmpty()) fclose(fs->filePtr); else @@ -3285,49 +3330,49 @@ case YY_STATE_EOF(ReadString): YY_BUFFER_STATE oldBuf = YY_CURRENT_BUFFER; yy_switch_to_buffer( fs->bufState ); yy_delete_buffer( oldBuf ); - yyLineNr=fs->lineNr; - yyFileName=fs->fileName.copy(); - //printf("######## FileName %s\n",yyFileName.data()); - delete fs; + g_yyLineNr=fs->lineNr; + setFileName(fs->fileName.copy()); + //printf("######## FileName %s\n",g_yyFileName.data()); + delete fs; fs=0; } } YY_BREAK case 114: YY_RULE_SETUP -#line 1514 "pre.l" +#line 1559 "pre.l" { outputChar('/');outputChar('*'); - lastCContext=YY_START; + g_lastCContext=YY_START; BEGIN(SkipCComment); } YY_BREAK case 115: YY_RULE_SETUP -#line 1519 "pre.l" +#line 1564 "pre.l" { outputChar('/');outputChar('/'); - lastCPPContext=YY_START; + g_lastCPPContext=YY_START; BEGIN(SkipCPPComment); } YY_BREAK case 116: YY_RULE_SETUP -#line 1524 "pre.l" +#line 1569 "pre.l" { outputChar('\n'); - yyLineNr++; + g_yyLineNr++; } YY_BREAK case 117: YY_RULE_SETUP -#line 1528 "pre.l" +#line 1573 "pre.l" { outputChar(*yytext); } YY_BREAK case 118: YY_RULE_SETUP -#line 1532 "pre.l" +#line 1577 "pre.l" ECHO; YY_BREAK @@ -3617,7 +3662,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 363 ) + if ( yy_current_state >= 365 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3647,11 +3692,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 363 ) + if ( yy_current_state >= 365 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 362); + yy_is_jam = (yy_current_state == 364); if ( ! yy_is_jam ) *yy_state_ptr++ = yy_current_state; @@ -4209,7 +4254,7 @@ int main() return 0; } #endif -#line 1532 "pre.l" +#line 1577 "pre.l" /*@ ---------------------------------------------------------------------------- @@ -4223,7 +4268,7 @@ static int getNextChar(const QCString &expr,QCString *rest,uint &pos) //printf("%c=expr()\n",expr.at(pos)); return expr.at(pos++); } - else if (rest && rest->length()>0) + else if (rest && !rest->isEmpty()) { int cc=rest->at(0); *rest=rest->right(rest->length()-1); @@ -4246,7 +4291,7 @@ static int getCurrentChar(const QCString &expr,QCString *rest,uint pos) //printf("%c=expr()\n",expr.at(pos)); return expr.at(pos); } - else if (rest && rest->length()>0) + else if (rest && !rest->isEmpty()) { int cc=rest->at(0); //printf("%c=rest\n",cc); @@ -4283,27 +4328,27 @@ static void unputChar(const QCString &expr,QCString *rest,uint &pos,char c) void addSearchDir(const char *dir) { QFileInfo fi(dir); - if (fi.isDir()) pathList->append(fi.absFilePath()); + if (fi.isDir()) g_pathList->append(fi.absFilePath()); } void initPreprocessor() { - pathList = new QStrList; + g_pathList = new QStrList; addSearchDir("."); //defineNameList.setAutoDelete(TRUE); //defineNameList.clear(); defineDict.clear(); //fileDefineCache = new DefineCache(1009); - expandedDict = new DefineDict(17); - fileDefineDict = new DefineDict(1009); + g_expandedDict = new DefineDict(17); + g_fileDefineDict = new DefineDict(1009); } void cleanupPreprocessor() { //delete fileDefineCache; - delete fileDefineDict; - delete expandedDict; - delete pathList; + delete g_fileDefineDict; g_fileDefineDict=0; + delete g_expandedDict; g_expandedDict=0; + delete g_pathList; g_pathList=0; } @@ -4313,13 +4358,13 @@ void preprocessFile(const char *fileName,BufStr &output) uint orgOffset=output.curPos(); //#endif - outputBuf=&output; - includeStack.setAutoDelete(TRUE); - includeStack.clear(); - fileDefineDict->setAutoDelete(TRUE); - fileDefineDict->clear(); - expandedDict->setAutoDelete(FALSE); - expandedDict->clear(); + g_outputBuf=&output; + g_includeStack.setAutoDelete(TRUE); + g_includeStack.clear(); + g_fileDefineDict->setAutoDelete(TRUE); + g_fileDefineDict->clear(); + g_expandedDict->setAutoDelete(FALSE); + g_expandedDict->clear(); // add predefined macros char *defStr = Config::predefined.first(); @@ -4379,14 +4424,14 @@ void preprocessFile(const char *fileName,BufStr &output) def->nargs = count; def->isPredefined = TRUE; def->nonRecursive = nonRecursive; - fileDefineDict->insert(def->name,def); + g_fileDefineDict->insert(def->name,def); //printf("#define `%s' `%s' #nargs=%d\n", // def->name.data(),def->definition.data(),def->nargs); } else if ((i_obrace==-1 || i_obrace>i_equals) && (i_cbrace==-1 || i_cbrace>i_equals) && - ds.length()>0 && (int)ds.length()>i_equals + !ds.isEmpty() && (int)ds.length()>i_equals ) // predefined non-function macro definition { Define *def = new Define; @@ -4404,7 +4449,7 @@ void preprocessFile(const char *fileName,BufStr &output) def->nargs = -1; def->isPredefined = TRUE; def->nonRecursive = nonRecursive; - fileDefineDict->insert(def->name,def); + g_fileDefineDict->insert(def->name,def); //printf("#define `%s' `%s' #nargs=%d\n", // def->name.data(),def->definition.data(),def->nargs); @@ -4432,14 +4477,14 @@ void preprocessFile(const char *fileName,BufStr &output) return; } } - yyLineNr = 1; - level = 0; - ifcount = 0; - yyFileName = fileName; + g_yyLineNr = 1; + g_level = 0; + g_ifcount = 0; + setFileName(fileName); BEGIN( Start ); - lastGuardName.resize(0); - guardExpr.resize(0); + g_lastGuardName.resize(0); + g_guardExpr.resize(0); preYYlex(); if (Config::inputFilter.isEmpty()) @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -63,50 +63,58 @@ struct FileState /* ----------------------------------------------------------------- * - * statics + * scanner's state */ -static int yyLineNr = 1; -static QCString yyFileName; -static int ifcount = 0; -static QStrList *pathList = 0; -static QStack<FileState> includeStack; -static QDict<int> *argDict; -static int defArgs = -1; -static QCString defName; -static QCString defText; -static QCString defArgsStr; -static bool defVarArgs; -static int level; -static int lastCContext; -static int lastCPPContext; -static QArray<int> levelGuard; -static QCString guardExpr; -static BufStr *outputBuf; -static int roundCount; -static bool quoteArg; -static DefineDict *fileDefineDict; -static DefineDict *expandedDict; -static int findDefArgContext; - -static QCString lastGuardName; +static int g_yyLineNr = 1; +static QCString g_yyFileName; +static FileDef *g_yyFileDef; +static int g_ifcount = 0; +static QStrList *g_pathList = 0; +static QStack<FileState> g_includeStack; +static QDict<int> *g_argDict; +static int g_defArgs = -1; +static QCString g_defName; +static QCString g_defText; +static QCString g_defLitText; +static QCString g_defArgsStr; +static bool g_defVarArgs; +static int g_level; +static int g_lastCContext; +static int g_lastCPPContext; +static QArray<int> g_levelGuard; +static BufStr *g_outputBuf; +static int g_roundCount; +static bool g_quoteArg; +static DefineDict *g_fileDefineDict; +static DefineDict *g_expandedDict; +static int g_findDefArgContext; +static QCString g_lastGuardName; +static QCString g_incName; +static QCString g_guardExpr; +static void setFileName(const char *name) +{ + bool ambig; + g_yyFileName=name; + g_yyFileDef=findFileDef(&inputNameDict,g_yyFileName,ambig); +} static void incrLevel() { - level++; - levelGuard.resize(level); - levelGuard[level-1]=FALSE; - //printf("%s line %d: incrLevel %d\n",yyFileName.data(),yyLineNr,level); + g_level++; + g_levelGuard.resize(g_level); + g_levelGuard[g_level-1]=FALSE; + //printf("%s line %d: incrLevel %d\n",g_yyFileName.data(),g_yyLineNr,g_level); } static void decrLevel() { - //printf("%s line %d: decrLevel %d\n",yyFileName.data(),yyLineNr,level); - if (level > 0) + //printf("%s line %d: decrLevel %d\n",g_yyFileName.data(),g_yyLineNr,g_level); + if (g_level > 0) { - level--; - levelGuard.resize(level); + g_level--; + g_levelGuard.resize(g_level); } else { @@ -116,12 +124,12 @@ static void decrLevel() static bool otherCaseDone() { - return levelGuard[level-1]; + return g_levelGuard[g_level-1]; } static void setCaseDone(bool value) { - levelGuard[level-1]=value; + g_levelGuard[g_level-1]=value; } static Define *isDefined(const char *name) @@ -129,20 +137,20 @@ static Define *isDefined(const char *name) if (name) { Define *def; - //if ((def=fileDefineCache->findDefine(yyFileName,name)) && !def->undef) + //if ((def=fileDefineCache->findDefine(g_yyFileName,name)) && !def->undef) // return def; - if ((def=fileDefineDict->find(name)) && !def->undef) return def; + if ((def=g_fileDefineDict->find(name)) && !def->undef) return def; } return 0; } static FILE *findFile(const char *fileName) { - if (pathList==0) + if (g_pathList==0) { return 0; } - char *s=pathList->first(); + char *s=g_pathList->first(); while (s) { QCString absName=(QCString)s+"/"+fileName; @@ -163,12 +171,12 @@ static FILE *findFile(const char *fileName) } if (f) { - yyFileName=absName; - yyLineNr=1; + setFileName(absName); + g_yyLineNr=1; return f; } } - s=pathList->next(); + s=g_pathList->next(); } return 0; } @@ -291,7 +299,7 @@ static void processConcatOperators(QCString &expr) */ static bool replaceFunctionMacro(const QCString &expr,QCString *rest,int pos,int &len,const Define *def,QCString &result) { - //printf("replaceFunctionMacro(expr=%s,rest=%s,pos=%d,def=%s) level=%d\n",expr.data(),rest ? rest->data() : 0,pos,def->name.data(),level); + //printf("replaceFunctionMacro(expr=%s,rest=%s,pos=%d,def=%s) level=%d\n",expr.data(),rest ? rest->data() : 0,pos,def->name.data(),g_level); //bool replaced=FALSE; uint j=pos; len=0; @@ -566,7 +574,7 @@ static void expandExpression(QCString &expr,QCString *rest,int pos) //printf("macroName %s found\n",macroName.data()); if (p<2 || !(expr.at(p-2)=='@' && expr.at(p-1)=='-')) // no-rescan marker? { - if (expandedDict->find(macroName)==0) // expand macro + if (g_expandedDict->find(macroName)==0) // expand macro { Define *def=isDefined(macroName); //printf("name is not an expanded macro def=%s\n",def ? def->name.data() : 0); @@ -593,9 +601,9 @@ static void expandExpression(QCString &expr,QCString *rest,int pos) processConcatOperators(resultExpr); if (!def->nonRecursive) { - expandedDict->insert(macroName,def); + g_expandedDict->insert(macroName,def); expandExpression(resultExpr,&restExpr,0); - expandedDict->remove(macroName); + g_expandedDict->remove(macroName); } expr=expr.left(p)+resultExpr+restExpr; i=p; @@ -711,7 +719,7 @@ bool computeExpression(const QCString &expr) QCString e=expr; expandExpression(e,0,0); e = removeIdsAndMarkers(e); - if (e.length()==0) return FALSE; + if (e.isEmpty()) return FALSE; return parseCppExpression(e); } @@ -731,92 +739,115 @@ QCString expandMacro(const QCString &name) Define *newDefine() { Define *def=new Define; - def->name = defName; - def->definition = defText.stripWhiteSpace(); - def->nargs = defArgs; - def->fileName = yyFileName; - def->lineNr = yyLineNr; - def->varArgs = defVarArgs; + def->name = g_defName; + def->definition = g_defText.stripWhiteSpace(); + def->nargs = g_defArgs; + def->fileName = g_yyFileName; + def->lineNr = g_yyLineNr; + def->varArgs = g_defVarArgs; return def; } void addDefine() { - bool ambig; - FileDef *fd=findFileDef(&inputNameDict,yyFileName,ambig); - MemberDef *md=new MemberDef("#define",defName,defArgsStr,0, + //bool ambig; + //FileDef *fd=findFileDef(&inputNameDict,g_yyFileName,ambig); + MemberDef *md=new MemberDef("#define",g_defName,g_defArgsStr,0, Public,Normal,FALSE,FALSE,MemberDef::Define,0,0); - ArgumentList *argList = new ArgumentList; - stringToArgumentList(defArgsStr,argList); - md->setArgumentList(argList); - md->setDefFile(yyFileName); - md->setDefLine(yyLineNr); - md->setFileDef(fd); - md->setDefinition("#define "+defName); + if (!g_defArgsStr.isEmpty()) + { + ArgumentList *argList = new ArgumentList; + //printf("addDefine() g_defName=`%s' g_defArgsStr=`%s'\n",g_defName.data(),g_defArgsStr.data()); + stringToArgumentList(g_defArgsStr,argList); + md->setArgumentList(argList); + } + //printf("Setting initializer for `%s' to `%s'\n",g_defName.data(),g_defText.data()); + md->setInitializer(g_defLitText); + + md->setDefFile(g_yyFileName); + md->setDefLine(g_yyLineNr); + md->setFileDef(g_yyFileDef); + md->setDefinition("#define "+g_defName); - MemberName *mn=functionNameDict[defName]; + MemberName *mn=functionNameDict[g_defName]; if (mn==0) { - mn = new MemberName(defName); + mn = new MemberName(g_defName); functionNameList.inSort(mn); - functionNameDict.insert(defName,mn); + functionNameDict.insert(g_defName,mn); } mn->append(md); - if (fd) fd->insertMember(md); + if (g_yyFileDef) g_yyFileDef->insertMember(md); Define *d; - if ((d=defineDict[defName])==0) defineDict.insert(defName,newDefine()); - + if ((d=defineDict[g_defName])==0) defineDict.insert(g_defName,newDefine()); } static void outputChar(char c) { - if (includeStack.isEmpty()) outputBuf->addChar(c); + if (g_includeStack.isEmpty()) g_outputBuf->addChar(c); } static void outputArray(const char *a,int len) { - if (includeStack.isEmpty()) outputBuf->addArray(a,len); + if (g_includeStack.isEmpty()) g_outputBuf->addArray(a,len); } static void readIncludeFile(const QCString &inc) { if (!Config::searchIncludeFlag) return; // do not read include files uint i=0; + // find the start of the include file name while (i<inc.length() && (inc.at(i)==' ' || inc.at(i)=='"' || inc.at(i)=='<') ) i++; uint s=i; + + // was it a local include? + bool localInclude = s>0 && inc.at(s-1)=='"'; + // find the end of the include file name - while (i<inc.length() && - inc.at(i)!='"' && inc.at(i)!='>') i++; + while (i<inc.length() && inc.at(i)!='"' && inc.at(i)!='>') i++; + if (s<inc.length() && i>s) // valid include file name found { + // extract include path+name QCString incFileName=inc.mid(s,i-s).stripWhiteSpace(); FILE *f; - QCString oldFileName=yyFileName.copy(); + QCString oldFileName = g_yyFileName.copy(); + FileDef *oldFileDef = g_yyFileDef; if ((f=findFile(incFileName))) // see if the include file can be found { #if SHOW_INCLUDES - for (i=0;i<includeStack.count();i++) msg(" "); + for (i=0;i<g_includeStack.count();i++) msg(" "); msg("#include %s: parsing...\n",incFileName.data()); #endif + if (oldFileDef) + { + // add include dependency to the file in which the #include was found + oldFileDef->addIncludeDependency(g_yyFileDef,incFileName,localInclude); + } // store the state of the old file FileState *fs=new FileState; fs->bufState=YY_CURRENT_BUFFER; - fs->lineNr=yyLineNr; + fs->lineNr=g_yyLineNr; fs->fileName=oldFileName; fs->filePtr=f; // push the state on the stack - includeStack.push(fs); + g_includeStack.push(fs); // set the scanner to the include file preYYin=f; yy_switch_to_buffer(yy_create_buffer(preYYin, YY_BUF_SIZE)); } else { + if (oldFileDef) + { + // add include dependency to the file in which the #include was found + oldFileDef->addIncludeDependency(0,incFileName,localInclude); + } #if SHOW_INCLUDES msg("#include %s: not found! skipping...\n",incFileName.data()); //printf("Error: include file %s not found\n",yytext); @@ -857,7 +888,7 @@ BN [ \t\r\n] %x DefinedExpr2 %x SkipDoubleQuote %x SkipSingleQuote -%x UndefName +%x Ung_defName %x IgnoreLine %x FindDefineArgs %x ReadString @@ -869,15 +900,15 @@ BN [ \t\r\n] <*>\r /* <Start>^{B}*([^ \t#\n\/][^\n]*)?"\n" { - //printf("%s line %d: %s",yyFileName.data(),yyLineNr,yytext); - if (includeStack.isEmpty()) + //printf("%s line %d: %s",g_yyFileName.data(),g_yyLineNr,yytext); + if (g_includeStack.isEmpty()) { //preprocessedFile+=yytext; //char *s=yytext,c; //if (s) while ((c=*s++)) *dataPtr++=c; - outputBuf->addArray(yytext,yyleng); + g_outputBuf->addArray(yytext,yyleng); } - yyLineNr++; + g_yyLineNr++; } */ <Start>^{B}*"#" { BEGIN(Command); } @@ -893,25 +924,25 @@ BN [ \t\r\n] <CopyLine>{ID}/{BN}*"(" { Define *def=0; //printf("Search for define %s\n",yytext); - if (includeStack.isEmpty() && + if (g_includeStack.isEmpty() && Config::macroExpansionFlag && - /* (expandDefine=fileDefineCache->findDefine(yyFileName,yytext)) */ - (def=fileDefineDict->find(yytext)) && + /* (expandDefine=fileDefineCache->findDefine(g_yyFileName,yytext)) */ + (def=g_fileDefineDict->find(yytext)) && (!Config::onlyPredefinedFlag || def->isPredefined) ) { //printf("Found it!\n"); - roundCount=0; - defArgsStr=yytext; + g_roundCount=0; + g_defArgsStr=yytext; if (def->nargs==-1) // no function macro { - QCString result = expandMacro(defArgsStr); + QCString result = expandMacro(g_defArgsStr); //printf("result=`%s'\n",result.data()); outputArray(result,result.length()); } else // zero or more arguments { - findDefArgContext = CopyLine; + g_findDefArgContext = CopyLine; BEGIN(FindDefineArgs); } } @@ -923,9 +954,9 @@ BN [ \t\r\n] <CopyLine>{ID} { Define *def=0; //printf("Search for define %s\n",yytext); - if (includeStack.isEmpty() && + if (g_includeStack.isEmpty() && Config::macroExpansionFlag && - (def=fileDefineDict->find(yytext)) && + (def=g_fileDefineDict->find(yytext)) && def->nargs==-1 && (!Config::onlyPredefinedFlag || def->isPredefined) ) @@ -947,25 +978,25 @@ BN [ \t\r\n] <CopyLine>\n { outputChar('\n'); BEGIN(Start); - yyLineNr++; + g_yyLineNr++; } <FindDefineArgs>"(" { - defArgsStr+='('; - roundCount++; + g_defArgsStr+='('; + g_roundCount++; } <FindDefineArgs>")" { - defArgsStr+=')'; - roundCount--; - if (roundCount==0) + g_defArgsStr+=')'; + g_roundCount--; + if (g_roundCount==0) { - //printf("defArgsStr=`%s'\n",defArgsStr.data()); - QCString result=expandMacro(defArgsStr); - if (findDefArgContext==CopyLine) + //printf("g_defArgsStr=`%s'\n",g_defArgsStr.data()); + QCString result=expandMacro(g_defArgsStr); + if (g_findDefArgContext==CopyLine) { outputArray(result,result.length()); - BEGIN(findDefArgContext); + BEGIN(g_findDefArgContext); } - else // findDefArgContext==IncludeID + else // g_findDefArgContext==IncludeID { readIncludeFile(result); BEGIN(Start); @@ -974,41 +1005,44 @@ BN [ \t\r\n] } /* <FindDefineArgs>")"{B}*"(" { - defArgsStr+=yytext; + g_defArgsStr+=yytext; } */ <FindDefineArgs>"\"" { - defArgsStr+=*yytext; + g_defArgsStr+=*yytext; BEGIN(ReadString); } <FindDefineArgs>\n { - yyLineNr++; + g_yyLineNr++; outputChar('\n'); } <FindDefineArgs>"@" { - defArgsStr+="@@"; + g_defArgsStr+="@@"; } <FindDefineArgs>. { - defArgsStr+=*yytext; + g_defArgsStr+=*yytext; } <ReadString>"\\\"" { - defArgsStr+=yytext; + g_defArgsStr+=yytext; } <ReadString>"\"" { - defArgsStr+=*yytext; + g_defArgsStr+=*yytext; BEGIN(FindDefineArgs); } <ReadString>"//"|"/*" { - defArgsStr+=yytext; + g_defArgsStr+=yytext; } <ReadString>. { - defArgsStr+=*yytext; + g_defArgsStr+=*yytext; } <Command>"include"{B}*/{ID} { if (Config::macroExpansionFlag) BEGIN(IncludeID); } <Command>"include"{B}*[<"] { + char c[2]; + c[0]=yytext[yyleng-1];c[1]='\0'; + g_incName=c; BEGIN(Include); } <Command>"define"{B}+ { @@ -1017,62 +1051,62 @@ BN [ \t\r\n] } <Command>"ifdef"/{B}*"(" { incrLevel(); - guardExpr.resize(0); + g_guardExpr.resize(0); BEGIN(DefinedExpr2); } <Command>"ifdef"/{B}+ { //printf("Pre.l: ifdef\n"); incrLevel(); - guardExpr.resize(0); + g_guardExpr.resize(0); BEGIN(DefinedExpr1); } <Command>"ifndef"/{B}*"(" { incrLevel(); - guardExpr="! "; + g_guardExpr="! "; BEGIN(DefinedExpr2); } <Command>"ifndef"/{B}+ { incrLevel(); - guardExpr="! "; + g_guardExpr="! "; BEGIN(DefinedExpr1); } <Command>"if"/[ \t(] { incrLevel(); - guardExpr.resize(0); + g_guardExpr.resize(0); BEGIN(Guard); } <Command>"elif"/[ \t(] { if (!otherCaseDone()) { - guardExpr.resize(0); + g_guardExpr.resize(0); BEGIN(Guard); } else { - ifcount=0; + g_ifcount=0; BEGIN(SkipCPPBlock); } } <Command>"else"/[^a-z_A-Z0-9] { - //printf("else levelGuard[%d]=%d\n",level-1,levelGuard[level-1]); + //printf("else g_levelGuard[%d]=%d\n",g_level-1,g_levelGuard[g_level-1]); if (otherCaseDone()) { - ifcount=0; + g_ifcount=0; BEGIN(SkipCPPBlock); } else { setCaseDone(TRUE); - //levelGuard[level-1]=TRUE; + //g_levelGuard[g_level-1]=TRUE; } } <Command>"undef"{B}+ { - BEGIN(UndefName); + BEGIN(Ung_defName); } <Command>"elif"/[ \t(] { if (!otherCaseDone()) { - guardExpr.resize(0); + g_guardExpr.resize(0); BEGIN(Guard); } } @@ -1083,14 +1117,14 @@ BN [ \t\r\n] <Command,IgnoreLine>\n { outputChar('\n'); BEGIN(Start); - yyLineNr++; + g_yyLineNr++; } <Command>{ID} { // unknown directive BEGIN(IgnoreLine); } <IgnoreLine>. <Command>. -<UndefName>{ID} { +<Ung_defName>{ID} { Define *def; if ((def=isDefined(yytext))) { @@ -1099,10 +1133,10 @@ BN [ \t\r\n] } BEGIN(Start); } -<Guard>\\\n { +<Guard>\\[\r]?\n { outputChar('\n'); - guardExpr+=' '; - yyLineNr++; + g_guardExpr+=' '; + g_yyLineNr++; } <Guard>"defined"/{B}*"(" { BEGIN(DefinedExpr2); @@ -1110,43 +1144,43 @@ BN [ \t\r\n] <Guard>"defined"/{B}+ { BEGIN(DefinedExpr1); } -<Guard>. { guardExpr+=*yytext; } +<Guard>. { g_guardExpr+=*yytext; } <Guard>\n { outputChar('\n'); - yyLineNr++; + g_yyLineNr++; //printf("Guard: `%s'\n", - // guardExpr.data()); - bool guard=computeExpression(guardExpr); + // g_guardExpr.data()); + bool guard=computeExpression(g_guardExpr); setCaseDone(guard); - //printf("if levelGuard[%d]=%d\n",level-1,levelGuard[level-1]); + //printf("if g_levelGuard[%d]=%d\n",g_level-1,g_levelGuard[g_level-1]); if (guard) { BEGIN(Start); } else { - ifcount=0; + g_ifcount=0; BEGIN(SkipCPPBlock); } } -<DefinedExpr1,DefinedExpr2>\\\n { yyLineNr++; outputChar('\n'); } +<DefinedExpr1,DefinedExpr2>\\\n { g_yyLineNr++; outputChar('\n'); } <DefinedExpr1>{ID} { if (isDefined(yytext)) - guardExpr+=" 1L "; + g_guardExpr+=" 1L "; else - guardExpr+=" 0L "; - lastGuardName=yytext; + g_guardExpr+=" 0L "; + g_lastGuardName=yytext; BEGIN(Guard); } <DefinedExpr2>{ID} { if (isDefined(yytext)) - guardExpr+=" 1L "; + g_guardExpr+=" 1L "; else - guardExpr+=" 0L "; - lastGuardName.resize(0); + g_guardExpr+=" 0L "; + g_lastGuardName.resize(0); } <DefinedExpr1,DefinedExpr2>\n { // should not happen, handle anyway - ifcount=0; + g_ifcount=0; BEGIN(SkipCPPBlock); } <DefinedExpr2>")" { @@ -1158,12 +1192,12 @@ BN [ \t\r\n] <SkipCPPBlock>. <SkipCommand>"if"(("n")?("def"))?/[ \t(] { incrLevel(); - ifcount++; - //printf("#if... depth=%d\n",ifcount); + g_ifcount++; + //printf("#if... depth=%d\n",g_ifcount); } <SkipCommand>"else" { - //printf("Else! ifcount=%d otherCaseDone=%d\n",ifcount,otherCaseDone()); - if (ifcount==0 && !otherCaseDone()) + //printf("Else! g_ifcount=%d otherCaseDone=%d\n",g_ifcount,otherCaseDone()); + if (g_ifcount==0 && !otherCaseDone()) { setCaseDone(TRUE); //outputChar('\n'); @@ -1171,12 +1205,12 @@ BN [ \t\r\n] } } <SkipCommand>"elif"/[ \t(] { - if (ifcount==0) + if (g_ifcount==0) { if (!otherCaseDone()) { - guardExpr.resize(0); - lastGuardName.resize(0); + g_guardExpr.resize(0); + g_lastGuardName.resize(0); BEGIN(Guard); } else @@ -1187,7 +1221,7 @@ BN [ \t\r\n] } <SkipCommand>"endif" { decrLevel(); - if (--ifcount<0) + if (--g_ifcount<0) { //outputChar('\n'); BEGIN(Start); @@ -1195,7 +1229,7 @@ BN [ \t\r\n] } <SkipCommand>\n { outputChar('\n'); - yyLineNr++; + g_yyLineNr++; BEGIN(SkipCPPBlock); } <SkipCommand>{ID} { // unknown directive @@ -1205,22 +1239,22 @@ BN [ \t\r\n] <SkipLine>[^/\n]+ <SkipLine>. <SkipLine,SkipCommand,SkipCPPBlock>"//" { - lastCPPContext=YY_START; + g_lastCPPContext=YY_START; BEGIN(RemoveCPPComment); } <SkipLine,SkipCommand,SkipCPPBlock>"/*" { - lastCContext=YY_START; + g_lastCContext=YY_START; BEGIN(RemoveCComment); } <SkipLine>\n { outputChar('\n'); - yyLineNr++; + g_yyLineNr++; BEGIN(SkipCPPBlock); } <IncludeID>{ID}{B}*/"(" { - roundCount=0; - defArgsStr=yytext; - findDefArgContext = IncludeID; + g_roundCount=0; + g_defArgsStr=yytext; + g_findDefArgContext = IncludeID; BEGIN(FindDefineArgs); } <IncludeID>{ID} { @@ -1228,123 +1262,128 @@ BN [ \t\r\n] BEGIN(Start); } <Include>[^\">\n]+[\">] { - QCString incName=yytext; + g_incName+=yytext; //int l=incName.length(); //QCString incFileName=incName.left(l-1); //if (fileDefineCache->fileCached(incFileName)) //{ // printf("file already cached!\n"); - // fileDefineCache->merge(incFileName,yyFileName); + // fileDefineCache->merge(incFileName,g_yyFileName); //} //else if ((f=findFile(incFileName))) - readIncludeFile(incName); + readIncludeFile(g_incName); BEGIN(Start); } <DefName>{ID}/"(" { //printf("Define() `%s'\n",yytext); - argDict = new QDict<int>(31); - argDict->setAutoDelete(TRUE); - defArgs = 0; - defArgsStr.resize(0); - defText.resize(0); - defName = yytext; - defVarArgs = FALSE; + g_argDict = new QDict<int>(31); + g_argDict->setAutoDelete(TRUE); + g_defArgs = 0; + g_defArgsStr.resize(0); + g_defText.resize(0); + g_defLitText.resize(0); + g_defName = yytext; + g_defVarArgs = FALSE; BEGIN(DefineArg); } <DefName>{ID}/{B}* { //printf("Define `%s'\n",yytext); - argDict = 0; - defArgs = -1; - defArgsStr.resize(0); - defText.resize(0); - defName = yytext; - defVarArgs = FALSE; - QCString tmp=(QCString)"#define "+defName+defArgsStr; + g_argDict = 0; + g_defArgs = -1; + g_defArgsStr.resize(0); + g_defText.resize(0); + g_defLitText.resize(0); + g_defName = yytext; + g_defVarArgs = FALSE; + QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr; outputArray(tmp.data(),tmp.length()); - quoteArg=FALSE; + g_quoteArg=FALSE; BEGIN(DefineText); } <DefName>{ID}/{B}*"\n" { - argDict = 0; - defArgs = -1; - defName = yytext; - defArgsStr.resize(0); - defText.resize(0); - defVarArgs = FALSE; - if ( defName!=lastGuardName ) + g_argDict = 0; + g_defArgs = -1; + g_defName = yytext; + g_defArgsStr.resize(0); + g_defText.resize(0); + g_defLitText.resize(0); + g_defVarArgs = FALSE; + if ( g_defName!=g_lastGuardName ) { // define may appear in the output - QCString tmp=(QCString)"#define "+defName+defArgsStr; + QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr; outputArray(tmp.data(),tmp.length()); - quoteArg=FALSE; + g_quoteArg=FALSE; BEGIN(DefineText); } else // define is a guard => hide { //printf("Found a guard %s\n",yytext); Define *def=0; - //if (includeStack.isEmpty()) + //if (g_includeStack.isEmpty()) //{ // addDefine(); //} - if (/*!Config::onlyPredefinedFlag &&*/ (def=fileDefineDict->find(defName))==0) + if (/*!Config::onlyPredefinedFlag &&*/ (def=g_fileDefineDict->find(g_defName))==0) { - fileDefineDict->insert(defName,newDefine()); + g_fileDefineDict->insert(g_defName,newDefine()); } else if (def)// name already exists { if (def->undef) // undefined name { def->undef = FALSE; - def->name = defName; - def->definition = defText.stripWhiteSpace(); - def->nargs = defArgs; - def->fileName = yyFileName; - def->lineNr = yyLineNr; + def->name = g_defName; + def->definition = g_defText.stripWhiteSpace(); + def->nargs = g_defArgs; + def->fileName = g_yyFileName.copy(); + def->lineNr = g_yyLineNr; } else { - //printf("Error: define %s is defined more than once!\n",defName.data()); + //printf("Error: define %s is defined more than once!\n",g_defName.data()); } } //outputChar('\n'); - lastGuardName.resize(0); + g_lastGuardName.resize(0); BEGIN(Start); } } -<DefineArg>","{B}* { defArgsStr+=yytext; } -<DefineArg>"("{B}* { defArgsStr+=yytext; } +<DefineArg>","{B}* { g_defArgsStr+=yytext; } +<DefineArg>"("{B}* { g_defArgsStr+=yytext; } <DefineArg>{B}*")"{B}* { - defArgsStr+=yytext; - QCString tmp=(QCString)"#define "+defName+defArgsStr; + g_defArgsStr+=yytext; + QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr; outputArray(tmp.data(),tmp.length()); - quoteArg=FALSE; + g_quoteArg=FALSE; BEGIN(DefineText); } <DefineArg>{ID}("..."?) { //printf("Define addArg(%s)\n",yytext); QCString argName=yytext; - defVarArgs = yytext[yyleng-1]=='.'; - if (defVarArgs) // strip ellipsis + g_defVarArgs = yytext[yyleng-1]=='.'; + if (g_defVarArgs) // strip ellipsis argName=argName.left(argName.length()-3); - defArgsStr+=yytext; - argDict->insert(argName,new int(defArgs)); - defArgs++; + g_defArgsStr+=yytext; + g_argDict->insert(argName,new int(g_defArgs)); + g_defArgs++; } <DefineText>"/*" { outputChar('/');outputChar('*'); - defText+=' '; - lastCContext=YY_START; + g_defText+=' '; + g_defLitText+=' '; + g_lastCContext=YY_START; BEGIN(SkipCComment); } <DefineText>"//" { outputChar('/');outputChar('/'); - lastCPPContext=YY_START; + g_lastCPPContext=YY_START; + g_defLitText+=' '; BEGIN(SkipCPPComment); } <SkipCComment>"*/" { outputChar('*');outputChar('/'); - BEGIN(lastCContext); + BEGIN(g_lastCContext); } <SkipCComment>"//" { outputChar('/');outputChar('/'); @@ -1356,21 +1395,21 @@ BN [ \t\r\n] outputArray(yytext,yyleng); } <SkipCComment>\n { - yyLineNr++; + g_yyLineNr++; outputChar('\n'); } <SkipCComment>. { outputChar(*yytext); } -<RemoveCComment>"*/" { BEGIN(lastCContext); } +<RemoveCComment>"*/" { BEGIN(g_lastCContext); } <RemoveCComment>"//" <RemoveCComment>"/*" <RemoveCComment>[^*\n]+ -<RemoveCComment>\n { yyLineNr++; outputChar('\n'); } +<RemoveCComment>\n { g_yyLineNr++; outputChar('\n'); } <RemoveCComment>. <SkipCPPComment,RemoveCPPComment>\n { unput(*yytext); - BEGIN(lastCPPContext); + BEGIN(g_lastCPPContext); } <SkipCPPComment>"/*" { outputChar('/');outputChar('*'); @@ -1389,55 +1428,59 @@ BN [ \t\r\n] <RemoveCPPComment>[^\n]+ <RemoveCPPComment>. <DefineText>"#" { - quoteArg=TRUE; + g_quoteArg=TRUE; + g_defLitText+=yytext; } <DefineText>{ID} { - if (quoteArg) + g_defLitText+=yytext; + if (g_quoteArg) { - defText+="\""; + g_defText+="\""; } - if (defArgs>0) + if (g_defArgs>0) { int *n; - if ((n=(*argDict)[yytext])) + if ((n=(*g_argDict)[yytext])) { - if (!quoteArg) defText+=' '; - defText+='@'; + if (!g_quoteArg) g_defText+=' '; + g_defText+='@'; QCString numStr; numStr.setNum(*n); - defText+=numStr; - if (!quoteArg) defText+=' '; + g_defText+=numStr; + if (!g_quoteArg) g_defText+=' '; } else { - defText+=yytext; + g_defText+=yytext; } } else { - defText+=yytext; + g_defText+=yytext; } - if (quoteArg) + if (g_quoteArg) { - defText+="\""; + g_defText+="\""; } - quoteArg=FALSE; + g_quoteArg=FALSE; } -<DefineText>\\\n { +<DefineText>\\[\r]?\n { + g_defLitText+=yytext; outputChar('\n'); - defText += ' '; yyLineNr++; + g_defText += ' '; g_yyLineNr++; } <DefineText>\n { + g_defLitText+=yytext; outputChar('\n'); Define *def=0; - //printf("Define name=`%s' text=`%s'\n",defName.data(),defText.data()); - if (includeStack.isEmpty()) + //printf("Define name=`%s' text=`%s'\n",g_defName.data(),g_defText.data()); + if (g_includeStack.isEmpty()) { addDefine(); } - if (/*!Config::onlyPredefinedFlag &&*/ (def=fileDefineDict->find(defName))==0) + if (/*!Config::onlyPredefinedFlag &&*/ (def=g_fileDefineDict->find(g_defName))==0) { - fileDefineDict->insert(defName,newDefine()); + g_fileDefineDict->insert(g_defName,newDefine()); } else if (def)// name already exists { @@ -1445,59 +1488,61 @@ BN [ \t\r\n] if (def->undef) // undefined name { def->undef = FALSE; - def->name = defName; - def->definition = defText.stripWhiteSpace(); - def->nargs = defArgs; - def->fileName = yyFileName; - def->lineNr = yyLineNr; + def->name = g_defName; + def->definition = g_defText.stripWhiteSpace(); + def->nargs = g_defArgs; + def->fileName = g_yyFileName.copy(); + def->lineNr = g_yyLineNr; } else { - //printf("Error: define %s is defined more than once!\n",defName.data()); + //printf("Error: define %s is defined more than once!\n",g_defName.data()); } } - delete argDict; - yyLineNr++; - lastGuardName.resize(0); + delete g_argDict; g_argDict=0; + g_yyLineNr++; + g_lastGuardName.resize(0); BEGIN(Start); } -<DefineText>{B}* { defText += ' '; } -<DefineText>{B}*"##"{B}* { defText += "##"; } -<DefineText>"@" { defText += "@@"; } -<DefineText>\" { defText += *yytext; - BEGIN(SkipDoubleQuote); +<DefineText>{B}* { g_defText += ' '; g_defLitText+=yytext; } +<DefineText>{B}*"##"{B}* { g_defText += "##"; g_defLitText+=yytext; } +<DefineText>"@" { g_defText += "@@"; g_defLitText+=yytext; } +<DefineText>\" { g_defText += *yytext; + g_defLitText+=yytext; + BEGIN(SkipDoubleQuote); } -<DefineText>\' { defText += *yytext; +<DefineText>\' { g_defText += *yytext; + g_defLitText+=yytext; BEGIN(SkipSingleQuote); } -<SkipDoubleQuote>"//" { defText += yytext; } -<SkipDoubleQuote>"/*" { defText += yytext; } +<SkipDoubleQuote>"//" { g_defText += yytext; g_defLitText+=yytext; } +<SkipDoubleQuote>"/*" { g_defText += yytext; g_defLitText+=yytext; } <SkipDoubleQuote>\" { - defText += *yytext; + g_defText += *yytext; g_defLitText+=yytext; BEGIN(DefineText); } <SkipSingleQuote,SkipDoubleQuote>\\. { - defText += yytext; + g_defText += yytext; g_defLitText+=yytext; } <SkipSingleQuote>\' { - defText += *yytext; + g_defText += *yytext; g_defLitText+=yytext; BEGIN(DefineText); } -<SkipDoubleQuote>. { defText += *yytext; } -<SkipSingleQuote>. { defText += *yytext; } -<DefineText>. { defText += *yytext; } +<SkipDoubleQuote>. { g_defText += *yytext; g_defLitText+=yytext; } +<SkipSingleQuote>. { g_defText += *yytext; g_defLitText+=yytext; } +<DefineText>. { g_defText += *yytext; g_defLitText+=yytext; } <<EOF>> { //printf("End of include file\n"); - //printf("Include stack depth=%d\n",includeStack.count()); - if (includeStack.isEmpty()) + //printf("Include stack depth=%d\n",g_includeStack.count()); + if (g_includeStack.isEmpty()) { //printf("Terminating scanner!\n"); yyterminate(); } else { - FileState *fs=includeStack.pop(); - //fileDefineCache->merge(yyFileName,fs->fileName); + FileState *fs=g_includeStack.pop(); + //fileDefineCache->merge(g_yyFileName,fs->fileName); if (Config::inputFilter.isEmpty()) fclose(fs->filePtr); else @@ -1505,25 +1550,25 @@ BN [ \t\r\n] YY_BUFFER_STATE oldBuf = YY_CURRENT_BUFFER; yy_switch_to_buffer( fs->bufState ); yy_delete_buffer( oldBuf ); - yyLineNr=fs->lineNr; - yyFileName=fs->fileName.copy(); - //printf("######## FileName %s\n",yyFileName.data()); - delete fs; + g_yyLineNr=fs->lineNr; + setFileName(fs->fileName.copy()); + //printf("######## FileName %s\n",g_yyFileName.data()); + delete fs; fs=0; } } <*>"/*" { outputChar('/');outputChar('*'); - lastCContext=YY_START; + g_lastCContext=YY_START; BEGIN(SkipCComment); } <*>"//" { outputChar('/');outputChar('/'); - lastCPPContext=YY_START; + g_lastCPPContext=YY_START; BEGIN(SkipCPPComment); } <*>\n { outputChar('\n'); - yyLineNr++; + g_yyLineNr++; } <*>. { outputChar(*yytext); @@ -1542,7 +1587,7 @@ static int getNextChar(const QCString &expr,QCString *rest,uint &pos) //printf("%c=expr()\n",expr.at(pos)); return expr.at(pos++); } - else if (rest && rest->length()>0) + else if (rest && !rest->isEmpty()) { int cc=rest->at(0); *rest=rest->right(rest->length()-1); @@ -1565,7 +1610,7 @@ static int getCurrentChar(const QCString &expr,QCString *rest,uint pos) //printf("%c=expr()\n",expr.at(pos)); return expr.at(pos); } - else if (rest && rest->length()>0) + else if (rest && !rest->isEmpty()) { int cc=rest->at(0); //printf("%c=rest\n",cc); @@ -1602,27 +1647,27 @@ static void unputChar(const QCString &expr,QCString *rest,uint &pos,char c) void addSearchDir(const char *dir) { QFileInfo fi(dir); - if (fi.isDir()) pathList->append(fi.absFilePath()); + if (fi.isDir()) g_pathList->append(fi.absFilePath()); } void initPreprocessor() { - pathList = new QStrList; + g_pathList = new QStrList; addSearchDir("."); //defineNameList.setAutoDelete(TRUE); //defineNameList.clear(); defineDict.clear(); //fileDefineCache = new DefineCache(1009); - expandedDict = new DefineDict(17); - fileDefineDict = new DefineDict(1009); + g_expandedDict = new DefineDict(17); + g_fileDefineDict = new DefineDict(1009); } void cleanupPreprocessor() { //delete fileDefineCache; - delete fileDefineDict; - delete expandedDict; - delete pathList; + delete g_fileDefineDict; g_fileDefineDict=0; + delete g_expandedDict; g_expandedDict=0; + delete g_pathList; g_pathList=0; } @@ -1632,13 +1677,13 @@ void preprocessFile(const char *fileName,BufStr &output) uint orgOffset=output.curPos(); //#endif - outputBuf=&output; - includeStack.setAutoDelete(TRUE); - includeStack.clear(); - fileDefineDict->setAutoDelete(TRUE); - fileDefineDict->clear(); - expandedDict->setAutoDelete(FALSE); - expandedDict->clear(); + g_outputBuf=&output; + g_includeStack.setAutoDelete(TRUE); + g_includeStack.clear(); + g_fileDefineDict->setAutoDelete(TRUE); + g_fileDefineDict->clear(); + g_expandedDict->setAutoDelete(FALSE); + g_expandedDict->clear(); // add predefined macros char *defStr = Config::predefined.first(); @@ -1698,14 +1743,14 @@ void preprocessFile(const char *fileName,BufStr &output) def->nargs = count; def->isPredefined = TRUE; def->nonRecursive = nonRecursive; - fileDefineDict->insert(def->name,def); + g_fileDefineDict->insert(def->name,def); //printf("#define `%s' `%s' #nargs=%d\n", // def->name.data(),def->definition.data(),def->nargs); } else if ((i_obrace==-1 || i_obrace>i_equals) && (i_cbrace==-1 || i_cbrace>i_equals) && - ds.length()>0 && (int)ds.length()>i_equals + !ds.isEmpty() && (int)ds.length()>i_equals ) // predefined non-function macro definition { Define *def = new Define; @@ -1723,7 +1768,7 @@ void preprocessFile(const char *fileName,BufStr &output) def->nargs = -1; def->isPredefined = TRUE; def->nonRecursive = nonRecursive; - fileDefineDict->insert(def->name,def); + g_fileDefineDict->insert(def->name,def); //printf("#define `%s' `%s' #nargs=%d\n", // def->name.data(),def->definition.data(),def->nargs); @@ -1751,14 +1796,14 @@ void preprocessFile(const char *fileName,BufStr &output) return; } } - yyLineNr = 1; - level = 0; - ifcount = 0; - yyFileName = fileName; + g_yyLineNr = 1; + g_level = 0; + g_ifcount = 0; + setFileName(fileName); BEGIN( Start ); - lastGuardName.resize(0); - guardExpr.resize(0); + g_lastGuardName.resize(0); + g_guardExpr.resize(0); preYYlex(); if (Config::inputFilter.isEmpty()) @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp new file mode 100644 index 0000000..c0357b1 --- /dev/null +++ b/src/rtfgen.cpp @@ -0,0 +1,1913 @@ +/****************************************************************************** + * + * $Id$ + * + * Copyright (C) 1997-2000 by Parker Waechter & Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * All output generated with Doxygen is not covered by this license. + * + */ + +#include <stdlib.h> + +#include "qtbc.h" +#include <qdir.h> +#include <qstack.h> + +#include "rtfgen.h" +#include "config.h" +#include "message.h" +#include "doxygen.h" +#include "util.h" +#include "diagram.h" +#include "language.h" +#include "dot.h" + +const int indentLevels = 10; + +struct ListItemInfo +{ + bool isEnum; + int number; +}; + +static ListItemInfo listItemInfo[indentLevels]; + +// it is undocumented as far as I know, but +// "."'s in a bookmarkname are converted to "_"'s +// when an RTF file is read in... +static QCString formatBmkStr(const char *name) +{ + QCString result=name; + int i=0; + char c; + while ((c=result.at(i))!=0) + { + switch(c) + { + case '.': + case ':': + result.at(i)='_'; + break; + default: + break; + } + i++; + } + return result; +} + +static QCString dateToRTFDateString() +{ + const QDateTime &d = QDateTime::currentDateTime(); + QCString result; + result.sprintf("\\yr%d\\mo%d\\dy%d\\hr%d\\min%d\\sec%d", + d.date().year(), d.date().month(), d.date().day(), + d.time().hour(),d.time().minute(),d.time().second()); + return result; +} + +RTFGenerator::RTFGenerator() : OutputGenerator() +{ + dir=Config::rtfOutputDir; + col=0; + //insideTabbing=FALSE; + m_listLevel = 0; + m_bstartedBody = FALSE; + m_omitParagraph = FALSE; +} + +RTFGenerator::~RTFGenerator() +{ +} + +void RTFGenerator::append(const OutputGenerator *g) +{ + t << g->getContents(); + col+=((RTFGenerator *)g)->col; + //insideTabbing=insideTabbing || ((RTFGenerator *)g)->insideTabbing; + m_listLevel=((RTFGenerator *)g)->m_listLevel; + m_omitParagraph=((RTFGenerator *)g)->m_omitParagraph; + //printf("RTFGenerator::append(%s) insideTabbing=%s\n", g->getContents().data(), + // insideTabbing ? "TRUE" : "FALSE" ); +} + +OutputGenerator *RTFGenerator::copy() +{ + RTFGenerator *result = new RTFGenerator; + //result->insideTabbing=insideTabbing; + result->m_listLevel=m_listLevel; + result->m_omitParagraph=m_omitParagraph; + return result; +} + +void RTFGenerator::init() +{ + QCString dir=Config::rtfOutputDir; + QDir d(dir); + if (!d.exists() && !d.mkdir(dir)) + { + err("Could not create output directory %s\n",dir.data()); + exit(1); + } +} + +const char *Rtf_Style_Reset = "\\pard\\plain "; +const char *Rtf_Style_Heading1 = "\\s1\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs36\\kerning36\\cgrid "; +const char *Rtf_Style_Heading2 = "\\s2\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs28\\kerning28\\cgrid "; +const char *Rtf_Style_Heading3 = "\\s3\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\cgrid "; +const char *Rtf_Style_Heading4 = "\\s4\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid "; +const char *Rtf_Style_Title = "\\s15\\qc\\sb240\\sa60\\widctlpar\\outlinelevel0\\adjustright \\b\\f1\\fs32\\kerning28\\cgrid "; +const char *Rtf_Style_SubTitle = "\\s16\\qc\\sa60\\widctlpar\\outlinelevel1\\adjustright \\f1\\cgrid "; +const char *Rtf_Style_BodyText = "\\s17\\sa60\\sb30\\widctlpar\\qj \\fs22\\cgrid "; +const char *Rtf_Style_DenseText = "\\s18\\widctlpar\\fs22\\cgrid "; +const char *Rtf_Style_Header = "\\s28\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\adjustright \\fs20\\cgrid "; +const char *Rtf_Style_Footer = "\\s29\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\qr\\adjustright \\fs20\\cgrid "; +const char *Rtf_Style_CodeExample[] = +{ + "\\s40\\li0\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ", + "\\s41\\li360\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ", + "\\s42\\li720\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ", + "\\s43\\li1080\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ", + "\\s44\\li1440\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ", + "\\s45\\li1800\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ", + "\\s46\\li2160\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ", + "\\s47\\li2520\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ", + "\\s48\\li2880\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ", + "\\s49\\li3240\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid " +}; +const char *Rtf_Style_ListContinue[] = +{ + "\\s50\\li0\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s51\\li360\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s52\\li720\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s53\\li1080\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s54\\li1440\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s55\\li1800\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s56\\li2160\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s57\\li2520\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s58\\li2880\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s59\\li3240\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid " +}; +const char *Rtf_Style_DescContinue[] = +{ + "\\s60\\li0\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s61\\li360\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s62\\li720\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s63\\li1080\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s64\\li1440\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s65\\li1800\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s66\\li2160\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s67\\li2520\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s68\\li2880\\widctlpar\\qj\\adjustright \\fs20\\cgrid ", + "\\s69\\li3240\\widctlpar\\qj\\adjustright \\fs20\\cgrid " +}; +const char *Rtf_Style_LatexTOC[] = +{ + "\\s70\\li0\\sa30\\sb30\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ", + "\\s71\\li360\\sa27\\sb27\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ", + "\\s72\\li720\\sa24\\sb24\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ", + "\\s73\\li1080\\sa21\\sb21\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ", + "\\s74\\li1440\\sa18\\sb18\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ", + "\\s75\\li1800\\sa15\\sb15\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ", + "\\s76\\li2160\\sa12\\sb12\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ", + "\\s77\\li2520\\sa9\\sb9\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ", + "\\s78\\li2880\\sa6\\sb6\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ", + "\\s79\\li3240\\sa3\\sb3\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid " +}; +const char *Rtf_Style_ListBullet[] = +{ + "\\s80\\fi-360\\li360\\widctlpar\\jclisttab\\tx360{\\*\\pn \\pnlvlbody\\ilvl0\\ls1\\pnrnot0\\pndec }\\ls1\\adjustright \\fs20\\cgrid ", + "\\s81\\fi-360\\li720\\widctlpar\\jclisttab\\tx720{\\*\\pn \\pnlvlbody\\ilvl0\\ls2\\pnrnot0\\pndec }\\ls2\\adjustright \\fs20\\cgrid ", + "\\s82\\fi-360\\li1080\\widctlpar\\jclisttab\\tx1080{\\*\\pn \\pnlvlbody\\ilvl0\\ls3\\pnrnot0\\pndec }\\ls3\\adjustright \\fs20\\cgrid ", + "\\s83\\fi-360\\li1440\\widctlpar\\jclisttab\\tx1440{\\*\\pn \\pnlvlbody\\ilvl0\\ls4\\pnrnot0\\pndec }\\ls4\\adjustright \\fs20\\cgrid ", + "\\s84\\fi-360\\li1800\\widctlpar\\jclisttab\\tx1800{\\*\\pn \\pnlvlbody\\ilvl0\\ls5\\pnrnot0\\pndec }\\ls5\\adjustright \\fs20\\cgrid ", + "\\s85\\fi-360\\li2160\\widctlpar\\jclisttab\\tx2160{\\*\\pn \\pnlvlbody\\ilvl0\\ls6\\pnrnot0\\pndec }\\ls6\\adjustright \\fs20\\cgrid ", + "\\s86\\fi-360\\li2520\\widctlpar\\jclisttab\\tx2520{\\*\\pn \\pnlvlbody\\ilvl0\\ls7\\pnrnot0\\pndec }\\ls7\\adjustright \\fs20\\cgrid ", + "\\s87\\fi-360\\li2880\\widctlpar\\jclisttab\\tx2880{\\*\\pn \\pnlvlbody\\ilvl0\\ls8\\pnrnot0\\pndec }\\ls8\\adjustright \\fs20\\cgrid ", + "\\s88\\fi-360\\li3240\\widctlpar\\jclisttab\\tx3240{\\*\\pn \\pnlvlbody\\ilvl0\\ls9\\pnrnot0\\pndec }\\ls9\\adjustright \\fs20\\cgrid ", + "\\s89\\fi-360\\li3600\\widctlpar\\jclisttab\\tx3600{\\*\\pn \\pnlvlbody\\ilvl0\\ls10\\pnrnot0\\pndec }\\ls10\\adjustright \\fs20\\cgrid " +}; +const char *Rtf_Style_ListEnum[] = +{ + "\\s90\\fi-360\\li360\\widctlpar\\fs20\\cgrid ", + "\\s91\\fi-360\\li720\\widctlpar\\fs20\\cgrid ", + "\\s92\\fi-360\\li1080\\widctlpar\\fs20\\cgrid ", + "\\s93\\fi-360\\li1440\\widctlpar\\fs20\\cgrid ", + "\\s94\\fi-360\\li1800\\widctlpar\\fs20\\cgrid ", + "\\s95\\fi-360\\li2160\\widctlpar\\fs20\\cgrid ", + "\\s96\\fi-360\\li2520\\widctlpar\\fs20\\cgrid ", + "\\s97\\fi-360\\li2880\\widctlpar\\fs20\\cgrid ", + "\\s98\\fi-360\\li3240\\widctlpar\\fs20\\cgrid ", + "\\s99\\fi-360\\li3600\\widctlpar\\fs20\\cgrid " +}; + +void RTFGenerator::beginRTFDocument() +{ + int i; + /* all the included RTF files should begin with the + * same header + */ + t <<"{\\rtf1\\ansi\\ansicpg1252\\uc1 \\deff0\\deflang1033\\deflangfe1033\n"; + + t <<"{\\comment Begining font list}\n"; + t <<"{\\fonttbl "; + t <<"{\\f0\\froman\\fcharset0\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}\n"; + t <<"{\\f1\\fswiss\\fcharset0\\fprq2{\\*\\panose 020b0604020202020204}Arial;}\n"; + t <<"{\\f2\\fmodern\\fcharset0\\fprq1{\\*\\panose 02070309020205020404}Courier New;}\n"; + t <<"{\\f3\\froman\\fcharset2\\fprq2{\\*\\panose 05050102010706020507}Symbol;}\n"; + t <<"}\n"; + t <<"{\\comment begin colors}\n"; + t <<"{\\colortbl;"; + t <<"\\red0\\green0\\blue0;"; + t <<"\\red0\\green0\\blue255;"; + t <<"\\red0\\green255\\blue255;"; + t <<"\\red0\\green255\\blue0;"; + t <<"\\red255\\green0\\blue255;"; + t <<"\\red255\\green0\\blue0;"; + t <<"\\red255\\green255\\blue0;"; + t <<"\\red255\\green255\\blue255;"; + t <<"\\red0\\green0\\blue128;"; + t <<"\\red0\\green128\\blue128;"; + t <<"\\red0\\green128\\blue0;"; + t <<"\\red128\\green0\\blue128;"; + t <<"\\red128\\green0\\blue0;"; + t <<"\\red128\\green128\\blue0;"; + t <<"\\red128\\green128\\blue128;"; + t <<"\\red192\\green192\\blue192;}" << endl; + + t <<"{\\comment Begining style list}\n"; + t <<"{\\stylesheet\n"; + t <<"{\\widctlpar\\adjustright \\fs20\\cgrid \\snext0 Normal;}\n"; + t <<"{" << Rtf_Style_Heading1 <<"\\sbasedon0 \\snext0 heading 1;}\n"; + t <<"{" << Rtf_Style_Heading2 <<"\\sbasedon0 \\snext0 heading 2;}\n"; + t <<"{" << Rtf_Style_Heading3 <<"\\sbasedon0 \\snext0 heading 3;}\n"; + t <<"{" << Rtf_Style_Heading4 <<"\\sbasedon0 \\snext0 heading 4;}\n"; + t <<"{\\*\\cs10 \\additive Default Paragraph Font;}\n"; + t <<"{" << Rtf_Style_Title << "\\sbasedon0 \\snext15 Title;}\n"; + t <<"{" << Rtf_Style_SubTitle << "\\sbasedon0 \\snext16 Subtitle;}\n"; + t <<"{" << Rtf_Style_BodyText << "\\sbasedon0 \\snext17 BodyText;}\n"; + t <<"{" << Rtf_Style_DenseText << "\\sbasedon0 \\snext18 DenseText;}\n"; + t <<"{" << Rtf_Style_Header << "\\sbasedon0 \\snext28 header;}\n"; + t <<"{" << Rtf_Style_Footer << "\\sbasedon0 \\snext29 footer;}\n"; + for (i=0;i<indentLevels;i++) + { + t <<"{" << Rtf_Style_CodeExample[i] <<"\\sbasedon0 \\snext4" + << (QMIN(i+1,indentLevels-1)) << " Code Example " << i << ";}\n"; + } + for (i=0;i<indentLevels;i++) + { + t <<"{" << Rtf_Style_ListContinue[i] << "\\sbasedon0 \\snext5" + << (QMIN(i+1,indentLevels-1)) << " List Continue " << i << ";}\n"; + } + for (i=0;i<indentLevels;i++) + { + t <<"{" << Rtf_Style_DescContinue[i] << "\\sbasedon0 \\snext6" + << (QMIN(i+1,indentLevels-1)) << " DescContinue " << i << ";}\n"; + } + for (i=0;i<indentLevels;i++) + { + t <<"{" << Rtf_Style_LatexTOC[i] << "\\sbasedon50 \\snext7" + << (QMIN(i+1,indentLevels-1)) << " LatexTOC " << i << ";}\n"; + } + for (i=0;i<indentLevels;i++) + { + t <<"{" << Rtf_Style_ListBullet[i] << "\\sbasedon0 \\snext8" + << (QMIN(i+1,indentLevels-1)) << " \\sautoupd List Bullet " << i << ";}\n"; + } + for (i=0;i<indentLevels;i++) + { + t <<"{" << Rtf_Style_ListEnum[i] << "\\sbasedon0 \\snext9" + << (QMIN(i+1,indentLevels-1)) << " \\sautoupd List Enum " << i << ";}\n"; + } + t <<"}" << endl; + t <<"{\\comment begin body}" << endl; + +} + +void RTFGenerator::beginRTFChapter() +{ + t <<"\n{\\comment Begin Chapter}\n" << Rtf_Style_Reset; + + // if we are compact, no extra page breaks... + if (Config::compactRTFFlag) + { + // t <<"\\sect\\sectd\\sbknone\n"; + t <<"\\sect\\sbknone\n"; + RtfwriteRuler_thick(); + } + else + t <<"\\sect\\sbkpage\n"; + //t <<"\\sect\\sectd\\sbkpage\n"; + + t << Rtf_Style_Heading1 << "\n"; +} + +void RTFGenerator::beginRTFSection() +{ + t <<"\n{\\comment Begin Section}\n" << Rtf_Style_Reset; + + // if we are compact, no extra page breaks... + if (Config::compactRTFFlag) + { + // t <<"\\sect\\sectd\\sbknone\n"; + t <<"\\sect\\sbknone\n"; + RtfwriteRuler_emboss(); + } + else + t <<"\\sect\\sbkpage\n"; + //t <<"\\sect\\sectd\\sbkpage\n"; + + t << Rtf_Style_Heading2 << "\n"; +} + +void RTFGenerator::startFile(const char *name,const char *, bool ) +{ + QCString fileName=name; + + if (fileName.right(4)!=".rtf" ) fileName+=".rtf"; + startPlainFile(fileName); + beginRTFDocument(); +} + +void RTFGenerator::endFile() +{ + t << "}"; + + endPlainFile(); +} + +void RTFGenerator::startProjectNumber() +{ + t << " "; +} + +void RTFGenerator::endProjectNumber() +{ +} + +void RTFGenerator::startIndexSection(IndexSections is) +{ + QCString paperName; + + m_listLevel = 0; + + switch (is) + { + case isTitlePageStart: + // basic RTFstart + // get readyfor author etc + t << "{\\info \n"; + t << "{\\title "; + break; + case isTitlePageAuthor: + t << "}\n{\\author "; + break; + case isMainPage: + //Introduction + beginRTFChapter(); + break; + case isModuleIndex: + //Module Index + beginRTFChapter(); + break; + case isNamespaceIndex: + //Namespace Index + beginRTFChapter(); + break; + case isClassHierarchyIndex: + //Hierarchical Index + t << "{\\comment start classhierarchy}\n"; + beginRTFChapter(); + break; + case isCompoundIndex: + //Annotated Compound Index + beginRTFChapter(); + break; + case isFileIndex: + //Annotated File Index + beginRTFChapter(); + break; + case isPageIndex: + //Related Page Index + beginRTFChapter(); + break; + case isModuleDocumentation: + { + //Module Documentation + GroupDef *gd=groupList.first(); + bool found=FALSE; + while (gd && !found) + { + if (gd->isLinkableInProject() || gd->countMembers()>0) + { + beginRTFChapter(); + found=TRUE; + } + gd=groupList.next(); + } + } + break; + case isNamespaceDocumentation: + { + // Namespace Documentation + NamespaceDef *nd=namespaceList.first(); + bool found=FALSE; + while (nd && !found) + { + if (nd->isLinkableInProject()) + { + beginRTFChapter(); + found=TRUE; + } + nd=namespaceList.next(); + } + } + break; + case isClassDocumentation: + { + //Compound Documentation + ClassDef *cd=classList.first(); + bool found=FALSE; + while (cd && !found) + { + if (cd->isLinkableInProject()) + { + beginRTFChapter(); + found=TRUE; + } + cd=classList.next(); + } + } + break; + case isFileDocumentation: + { + //File Documentation + bool isFirst=TRUE; + FileName *fn=inputNameList.first(); + while (fn) + { + FileDef *fd=fn->first(); + while (fd) + { + if (fd->isLinkableInProject()) + { + if (isFirst) + { + beginRTFChapter(); + isFirst=FALSE; + break; + } + } + fd=fn->next(); + } + fn=inputNameList.next(); + } + } + break; + case isExampleDocumentation: + { + //Example Documentation + beginRTFChapter(); + } + break; + case isPageDocumentation: + { + //Page Documentation + beginRTFChapter(); + } + break; + case isEndIndex: + break; + } +} + +void RTFGenerator::endIndexSection(IndexSections is) +{ + switch (is) + { + case isTitlePageStart: + break; + case isTitlePageAuthor: + { + t << " Doxygen}\n" + "{\\creatim " << dateToRTFDateString() << "}\n" + "}{\\comment end of infoblock}\n"; + + // setup for this section + t << Rtf_Style_Reset <<"\n"; + t <<"\\sectd\\pgnlcrm\n"; + t <<"{\\footer "<<Rtf_Style_Footer << "{\\chpgn}}\n"; + // the title entry + t << "{\\comment begin title page}\n"; + t << Rtf_Style_Reset << Rtf_Style_Title << endl; // set to title style + t << "{\\field\\fldedit {\\*\\fldinst TITLE \\\\*MERGEFORMAT}{\\fldrslt TITLE}}\\par" << endl; + t << Rtf_Style_Reset << Rtf_Style_SubTitle << endl; // set to subtitle style + t << "{\\field\\fldedit {\\*\\fldinst AUTHOR \\\\*MERGEFORMAT}{\\fldrslt AUTHOR}}\\par" << endl; + t << "{\\field\\fldedit {\\*\\fldinst CREATEDATE \\\\*MERGEFORMAT}" + "{\\fldrslt CREATEDATE}}\\par"<<endl; + t << "{\\comment End title page}" << endl; + + // table of contents section + t << "{\\comment Table of contents}\n"; + t << Rtf_Style_Reset << endl; + t << "{\\field\\fldedit {\\*\\fldinst TOC \\\\f \\\\*MERGEFORMAT}{\\fldrslt Table of contents}}\\par\n"; + t << Rtf_Style_Reset << endl; + + } + break; + case isMainPage: + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"index.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + break; + case isModuleIndex: + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"modules.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + break; + case isNamespaceIndex: + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"namespaces.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + break; + case isClassHierarchyIndex: + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\tc \\v Hierarchical Index}"<< endl;; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"hierarchy.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + break; + case isCompoundIndex: + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\tc \\v Compound Index}"<< endl;; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"annotated.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + break; + case isFileIndex: + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\tc \\v File Index}"<< endl;; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"files.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + break; + case isPageIndex: + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\tc \\v Page Index}"<< endl;; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"pages.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + break; + case isModuleDocumentation: + { + GroupDef *gd=groupList.first(); + bool found=FALSE; + t << "{\\tc \\v Module Documentation}"<< endl;; + while (gd && !found) + { + if (gd->isLinkableInProject() || gd->countMembers()>0) + { + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; + t << gd->getOutputFileBase(); + t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + + found=TRUE; + } + gd=groupList.next(); + } + while (gd) + { + if (gd->isLinkableInProject() || gd->countMembers()>0) + { + t << "\\par " << Rtf_Style_Reset << endl; + beginRTFSection(); + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; + t << gd->getOutputFileBase(); + t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + } + gd=groupList.next(); + } + } + break; + case isNamespaceDocumentation: + { + NamespaceDef *nd=namespaceList.first(); + bool found=FALSE; + while (nd && !found) + { + if (nd->isLinkableInProject() || nd->countMembers()>0) + { + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; + t << nd->getOutputFileBase(); + t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + found=TRUE; + } + nd=namespaceList.next(); + } + while (nd) + { + if (nd->isLinkableInProject() || nd->countMembers()>0) + { + t << "\\par " << Rtf_Style_Reset << endl; + beginRTFSection(); + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; + t << nd->getOutputFileBase(); + t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + } + nd=namespaceList.next(); + } + } + break; + case isClassDocumentation: + { + ClassDef *cd=classList.first(); + bool found=FALSE; + + t << "{\\tc \\v Class Documentation}"<< endl;; + while (cd && !found) + { + if (cd->isLinkableInProject()) + { + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; + t << cd->getOutputFileBase(); + t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + found=TRUE; + } + cd=classList.next(); + } + while (cd) + { + if (cd->isLinkableInProject()) + { + t << "\\par " << Rtf_Style_Reset << endl; + beginRTFSection(); + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; + t << cd->getOutputFileBase(); + t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + } + cd=classList.next(); + } + } + break; + case isFileDocumentation: + { + bool isFirst=TRUE; + FileName *fn=inputNameList.first(); + + t << "{\\tc \\v File Documentation}"<< endl; + while (fn) + { + FileDef *fd=fn->first(); + while (fd) + { + if (fd->isLinkableInProject()) + { + if (isFirst) + { + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; + t << fd->getOutputFileBase(); + t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + isFirst=FALSE; + } + else + { + t << "\\par " << Rtf_Style_Reset << endl; + beginRTFSection(); + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; + t << fd->getOutputFileBase(); + t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + } + } + fd=fn->next(); + } + fn=inputNameList.next(); + } + } + break; + case isExampleDocumentation: + { + //t << "}\n"; + PageInfo *pi=exampleList.first(); + if (pi) + { + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; + t << convertSlashes(pi->name,TRUE); + t << "-example.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + pi=exampleList.next(); + } + while (pi) + { + t << "\\par " << Rtf_Style_Reset << endl; + beginRTFSection(); + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; + t << convertSlashes(pi->name,TRUE); + t << "-example.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + pi=exampleList.next(); + } + } + break; + case isPageDocumentation: + { + t << "{\\tc \\v Page Documentation}"<< endl;; + PageInfo *pi=pageList.first(); + if (pi) + { + QCString pageName; + if (Config::caseSensitiveNames) + pageName=pi->name.copy(); + else + pageName=pi->name.lower(); + t << "\\par " << Rtf_Style_Reset << endl; + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; + t << pageName; + t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + pi=pageList.next(); + } + while (pi) + { + QCString pageName; + if (Config::caseSensitiveNames) + pageName=pi->name.copy(); + else + pageName=pi->name.lower(); + //t << "\\par " << Rtf_Style_Reset << endl; + //beginRTFSection(); + t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; + t << pageName; + t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; + pi=pageList.next(); + } + } + break; + case isEndIndex: + beginRTFChapter(); + t << Rtf_Style_Heading1; + t << "Index\\par "<< endl; + t << Rtf_Style_Reset<< endl; + t << "{\\tc \\v Index}" << endl; + t << "{\\field\\fldedit {\\*\\fldinst INDEX \\\\c2 \\\\*MERGEFORMAT}{\\fldrslt INDEX}}\n"; + + break; + } +} + +void RTFGenerator::lastIndexPage() +{ + t <<"{\\comment Begining Body of RTF Document}\n"; + // end page and setup for rest of document + t <<"\\sect \\sbkpage \\pgnrestart\n"; + t <<"\\sect \\sectd \\sbknone \\pgndec\n"; + + // set footer + t <<"{\\footer "<< Rtf_Style_Footer << "{\\chpgn}}\n"; + //t << Rtf_Style_Heading1 << "\n"; + +} + +void RTFGenerator::writeStyleInfo(int) +{ +} + +void RTFGenerator::lineBreak() +{ + //t << "\\par" << endl; + //newParagraph(); + t << "\\line" << endl; +} + +void RTFGenerator::writeString(const char *text) +{ + t << text; +} + +void RTFGenerator::startIndexList() +{ + t << "{\\comment (startIndexList)}" << endl; + t << "{" << endl; + incrementIndentLevel(); + t << Rtf_Style_Reset << Rtf_LCList_DepthStyle() << endl; + newParagraph(); + m_omitParagraph=TRUE; +} + +void RTFGenerator::endIndexList() +{ + t << "{\\comment (endIndexList)}" << endl; + newParagraph(); + t << "}"; + decrementIndentLevel(); + m_omitParagraph=TRUE; +} + +/*! start bullet list */ +void RTFGenerator::startItemList() +{ + t << "{\\comment (startItemList level=" << m_listLevel << ") }" << endl; + t << "{"; + incrementIndentLevel(); + listItemInfo[m_listLevel].isEnum = FALSE; + //t << Rtf_Style_Reset << Rtf_BList_DepthStyle(); +} + +/*! end bullet list */ +void RTFGenerator::endItemList() +{ + newParagraph(); + t << "{\\comment (endItemList level=" << m_listLevel << ")}" << endl; + t << "}"; + decrementIndentLevel(); + m_omitParagraph=TRUE; + //t << Rtf_Style_Reset << styleStack.top() << endl; + //printf("RTFGenerator::endItemList() `%s'\n",styleStack.top()); + //newParagraph(); +} + +/*! start enumeration list */ +void RTFGenerator::startEnumList() // starts an enumeration list +{ + t << "{\\comment (startEnumList)}" << endl; + t << "{" << endl; + incrementIndentLevel(); + listItemInfo[m_listLevel].isEnum = TRUE; + listItemInfo[m_listLevel].number = 1; + //t << Rtf_Style_Reset << Rtf_EList_DepthStyle() << endl; + //newParagraph(); + //m_omitParagraph=TRUE; + +} + +/*! end enumeration list */ +void RTFGenerator::endEnumList() +{ + newParagraph(); + t << "{\\comment (endEnumList)}" << endl; + t << "}"; + decrementIndentLevel(); + m_omitParagraph=TRUE; +} + +/*! write bullet or enum item */ +void RTFGenerator::writeListItem() +{ + t << "{\\comment (writeListItem)}" << endl; + newParagraph(); + t << Rtf_Style_Reset; + if (listItemInfo[m_listLevel].isEnum) + { + t << Rtf_EList_DepthStyle() << endl; + t << listItemInfo[m_listLevel].number << ".\\tab "; + listItemInfo[m_listLevel].number++; + } + else + { + t << Rtf_BList_DepthStyle() << endl; + } + m_omitParagraph=TRUE; +} + +void RTFGenerator::writeIndexItem(const char *ref,const char *fn, + const char *name) +{ + t << "{\\comment (writeIndexItem)}" << endl; + //t << Rtf_LCList_DepthStyle() << endl; + docify(name); + if (!ref && fn) + { + t << "\\tab "; + WriteRTFReference(name); + t << endl; + } + else + { + t << endl; + } + newParagraph(); + m_omitParagraph=TRUE; +} + +//void RTFGenerator::writeIndexFileItem(const char *,const char *text) +//{ +// t << "\\item\\contentsline{section}{"; +// docify(text); +// t << "}{\\pageref{" << text << "}}" << endl; +//} + +void RTFGenerator::writeHtmlLink(const char *url,const char *text) +{ + + if (url && Config::rtfHyperFlag) + { + t << "{\\field {\\*\\fldinst { HYPERLINK \\\\l \""; + t << url; + t << "\" }{}"; + t << "}{\\fldrslt {\\cs37\\ul\\cf2 "; + + if (text) + docify(text); + else + docify(url); + + t << "}}}" << endl; + } + else + { + startTypewriter(); + docify(text); + endTypewriter(); + } +} + +void RTFGenerator::writeMailLink(const char *url) +{ + startTypewriter(); + docify(url); + endTypewriter(); +} + +void RTFGenerator::writeStartAnnoItem(const char *,const char *f, + const char *path,const char *name) +{ + t << "{\\comment (writeStartAnnoItem)}" << endl; + t << "{\\b "; + if (path) docify(path); + if (f && Config::rtfHyperFlag) + { + t << "{\\field {\\*\\fldinst { HYPERLINK \\\\l \""; + t << formatBmkStr(f); + t << "\" }{}"; + t << "}{\\fldrslt {\\cs37\\ul\\cf2 "; + + docify(name); + + t << "}}}" << endl; + } + else + { + docify(name); + } + t << "} "; +} + +void RTFGenerator::writeEndAnnoItem(const char *name) +{ + t << "{\\comment (writeEndAnnoItem)}" << endl; + if (name) + { + t << "\\tab "; + WriteRTFReference(name); + t << endl; + } + else + { + t << endl; + } + newParagraph(); +} + +void RTFGenerator::startSubsection() +{ + //beginRTFSubSection(); + t <<"\n{\\comment Begin SubSection}\n" << Rtf_Style_Reset; + t << Rtf_Style_Heading3 << "\n"; +} + +void RTFGenerator::endSubsection() +{ + newParagraph(); + t << Rtf_Style_Reset << endl; +} + +void RTFGenerator::startSubsubsection() +{ + //beginRTFSubSubSection(); + t << "\n{\\comment Begin SubSubSection}\n"; + t << "{" << endl; + t << Rtf_Style_Reset << Rtf_Style_Heading4 << "\n"; +} + +void RTFGenerator::endSubsubsection() +{ + newParagraph(); + t << "}" << endl; +} + + +//void RTFGenerator::writeClassLink(const char *,const char *, +// const char *,const char *name) +//{ +// t << "{\\bf "; +// docify(name); +// t << "}"; +//} + +void RTFGenerator::startTextLink(const char *f,const char *anchor) +{ + if (Config::rtfHyperFlag) + { + QCString ref; + if (f) + { + ref+=f; + } + if (anchor) + { + ref+='_'; + ref+=anchor; + } + + t << "{\\field {\\*\\fldinst { HYPERLINK \\\\l \""; + t << formatBmkStr(ref); + t << "\" }{}"; + t << "}{\\fldrslt {\\cs37\\ul\\cf2 "; + } +} + +void RTFGenerator::endTextLink() +{ + if (Config::rtfHyperFlag) + { + t << "}}}" << endl; + } +} + +void RTFGenerator::writeObjectLink(const char *ref, const char *f, + const char *anchor, const char *text) +{ + if (!ref && Config::rtfHyperFlag) + { + QCString refName; + if (f) + { + refName+=f; + } + if (anchor) + { + refName+='_'; + refName+=anchor; + } + + t << "{\\field {\\*\\fldinst { HYPERLINK \\\\l \""; + t << formatBmkStr(refName); + t << "\" }{}"; + t << "}{\\fldrslt {\\cs37\\ul\\cf2 "; + + docify(text); + + t << "}}}" << endl; + } + else + { + startBold(); + docify(text); + endBold(); + } +} + +void RTFGenerator::startPageRef() +{ + t << " ("; + startEmphasis(); +} + +void RTFGenerator::endPageRef(const char *clname, const char *anchor) +{ + QCString ref; + if (clname) + { + ref+=clname; + } + if (anchor) + { + ref+='_'; + ref+=anchor; + } + WriteRTFReference(ref); + endEmphasis(); + t << ")"; +} + +void RTFGenerator::writeCodeLink(const char *ref,const char *f, + const char *anchor,const char *name) +{ + if (!ref && Config::rtfHyperFlag) + { + QCString refName; + if (f) + { + refName+=f; + } + if (anchor) + { + refName+='_'; + refName+=anchor; + } + + t << "{\\field {\\*\\fldinst { HYPERLINK \\\\l \""; + t << formatBmkStr(refName); + t << "\" }{}"; + t << "}{\\fldrslt {\\cs37\\ul\\cf2 "; + + codify(name); + + t << "}}}" << endl; + } + else + { + codify(name); + } +} + +void RTFGenerator::startTitleHead(const char *) +{ + t <<"{\\comment startTitleHead}" << endl; + + // beginRTFSection(); + t << Rtf_Style_Reset << Rtf_Style_Heading2 << endl; +} + +void RTFGenerator::endTitleHead(const char *fileName,const char *name) +{ + t <<"{\\comment endTitleHead}" << endl; + t << "\\par " << Rtf_Style_Reset << endl; + if (name) + { + // make table of contents entry + t << "{\\tc\\tcl2 \\v "; + docify(name); + t << "}" << endl; + + // make an index entry + addToIndex(name,NULL); + + // make a bookmark for referencing + writeAnchor(name); + + if (fileName) + { + // doxygen expects different anchors for pdf and if "FULL PATHS" + if (strcmp(name,fileName) != 0) + writeAnchor(fileName); + } + } +} + +void RTFGenerator::startTitle() +{ + t <<"{\\comment startTitle}" << endl; + if (Config::compactRTFFlag) + beginRTFSection(); + else + beginRTFChapter(); +} + +void RTFGenerator::startGroupHeader() +{ + t <<"{\\comment startGroupHeader}" << endl; + t << Rtf_Style_Reset; + t << Rtf_Style_Heading3; + t << endl; +} + +void RTFGenerator::endGroupHeader() +{ + t <<"{\\comment endGroupHeader}" << endl; + newParagraph(); + t << Rtf_Style_Reset << endl; +} + +void RTFGenerator::startMemberDoc(const char *clname, + const char *memname, + const char *, + const char *) +{ + t << "{\\comment startMemberDoc}" << endl; + addToIndex(memname,clname); + addToIndex(clname,memname); + //t << Rtf_Style_Reset << Rtf_Style_ListBullet1; + t << Rtf_Style_Reset << Rtf_Style_Heading4; + //styleStack.push(Rtf_Style_Heading4); + t << "{" << endl; + //printf("RTFGenerator::startMemberDoc() `%s'\n",Rtf_Style_Heading4); + startBold(); + t << endl; +} + +void RTFGenerator::endMemberDoc() +{ + t << "{\\comment endMemberDoc}" << endl; + t << "}" << endl; + //const char *style = styleStack.pop(); + //printf("RTFGenerator::endMemberDoc() `%s'\n",style); + //ASSERT(style==Rtf_Style_Heading4); + endBold(); + newParagraph(); +} + +void RTFGenerator::startDoxyAnchor(const char *fName,const char *clname, + const char *anchor,const char *) +{ + QCString ref; + if (clname) + { + ref+=clname; + } + if (anchor) + { + ref+='_'; + ref+=anchor; + } + + t << "{\\bkmkstart "; + t << formatBmkStr(ref); + t << "}" << endl; + t << "{\\bkmkend "; + t << formatBmkStr(ref); + t << "}" << endl; + + if (Config::rtfHyperFlag) + { // doxygen expects a bookmark based on fName for the hyper target so we make a second bookmark + ref=""; + + if (fName) + { + ref+=fName; + } + if (anchor) + { + ref+='_'; + ref+=anchor; + } + + t << "{\\bkmkstart "; + t << formatBmkStr(ref); + t << "}" << endl; + t << "{\\bkmkend "; + t << formatBmkStr(ref); + t << "}" << endl; + } +} + +void RTFGenerator::endDoxyAnchor() +{ + +} + + +//void RTFGenerator::writeLatexLabel(const char *clName,const char *anchor) +//{ +// writeDoxyAnchor(0,clName,anchor,0); +//} + +void RTFGenerator::addToIndex(const char *s1,const char *s2) +{ + if (s1) + { + t << "{\\xe \\v "; + docify(s1); + if (s2) + { + t << "\\:"; + docify(s2); + } + t << "}" << endl; + } +} + +void RTFGenerator::startIndent() +{ + incrementIndentLevel(); + t << "{\\comment (startIndent) }" << endl; + t << "{" << endl; + t << Rtf_Style_Reset << Rtf_CList_DepthStyle() << endl; + //styleStack.push(style); +} + +void RTFGenerator::endIndent() +{ + //const char *style = /* Rtf_CList_DepthStyle(); */ + t << "}" << endl; + decrementIndentLevel(); +} + + +void RTFGenerator::startDescription() +{ + t << "{\\comment (startDescription)}" << endl; + t << "{" << endl; + t << Rtf_Style_Reset << Rtf_CList_DepthStyle(); +} + +void RTFGenerator::endDescription() +{ + t << "{\\comment (endDescription)}" << endl; + t << "}"; + newParagraph(); +} + +void RTFGenerator::startDescItem() +{ + newParagraph(); + t << "{\\comment (startDescItem)}" << endl; + t << "{\\b "; +} + +void RTFGenerator::endDescItem() +{ + t << "{\\comment (endDescItem)}" << endl; + t << "}" << endl; + //newParagraph(); +} + +void RTFGenerator::startMemberDescription() +{ + t << "{\\comment (startMemberDescription)}" << endl; + t << Rtf_Style_Reset << Rtf_CList_DepthStyle(); + startEmphasis(); +} + +void RTFGenerator::endMemberDescription() +{ + t << "{\\comment (endMemberDescription)}" << endl; + endEmphasis(); +} + +void RTFGenerator::startDescList() +{ + t << "{\\comment (startDescList)}" << endl; + t << "{"; + /*if (!m_omitParagraph)*/ newParagraph(); +} + +void RTFGenerator::endDescTitle() +{ + t << "{\\comment (endDescTitle) }" << endl; + newParagraph(); + //t << Rtf_Style_Reset << styleStack.top(); + incrementIndentLevel(); + t << Rtf_Style_Reset << Rtf_DList_DepthStyle(); +} + +void RTFGenerator::writeDescItem() +{ + t << "{\\comment (writeDescItem) }" << endl; + // incrementIndentLevel(); + //t << Rtf_Style_Reset << Rtf_CList_DepthStyle(); +} + +void RTFGenerator::endDescList() +{ + t << "{\\comment (endDescList)}" << endl; + newParagraph(); + t << "}"; + decrementIndentLevel(); + m_omitParagraph = TRUE; + //t << Rtf_Style_Reset << styleStack.top() << endl; +} + +void RTFGenerator::writeSection(const char *lab,const char *title,bool sub) +{ + t << "{\\comment (writeSection)}" << endl; + t<< Rtf_Style_Reset; + if (sub) + { + // set style + t << Rtf_Style_Heading2; + // make table of contents entry + t << "{\\tc\\tcl2 \\v "; + docify(title); + t << "}" << endl; + } + else + { + // set style + t << Rtf_Style_Heading3; + // make table of contents entry + t << "{\\tc\\tcl3 \\v "; + docify(title); + t << "}" << endl; + } + + // write out actual title + docify(title); + + newParagraph(); + // make bookmark + writeAnchor(lab); +} + +void RTFGenerator::writeSectionRef(const char *,const char *lab, + const char *) +{ + WriteRTFReference(lab); +} + +void RTFGenerator::writeSectionRefItem(const char *,const char *lab, + const char *title) +{ + docify(title); + t << "\\tab"; + WriteRTFReference(lab); + t << endl; +} + +void RTFGenerator::writeSectionRefAnchor(const char *,const char *lab, + const char *title) +{ + startBold(); + docify(title); + endBold(); + t << " (p.~\\pageref{" << lab << "})" << endl; +} + +void RTFGenerator::docify(const char *str) +{ + if (str) + { + const unsigned char *p=(const unsigned char *)str; + unsigned char c; + unsigned char pc='\0'; + while (*p) + { + c=*p++; + switch(c) + { + case '{': t << "\\{"; break; + case '}': t << "\\}"; break; + case '\\': t << "\\\\"; break; + default: + { + // see if we can insert an hyphenation hint + //if (isupper(c) && islower(pc) && !insideTabbing) t << "\\-"; + t << (char)c; + } + } + pc = c; + m_omitParagraph = FALSE; + } + } +} + +void RTFGenerator::codify(const char *str) +{ + // note that RTF does not have a "verbatim", so "\n" means + // nothing... add a "newParagraph()"; + //static char spaces[]=" "; + if (str) + { + const char *p=str; + char c; + int spacesToNextTabStop; + while (*p) + { + c=*p++; + switch(c) + { + case '\t': spacesToNextTabStop = Config::tabSize - (col%Config::tabSize); + t << spaces.left(spacesToNextTabStop); + col+=spacesToNextTabStop; + break; + case '\n': newParagraph(); + t << '\n'; col=0; + break; + case '{': t << "\\{"; col++; break; + case '}': t << "\\}"; col++; break; + case '\\': t << "\\\\"; col++; break; + default: t << c; col++; break; + } + } + } +} + +void RTFGenerator::writeChar(char c) +{ + char cs[2]; + cs[0]=c; + cs[1]=0; + docify(cs); +} + +void RTFGenerator::startClassDiagram() +{ +} + +void RTFGenerator::endClassDiagram(ClassDiagram &d, + const char *fileName,const char *) +{ + newParagraph(); + t <<"{\\comment This would be an image map..." << endl; + + // create a gif file + d.writeImageMap(t,dir,fileName); + + t << "}" << endl; + + // display the file + t << "{" << endl; + t << Rtf_Style_Reset << endl; + t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; + t << fileName << ".gif"; + t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; + t << "}" << endl; +} + +void RTFGenerator::writeFormula(const char *,const char *text) +{ + t << text; +} + +void RTFGenerator::startMemberItem(bool,int) +{ + t << Rtf_Style_Reset << Rtf_BList_DepthStyle() << endl; // set style to apropriate depth +} + +void RTFGenerator::endMemberItem(bool,const char *,const char *,bool) +{ + newParagraph(); + +#ifdef DELETEDCODE + if (insideTabbing && endItem) + { + t << endl << "\\end{tabbing}"; + //printf("RTFGenerator::endMemberItem() insideTabbing=FALSE\n"); + insideTabbing=FALSE; + } + if (insideTabbing) + { + t << "\\\\"; + } + t << endl; +#endif +} + +void RTFGenerator::writeAnchor(const char *name) +{ + t << "{\\bkmkstart " << formatBmkStr(name) << "}" << endl; + t << "{\\bkmkend " << formatBmkStr(name) << "}" << endl; + //t << "\\label{" << name << "}" << endl; +} + +void RTFGenerator::WriteRTFReference(const char *label) +{ + t << "{\\field\\fldedit {\\*\\fldinst PAGEREF "; + t << formatBmkStr(label); + t << " \\\\*MERGEFORMAT}{\\fldrslt pagenum}}"; +} + +void RTFGenerator::startCodeFragment() +{ + t << "{" << endl; + newParagraph(); + t << Rtf_Style_Reset << Rtf_Code_DepthStyle(); + //styleStack.push(Rtf_Style_CodeExample); +} + +void RTFGenerator::endCodeFragment() +{ + newParagraph(); + //styleStack.pop(); + //printf("RTFGenerator::endCodeFrament() top=%s\n",styleStack.top()); + //t << Rtf_Style_Reset << styleStack.top() << endl; + t << "}" << endl; + m_omitParagraph = TRUE; +} + +void RTFGenerator::writeNonBreakableSpace() +{ + t << "\\~ "; +} + + +void RTFGenerator::startMemberList() +{ + t << endl; +#ifdef DELETEDCODE + if (!insideTabbing) + t << "\\begin{CompactItemize}" << endl; +#endif +} + +void RTFGenerator::endMemberList() +{ +#ifdef DELETEDCODE + if (!insideTabbing) + t << "\\end{CompactItemize}" << endl; +#endif +} + +void RTFGenerator::writeImage(const char *,const char *,const char *) +{ +#ifdef DELETEDCODE + t << "\\mbox{\\epsfig{file=" << name; + if (w) + t << "," << w; + else if (h) + t << "," << h; + t << "}}" << endl; +#endif +} + +void RTFGenerator::startDescTable() +{ + t << "{\\comment (startDescTable) }" << endl; + t << "{" << endl; + //incrementIndentLevel(); + //t << Rtf_Style_Reset << Rtf_CList_DepthStyle(); +} + +void RTFGenerator::endDescTable() +{ + //decrementIndentLevel(); + t << "{\\comment (endDescTable)}" << endl; + t << "}" << endl; + //t << Rtf_Style_Reset << styleStack.top(); +} + +void RTFGenerator::startDescTableTitle() +{ + //t << Rtf_BList_DepthStyle() << endl; + t << "{\\comment (startDescTableTitle) }" << endl; + startBold(); +} + +void RTFGenerator::endDescTableTitle() +{ + t << "{\\comment (endDescTableTitle) }" << endl; + endBold(); + t << " "; +} + +void RTFGenerator::startDescTableData() +{ + t << "{\\comment (startDescTableData) }" << endl; +} + +void RTFGenerator::endDescTableData() +{ + t << "{\\comment (endDescTableData) }" << endl; + newParagraph(); +} + +// a style for list formatted as a "bulleted list" + +void RTFGenerator::incrementIndentLevel() +{ + m_listLevel++; + if (m_listLevel>indentLevels-1) + { + warn("Warning: Maximum indent level (%d) exceeded while generating RTF output!\n",indentLevels); + m_listLevel=indentLevels-1; + } +} + +void RTFGenerator::decrementIndentLevel() +{ + m_listLevel--; + if (m_listLevel<0) + { + warn("Warning: Negative indent level while generating RTF output!\n"); + m_listLevel=0; + } +} + +// a style for list formatted with "list continue" style +const char * RTFGenerator::Rtf_CList_DepthStyle() +{ + return Rtf_Style_ListContinue[m_listLevel]; +} + +// a style for list formatted as a "latext style" table of contents +const char * RTFGenerator::Rtf_LCList_DepthStyle() +{ + return Rtf_Style_LatexTOC[m_listLevel]; +} + +// a style for list formatted as a "bullet" style +const char * RTFGenerator::Rtf_BList_DepthStyle() +{ + return Rtf_Style_ListBullet[m_listLevel]; +} + +// a style for list formatted as a "enumeration" style +const char * RTFGenerator::Rtf_EList_DepthStyle() +{ + return Rtf_Style_ListEnum[m_listLevel]; +} + +const char * RTFGenerator::Rtf_DList_DepthStyle() +{ + return Rtf_Style_DescContinue[m_listLevel]; +} + +const char * RTFGenerator::Rtf_Code_DepthStyle() +{ + return Rtf_Style_CodeExample[m_listLevel]; +} + +void RTFGenerator::startTextBlock(bool dense) +{ + t << "{" << endl; + t << Rtf_Style_Reset; + if (dense) // no spacing between "paragraphs" + { + t << Rtf_Style_DenseText; + } + else // some spacing + { + t << Rtf_Style_BodyText; + } +} + +void RTFGenerator::endTextBlock() +{ + newParagraph(); + t << "}" << endl; + m_omitParagraph = TRUE; +} + +void RTFGenerator::newParagraph() +{ + if (!m_omitParagraph) t << "\\par" << endl; + m_omitParagraph = FALSE; +} + +void RTFGenerator::startMemberSubtitle() +{ + t << "{" << endl; + t << Rtf_Style_Reset << Rtf_CList_DepthStyle() << endl; +} + +void RTFGenerator::endMemberSubtitle() +{ + newParagraph(); + t << "}" << endl; +} + + + + +/** + * VERY brittle routine inline RTF's included by other RTF's. + * it is recursive and ugly. + */ +static bool PreProcessFile(QDir &d,QCString &infName, QTextStream &t, bool bIncludeHeader=TRUE) +{ + QFile f(infName); + if (!f.open(IO_ReadOnly)) + { + err("Error opening rtf file %s for reading\n",infName.data()); + return FALSE; + } + + const int maxLineLength = 10240; + static QCString lineBuf(maxLineLength); + + // scan until find end of header + // this is EXTREEEEEEEMLY brittle. It works on OUR rtf + // files because the first line before the body + // ALWAYS contains "{\comment begin body}" + do + { + if (f.readLine(lineBuf.data(),maxLineLength)==-1) + { + err("ERROR - read error in %s before end of RTF header!\n",infName.data()); + return FALSE; + } + if (bIncludeHeader) t << lineBuf; + } while (lineBuf.find("\\comment begin body")==-1); + + + //while (fgets(buffer,sizeof(buffer),infp) != NULL) + while (f.readLine(lineBuf.data(),maxLineLength)!=-1) + { + int pos; + if ((pos=lineBuf.find("INCLUDETEXT"))!=-1) + { + int startNamePos = lineBuf.find('"',pos)+1; + int endNamePos = lineBuf.find('"',startNamePos); + QCString fileName = lineBuf.mid(startNamePos,endNamePos-startNamePos); + t << "{\\comment begin include " << fileName << "}" << endl; + if (!PreProcessFile(d,fileName,t,FALSE)) return FALSE; + t << "{\\comment end include " << fileName << "}" << endl; + } + else + { + // elaborate hoopla to skip the final "}" if we didn't include the + // headers + if (!f.atEnd() || bIncludeHeader) + { + t << lineBuf; + } + else + { + // null terminate at the last '}' + //char *str = strrchr(buffer,'}'); + int pos = lineBuf.findRev('}'); + + if (pos != -1) + lineBuf.at(pos) = '\0'; + else + err("Strange, the last char was not a '}'\n"); + t << lineBuf; + } + } + } + f.close(); + // remove temporary file + d.remove(infName); + return TRUE; +} + +void RTFGenerator::startCollaborationDiagram() +{ +} + +void RTFGenerator::endCollaborationDiagram(DotGfxUsageGraph &g) +{ + newParagraph(); + t <<"{\\comment This would be an image map..." << endl; + + g.writeGraph(t,Config::rtfOutputDir); + + t << "}" << endl; + + // display the file + t << "{" << endl; + t << Rtf_Style_Reset << endl; + t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; + t << g.diskName() << ".gif"; + t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; + t << "}" << endl; +} + +void RTFGenerator::startInclDepGraph() +{ +} + +void RTFGenerator::endInclDepGraph(DotInclDepGraph &g) +{ + newParagraph(); + t <<"{\\comment This would be an image map..." << endl; + + g.writeGraph(t,Config::rtfOutputDir); + + t << "}" << endl; + + QCString diskName = g.diskName(); + + // display the file + t << "{" << endl; + t << Rtf_Style_Reset << endl; + t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; + t << g.diskName() << ".gif"; + t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; + t << "}" << endl; +} + +/** + * This is an API to a VERY brittle RTF preprocessor that combines nested + * RTF files. This version replaces the infile with the new file + */ +bool RTFGenerator::preProcessFileInplace(const char *path,const char *name) +{ + QDir d(path); + // store the original directory + if (!d.exists()) + { + err("Error: Output dir %s does not exist!\n",path); + return FALSE; + } + QCString oldDir = convertToQCString(QDir::currentDirPath()); + + // goto the html output directory (i.e. path) + QDir::setCurrent(d.absPath()); + QDir thisDir; + + QCString combinedName = (QCString)path+"/combined.rtf"; + QCString mainRTFName = (QCString)path+"/"+name; + + QFile outf(combinedName); + if (!outf.open(IO_WriteOnly)) + { + err("Failed to open %s for writing!\n",combinedName.data()); + return FALSE; + } + QTextStream outt(&outf); + + if (!PreProcessFile(thisDir,mainRTFName,outt)) + { + // it failed, remove the temp file + outf.close(); + thisDir.remove(combinedName); + QDir::setCurrent(oldDir); + return FALSE; + } + + // everything worked, move the files + outf.close(); + thisDir.remove(mainRTFName); + thisDir.rename(combinedName,mainRTFName); + + QDir::setCurrent(oldDir); + return TRUE; +} diff --git a/src/rtfgen.h b/src/rtfgen.h new file mode 100644 index 0000000..77e278b --- /dev/null +++ b/src/rtfgen.h @@ -0,0 +1,241 @@ +/****************************************************************************** + * + * $Id$ + * + * Copyright (C) 1997-2000 by Parker Waechter & Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * All output generated with Doxygen is not covered by this license. + * + */ + +#ifndef RTFGEN_H +#define RTFGEN_H + +#include "outputgen.h" + +class QFile; + +class RTFGenerator : public OutputGenerator +{ + public: + RTFGenerator(); + ~RTFGenerator(); + + OutputGenerator *copy(); + //OutputGenerator *clone() { return new RTFGenerator(*this); } + void append(const OutputGenerator *o); + void enable() { active=TRUE; } + void disable() { active=FALSE; } + void enableIf(OutputType o) { if (o==RTF) active=TRUE; } + void disableIf(OutputType o) { if (o==RTF) active=FALSE; } + void disableIfNot(OutputType o) { if (o!=RTF) active=FALSE; } + bool isEnabled(OutputType o) { return (o==RTF && active); } + OutputGenerator *get(OutputType o) { return (o==RTF) ? this : 0; } + + static void init(); + void startFile(const char *name,const char *title, bool external); + void writeFooter(int,bool) {} + void endFile(); + void clearBuffer(); + + //void writeIndex(); + + void startIndexSection(IndexSections); + void endIndexSection(IndexSections); + void startProjectNumber(); + void endProjectNumber(); + void writeStyleInfo(int part); + void startTitleHead(const char *); + void startTitle(); + void endTitleHead(const char *,const char *name); + void endTitle() {}; //{ t << "}"; } + + void newParagraph(); + void writeString(const char *text); + void startIndexList(); + void endIndexList(); + void startItemList(); + void endItemList(); + void startEnumList(); + void endEnumList(); + void startAlphabeticalIndexList() {} + void endAlphabeticalIndexList() {} + void writeIndexHeading(const char *) {} + void writeIndexItem(const char *ref,const char *file,const char *name); + void docify(const char *text); + void codify(const char *text); + void writeObjectLink(const char *ref,const char *file, + const char *anchor,const char *text); + void writeCodeLink(const char *ref, const char *file, + const char *anchor,const char *text); + void startTextLink(const char *f,const char *anchor); + void endTextLink(); + void writeHtmlLink(const char *,const char *); + void writeMailLink(const char *url); + void startTypewriter() { t << "{\\f2 "; } + void endTypewriter() { t << "}"; } + void startGroupHeader(); + void endGroupHeader(); + void writeListItem(); + + void startMemberSections() {} + void endMemberSections() {} + void startMemberHeader() { startGroupHeader(); } + void endMemberHeader() { endGroupHeader(); } + void startMemberSubtitle(); + void endMemberSubtitle(); + void startMemberList(); + void endMemberList(); + void startMemberItem(bool,int); + void endMemberItem(bool,const char *,const char *,bool); + void memberGroupSpacing(bool) {} + void memberGroupSeparator() {} + void insertMemberAlign() {} + + void writeRuler(){RtfwriteRuler_thin();}; + + void writeAnchor(const char *name); + void startCodeFragment(); + void endCodeFragment(); + void startCodeLine() { col=0; } + void endCodeLine() { lineBreak(); } + void writeBoldString(const char *text) + { t << "{\\b "; docify(text); t << "}"; } + void startEmphasis() { t << "{\\i "; } + void endEmphasis() { t << "}"; } + void startBold() { t << "{\\b "; } + void endBold() { t << "}"; } + void startDescription(); + void endDescription(); + void startDescItem(); + void endDescItem(); + void lineBreak(); + void startMemberDoc(const char *,const char *,const char *,const char *); + void endMemberDoc(); + void startDoxyAnchor(const char *,const char *,const char *,const char *); + void endDoxyAnchor(); + void startCodeAnchor(const char *) {}; + void endCodeAnchor() {}; + void writeChar(char c); + void writeLatexSpacing() {};//{ t << "\\hspace{0.3cm}"; } + //void writeLatexLabel(const char *scope,const char *anchor); + void writeStartAnnoItem(const char *type,const char *file, + const char *path,const char *name); + void writeEndAnnoItem(const char *name); + void startSubsection(); + void endSubsection(); + void startSubsubsection(); + void endSubsubsection(); + void startCenter() { t << "{\\qc" << endl; } + void endCenter() { t << "}"; } + void startSmall() { t << "{\\sub "; } + void endSmall() { t << "}"; } + void startSubscript() { t << "{\\sub " << endl;} + void endSubscript() { t << "}"; } + void startSuperscript() { t << "{\\super " << endl;} + void endSuperscript() { t << "}"; } + void startTable(int ) { }//t << "\\begin{TabularC}{" << c << "}\n\\hline\n"; + void endTable() { }//t << "\\\\\\hline\n\\end{TabularC}\n"; + void nextTableRow() { } + void endTableRow() { }//t << "\\\\\\hline\n"; + void nextTableColumn() { }//t << "&"; + void endTableColumn() { } + void writeCopyright() { t << "\\copyright"; } + void writeQuote() { t << "\""; } + void writeUmlaut(char c) { if (c=='i') t << "\\\"{\\i}"; else + t << "\\\"{" << c << "}"; + } + void writeAcute(char c) { if (c=='i') t << "\\'{\\i}"; else + t << "\\'{" << c << "}"; + } + void writeGrave(char c) { if (c=='i') t << "\\`{\\i}"; else + t << "\\`{" << c << "}"; + } + void writeCirc(char c) { if (c=='i') t << "\\^{\\i}"; else + t << "\\^{" << c << "}"; + } + void writeTilde(char c) { t << "\\~{" << c << "}"; } + void writeRing(char c) { t << "\\" << c << c; } + void writeSharpS() { t << "\"s"; } + + void startMemberDescription(); + void endMemberDescription(); + void startDescList(); + void endDescTitle(); + void writeDescItem(); + void endDescList(); + void writeSection(const char *,const char *,bool); + void writeSectionRef(const char *,const char *,const char *); + void writeSectionRefItem(const char *,const char *,const char *); + void writeSectionRefAnchor(const char *,const char *,const char *); + void addToIndex(const char *,const char *); + void startIndent(); + void endIndent(); + void writeSynopsis() {} + //void generateExternalIndex() {} + void startClassDiagram(); + void endClassDiagram(ClassDiagram &,const char *filename,const char *name); + void startColorFont(uchar,uchar,uchar) {} + void endColorFont() {} + void startPageRef(); + void endPageRef(const char *,const char *); + void startQuickIndexItem(const char *,const char *) {} + void endQuickIndexItem() {} + void writeFormula(const char *,const char *); + void writeNonBreakableSpace(); + void writeImage(const char *,const char *,const char *); + + void startDescTable(); + void endDescTable(); + void startDescTableTitle(); + void endDescTableTitle(); + void startDescTableData(); + void endDescTableData(); + + void startCollaborationDiagram(); + void endCollaborationDiagram(DotGfxUsageGraph &); + void startInclDepGraph(); + void endInclDepGraph(DotInclDepGraph &); + void writeGraphicalHierarchy(DotGfxHierarchyTable &) {} + + void startTextBlock(bool dense); + void endTextBlock(); + void lastIndexPage(); + + static bool preProcessFileInplace(const char *path,const char *name); + + private: + RTFGenerator(const RTFGenerator &); + RTFGenerator &operator=(const RTFGenerator &); + + const char *Rtf_BList_DepthStyle(); + const char *Rtf_CList_DepthStyle(); + const char *Rtf_EList_DepthStyle(); + const char *Rtf_LCList_DepthStyle(); + const char *Rtf_DList_DepthStyle(); + const char *Rtf_Code_DepthStyle(); + void incrementIndentLevel(); + void decrementIndentLevel(); + int col; + + bool m_bstartedBody; // has startbody been called yet? + int m_listLevel; // // RTF does not really have a addative indent...manually set list level. + bool m_omitParagraph; // should a the next paragraph command be ignored? + + void beginRTFDocument(); + void beginRTFChapter(); + void beginRTFSection(); + void RtfwriteRuler_doubleline() {t << "{\\pard\\widctlpar\\brdrb\\brdrdb\\brdrw15\\brsp20 \\adjustright \\par}" << endl; }; + void RtfwriteRuler_emboss() {t << "{\\pard\\widctlpar\\brdrb\\brdremboss\\brdrw15\\brsp20 \\adjustright \\par}" << endl; }; + void RtfwriteRuler_thick() {t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw75\\brsp20 \\adjustright \\par}" << endl; }; + void RtfwriteRuler_thin() {t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}" << endl; }; + void WriteRTFReference(const char *label); +}; + +#endif diff --git a/src/scanner.cpp b/src/scanner.cpp index 76f7d7d..156da94 100644 --- a/src/scanner.cpp +++ b/src/scanner.cpp @@ -304,407 +304,432 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 596 -#define YY_END_OF_BUFFER 597 -static yyconst short int yy_acclist[3584] = +#define YY_NUM_RULES 644 +#define YY_END_OF_BUFFER 645 +static yyconst short int yy_acclist[3808] = { 0, - 290, 290,16918,16919,16920, 464, 464, 491, 491, 201, - 201, 188, 188, 331, 331, 331, 331, 597, 591, 596, - 591, 596, 590, 596, 2, 591, 596, 591, 596, 266, - 591, 596, 265, 591, 596, 265, 591, 596, 2, 265, - 591, 596, 264, 265, 591, 596, 265, 591, 596, 270, - 591, 596, 270, 591, 596, 270, 591, 596, 267, 590, - 596, 2, 270, 591, 596, 269, 270, 591, 596, 270, - 591, 596, 270, 591, 596, 591, 596, 590, 596, 2, - 591, 596, 591, 596, 388, 591, 596, 393, 591, 596, - 398, 591, 596, 591, 596, 591, 596, 397, 591, 596, - - 395, 591, 596, 396, 591, 596, 406, 591, 596, 394, - 591, 596, 392, 591, 596, 392, 591, 596, 2, 392, - 591, 596, 392, 591, 596, 391, 392, 591, 596, 390, - 392, 591, 596, 591, 596, 590, 596, 2, 591, 596, - 416, 591, 596, 591, 596, 407, 591, 596, 405, 591, - 596, 417, 591, 596, 404, 591, 596, 404, 591, 596, - 403, 404, 591, 596, 403, 590, 596, 2, 403, 404, - 591, 596, 404, 591, 596, 404, 591, 596, 404, 591, - 596, 218, 591, 596, 591, 596, 210, 591, 596, 219, - 591, 596, 219, 591, 596, 209, 591, 596, 227, 591, - - 596, 227, 590, 596, 2, 227, 591, 596, 258, 591, - 596, 271, 591, 596, 327, 591, 596, 276, 591, 596, - 591, 596, 276, 591, 596, 276, 591, 596, 281, 591, - 596, 275, 591, 596, 257, 591, 596, 277, 591, 596, - 257, 591, 596, 257, 591, 596, 257, 591, 596, 257, - 591, 596, 257, 591, 596, 257, 591, 596, 257, 591, - 596, 257, 591, 596, 257, 591, 596, 257, 591, 596, - 429, 591, 596, 591, 596, 591, 596, 590, 596, 2, - 591, 596, 591, 596, 257, 591, 596, 591, 596, 591, - 596, 590, 596, 2, 591, 596, 288, 591, 596, 591, - - 596, 287, 591, 596, 286, 591, 596, 289, 591, 596, - 591, 596, 363, 591, 596, 362, 591, 596, 364, 591, - 596, 364, 591, 596, 356, 591, 596, 356, 591, 596, - 355, 356, 591, 596, 355, 590, 596, 2, 355, 356, - 591, 596, 348, 356, 591, 596, 349, 356, 591, 596, - 354, 356, 591, 596, 356, 591, 596, 361, 591, 596, - 361, 591, 596, 2, 361, 591, 596, 359, 361, 591, - 596, 360, 361, 591, 596, 361, 591, 596, 355, 356, - 591, 596, 355, 590, 596, 2, 355, 356, 591, 596, - 356, 591, 596, 350, 356, 591, 596, 356, 591, 596, - - 356, 591, 596, 356, 591, 596, 356, 591, 596, 356, - 591, 596, 241, 591, 596, 241, 591, 596, 241, 590, - 596, 2, 241, 591, 596, 243, 591, 596, 241, 591, - 596, 241, 591, 596, 280, 591, 596, 280, 591, 596, - 2, 280, 591, 596, 280, 591, 596, 279, 280, 591, - 596, 278, 280, 591, 596, 290, 308, 591, 596, 290, - 308, 591, 596, 290, 307, 308, 591, 596, 307, 590, - 596, 2, 307, 308, 591, 596, 308, 591, 596, 308, - 591, 596, 308, 591, 596, 298, 308, 591, 596, 299, - 308, 591, 596, 247, 591, 596, 591, 596, 591, 596, - - 590, 596, 2, 591, 596, 591, 596, 248, 591, 596, - 591, 596, 591, 596, 459, 590, 596, 2, 591, 596, - 591, 596, 458, 591, 596, 591, 596, 376, 382, 591, - 596, 376, 382, 591, 596, 375, 590, 596, 2, 376, - 382, 591, 596, 373, 376, 382, 591, 596, 376, 382, - 591, 596, 376, 382, 591, 596, 376, 382, 591, 596, - 366, 376, 382, 591, 596, 367, 376, 382, 591, 596, - 376, 382, 591, 596, 374, 376, 382, 591, 596, 377, - 590, 596, 376, 382, 591, 596, 376, 382, 591, 596, - 369, 591, 596, 387, 591, 596, 387, 591, 596, 386, - - 590, 596, 2, 387, 591, 596, 384, 387, 591, 596, - 387, 591, 596, 387, 591, 596, 387, 591, 596, 382, - 591, 596, 382, 591, 596, 2, 382, 591, 596, 382, - 591, 596, 382, 591, 596, 365, 382, 591, 596, 260, - 591, 596, 260, 591, 596, 262, 590, 596, 2, 260, - 591, 596, 260, 591, 596, 260, 591, 596, 589, 591, - 596, 589, 591, 596, 589, 591, 596, 2, 589, 591, - 596, 591, 596, 589, 591, 596, 591, 596, 591, 596, - 588, 590, 596, 2, 591, 596, 591, 596, 213, 591, - 596, 214, 591, 596, 211, 591, 596, 212, 591, 596, - - 501, 503, 591, 596, 501, 503, 591, 596, 503, 591, - 596, 502, 590, 596, 2, 501, 503, 591, 596, 503, - 591, 596, 503, 591, 596, 501, 503, 591, 596, 501, - 503, 591, 596, 503, 591, 596, 503, 591, 596, 499, - 503, 591, 596, 503, 591, 596, 285, 591, 596, 285, - 591, 596, 284, 285, 591, 596, 284, 590, 596, 2, - 284, 285, 591, 596, 285, 591, 596, 283, 285, 591, - 596, 282, 285, 591, 596, 412, 591, 596, 413, 591, - 596, 414, 591, 596, 415, 591, 596, 300, 591, 596, - 421, 423, 591, 596, 421, 423, 591, 596, 418, 421, - - 423, 591, 596, 418, 590, 596, 2, 418, 421, 423, - 591, 596, 423, 591, 596, 421, 423, 591, 596, 559, - 591, 596, 559, 591, 596, 559, 591, 596, 561, 590, - 596, 2, 559, 591, 596, 559, 591, 596, 559, 591, - 596, 557, 559, 591, 596, 559, 591, 596, 559, 591, - 596, 559, 591, 596, 559, 591, 596, 559, 591, 596, - 559, 591, 596, 434, 591, 596, 434, 591, 596, 434, - 591, 596, 435, 590, 596, 2, 434, 591, 596, 434, - 591, 596, 434, 591, 596, 434, 591, 596, 434, 591, - 596, 432, 434, 591, 596, 434, 591, 596, 434, 591, - - 596, 431, 435, 590, 596, 2, 434, 591, 596, 434, - 591, 596, 434, 591, 596, 510, 591, 596, 510, 591, - 596, 509, 510, 591, 596, 508, 590, 596, 2, 510, - 591, 596, 510, 591, 596, 510, 591, 596, 509, 510, - 591, 596, 510, 591, 596, 510, 591, 596, 510, 591, - 596, 509, 510, 591, 596, 510, 591, 596, 510, 591, - 596, 560, 591, 596, 560, 591, 596, 560, 591, 596, - 563, 590, 596, 2, 560, 591, 596, 560, 591, 596, - 560, 591, 596, 560, 591, 596, 560, 591, 596, 560, - 591, 596, 564, 590, 596, 2, 560, 591, 596, 560, - - 591, 596, 591, 596, 461, 590, 596, 2, 591, 596, - 591, 596, 591, 596, 460, 591, 596, 591, 596, 591, - 596, 467, 590, 596, 2, 591, 596, 591, 596, 466, - 591, 596, 466, 591, 596, 591, 596, 469, 590, 596, - 2, 591, 596, 591, 596, 468, 591, 596, 468, 591, - 596, 555, 591, 596, 555, 591, 596, 542, 590, 596, - 2, 555, 591, 596, 544, 555, 591, 596, 555, 591, - 596, 555, 591, 596, 555, 591, 596, 591, 596, 590, - 596, 2, 591, 596, 547, 591, 596, 591, 596, 546, - 591, 596, 591, 596, 555, 591, 596, 556, 590, 596, - - 555, 591, 596, 555, 591, 596, 555, 591, 596, 555, - 591, 596, 548, 555, 591, 596, 554, 591, 596, 554, - 591, 596, 2, 554, 591, 596, 553, 554, 591, 596, - 554, 591, 596, 539, 591, 596, 457, 591, 596, 537, - 591, 596, 537, 591, 596, 537, 591, 596, 532, 590, - 596, 2, 537, 591, 596, 537, 591, 596, 537, 591, - 596, 537, 591, 596, 537, 591, 596, 537, 591, 596, - 537, 591, 596,16918,16919,16920, 531, 532, 590, 596, - 2, 537, 591, 596, 537, 591, 596,16918,16919,16920, - 537, 591, 596, 537, 591, 596, 537, 591, 596, 443, - - 591, 596, 443, 591, 596, 443, 591, 596, 441, 590, - 596, 2, 443, 591, 596, 443, 591, 596, 443, 591, - 596, 541, 591, 596, 541, 591, 596, 2, 541, 591, - 596, 540, 541, 591, 596, 541, 591, 596, 541, 591, - 596, 463, 590, 596, 462, 591, 596, 464, 591, 596, - 464, 591, 596, 465, 590, 596, 2, 464, 591, 596, - 464, 591, 596, 526, 590, 596, 525, 591, 596, 591, - 596, 591, 596, 482, 590, 596, 2, 591, 596, 591, - 596, 581, 591, 596, 581, 591, 596, 580, 590, 596, - 2, 581, 591, 596, 581, 591, 596, 581, 591, 596, - - 581, 591, 596, 581, 591, 596, 581, 591, 596, 581, - 591, 596, 571, 591, 596, 571, 591, 596, 570, 590, - 596, 2, 571, 591, 596, 571, 591, 596, 571, 591, - 596, 571, 591, 596, 571, 591, 596, 571, 591, 596, - 571, 591, 596,16956, 567, 591, 596, 567, 591, 596, - 566, 590, 596, 2, 567, 591, 596, 567, 591, 596, - 567, 591, 596, 509, 510, 591, 596, 510, 591, 596, - 510, 591, 596, 510, 591, 596, 510, 591, 596, 509, - 510, 591, 596, 510, 591, 596, 522, 591, 596, 522, - 591, 596, 521, 590, 596, 2, 522, 591, 596, 522, - - 591, 596, 591, 596, 473, 590, 596, 591, 596, 472, - 591, 596, 472, 591, 596, 591, 596, 591, 596, 474, - 590, 596, 2, 591, 596, 591, 596, 471, 590, 596, - 591, 596, 470, 591, 596, 470, 591, 596, 510, 591, - 596, 510, 591, 596, 591, 596, 455, 591, 596, 455, - 591, 596, 476, 590, 596, 475, 591, 596, 311, 591, - 596, 311, 591, 596, 311, 591, 596, 590, 596, 2, - 311, 591, 596, 311, 591, 596, 311, 591, 596, 310, - 311, 591, 596, 311, 591, 596, 315, 591, 596, 316, - 591, 596, 317, 356, 591, 596, 318, 356, 591, 596, - - 321, 591, 596, 321, 591, 596, 2, 321, 591, 596, - 321, 591, 596, 321, 591, 596, 326, 591, 596, 326, - 591, 596, 325, 326, 591, 596, 325, 590, 596, 2, - 325, 326, 591, 596, 322, 326, 591, 596, 323, 326, - 591, 596, 324, 326, 591, 596, 326, 591, 596, 591, - 596, 590, 596, 2, 591, 596, 591, 596, 302, 591, - 596, 302, 591, 596, 303, 591, 596, 301, 591, 596, - 305, 591, 596, 306, 591, 596, 304, 591, 596, 491, - 495, 591, 596, 491, 495, 591, 596, 495, 591, 596, - 494, 590, 596, 2, 491, 495, 591, 596, 495, 591, - - 596, 491, 495, 591, 596, 495, 591, 596, 495, 591, - 596, 208, 591, 596, 208, 591, 596, 2, 208, 591, - 596, 208, 591, 596, 208, 591, 596, 207, 208, 591, - 596, 207, 590, 596, 2, 207, 208, 591, 596, 208, - 591, 596, 208, 591, 596, 208, 591, 596, 208, 591, - 596, 208, 591, 596, 208, 591, 596, 208, 591, 596, - 208, 591, 596, 208, 591, 596, 88, 208, 591, 596, - 208, 591, 596, 88, 208, 591, 596, 88, 208, 591, - 596, 88, 208, 591, 596, 88, 208, 591, 596, 208, - 591, 596, 591, 596, 63, 591, 596, 591, 596, 590, - - 596, 2, 591, 596, 591, 596, 64, 591, 596, 591, - 596, 20, 591, 596, 20, 591, 596, 2, 20, 591, - 596, 20, 591, 596, 20, 591, 596, 20, 591, 596, - 20, 591, 596, 20, 591, 596, 193, 208, 591, 596, - 193, 208, 591, 596, 205, 590, 596, 193, 208, 591, - 596, 194, 208, 591, 596, 194, 208, 591, 596, 194, - 208, 591, 596, 195, 208, 591, 596, 195, 208, 591, - 596, 195, 208, 591, 596, 201, 202, 591, 596, 201, - 202, 591, 596, 201, 202, 591, 596, 200, 590, 596, - 2, 201, 202, 591, 596, 202, 591, 596, 202, 591, - - 596, 201, 202, 591, 596, 202, 591, 596, 40, 591, - 596, 40, 591, 596, 591, 596, 41, 591, 596, 41, - 591, 596, 42, 590, 596, 2, 41, 591, 596, 41, - 591, 596, 41, 591, 596, 39, 591, 596, 591, 596, - 196, 591, 596, 196, 591, 596, 591, 596, 197, 591, - 596, 197, 591, 596, 190, 591, 596, 591, 596, 591, - 596, 184, 591, 596, 184, 591, 596, 186, 591, 596, - 186, 591, 596, 187, 591, 596, 188, 591, 596, 188, - 591, 596, 188, 590, 596, 2, 188, 591, 596, 188, - 591, 596, 189, 591, 596, 530, 590, 596, 529, 591, - - 596, 109, 591, 596, 109, 591, 596, 109, 591, 596, - 107, 591, 596, 107, 591, 596, 107, 591, 596, 108, - 591, 596, 108, 591, 596, 108, 591, 596, 110, 591, - 596, 110, 591, 596, 110, 591, 596, 115, 591, 596, - 115, 591, 596, 114, 590, 596, 2, 115, 591, 596, - 115, 591, 596, 115, 591, 596, 591, 596, 591, 596, - 50, 591, 596, 50, 590, 596, 2, 50, 591, 596, - 591, 596, 591, 596, 590, 596, 2, 591, 596, 591, - 596, 69, 591, 596,16454, 591, 596, 35, 591, 596, - 35, 591, 596, 33, 34, 590, 596, 2, 35, 591, - - 596, 35, 591, 596, 35, 591, 596, 35, 591, 596, - 35, 591, 596, 591, 596, 30, 591, 596, 30, 591, - 596, 47, 591, 596, 47, 591, 596, 2, 47, 591, - 596, 47, 591, 596, 591, 596, 591, 596, 2, 591, - 596, 591, 596, 71, 591, 596, 73, 591, 596, 591, - 596, 591, 596, 74, 590, 596, 2, 591, 596, 591, - 596, 84, 590, 596, 83, 591, 596, 83, 591, 596, - 83, 591, 596, 591, 596, 78, 591, 596, 78, 591, - 596, 78, 591, 596, 78, 591, 596, 591, 596, 79, - 591, 596, 79, 591, 596, 80, 590, 596, 591, 596, - - 591, 596, 505, 591, 596, 591, 596, 591, 596, 506, - 590, 596, 2, 591, 596, 507, 591, 596, 591, 596, - 256, 591, 596, 256, 591, 596, 2, 256, 591, 596, - 256, 591, 596, 252, 256, 591, 596, 253, 256, 591, - 596, 329, 347, 591, 596, 329, 347, 591, 596, 346, - 590, 596, 2, 329, 347, 591, 596, 342, 347, 591, - 596, 347, 591, 596, 329, 347, 591, 596, 347, 591, - 596, 330, 347, 591, 596, 330, 347, 591, 596, 2, - 330, 347, 591, 596, 332, 347, 591, 596, 347, 591, - 596, 337, 347, 591, 596, 338, 347, 591, 596, 347, - - 591, 596, 347, 591, 596, 2, 347, 591, 596, 339, - 347, 591, 596, 340, 347, 591, 596, 328, 347, 591, - 596, 328, 347, 591, 596, 331, 347, 591, 596, 331, - 346, 590, 596, 2, 331, 347, 591, 596, 333, 347, - 591, 596, 334, 347, 591, 596, 335, 347, 591, 596, - 336, 347, 591, 596, 411, 591, 596, 411, 591, 596, - 410, 411, 591, 596, 410, 590, 596, 2, 410, 411, - 591, 596, 411, 591, 596, 408, 411, 591, 596, 409, - 411, 591, 596, 5, 591, 596, 5, 591, 596, 2, - 5, 591, 596, 5, 591, 596, 5, 591, 596, 518, - - 591, 596, 518, 591, 596, 2, 518, 591, 596, 518, - 591, 596, 518, 591, 596, 518, 591, 596, 518, 591, - 596, 518, 591, 596, 518, 591, 596, 504, 591, 596, - 1, 593, 595, 263, 266, 593, 595, 268, 398, 393, - 389, 398, 393, 394, 390, 405, 417, 405, 417, 227, - 227, 258, 271, 309, 593, 595, 257, 250, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 251, 257, 593, 595, 286, - 355, 354, 354, 355, 353, 242, 290, 290, 1, 290, - 290, 307, 307, 292, 293, 593, 291, 595, 248, 248, - - 458, 458, 380, 379, 593, 381, 595, 374, 379, 593, - 381, 595, 378, 385, 385, 593, 385, 595, 383, 262, - 262, 261, 589, 589, 1, 589, 589, 594, 592, 593, - 589, 592, 595, 588, 1, 588, 593, 595, 501, 501, - 1, 501, 519, 500, 595, 501, 499, 499, 498, 500, - 595, 284, 300, 421, 421, 1, 421, 418, 421, 418, - 422, 419, 593, 420, 421, 595, 584, 587, 593, 512, - 595, 557, 558, 586, 586, 511, 512, 595, 585, 436, - 431, 433, 586, 433, 586, 431, 433, 586, 433, 586, - 509, 509, 509, 558, 511, 512, 595, 583, 460, 460, - - 467, 466, 466, 595, 469, 468, 468, 595, 545, 546, - 546, 551, 538, 539, 457,16918,16919,16920, 531,16918, - 16919,16920, 586,16918,16919,16920, 531, 586, 586, 586, - 16918,16919,16920, 586, 595,16918,16919,16920, 441, 442, - 462, 464, 464, 1, 464, 464, 593, 464, 595, 525, - 482, 1, 482, 593, 595, 582, 578, 593, 578, 595, - 558, 579, 579, 573, 574, 568, 593, 568, 595,16956, - 569, 569, 565, 593, 565, 595, 509, 509, 472, 472, - 595, 474, 1, 474, 593, 595, 470, 470, 595, 455, - 455, 595, 475, 475, 310, 310, 313, 312, 314, 319, - - 320, 325, 324, 324, 301, 301, 491, 491, 1, 491, - 493, 593, 493, 595, 491, 492, 493, 595, 207, 207, - 207, 207, 206, 207, 88, 192, 204, 593, 203, 595, - 172, 191, 88, 88, 88, 191, 88, 88, 88, 63, - 63, 64, 64, 19, 19, 593, 19, 595, 193, 193, - 1, 193, 193, 204, 593, 193, 203, 595, 194, 194, - 1, 194, 194, 204, 593, 194, 203, 595, 195, 195, - 1, 195, 195, 204, 593, 195, 203, 595, 201, 201, - 1, 201, 201, 201, 199, 593, 198, 595, 201, 40, - 40, 595, 39, 196, 196, 595, 197, 197, 595, 184, - - 184, 595, 186, 186, 595, 188, 188, 1, 188, 188, - 593, 188, 595, 529, 109, 109, 1, 109, 109, 593, - 109, 595, 107, 107, 1, 107, 107, 593, 107, 595, - 108, 108, 1, 108, 108, 593, 108, 595, 110, 110, - 1, 110, 110, 593, 110, 595, 50, 50, 1, 50, - 50, 593, 595, 69,16454, 69,16454, 33, 1, 33, - 34, 34, 593, 34, 595, 30, 30, 595, 47, 47, - 1, 47, 47, 593, 47, 595, 72, 1, 72, 593, - 595, 73, 74, 1, 74, 593, 595, 83, 83, 83, - 78, 78, 78, 78, 595, 79, 79, 595, 505, 506, - - 1, 506, 595, 254, 329, 329, 1, 329, 329, 593, - 329, 595, 341, 330, 330, 1, 330, 328, 328, 1, - 328, 331, 410, 595, 504, 393, 393, 390, 390, 217, - 217, 309, 424, 426, 257, 249, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 424, 426, 353, - 240, 297, 297, 293, 294, 291, 248, 248, 458, 458, - 372, 372, 381, 381, 381, 378, 261, 501, 498, 1, - 422, 514, 515, 438, 511, 437, 511, 460, 460, 466, - 468, 546, 546, 551,16918,16919,16920,16918,16919,16920, - - 16918,16919,16920,16918,16919,16920, 8727, 8764, 569, 569, - 569, 472, 470, 455, 475, 475, 475, 310, 310, 301, - 491, 206, 207, 206, 207, 88, 88, 93, 93, 92, - 88, 173, 169, 175, 97, 98, 99, 96, 100, 88, - 88, 88, 88, 64, 64, 201, 196, 197, 69,16454, - 8262, 69,16454, 30, 83, 83, 78, 79, 255, 345, - 345, 4, 516, 517, 274, 390, 216, 215, 216, 425, - 427, 427, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 274, 425, 274, 427, 296, 295, 296, 371, 370, 371, - - 381, 501, 513, 438, 437, 562, 533, 8727, 475, 475, - 491, 206, 207, 15, 88, 88, 3, 171, 174, 170, - 176, 168, 166, 162, 164, 159, 177, 179, 181, 161, - 155, 151, 149, 147, 157, 153, 67, 58, 87, 88, - 67, 88, 88, 201, 76, 83, 83, 344, 343, 344, - 215, 273, 272, 257, 239, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 351, 295, 370, 381, 424, 381, 368, 501, - 489, 439, 444, 453, 451, 549, 475, 475, 491, 88, - 167, 163, 165, 160, 178, 180, 182, 156, 152, 150, - - 148, 158, 154, 136, 140, 141, 143, 145, 138, 48, - 52, 85, 49, 88, 62, 85, 91, 91, 91, 91, - 88, 201, 185, 183, 77, 83, 343, 400, 239, 236, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 238, 245, 257, 351, 357, 381, - 425, 497, 501, 527, 447, 488, 444, 453, 451, 448, - 549, 552, 462, 577, 491, 8, 6, 7, 88, 137, - 142, 144, 146, 139, 132, 134, 128, 130, 127, 85, - 85, 54, 105, 38, 103, 88, 62, 62, 62, 91, - 93, 91, 88, 91, 88, 91, 91, 88, 95, 201, - - 185, 185, 183, 183, 111, 402, 399, 236, 238, 259, - 229, 231, 257, 234, 257, 257, 257, 224, 257, 257, - 228, 237, 257, 257, 257, 257, 358, 501, 487, 447, - 449, 448, 430, 437, 8728, 8727, 520, 491, 11, 13, - 88, 133, 135, 129, 131, 124, 125, 122, 75, 59, - 61, 106, 88, 62, 93, 62, 46, 37, 91, 88, - 91, 91, 88, 91, 88, 91, 88, 91, 88, 201, - 112, 81, 229, 231, 234, 224, 228, 237, 257, 257, - 226, 257, 257, 224, 257, 220, 257, 257, 230, 352, - 496, 501, 496, 483, 454, 480, 456, 449, 437, 550, - - 8726, 8727, 523, 491, 9, 10, 12, 88, 126, 123, - 120, 118, 56, 68, 57, 60, 88, 28, 27, 68, - 88, 91, 88, 91, 91, 88, 91, 88, 201, 43, - 82, 81, 401, 226, 220, 230, 257, 257, 226, 257, - 257, 257, 220, 8436, 250,16628, 232, 352, 445, 454, - 524, 576, 452, 440, 456, 528, 575, 550, 477, 478, - 491, 88, 121, 119, 86, 44, 101, 53, 51, 88, - 86, 86, 44, 44, 88, 91, 91, 88, 88, 88, - 94, 201, 94, 82, 81, 232, 428, 235, 233, 257, - 225, 257, 257, 8436, 249, 246, 445, 450, 452, 446, - - 440, 485, 543, 491, 14, 88, 116, 45, 66, 16, - 36, 104, 31, 88, 16, 16, 31, 31, 88, 91, - 88, 91, 88, 88, 90, 92, 113, 82, 235, 233, - 225, 428, 428, 257, 225, 257, 257, 484, 486, 486, - 481, 450, 446, 491, 88, 117, 18, 65, 88, 18, - 18, 88, 91, 88, 91, 90, 88, 88, 87, 90, - 88, 90, 88, 88, 257, 257, 221, 479, 491, 88, - 55, 88, 88, 22, 88, 91, 88, 91, 89, 88, - 221, 223, 257, 221, 490, 491, 490, 102, 29, 88, - 91, 88, 91, 88, 88, 17, 32, 32, 33, 32, - - 223, 223, 257, 91, 91, 88, 91, 91, 91, 88, - 91, 91, 88, 91, 88, 88, 21, 222, 23, 88, - 91, 91, 88, 91, 88, 88, 222, 222, 24, 26, - 88, 91, 91, 88, 91, 88, 91, 88, 91, 88, - 91, 88, 88, 91, 88, 91, 88, 91, 88, 88, - 88, 91, 88, 91, 88, 88, 88, 91, 88, 91, - 88, 25, 88, 91, 88, 91, 88, 88, 91, 88, - 91, 88, 91, 88, 91, 88, 91, 88, 91, 88, - 91, 88, 91 + 330, 330,16964,16965,16966, 510, 510, 537, 537, 209, + 209, 193, 193, 370, 370, 370, 370, 645, 639, 644, + 639, 644, 638, 644, 2, 639, 644, 639, 644, 277, + 639, 644, 276, 639, 644, 276, 639, 644, 2, 276, + 639, 644, 275, 276, 639, 644, 276, 639, 644, 281, + 639, 644, 281, 639, 644, 281, 639, 644, 278, 638, + 644, 2, 281, 639, 644, 280, 281, 639, 644, 281, + 639, 644, 281, 639, 644, 639, 644, 638, 644, 2, + 639, 644, 639, 644, 434, 639, 644, 439, 639, 644, + 444, 639, 644, 639, 644, 639, 644, 443, 639, 644, + + 441, 639, 644, 442, 639, 644, 452, 639, 644, 440, + 639, 644, 438, 639, 644, 438, 639, 644, 2, 438, + 639, 644, 438, 639, 644, 437, 438, 639, 644, 436, + 438, 639, 644, 639, 644, 638, 644, 2, 639, 644, + 462, 639, 644, 639, 644, 453, 639, 644, 451, 639, + 644, 463, 639, 644, 450, 639, 644, 450, 639, 644, + 449, 450, 639, 644, 449, 638, 644, 2, 449, 450, + 639, 644, 450, 639, 644, 450, 639, 644, 450, 639, + 644, 229, 639, 644, 639, 644, 221, 639, 644, 230, + 639, 644, 230, 639, 644, 220, 639, 644, 238, 639, + + 644, 238, 638, 644, 2, 238, 639, 644, 269, 639, + 644, 282, 639, 644, 366, 639, 644, 317, 639, 644, + 639, 644, 317, 639, 644, 317, 639, 644, 322, 639, + 644, 286, 639, 644, 268, 639, 644, 318, 639, 644, + 268, 639, 644, 268, 639, 644, 268, 639, 644, 268, + 639, 644, 268, 639, 644, 268, 639, 644, 268, 639, + 644, 268, 639, 644, 268, 639, 644, 268, 639, 644, + 475, 639, 644, 639, 644, 639, 644, 638, 644, 2, + 639, 644, 639, 644, 268, 639, 644, 639, 644, 639, + 644, 638, 644, 2, 639, 644, 329, 639, 644, 639, + + 644, 328, 639, 644, 327, 639, 644, 639, 644, 410, + 639, 644, 409, 639, 644, 411, 639, 644, 411, 639, + 644, 403, 639, 644, 403, 639, 644, 402, 403, 639, + 644, 402, 638, 644, 2, 402, 403, 639, 644, 395, + 403, 639, 644, 396, 403, 639, 644, 401, 403, 639, + 644, 403, 639, 644, 408, 639, 644, 408, 639, 644, + 2, 408, 639, 644, 406, 408, 639, 644, 407, 408, + 639, 644, 408, 639, 644, 402, 403, 639, 644, 402, + 638, 644, 2, 402, 403, 639, 644, 403, 639, 644, + 397, 403, 639, 644, 403, 639, 644, 403, 639, 644, + + 403, 639, 644, 403, 639, 644, 403, 639, 644, 252, + 639, 644, 252, 639, 644, 252, 638, 644, 2, 252, + 639, 644, 254, 639, 644, 252, 639, 644, 252, 639, + 644, 321, 639, 644, 321, 639, 644, 2, 321, 639, + 644, 321, 639, 644, 320, 321, 639, 644, 319, 321, + 639, 644, 330, 347, 639, 644, 330, 347, 639, 644, + 330, 346, 347, 639, 644, 346, 638, 644, 2, 346, + 347, 639, 644, 347, 639, 644, 347, 639, 644, 347, + 639, 644, 338, 347, 639, 644, 339, 347, 639, 644, + 258, 639, 644, 639, 644, 639, 644, 638, 644, 2, + + 639, 644, 639, 644, 259, 639, 644, 639, 644, 639, + 644, 505, 638, 644, 2, 639, 644, 639, 644, 504, + 639, 644, 639, 644, 423, 428, 639, 644, 423, 428, + 639, 644, 422, 638, 644, 2, 423, 428, 639, 644, + 420, 428, 639, 644, 428, 639, 644, 428, 639, 644, + 428, 639, 644, 413, 428, 639, 644, 414, 428, 639, + 644, 423, 428, 639, 644, 421, 423, 428, 639, 644, + 424, 638, 644, 428, 639, 644, 428, 639, 644, 416, + 639, 644, 433, 639, 644, 433, 639, 644, 432, 638, + 644, 2, 433, 639, 644, 430, 433, 639, 644, 433, + + 639, 644, 433, 639, 644, 433, 639, 644, 428, 639, + 644, 2, 428, 639, 644, 412, 428, 639, 644, 271, + 639, 644, 271, 639, 644, 273, 638, 644, 2, 271, + 639, 644, 271, 639, 644, 271, 639, 644, 637, 639, + 644, 637, 639, 644, 637, 639, 644, 2, 637, 639, + 644, 639, 644, 637, 639, 644, 639, 644, 639, 644, + 636, 638, 644, 2, 639, 644, 639, 644, 224, 639, + 644, 225, 639, 644, 222, 639, 644, 223, 639, 644, + 547, 549, 639, 644, 547, 549, 639, 644, 549, 639, + 644, 548, 638, 644, 2, 547, 549, 639, 644, 549, + + 639, 644, 549, 639, 644, 547, 549, 639, 644, 547, + 549, 639, 644, 549, 639, 644, 549, 639, 644, 545, + 549, 639, 644, 549, 639, 644, 326, 639, 644, 326, + 639, 644, 325, 326, 639, 644, 325, 638, 644, 2, + 325, 326, 639, 644, 326, 639, 644, 324, 326, 639, + 644, 323, 326, 639, 644, 458, 639, 644, 459, 639, + 644, 460, 639, 644, 461, 639, 644, 340, 639, 644, + 467, 469, 639, 644, 467, 469, 639, 644, 464, 467, + 469, 639, 644, 464, 638, 644, 2, 464, 467, 469, + 639, 644, 469, 639, 644, 467, 469, 639, 644, 605, + + 639, 644, 605, 639, 644, 605, 639, 644, 607, 638, + 644, 2, 605, 639, 644, 605, 639, 644, 605, 639, + 644, 603, 605, 639, 644, 605, 639, 644, 605, 639, + 644, 605, 639, 644, 605, 639, 644, 605, 639, 644, + 605, 639, 644, 480, 639, 644, 480, 639, 644, 480, + 639, 644, 481, 638, 644, 2, 480, 639, 644, 480, + 639, 644, 480, 639, 644, 480, 639, 644, 480, 639, + 644, 478, 480, 639, 644, 480, 639, 644, 480, 639, + 644, 477, 481, 638, 644, 2, 480, 639, 644, 480, + 639, 644, 480, 639, 644, 556, 639, 644, 556, 639, + + 644, 555, 556, 639, 644, 554, 638, 644, 2, 556, + 639, 644, 556, 639, 644, 556, 639, 644, 555, 556, + 639, 644, 556, 639, 644, 556, 639, 644, 556, 639, + 644, 555, 556, 639, 644, 556, 639, 644, 556, 639, + 644, 606, 639, 644, 606, 639, 644, 606, 639, 644, + 609, 638, 644, 2, 606, 639, 644, 606, 639, 644, + 606, 639, 644, 606, 639, 644, 606, 639, 644, 606, + 639, 644, 610, 638, 644, 2, 606, 639, 644, 606, + 639, 644, 639, 644, 507, 638, 644, 2, 639, 644, + 639, 644, 639, 644, 506, 639, 644, 639, 644, 639, + + 644, 513, 638, 644, 2, 639, 644, 639, 644, 512, + 639, 644, 512, 639, 644, 639, 644, 515, 638, 644, + 2, 639, 644, 639, 644, 514, 639, 644, 514, 639, + 644, 639, 644, 601, 639, 644, 601, 639, 644, 588, + 638, 644, 2, 601, 639, 644, 590, 601, 639, 644, + 601, 639, 644, 601, 639, 644, 601, 639, 644, 639, + 644, 638, 644, 2, 639, 644, 593, 639, 644, 639, + 644, 592, 639, 644, 639, 644, 601, 639, 644, 602, + 638, 644, 601, 639, 644, 601, 639, 644, 601, 639, + 644, 601, 639, 644, 594, 601, 639, 644, 600, 639, + + 644, 600, 639, 644, 2, 600, 639, 644, 599, 600, + 639, 644, 600, 639, 644, 585, 639, 644, 503, 639, + 644, 583, 639, 644, 583, 639, 644, 583, 639, 644, + 578, 638, 644, 2, 583, 639, 644, 583, 639, 644, + 583, 639, 644, 583, 639, 644, 583, 639, 644, 583, + 639, 644, 583, 639, 644,16964,16965,16966, 577, 578, + 638, 644, 2, 583, 639, 644, 583, 639, 644,16964, + 16965,16966, 583, 639, 644, 583, 639, 644, 583, 639, + 644, 489, 639, 644, 489, 639, 644, 489, 639, 644, + 487, 638, 644, 2, 489, 639, 644, 489, 639, 644, + + 489, 639, 644, 587, 639, 644, 587, 639, 644, 2, + 587, 639, 644, 586, 587, 639, 644, 587, 639, 644, + 587, 639, 644, 509, 638, 644, 508, 639, 644, 510, + 639, 644, 510, 639, 644, 511, 638, 644, 2, 510, + 639, 644, 510, 639, 644, 572, 638, 644, 571, 639, + 644, 639, 644, 639, 644, 528, 638, 644, 2, 639, + 644, 639, 644, 627, 639, 644, 627, 639, 644, 626, + 638, 644, 2, 627, 639, 644, 627, 639, 644, 627, + 639, 644, 627, 639, 644, 627, 639, 644, 627, 639, + 644, 627, 639, 644, 617, 639, 644, 617, 639, 644, + + 616, 638, 644, 2, 617, 639, 644, 617, 639, 644, + 617, 639, 644, 617, 639, 644, 617, 639, 644, 617, + 639, 644, 617, 639, 644,17002, 613, 639, 644, 613, + 639, 644, 612, 638, 644, 2, 613, 639, 644, 613, + 639, 644, 613, 639, 644, 555, 556, 639, 644, 556, + 639, 644, 556, 639, 644, 556, 639, 644, 556, 639, + 644, 555, 556, 639, 644, 556, 639, 644, 568, 639, + 644, 568, 639, 644, 567, 638, 644, 2, 568, 639, + 644, 568, 639, 644, 639, 644, 519, 638, 644, 639, + 644, 518, 639, 644, 518, 639, 644, 639, 644, 639, + + 644, 520, 638, 644, 2, 639, 644, 639, 644, 517, + 638, 644, 639, 644, 516, 639, 644, 516, 639, 644, + 556, 639, 644, 556, 639, 644, 639, 644, 501, 639, + 644, 501, 639, 644, 522, 638, 644, 521, 639, 644, + 350, 639, 644, 350, 639, 644, 350, 639, 644, 638, + 644, 2, 350, 639, 644, 350, 639, 644, 350, 639, + 644, 349, 350, 639, 644, 350, 639, 644, 354, 639, + 644, 355, 639, 644, 356, 403, 639, 644, 357, 403, + 639, 644, 360, 639, 644, 360, 639, 644, 2, 360, + 639, 644, 360, 639, 644, 360, 639, 644, 365, 639, + + 644, 365, 639, 644, 364, 365, 639, 644, 364, 638, + 644, 2, 364, 365, 639, 644, 361, 365, 639, 644, + 362, 365, 639, 644, 363, 365, 639, 644, 365, 639, + 644, 639, 644, 638, 644, 2, 639, 644, 639, 644, + 342, 639, 644, 342, 639, 644, 343, 639, 644, 341, + 639, 644, 344, 639, 644, 345, 639, 644, 537, 541, + 639, 644, 537, 541, 639, 644, 541, 639, 644, 540, + 638, 644, 2, 537, 541, 639, 644, 541, 639, 644, + 537, 541, 639, 644, 541, 639, 644, 541, 639, 644, + 219, 639, 644, 219, 639, 644, 2, 219, 639, 644, + + 219, 639, 644, 219, 639, 644, 218, 219, 639, 644, + 216, 219, 639, 644, 217, 638, 644, 2, 219, 639, + 644, 219, 639, 644, 219, 639, 644, 219, 639, 644, + 219, 639, 644, 219, 639, 644, 219, 639, 644, 218, + 219, 639, 644, 219, 639, 644, 219, 639, 644, 219, + 639, 644, 92, 218, 219, 639, 644, 219, 639, 644, + 92, 218, 219, 639, 644, 92, 218, 219, 639, 644, + 92, 218, 219, 639, 644, 219, 639, 644, 216, 219, + 639, 644, 219, 639, 644, 3, 219, 639, 644, 219, + 639, 644, 639, 644, 67, 639, 644, 639, 644, 638, + + 644, 2, 639, 644, 639, 644, 68, 639, 644, 639, + 644, 22, 639, 644, 22, 639, 644, 2, 22, 639, + 644, 22, 639, 644, 22, 639, 644, 22, 639, 644, + 22, 639, 644, 22, 639, 644, 213, 638, 644, 219, + 639, 644, 198, 218, 219, 639, 644, 200, 218, 219, + 639, 644, 202, 218, 219, 639, 644, 209, 210, 639, + 644, 209, 210, 639, 644, 209, 210, 639, 644, 208, + 638, 644, 2, 209, 210, 639, 644, 210, 639, 644, + 210, 639, 644, 209, 210, 639, 644, 210, 639, 644, + 41, 639, 644, 41, 639, 644, 639, 644, 42, 639, + + 644, 42, 639, 644, 43, 638, 644, 2, 42, 639, + 644, 42, 639, 644, 42, 639, 644, 40, 639, 644, + 639, 644, 204, 639, 644, 204, 639, 644, 639, 644, + 205, 639, 644, 205, 639, 644, 195, 639, 644, 639, + 644, 639, 644, 189, 639, 644, 189, 639, 644, 191, + 639, 644, 191, 639, 644, 192, 639, 644, 193, 639, + 644, 193, 639, 644, 193, 638, 644, 2, 193, 639, + 644, 193, 639, 644, 194, 639, 644, 576, 638, 644, + 575, 639, 644, 114, 639, 644, 114, 639, 644, 114, + 639, 644, 112, 639, 644, 112, 639, 644, 112, 639, + + 644, 113, 639, 644, 113, 639, 644, 113, 639, 644, + 115, 639, 644, 115, 639, 644, 115, 639, 644, 120, + 639, 644, 120, 639, 644, 119, 638, 644, 2, 120, + 639, 644, 120, 639, 644, 120, 639, 644, 639, 644, + 639, 644, 51, 639, 644, 51, 638, 644, 2, 51, + 639, 644, 639, 644, 639, 644, 638, 644, 2, 639, + 644, 639, 644, 73, 639, 644,16458, 639, 644, 36, + 639, 644, 36, 639, 644, 34, 35, 638, 644, 2, + 36, 639, 644, 36, 639, 644, 36, 639, 644, 36, + 639, 644, 36, 639, 644, 639, 644, 31, 639, 644, + + 31, 639, 644, 48, 639, 644, 48, 639, 644, 2, + 48, 639, 644, 48, 639, 644, 639, 644, 639, 644, + 2, 639, 644, 639, 644, 75, 639, 644, 77, 639, + 644, 639, 644, 639, 644, 78, 638, 644, 2, 639, + 644, 639, 644, 88, 638, 644, 87, 639, 644, 87, + 639, 644, 87, 639, 644, 639, 644, 82, 639, 644, + 82, 639, 644, 82, 639, 644, 82, 639, 644, 639, + 644, 83, 639, 644, 83, 639, 644, 84, 638, 644, + 639, 644, 639, 644, 551, 639, 644, 639, 644, 639, + 644, 552, 638, 644, 2, 639, 644, 553, 639, 644, + + 639, 644, 267, 639, 644, 267, 639, 644, 2, 267, + 639, 644, 267, 639, 644, 263, 267, 639, 644, 264, + 267, 639, 644, 368, 394, 639, 644, 368, 394, 639, + 644, 393, 638, 644, 2, 368, 394, 639, 644, 389, + 394, 639, 644, 394, 639, 644, 368, 394, 639, 644, + 394, 639, 644, 369, 394, 639, 644, 369, 394, 639, + 644, 2, 369, 394, 639, 644, 371, 394, 639, 644, + 394, 639, 644, 384, 394, 639, 644, 385, 394, 639, + 644, 394, 639, 644, 394, 639, 644, 2, 394, 639, + 644, 386, 394, 639, 644, 387, 394, 639, 644, 376, + + 381, 639, 644, 376, 381, 639, 644, 380, 638, 644, + 2, 376, 381, 639, 644, 381, 639, 644, 376, 381, + 639, 644, 379, 639, 644, 379, 639, 644, 378, 638, + 644, 2, 379, 639, 644, 379, 639, 644, 367, 394, + 639, 644, 367, 394, 639, 644, 370, 394, 639, 644, + 370, 393, 638, 644, 2, 370, 394, 639, 644, 372, + 394, 639, 644, 373, 394, 639, 644, 394, 639, 644, + 382, 394, 639, 644, 383, 394, 639, 644, 457, 639, + 644, 457, 639, 644, 456, 457, 639, 644, 456, 638, + 644, 2, 456, 457, 639, 644, 457, 639, 644, 454, + + 457, 639, 644, 455, 457, 639, 644, 6, 639, 644, + 6, 639, 644, 2, 6, 639, 644, 6, 639, 644, + 6, 639, 644, 564, 639, 644, 564, 639, 644, 2, + 564, 639, 644, 564, 639, 644, 564, 639, 644, 564, + 639, 644, 564, 639, 644, 564, 639, 644, 564, 639, + 644, 550, 639, 644, 295, 639, 644, 295, 639, 644, + 295, 639, 644, 294, 638, 644, 2, 295, 639, 644, + 290, 295, 639, 644, 295, 639, 644, 287, 295, 639, + 644, 289, 295, 639, 644, 295, 639, 644, 289, 295, + 639, 644, 288, 295, 639, 644, 300, 639, 644, 300, + + 639, 644, 299, 638, 644, 2, 300, 639, 644, 297, + 300, 639, 644, 300, 639, 644, 300, 639, 644, 300, + 639, 644, 308, 639, 644, 308, 639, 644, 304, 638, + 644, 2, 308, 639, 644, 301, 639, 644, 639, 644, + 302, 639, 644, 303, 639, 644, 308, 639, 644, 315, + 639, 644, 315, 639, 644, 316, 638, 644, 2, 315, + 639, 644, 309, 639, 644, 639, 644, 315, 639, 644, + 310, 639, 644, 311, 639, 644, 1, 641, 643, 274, + 277, 641, 643, 279, 444, 439, 435, 444, 439, 440, + 436, 451, 463, 451, 463, 238, 238, 269, 282, 348, + + 641, 643, 268, 261, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 262, 268, 641, 643, 327, 402, 401, 401, 402, + 400, 253, 330, 330, 1, 330, 330, 346, 346, 332, + 333, 641, 331, 643, 259, 259, 504, 504, 423, 423, + 1, 423, 426, 641, 427, 643, 423, 421, 423, 426, + 641, 427, 643, 425, 431, 431, 641, 431, 643, 429, + 273, 273, 272, 637, 637, 1, 637, 637, 642, 640, + 641, 637, 640, 643, 636, 1, 636, 641, 643, 547, + 547, 1, 547, 565, 546, 643, 547, 545, 545, 544, + + 546, 643, 325, 340, 467, 467, 1, 467, 464, 467, + 464, 468, 465, 641, 466, 467, 643, 630, 635, 641, + 558, 643, 603, 604, 633, 633, 634, 633, 632, 633, + 557, 558, 643, 631, 482, 477, 479, 633, 479, 633, + 634, 477, 479, 633, 479, 633, 479, 633, 479, 632, + 633, 555, 555, 555, 604, 557, 558, 643, 629, 506, + 506, 513, 512, 512, 643, 515, 514, 514, 514, 643, + 591, 592, 592, 597, 584, 585, 503,16964,16965,16966, + 577,16964,16965,16966, 633, 634,16964,16965,16966, 577, + 633, 633, 633,16964,16965,16966, 633, 643,16964,16965, + + 16966, 487, 488, 508, 510, 510, 1, 510, 510, 641, + 510, 643, 571, 528, 1, 528, 641, 643, 628, 624, + 641, 624, 643, 604, 625, 625, 619, 620, 614, 641, + 614, 643,17002, 615, 615, 611, 641, 611, 643, 555, + 555, 518, 518, 643, 520, 1, 520, 641, 643, 516, + 516, 643, 501, 501, 643, 521, 521, 349, 349, 352, + 351, 353, 358, 359, 364, 363, 363, 341, 341, 537, + 537, 1, 537, 539, 641, 539, 643, 537, 538, 539, + 643, 218, 216, 215, 214, 215, 215, 92, 197, 212, + 641, 211, 643, 218, 177, 196, 105, 92, 218, 92, + + 218, 196, 105, 92, 218, 92, 218, 92, 218, 216, + 3, 211, 643, 67, 67, 68, 68, 21, 21, 641, + 21, 643, 211, 643, 198, 218, 198, 200, 218, 200, + 202, 218, 202, 209, 209, 1, 209, 209, 209, 207, + 641, 206, 643, 209, 41, 41, 643, 40, 204, 204, + 643, 205, 205, 643, 189, 189, 643, 191, 191, 643, + 193, 193, 1, 193, 193, 641, 193, 643, 575, 114, + 114, 1, 114, 114, 641, 114, 643, 112, 112, 1, + 112, 112, 641, 112, 643, 113, 113, 1, 113, 113, + 641, 113, 643, 115, 115, 1, 115, 115, 641, 115, + + 643, 51, 51, 1, 51, 51, 641, 643, 73,16458, + 73,16458, 34, 1, 34, 35, 35, 641, 35, 643, + 31, 31, 643, 48, 48, 1, 48, 48, 641, 48, + 643, 76, 1, 76, 641, 643, 77, 78, 1, 78, + 641, 643, 87, 87, 87, 82, 82, 82, 82, 643, + 83, 83, 643, 551, 552, 1, 552, 643, 265, 368, + 368, 1, 368, 368, 641, 368, 643, 388, 369, 369, + 1, 369, 376, 376, 1, 376, 377, 376, 643, 379, + 379, 1, 379, 379, 641, 379, 643, 367, 367, 1, + 367, 370, 641, 643, 456, 643, 550, 298, 298, 641, + + 298, 643, 296, 308, 308, 1, 308, 308, 641, 308, + 643, 315, 315, 1, 315, 315, 641, 315, 643, 439, + 439, 436, 436, 228, 228, 348, 470, 472, 268, 260, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 470, 472, 400, 251, 337, 337, 333, 334, 331, + 259, 259, 504, 504, 419, 419, 425, 272, 547, 544, + 1, 468, 560, 561, 484, 557, 634, 632, 483, 634, + 557, 506, 506, 512, 514, 592, 592, 597,16964,16965, + 16966, 634,16964,16965,16966,16964,16965,16966,16964,16965, + + 16966, 8773, 8810, 615, 615, 615, 518, 516, 501, 521, + 521, 521, 349, 349, 341, 537, 214, 214, 215, 92, + 92, 97, 97, 96, 92, 178, 174, 180, 101, 102, + 103, 100, 104, 92, 92, 218, 92, 218, 92, 218, + 3, 68, 68, 199, 201, 203, 209, 204, 205, 73, + 16458, 8266, 73,16458, 31, 87, 87, 82, 83, 266, + 392, 392, 374, 5, 562, 563, 293, 293, 307, 307, + 314, 314, 285, 436, 227, 226, 227, 471, 473, 473, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 285, 471, + + 285, 473, 336, 335, 336, 418, 417, 418, 547, 559, + 484, 483, 608, 579, 8773, 521, 521, 537, 16, 92, + 92, 4, 176, 179, 175, 181, 173, 171, 167, 169, + 164, 182, 184, 186, 166, 160, 156, 154, 152, 162, + 158, 71, 62, 91, 92, 71, 92, 218, 92, 218, + 209, 80, 87, 87, 391, 390, 391, 374, 292, 291, + 292, 306, 305, 306, 313, 312, 313, 226, 284, 283, + 268, 250, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 398, + 335, 417, 415, 547, 535, 485, 490, 499, 497, 595, + + 521, 521, 537, 92, 172, 168, 170, 165, 183, 185, + 187, 161, 157, 155, 153, 163, 159, 141, 145, 146, + 148, 150, 143, 49, 53, 89, 50, 54, 92, 66, + 89, 95, 95, 95, 95, 92, 218, 209, 190, 188, + 81, 87, 390, 375, 291, 305, 312, 446, 250, 247, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 249, 256, 268, 398, 404, 543, + 547, 573, 493, 534, 490, 499, 497, 494, 595, 598, + 508, 623, 537, 9, 7, 8, 92, 142, 147, 149, + 151, 144, 137, 139, 133, 135, 132, 89, 89, 58, + + 110, 39, 55, 108, 92, 66, 66, 66, 95, 97, + 95, 92, 95, 92, 95, 95, 92, 218, 99, 209, + 190, 190, 188, 188, 116, 448, 445, 247, 249, 270, + 240, 242, 268, 245, 268, 268, 268, 235, 268, 268, + 239, 248, 268, 268, 268, 268, 405, 547, 533, 493, + 495, 494, 476, 483, 8774, 8773, 566, 537, 12, 14, + 92, 138, 140, 134, 136, 129, 130, 127, 79, 63, + 65, 111, 92, 66, 97, 66, 47, 38, 95, 92, + 95, 95, 92, 95, 92, 95, 92, 95, 92, 218, + 209, 117, 85, 240, 242, 245, 235, 239, 248, 268, + + 268, 237, 268, 268, 235, 268, 231, 268, 268, 241, + 399, 542, 547, 542, 529, 500, 526, 502, 495, 483, + 596, 8772, 8773, 569, 537, 10, 11, 13, 92, 131, + 128, 125, 123, 60, 72, 61, 64, 92, 29, 28, + 72, 92, 95, 92, 95, 95, 92, 95, 92, 218, + 209, 44, 86, 85, 447, 237, 231, 241, 268, 268, + 237, 268, 268, 268, 231, 8447, 261,16639, 243, 399, + 491, 500, 570, 622, 498, 486, 502, 574, 621, 596, + 523, 524, 537, 92, 126, 124, 90, 45, 106, 57, + 52, 92, 90, 90, 45, 45, 92, 95, 95, 92, + + 218, 92, 218, 98, 209, 98, 86, 85, 243, 474, + 246, 244, 268, 236, 268, 268, 8447, 260, 257, 491, + 496, 498, 492, 486, 531, 589, 537, 15, 92, 121, + 46, 70, 17, 37, 109, 32, 92, 17, 17, 32, + 32, 92, 95, 92, 95, 92, 92, 94, 96, 118, + 86, 246, 244, 236, 474, 474, 268, 236, 268, 268, + 530, 532, 532, 527, 496, 492, 537, 92, 122, 56, + 19, 69, 92, 19, 19, 92, 95, 92, 95, 94, + 92, 92, 91, 94, 92, 94, 92, 92, 268, 268, + 232, 525, 537, 92, 59, 92, 92, 23, 92, 95, + + 92, 95, 93, 92, 232, 234, 268, 232, 536, 537, + 536, 107, 30, 92, 95, 92, 95, 92, 92, 18, + 33, 33, 34, 33, 234, 234, 268, 95, 95, 92, + 95, 95, 95, 92, 95, 95, 92, 95, 92, 92, + 20, 233, 24, 92, 95, 95, 92, 95, 92, 92, + 233, 233, 25, 27, 92, 95, 95, 92, 95, 92, + 95, 92, 95, 92, 95, 92, 92, 95, 92, 95, + 92, 95, 92, 92, 92, 95, 92, 95, 92, 92, + 92, 95, 92, 95, 92, 26, 92, 95, 92, 95, + 92, 92, 95, 92, 95, 92, 95, 92, 95, 92, + + 95, 92, 95, 92, 95, 92, 95 } ; -static yyconst short int yy_accept[3920] = +static yyconst short int yy_accept[4093] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -734,409 +759,429 @@ static yyconst short int yy_accept[3920] = 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 15, 16, 17, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 19, 21, 23, 25, 28, 30, 33, 36, 39, - 43, 47, 50, 53, 56, 59, 62, 66, 70, 73, - - 76, 78, 80, 83, 85, 88, 91, 94, 96, 98, - 101, 104, 107, 110, 113, 116, 119, 123, 126, 130, - 134, 136, 138, 141, 144, 146, 149, 152, 155, 158, - 161, 165, 168, 173, 176, 179, 182, 185, 187, 190, - 193, 196, 199, 202, 205, 209, 212, 215, 218, 221, - 223, 226, 229, 232, 235, 238, 241, 244, 247, 250, - 253, 256, 259, 262, 265, 268, 271, 274, 276, 278, - 280, 283, 285, 288, 290, 292, 294, 297, 300, 302, - 305, 308, 311, 313, 316, 319, 322, 325, 328, 331, - 335, 338, 343, 347, 351, 355, 358, 361, 364, 368, - - 372, 376, 379, 383, 386, 391, 394, 398, 401, 404, - 407, 410, 413, 416, 419, 422, 426, 429, 432, 435, - 438, 441, 445, 448, 452, 456, 460, 464, 469, 472, - 477, 480, 483, 486, 490, 494, 497, 499, 501, 503, - 506, 508, 511, 513, 515, 518, 521, 523, 526, 528, - 532, 536, 539, 544, 549, 553, 557, 561, 566, 571, - 575, 580, 583, 587, 591, 594, 597, 600, 603, 607, - 611, 614, 617, 620, 623, 626, 630, 633, 636, 640, - 643, 646, 649, 653, 656, 659, 662, 665, 668, 672, - 674, 677, 679, 681, 684, 687, 689, 692, 695, 698, - - 701, 705, 709, 712, 715, 720, 723, 726, 730, 734, - 737, 740, 744, 747, 750, 753, 757, 760, 765, 768, - 772, 776, 779, 782, 785, 788, 791, 795, 799, 804, - 807, 813, 816, 820, 823, 826, 829, 832, 836, 839, - 842, 846, 849, 852, 855, 858, 861, 864, 867, 870, - 873, 876, 880, 883, 886, 889, 892, 896, 899, 902, - 906, 910, 913, 916, 919, 922, 926, 929, 933, 936, - 939, 943, 946, 949, 952, 956, 959, 962, 965, 968, - 971, 974, 978, 981, 984, 987, 990, 993, 996, 1000, - 1003, 1005, 1008, 1011, 1013, 1015, 1018, 1020, 1022, 1025, - - 1028, 1030, 1033, 1036, 1038, 1041, 1044, 1046, 1049, 1052, - 1055, 1058, 1061, 1065, 1069, 1072, 1075, 1078, 1080, 1082, - 1085, 1088, 1090, 1093, 1095, 1098, 1101, 1104, 1107, 1110, - 1113, 1117, 1120, 1123, 1127, 1131, 1134, 1137, 1140, 1143, - 1146, 1149, 1152, 1156, 1159, 1162, 1165, 1168, 1171, 1177, - 1181, 1185, 1191, 1194, 1197, 1200, 1203, 1206, 1209, 1212, - 1216, 1219, 1222, 1225, 1228, 1232, 1236, 1239, 1242, 1245, - 1248, 1251, 1254, 1257, 1261, 1264, 1267, 1270, 1272, 1274, - 1277, 1280, 1282, 1285, 1288, 1291, 1295, 1298, 1301, 1304, - 1307, 1310, 1313, 1316, 1319, 1322, 1326, 1329, 1332, 1335, - - 1338, 1341, 1345, 1348, 1351, 1354, 1358, 1361, 1364, 1368, - 1371, 1374, 1377, 1380, 1384, 1387, 1390, 1393, 1396, 1400, - 1403, 1405, 1408, 1410, 1413, 1416, 1418, 1420, 1423, 1426, - 1428, 1431, 1433, 1436, 1439, 1442, 1445, 1447, 1450, 1453, - 1456, 1459, 1462, 1465, 1468, 1470, 1474, 1477, 1480, 1484, - 1487, 1490, 1493, 1497, 1501, 1504, 1507, 1511, 1514, 1517, - 1520, 1523, 1527, 1530, 1535, 1539, 1543, 1547, 1550, 1552, - 1554, 1557, 1559, 1562, 1565, 1568, 1571, 1574, 1577, 1580, - 1584, 1588, 1591, 1594, 1599, 1602, 1606, 1609, 1612, 1615, - 1618, 1622, 1625, 1628, 1632, 1635, 1640, 1643, 1646, 1649, - - 1652, 1655, 1658, 1661, 1664, 1667, 1671, 1674, 1678, 1682, - 1686, 1690, 1693, 1695, 1698, 1700, 1702, 1705, 1707, 1710, - 1712, 1715, 1718, 1722, 1725, 1728, 1731, 1734, 1737, 1741, - 1745, 1748, 1752, 1756, 1760, 1764, 1768, 1772, 1776, 1780, - 1784, 1788, 1791, 1796, 1799, 1802, 1806, 1809, 1812, 1815, - 1817, 1820, 1823, 1826, 1830, 1833, 1836, 1839, 1841, 1844, - 1847, 1849, 1852, 1855, 1858, 1860, 1862, 1865, 1868, 1871, - 1874, 1877, 1880, 1883, 1886, 1890, 1893, 1896, 1899, 1902, - 1905, 1908, 1911, 1914, 1917, 1920, 1923, 1926, 1929, 1932, - 1935, 1938, 1941, 1944, 1947, 1951, 1954, 1957, 1959, 1961, - - 1964, 1967, 1971, 1973, 1975, 1977, 1980, 1982, 1986, 1988, - 1991, 1994, 1998, 2002, 2005, 2008, 2011, 2014, 2016, 2019, - 2022, 2025, 2028, 2032, 2035, 2037, 2039, 2042, 2044, 2047, - 2050, 2052, 2054, 2057, 2060, 2062, 2065, 2068, 2071, 2074, - 2076, 2079, 2082, 2085, 2088, 2090, 2093, 2096, 2099, 2101, - 2103, 2106, 2108, 2110, 2113, 2116, 2119, 2121, 2124, 2127, - 2131, 2134, 2138, 2142, 2146, 2150, 2153, 2158, 2162, 2165, - 2169, 2172, 2176, 2180, 2185, 2189, 2192, 2196, 2200, 2203, - 2206, 2210, 2214, 2218, 2222, 2226, 2230, 2234, 2239, 2243, - 2247, 2251, 2255, 2258, 2261, 2265, 2268, 2273, 2276, 2280, - - 2284, 2287, 2290, 2294, 2297, 2300, 2303, 2306, 2310, 2313, - 2316, 2319, 2322, 2325, 2328, 2331, 2331, 2332, 2333, 2334, - 2335, 2336, 2336, 2336, 2337, 2338, 2339, 2339, 2339, 2339, - 2340, 2340, 2340, 2341, 2342, 2343, 2343, 2344, 2344, 2345, - 2345, 2345, 2346, 2346, 2346, 2346, 2347, 2348, 2348, 2348, - 2349, 2349, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, - 2350, 2350, 2351, 2352, 2353, 2353, 2353, 2353, 2353, 2353, - 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2354, 2355, - 2355, 2356, 2357, 2357, 2357, 2358, 2359, 2360, 2361, 2362, - 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, - - 2373, 2374, 2374, 2375, 2375, 2375, 2375, 2375, 2376, 2377, - 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2385, - 2385, 2385, 2385, 2385, 2385, 2386, 2386, 2386, 2386, 2386, - 2386, 2386, 2387, 2388, 2389, 2391, 2393, 2394, 2394, 2395, - 2395, 2395, 2397, 2399, 2399, 2399, 2399, 2399, 2400, 2400, - 2401, 2401, 2401, 2401, 2402, 2402, 2403, 2403, 2403, 2404, - 2406, 2408, 2408, 2408, 2408, 2409, 2411, 2413, 2414, 2414, - 2415, 2417, 2419, 2420, 2421, 2422, 2422, 2423, 2423, 2424, - 2425, 2427, 2428, 2428, 2429, 2431, 2434, 2434, 2435, 2435, - 2436, 2437, 2438, 2439, 2440, 2441, 2443, 2443, 2443, 2444, - - 2446, 2446, 2447, 2447, 2447, 2448, 2449, 2452, 2453, 2454, - 2455, 2455, 2456, 2458, 2458, 2460, 2461, 2461, 2462, 2464, - 2467, 2467, 2467, 2468, 2470, 2472, 2473, 2473, 2474, 2474, - 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, - 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2475, 2476, - 2479, 2479, 2479, 2480, 2481, 2481, 2481, 2481, 2481, 2481, - 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2482, 2482, 2482, - 2484, 2486, 2489, 2491, 2492, 2493, 2493, 2493, 2493, 2493, - 2493, 2493, 2493, 2493, 2493, 2493, 2494, 2494, 2494, 2494, - 2494, 2494, 2494, 2495, 2495, 2495, 2495, 2498, 2498, 2498, - - 2499, 2499, 2500, 2500, 2501, 2501, 2502, 2502, 2503, 2505, - 2505, 2506, 2506, 2507, 2509, 2509, 2510, 2510, 2510, 2510, - 2510, 2511, 2511, 2512, 2512, 2512, 2512, 2512, 2512, 2513, - 2513, 2513, 2513, 2514, 2515, 2516, 2516, 2516, 2519, 2520, - 2520, 2523, 2523, 2523, 2527, 2529, 2530, 2534, 2535, 2539, - 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, - 2539, 2540, 2540, 2541, 2541, 2542, 2543, 2544, 2546, 2548, - 2550, 2551, 2551, 2552, 2552, 2553, 2554, 2555, 2556, 2557, - 2559, 2561, 2562, 2562, 2562, 2562, 2562, 2563, 2564, 2565, - 2566, 2568, 2570, 2570, 2571, 2572, 2573, 2575, 2577, 2578, - - 2578, 2578, 2578, 2579, 2579, 2579, 2580, 2582, 2582, 2583, - 2583, 2584, 2585, 2586, 2587, 2587, 2588, 2590, 2590, 2591, - 2593, 2593, 2594, 2594, 2595, 2595, 2595, 2595, 2596, 2596, - 2597, 2597, 2598, 2599, 2600, 2600, 2601, 2602, 2603, 2604, - 2605, 2605, 2605, 2606, 2607, 2607, 2608, 2609, 2611, 2613, - 2615, 2616, 2616, 2619, 2619, 2619, 2619, 2619, 2619, 2619, - 2619, 2619, 2620, 2621, 2622, 2623, 2625, 2626, 2626, 2626, - 2627, 2627, 2627, 2627, 2627, 2627, 2629, 2631, 2631, 2631, - 2631, 2632, 2632, 2632, 2632, 2632, 2632, 2632, 2632, 2632, - 2632, 2632, 2632, 2632, 2632, 2632, 2632, 2633, 2633, 2633, - - 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, - 2633, 2633, 2633, 2633, 2633, 2634, 2634, 2635, 2636, 2637, - 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, - 2637, 2637, 2637, 2637, 2637, 2637, 2638, 2639, 2640, 2640, - 2641, 2642, 2642, 2642, 2642, 2643, 2643, 2644, 2645, 2647, - 2649, 2649, 2649, 2650, 2651, 2653, 2656, 2659, 2660, 2661, - 2663, 2666, 2669, 2670, 2671, 2673, 2676, 2679, 2680, 2681, - 2683, 2684, 2684, 2685, 2685, 2687, 2689, 2689, 2690, 2690, - 2691, 2693, 2693, 2694, 2694, 2695, 2697, 2697, 2698, 2700, - 2700, 2700, 2701, 2703, 2704, 2706, 2707, 2708, 2710, 2712, - - 2714, 2715, 2716, 2717, 2719, 2721, 2723, 2724, 2725, 2727, - 2729, 2731, 2732, 2733, 2735, 2737, 2739, 2740, 2741, 2743, - 2745, 2747, 2747, 2747, 2747, 2747, 2748, 2749, 2749, 2750, - 2751, 2752, 2753, 2754, 2754, 2754, 2754, 2754, 2756, 2756, - 2758, 2758, 2759, 2759, 2760, 2761, 2762, 2764, 2766, 2766, - 2766, 2766, 2767, 2769, 2770, 2771, 2773, 2775, 2777, 2777, - 2778, 2778, 2779, 2780, 2781, 2782, 2783, 2783, 2784, 2784, - 2785, 2786, 2787, 2788, 2789, 2790, 2791, 2791, 2792, 2793, - 2794, 2796, 2796, 2797, 2799, 2799, 2799, 2800, 2800, 2801, - 2801, 2802, 2803, 2804, 2804, 2805, 2805, 2806, 2807, 2809, - - 2811, 2813, 2814, 2815, 2816, 2818, 2818, 2818, 2819, 2820, - 2822, 2823, 2824, 2824, 2824, 2824, 2824, 2825, 2825, 2826, - 2826, 2826, 2826, 2826, 2827, 2827, 2827, 2828, 2828, 2828, - 2829, 2829, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2831, - 2831, 2832, 2832, 2832, 2832, 2832, 2832, 2832, 2832, 2832, - 2832, 2832, 2832, 2832, 2832, 2832, 2832, 2832, 2832, 2832, - 2832, 2833, 2833, 2833, 2833, 2834, 2834, 2834, 2835, 2835, - 2835, 2836, 2836, 2837, 2838, 2839, 2840, 2841, 2842, 2843, - 2844, 2845, 2846, 2847, 2848, 2849, 2850, 2851, 2852, 2853, - 2854, 2855, 2855, 2856, 2856, 2857, 2857, 2857, 2858, 2859, - - 2859, 2860, 2860, 2861, 2861, 2861, 2861, 2861, 2861, 2862, - 2863, 2863, 2864, 2864, 2865, 2866, 2866, 2867, 2867, 2867, - 2868, 2868, 2869, 2869, 2870, 2870, 2871, 2872, 2872, 2873, - 2873, 2874, 2875, 2876, 2876, 2876, 2877, 2878, 2878, 2879, - 2879, 2879, 2880, 2880, 2881, 2882, 2882, 2882, 2882, 2882, - 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, - 2882, 2882, 2882, 2882, 2883, 2884, 2884, 2885, 2885, 2885, - 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885, - 2885, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - - 2887, 2887, 2887, 2887, 2888, 2888, 2889, 2889, 2890, 2891, - 2892, 2892, 2892, 2893, 2893, 2894, 2895, 2895, 2895, 2895, - 2895, 2898, 2901, 2904, 2907, 2907, 2907, 2907, 2907, 2907, - 2907, 2907, 2907, 2907, 2907, 2908, 2908, 2908, 2908, 2908, - 2908, 2908, 2908, 2908, 2909, 2910, 2911, 2912, 2912, 2912, - 2912, 2912, 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2918, - 2919, 2919, 2920, 2920, 2921, 2922, 2922, 2922, 2922, 2922, - 2922, 2922, 2922, 2922, 2922, 2922, 2924, 2926, 2927, 2927, - 2928, 2928, 2929, 2929, 2929, 2930, 2931, 2932, 2932, 2932, - 2932, 2932, 2932, 2932, 2932, 2932, 2932, 2932, 2932, 2932, - - 2932, 2932, 2932, 2932, 2932, 2932, 2933, 2933, 2933, 2933, - 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, - 2933, 2933, 2933, 2934, 2934, 2934, 2934, 2934, 2934, 2934, - 2934, 2935, 2935, 2935, 2935, 2935, 2935, 2935, 2935, 2935, - 2935, 2935, 2936, 2936, 2936, 2936, 2936, 2937, 2937, 2938, - 2938, 2938, 2938, 2938, 2939, 2939, 2939, 2939, 2939, 2939, - 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, - 2940, 2940, 2940, 2941, 2941, 2941, 2941, 2941, 2941, 2941, - 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, - 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, - - 2941, 2941, 2941, 2941, 2941, 2941, 2942, 2943, 2944, 2944, - 2945, 2945, 2946, 2946, 2946, 2946, 2947, 2947, 2947, 2948, - 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2951, 2951, 2952, - 2952, 2954, 2954, 2954, 2955, 2956, 2957, 2958, 2959, 2959, - 2959, 2960, 2961, 2961, 2962, 2962, 2962, 2963, 2964, 2964, - 2965, 2966, 2966, 2967, 2967, 2967, 2967, 2967, 2967, 2968, - 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, - 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, - 2970, 2970, 2971, 2971, 2972, 2973, 2974, 2975, 2976, 2977, - 2978, 2979, 2980, 2981, 2982, 2983, 2984, 2985, 2986, 2987, - - 2988, 2989, 2990, 2991, 2993, 2995, 2995, 2995, 2995, 2995, - 2996, 2998, 2998, 2998, 2999, 3001, 3001, 3002, 3002, 3002, - 3003, 3003, 3003, 3003, 3003, 3003, 3004, 3004, 3004, 3004, - 3004, 3004, 3004, 3004, 3004, 3004, 3004, 3004, 3005, 3005, - 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, - 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3006, 3006, - 3006, 3006, 3006, 3006, 3006, 3007, 3007, 3007, 3007, 3007, - 3007, 3007, 3008, 3008, 3008, 3008, 3008, 3008, 3008, 3008, - 3008, 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009, - 3009, 3009, 3009, 3009, 3010, 3011, 3012, 3012, 3012, 3012, - - 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3014, 3014, 3015, - 3016, 3017, 3018, 3018, 3019, 3019, 3020, 3020, 3020, 3020, - 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, - 3020, 3021, 3021, 3021, 3021, 3021, 3022, 3022, 3022, 3022, - 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, - 3022, 3023, 3023, 3023, 3023, 3024, 3024, 3024, 3025, 3025, - 3026, 3026, 3027, 3027, 3027, 3028, 3028, 3029, 3029, 3030, - 3030, 3030, 3031, 3031, 3031, 3031, 3031, 3031, 3032, 3032, - 3032, 3032, 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033, - 3033, 3033, 3034, 3034, 3035, 3035, 3036, 3036, 3037, 3037, - - 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, - 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3038, 3038, - 3038, 3039, 3039, 3039, 3039, 3039, 3039, 3039, 3040, 3041, - 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, - 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, - 3041, 3041, 3041, 3041, 3041, 3041, 3042, 3042, 3042, 3042, - 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3043, 3044, 3044, - 3044, 3044, 3045, 3045, 3045, 3045, 3045, 3045, 3045, 3045, - 3045, 3045, 3047, 3048, 3048, 3048, 3049, 3051, 3051, 3051, - 3051, 3051, 3051, 3052, 3052, 3053, 3054, 3054, 3054, 3054, - - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3055, 3056, 3057, 3058, - 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3067, 3068, - 3069, 3070, 3071, 3072, 3073, 3074, 3074, 3074, 3074, 3075, - 3075, 3075, 3076, 3076, 3078, 3079, 3080, 3080, 3081, 3081, - 3081, 3081, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3083, 3083, 3083, 3084, 3084, 3085, 3085, 3085, 3085, 3085, - 3085, 3085, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3087, 3087, 3087, 3087, 3087, 3087, 3087, - - 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, - 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3088, - 3089, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, - 3090, 3090, 3091, 3091, 3091, 3091, 3091, 3091, 3091, 3091, - 3091, 3092, 3092, 3092, 3093, 3093, 3094, 3094, 3095, 3095, - 3095, 3096, 3096, 3097, 3097, 3098, 3098, 3098, 3098, 3098, - 3099, 3099, 3099, 3100, 3100, 3100, 3100, 3100, 3100, 3100, - 3100, 3100, 3100, 3101, 3101, 3102, 3102, 3103, 3103, 3104, - 3104, 3104, 3104, 3104, 3104, 3104, 3104, 3104, 3104, 3105, - 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, - - 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3106, 3106, 3106, - 3106, 3106, 3106, 3106, 3106, 3106, 3107, 3107, 3107, 3107, - 3108, 3108, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, - 3109, 3109, 3109, 3110, 3110, 3110, 3111, 3111, 3112, 3112, - 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, - 3113, 3113, 3113, 3113, 3114, 3114, 3114, 3114, 3114, 3114, - 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3115, 3115, 3115, - 3115, 3115, 3115, 3116, 3116, 3117, 3117, 3117, 3117, 3117, - 3117, 3117, 3117, 3117, 3117, 3117, 3117, 3117, 3117, 3117, - 3117, 3117, 3117, 3117, 3117, 3117, 3117, 3117, 3117, 3117, - - 3117, 3117, 3117, 3117, 3117, 3117, 3117, 3118, 3119, 3120, - 3121, 3122, 3122, 3122, 3122, 3123, 3123, 3123, 3123, 3124, - 3124, 3125, 3125, 3125, 3125, 3125, 3125, 3127, 3127, 3127, - 3128, 3128, 3128, 3128, 3129, 3129, 3129, 3130, 3130, 3130, - 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3130, 3130, 3130, 3130, 3131, 3132, 3133, 3134, 3135, 3136, - 3137, 3138, 3139, 3140, 3141, 3142, 3143, 3144, 3145, 3146, - 3147, 3148, 3149, 3149, 3149, 3150, 3150, 3150, 3152, 3152, - 3153, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, - 3155, 3156, 3157, 3157, 3157, 3158, 3158, 3159, 3159, 3159, - - 3159, 3159, 3159, 3159, 3160, 3160, 3160, 3160, 3161, 3161, - 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, - 3161, 3162, 3162, 3163, 3163, 3163, 3163, 3163, 3163, 3163, - 3163, 3163, 3163, 3163, 3163, 3164, 3165, 3165, 3165, 3165, - 3165, 3165, 3165, 3166, 3166, 3166, 3166, 3166, 3166, 3167, - 3167, 3168, 3169, 3169, 3170, 3170, 3170, 3170, 3170, 3170, - 3170, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, - 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, - 3171, 3171, 3172, 3172, 3172, 3172, 3173, 3173, 3174, 3174, - 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3175, - - 3175, 3176, 3176, 3176, 3177, 3177, 3177, 3177, 3178, 3178, - 3179, 3179, 3179, 3179, 3179, 3180, 3180, 3180, 3180, 3180, - 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, - 3180, 3181, 3182, 3182, 3183, 3183, 3183, 3183, 3183, 3183, - 3183, 3183, 3183, 3183, 3183, 3184, 3185, 3185, 3185, 3185, - 3185, 3185, 3185, 3186, 3186, 3186, 3186, 3186, 3186, 3186, - 3186, 3187, 3187, 3187, 3187, 3187, 3188, 3189, 3190, 3190, - 3190, 3190, 3190, 3190, 3190, 3190, 3190, 3190, 3190, 3190, - 3190, 3190, 3190, 3190, 3190, 3190, 3190, 3190, 3190, 3190, - 3190, 3190, 3190, 3190, 3190, 3190, 3190, 3190, 3190, 3192, - - 3193, 3195, 3197, 3198, 3199, 3199, 3199, 3199, 3200, 3201, - 3201, 3201, 3202, 3203, 3204, 3205, 3206, 3206, 3206, 3206, - 3206, 3206, 3206, 3206, 3207, 3207, 3208, 3209, 3209, 3209, - 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, - 3209, 3210, 3210, 3211, 3212, 3213, 3214, 3215, 3216, 3217, - 3218, 3218, 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226, - 3227, 3227, 3228, 3228, 3228, 3228, 3228, 3229, 3229, 3229, - 3230, 3230, 3230, 3230, 3231, 3231, 3231, 3231, 3231, 3231, - 3231, 3231, 3231, 3231, 3231, 3231, 3232, 3232, 3233, 3233, - 3234, 3234, 3234, 3235, 3235, 3235, 3235, 3235, 3235, 3235, - - 3236, 3236, 3236, 3236, 3236, 3237, 3237, 3237, 3238, 3238, - 3238, 3238, 3238, 3239, 3239, 3239, 3240, 3240, 3240, 3240, - 3241, 3242, 3242, 3243, 3243, 3243, 3244, 3244, 3244, 3244, - 3245, 3245, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, + 18, 18, 18, 19, 21, 23, 25, 28, 30, 33, + + 36, 39, 43, 47, 50, 53, 56, 59, 62, 66, + 70, 73, 76, 78, 80, 83, 85, 88, 91, 94, + 96, 98, 101, 104, 107, 110, 113, 116, 119, 123, + 126, 130, 134, 136, 138, 141, 144, 146, 149, 152, + 155, 158, 161, 165, 168, 173, 176, 179, 182, 185, + 187, 190, 193, 196, 199, 202, 205, 209, 212, 215, + 218, 221, 223, 226, 229, 232, 235, 238, 241, 244, + 247, 250, 253, 256, 259, 262, 265, 268, 271, 274, + 276, 278, 280, 283, 285, 288, 290, 292, 294, 297, + 300, 302, 305, 308, 310, 313, 316, 319, 322, 325, + + 328, 332, 335, 340, 344, 348, 352, 355, 358, 361, + 365, 369, 373, 376, 380, 383, 388, 391, 395, 398, + 401, 404, 407, 410, 413, 416, 419, 423, 426, 429, + 432, 435, 438, 442, 445, 449, 453, 457, 461, 466, + 469, 474, 477, 480, 483, 487, 491, 494, 496, 498, + 500, 503, 505, 508, 510, 512, 515, 518, 520, 523, + 525, 529, 533, 536, 541, 545, 548, 551, 554, 558, + 562, 566, 571, 574, 577, 580, 583, 586, 589, 592, + 596, 600, 603, 606, 609, 612, 616, 620, 623, 626, + 629, 633, 636, 639, 642, 645, 648, 652, 654, 657, + + 659, 661, 664, 667, 669, 672, 675, 678, 681, 685, + 689, 692, 695, 700, 703, 706, 710, 714, 717, 720, + 724, 727, 730, 733, 737, 740, 745, 748, 752, 756, + 759, 762, 765, 768, 771, 775, 779, 784, 787, 793, + 796, 800, 803, 806, 809, 812, 816, 819, 822, 826, + 829, 832, 835, 838, 841, 844, 847, 850, 853, 856, + 860, 863, 866, 869, 872, 876, 879, 882, 886, 890, + 893, 896, 899, 902, 906, 909, 913, 916, 919, 923, + 926, 929, 932, 936, 939, 942, 945, 948, 951, 954, + 958, 961, 964, 967, 970, 973, 976, 980, 983, 985, + + 988, 991, 993, 995, 998, 1000, 1002, 1005, 1008, 1010, + 1013, 1016, 1018, 1021, 1024, 1026, 1029, 1032, 1034, 1037, + 1040, 1043, 1047, 1051, 1054, 1057, 1060, 1062, 1064, 1067, + 1070, 1072, 1075, 1077, 1080, 1083, 1086, 1089, 1092, 1095, + 1099, 1102, 1105, 1109, 1113, 1116, 1119, 1122, 1125, 1128, + 1131, 1134, 1138, 1141, 1144, 1147, 1150, 1153, 1159, 1163, + 1167, 1173, 1176, 1179, 1182, 1185, 1188, 1191, 1194, 1198, + 1201, 1204, 1207, 1210, 1214, 1218, 1221, 1224, 1227, 1230, + 1233, 1236, 1239, 1243, 1246, 1249, 1252, 1254, 1256, 1259, + 1262, 1264, 1267, 1270, 1273, 1277, 1280, 1283, 1286, 1289, + + 1292, 1295, 1298, 1301, 1304, 1308, 1311, 1314, 1317, 1320, + 1323, 1327, 1330, 1333, 1336, 1340, 1343, 1346, 1350, 1353, + 1356, 1359, 1362, 1366, 1369, 1372, 1375, 1378, 1382, 1385, + 1387, 1390, 1392, 1395, 1398, 1400, 1402, 1405, 1408, 1410, + 1413, 1415, 1418, 1421, 1424, 1427, 1429, 1432, 1435, 1438, + 1441, 1444, 1447, 1450, 1452, 1456, 1459, 1462, 1466, 1469, + 1472, 1475, 1479, 1483, 1486, 1489, 1493, 1496, 1499, 1502, + 1505, 1509, 1512, 1517, 1521, 1525, 1529, 1532, 1534, 1536, + 1539, 1541, 1544, 1547, 1550, 1553, 1556, 1559, 1563, 1567, + 1570, 1573, 1578, 1581, 1585, 1588, 1591, 1594, 1597, 1601, + + 1604, 1607, 1611, 1615, 1618, 1622, 1625, 1628, 1631, 1634, + 1637, 1640, 1644, 1647, 1650, 1653, 1658, 1661, 1666, 1671, + 1676, 1679, 1683, 1686, 1690, 1693, 1695, 1698, 1700, 1702, + 1705, 1707, 1710, 1712, 1715, 1718, 1722, 1725, 1728, 1731, + 1734, 1737, 1740, 1743, 1748, 1753, 1758, 1762, 1766, 1770, + 1773, 1778, 1781, 1784, 1788, 1791, 1794, 1797, 1799, 1802, + 1805, 1808, 1812, 1815, 1818, 1821, 1823, 1826, 1829, 1831, + 1834, 1837, 1840, 1842, 1844, 1847, 1850, 1853, 1856, 1859, + 1862, 1865, 1868, 1872, 1875, 1878, 1881, 1884, 1887, 1890, + 1893, 1896, 1899, 1902, 1905, 1908, 1911, 1914, 1917, 1920, + + 1923, 1926, 1929, 1933, 1936, 1939, 1941, 1943, 1946, 1949, + 1953, 1955, 1957, 1959, 1962, 1964, 1968, 1970, 1973, 1976, + 1980, 1984, 1987, 1990, 1993, 1996, 1998, 2001, 2004, 2007, + 2010, 2014, 2017, 2019, 2021, 2024, 2026, 2029, 2032, 2034, + 2036, 2039, 2042, 2044, 2047, 2050, 2053, 2056, 2058, 2061, + 2064, 2067, 2070, 2072, 2075, 2078, 2081, 2083, 2085, 2088, + 2090, 2092, 2095, 2098, 2101, 2103, 2106, 2109, 2113, 2116, + 2120, 2124, 2128, 2132, 2135, 2140, 2144, 2147, 2151, 2154, + 2158, 2162, 2167, 2171, 2174, 2178, 2182, 2185, 2188, 2192, + 2196, 2200, 2204, 2208, 2211, 2216, 2219, 2223, 2226, 2229, + + 2232, 2236, 2239, 2243, 2247, 2251, 2255, 2260, 2264, 2268, + 2271, 2275, 2279, 2282, 2285, 2289, 2292, 2297, 2300, 2304, + 2308, 2311, 2314, 2318, 2321, 2324, 2327, 2330, 2334, 2337, + 2340, 2343, 2346, 2349, 2352, 2355, 2358, 2361, 2364, 2367, + 2371, 2375, 2378, 2382, 2386, 2389, 2393, 2397, 2400, 2403, + 2406, 2410, 2414, 2417, 2420, 2423, 2426, 2429, 2432, 2436, + 2439, 2441, 2444, 2447, 2450, 2453, 2456, 2459, 2463, 2466, + 2468, 2471, 2474, 2477, 2477, 2478, 2479, 2480, 2481, 2482, + 2482, 2482, 2483, 2484, 2485, 2485, 2485, 2485, 2485, 2486, + 2486, 2486, 2487, 2488, 2489, 2489, 2490, 2490, 2491, 2491, + + 2491, 2492, 2492, 2492, 2492, 2493, 2494, 2494, 2494, 2495, + 2495, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, + 2496, 2497, 2498, 2499, 2499, 2499, 2499, 2499, 2499, 2499, + 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2500, 2501, 2501, + 2502, 2503, 2503, 2503, 2504, 2505, 2506, 2507, 2508, 2509, + 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, + 2520, 2520, 2521, 2521, 2521, 2521, 2521, 2522, 2523, 2523, + 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2531, 2531, + 2531, 2531, 2531, 2531, 2532, 2532, 2532, 2532, 2532, 2532, + 2532, 2533, 2534, 2535, 2537, 2539, 2540, 2540, 2541, 2541, + + 2541, 2543, 2545, 2545, 2545, 2545, 2545, 2546, 2546, 2547, + 2547, 2547, 2547, 2548, 2548, 2549, 2550, 2551, 2553, 2553, + 2553, 2555, 2557, 2557, 2557, 2558, 2560, 2562, 2564, 2565, + 2565, 2566, 2568, 2570, 2571, 2572, 2573, 2573, 2574, 2574, + 2575, 2576, 2578, 2579, 2579, 2580, 2582, 2585, 2585, 2586, + 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2594, 2594, 2594, + 2595, 2597, 2597, 2598, 2598, 2598, 2599, 2600, 2603, 2604, + 2605, 2606, 2606, 2607, 2609, 2609, 2611, 2612, 2612, 2613, + 2615, 2618, 2618, 2618, 2619, 2621, 2623, 2624, 2624, 2625, + 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, + + 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2626, + 2628, 2629, 2631, 2634, 2634, 2634, 2635, 2636, 2636, 2636, + 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, + 2637, 2637, 2637, 2639, 2642, 2645, 2647, 2649, 2652, 2653, + 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, + 2654, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2656, 2656, + 2656, 2656, 2659, 2659, 2659, 2660, 2660, 2661, 2661, 2662, + 2662, 2663, 2663, 2664, 2666, 2666, 2667, 2667, 2668, 2669, + 2671, 2671, 2671, 2672, 2672, 2672, 2672, 2672, 2673, 2673, + 2674, 2674, 2674, 2674, 2674, 2674, 2675, 2675, 2675, 2675, + + 2676, 2677, 2678, 2678, 2678, 2681, 2682, 2682, 2685, 2685, + 2685, 2690, 2692, 2693, 2697, 2698, 2702, 2702, 2702, 2702, + 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2703, 2703, + 2704, 2704, 2705, 2706, 2707, 2709, 2711, 2713, 2714, 2714, + 2715, 2715, 2716, 2717, 2718, 2719, 2720, 2722, 2724, 2725, + 2725, 2725, 2725, 2725, 2726, 2727, 2728, 2729, 2731, 2733, + 2733, 2734, 2735, 2736, 2738, 2740, 2741, 2741, 2741, 2741, + 2742, 2742, 2742, 2743, 2745, 2745, 2746, 2746, 2747, 2748, + 2749, 2750, 2750, 2751, 2753, 2753, 2754, 2756, 2756, 2757, + 2757, 2758, 2758, 2758, 2758, 2759, 2759, 2760, 2760, 2761, + + 2762, 2763, 2763, 2764, 2765, 2766, 2767, 2768, 2768, 2768, + 2769, 2770, 2770, 2771, 2772, 2774, 2776, 2778, 2779, 2779, + 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2783, + 2784, 2785, 2785, 2785, 2787, 2788, 2789, 2789, 2789, 2790, + 2790, 2790, 2790, 2790, 2790, 2792, 2794, 2795, 2795, 2795, + 2795, 2796, 2796, 2796, 2796, 2796, 2796, 2796, 2796, 2796, + 2796, 2796, 2796, 2796, 2796, 2796, 2796, 2797, 2797, 2797, + 2797, 2797, 2797, 2797, 2797, 2797, 2798, 2798, 2798, 2798, + 2798, 2798, 2798, 2798, 2798, 2798, 2800, 2800, 2802, 2803, + 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2804, + + 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2806, 2808, 2810, + 2811, 2811, 2812, 2812, 2812, 2814, 2814, 2815, 2816, 2816, + 2816, 2816, 2817, 2817, 2818, 2819, 2821, 2823, 2823, 2823, + 2825, 2825, 2825, 2827, 2828, 2828, 2828, 2830, 2831, 2831, + 2831, 2833, 2834, 2835, 2836, 2838, 2839, 2839, 2840, 2840, + 2842, 2844, 2844, 2845, 2845, 2846, 2848, 2848, 2849, 2849, + 2850, 2852, 2852, 2853, 2855, 2855, 2855, 2856, 2858, 2859, + 2861, 2862, 2863, 2865, 2867, 2869, 2870, 2871, 2872, 2874, + 2876, 2878, 2879, 2880, 2882, 2884, 2886, 2887, 2888, 2890, + 2892, 2894, 2895, 2896, 2898, 2900, 2902, 2902, 2902, 2902, + + 2902, 2903, 2904, 2904, 2905, 2906, 2907, 2908, 2909, 2909, + 2909, 2909, 2909, 2911, 2911, 2913, 2913, 2914, 2914, 2915, + 2916, 2917, 2919, 2921, 2921, 2921, 2921, 2922, 2924, 2925, + 2926, 2928, 2930, 2932, 2932, 2933, 2933, 2934, 2935, 2936, + 2937, 2938, 2938, 2939, 2939, 2940, 2941, 2942, 2943, 2944, + 2945, 2946, 2946, 2947, 2948, 2949, 2951, 2951, 2952, 2954, + 2954, 2954, 2955, 2955, 2956, 2956, 2957, 2958, 2959, 2959, + 2960, 2960, 2961, 2962, 2964, 2966, 2968, 2969, 2970, 2971, + 2973, 2973, 2973, 2974, 2975, 2977, 2978, 2980, 2981, 2982, + 2984, 2986, 2988, 2989, 2990, 2992, 2993, 2993, 2993, 2994, + + 2995, 2996, 2996, 2996, 2996, 2996, 2997, 2997, 2998, 2998, + 2998, 2999, 3001, 3003, 3004, 3005, 3006, 3008, 3008, 3008, + 3010, 3012, 3013, 3014, 3016, 3016, 3016, 3018, 3020, 3020, + 3020, 3020, 3020, 3021, 3021, 3021, 3022, 3022, 3022, 3023, + 3023, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3025, 3025, + 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, + 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, + 3027, 3027, 3027, 3027, 3028, 3028, 3028, 3029, 3029, 3029, + 3030, 3030, 3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038, + 3039, 3040, 3041, 3042, 3043, 3044, 3045, 3046, 3047, 3048, + + 3049, 3049, 3050, 3050, 3051, 3051, 3051, 3052, 3053, 3053, + 3054, 3054, 3055, 3055, 3055, 3055, 3055, 3055, 3056, 3057, + 3057, 3058, 3058, 3059, 3060, 3060, 3061, 3061, 3061, 3062, + 3062, 3063, 3063, 3064, 3064, 3065, 3066, 3066, 3067, 3067, + 3067, 3067, 3067, 3068, 3069, 3069, 3070, 3070, 3070, 3071, + 3071, 3072, 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073, + 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073, + 3073, 3074, 3075, 3075, 3076, 3076, 3076, 3076, 3076, 3076, + 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3077, 3078, + 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, + + 3079, 3079, 3080, 3080, 3080, 3080, 3080, 3081, 3081, 3081, + 3081, 3081, 3081, 3081, 3082, 3082, 3083, 3083, 3084, 3085, + 3086, 3086, 3086, 3087, 3087, 3088, 3089, 3089, 3089, 3089, + 3089, 3092, 3096, 3099, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3103, 3103, 3103, 3103, 3103, + 3103, 3103, 3103, 3103, 3104, 3105, 3106, 3107, 3107, 3107, + 3107, 3107, 3107, 3108, 3109, 3110, 3111, 3112, 3113, 3113, + 3114, 3114, 3115, 3115, 3116, 3117, 3117, 3117, 3117, 3117, + 3117, 3117, 3117, 3117, 3117, 3117, 3118, 3120, 3121, 3121, + 3122, 3122, 3123, 3123, 3124, 3124, 3125, 3126, 3126, 3126, + + 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, + 3126, 3126, 3126, 3126, 3126, 3126, 3127, 3127, 3127, 3127, + 3127, 3127, 3127, 3127, 3127, 3127, 3127, 3127, 3127, 3127, + 3127, 3127, 3127, 3128, 3128, 3128, 3128, 3128, 3128, 3128, + 3128, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, + 3129, 3129, 3130, 3130, 3130, 3130, 3130, 3131, 3131, 3132, + 3132, 3132, 3132, 3132, 3133, 3133, 3133, 3133, 3133, 3133, + 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, + 3134, 3134, 3134, 3134, 3134, 3135, 3135, 3135, 3135, 3135, + 3135, 3135, 3135, 3135, 3135, 3135, 3135, 3135, 3135, 3135, + + 3135, 3135, 3135, 3135, 3135, 3135, 3135, 3135, 3135, 3135, + 3135, 3135, 3135, 3135, 3135, 3135, 3135, 3135, 3135, 3137, + 3139, 3141, 3141, 3141, 3142, 3142, 3143, 3143, 3144, 3144, + 3144, 3145, 3146, 3147, 3147, 3148, 3148, 3148, 3149, 3150, + 3150, 3150, 3150, 3150, 3150, 3150, 3152, 3152, 3153, 3153, + 3155, 3155, 3155, 3156, 3157, 3158, 3159, 3160, 3160, 3160, + 3161, 3162, 3162, 3163, 3163, 3163, 3163, 3164, 3164, 3165, + 3166, 3166, 3167, 3168, 3168, 3169, 3169, 3170, 3170, 3171, + 3171, 3172, 3172, 3173, 3173, 3174, 3174, 3175, 3175, 3175, + 3175, 3175, 3175, 3176, 3178, 3178, 3178, 3178, 3178, 3178, + + 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, + 3178, 3178, 3178, 3178, 3178, 3178, 3179, 3180, 3181, 3182, + 3183, 3184, 3185, 3186, 3187, 3188, 3189, 3190, 3191, 3192, + 3193, 3194, 3195, 3196, 3197, 3198, 3199, 3201, 3203, 3203, + 3203, 3203, 3203, 3204, 3206, 3206, 3206, 3207, 3209, 3209, + 3209, 3209, 3209, 3210, 3210, 3210, 3210, 3210, 3210, 3211, + 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, + 3211, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, + 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, + 3212, 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3214, 3214, + + 3214, 3214, 3214, 3214, 3214, 3215, 3215, 3215, 3215, 3215, + 3215, 3215, 3215, 3215, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3217, 3218, 3219, + 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, + 3219, 3220, 3221, 3222, 3223, 3223, 3224, 3224, 3225, 3225, + 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, + 3225, 3225, 3225, 3226, 3226, 3226, 3226, 3226, 3227, 3227, + 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, + 3227, 3227, 3227, 3228, 3228, 3228, 3228, 3229, 3229, 3229, + 3230, 3230, 3231, 3231, 3232, 3232, 3232, 3233, 3233, 3234, + + 3234, 3235, 3235, 3235, 3236, 3236, 3236, 3236, 3236, 3236, + 3237, 3237, 3237, 3237, 3238, 3238, 3238, 3238, 3238, 3238, + 3238, 3238, 3238, 3238, 3239, 3239, 3240, 3240, 3241, 3241, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3243, 3243, 3243, 3244, 3244, 3244, 3244, + 3244, 3244, 3244, 3245, 3246, 3246, 3246, 3246, 3246, 3246, + 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, - 3246, 3246, 3246, 3246, 3246, 3247, 3247, 3247, 3247, 3247, - 3248, 3248, 3248, 3249, 3249, 3249, 3249, 3249, 3249, 3249, - 3249, 3249, 3249, 3250, 3250, 3250, 3250, 3251, 3251, 3251, - 3251, 3251, 3251, 3251, 3252, 3252, 3253, 3253, 3253, 3253, - 3253, 3254, 3254, 3254, 3254, 3254, 3256, 3257, 3257, 3257, - - 3257, 3257, 3257, 3257, 3257, 3258, 3258, 3258, 3258, 3258, - 3258, 3258, 3258, 3258, 3259, 3259, 3259, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 3259, 3260, 3262, 3263, 3265, 3267, - 3269, 3270, 3270, 3270, 3270, 3270, 3271, 3271, 3271, 3271, - 3272, 3272, 3272, 3272, 3272, 3272, 3273, 3273, 3274, 3275, - 3275, 3276, 3276, 3276, 3276, 3276, 3277, 3277, 3277, 3278, - 3279, 3279, 3279, 3279, 3279, 3280, 3281, 3281, 3282, 3283, - 3284, 3285, 3286, 3286, 3287, 3288, 3288, 3289, 3290, 3291, - 3291, 3293, 3294, 3294, 3294, 3295, 3295, 3295, 3296, 3296, - 3296, 3296, 3296, 3297, 3297, 3297, 3298, 3299, 3299, 3299, - - 3299, 3300, 3300, 3300, 3300, 3301, 3301, 3301, 3302, 3302, - 3303, 3303, 3303, 3303, 3304, 3305, 3305, 3306, 3307, 3308, - 3308, 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, - 3309, 3309, 3309, 3310, 3310, 3310, 3311, 3311, 3312, 3312, - 3312, 3312, 3312, 3312, 3312, 3313, 3313, 3313, 3313, 3313, - 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, - 3315, 3316, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3318, - 3318, 3318, 3318, 3319, 3319, 3319, 3319, 3319, 3319, 3319, - 3320, 3320, 3320, 3320, 3320, 3320, 3320, 3321, 3321, 3321, - 3321, 3321, 3321, 3321, 3323, 3325, 3326, 3328, 3329, 3329, - - 3329, 3330, 3330, 3331, 3331, 3331, 3331, 3331, 3332, 3332, - 3333, 3334, 3334, 3334, 3334, 3335, 3335, 3335, 3335, 3335, - 3336, 3336, 3336, 3337, 3337, 3338, 3339, 3340, 3341, 3342, - 3343, 3344, 3344, 3347, 3347, 3347, 3348, 3349, 3349, 3349, - 3349, 3350, 3350, 3351, 3352, 3352, 3353, 3354, 3354, 3355, - 3356, 3356, 3356, 3357, 3358, 3358, 3358, 3359, 3359, 3359, - 3359, 3360, 3361, 3361, 3362, 3362, 3362, 3363, 3363, 3364, - 3364, 3364, 3364, 3364, 3365, 3365, 3365, 3365, 3365, 3365, - 3365, 3365, 3365, 3365, 3365, 3365, 3366, 3367, 3367, 3367, - 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3369, 3370, 3371, - - 3371, 3371, 3371, 3371, 3371, 3372, 3373, 3374, 3375, 3375, - 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3377, - 3378, 3378, 3378, 3378, 3378, 3379, 3379, 3379, 3380, 3381, - 3381, 3381, 3381, 3383, 3384, 3384, 3384, 3384, 3384, 3385, - 3386, 3386, 3386, 3386, 3386, 3386, 3387, 3388, 3388, 3389, - 3390, 3391, 3391, 3392, 3393, 3394, 3396, 3396, 3397, 3397, - 3397, 3398, 3398, 3399, 3400, 3401, 3402, 3403, 3403, 3404, - 3404, 3404, 3405, 3405, 3406, 3407, 3407, 3407, 3407, 3407, - 3407, 3407, 3408, 3409, 3410, 3410, 3410, 3410, 3411, 3412, - 3412, 3412, 3413, 3414, 3414, 3415, 3415, 3415, 3415, 3415, - - 3415, 3415, 3416, 3417, 3417, 3417, 3418, 3419, 3419, 3421, - 3423, 3423, 3424, 3424, 3426, 3426, 3426, 3427, 3427, 3427, - 3428, 3428, 3428, 3429, 3430, 3431, 3431, 3431, 3432, 3432, - 3432, 3433, 3434, 3434, 3435, 3436, 3437, 3438, 3439, 3440, - 3441, 3442, 3443, 3444, 3444, 3445, 3445, 3446, 3446, 3447, - 3447, 3447, 3447, 3447, 3448, 3449, 3449, 3449, 3450, 3450, - 3450, 3450, 3450, 3450, 3450, 3451, 3452, 3452, 3452, 3454, - 3456, 3456, 3457, 3458, 3458, 3459, 3461, 3461, 3463, 3464, - 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3466, 3467, - 3467, 3468, 3469, 3470, 3470, 3471, 3471, 3471, 3472, 3472, - - 3472, 3473, 3474, 3474, 3474, 3474, 3474, 3474, 3475, 3475, - 3477, 3479, 3479, 3479, 3480, 3481, 3481, 3481, 3481, 3481, - 3481, 3481, 3481, 3482, 3482, 3483, 3484, 3485, 3487, 3488, - 3489, 3490, 3490, 3490, 3490, 3490, 3492, 3494, 3495, 3496, - 3497, 3497, 3498, 3500, 3501, 3501, 3502, 3502, 3503, 3504, - 3504, 3504, 3504, 3504, 3505, 3506, 3508, 3509, 3510, 3512, - 3513, 3515, 3516, 3517, 3518, 3518, 3518, 3519, 3519, 3519, - 3520, 3520, 3522, 3523, 3525, 3526, 3527, 3527, 3528, 3529, - 3529, 3530, 3531, 3533, 3534, 3536, 3538, 3540, 3542, 3543, - 3544, 3544, 3545, 3547, 3549, 3550, 3551, 3551, 3553, 3555, - - 3556, 3557, 3557, 3559, 3561, 3562, 3563, 3565, 3567, 3568, - 3570, 3572, 3574, 3576, 3578, 3580, 3582, 3584, 3584 + 3246, 3246, 3246, 3247, 3247, 3247, 3247, 3247, 3247, 3247, + + 3247, 3247, 3247, 3247, 3249, 3251, 3251, 3251, 3251, 3252, + 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3254, + 3255, 3255, 3255, 3256, 3258, 3258, 3258, 3259, 3260, 3262, + 3262, 3263, 3265, 3265, 3266, 3268, 3268, 3268, 3268, 3268, + 3268, 3269, 3269, 3270, 3271, 3271, 3271, 3271, 3271, 3271, + 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, + 3271, 3271, 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278, + 3279, 3280, 3281, 3282, 3283, 3284, 3285, 3286, 3287, 3288, + 3289, 3290, 3291, 3291, 3291, 3291, 3292, 3292, 3292, 3293, + 3293, 3294, 3294, 3295, 3295, 3295, 3295, 3296, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3297, 3297, 3297, 3298, 3298, + 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3300, 3300, 3300, + 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, + 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3301, 3301, + 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, + 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, + 3301, 3301, 3301, 3301, 3302, 3303, 3304, 3304, 3304, 3304, + 3304, 3304, 3304, 3304, 3304, 3304, 3304, 3305, 3305, 3305, + 3305, 3305, 3305, 3305, 3305, 3305, 3306, 3306, 3306, 3307, + 3307, 3308, 3308, 3309, 3309, 3309, 3310, 3310, 3311, 3311, + + 3312, 3312, 3312, 3312, 3312, 3313, 3313, 3313, 3314, 3314, + 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3315, 3315, + 3316, 3316, 3317, 3317, 3318, 3318, 3318, 3318, 3318, 3318, + 3318, 3318, 3318, 3318, 3319, 3319, 3319, 3319, 3319, 3319, + 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, + 3319, 3319, 3320, 3320, 3320, 3320, 3320, 3320, 3320, 3320, + 3320, 3321, 3321, 3321, 3321, 3322, 3322, 3323, 3323, 3323, + 3323, 3323, 3323, 3323, 3323, 3323, 3323, 3323, 3324, 3324, + 3324, 3325, 3325, 3326, 3326, 3327, 3327, 3327, 3327, 3327, + 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, + + 3328, 3328, 3328, 3329, 3329, 3329, 3329, 3329, 3329, 3329, + 3329, 3329, 3329, 3329, 3329, 3329, 3330, 3330, 3330, 3330, + 3330, 3330, 3331, 3331, 3332, 3332, 3332, 3332, 3332, 3332, + 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, + 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, + 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3333, 3334, + 3335, 3336, 3338, 3338, 3338, 3338, 3339, 3339, 3339, 3339, + 3340, 3340, 3341, 3341, 3341, 3341, 3341, 3341, 3343, 3343, + 3343, 3344, 3344, 3345, 3346, 3346, 3347, 3347, 3348, 3348, + 3348, 3348, 3349, 3349, 3349, 3350, 3350, 3350, 3350, 3350, + + 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, + 3350, 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358, + 3359, 3360, 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, + 3369, 3369, 3369, 3370, 3370, 3370, 3370, 3371, 3372, 3372, + 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3373, 3374, 3375, + 3375, 3375, 3376, 3376, 3377, 3377, 3377, 3377, 3377, 3377, + 3377, 3378, 3378, 3378, 3378, 3379, 3379, 3379, 3379, 3379, + 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3380, 3380, + 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, + 3381, 3381, 3382, 3383, 3383, 3383, 3383, 3383, 3383, 3383, + + 3384, 3384, 3384, 3384, 3384, 3384, 3385, 3385, 3386, 3387, + 3387, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3389, 3389, + 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, + 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3390, + 3390, 3390, 3390, 3391, 3391, 3392, 3392, 3392, 3392, 3392, + 3392, 3392, 3392, 3392, 3392, 3392, 3393, 3393, 3394, 3394, + 3394, 3395, 3395, 3395, 3395, 3396, 3396, 3397, 3397, 3397, + 3397, 3397, 3398, 3398, 3398, 3398, 3398, 3398, 3398, 3398, + 3398, 3398, 3398, 3398, 3398, 3398, 3398, 3398, 3399, 3400, + 3400, 3401, 3401, 3401, 3401, 3401, 3401, 3401, 3401, 3401, + + 3401, 3401, 3401, 3402, 3403, 3403, 3404, 3404, 3404, 3404, + 3404, 3404, 3404, 3405, 3405, 3405, 3405, 3405, 3405, 3405, + 3405, 3406, 3406, 3406, 3406, 3406, 3407, 3408, 3409, 3409, + 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, + 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, + 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, + 3409, 3411, 3412, 3414, 3416, 3417, 3419, 3419, 3419, 3419, + 3420, 3421, 3421, 3421, 3422, 3423, 3424, 3425, 3426, 3426, + 3426, 3426, 3426, 3426, 3426, 3426, 3427, 3427, 3428, 3429, + 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, + + 3429, 3429, 3429, 3430, 3430, 3431, 3432, 3433, 3434, 3435, + 3436, 3437, 3438, 3438, 3439, 3440, 3441, 3442, 3443, 3444, + 3445, 3446, 3447, 3447, 3448, 3448, 3448, 3448, 3448, 3449, + 3449, 3449, 3450, 3450, 3450, 3450, 3451, 3451, 3451, 3451, + 3451, 3451, 3451, 3451, 3451, 3451, 3451, 3451, 3452, 3452, + 3453, 3453, 3454, 3454, 3454, 3455, 3455, 3455, 3455, 3455, + 3455, 3455, 3456, 3456, 3456, 3456, 3456, 3457, 3457, 3457, + 3458, 3458, 3458, 3458, 3458, 3459, 3459, 3459, 3460, 3460, + 3460, 3460, 3461, 3462, 3462, 3463, 3463, 3463, 3464, 3464, + 3464, 3464, 3465, 3465, 3466, 3466, 3466, 3466, 3466, 3466, + + 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, + 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3467, 3467, 3467, + 3467, 3467, 3468, 3468, 3468, 3469, 3469, 3469, 3469, 3469, + 3469, 3469, 3469, 3469, 3469, 3470, 3470, 3470, 3470, 3470, + 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3472, 3472, 3473, + 3473, 3473, 3473, 3473, 3474, 3474, 3474, 3474, 3474, 3476, + 3477, 3477, 3477, 3477, 3477, 3477, 3477, 3477, 3478, 3478, + 3478, 3478, 3478, 3478, 3478, 3478, 3478, 3478, 3479, 3479, + 3479, 3479, 3479, 3479, 3479, 3479, 3479, 3479, 3479, 3480, + 3482, 3483, 3485, 3487, 3489, 3491, 3491, 3491, 3491, 3491, + + 3492, 3492, 3492, 3492, 3493, 3493, 3493, 3493, 3493, 3493, + 3494, 3494, 3495, 3496, 3496, 3497, 3497, 3497, 3497, 3497, + 3498, 3498, 3498, 3499, 3500, 3500, 3500, 3500, 3500, 3501, + 3502, 3502, 3503, 3504, 3505, 3506, 3507, 3507, 3508, 3509, + 3509, 3510, 3511, 3512, 3512, 3514, 3515, 3515, 3515, 3516, + 3516, 3516, 3517, 3517, 3517, 3517, 3517, 3518, 3518, 3518, + 3519, 3520, 3520, 3520, 3520, 3521, 3521, 3521, 3521, 3522, + 3522, 3522, 3523, 3523, 3524, 3524, 3524, 3524, 3525, 3526, + 3526, 3527, 3528, 3529, 3529, 3530, 3530, 3530, 3530, 3530, + 3530, 3530, 3530, 3530, 3530, 3530, 3530, 3531, 3531, 3531, + + 3532, 3532, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3534, + 3534, 3534, 3534, 3534, 3535, 3535, 3535, 3535, 3535, 3535, + 3535, 3535, 3535, 3535, 3535, 3536, 3537, 3538, 3538, 3538, + 3538, 3538, 3538, 3538, 3539, 3539, 3539, 3539, 3540, 3540, + 3540, 3540, 3540, 3540, 3540, 3541, 3541, 3541, 3541, 3541, + 3541, 3541, 3541, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3544, 3546, 3547, 3549, 3551, 3551, 3551, 3552, 3552, 3553, + 3553, 3553, 3553, 3553, 3554, 3554, 3555, 3556, 3556, 3556, + 3556, 3557, 3557, 3557, 3557, 3557, 3558, 3558, 3558, 3559, + 3559, 3560, 3561, 3562, 3563, 3564, 3565, 3566, 3566, 3569, + + 3569, 3569, 3570, 3571, 3571, 3571, 3571, 3572, 3572, 3573, + 3574, 3574, 3575, 3576, 3576, 3577, 3578, 3578, 3578, 3579, + 3580, 3580, 3580, 3581, 3581, 3581, 3581, 3582, 3583, 3583, + 3584, 3584, 3584, 3585, 3585, 3586, 3586, 3586, 3586, 3586, + 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, + 3587, 3587, 3588, 3589, 3589, 3589, 3590, 3590, 3590, 3590, + 3590, 3590, 3590, 3590, 3591, 3592, 3593, 3593, 3593, 3593, + 3593, 3593, 3594, 3595, 3596, 3597, 3597, 3597, 3597, 3597, + 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3599, 3600, 3600, + 3600, 3600, 3600, 3600, 3602, 3602, 3602, 3604, 3604, 3604, + + 3604, 3606, 3607, 3607, 3607, 3607, 3607, 3608, 3609, 3609, + 3609, 3609, 3609, 3609, 3610, 3611, 3611, 3612, 3613, 3614, + 3614, 3615, 3616, 3617, 3619, 3619, 3620, 3620, 3620, 3621, + 3621, 3622, 3623, 3624, 3625, 3626, 3626, 3627, 3627, 3627, + 3628, 3628, 3629, 3630, 3630, 3630, 3630, 3630, 3630, 3630, + 3631, 3632, 3633, 3633, 3633, 3633, 3634, 3635, 3635, 3635, + 3635, 3636, 3637, 3637, 3638, 3638, 3638, 3638, 3638, 3638, + 3638, 3639, 3640, 3640, 3640, 3640, 3641, 3642, 3642, 3644, + 3646, 3646, 3647, 3647, 3649, 3649, 3649, 3650, 3650, 3650, + 3651, 3651, 3651, 3652, 3653, 3654, 3654, 3654, 3655, 3655, + + 3655, 3656, 3657, 3657, 3658, 3659, 3660, 3661, 3662, 3663, + 3664, 3665, 3666, 3667, 3667, 3668, 3668, 3669, 3669, 3670, + 3670, 3670, 3670, 3670, 3671, 3671, 3672, 3673, 3673, 3673, + 3674, 3674, 3674, 3674, 3674, 3674, 3674, 3674, 3675, 3676, + 3676, 3676, 3678, 3680, 3680, 3681, 3682, 3682, 3683, 3685, + 3685, 3687, 3688, 3689, 3689, 3689, 3689, 3689, 3689, 3689, + 3689, 3690, 3691, 3691, 3692, 3693, 3694, 3694, 3695, 3695, + 3695, 3696, 3696, 3696, 3697, 3698, 3698, 3698, 3698, 3698, + 3698, 3699, 3699, 3701, 3703, 3703, 3703, 3704, 3705, 3705, + 3705, 3705, 3705, 3705, 3705, 3705, 3706, 3706, 3707, 3708, + + 3709, 3711, 3712, 3713, 3714, 3714, 3714, 3714, 3714, 3716, + 3718, 3719, 3720, 3721, 3721, 3722, 3724, 3725, 3725, 3726, + 3726, 3727, 3728, 3728, 3728, 3728, 3728, 3729, 3730, 3732, + 3733, 3734, 3736, 3737, 3739, 3740, 3741, 3742, 3742, 3742, + 3743, 3743, 3743, 3744, 3744, 3746, 3747, 3749, 3750, 3751, + 3751, 3752, 3753, 3753, 3754, 3755, 3757, 3758, 3760, 3762, + 3764, 3766, 3767, 3768, 3768, 3769, 3771, 3773, 3774, 3775, + 3775, 3777, 3779, 3780, 3781, 3781, 3783, 3785, 3786, 3787, + 3789, 3791, 3792, 3794, 3796, 3798, 3800, 3802, 3804, 3806, + 3808, 3808 + } ; static yyconst int yy_ec[256] = @@ -1150,11 +1195,11 @@ static yyconst int yy_ec[256] = 31, 32, 1, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 43, 44, 45, 46, 47, 48, 43, 49, 50, 51, 52, 53, 43, 54, 55, 43, - 56, 57, 58, 1, 59, 1, 60, 61, 62, 63, + 56, 57, 58, 59, 43, 1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 43, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 1, 86, 87, 1, 1, 1, 1, + 83, 84, 85, 59, 86, 87, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1173,4814 +1218,4881 @@ static yyconst int yy_ec[256] = static yyconst int yy_meta[88] = { 0, - 1, 1, 2, 3, 4, 2, 1, 5, 6, 1, - 1, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 17, 17, 17, 17, 17, 18, 1, 19, - 1, 20, 21, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 23, 24, 25, 26, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 27, 28, 29 + 1, 1, 2, 3, 4, 2, 5, 6, 7, 1, + 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 18, 18, 18, 18, 18, 19, 1, 20, + 5, 21, 22, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 24, 25, 26, 5, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 27, 28, 29 } ; -static yyconst long int yy_base[4677] = +static yyconst long int yy_base[4882] = { 0, 0, 4, 25, 0, 111, 115, 119, 139, 129, 133, 196, 0, 283, 0, 147, 151, 370, 0, 456, 461, - 466, 484, 569, 0, 656, 0, 743, 0, 504, 513, - 829, 835, 540, 863, 159, 535, 919, 1003, 868, 881, - 850, 886, 925, 950, 914, 955, 1088, 0, 1175, 0, - 962, 1261, 996, 1017, 975, 1271, 1021, 1279, 1286, 1292, - 892, 1299, 165, 499, 1052, 1312, 1039, 1065, 1317, 1321, - 1330, 1348, 1362, 1383, 1406, 1418, 1396, 1428, 1440, 1460, - 1481, 0, 1567, 1573, 1594, 1681, 1614, 1701, 1768, 1855, - 1788, 1875, 1370, 1627, 1942, 0, 2029, 2116, 2203, 2290, - - 1651, 1731, 2377, 0, 2073, 2160, 1636, 1641, 1725, 1739, - 2464, 0, 2551, 0, 2050, 2138, 1811, 1831, 1888, 1912, - 2638, 0, 1656, 1721, 2725, 0, 1801, 1897, 2221, 2225, - 2308, 2811, 2312, 2816, 2873, 2960, 2044, 2065, 3047, 3134, - 1917, 2087, 3221, 3308, 2134, 2165, 2250, 132, 3395, 3482, - 2171, 2175, 3569, 0, 3656, 0, 2258, 2335, 2349, 2820, - 2838, 2843, 2893, 2918, 3743, 0, 2246, 2923, 2980, 3067, - 2850, 2914, 3830, 0, 3917, 4004, 4091, 0, 3010, 3094, - 3152, 3184, 3000, 3080, 3087, 3172, 3177, 3241, 3268, 3328, - 3020, 3107, 4178, 4264, 3355, 3413, 4350, 4437, 4524, 4611, - - 4698, 4785, 3197, 3254, 4211, 4298, 4872, 4959, 5046, 5132, - 3261, 3341, 5218, 0, 3281, 3348, 3417, 3427, 3437, 3457, - 3502, 3514, 3935, 3939, 3522, 3527, 5305, 0, 4022, 4026, - 5392, 5479, 3276, 3363, 3368, 3445, 3537, 3542, 3949, 3957, - 5566, 0, 3450, 3532, 5653, 0, 5740, 5827, 5914, 6001, - 3977, 4217, 6088, 0, 4047, 4065, 3962, 4052, 4193, 4199, - 4321, 4407, 4240, 4303, 4384, 4469, 4483, 4556, 4570, 4643, - 4370, 4631, 4285, 4457, 4546, 4718, 4745, 4805, 6175, 0, - 15097,34016,15090,34016,34016, 1,15077,34016,15088,34016, - 34016, 2,34016,15087, 1306, 1355, 1376,34016, 3,15084, - - 986, 2281, 2991,15059,34016, 3210, 4, 8, 472,34016, - 34016,34016,34016, 0,34016,15084,34016, 150,34016, 4309, - 856, 1581, 1670,34016,15057,34016, 3471, 172,34016,15081, - 34016,34016,34016, 166, 109,15014,34016,15024,34016, 1825, - 2179,34016, 6260, 4513, 4602, 466, 4,15057, 3166, 174, - 15041, 4583,34016,34016, 4687,34016, 4819, 4824, 4732, 4739, - 4831, 4905, 4915, 4921, 4991, 4910,34016, 188, 4995, 5002, - 5006,15040, 5066, 559, 4673, 5021, 5034, 5076, 460,34016, - 0,34016, 469,34016,34016,34016, 5080,34016,15059, 1046, - 1745, 2093,34016,34016, 842, 475,34016,15058,34016,34016, - - 34016, 478, 4861, 5118, 5123, 505,34016, 4342,14986,14998, - 14990,14983,34016,15053,34016,34016, 1463, 507,15022,34016, - 15051,34016, 511,34016,34016, 0, 5085, 1467, 1587, 1835, - 15044,14994, 517,34016,34016,34016,14990, 5113, 5153, 5163, - 15021, 5169, 1845, 5411, 5423, 5427,15020, 5431, 1920,34016, - 15045,34016,34016,34016,14989,15024, 531,34016, 5104, 906, - 34016,34016, 532, 124,34016,34016,15042,34016,34016,34016, - 15022, 820, 0,34016,15040,34016,15020, 858,34016,34016, - 15038,15034, 153, 859, 507, 0, 901, 966, 0,15017, - 871,15033, 144,34016,15032, 999,34016,34016,34016,34016, - - 0, 4668, 1056,34016, 0,15011, 883,15010,14966,14965, - 1060, 916, 918,34016,15026, 1931, 2097, 2184, 952,34016, - 34016,34016,34016,34016,34016, 0,15011, 1014, 2355, 2942, - 3024, 972, 1024,34016,15024, 1337,34016,34016,15004, 1059, - 0, 852, 6308, 467, 5441, 1061, 1264,34016,15022, 4253, - 34016,34016,15002, 2950, 1277, 862, 6356, 928, 5498,34016, - 3029, 5437, 1308,34016,15020, 4418,34016,34016,15000, 1333, - 1273, 939, 5480, 5723, 5760, 1413, 1425,34016,15018, 4424, - 5109, 5512, 1431, 3048, 1832, 5756, 1435,34016,34016, 1612, - 5518, 5522, 5816,14998,14990, 5846, 3114, 3155,34016, 3289, - - 0, 0, 1621, 3374,34016, 3551, 0, 0, 1633,34016, - 15015,34016,34016, 1712,14995, 1643,14941, 5858, 5862, 5866, - 34016,14986, 5872, 3556, 5876,34016, 829,14940,14945,14938, - 34016,34016,15002,34016,34016, 1647,14989, 0,34016,15000, - 1804,34016,34016,14980, 1740, 967, 929, 502, 5936,34016, - 3981, 5961, 1741, 5915, 5984,34016,14998, 2934,34016,34016, - 14978, 1743,34016,14996,34016,34016,14975, 1802,34016,14975, - 0, 564,34016, 0, 1894,34016, 0,14990, 1083,34016, - 14978, 2047,34016,14979,34016,34016,14953, 2072, 1357, 1211, - 2241, 2089,34016,14971,34016,34016,14951, 3985, 2136,14903, - - 2249, 2140,34016,14968,34016,34016, 2177,14901, 5149, 2178, - 2782, 4780, 6210, 6021, 2253,34016,14966,34016,34016, 2260, - 14946,34016, 0, 0, 2309,14962, 1335,34016,14961, 2311, - 34016, 0, 0, 2322, 1266, 836, 0, 0, 2326,34016, - 6273,34016,14962, 5905, 5956, 6279, 2341,14935, 6288, 4071, - 34016, 6300,34016,34016,34016,14960,34016, 6306, 2352,34016, - 14959, 4502, 4677, 5805,34016,34016, 4506, 2830, 5460, 6063, - 6068, 6339, 6343, 6354,34016,14904,34016,34016,34016, 0, - 6390,34016,34016, 0, 2845,14895,14894, 2849,34016,14955, - 34016, 6414, 2851, 4589, 4593, 4682,14869,14941, 0,14934, - - 6481, 3086, 1258, 6534, 6606, 6679, 6758, 6831, 6910,14875, - 40,14865,14943, 0, 6394, 6398, 6403,14922, 6435, 4767, - 34016,14947,34016,14931,14923, 2894,14879,14878, 0, 4950, - 34016, 2896, 0, 5205, 3023, 0, 5210, 3109, 0, 6460, - 5898, 6439, 6517, 3110,14920,14876,14875, 0, 3175,14874, - 34016,14935,34016,34016, 3187,14872, 0, 0, 0, 3190, - 0, 0, 3191,34016, 1404, 1371, 0, 3239, 0, 3248, - 34016, 0, 1413, 0, 0, 3283,34016,34016, 0, 0, - 5465, 3284, 0, 5893, 3326, 0, 6522, 3365, 0, 6527, - 3366,34016,14933,34016,34016, 3448, 2872, 4776, 6540, 5173, - - 5801, 5982, 6531, 6555, 6560, 6616,14906, 6620, 6409,14929, - 3007,34016,14928, 1455, 3452, 2069,14867, 0, 0, 3451, - 0, 1433, 0, 3942, 1712, 3034, 1804, 4842,34016, 0, - 14926, 1475,34016,14925, 4025,34016, 0, 2006, 1860, 0, - 0, 3936, 6621, 0, 0, 0, 3955,34016,14864,14859, - 0,14922, 4062,34016,14921,14903, 4196,34016,14916,34016, - 3978,34016, 6629, 0, 6317,34016, 0,34016,34016, 3979, - 0, 0, 4744, 0,34016,14860,34016,34016, 4024,14914, - 34016,34016,34016, 0, 6711, 6507, 6586, 6646,34016,34016, - 34016,34016,34016,14913, 6655, 6686, 6717, 4032,34016,34016, - - 34016,14912,34016,14894, 4064,34016,14910,34016, 4066,14846, - 4891,14893, 4171,14843, 0,14905,34016,34016,34016,34016, - 14881, 6724, 4212, 958, 1334,34016, 6744, 6736,14866, 1390, - 6754, 6749, 6770,34016, 1633, 6780, 6800, 4224, 0, 6789, - 14793, 6805, 6857, 6861, 6865, 6869, 1892, 6874, 6878, 6886, - 14780, 2103, 4173,14746,14658,14708, 6885, 6936, 4311, 6949, - 4312, 6995, 6917, 4199,14692,14643, 401,14640,14638,14650, - 2760, 1861,14626,14636,14639, 4332,14642, 2227, 6957, 6974, - 1662, 4647, 6978, 6986, 6990,14673, 7004, 7021, 7025, 7032, - 7076, 7040, 7084, 7088, 7092, 7120, 7126, 7131, 7138, 7159, - - 7170, 6890, 7178, 7080,14676, 7166, 7187, 7198,34016, 7036, - 7206, 1795, 5761, 0, 7215, 7219, 7226, 7234, 7238,14630, - 14642,14634,14627, 7244, 7251,14627,14630,14621,14626, 7258, - 7264,34016, 0, 7272, 0, 7278, 7283,14687,34016,14681, - 7277, 7301, 0,14622, 7312,14664, 7316, 7320, 7324, 0, - 7328,14663, 7332, 7346, 7358, 0,14677, 7346,34016, 1875, - 4398, 7372, 4315, 4381,34016,34016, 0,14684, 1576,34016, - 34016,34016,34016,14683,14679, 1838,14678, 1902, 0, 4235, - 0, 4244,14661,34016,34016, 0,14677,34016, 2266,14676, - 14677,14674,14673, 0, 7378, 0, 4285,14655,34016,34016, - - 2016,14603,14602, 4407, 4377,14657, 4497, 7382, 0,14656, - 4378, 4930,14655, 5947, 7386, 7392,14654,14653, 4401,14652, - 6020, 7375,34016,34016,34016, 0, 3038, 4501, 2009,14591, - 2937,14602, 2078, 7203,14593, 885,14604,14583,14596,14591, - 775,14571,14581, 2849, 7401,14636,14630,34016,14546, 4758, - 6320, 2257,34016,34016, 5122, 3311, 3018, 3197, 2254, 1859, - 14500,14483, 5961, 3284,14486, 7408,34016, 7422, 7456,34016, - 7427,34016, 7463, 7467, 5759, 3488, 4952,14466,14466, 504, - 14465,14470,14468,14470,14461, 7468, 4410, 6462,14459, 5526, - 7472,14510,14465,14457, 7482,14507,34016, 7491,14499,34016, - - 7501, 7505, 7517, 0, 7531,34016,14518, 0, 0, 7537, - 34016,14517, 0, 0, 5089, 5189,14460, 7541,14495, 7545, - 7549, 7553, 0, 6941, 4457,14449,14448, 4543, 3949,14448, - 14443,14448,34016,14503, 0, 3046,14451, 7558,34016, 7562, - 7577,14494, 7526, 7608,34016, 7613, 7617, 7575, 7621,14435, - 3901, 3937,14428, 2041,14449,14444, 4365,14443,14446, 6451, - 34016,14484,34016,14437,14483, 0, 2370, 0, 0, 0, - 0,14498,34016, 2996,14497,14498,14495,14494,34016,34016, - 34016,34016,14421,14424, 5533,14479,34016,14478,34016,34016, - 34016,34016, 6040,14477, 7625, 7641,34016,34016, 6443, 3142, - - 14428, 3224, 6625, 3198,14483, 0, 0,14486,34016, 3193, - 14485,14480,14477,14476,14471, 0, 0,14470, 0, 0, - 7655, 7663,14449, 7676, 7667,14426, 7702, 7706, 7710, 0, - 7714,34016,34016,34016, 7718,34016,34016, 7732, 7736, 7748, - 7752, 7757,14397,14396,14393, 0, 6759, 0,34016,34016, - 14378,14377,34016, 5827, 5394,14370, 2118,14387,14373,14366, - 14360, 7771, 7775, 7779, 7787, 7791, 7790, 0, 0, 0, - 14423, 3335, 7861, 0, 7904,34016,14422, 7803,14422, 7930, - 34016, 7803, 5027, 7871, 3994, 4226, 7935, 7802, 4335, 5722, - 4477, 7843, 5367, 7968, 4595, 4771,34016, 7833, 7837, 7860, - - 4958, 7866,14362, 2757, 7894,14379,14374, 4972,14370,14364, - 14371,14374,14346,14416, 8038, 1554, 8117, 8196,14410, 8009, - 8017, 8029, 7087, 8021, 5479, 5872, 3003, 8064, 5978, 2799, - 6992, 3308, 3437, 2923, 3276, 8275, 4010, 3371,14421,14420, - 0, 8070,14399, 8101, 8105, 7850, 0,34016,34016,34016, - 14354,14353, 0, 7940, 0, 0, 0, 0, 7983, 0, - 0, 0, 0, 8110, 0, 0, 0, 0, 7949, 0, - 8114, 8149,14360,14359,34016,34016, 4821,14350,14349, 0, - 0,14348, 0,14411, 0, 0,14410, 0, 0, 4884, - 4905, 0, 0, 0, 0, 0, 2247, 0, 0, 0, - - 0, 0, 8154, 0, 0, 0, 0, 8159, 0, 0, - 0, 0, 8164, 0, 0, 0, 0, 8175, 0, 0, - 0,14349,14347,14343, 7898, 8074, 8180, 8187, 8191, 8196, - 8223, 8227, 8231, 8235,14386, 8239, 8243, 8251, 8255, 4337, - 14409,34016, 4222,14408,14409,14406,14405,14404, 1301,14335, - 14398, 0, 0, 0, 4656, 0, 0, 0, 4476,34016, - 5810, 4651,14403, 4658, 4978, 0,14400,34016, 4751,14399, - 14400,14396,14395, 0, 5028, 4414,14390, 0, 8253, 0, - 8255,14389, 0, 0,14318,14321, 0,14379,34016, 6311, - 14377,14378,14375, 8301,34016,14350, 0, 6549, 0, 0, - - 0,34016, 0, 8309, 0,14362, 8252, 0, 8333, 0, - 8315, 8347, 152,14364, 7292,14352, 6659,14314, 0, 2328, - 3458,14341, 8352, 8360, 8364, 8368, 8372, 8378, 8388, 8404, - 8408, 0,14342, 8414,14289,14290,14297,14288,34016,14352, - 14351, 8402, 3494, 3545, 4233, 4711,14303,14282,14282, 3257, - 14296,14287, 4517,14296,14290, 4492,14281,14286,14277,14287, - 8430, 8438, 8444,14323,34016, 0, 6650,34016,14334, 8448, - 8452, 8456,34016, 8464, 8480, 8484, 8492, 8497, 8501, 8512, - 8540, 8549, 8553, 8559, 8568, 8587, 8596, 8600, 8604, 8608, - 8637, 8644, 8648, 8653, 8657, 8533, 8686, 8690,14319,14318, - - 14317, 4710, 8694,14268,14267,14270,14282, 8698,34016,34016, - 14328,14327, 8700, 8702,34016, 8724, 0,14275, 8728, 8732, - 8738, 0, 8742, 8746, 8758, 0,34016,14325,14324, 8753, - 0, 6793,14320, 4761, 4812,14330,14329, 4552,14270,14269, - 6728,14315, 6350,14314, 6469,14259, 4961, 5132,14256,14267, - 14266, 5122,14252, 6025,14260,14260,14259,14252,14259,14255, - 14242, 4769,14245,34016,34016,14234, 4941, 1687,14234,14225, - 14229,14235,14162,14145,14141,14065,14054,14059,13978,13965, - 6740, 6897,13962,13891,13899,13888,13875, 4793,13888, 2791, - 5117, 3366,34016,13883,13873,13869,13868,13871,13879,13875, - - 3201, 4910,13862,34016, 8777, 8781, 8785, 0,34016,34016, - 13863, 8789, 8793, 8797, 0, 5446,13861,13864,13875, 6330, - 8808, 8822, 8827, 8833,13856,13865,13866,13853,13856,13867, - 13868, 4140,13850,13847,34016,13860,13849,13845,13844,13841, - 13849,13837, 8841,34016,34016, 8847,13897, 5456,13846,13847, - 13847, 5805,34016,34016,34016, 8853, 8869, 8882, 8895, 8908, - 8864, 0,13848,13846,13835,13812,13810,13799,13789,13796, - 13792,13825,13781,13779,13775, 8912, 8916, 8915,13801, 8935, - 13786, 6928, 7157, 9006, 9049, 0, 9100,13780, 6447, 8050, - 8357, 8927, 5809, 5808, 8908, 6597, 5929, 5902, 5985, 8284, - - 8902, 8940, 5992, 6016, 7016,34016, 6388, 7044, 6412, 6455, - 7412, 6508, 7484, 7496, 7569, 6314, 7908, 7944, 8039, 6533, - 8143, 8397,34016, 6615, 6661, 8518, 6327, 6667, 8563, 8613, - 34016, 6733, 6747, 6334, 6851, 6752, 8816, 8924, 8962, 8964, - 6439, 8980,13733,13733,13728,13715, 9003,13720, 9007,13722, - 13704,13706,13696, 9032,13704,13703,13687,13697, 5476, 9037, - 13678,13681,13666, 4437, 9041, 5347,13661,13652,13649,13650, - 13626,13685,34016, 9171, 1394, 6896, 3371, 5485, 5758, 4398, - 4012, 4713, 5737, 5046, 6403, 4879, 2937, 4959, 6607, 5914, - 3133, 6248, 6769, 5775, 6625, 5486, 3046, 7277, 9047, 6782, - - 4365, 5770, 6807, 6463, 6657, 9250, 9329, 5485, 9051, 9055, - 9081, 0,13633,13627, 6852,13625,13619,13609,34016,34016, - 6948, 7063,13597,13597,13586, 9085, 9090, 9094,34016, 6968, - 5885, 4835,13600,34016, 7075, 7115,34016,34016,13585,13557, - 34016,34016,13620,13617, 9079,13597,34016,34016, 7511,34016, - 34016, 9126, 0, 9130,13567,13492,13475,13463,34016,34016, - 9124,13439,13426,13378,13376,13382,13351,13335,13312,13318, - 13215,13204,13211,13201,13194,13183,13197,13187,13174, 71, - 9136,34016, 477,34016, 6264, 9155, 9172, 9176, 9212, 9205, - 9217, 9221, 9233, 9296, 9291, 9285, 9300, 9336, 9366, 9371, - - 9376, 9387, 9405,34016,34016, 798, 975, 965, 1006,34016, - 34016, 9140, 1194,34016,34016, 9309, 6910, 1318, 7301, 1322, - 1401, 1542, 1592, 8992, 1645,34016, 1643, 1664, 1728, 1755, - 1767, 2018, 7340, 2149, 2295, 2779, 2836, 6079, 2858, 3065, - 3176, 3217, 3350, 3426, 3457, 3462, 3475, 3857, 3878, 3977, - 4010, 4126, 4194, 4217, 4228, 4275, 4388, 4423, 4464, 4555, - 5876, 4566, 4674, 4699,34016, 4756, 4808, 4858, 4921, 4925, - 9075,34016, 4947, 5024, 5087, 5344, 5397, 5409, 5420, 5456, - 5470, 6238, 5467, 5476, 5693, 5708, 5738, 5894, 7297, 5905, - 5912, 5943, 7027, 9251, 9434, 5960, 5983, 5991, 6197, 6229, - - 6232, 6280, 6303, 6282, 6289, 6327, 9164, 6407,34016, 9476, - 9555,34016, 9228,34016, 9279,34016, 7310, 7307, 7346, 9341, - 7370, 9355, 9394, 9399, 7064, 9415, 9417, 9419, 7422, 9438, - 34016, 9439, 7442, 9449, 9460,34016, 7454, 7536, 7079, 7698, - 7536, 9462, 9473, 9474, 9480, 7158, 6445, 9485, 6494, 9504, - 34016, 7194, 7540, 9505,34016, 9510, 9512,34016, 9516,34016, - 9517,34016, 7700, 9518,34016, 9522,34016, 9523,34016, 7770, - 9524,34016, 6467, 9528, 9529, 7200, 9535,34016, 7785, 7372, - 9556,34016, 6484, 9562, 9567, 7788, 7820, 9581, 9583, 7847, - 9587,34016, 9589,34016, 9594,34016, 9595,34016, 9599, 6480, - - 6489, 9424, 6542, 9469, 6546, 6576, 6571, 6586, 6648, 6608, - 6624, 6629, 6681, 6737, 6748, 7069, 7602, 6756, 6763, 6825, - 9603, 6765, 6775, 6814, 6847, 6956, 6879,34016, 9634, 7572, - 6944, 6985, 9619, 7079, 9629, 7089, 7215, 7051, 7057, 7628, - 7175, 7385, 7622, 7346, 7238, 7705, 7401, 6945, 7425, 7460, - 7512, 7589, 8023, 8325, 7506, 7791, 7655, 7707, 7782, 7709, - 7511, 7728, 7887, 8074, 7677, 9608, 9713, 9792, 6899, 6905, - 7875, 6924, 6992, 7047, 9641, 9663, 7122, 7114, 7131, 8047, - 7136, 0, 8046, 7224, 7227,34016,34016, 9651, 7233, 7338, - 7339, 7348,34016, 7407,34016,34016, 7380, 9675, 7405, 7426, - - 7437, 7468, 7483, 7535, 7535, 7595, 7604, 7608, 7615, 7967, - 7621, 7615, 7659, 9680, 8114, 9684, 9695, 9714, 9746, 9757, - 9762, 9750, 9793, 9799, 9827, 9832, 9836, 9840, 9869, 9877, - 9882, 9887, 9916, 9920, 9699, 7667, 9929, 7697,34016, 7753, - 7714,34016, 7785, 0, 8264,34016, 9608, 7727, 7737, 7757, - 9725,34016, 7780, 7790, 7785, 7795, 7830, 7829, 0, 8080, - 7859, 7886, 8205, 7882, 8206, 7884, 7920, 7942, 7939, 7959, - 7968, 8263, 7962, 7970, 7988, 7991, 8018, 8031, 8028, 8057, - 8074, 8108, 8097, 8116, 8127, 8147, 8136, 8182, 8184, 8194, - 8196, 8195, 8383, 8520, 8213, 8250, 9776, 8218, 8228, 8245, - - 8240, 8261, 8254, 8267, 8273, 8283, 8301, 8301, 8319, 8328, - 8327, 8334, 8325, 8367, 8344, 8355, 8373, 8394, 9933, 9948, - 8376, 8381, 8385, 8409, 8393, 8411, 8446, 8401, 8449, 8450, - 8415, 9968, 8459, 9844, 8461, 9898, 8464, 8516, 8511, 9908, - 34016, 9975, 9980,34016, 9981,34016, 9982,34016, 8573, 9994, - 34016, 9995,34016, 9996,34016, 8592, 8467,10000,10002,34016, - 8631,10012,34016, 8477,10013,10014, 8640, 8641,10018,10019, - 8695,10027,34016,10032,34016,10033,34016,10034,34016,10046, - 10050, 8479,10051, 8770,10055, 8481,10057,10064,34016, 8496, - 10065, 8498,10066, 8500,10070,10071, 8501,10078, 8546,10082, - - 8550,10087,10088, 8552,10089,10098,34016, 8784, 8553,10102, - 10103, 8774, 8554,10109,10110,34016, 8810, 8817,10119,34016, - 10120,34016, 8839, 8556,10121, 8565,10125, 8589,10126, 8590, - 10130,10134,34016, 8553, 8560, 9959, 8562, 9963,10140,10144, - 10164, 8573, 8571, 8595, 8601, 8597, 8599, 8609, 8596, 8600, - 8597,10168,10172, 8680, 8640, 8639, 8648, 8643, 8661, 8685, - 10176, 8673, 8685, 8699, 8689, 8690,10238, 8748, 8798, 8915, - 8882,10180,10325, 8784,10184,10188, 8751, 8862, 8908, 8914, - 8931, 8905, 8995, 9095, 8955, 8928, 9000, 9001, 9125, 8863, - 10192,10210, 9136, 9183, 9096, 9131, 9042, 9192, 9124, 8949, - - 10214, 8968, 9210, 9364, 9151, 9194, 0,10212,10216,10404, - 10483, 8691, 8712,10196, 8700, 8733, 8739,10236,10271,10277, - 10282,10288, 8740, 8770, 9182, 8814, 0, 8872, 9742,34016, - 8939, 8950, 8970,34016, 9040,10301,10306, 9039, 9079, 9090, - 9125, 9155, 9163, 9181, 9186, 9183, 9203, 9188, 9222, 9232, - 10310, 9248, 9246,10314,10318,10346,10356,10360,10374,10389, - 10435,10440,10444,10451,10484,10490,10519,10523,10527,10532, - 10560,10364,10393,10540,34016, 9242, 9254, 0,10203,34016, - 9253, 9254, 9242, 9288,10221, 0, 9263, 9262, 9251,34016, - 9461,34016, 9256, 9260, 9537, 9293, 9704, 9286, 9313, 9307, - - 9309, 9315, 9322, 9710, 9343, 9334, 9349, 9723, 9336, 9343, - 9778, 9368, 9417, 9378, 9384, 9396, 9406, 9419, 9437, 9441, - 9785, 9853,34016, 9469, 9469,10479, 9485, 9473, 9473, 9481, - 9485, 9488, 9493, 9499,34016,34016, 9513, 9559, 9532, 9530, - 9542, 9599, 9534, 9540, 9554, 9591, 9565, 9566,34016, 9570, - 34016,34016, 9621,10573,10265, 9633,10369, 9620,10403,10430, - 34016, 9638,10553, 9650,10570, 9660,10571,10572, 9661,10577, - 9677,10583, 9679,10602,10604, 9683,10608, 9701, 9692,10610, - 10614,34016, 9784, 9812,10615,34016,10616,34016, 9831, 9715, - 10620, 9726,10621, 9727,10622, 9732,10626,10632,34016,10638, - - 34016, 9758,10653,34016, 9739,10659,10660,34016,10665,34016, - 9743,10666,10670,10671,34016, 9841, 9745,10672,10676,10098, - 9751,10677, 9757,10678,10683, 9761,10684, 9731, 9719, 9772, - 10690,10708,10714,10718, 9791, 9791, 9802, 9806, 9816, 9824, - 9903, 9837, 9836, 9840,10722,34016,10726, 9852, 9849, 9856, - 9861, 9872,10730, 9879,10734,10738, 9871, 9907, 9916, 9932, - 10803,10023,10003,10079,10042, 0,10890,10977,10087,10011, - 10097,10028,10140,10091,10145,10723,10202,10135,10206,10402, - 10185,10281,10181,10748,10187,10236,10752,10211,10380,10394, - 10223,10230,10756,10760,10309,10395,10369,10478,10758,10761, - - 11056,11135,11214,11293, 9938, 9932,10768,34016, 9948, 9966, - 9969,10793,34016,10799,34016,10831, 9979,10835,10157,10004, - 10470,10782,10841,34016,10092,34016,10846,10850,10866,10150, - 10870,10169,10174,10194,10879,10270,10883,10908,10306,10302, - 10912,10312,34016,10921,10927,10932,10936,10996,11008,11024, - 11013,10968,11017,11063,11091,11095,11100,11104,11111,11142, - 11045,34016,10321,10329,10371,10784,10354,10356,10386,34016, - 10380,10395,10463,10472,10381,10398,10416,10412,10439,10455, - 10453,10566,10474,10479,10504,10789,10476,10803,10480,10840, - 10484,10498,10494,10507,10525,10514,10533,10530,10548,10964, - - 10571,10565,10565,10583,10568,10577,10584,34016,10580,10583, - 10579,10629,10606,10627,10670,34016,10671,10672,10633,34016, - 11172,11054,34016,10734,11121,34016,10674,11134,11170,34016, - 11171,34016,10757,10675,11176,11181,10792,10737,11182,10741, - 11187,11198,10743,11212,10745,11214,11218,10752,11222,10776, - 11223,10782,11246,11250,34016,10789,11254,10881,11255,34016, - 11259,11260,34016,10778,10851,11264,10799,10800,10813,10809, - 10812,10811,10941,10830,10849,10862,11268,10872,11290,11294, - 11300,10873,10878,11319,11324,11328,10884,10891,10886,10893, - 11372,10961,11026,10983,11333,11459,11546,11024,11337,10995, - - 11109,11054,10984,11052,11322,11092,11355,11113,11116,11011, - 11106,11082,11118,34016,11359,11364,11398,11171,11192,11402, - 11207,11149,11212,11185,11625,11704,11406,11783,10897,11862, - 11941,10893,10901,11005,11277,10975,10976,10973,10984,11406, - 11146,11050,11382,11422,11430,11475,11059,11479,11500,11069, - 11504,11073,11508,11087,11515,11519,11097,11535,11523,11527, - 11565,11142,11577,11174,11590,11595,11583,11602,11611,11659, - 11623,11663,11667,11671,11679,11711,11739,11744,11632,11152, - 0,34016,11177,11194,11282,11203,11200,11305,11348,11219, - 11219,11226,11370,11273,11292,11371,11384,11285,11299,11308, - - 34016,11411,11312,11413,11418,11305,11350,34016,11360,34016, - 11427,11432,11369,34016,11380,11383,34016,34016,34016,11385, - 11754,11426,11702,11732,11444,11751,11454,11752,11462,11753, - 11518,11783,34016,11790,11792,34016,11814,34016,11464,11815, - 11540,11502,11820,11822,34016,11503,11824,11455, 0,11697, - 11464,11480, 0, 0,11499,11490,11828,11520,11527,34016, - 11832,11839,11603,11548,11548,11551,11845,11854,12020,11604, - 11676,11799,34016,11602,11620,12107,12194,11637,11674,34016, - 11636,11623,11888,11641,11700,11635,11658,11713,11809,11742, - 11731,11893,11897,12273,12352,11651,12431,12518,11615,11610, - - 12605, 0,34016,11688,11795,11693,11901,11909,11858, 0, - 34016,11696,11701,11942,11862,11696,11708,11714,11948,11934, - 11974,11938,11978,11845,11982,11986,11990,12002,12052,12056, - 11998,12060,11762,11740,11761,12064,12017,12021,11798,11869, - 11871,11804,11903,11908,11816,34016,11913,11841,11953,11969, - 0,11838,12012,34016,12073,12068,12046,11854,11848,11918, - 34016,12075,11857,11879,11893,11944,12152,12098,34016,11965, - 11965,12099,12100,34016,11967,12138,11979,12139,12140,11981, - 12149,12144,12027,11969,11971,34016,34016,11982, 0,12153, - 12179,11989, 0,12183, 0,11994,12213,12228,12684,12237, - - 12241,12250,12263,12268,12304,12208,12308,12295,12314,12333, - 12337,12771,12378,12384,12405,12409,12858,12413,12937,13016, - 12071,13103,12139,13190,13277,13364,13451,13538, 0,12002, - 12019,12020, 0,34016,12272,12091,12018,12094, 0, 0, - 12359,12388,12026,12418,12055,12431,12438,12134,12457,12468, - 12624,12636,12472,12644,12640,34016,12077,12476, 0,12232, - 12256, 0,12257,12283,12299,12319,34016,12329,34016,12097, - 12090,12100,12105,34016,12720,12158,12364,12394,12159,12396, - 12400,34016,34016,34016,12216,12158,12174,34016,34016, 0, - 12244,12485,34016,12186,13617,12271,12335,12283,12407,12348, - - 12265,12238,12637,13704,12410,12244,12639,12445,13783,13862, - 12269,13949,12330,12307,12469,14036,14123,12261,12276,12498, - 12443,12282, 0,12509,12672,12273,12721,12676,12284,12279, - 12680,34016,12351,12732,12715,12807,12791,34016, 0,12503, - 34016,12504,12650,12694,12334,12360,12816,12727,34016,12406, - 12802,12747,12385,34016,34016,12462,12404,14210,12653,12611, - 12811,12631,12473,12669,12463,12825,12890,12635,14289,14368, - 12479,34016, 0,12726, 0,34016,12484,34016,12491,12657, - 12433,12447,12684,12451,12555,12596,12894,12901,12920,12963, - 12914,12755,14455, 0,12701,12684,12817,12763,12929,12933, - - 12708,12714,12861,12744,12968,12863,12750,34016,12972,12760, - 12837,14542,12717,34016,12838, 0,12673,14629, 0,12976, - 12685,12980,12996,13017,13006,13023,13010, 0,34016,13051, - 34016,12831,12920,12802,12834,14716,12889,12750,12833,34016, - 0,12822,34016,34016,13055,13059,12755,13063,13067,12835, - 12935,13071,12927,14803,14890,12834,14977,15064,12836,12798, - 12925,12864,12992,34016,13208,13212,13221,12976,13076,34016, - 13081,15150,15237,13026,12854,13016,13225,13229,13251,13030, - 34016,34016, 0,15324, 0,12927,13018,12931,12892,13005, - 13011,12917,13180,13003,12970,13193,13188,13019,13195,13029, - - 0,13382,13043,13181,13032,34016,13045,13354,13109,13177, - 13355,13160,13367,13166, 0,13167,13231,34016,15410,15439, - 15468,15497,15526,15555,15584,15613,15642,15671,15700,15729, - 15758,15787,15816,15845,15874,15903,15932,15961,15990,16019, - 16048,16077,16106,16135,16164,16193,16222,16251,16280,16309, - 16338,16367,16396,16425,16454,16483,16512,16541,16570,16599, - 16628,16657,16686,16715,16744,16773,16802,16831,16860,16889, - 16918,16947,16976,17005,17034,17063,17092,17121,17150,17179, - 17208,17237,17266,17295,17324,17353,17382,17411,17440,17469, - 17498,17527,17556,17585,17614,17643,17672,17701,17730,17759, - - 17788,13241,17816,17841,13242,17866,17894,17920,17946,13378, - 17974,17999,18024,18049,13248,18075,18104,18133,18162,18190, - 18215,18240,18265,18291,18320,18349,18378,18407,18436,18465, - 18494,13381,18523,18552,18581,13384,18610,18639,18667,18692, - 18717,18743,18761,18787,18805,18830,18855,13399,13392,13409, - 18881,18910,13412,18939,18968,18997,19026,19055,19073,19099, - 19128,19157,19175,19201,19219,19244,19269,19294,19319,13419, - 19345,19374,13401,13632,19392,19407,19428,19452,19481,19497, - 19522,19547,19573,19602,19631,19660,19689,19718,19747,19776, - 19800,19821,19847,19865,19891,19909,19924,19945,19974,20003, - - 13422,20032,20061,20090,20119,20148,20177,20206,20235,20264, - 20293,20321,20346,20372,20401,20430,20448,20474,20503,20532, - 20561,13630,20590,20619,20635,20661,20685,20709,20727,20753, - 20771,13631,20797,20826,20855,20884,20913,20942,20971,21000, - 21029,21058,21087,21116,13633,13651,21144,21172,21197,21222, - 13644,21247,21275,21300,21325,21351,21377,21405,21430,21458, - 21483,21508,21533,21561,21586,21611,13645,21637,21666,21695, - 21724,21753,21781,21809,21834,13658,21859,21887,21912,13659, - 21938,21967,21996,22025,22054,22083,22112,22141,22170,13661, - 22199,22228,22257,22286,13669,22315,22344,22372,22397,22425, - - 22450,13672,22476,22494,22520,22538,22563,22591,22616,13675, - 13721,13722,13737,22642,22671,13723,22700,22729,22758,22787, - 22816,22845,22873,22899,22917,22943,22972,23001,23019,23045, - 23063,23088,23113,23138,23166,23191,13724,23216,13747,13749, - 23242,23271,23295,13225,13389,13762,23313,23328,23343,13368, - 23358,23373,23401,23422,23446,23475,23491,23516,23544,23569, - 13755,23595,23624,23653,23682,23711,23740,23769,23798,23822, - 23843,23869,23887,23913,23931,23946,23967,23996,24025,13761, - 24054,24083,24112,24141,24170,24199,24228,24257,24286,24315, - 24344,24372,24400,24425,13796,24451,24480,24509,24527,24553, - - 24582,24611,24640,13795,24669,24698,24714,24740,24764,24788, - 24806,24832,24850,13797,24876,24905,24934,24963,24992,25021, - 25050,25079,25108,13798,25136,25164,25189,25214,25239,25267, - 25292,13808,25317,25342,25368,25397,25425,25453,25478,25503, - 25528,25556,25581,25606,25632,25660,25688,25713,13809,25738, - 25766,25791,13810,25817,25846,25875,25904,25932,25960,25985, - 13811,26010,26038,26063,13821,26089,26118,26146,26171,26196, - 26224,26249,13822,13824,26275,26299,13832,26317,26332,13390, - 26353,26382,26411,26440,26468,26483,26501,26522,26550,26578, - 26603,13834,26629,26657,26685,26710,13851,26736,26752,26777, - - 13840,26805,26830,26855,26881,26910,26939,26967,26992,27018, - 13411,27042,27071,27100,27129,27158,27187,27216,27245,27274, - 27303,27332,27361,27390,27419,27448,27477,27506,27535,27564, - 27593,27622,27651,27680,27704,27722,27743,27767,27796,27825, - 27841,27866,27891,27917,27946,27975,28004,28033,28062,28090, - 28116,28140,28169,28198,28227,28256,28285,28314,28343,28372, - 28401,28430,28459,28488,28517,28546,28575,28604,28633,28662, - 28691,28720,28749,28778,28807,28836,28865,28894,28923,28952, - 28981,29010,29039,29068,29097,29126,29155,29184,29213,29242, - 29266,29284,29310,29334,29358,29382,29406,29430,29459,29488, - - 29504,29529,29555,29584,29613,29642,29671,29700,29724,29753, - 29782,29811,29840,29869,29898,29927,29956,29985,30014,30043, - 30072,30101,30130,30159,30188,30217,30246,30275,30304,30333, - 30362,30391,30420,30449,30478,30507,30536,30565,30589,30607, - 30633,30662,30691,30715,30739,30763,30787,30816,30845,30874, - 30902,30928,30957,30986,31010,31039,31068,31097,31126,31155, - 31184,31213,31242,31271,31300,31329,31358,31387,31416,31445, - 31474,31503,31527,31545,31571,31595,31619,31643,31667,31691, - 31720,31749,31778,31806,31831,31857,31886,31915,31939,31968, - 31997,32026,32055,32084,32113,32142,32171,32200,32229,32258, - - 13391,32287,32316,32340,32358,32379,32403,32427,32456,32485, - 32514,32542,13677,13852,32567,32593,32622,32651,32675,32704, - 32733,32762,32791,32820,32849,13877,32878,13606,32907,32931, - 32959,32974,32995,33019,33048,33076,33102,33131,33160,13729, - 13874,13875,33188,33214,33243,33272,33301,33325,33354,33383, - 33412,13890,33441,13901,33465,33483,33498,33519,33543,33571, - 33596,33622,13888,33650,33676,33705,33729,33758,33787,33815, - 33841,33870,33899,33928,33957,33986 + 466, 484, 569, 0, 656, 0, 743, 0, 159, 504, + 829, 835, 513, 540, 518, 545, 919, 1003, 857, 863, + 849, 870, 877, 898, 908, 913, 1088, 0, 1175, 0, + 931, 965, 1261, 1268, 951, 955, 1275, 1282, 989, 1290, + 998, 1009, 165, 169, 1023, 1043, 1031, 1052, 1295, 1300, + 1056, 1305, 1339, 1346, 1385, 1395, 1390, 1400, 1424, 1429, + 1450, 0, 1536, 1542, 1563, 1650, 1583, 1670, 1737, 1824, + 1757, 1844, 1310, 1361, 1911, 0, 1998, 2085, 2172, 2259, + + 1621, 1625, 2346, 0, 2042, 2129, 1596, 1603, 1697, 1709, + 2433, 0, 2520, 0, 2019, 2107, 1770, 1795, 1857, 1882, + 2607, 0, 1607, 1683, 2694, 0, 1783, 1864, 2190, 2194, + 2277, 2780, 2281, 2785, 2842, 2929, 2013, 2034, 3016, 3103, + 1886, 2056, 3190, 3277, 2103, 2134, 2219, 439, 3364, 3451, + 2144, 2215, 3538, 0, 3625, 0, 2307, 2321, 2789, 2817, + 2812, 2862, 2876, 2900, 3712, 0, 2807, 2891, 2949, 3036, + 3799, 3886, 3973, 172, 4060, 4147, 4234, 0, 2979, 3063, + 3121, 3153, 4321, 0, 4408, 0, 4495, 0, 3210, 3297, + 2299, 2303, 4582, 4668, 3237, 3324, 4754, 4841, 4928, 5015, + + 5102, 5189, 2969, 2973, 4615, 4702, 5276, 5363, 5450, 5536, + 3050, 3056, 5622, 0, 3143, 3223, 3230, 3250, 3310, 3317, + 3337, 3384, 3411, 3469, 3396, 3404, 5709, 0, 3473, 3819, + 5796, 5883, 3139, 3163, 3422, 3426, 3483, 3491, 3511, 3839, + 5970, 0, 3496, 3832, 6057, 0, 6144, 6231, 6318, 6405, + 3844, 3857, 6492, 0, 3918, 3925, 3862, 3931, 4078, 4082, + 4118, 4597, 3945, 4092, 4179, 4186, 4208, 4621, 4123, 4165, + 4707, 4786, 4873, 4960, 4625, 4774, 4630, 4712, 4859, 5035, + 4863, 5122, 6579, 0, 5225, 5323, 4812, 4975, 4817, 4904, + 5056, 5077,15894,34204,15891,34204,34204, 1,15878,34204, + + 15889,34204,34204, 2,34204,15888, 1353, 2148, 4168,34204, + 3, 6, 1778, 2250, 2882,15861,34204, 2963, 9, 559, + 472,34204,34204,34204,34204, 0,34204,15886,34204, 166, + 34204, 3005, 842, 1324, 1717,34204,15859,34204, 3094, 10, + 34204,15884,34204,34204,34204, 168, 116,15817,34204,15827, + 34204, 4603, 4687,34204, 6664, 3124, 4192, 829, 102,15867, + 4948, 460,15854, 5049,34204,34204, 4885,34204, 5141, 5178, + 5145, 5091, 5352, 5310, 5399, 5395, 5411, 5231,34204, 891, + 4660, 5006, 5265,15853, 5315, 1081, 5220, 5252, 5469, 5481, + 469,34204, 0, 478,34204,34204,34204, 5489,34204,15878, + + 1890, 2062, 3167,34204,34204, 1330, 505,34204,15877,34204, + 34204,34204, 508, 5439, 5493, 5522, 532,34204, 4746,15805, + 15817,15809,15802,34204,15872,34204,34204, 1628, 820,15841, + 34204,15866,34204, 839,34204,34204, 0, 5832, 1443, 1550, + 1556,15859,15809, 922,34204,34204,34204,15805, 5517, 5528, + 5555,15836, 5571, 1728, 5575, 5582, 5815,15835, 5843, 1804, + 0, 6191,34204, 0,34204,15805, 925,34204,34204, 5508, + 955, 0,34204, 933, 124,34204,34204,15859,34204,34204, + 34204,15839, 961, 0,15857,34204,34204,34204,15856,15852, + 153, 971, 496, 0, 536, 870, 0,15835, 980,15851, + + 144,34204,15850, 1059,34204,34204,34204,34204, 0, 5854, + 1037,34204, 0,15832, 999,15831,15787,15786, 1066, 1002, + 1046,34204,15847, 1814, 2066, 2153, 1272,34204,34204,34204, + 34204,34204,34204, 0,15832, 1408, 2327, 2238, 3256, 1285, + 1292,34204,15845, 3150,34204,34204,15825, 1301, 0, 111, + 6712, 809, 5903, 2218, 1352,34204,15839, 3907,34204,34204, + 15819, 2919, 1362, 463, 6760, 875, 6163,34204, 2993, 5858, + 1392,34204,15837, 5904,34204,34204,15817, 1398, 1307, 964, + 5867, 6234, 6250, 3331, 1402,34204,15835, 4942, 5945, 6177, + 1419, 2843, 3200, 6251, 1420,34204,34204, 1421, 6182, 6186, + + 6222,15815,15807, 6264, 2998, 3084,34204, 3176, 0, 0, + 1581, 3430,34204, 3434, 0,15802, 1694, 943,34204,15830, + 34204,34204, 1689,15810, 1594,15756, 6275, 6337, 6350,34204, + 15794, 6354, 3517, 5060,34204, 2056,15745,15750,15737,34204, + 34204,15807,34204,34204, 1668,15794, 0,34204,15805, 1713, + 34204,34204,15785, 1854, 1007, 866, 426, 6365,34204, 3865, + 6424, 1855, 6391, 6614,34204,15803, 3047,34204,34204,15783, + 1858,34204,15801,34204,34204,15781, 1883,34204,15781, 0, + 510,34204, 0, 1884,34204, 0,15796, 1074,34204,15795, + 2016,34204,15796,34204,34204,15776, 2058, 3812, 1210, 1886, + + 2105,34204,15794,34204,34204,15774, 3951, 2109,15726, 2210, + 2126,34204,15791,34204,34204, 2145,15724, 6677, 2146, 3457, + 6643, 6689, 6683, 2147,34204,15789,34204,34204, 2217,15769, + 34204, 0, 0, 2229,15785, 1547,34204,15784, 3060,34204, + 0, 0, 2278, 933, 1549, 0, 0, 2279,34204, 6791, + 34204,15785, 6753, 6798, 6802, 2781,15758, 6839, 3964,34204, + 6843,34204,34204,34204,15779,34204, 6847, 2808,34204,15778, + 5162, 5428, 5601,34204,34204, 4129, 2818, 5951, 6203, 6384, + 6470, 6358, 6758,34204,15723,34204,34204, 0, 6852,34204, + 34204, 0, 2868,15714,15713, 3062,34204,15774,34204, 6899, + + 3229, 0, 4137, 4222, 4732,15688,15760, 0,15753, 6849, + 3328, 6864, 1616, 6976, 7048, 7121, 7200, 7273,15694, 1190, + 15684, 6859, 3508, 6870, 3335,15762, 0, 6890, 6907, 6911, + 15741, 6919, 4736,34204,15766,34204,15753,15745, 3248,15701, + 15700,34204, 3398, 7354, 7435, 7516, 0, 5155, 5002, 5297, + 6218, 3425,15742,15698,15697, 0, 3476,15696,34204,15751, + 34204,34204, 3512,15688, 0, 0, 0, 3513, 0, 0, + 3817,34204, 90, 1743, 0, 3858, 0, 3905,34204, 0, + 886, 0, 0, 3916,34204,34204, 0, 0, 4998, 4088, + 0, 5260, 4108, 0, 5344, 4198, 0, 5609, 4201,34204, + + 15749,34204,34204, 4575, 1568, 4741, 5863, 4831, 4918, 5083, + 6982, 6925, 6988, 7002,15722, 7058, 5210,15745, 2915,34204, + 15744, 848, 4600, 926,15683, 0, 0, 4627, 0, 1811, + 0, 4629, 1689, 1856, 2204, 6376,34204, 0,15741, 2049, + 34204,15740, 4777,34204, 0, 2024, 1745, 0, 0, 5350, + 7066, 0, 0, 0, 4637,34204,15679,15663, 0,15726, + 2325,34204,15719,15701, 4951,34204,15719,34204, 4781,34204, + 7062, 0, 6698,34204, 0,34204,34204, 4787, 0, 0, + 7081, 0,34204,15663,34204,34204, 4802,15717,34204,34204, + 34204, 0, 4891,34204, 0,15697, 4808, 0, 2244,34204, + + 0, 4955, 0, 7153, 5827, 6443, 6474,34204, 6806, 4972, + 34204,34204,34204,15715, 6996, 7028, 7066, 4973,34204,34204, + 34204,15714,34204,15696, 5041,34204,15712,34204, 5051,15648, + 6706, 4082, 5059,15647, 0,34204,15709, 7159, 7166, 7178, + 34204,15653,34204, 7185, 5062, 7192,34204,34204,15707,34204, + 34204,34204,15687, 5156, 0, 0, 7213,34204, 0,34204, + 15650,34204,34204, 5228, 0, 7227,34204, 0,34204,15649, + 5251,34204,34204,15703,34204,34204,34204,34204,15690, 7197, + 5296, 1354, 958,34204,15699, 7219, 7238,15674, 1722, 7245, + 7280, 7311,34204, 1786, 7128, 7315, 3053, 0, 7319,15673, + + 7330, 7233, 7323, 7349, 7373, 2226, 7386, 7390, 7394,15672, + 2281, 5317,15638,15618,15680, 7402, 7250, 5390, 7399, 5397, + 7601, 7427, 2802,15664,15621, 421,15618,15616,15628, 2237, + 2051,15604,15614,15617, 3088,15620, 2814, 7432, 7454, 1377, + 5497, 7469, 7473, 7480,15651, 7508, 7512, 7548, 7554, 7558, + 7589, 7609, 7595, 7638, 7646, 7680, 7684, 7688, 7693, 7697, + 7484, 7725, 7501,15654, 7630, 7729, 7734,34204, 7642, 7738, + 1764, 5919, 0, 7742, 7766, 7771, 7775, 7779,15608,15620, + 15612,15605, 7783, 7787,15605,15608,15599,15604, 7792, 7805, + 34204, 0, 7810, 0, 7821, 7829,15665,34204,15654, 7816, + + 7840, 0,15595, 7844,15637, 7853, 7857, 7861, 0, 7865, + 15636, 7870, 7874, 7883, 0, 0, 7895, 0,15650, 7887, + 1805, 4656, 7901, 5414, 3439, 0,34204,34204,15657, 563, + 34204,34204,34204,34204,15656,15655, 1333,15653, 2037, 0, + 5422, 0, 3079,15636,34204,34204, 0,15652,34204, 2335, + 15640,15641,15566,15553, 0, 7915, 0, 3945,15535,34204, + 34204, 2767,15411,15398, 4898, 5575,15453, 4979, 7920, 0, + 15446, 5823, 6437,15445, 6766, 7929, 7924,15444,15443, 5857, + 15442, 6252, 7921,34204,34204,34204, 0, 2916, 5074, 2972, + 15381, 2906,15392, 2224, 6327,15383, 1311,15394,15373,15392, + + 15387, 2721,15367,15377, 3002, 7945, 6946,15427,34204, 4699, + 6954,34204, 5835, 6901, 1790,34204,34204, 5843, 3407, 3187, + 3762, 3068, 2010,15387,15382, 6237, 3790,15385, 8000,34204, + 7938, 7971,34204, 7950,34204, 7959, 8004,34204, 7493, 6249, + 4060, 5540,15371,15371, 3336,15370,15375,15373,15375,15366, + 8008, 7085, 7201,15360, 6463, 8022,15411,15366,15358, 8009, + 15408,34204, 8031,15400,34204, 8041, 8045, 8049, 0, 8057, + 34204,15419, 0, 0, 8071,34204,15418,15393,34204,15392, + 15415, 6369, 6681,15358, 8075,15393, 8079, 8083, 8087, 0, + 8064, 3906,15347,15346, 4179, 3415,15346,15341,15346,34204, + + 15401, 0, 2931,15349, 8094,34204, 8113, 8117,15392, 8079, + 8158,34204, 8126, 8164, 8118, 8184,15333, 3763, 4051,15323, + 2797,15344,15339, 5898,15338,15341, 7334,34204,15379,34204, + 15244,15289, 0, 3173, 0, 0, 0, 0,15292,34204, + 3357,15291,15286,15283,15282,34204,34204,34204,34204,15209, + 15212, 6715,15267,34204,15266,34204,34204,34204,34204, 6963, + 15265, 8198, 8202,34204,34204, 6974, 3361,15216, 2828, 7343, + 2992,15271, 0, 0,15274,34204, 3961,15273,15274,15271, + 15270,15265, 0, 0,15264, 0, 0, 8206, 8220,15243, + 8227, 8232,15242, 8253, 8258, 8262, 0, 8266,34204,34204, + + 34204, 8270,34204,34204, 8284, 8288, 8300, 8304, 8309,15213, + 15212,15209, 0, 8324, 0,34204,34204,15194,15193,34204, + 7402, 7113,15186, 1617,15199,15185,15178,15172, 0, 8328, + 8332, 8338, 8343, 8347, 8353, 8351, 0, 0, 0,15235, + 4675, 8363, 8365, 0,34204,15234, 8380, 8404,15234, 8458, + 34204, 8360, 7113, 8402, 3780, 3835, 8425, 8411, 4814, 6406, + 4841, 7964, 8316, 8490, 5006, 5096,34204, 8399, 8366, 8481, + 7284, 8509,15174, 2892, 8539,34204, 6625,15187, 7303,15183, + 15177,15184,15187,15159,15230, 8599, 2985, 8678,15224, 8566, + 8554, 8574, 7523, 8592, 6273, 5275, 3146, 8543,15223, 6975, + + 925, 7521, 1523, 484, 2125, 4795,15168,15163,15176, 8646, + 7651,34204,15218, 5927, 7747,15230,15223, 0, 8654,15202, + 8665, 8685, 8579, 0,34204,34204,34204,15157,15156,34204, + 15213, 3223, 8759, 8705,15212, 3282, 8840, 8726,15189, 3290, + 8921, 8817, 0, 8477, 0, 8584, 8674,15138,15137,34204, + 34204, 5104,15128,15127, 0, 0,15126, 0,15189, 0, + 0,15188, 0, 0, 5258, 5253, 0, 0, 0, 0, + 0, 3323, 0, 0, 0, 0, 0, 8791, 0, 0, + 0, 0, 8796, 0, 0, 0, 0, 8801, 0, 0, + 0, 0, 8806, 0, 0, 0,15127,15125,15121, 8724, + + 8745, 8750, 8817, 8836, 8860, 8875, 8879, 8883, 8887,15164, + 8897, 8902, 8913, 8908, 3869,15187,34204, 6159,15186,15187, + 15184,15183,15182, 1546,15113,15176, 0, 0, 0, 4219, + 0, 0, 0, 4801,34204, 6209, 5166,15181, 5432, 5868, + 0,15178,34204, 4681,15176,15177,15174,15173, 0, 5518, + 3196,15168, 0, 7540, 0, 7662,15167, 0, 0,15106, + 15110, 0,15168,34204, 6713,15167,15168,15165, 8917,34204, + 15140, 0, 8100, 0, 0, 0,34204, 0, 8942, 0, + 15154, 8945, 0, 6884, 0,34204, 0, 0, 5238, 0, + 0, 0, 0, 8983, 0, 8956, 8969, 5943, 4186, 4775, + + 8989, 4590,15156, 7518,15144, 7097,15106, 0,15150, 8987, + 34204,34204,34204,34204, 0, 9012, 0,15149, 9006, 0, + 0, 0, 9031, 0,15148, 9023, 0, 0, 4940, 5484, + 15130, 9037, 9047, 9018, 9051, 9055, 9063, 9067, 9083, 9093, + 0,15131, 9097,15078,15079,15086,15077,34204,15141,15140, + 9096, 5077, 5509, 5335, 6157,15092,15072,15071, 3254,15085, + 15076, 6415,15085,15069, 4019,15059,15064,15054,15064, 9109, + 9101, 9127,15100,34204, 0, 6727,34204,15111, 9131, 9135, + 9139,34204, 9143, 9148, 9163, 9176, 9181, 9193, 9209, 9225, + 9229, 9246, 9237, 9257, 9265, 9274, 9278, 9285, 9293, 9321, + + 9325, 9333, 9356, 9363, 9197, 9367, 9371,15094,15093,15092, + 6243, 9314,15044,15043,15046,15058, 9375,34204,34204,15104, + 15103, 9381, 9382,34204, 9405, 0,15051, 9409, 9413, 9417, + 0, 9421, 9425, 9429, 0,34204,15101,15100, 9432,15096, + 5381, 6279,15105,15104, 3335,15045,15044, 7413,15090, 6934, + 15089, 6940,15034, 4647, 6699,15031,15042,15041, 5526,15027, + 5562,15035,15035,15035,15028,15034,15030,15027, 4152,15031, + 34204,34204,15019, 5810, 5245,15019,15010,15013,15018,15015, + 15010,15006,15002,15003,15008,14999,14997, 7437, 7133,34204, + 7563,14994,14978,14986,14985,14972, 5191,14989, 5504, 6269, + + 3313,34204,14984,14904,14888,14887, 9456,14884,14892,14888, + 4760, 6718,14875,34204, 9460, 9464, 9468, 0,34204,14920, + 14875, 9473, 9477, 9481, 0, 6191,14873,14876,14888, 7213, + 9494, 9509, 9513, 9517,14869,14878,14860,14832,14834,14829, + 14830, 5531,14801,14798,34204,14739,14717,14713,14642,14625, + 14634,14615, 9534,34204,34204, 9549,14676, 3425,14625,14615, + 14613, 5782,34204,34204,34204, 9553, 9572, 9579, 9558, 9584, + 9605, 0,14613,14611,14580,14578,14578,14558,14539,14546, + 14532,14558,14499,14489,14480, 9610, 9614, 9612,14520, 9632, + 14516, 7360, 7863, 9474, 9644, 0, 9711,14510, 7299, 7985, + + 8111, 9630, 6267, 6320, 9604, 7796, 6682, 4581, 6708, 8441, + 9631, 9629, 6835, 6962, 8103,34204, 6982, 8190, 7047, 7113, + 8279, 7337, 8561, 8570, 8598, 4834, 8603, 8634, 8640, 7410, + 8678, 8712,34204, 7429, 7471, 8740, 4919, 7558, 8756, 8975, + 34204, 7600, 7692, 5311, 8648, 7759, 9031, 9076, 9158, 9204, + 5766, 9619,14456,14445,14440,14420, 9627,14431, 9644,14428, + 14365,14344,14330, 9681,14333,14333,14311,14319, 7229, 9708, + 14292,14297,14291,14277,14289, 6824, 9712, 6108,14273,14249, + 14246,14247,14246,14299,34204, 9782, 2893, 7505, 5166, 5802, + 6854, 3156, 6371, 3297, 6324, 7387, 6353, 5189, 2778, 5023, + + 6727, 6848, 4978, 6944, 8390, 6906, 7005, 6198, 6412, 5839, + 7881, 9737, 7591, 3119, 6374, 7059, 6661, 6899, 9861, 9940, + 6386, 7797, 8999,14286, 9741, 9745, 9718, 0,14242,14228, + 14251,14249,14247, 7540,14194,14191,14190,34204,34204, 7765, + 7909,14173,14176,14165, 9749, 9755, 9759,34204, 8452, 6937, + 5406,14164,34204, 7994, 8030,34204,34204,14152,14126,34204, + 34204,14105,14104, 9762, 6426, 7077,14074, 162,34204,34204, + 8213,34204,34204, 460, 876, 9767,34204, 896, 1008, 9798, + 34204, 1272, 1311, 9818,34204, 9809, 0, 9791, 1347, 1653, + 1696, 1827,34204,34204, 9825, 1996, 2003, 1973, 2147, 2255, + + 2272, 2862, 3130, 3160, 3231, 3326, 3342, 3446, 3447, 3784, + 3817, 3858, 3884, 4034, 9813,34204,34204, 7178, 9829, 9862, + 9894, 9899, 9904, 9908, 9947, 9978, 9982, 9987, 9998,10015, + 10026,10031,10036,10044,10064,10072,34204,34204, 4052, 4074, + 4085, 4130,34204,34204, 9917, 4153,34204,34204,10096, 7198, + 4614, 8107, 4590, 4632, 4651, 4788, 9308, 4839,34204, 4874, + 4910, 4975, 5001, 5052, 5073, 7965, 5082, 5338, 5357, 5383, + 7111, 5400, 5425, 5490, 5750, 5771, 5826, 5857, 5874, 5869, + 5873, 5889, 6098, 6144, 6246, 6302, 6337, 6423, 6606, 6632, + 6653, 6780, 6722, 7198, 6728, 6762, 6771,34204, 6807, 6888, + + 6890, 6900, 6911, 9350,34204, 6942, 6978, 6988, 6997, 7010, + 7026, 7021, 7043, 7061, 7209, 7117, 7169, 7180, 7198, 7239, + 7247, 8102, 7274, 7265, 7279, 7658, 9941,10101, 7282, 7291, + 7295, 7311, 7351, 7351, 7353, 7381, 7362, 7414, 7430, 7535, + 34204,10143,10222,34204, 9351,34204, 9500,34204, 8176, 8168, + 8260, 9768, 8252, 9824, 9973, 9993, 8065,10054,10059,10078, + 8328,10079,34204,10109, 8320,10111,10129,34204, 8351, 8382, + 8076,10098, 8405,10141,10142,10147,10152, 8428, 7468,10172, + 7576,10174,34204, 8514, 8492,10179,34204,10180,10184,34204, + 10185,34204,10186,34204, 8560,10190,34204,10191,34204,10192, + + 34204, 8573,10196,34204, 7470,10202,10223, 8576,10229,34204, + 8674, 8597,10234,34204, 7488,10248,10250, 8688, 8713,10254, + 10256, 8783,10261,34204,10262,34204,10266,34204,10267,34204, + 10268, 7465, 7488, 9857, 7498,10133, 7506, 7507, 7504, 7531, + 7643, 7554, 7550, 7564, 7570, 7597, 7602, 7643, 7651, 8923, + 7633,10272, 7656, 7675, 7742, 9868, 7687, 7743, 7763, 7784, + 7995, 7782,34204,10341, 7870, 7872, 7998,10286, 8081,10298, + 8076, 8200, 8703, 8705, 8117, 7874, 8276, 8877, 8719, 8156, + 7917, 8391, 8208, 7894, 8259, 8761, 8399, 8794, 8874, 9873, + 8386,10307, 8532, 8398, 8496, 8535, 8748, 8414, 8092, 8914, + + 9375, 8823,10287,10420,10499, 7815, 7845, 8796, 7957, 7960, + 7969,10320,10325, 8041, 8050, 8066, 9013, 8093, 0, 8479, + 8216, 8233,34204,34204,10357, 8271,34204,34204,34204,10363, + 34204,34204,10377,34204,34204,10382, 8239, 8256, 8257, 8279, + 34204, 8399,34204,34204, 8358,10092, 8375, 8404, 8464, 8481, + 8485, 8579, 8589, 8586, 8601, 8595, 8611, 8613, 8622, 8635, + 8704,10329,10388,10408,10421,10427,10464,10469,10456,10460, + 10475,10506,10536,10541,10545,10549,10557,10577,10585,10589, + 10594,10333, 8700,10622, 8711,34204, 8803, 8756,34204, 8822, + 34204,10311, 8764, 8771, 8781,10316,34204, 8785, 8789, 8785, + + 8794, 8804, 8797, 0, 9000, 8833, 8858, 9077, 8874, 9120, + 8881, 8888, 8891, 8887, 8899, 8929, 9154, 8923, 8960, 9000, + 9001, 9002, 9016, 9005, 9019, 9016, 9028, 9018, 9039, 9051, + 9068, 9078, 9090, 9094, 9094, 9096, 9096, 9186, 9202, 9107, + 9145,10511, 9110, 9123, 9130, 9121, 9153, 9149, 9148, 9154, + 9150, 9178, 9168, 9179, 9180, 9184, 9191, 9182, 9228, 9186, + 9207, 9222, 9320,10635,10642, 9230, 9236, 9223, 9241, 9230, + 9249, 9293, 9256, 9304, 9305, 9275,10662, 9311,10525, 9313, + 10564, 9486, 9493, 9466,10598,34204,10646,10647,34204,10669, + 34204,10671,34204, 9464,10677,34204,10688,34204,10689,34204, + + 9528, 9314,10690,10694,34204, 9494,10696,34204, 9315,10701, + 10702, 9523, 9597,10707,10708, 9609,10709,34204,10713,34204, + 10721,34204,10726,34204,10732,10740, 9318,10741, 9624,10745, + 9320,10749,10751,34204, 9360,10753, 9364,10757, 9366,10759, + 10763, 9368,10764, 9370,10765, 9406,10772,10773, 9407,10781, + 10787,34204, 9620, 9408,10795,10796, 9661, 9410,10797,10803, + 34204, 9712, 9780,10804,34204,10805,34204, 9853, 9412,10809, + 9414,10811, 9415,10815, 9416,10817,10819,34204, 9378, 9378, + 10416, 9416,10628,10827,10849,10853, 9426, 9425, 9438, 9456, + 9451, 9453, 9470, 9464, 9472, 9473, 9486,10857,10861, 9688, + + 9502,10865,10869,10873, 9501, 9510, 9516, 9583, 9583,10877, + 9571, 9603, 9636, 9607, 9622,10939, 9706, 9752, 9838, 9899, + 10881,11026, 9844,10885,10889, 9707, 9936, 9833, 9938, 9857, + 9900, 9761, 9911, 9987,10067, 9989, 9915,10003,10013,10060, + 10893,10911,10002,10915,10919, 9917, 9978, 9825,10073, 9895, + 10195,10923, 9686, 9993,10390,10213,10285, 0,10921,10924, + 11105,11184, 9619, 9706,10900, 9703, 9773, 9786,10966,10971, + 10981,10996,10985, 9853, 9856,10067, 9864, 0, 9938,10905, + 34204,10031,34204,34204,10077,34204,10090,34204,10100,10070, + 10076,34204,10086,11010,11014,10104,10117,10136,10139,10133, + + 10131,10151,10152,10149,10158,10143,10161,10167,11018,10178, + 10188,11044,11048,11058,11063,11091,11112,11131,11140,11145, + 11149,11160,11210,11224,11228,11239,11244,11260,11273,11095, + 11177,11277,34204,10188,10223,10977,34204,10221,10222,10211, + 10263,11074, 0,10237,10245,10240,34204,10351,34204,10248, + 10264,10479,10271,10492,10263,10287,10286,10273,10297,10299, + 10498,10309,10299,10314,10605,10318,10321,10836,10331,10411, + 10345,10353,10362,10380,10386,10384,10398,10842,10992,34204, + 10417,10413,11099,10434,10422,10423,10434,10443,10465,10485, + 10493,34204,34204,10500,10542,10512,10505,10522,10578,10526, + + 10534,10548,10585,10554,10556,34204,10561,34204,34204,10606, + 11290,11154,10617,11168,10611,11191,11193,34204,10612,11254, + 10619,11289,10624,11291,11302,10641,11303,10650,11316,10666, + 11321,11323,10674,11325,10782,10685,11327,11333,34204,10868, + 10922,11334,34204,11335,34204,11007,10686,11339,10691,11341, + 10693,11343,10698,11355,11357,34204,11366,34204,10712,11373, + 34204,10699,11375,11377,34204,11379,34204,10705,11385,11387, + 11389,34204,11045,10710,11391,11393,11043,10718,11397,10742, + 11398,11407,10748,11409,10719,10710,10716,11428,11432,11439, + 11443,10732,10744,10763,10762,10760,10768,10901,10781,10774, + + 10832,10829,11447,34204,11451,11455,11459,10846,10856,10865, + 10870,10873,11463,10881,11467,11471,10872,10879,10882,10901, + 11536,11010,11100,11005,11199, 0,11623,11710,11023,11121, + 11127,11067,11226,11149,11233,11456,11040,11231,11164,11267, + 11235,11167,11090,11147,11481,11204,11485,11300,11489,11330, + 11280,11215,11354,11264,11493,11511,11336,11348,11492,11350, + 11509,11515,11789,11868,11947,12026,10934,10929,11500,34204, + 10947,11007,11003,11517,34204,11570,34204,11535,11011,11576, + 11424,11013,11546,11580,11565,34204,11028,34204,11594,11600, + 11604,11096,11610,11142,11173,11181,11614,11184,11641,11645, + + 11231,11254,11654,11281,34204,11658,11664,11670,11699,11730, + 11742,11759,11747,11751,11777,11822,11826,11830,11834,11838, + 11869,11875,11903,34204,11298,11322,11354,11501,11338,11342, + 11351,34204,11340,11360,11505,11548,11347,11367,11438,11436, + 11459,11466,11461,11674,11468,11474,11608,11681,11481,11687, + 11479,11693,11499,11509,11507,11522,11529,11523,11561,11546, + 11563,11796,11580,11597,11598,11618,11606,11617,11629,34204, + 11626,11629,11628,11675,11653,11676,11715,34204,11720,11730, + 11689,34204,11912,11788,34204,11769,11880,34204,11739,11912, + 11913,34204,11917,34204,11742,11741,11921,11925,11844,11742, + + 11926,11744,11944,11945,11752,11957,11753,11959,11975,11754, + 11976,11756,11980,11758,11981,11987,34204,11761,11989,11857, + 11991,34204,11995,11997,34204,11757,11842,12011,11789,11789, + 11789,11786,11789,11789,11864,11797,11803,11805,11797,12027, + 11800,12033,12052,12057,11828,11830,12061,12065,12069,11843, + 11851,11842,11856,12121,11921,11990,11926,12073,12208,12295, + 11934,12081,12021,12060,11941,12022,12024,12080,12077,12105, + 11939,12062,12068,12074,12080,12076,12092,34204,12111,12153, + 12162,12099,12100,12171,12069,12070,12107,12098,12374,12453, + 12174,12532,11879,12611,12690,11882,11942,11979,12092,11954, + + 11956,11953,11952,12181,12119,11964,12194,12229,12254,12265, + 11963,12200,12239,11966,12314,12059,12327,12069,12331,12335, + 12069,12339,12343,12357,12365,12087,12369,12117,12381,12418, + 12410,12414,12422,12426,12373,12430,12460,12490,12494,12502, + 12508,12539,12522,12090, 0,34204,12087,12078,12186,12087, + 12083,12187,12192,12107,12118,12132,12244,12137,12138,12256, + 12266,12141,12154,12163,34204,12267,12164,12441,12280,12168, + 12175,34204,12188,34204,12259,12386,12207,34204,12222,12224, + 34204,34204,34204,12233,12569,12280,12531,12544,12282,12567, + 12289,12568,12290,12569,12317,12574,34204,12579,12581,34204, + + 12609,34204,12297,12611,12399,12318,12615,12620,34204,12324, + 12621,12275, 0,12599,12280,12295, 0, 0,12293,12305, + 12604,12333,12333,12336,34204,12645,12654,12404,12348,12366, + 12369,12658,12662,12769,12433,12421,12437,34204,12431,12451, + 12856,12943,12429,12448,34204,12463,12503,12666,12528,12496, + 12570,12499,12439,12667,12471,12622,12625,12671,12676,13022, + 13101,12456,13180,13267,12431,12435,13354, 0,34204,12465, + 12618,12473,12702,12728,12682, 0,34204,12475,12497,12732, + 12697,12518,12553,12573,12736,12740,12753,12764,12768,12675, + 12776,12795,12807,12892,12815,12899,12830,12903,12622,12583, + + 12606,12963,12834,12845,12618,12691,12727,12616,12759,12781, + 12642,34204,12799,12655,12821,12825, 0,12648,12838,34204, + 12876,12913,12849,12657,12660,12745,34204,12875,12688,12685, + 12697,12747,12981,12978,34204,12759,12753,12979,12980,34204, + 12775,12986,12776,12991,13019,12782,13021,12920,12812,12758, + 12763,34204,34204,12774, 0,12931,13010,12775,12771, 0, + 13029, 0,12801,13057,13061,13433,13066,13070,13077,13088, + 13096,13134,12873,13138,13057,13142,13160,13164,13520,13173, + 13373,13385,13221,13212,13607,13394,13686,13765,12869,13852, + 13089,13939,14026,14113,14200,14287, 0,12804,12827,12827, + + 0,34204,13168,12974,12832,12915, 0, 0,13206,13216, + 12838,13398,12839,13232,13403,12915,13415,13459,13466,13477, + 13243,13473,13552,34204,12862,13239, 0,13014,13034, 0, + 13051,13081,13100,13129,34204,13180,34204,12876,12868,12902, + 12911,34204,13486,12948,13153,13227,12955,13513,13557,34204, + 34204,34204,12984,12933,12935,34204,13247,13425, 0,13015, + 13251,34204,12958,14366,13068,13036,13087,13092,13085,13167, + 13006,13541,13580,14453,13075,13018,13544,13129,14532,14611, + 13043,14698,13366,13075,13407,14785,14872,13041,13041,13257, + 13376,13051, 0,13587,13591,13053,13627,13638,13066,13083, + + 13642,34204,13153,13646,13655,13726,13712,34204, 0,13389, + 34204,13421,13430,13431,13110,13111,13658,13665,34204,13158, + 13667,13684,13127,13732,13744,34204,34204,13192,13134,14959, + 13376,13428,13755,13403,13203,13396,13759,13209,13546,13763, + 13429,15038,15117,13224,34204, 0,13244, 0,34204,13225, + 34204,13250,13411,13182,13345,13413,13361,13361,13401,13791, + 13797,13971,13801,13805,13512,15204, 0,13472,13459,13719, + 13809,13817,13831,13478,13483,13527,13526,13836,13478,13633, + 34204,13958,13495,13615,15291,13484,34204,13590, 0,13434, + 15378, 0,13842,13492,13976,13980,13984,13988,14232,14002, + + 0,34204,14014,34204,13579,13657,13614,13649,15465,13638, + 13501,13741,34204, 0,13577,34204,34204,14047,14057,13525, + 14061,14065,13700,13658,14074,13655,15552,15639,13648,15726, + 15813,13707,13641,13675,13680,13756,34204,14103,14218,14236, + 13756,14083,34204,14246,15899,15986,13707,13676,13943,14264, + 14093,14268,13804,34204,34204, 0,16073, 0,13743,13758, + 13754,13718,13929,13936,13708,13946,13814,13765,13997,13945, + 13770,14016,13776, 0,14307,13786,14030,13775,34204,13781, + 13944,13930,13906,14001,13889,14034,13900, 0,13920,13986, + 34204,16159,16188,16217,16246,16275,16304,16333,16362,16391, + + 16420,16449,16478,16507,16536,16565,16594,16623,16652,16681, + 16710,16739,16768,16797,16826,16855,16884,16913,16942,16971, + 17000,17029,17058,17087,17116,17145,17174,17203,17232,17261, + 17290,17319,17348,17377,17406,17435,17464,17493,17522,17551, + 17580,17609,17638,17667,17696,17725,17754,17783,17812,17841, + 17870,17899,17928,17957,17986,18015,18044,18073,18102,18131, + 18160,18189,18218,18247,18276,18305,18334,18363,18392,18421, + 18450,18479,18508,18537,18566,18595,18624,14311,18652,14328, + 14058,18674,18702,18728,18751,14079,18779,14333,18801,14336, + 14082,18824,18853,18882,18911,18939,14345,18961,14358,18984, + + 19013,19042,19071,19100,19129,19158,19187,19216,19245,14257, + 19274,19303,19332,14258,19361,19390,19418,19442,14361,19465, + 19482,19507,19524,19548,14374,14332,14259,14310,19571,19600, + 14260,19629,19658,19687,19716,19745,19762,19787,19816,19845, + 19862,19887,19904,19928,19950,14396,19972,14334,19995,20024, + 14261,13980,14386,20041,20054,20067,20086,20115,20130,20152, + 14403,20171,20196,20221,20250,20279,20302,20322,20345,20362, + 20387,20404,20417,20434,20463,20492,14348,20521,20550,20579, + 20608,20637,20666,20695,20724,20753,20782,20810,14408,20833, + 20862,20891,20908,20933,20962,20991,21020,14385,21049,21078, + + 14398,21107,21130,21153,21170,21195,21212,14397,21237,21266, + 21295,21324,21353,21382,21411,21440,21469,21498,21527,21556, + 21585,21614,21643,21672,14399,21701,21730,21759,21788,21817, + 21846,21875,21904,14414,21932,21960,14425,21982,14407,22004, + 22032,14473,22054,22080,22103,22131,22153,22181,14476,22203, + 22225,22253,14485,22275,14415,22298,22327,22356,22385,22414, + 22442,22470,14490,14416,22492,22520,14498,14417,22543,22572, + 22601,22630,22659,22688,22717,22746,22775,22804,14418,22833, + 22862,22891,22920,14426,22949,22978,23006,23030,23058,14501, + 14427,23081,23098,23123,23140,23164,23192,14512,14428,14507, + + 14429,14504,23215,23244,14472,23273,23302,23331,23360,23389, + 23418,14524,23447,23464,23489,23518,23547,23564,23589,23606, + 23630,23652,23674,23702,14541,14500,23724,14510,14543,23747, + 23776,14514,23799,14008,14022,14552,23816,23829,23842,23855, + 14556,23868,23881,23909,23926,23955,23970,23992,24020,14574, + 14545,24039,24064,24089,24114,24139,24164,24189,24214,24239, + 24268,24297,24320,24340,24363,24380,24405,24422,24435,24452, + 24481,24510,14562,24539,24568,24597,24626,24655,24684,24713, + 24742,24771,24800,24829,24857,24885,14579,14582,24908,24937, + 24966,24983,25008,25037,25066,25095,14568,25124,25153,14572, + + 25182,25205,25228,25245,25270,25287,14575,25312,25341,25370, + 25399,25428,25457,25486,25515,25544,25573,25602,25631,25660, + 14576,25689,25718,25747,25776,25805,25834,25863,25891,25919, + 14604,25941,25963,25991,14619,14578,14643,26013,26036,26065, + 26093,26121,14646,26143,26165,26193,14649,26215,26238,26266, + 26294,14652,14586,26316,26344,14655,14593,26367,26396,26425, + 26453,26481,14658,14594,26503,26531,14661,14595,26554,26583, + 26611,26633,26655,26683,14693,14606,14650,26706,26729,14194, + 26746,26759,14664,26778,26807,26836,26865,26893,26904,26921, + 26940,26968,26996,14892,14665,27015,27040,27065,27094,27122, + + 27150,14895,14668,27173,14891,27201,14671,14909,27229,27251, + 27274,27303,27331,27353,27376,14196,27399,27428,27457,27486, + 27515,27544,27573,27602,27631,27660,27689,27718,27747,27776, + 27805,27834,27863,27892,27921,27950,27979,28008,28037,28060, + 28077,28096,28119,28148,28177,14901,28205,28227,28250,28279, + 28308,28337,28365,28388,28411,28440,28469,28498,28527,28556, + 28585,28614,28643,28672,28701,28730,28759,28788,28817,28846, + 28875,28904,28933,28962,28991,29020,29049,29078,29107,29136, + 29165,29194,29223,29252,29281,29310,29339,29368,29397,29426, + 29455,29484,29513,29536,29553,29578,29601,29624,29647,29670, + + 29693,29722,29751,14918,29779,29802,29831,29860,29889,29918, + 29941,29970,29999,30028,30057,30086,30115,30144,30173,30202, + 30231,30260,30289,30318,30347,30376,30405,30434,30463,30492, + 30521,30550,30579,30608,30637,30666,30695,30724,30753,30782, + 30805,30822,30847,30876,30905,30928,30951,30974,30997,31026, + 31055,31084,31112,31135,31164,31193,31216,31245,31274,31303, + 31332,31361,31390,31419,31448,31477,31506,31535,31564,31593, + 31622,31651,31680,31709,31732,31749,31774,31797,31820,31843, + 31866,31889,31918,31947,31976,14919,32004,32027,32056,32085, + 32108,32137,32166,32195,32224,32253,32282,32311,32340,32369, + + 32398,32427,14049,32456,32485,32508,32525,32544,32567,32590, + 32619,32648,32677,15051,14224,14902,32705,32728,32757,32786, + 32809,32838,32867,32896,32925,32954,32983,14920,33012,14078, + 33041,33064,33092,33105,33124,33147,33176,33204,33227,33256, + 33285,33314,33343,14232,14904,14921,33371,33394,33423,33452, + 33481,33504,33533,33562,33591,15065,33620,15067,33643,33660, + 33673,33692,33715,33743,33765,33788,33817,14922,33845,33868, + 33897,33920,33949,33978,34006,34029,34058,34087,34116,34145, + 34174 } ; -static yyconst short int yy_def[4677] = +static yyconst short int yy_def[4882] = { 0, - 3919, 3919, 3918, 3, 3920, 3920, 3921, 3921, 3919, 3919, - 3918, 11, 3918, 13, 3922, 3922, 3918, 17, 3923, 3923, - 3919, 3919, 3918, 23, 3918, 25, 3918, 27, 3919, 3919, - 3919, 3919, 3924, 3924, 3925, 3925, 3924, 3924, 3926, 3926, - 3927, 3927, 3928, 3928, 3919, 3919, 3918, 47, 3918, 49, - 3929, 3929, 3929, 3929, 3919, 3919, 3930, 3930, 3931, 3931, - 3932, 3932, 3919, 3919, 3933, 3933, 3934, 3934, 3919, 3919, - 3919, 3919, 3935, 3935, 3936, 3936, 3919, 3919, 3919, 3919, - 3918, 81, 3937, 3937, 3938, 3938, 3939, 3939, 3940, 3940, - 3941, 3941, 3941, 3941, 3918, 95, 3942, 3942, 3943, 3943, - - 3944, 3944, 3918, 103, 3944, 3944, 3919, 3919, 3945, 3945, - 3918, 111, 3918, 113, 3946, 3946, 3947, 3947, 3948, 3948, - 3918, 121, 3949, 3949, 3918, 125, 3950, 3950, 3951, 3951, - 3952, 3952, 3953, 3953, 3954, 3954, 3955, 3955, 3956, 3956, - 3957, 3957, 3958, 3958, 3919, 3919, 136, 136, 3959, 3959, - 3919, 3919, 3918, 153, 3918, 155, 3919, 3919, 3960, 3960, - 3961, 3961, 3962, 3962, 3918, 165, 3919, 3919, 3963, 3963, - 3964, 3964, 3918, 173, 3965, 3965, 3918, 177, 3966, 3966, - 3966, 3966, 3967, 3967, 3968, 3968, 3969, 3969, 3970, 3970, - 3919, 3919, 3971, 3971, 3972, 3972, 3973, 3973, 3974, 3974, - - 3975, 3975, 3919, 3919, 3919, 3919, 3976, 3976, 3977, 3977, - 3978, 3978, 3918, 213, 3979, 3979, 3980, 3980, 3981, 3981, - 3982, 3982, 3983, 3983, 3984, 3984, 3918, 227, 3985, 3985, - 3986, 3986, 3987, 3987, 3919, 3919, 3988, 3988, 3919, 3919, - 3918, 241, 3989, 3989, 3918, 245, 3990, 3990, 3991, 3991, - 3919, 3919, 3918, 253, 3992, 3992, 3919, 3919, 3993, 3993, - 3994, 3994, 3995, 3995, 3996, 3996, 3997, 3997, 3996, 3996, - 3998, 3998, 3999, 3999, 4000, 4000, 4000, 4000, 3918, 279, - 3918, 3918, 4001, 3918, 3918, 3918, 4002, 3918, 4001, 3918, - 3918, 3918, 3918, 4001, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 4003, 3918, 4004, 3918, 3918, - 3918, 3918, 3918, 4005, 3918, 4001, 3918, 3918, 3918, 4006, - 4007, 4007, 4007, 3918, 3918, 3918, 4008, 3918, 3918, 4001, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4009, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4010, 3918, 3918, - 3918, 3918, 3918, 3918, 4011, 3918, 4011, 4011, 4011, 4011, - 4011, 4011, 4011, 4011, 4011, 4011, 3918, 4012, 3918, 3918, - 3918, 3918, 4013, 4014, 3918, 3918, 3918, 3918, 3918, 3918, - 4015, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4001, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4001, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 4001, 3918, 3918, 3918, 3918, 3918, 3918, - 4001, 3918, 3918, 3918, 3918, 4016, 4017, 4016, 3918, 3918, - 4018, 4019, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 4020, 4021, 3918, 3918, 3918, 3918, 4022, 4023, 3918, - 4001, 3918, 3918, 3918, 4024, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 4001, 3918, 3918, 3918, - 3918, 3918, 4025, 3918, 4001, 3918, 3918, 3918, 3918, 3918, - 4001, 3918, 3918, 3918, 3918, 4026, 4027, 4026, 4026, 3918, - 4026, 4028, 4029, 3918, 4028, 4028, 3918, 3918, 3918, 3918, - - 4030, 4031, 3918, 3918, 4030, 3918, 3918, 4030, 4030, 3918, - 3918, 3918, 3918, 3918, 4001, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 4032, 4033, 4034, 4033, 3918, - 4033, 4035, 4033, 3918, 4001, 3918, 3918, 3918, 3918, 3918, - 4036, 3918, 3918, 543, 3918, 4037, 3918, 3918, 4001, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 557, 3918, 3918, - 3918, 4038, 3918, 3918, 4001, 4039, 3918, 3918, 3918, 3918, - 4039, 3918, 3918, 3918, 4039, 4037, 3918, 3918, 4001, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 4040, 4041, 3918, 3918, 3918, - - 4042, 4043, 4043, 3918, 3918, 3918, 4044, 4045, 4045, 3918, - 4001, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 4046, 4047, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 4001, 3918, 3918, 3918, 4048, 4049, 3918, 4001, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 4037, 3918, 3918, 3918, 3918, 4001, 3918, 3918, 3918, - 3918, 3918, 3918, 4001, 3918, 3918, 3918, 3918, 3918, 4050, - 4051, 4052, 3918, 4051, 4051, 3918, 4053, 4054, 4055, 3918, - 4054, 4054, 3918, 4001, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 4056, 3918, 4001, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 4057, 3918, 4001, 3918, 3918, 3918, 3918, 4039, 3918, - 3918, 3918, 3918, 4039, 3918, 3918, 4001, 3918, 3918, 3918, - 3918, 3918, 4058, 4059, 4059, 4060, 4061, 3918, 4060, 4060, - 3918, 4062, 4063, 4063, 3918, 3918, 4064, 4065, 4065, 3918, - 4066, 3918, 4001, 3918, 3918, 3918, 3918, 3918, 4067, 4068, - 3918, 3918, 3918, 3918, 3918, 4001, 3918, 3918, 3918, 3918, - 4001, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4069, 4069, - 4069, 4069, 3918, 3918, 3918, 4070, 3918, 3918, 3918, 4071, - 4072, 3918, 3918, 4071, 3918, 4071, 3918, 3918, 3918, 4001, - 3918, 3918, 3918, 3918, 3918, 3918, 4073, 3918, 4074, 4075, - - 4076, 4075, 4075, 3918, 3918, 4077, 4075, 4078, 4077, 809, - 809, 4073, 4079, 4080, 3918, 3918, 3918, 3918, 4081, 4082, - 3918, 4001, 3918, 3918, 3918, 3918, 3918, 3918, 4083, 4084, - 3918, 4083, 4085, 4086, 4085, 4087, 4088, 4087, 4089, 4090, - 4089, 3918, 4089, 3918, 3918, 4089, 3918, 4091, 4091, 3918, - 3918, 4001, 3918, 3918, 3918, 3918, 4092, 4093, 4094, 4094, - 4095, 4096, 4096, 3918, 3918, 3918, 4097, 4097, 4098, 4098, - 3918, 4099, 4100, 4099, 4099, 4099, 3918, 3918, 4101, 4102, - 4103, 4102, 4104, 4105, 4104, 4106, 4107, 4106, 4108, 4109, - 4108, 3918, 4001, 3918, 3918, 3918, 3918, 4110, 4111, 4110, - - 3918, 4110, 4110, 3918, 3918, 3918, 3918, 4112, 4113, 4114, - 4115, 3918, 4114, 4114, 4114, 4114, 3918, 4116, 4117, 4117, - 4118, 4119, 4118, 4118, 4120, 4121, 4120, 4120, 3918, 4122, - 4123, 4124, 3918, 4123, 4123, 3918, 4125, 4125, 4125, 4126, - 4127, 4128, 4128, 4129, 4130, 4131, 4131, 3918, 3918, 3918, - 4132, 4133, 4134, 3918, 4133, 3918, 4133, 3918, 4135, 3918, - 3918, 3918, 3918, 4136, 4137, 3918, 4136, 3918, 3918, 4136, - 4138, 4139, 4140, 4139, 3918, 4141, 3918, 3918, 3918, 4135, - 3918, 3918, 3918, 4142, 4143, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 4135, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 4135, 3918, 3918, 3918, 3918, 4135, 3918, 3918, 3918, - 3918, 4144, 3918, 3918, 4145, 4135, 3918, 3918, 3918, 3918, - 4146, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 4147, 3918, 4148, 3918, 3918, 4149, 4150, 3918, 4151, 4152, - 3918, 4153, 4154, 4155, 4155, 4156, 3918, 4155, 3918, 4156, - 3918, 3918, 3918, 3918, 3918, 3918, 4157, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4158, - 3918, 3918, 4159, 3918, 4160, 3918, 4160, 4160, 4160, 4160, - 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, + 4092, 4092, 4091, 3, 4093, 4093, 4094, 4094, 4092, 4092, + 4091, 11, 4091, 13, 4095, 4095, 4091, 17, 4096, 4096, + 4092, 4092, 4091, 23, 4091, 25, 4091, 27, 4092, 4092, + 4092, 4092, 4097, 4097, 4098, 4098, 4097, 4097, 4099, 4099, + 4100, 4100, 4101, 4101, 4092, 4092, 4091, 47, 4091, 49, + 4102, 4102, 4102, 4102, 4092, 4092, 4103, 4103, 4104, 4104, + 4105, 4105, 4092, 4092, 4106, 4106, 4107, 4107, 4092, 4092, + 4092, 4092, 4108, 4108, 4109, 4109, 4092, 4092, 4092, 4092, + 4091, 81, 4110, 4110, 4111, 4111, 4112, 4112, 4113, 4113, + 4114, 4114, 4114, 4114, 4091, 95, 4115, 4115, 4116, 4116, + + 4117, 4117, 4091, 103, 4117, 4117, 4092, 4092, 4118, 4118, + 4091, 111, 4091, 113, 4119, 4119, 4120, 4120, 4121, 4121, + 4091, 121, 4122, 4122, 4091, 125, 4123, 4123, 4124, 4124, + 4125, 4125, 4126, 4126, 4127, 4127, 4128, 4128, 4129, 4129, + 4130, 4130, 4131, 4131, 4092, 4092, 136, 136, 4132, 4132, + 4092, 4092, 4091, 153, 4091, 155, 4092, 4092, 4133, 4133, + 4134, 4134, 4135, 4135, 4091, 165, 4092, 4092, 4136, 4136, + 4137, 4137, 4091, 173, 4138, 4138, 4091, 177, 4139, 4139, + 4139, 4139, 4091, 183, 4091, 185, 4091, 187, 4140, 4140, + 4092, 4092, 4141, 4141, 4142, 4142, 4143, 4143, 4144, 4144, + + 4145, 4145, 4092, 4092, 4092, 4092, 4146, 4146, 4147, 4147, + 4148, 4148, 4091, 213, 4149, 4149, 4150, 4150, 4151, 4151, + 4152, 4152, 4153, 4153, 4154, 4154, 4091, 227, 4155, 4155, + 4156, 4156, 4157, 4157, 4092, 4092, 4158, 4158, 4092, 4092, + 4091, 241, 4159, 4159, 4091, 245, 4160, 4160, 4161, 4161, + 4092, 4092, 4091, 253, 4162, 4162, 4092, 4092, 4163, 4163, + 4164, 4164, 4165, 4165, 4166, 4166, 4167, 4167, 4168, 4168, + 4169, 4169, 4166, 4166, 4170, 4170, 4171, 4171, 4172, 4172, + 4172, 4172, 4091, 283, 4173, 4173, 4174, 4174, 4175, 4175, + 4176, 4176, 4091, 4091, 4177, 4091, 4091, 4091, 4178, 4091, + + 4177, 4091, 4091, 4091, 4091, 4177, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4179, 4091, 4180, + 4091, 4091, 4091, 4091, 4091, 4181, 4091, 4177, 4091, 4091, + 4091, 4182, 4183, 4183, 4183, 4091, 4091, 4091, 4184, 4091, + 4091, 4177, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4185, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4186, + 4091, 4091, 4091, 4091, 4091, 4091, 4187, 4091, 4187, 4187, + 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4091, 4188, + 4091, 4091, 4091, 4091, 4189, 4190, 4091, 4091, 4091, 4091, + 4091, 4091, 4191, 4091, 4091, 4091, 4091, 4091, 4091, 4177, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4177, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4177, 4091, 4091, 4091, 4091, 4091, + 4091, 4177, 4091, 4091, 4091, 4091, 4192, 4193, 4192, 4091, + 4091, 4194, 4195, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4196, 4197, 4091, 4091, 4091, 4091, 4198, 4199, + 4200, 4201, 4091, 4200, 4091, 4202, 4091, 4091, 4091, 4091, + 4200, 4200, 4091, 4091, 4091, 4091, 4091, 4177, 4091, 4091, + 4091, 4091, 4091, 4203, 4177, 4091, 4091, 4091, 4177, 4091, + 4091, 4091, 4091, 4204, 4205, 4204, 4204, 4091, 4204, 4206, + + 4207, 4091, 4206, 4206, 4091, 4091, 4091, 4091, 4208, 4209, + 4091, 4091, 4208, 4091, 4091, 4208, 4208, 4091, 4091, 4091, + 4091, 4091, 4177, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4210, 4211, 4212, 4211, 4091, 4211, 4213, + 4211, 4091, 4177, 4091, 4091, 4091, 4091, 4091, 4214, 4091, + 4091, 551, 4091, 4215, 4091, 4091, 4177, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 565, 4091, 4091, 4091, 4216, + 4091, 4091, 4177, 4217, 4091, 4091, 4091, 4091, 4217, 4091, + 4091, 4091, 4217, 4215, 4091, 4091, 4177, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4218, 4219, 4091, 4091, 4091, 4220, 4221, + 4221, 4091, 4091, 4091, 4222, 4223, 4223, 4223, 4091, 4177, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4224, 4225, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4177, 4091, 4091, 4091, 4226, 4227, 4091, 4177, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4215, 4091, 4091, 4091, 4091, 4177, 4091, 4091, 4091, 4091, + 4091, 4091, 4177, 4091, 4091, 4091, 4091, 4091, 4228, 4229, + 4230, 4091, 4229, 4229, 4091, 4231, 4232, 4233, 4091, 4232, + 4232, 4091, 4177, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4234, 4091, 4177, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4235, 4091, 4177, 4091, 4091, 4091, 4091, 4217, 4091, 4091, + 4091, 4091, 4217, 4091, 4091, 4177, 4091, 4091, 4091, 4091, + 4091, 4236, 4237, 4237, 4238, 4239, 4091, 4238, 4238, 4091, + 4240, 4241, 4241, 4091, 4091, 4242, 4243, 4243, 4091, 4244, + 4091, 4177, 4091, 4091, 4091, 4091, 4091, 4245, 4246, 4091, + 4091, 4091, 4091, 4091, 4177, 4091, 4091, 4091, 4091, 4177, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4247, 4247, 4247, + 4247, 4091, 4091, 4091, 4248, 4091, 4091, 4249, 4250, 4091, + 4091, 4249, 4091, 4249, 4091, 4091, 4091, 4177, 4091, 4091, + + 4091, 4251, 4091, 4091, 4091, 4252, 4091, 4253, 4254, 4255, + 4254, 4256, 4254, 4091, 4091, 4257, 4254, 4257, 818, 818, + 4252, 4091, 4091, 4255, 4254, 4258, 4259, 4091, 4091, 4091, + 4091, 4260, 4261, 4091, 4177, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4262, 4263, 4264, 4265, 4266, 4265, 4091, + 4265, 4091, 4091, 4265, 4091, 4267, 4267, 4091, 4091, 4177, + 4091, 4091, 4091, 4091, 4268, 4269, 4270, 4270, 4271, 4272, + 4272, 4091, 4091, 4091, 4273, 4273, 4274, 4274, 4091, 4275, + 4276, 4275, 4275, 4275, 4091, 4091, 4277, 4278, 4279, 4278, + 4280, 4281, 4280, 4282, 4283, 4282, 4284, 4285, 4284, 4091, + + 4177, 4091, 4091, 4091, 4091, 4286, 4287, 4286, 4091, 4286, + 4286, 4091, 4091, 4091, 4091, 4288, 4289, 4290, 4291, 4091, + 4290, 4290, 4290, 4290, 4091, 4292, 4293, 4293, 4294, 4295, + 4294, 4294, 4296, 4297, 4296, 4296, 4091, 4298, 4299, 4300, + 4091, 4299, 4299, 4091, 4301, 4301, 4301, 4302, 4303, 4304, + 4304, 4305, 4306, 4307, 4307, 4091, 4091, 4091, 4308, 4309, + 4310, 4091, 4309, 4091, 4309, 4091, 4311, 4091, 4091, 4091, + 4091, 4312, 4313, 4091, 4312, 4091, 4091, 4312, 4314, 4315, + 4316, 4315, 4091, 4317, 4091, 4091, 4091, 4311, 4091, 4091, + 4091, 4318, 4319, 4091, 4318, 4091, 4318, 4320, 4321, 4091, + + 4320, 4320, 4322, 4323, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4311, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4311, 4091, 4091, 4091, 4091, 4311, 4091, 4091, 4091, + 4091, 4324, 4091, 4091, 4325, 4091, 4311, 4091, 4091, 4091, + 4091, 4326, 4091, 4091, 4091, 4091, 4091, 4091, 4311, 4091, + 4091, 4091, 4091, 4091, 4327, 4328, 4329, 4091, 4328, 4091, + 4330, 4091, 4091, 4328, 4331, 4332, 4091, 4331, 4091, 4333, + 4331, 4091, 4091, 4311, 4091, 4091, 4091, 4091, 4334, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4335, + 4091, 4336, 4091, 4091, 4337, 4338, 4091, 4339, 4340, 4091, + + 4341, 4342, 4343, 4343, 4344, 4091, 4343, 4091, 4344, 4091, + 4091, 4091, 4091, 4091, 4091, 4345, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4346, 4091, + 4091, 4347, 4091, 4348, 4091, 4348, 4348, 4348, 4348, 4348, + 4348, 4348, 4348, 4348, 4348, 4348, 4348, 4348, 4348, 4348, + 4349, 4350, 4091, 4091, 4351, 4091, 4352, 4091, 4353, 4354, + 4091, 4091, 4355, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4356, 4357, 4356, 4356, 4091, 4358, 4091, 4091, 4359, + + 4091, 4360, 4091, 4091, 4091, 4361, 4362, 4363, 4364, 4091, + 4091, 4365, 4366, 4367, 4368, 4369, 4370, 4369, 4091, 4371, + 4091, 4091, 4091, 4091, 4369, 4369, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4372, + 4373, 4372, 4372, 4091, 4091, 4091, 4372, 4374, 4091, 4375, + 4374, 4376, 4374, 4374, 4377, 4378, 4377, 4091, 4091, 4091, + 4091, 4091, 4377, 4091, 4091, 4091, 4091, 4091, 4091, 4379, + 4380, 4381, 4382, 4380, 4383, 4380, 4091, 4381, 4381, 4381, + 4380, 4091, 4091, 4091, 4091, 4091, 4384, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4385, 4091, 4091, 4091, + 4385, 4091, 4091, 4091, 1283, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4386, 4091, 4091, 4091, 4091, 4386, 4091, 4387, 4387, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4387, 4385, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4388, 4389, 4390, 4391, 4091, + 4091, 4392, 4393, 4393, 4091, 4091, 4394, 4395, 4091, 4395, + 4394, 4091, 4091, 4091, 4091, 4091, 4396, 4397, 4398, 4399, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4400, 4401, 4091, 4091, 4091, 4091, 4091, 4385, 4091, 4091, + 4091, 4091, 4091, 4385, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4402, 4403, 4404, 4403, 4403, 4403, 4405, 4406, 4091, + 4407, 4406, 4408, 4406, 4406, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4409, 4091, 4409, 4091, 4091, 4091, 4091, 4091, + 4410, 4091, 4411, 4091, 4091, 4412, 4091, 4091, 4091, 4412, + 4091, 4413, 4414, 4414, 4415, 4091, 4416, 4415, 4408, 4415, + 4415, 4417, 4418, 4418, 4419, 4420, 4420, 4091, 4421, 4091, + 4422, 4091, 4091, 4423, 4424, 4425, 4426, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4427, 4427, 4428, + 4428, 4429, 4430, 4431, 4430, 4091, 4091, 4430, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4432, 4091, + 4091, 4091, 4091, 4091, 4091, 4433, 4434, 4435, 4436, 4437, + 4438, 4439, 4440, 4441, 4091, 4437, 4442, 4443, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4434, 4444, 4445, 4437, 4445, 4437, 4437, + 4437, 4437, 4437, 4437, 4437, 4437, 4437, 4437, 4437, 4437, + + 4437, 4437, 4437, 4437, 4437, 4437, 1588, 1588, 1588, 4091, + 4091, 4091, 4091, 4091, 4437, 4446, 4446, 4447, 4091, 4091, + 4448, 4449, 4450, 4451, 4091, 4091, 4091, 4091, 4091, 4091, + 4452, 4452, 4453, 4454, 4455, 4455, 4456, 4457, 4458, 4458, + 4459, 4460, 4461, 4462, 4461, 4461, 4091, 4461, 4091, 4091, + 4091, 4091, 4461, 4091, 4463, 4463, 4091, 4464, 4465, 4466, + 4466, 4467, 4468, 4468, 4091, 4091, 4469, 4469, 4470, 4470, + 4471, 4472, 4471, 4471, 4471, 4473, 4474, 4475, 4474, 4474, + 4474, 4476, 4477, 4476, 4476, 4476, 4478, 4479, 4478, 4478, + 4478, 4480, 4481, 4480, 4480, 4480, 4091, 4091, 4091, 4482, + + 4482, 4091, 4483, 4482, 4483, 4484, 4482, 4482, 4091, 4091, + 4485, 4091, 4486, 4487, 4488, 4489, 4091, 4490, 4489, 4484, + 4489, 4489, 4489, 4489, 4091, 4491, 4492, 4492, 4493, 4494, + 4493, 4493, 4493, 4495, 4091, 4496, 4495, 4484, 4495, 4495, + 4497, 4498, 4091, 4499, 4498, 4484, 4498, 4498, 4500, 4500, + 4500, 4501, 4502, 4503, 4504, 4503, 4505, 4506, 4506, 4091, + 4091, 4507, 4508, 4091, 4509, 4508, 4484, 4508, 4091, 4091, + 4091, 4510, 4511, 4510, 4510, 4510, 4091, 4512, 4513, 4512, + 4091, 4514, 4515, 4516, 4515, 4091, 4515, 4517, 4518, 4517, + 4517, 4517, 4519, 4520, 4519, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4521, 4091, 4522, + 4091, 4091, 4091, 4091, 4523, 4524, 4523, 4091, 4525, 4523, + 4523, 4526, 4527, 4526, 4091, 4528, 4526, 4526, 4091, 4091, + 4091, 4529, 4530, 4531, 4091, 4532, 4533, 4091, 4534, 4535, + 4536, 4091, 4537, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4538, 4091, 4091, 4539, 4091, 4091, 4540, 4541, 4542, + 4543, 4091, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, + 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, - 4160, 4161, 4162, 3918, 3918, 4163, 3918, 4164, 3918, 4165, - 4166, 3918, 3918, 4167, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 4168, 4169, 4168, 4168, 3918, 4170, 3918, 3918, - 4171, 3918, 4172, 3918, 3918, 3918, 4173, 4174, 4175, 4176, - 3918, 3918, 4177, 4178, 4179, 4180, 3918, 4181, 3918, 3918, - 4182, 3918, 3918, 3918, 3918, 3918, 4182, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4183, 4184, - 4183, 4183, 3918, 3918, 3918, 4183, 4185, 3918, 4186, 4185, - 4187, 4185, 4185, 4188, 4189, 4188, 3918, 3918, 3918, 3918, - - 3918, 4188, 3918, 3918, 3918, 3918, 3918, 3918, 4190, 4191, - 4192, 4193, 4191, 4194, 4191, 3918, 4192, 4192, 4192, 4191, - 3918, 3918, 3918, 3918, 3918, 4195, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 4196, 3918, 3918, 4196, 3918, - 3918, 1222, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4197, 3918, - 3918, 3918, 4197, 4198, 4198, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 4198, 4196, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 4199, 4200, 4201, 4202, 3918, 3918, 4203, 4204, 4204, 3918, - 3918, 4205, 4206, 4206, 3918, 3918, 3918, 3918, 3918, 4207, - 4208, 4209, 4210, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 4211, 4212, 3918, 3918, 3918, 3918, 3918, - 4196, 3918, 3918, 3918, 3918, 3918, 4196, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 4213, 4214, 4215, 4214, 4214, 4214, - 4216, 4217, 3918, 4218, 4217, 4219, 4217, 4217, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 4220, 3918, 4220, 3918, 3918, - 3918, 3918, 3918, 4221, 3918, 4222, 3918, 3918, 4223, 3918, - - 3918, 3918, 4223, 3918, 4224, 4225, 4225, 4226, 3918, 4227, - 4226, 4219, 4226, 4226, 4228, 4229, 4229, 4230, 4231, 4231, - 3918, 4232, 3918, 4233, 3918, 3918, 4234, 4235, 4236, 4237, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 4238, 4238, 4239, 4239, 4240, 4241, 4242, 4241, 3918, 3918, - 4241, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 4243, 4244, 4245, 4246, - 4247, 4248, 4249, 4250, 4251, 3918, 4247, 4252, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 4244, 4253, 4254, 4247, 4255, 4254, 4247, 4247, - 4247, 4247, 4247, 4247, 4247, 4247, 4247, 4247, 4247, 4247, - 4247, 4247, 4247, 4247, 4247, 4255, 1536, 1536, 4256, 4256, - 4257, 3918, 3918, 4258, 4259, 4260, 4261, 3918, 3918, 3918, - 3918, 3918, 4262, 4263, 4262, 4262, 4262, 4264, 4265, 4264, - 4264, 4264, 4266, 4267, 4266, 4266, 4266, 4268, 4269, 4268, - 4268, 3918, 4268, 3918, 3918, 3918, 3918, 4268, 3918, 4270, - 4270, 3918, 4271, 4272, 4273, 4273, 4274, 4275, 4275, 3918, - 3918, 4276, 4276, 4277, 4277, 4278, 4279, 4278, 4278, 4278, - - 4280, 4281, 4282, 4281, 4281, 4281, 4283, 4284, 4283, 4283, - 4283, 4285, 4286, 4285, 4285, 4285, 4287, 4288, 4287, 4287, - 4287, 3918, 3918, 3918, 4289, 4289, 3918, 4290, 4289, 4290, - 4291, 4289, 4289, 3918, 3918, 4292, 3918, 4293, 4294, 4295, - 4296, 3918, 4297, 4296, 4291, 4296, 4296, 4296, 4296, 3918, - 4298, 4299, 4299, 4300, 4301, 4300, 4300, 4300, 4302, 3918, - 4303, 4302, 4291, 4302, 4302, 4304, 4305, 3918, 4306, 4305, - 4291, 4305, 4305, 4307, 4307, 4307, 4308, 4309, 4310, 4311, - 4310, 4312, 4313, 4313, 3918, 3918, 4314, 4315, 3918, 4316, - 4315, 4291, 4315, 3918, 3918, 3918, 4317, 4318, 4317, 4317, - - 4317, 3918, 4319, 4320, 4319, 3918, 4321, 4322, 4323, 4322, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4324, 3918, - 3918, 3918, 4325, 4326, 4327, 3918, 4328, 4329, 3918, 4330, - 4331, 4332, 3918, 4333, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 4334, 3918, 3918, 4335, 3918, 3918, 4336, 4337, - 4338, 4339, 3918, 4338, 4338, 4338, 4338, 4338, 4338, 4338, - 4338, 4338, 4338, 4338, 4338, 4338, 4338, 4338, 4338, 4338, - 4338, 3918, 4340, 4341, 4342, 4343, 3918, 4344, 3918, 4335, - - 3918, 4336, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 4345, 3918, 4346, 4347, - 4348, 4349, 4350, 4351, 4352, 4353, 3918, 3918, 3918, 3918, - 4354, 4354, 4354, 3918, 3918, 3918, 3918, 3918, 4355, 3918, - 3918, 3918, 4356, 4357, 4356, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 4358, 4359, 4360, 4361, 3918, 3918, - 3918, 4362, 4363, 4364, 4365, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 4366, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 4367, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 4368, 4369, 4369, 4370, 4371, - 4372, 4373, 4374, 3918, 4375, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4376, 3918, 4376, - 4377, 4378, 4378, 4379, 4379, 4380, 4381, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 4382, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 4383, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4384, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 4385, 3918, 4386, 4387, 4387, 4387, 4387, 4387, 4387, - 4387, 4387, 4387, 4387, 4387, 4387, 4387, 4387, 4387, 4387, - 4387, 4387, 4387, 4387, 4387, 4387, 4387, 4387, 4387, 4387, - - 4387, 4387, 4387, 4387, 4387, 4388, 4388, 2107, 4389, 4390, - 4391, 4392, 3918, 3918, 3918, 4393, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 4394, 4395, 4396, 3918, 3918, - 4397, 4398, 3918, 3918, 4399, 4399, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 4400, 4401, 4402, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 4403, 3918, 3918, 3918, 3918, 4404, 4404, 4404, 4404, 4404, - 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, + 4091, 4544, 4545, 4546, 4547, 4091, 4548, 4091, 4539, 4091, + 4540, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4549, 4091, 4550, 4551, 4552, + 4553, 4554, 4555, 4556, 4557, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4558, 4091, 4091, 4091, 4559, + 4560, 4559, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4561, 4562, 4563, 4564, 4091, 4091, + 4091, 4565, 4566, 4567, 4568, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4569, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4570, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4571, 4572, 4572, 4573, 4574, + 4575, 4576, 4577, 4091, 4578, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4579, 4091, 4579, + 4580, 4581, 4581, 4582, 4582, 4583, 4584, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4585, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4586, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4587, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4588, 4091, 4589, 4590, 4590, 4590, 4590, + 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, - 4404, 4404, 4404, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 4405, 3918, 3918, 4406, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 4407, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 4408, 4409, 4410, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4411, 3918, 4412, - 4412, 3918, 4413, 3918, 4414, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4415, - 3918, 3918, 3918, 3918, 4416, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 4417, 4417, 3918, 4418, - 3918, 3918, 3918, 4419, 3918, 3918, 4420, 3918, 4421, 3918, - 4422, 3918, 3918, 4423, 3918, 4424, 3918, 4425, 3918, 3918, - 4426, 3918, 4427, 4427, 3918, 3918, 4428, 3918, 3918, 3918, - 4429, 3918, 4430, 4430, 3918, 3918, 3918, 3918, 3918, 3918, - 4431, 3918, 4432, 3918, 4433, 3918, 4434, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4435, 4436, - 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, - 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, - 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, - 4436, 4436, 4436, 4436, 4436, 4437, 4438, 4438, 3918, 3918, - 3918, 4439, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4440, - 3918, 4441, 4441, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 4442, 3918, 4443, 3918, 4443, 4443, 4443, - 4443, 4443, 4443, 4443, 4443, 4443, 4443, 4443, 4443, 4443, - 4443, 4443, 4443, 4443, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 4444, 4445, 3918, 3918, 4446, 3918, 3918, - 4447, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4448, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 4449, 4449, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4450, 4450, - 4451, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 4452, 4453, 4453, 4454, 4454, 3918, 3918, 3918, 4455, - 3918, 3918, 4456, 3918, 4457, 3918, 4458, 3918, 3918, 4459, - 3918, 4460, 3918, 4461, 3918, 3918, 4462, 4462, 4463, 3918, - 3918, 4464, 3918, 4465, 4465, 3918, 3918, 3918, 3918, 3918, - 3918, 4466, 3918, 4467, 3918, 4468, 3918, 4469, 3918, 3918, - 3918, 4470, 4470, 3918, 3918, 4471, 4471, 4472, 3918, 4473, - 4473, 4474, 4474, 4475, 4475, 3918, 4476, 4476, 4477, 4477, - - 4478, 4478, 3918, 4479, 4479, 4480, 3918, 3918, 4481, 4481, - 3918, 3918, 4482, 4482, 4483, 3918, 3918, 3918, 4484, 3918, - 4485, 3918, 3918, 4486, 4486, 4487, 4487, 4488, 4488, 4489, - 4489, 4490, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 4491, 4492, 4492, 4492, - 4492, 4492, 4493, 4492, 4492, 4492, 4492, 4492, 4492, 4492, - 4492, 4492, 4492, 4492, 4492, 4492, 4492, 4492, 4492, 4492, - 4492, 4492, 4492, 4492, 4492, 4492, 4492, 4492, 4492, 4492, - - 4492, 4492, 4492, 4492, 4492, 4492, 4494, 4495, 4496, 4497, - 4498, 3918, 3918, 3918, 4499, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 4500, 3918, 4501, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 4502, 4502, 4502, 4502, 4502, 4502, - 4502, 4502, 4502, 4502, 4502, 4502, 4502, 4502, 3918, 3918, - 4502, 3918, 3918, 3918, 3918, 3918, 3918, 4503, 4504, 3918, - 4505, 3918, 3918, 4506, 4506, 4507, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 4508, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 4509, 3918, 3918, 3918, 4510, 4510, 4511, - 3918, 4512, 4512, 4513, 4513, 4514, 4514, 3918, 4515, 4515, - 4516, 4516, 4517, 4517, 3918, 4518, 4518, 3918, 4519, 4519, - 4520, 3918, 3918, 3918, 4521, 3918, 4522, 3918, 3918, 4523, - 4523, 4524, 4524, 4525, 4525, 4526, 4526, 4527, 3918, 4528, - - 3918, 3918, 4529, 3918, 4530, 4530, 4531, 3918, 4532, 3918, - 4533, 4533, 3918, 4534, 3918, 3918, 4535, 4535, 3918, 3918, - 4536, 4536, 4537, 4537, 3918, 4538, 4538, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 4539, 4540, 4540, 4540, 4540, 4541, 4542, 4543, 4540, 4540, - 4540, 4540, 4540, 4540, 4540, 3918, 4540, 4540, 4540, 4540, - 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, - 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4544, 4544, - - 4545, 4545, 4546, 4547, 3918, 3918, 4548, 3918, 4549, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4550, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 4551, 3918, 4551, 4551, 4551, - 3918, 3918, 4551, 4551, 3918, 3918, 4551, 4551, 4551, 4551, - 3918, 3918, 3918, 3918, 4552, 4552, 4553, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 4554, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 4555, 4556, 3918, 3918, 4557, 3918, 4558, 4558, 4559, 3918, - 4560, 3918, 3918, 4561, 4561, 3918, 3918, 4562, 4562, 4563, - 4563, 3918, 4564, 4564, 4565, 4565, 3918, 4566, 4566, 4567, - 4567, 4568, 4568, 4569, 3918, 4570, 4570, 3918, 4571, 3918, - 3918, 4572, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 4573, 4574, 4574, 4574, 4574, 4575, 4575, 4574, 4574, 4574, - - 4574, 4574, 4574, 4574, 3918, 4574, 4574, 4574, 4574, 4574, - 4574, 4574, 4574, 3918, 4574, 4574, 4574, 4574, 4574, 4574, - 4574, 4574, 4574, 4574, 4576, 4577, 4578, 4577, 3328, 4579, - 4580, 3918, 3918, 4581, 4581, 4582, 3918, 3918, 3918, 3918, - 4583, 3918, 3918, 3918, 3918, 4584, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 4585, 4585, 3918, 3918, 4585, 4585, - 3918, 4585, 3918, 3918, 4585, 3918, 4585, 3918, 3918, 3918, - 4586, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 4587, 3918, 3918, 3918, 4588, 3918, 3918, 3918, 3918, 3918, - 4589, 4590, 4590, 3918, 4591, 4591, 4592, 4592, 4593, 4593, - 3918, 4594, 3918, 3918, 4595, 3918, 4596, 3918, 4597, 4597, - 3918, 4598, 4598, 4599, 3918, 4600, 4600, 3918, 4601, 3918, - 3918, 3918, 4602, 4603, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4604, 4605, - 4605, 4605, 3918, 4605, 4605, 4605, 4605, 4605, 4605, 3918, - 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, - 4605, 4605, 4605, 4606, 4607, 4608, 4607, 3918, 3918, 3918, - - 4609, 4610, 3918, 3918, 4611, 3918, 3918, 4612, 4613, 4614, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 4615, 4615, 3918, 4615, 4615, 4615, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 4616, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 4617, - 3918, 3918, 3918, 4618, 3918, 3918, 4619, 4620, 3918, 3918, - 4621, 4621, 4622, 3918, 4623, 4623, 4624, 4624, 3918, 4625, - 4625, 3918, 4626, 3918, 3918, 3918, 3918, 3918, 4627, 3918, - 3918, 3918, 4628, 3918, 4629, 3918, 3918, 3918, 4630, 4631, - - 4631, 4631, 4631, 4631, 4631, 4632, 4631, 4632, 4631, 4631, - 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4633, 4634, - 4635, 3918, 4636, 4637, 3918, 4637, 3918, 3918, 3625, 3622, - 3918, 3918, 4638, 3918, 3918, 4639, 3918, 4640, 4641, 4642, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 4643, 3918, 3918, 4643, 4643, 3918, 3918, 3918, 4644, 4645, - 3918, 4646, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 4647, 3918, 3918, 4648, 4649, 4649, 3918, 4650, 4650, - 4651, 3918, 3918, 3918, 4652, 3918, 3918, 3918, 3918, 4653, - 4654, 3918, 3918, 3918, 4655, 4656, 4656, 4656, 4656, 4656, - - 4656, 4656, 4657, 4656, 4656, 4656, 4657, 4656, 4658, 4659, - 4660, 3918, 4661, 3918, 4661, 3918, 3918, 3918, 3918, 3918, - 4662, 3918, 4663, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 4664, 3918, 4664, 4664, 3918, 4665, 4665, - 3918, 3918, 3918, 3918, 4666, 3918, 4667, 4668, 3918, 4651, - 4651, 3918, 3918, 3918, 3918, 4654, 3918, 3918, 4656, 4656, - 4656, 4656, 4656, 4656, 4656, 4657, 4656, 4656, 4658, 4659, - 4660, 3918, 3712, 4669, 3712, 3918, 4670, 3918, 3758, 3758, - 3918, 3918, 4662, 3918, 3918, 3918, 3918, 4664, 4664, 3918, - 3918, 3918, 4666, 4671, 3712, 4668, 4668, 3918, 3918, 3918, - - 3758, 3758, 4656, 4656, 4656, 4656, 4656, 3918, 4656, 3769, - 3770, 3918, 4670, 3918, 3758, 4672, 3918, 4662, 4673, 3918, - 3918, 3918, 3918, 3918, 3918, 4664, 3918, 4666, 3918, 3918, - 3918, 4656, 4656, 4656, 4656, 3918, 3770, 3712, 3758, 3918, - 4674, 4662, 3918, 3918, 3918, 3918, 3918, 3918, 4664, 4656, - 4656, 4656, 4656, 3918, 4675, 3836, 4675, 4676, 3836, 3854, - 3770, 3712, 3758, 3918, 3918, 3918, 3918, 4656, 4656, 3918, - 4656, 3918, 3918, 3770, 3712, 3758, 3918, 3918, 3918, 4656, - 3918, 3918, 3872, 4676, 3872, 3836, 3836, 3770, 3712, 3758, - 4656, 3854, 3836, 3872, 3712, 3758, 4656, 3872, 3836, 3712, - - 3758, 4656, 3872, 3836, 3712, 3918, 3872, 3836, 3712, 3872, - 3836, 3872, 3836, 3872, 3836, 3872, 3872, 0, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918 + 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, + 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4591, 4591, + 2220, 4091, 4091, 4590, 4592, 4593, 4594, 4595, 4091, 4091, + 4596, 4597, 4598, 4091, 4599, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4600, 4601, 4602, 4091, 4091, 4603, + 4604, 4091, 4091, 4605, 4605, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4606, 4607, 4608, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4609, 4091, 4091, 4091, 4610, 4610, + 4610, 4610, 4610, 4610, 4610, 4610, 4610, 4610, 4610, 4610, + 4610, 4610, 4610, 4610, 4610, 4610, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4611, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4612, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4613, 4614, 4615, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4616, + 4091, 4617, 4617, 4091, 4618, 4091, 4619, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4620, 4091, 4091, 4091, 4091, 4621, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4622, 4622, + 4091, 4623, 4091, 4091, 4091, 4624, 4091, 4091, 4625, 4091, + 4626, 4091, 4627, 4091, 4091, 4628, 4091, 4629, 4091, 4630, + + 4091, 4091, 4631, 4091, 4632, 4632, 4091, 4091, 4633, 4091, + 4091, 4091, 4634, 4091, 4635, 4635, 4091, 4091, 4091, 4091, + 4091, 4091, 4636, 4091, 4637, 4091, 4638, 4091, 4639, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4640, 4641, 4641, 4641, 4641, 4641, 4641, + 4641, 4641, 4641, 4641, 4641, 4641, 4641, 4641, 4641, 4641, + 4641, 4641, 4641, 4641, 4641, 4641, 4641, 4641, 4641, 4641, + 4641, 4641, 4641, 4641, 4641, 4641, 4641, 4641, 4641, 4641, + + 4641, 4641, 4642, 4643, 4643, 4091, 4091, 4091, 4644, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4645, 4091, 4646, 4646, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4647, 4648, 4091, 4648, 4648, 4648, 4648, 4648, 4648, + 4648, 4648, 4648, 4648, 4648, 4648, 4648, 4648, 4648, 4648, + 4648, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4649, 4091, 4091, 4650, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4651, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4652, 4652, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4653, 4653, 4654, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4655, 4656, 4656, 4657, + 4657, 4091, 4091, 4091, 4658, 4091, 4091, 4659, 4091, 4660, + 4091, 4661, 4091, 4091, 4662, 4091, 4663, 4091, 4664, 4091, + + 4091, 4665, 4665, 4666, 4091, 4091, 4667, 4091, 4668, 4668, + 4091, 4091, 4091, 4091, 4091, 4091, 4669, 4091, 4670, 4091, + 4671, 4091, 4672, 4091, 4091, 4091, 4673, 4673, 4091, 4091, + 4674, 4674, 4675, 4091, 4676, 4676, 4677, 4677, 4678, 4678, + 4091, 4679, 4679, 4680, 4680, 4681, 4681, 4091, 4682, 4682, + 4683, 4091, 4091, 4684, 4684, 4091, 4091, 4685, 4685, 4686, + 4091, 4091, 4091, 4687, 4091, 4688, 4091, 4091, 4689, 4689, + 4690, 4690, 4691, 4691, 4692, 4692, 4693, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4694, 4695, 4695, 4695, 4695, + 4695, 4696, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, + 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, + 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, + 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4697, 4698, 4699, + 4700, 4701, 4091, 4091, 4091, 4702, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4703, 4091, 4704, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4705, 4705, 4705, 4705, 4705, 4705, 4705, 4705, + 4705, 4705, 4705, 4705, 4705, 4705, 4091, 4091, 4705, 4091, + 4091, 4091, 4091, 4091, 4091, 4706, 4091, 4707, 4091, 4091, + 4708, 4708, 4709, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4710, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4711, 4091, 4091, 4091, 4712, 4712, 4713, 4091, 4714, 4714, + 4715, 4715, 4716, 4716, 4091, 4717, 4717, 4718, 4718, 4719, + 4719, 4091, 4720, 4720, 4091, 4721, 4721, 4722, 4091, 4091, + 4091, 4723, 4091, 4724, 4091, 4091, 4725, 4725, 4726, 4726, + 4727, 4727, 4728, 4728, 4729, 4091, 4730, 4091, 4091, 4731, + 4091, 4732, 4732, 4733, 4091, 4734, 4091, 4735, 4735, 4091, + 4736, 4091, 4091, 4737, 4737, 4091, 4091, 4738, 4738, 4739, + 4739, 4091, 4740, 4740, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4741, 4742, 4742, 4742, 4742, 4743, 4744, 4745, 4742, 4742, + 4742, 4742, 4742, 4742, 4742, 4091, 4742, 4742, 4742, 4742, + 4742, 4742, 4742, 4742, 4742, 4742, 4742, 4742, 4742, 4742, + 4742, 4742, 4742, 4742, 4742, 4742, 4742, 4742, 4742, 4742, + 4746, 4746, 4747, 4747, 4748, 4749, 4091, 4091, 4750, 4091, + 4751, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4752, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4753, 4091, 4753, + 4753, 4753, 4091, 4091, 4753, 4753, 4091, 4091, 4753, 4753, + 4753, 4753, 4091, 4091, 4091, 4091, 4754, 4754, 4755, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4756, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4757, 4758, 4091, 4091, 4759, 4091, 4760, 4760, + 4761, 4091, 4762, 4091, 4091, 4763, 4763, 4091, 4091, 4764, + + 4764, 4765, 4765, 4091, 4766, 4766, 4767, 4767, 4091, 4768, + 4768, 4769, 4769, 4770, 4770, 4771, 4091, 4772, 4772, 4091, + 4773, 4091, 4091, 4774, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4775, 4776, 4776, 4776, 4776, 4777, 4777, + 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4091, 4776, 4776, + 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4091, 4776, 4776, + 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4778, 4779, + 4780, 4779, 3492, 4781, 4782, 4091, 4091, 4783, 4783, 4784, + + 4091, 4091, 4091, 4091, 4785, 4091, 4091, 4091, 4091, 4786, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4787, 4787, + 4091, 4091, 4787, 4787, 4091, 4787, 4091, 4091, 4787, 4091, + 4787, 4091, 4091, 4091, 4788, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4789, 4091, 4091, 4091, 4790, 4091, + 4091, 4091, 4091, 4091, 4791, 4792, 4792, 4091, 4793, 4793, + 4794, 4794, 4795, 4795, 4091, 4796, 4091, 4091, 4797, 4091, + + 4798, 4091, 4799, 4799, 4091, 4800, 4800, 4801, 4091, 4802, + 4802, 4091, 4803, 4091, 4091, 4091, 4804, 4805, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4806, 4807, 4807, 4807, 4091, 4807, 4807, + 4807, 4807, 4807, 4807, 4091, 4807, 4807, 4807, 4807, 4807, + 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4808, + 4809, 4810, 4809, 4091, 4091, 4091, 4811, 4812, 4091, 4091, + 4813, 4091, 4091, 4814, 4815, 4816, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4817, 4817, 4091, 4817, 4817, 4817, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4818, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4819, 4091, 4091, 4091, 4820, + 4091, 4091, 4821, 4822, 4091, 4091, 4823, 4823, 4824, 4091, + 4825, 4825, 4826, 4826, 4091, 4827, 4827, 4091, 4828, 4091, + 4091, 4091, 4091, 4091, 4829, 4091, 4091, 4091, 4091, 4830, + 4091, 4831, 4091, 4091, 4091, 4832, 4833, 4833, 4833, 4833, + 4833, 4833, 4834, 4833, 4834, 4833, 4833, 4833, 4833, 4833, + 4833, 4833, 4833, 4833, 4833, 4833, 4835, 4836, 4837, 4091, + 4838, 4839, 4840, 4091, 4839, 4841, 3794, 3790, 4091, 4091, + + 4842, 4091, 4091, 4843, 4091, 4844, 4845, 4846, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4847, 4091, + 4091, 4847, 4847, 4091, 4091, 4091, 4848, 4849, 4091, 4850, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4851, + 4091, 4091, 4852, 4853, 4853, 4091, 4854, 4854, 4855, 4091, + 4091, 4091, 4856, 4091, 4091, 4091, 4091, 4091, 4857, 4858, + 4091, 4091, 4091, 4859, 4860, 4860, 4860, 4860, 4860, 4860, + 4860, 4861, 4860, 4860, 4860, 4860, 4861, 4860, 4862, 4863, + 4864, 4091, 4865, 4091, 4865, 4091, 4866, 4091, 4091, 4091, + 4867, 4091, 4868, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4869, 4091, 4869, 4869, 4091, 4870, 4870, + 4091, 4091, 4091, 4091, 4871, 4091, 4872, 4873, 4091, 4855, + 4855, 4091, 4091, 4091, 4091, 4091, 4091, 4858, 4091, 4091, + 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4861, 4860, + 4860, 4862, 4863, 4864, 4091, 3882, 4874, 3882, 4091, 4875, + 4091, 3930, 3930, 4091, 4091, 4867, 4091, 4091, 4091, 4091, + 4869, 4869, 4091, 4091, 4091, 4871, 4876, 3882, 4873, 4873, + 4091, 4091, 4091, 3930, 3930, 4860, 4860, 4860, 4860, 4860, + 4091, 4860, 3942, 3943, 4091, 4875, 4091, 3930, 4877, 4091, + 4867, 4878, 4091, 4091, 4091, 4091, 4091, 4091, 4869, 4091, + + 4871, 4091, 4091, 4091, 4860, 4860, 4860, 4860, 4091, 3943, + 3882, 3930, 4091, 4879, 4867, 4091, 4091, 4091, 4091, 4091, + 4091, 4869, 4860, 4860, 4860, 4860, 4091, 4880, 4009, 4880, + 4881, 4009, 4027, 3943, 3882, 3930, 4091, 4091, 4091, 4091, + 4860, 4860, 4091, 4860, 4091, 4091, 3943, 3882, 3930, 4091, + 4091, 4091, 4860, 4091, 4091, 4045, 4881, 4045, 4009, 4009, + 3943, 3882, 3930, 4860, 4027, 4009, 4045, 3882, 3930, 4860, + 4045, 4009, 3882, 3930, 4860, 4045, 4009, 3882, 4091, 4045, + 4009, 3882, 4045, 4009, 4045, 4009, 4045, 4009, 4045, 4045, + 0, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091 } ; -static yyconst short int yy_nxt[34104] = +static yyconst short int yy_nxt[34292] = { 0, - 3918, 283, 3918, 284, 285, 283, 1035, 284, 285, 1035, - 1036, 1036, 1036, 1036, 3918, 1078, 1018, 1018, 1024, 1078, - 286, 1019, 1019, 1025, 286, 282, 283, 282, 284, 285, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 286, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 282, 282, 282, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - - 287, 287, 287, 287, 287, 287, 287, 287, 287, 282, - 282, 282, 289, 1538, 284, 290, 289, 1517, 284, 290, - 294, 295, 296, 297, 295, 291, 298, 1168, 1169, 291, - 283, 292, 284, 285, 283, 292, 284, 285, 2513, 299, - 294, 295, 296, 297, 295, 1190, 298, 1191, 316, 286, - 284, 317, 316, 286, 284, 317, 1175, 1176, 2146, 299, - 398, 564, 284, 399, 735, 1018, 283, 318, 284, 285, - 1019, 318, 400, 401, 1052, 300, 319, 1052, 320, 402, - 319, 1018, 320, 2147, 1053, 286, 1019, 1054, 736, 1081, - 1102, 1102, 1102, 1102, 1082, 300, 282, 283, 301, 302, - - 303, 301, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 286, 282, 282, 282, - 282, 282, 282, 304, 305, 282, 282, 282, 282, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 282, 282, 282, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 307, 282, 308, 282, 283, 309, 284, 285, 309, 282, - 282, 282, 282, 282, 310, 282, 311, 282, 310, 282, - - 282, 282, 282, 286, 282, 282, 282, 282, 282, 282, - 312, 310, 313, 310, 282, 282, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 311, 282, - 282, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 307, 282, 282, - 282, 283, 321, 322, 323, 321, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 324, 282, 282, - 286, 282, 282, 282, 282, 282, 282, 325, 305, 326, - - 282, 282, 282, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 282, 282, 282, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 328, 282, 282, 330, 331, 332, - 333, 331, 330, 331, 332, 333, 331, 283, 1076, 284, - 285, 1076, 1748, 337, 1038, 1112, 334, 1038, 338, 339, - 1113, 334, 1749, 340, 1024, 283, 286, 284, 285, 1025, - 1018, 337, 2515, 1018, 341, 1019, 338, 339, 1019, 3918, - - 283, 340, 284, 285, 286, 283, 375, 376, 377, 375, - 1177, 1178, 341, 1864, 283, 375, 376, 377, 375, 286, - 1081, 382, 1081, 1228, 383, 1082, 1018, 1082, 1077, 335, - 382, 1019, 1142, 383, 335, 336, 398, 1143, 284, 399, - 336, 389, 390, 391, 392, 390, 1160, 1166, 400, 401, - 342, 1161, 1167, 393, 394, 402, 1030, 395, 1337, 1865, - 396, 1110, 1110, 1110, 1110, 1368, 1280, 1016, 342, 282, - 283, 343, 344, 345, 343, 282, 282, 346, 282, 282, - 347, 282, 348, 282, 347, 282, 349, 282, 282, 350, - 282, 282, 282, 282, 282, 282, 351, 352, 353, 354, - - 282, 282, 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 356, 282, 282, 355, 355, 355, - 357, 355, 358, 355, 355, 355, 359, 355, 355, 360, - 361, 355, 362, 355, 355, 363, 364, 365, 366, 355, - 355, 355, 355, 367, 282, 368, 282, 283, 369, 370, - 371, 369, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 286, 282, 282, 282, - 282, 282, 282, 372, 282, 282, 282, 282, 282, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 282, 282, 282, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 282, 282, 374, 282, 283, 375, 376, 377, 375, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 378, 282, 282, 379, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 380, 282, 282, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 282, 282, - - 282, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 282, 282, 282, - 283, 1328, 284, 285, 1328, 1171, 283, 384, 284, 285, - 1172, 1875, 385, 384, 1117, 1117, 1117, 1117, 385, 286, - 1329, 421, 1876, 284, 422, 286, 386, 387, 1044, 1045, - 1045, 1044, 386, 387, 389, 390, 391, 392, 390, 414, - 423, 415, 416, 1166, 1018, 2535, 393, 394, 1167, 1019, - 395, 417, 414, 396, 415, 416, 1185, 421, 418, 284, - 422, 1186, 1337, 481, 417, 482, 483, 419, 1018, 1227, - - 1280, 418, 1181, 1200, 1016, 424, 423, 425, 1164, 1227, - 419, 1164, 484, 386, 1165, 283, 1016, 284, 285, 386, - 389, 403, 404, 405, 403, 1227, 427, 428, 429, 430, - 428, 1206, 431, 1018, 286, 1227, 1199, 432, 1207, 406, - 1047, 424, 436, 425, 1869, 433, 407, 407, 485, 408, - 1870, 427, 428, 429, 430, 428, 283, 431, 284, 285, - 3918, 1337, 432, 451, 1722, 452, 453, 1018, 1182, 454, - 433, 1182, 1019, 1722, 455, 286, 283, 456, 284, 285, - 409, 1183, 457, 436, 1255, 437, 1227, 1211, 1027, 1028, - 1028, 1027, 1218, 1280, 410, 286, 411, 451, 412, 462, - - 453, 1336, 1188, 407, 389, 403, 404, 405, 403, 434, - 435, 456, 1227, 1029, 1192, 1213, 463, 1016, 451, 1193, - 462, 453, 467, 406, 468, 469, 437, 1336, 470, 1214, - 407, 407, 456, 408, 434, 435, 471, 463, 2536, 1219, - 493, 472, 494, 495, 1220, 2537, 458, 459, 1115, 1115, - 1115, 1115, 464, 487, 488, 284, 489, 488, 1197, 496, - 465, 1197, 1204, 1116, 409, 1204, 493, 490, 494, 495, - 1030, 1198, 491, 464, 1224, 1205, 1249, 473, 410, 1225, - 411, 1223, 412, 2538, 1375, 496, 1376, 407, 282, 283, - 438, 439, 440, 438, 282, 282, 282, 282, 282, 282, - - 282, 282, 282, 282, 282, 282, 282, 282, 286, 282, - 282, 282, 282, 282, 282, 441, 282, 282, 282, 282, - 282, 442, 442, 442, 442, 442, 442, 442, 442, 442, - 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, - 442, 442, 442, 282, 282, 282, 442, 442, 442, 442, - 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, - 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, - 442, 442, 282, 282, 443, 282, 283, 444, 445, 446, - 444, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 286, 282, 282, 282, 282, - - 282, 282, 447, 282, 282, 282, 282, 282, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 282, 282, 282, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 282, - 282, 449, 451, 460, 452, 453, 460, 1382, 454, 461, - 2541, 1383, 283, 455, 284, 285, 456, 1472, 1384, 1224, - 467, 457, 468, 469, 1250, 1478, 470, 475, 3918, 452, - 476, 286, 1018, 475, 471, 452, 476, 1225, 1337, 472, - - 481, 477, 482, 483, 1642, 3918, 478, 477, 1022, 1022, - 1022, 1022, 478, 487, 488, 284, 489, 488, 283, 484, - 284, 285, 283, 1018, 284, 285, 1023, 490, 1250, 3918, - 1280, 283, 491, 284, 285, 473, 1411, 286, 1412, 1221, - 1722, 286, 1221, 499, 500, 458, 459, 2546, 1224, 283, - 286, 284, 285, 1225, 1722, 485, 465, 1022, 1022, 1022, - 1022, 499, 500, 502, 503, 504, 505, 503, 286, 1222, - 479, 579, 2132, 588, 589, 1023, 479, 506, 1022, 1022, - 1022, 1022, 507, 2548, 502, 511, 504, 505, 511, 1382, - 590, 508, 1035, 1222, 509, 1035, 1023, 283, 512, 284, - - 285, 497, 498, 513, 1591, 497, 498, 515, 516, 517, - 518, 516, 508, 1472, 1598, 509, 286, 1383, 510, 515, - 516, 517, 518, 516, 1384, 522, 519, 523, 1249, 283, - 1591, 284, 285, 1199, 1656, 520, 1016, 521, 519, 510, - 1224, 283, 1016, 284, 285, 1250, 1224, 520, 286, 521, - 1224, 1225, 1590, 524, 525, 1297, 2430, 522, 1642, 523, - 286, 283, 2549, 284, 285, 1130, 1130, 1130, 1130, 1136, - 1137, 1137, 1136, 524, 525, 1646, 1670, 1131, 1671, 1590, - 286, 282, 283, 282, 284, 285, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - - 282, 286, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 282, 282, 282, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 282, 282, 282, 528, 529, - 530, 531, 529, 1472, 528, 529, 530, 531, 529, 1168, - 1169, 2074, 532, 1045, 1045, 1045, 1045, 533, 532, 1137, - 1137, 1137, 1137, 533, 534, 535, 536, 537, 538, 536, - - 534, 534, 534, 534, 534, 534, 534, 534, 534, 539, - 534, 534, 534, 534, 540, 549, 550, 551, 552, 550, - 2235, 534, 534, 542, 534, 534, 543, 1224, 579, 553, - 588, 589, 1019, 554, 555, 1035, 1018, 283, 1035, 626, - 285, 1309, 283, 556, 626, 285, 557, 590, 1018, 534, - 544, 534, 611, 1314, 612, 613, 286, 672, 1018, 673, - 674, 286, 1018, 1019, 614, 3918, 615, 1019, 1765, 2550, - 558, 616, 1045, 1045, 1045, 1045, 675, 1766, 534, 534, - 534, 534, 535, 545, 537, 538, 545, 534, 534, 534, - 534, 534, 534, 534, 534, 534, 546, 534, 534, 534, - - 534, 547, 549, 559, 560, 561, 559, 2553, 534, 534, - 542, 534, 534, 543, 1315, 1660, 562, 1315, 2554, 1660, - 554, 563, 672, 617, 673, 674, 633, 1316, 284, 634, - 556, 2555, 611, 557, 612, 613, 534, 544, 534, 635, - 633, 675, 284, 634, 614, 636, 615, 1115, 1115, 1115, - 1115, 616, 2239, 635, 3918, 1018, 1018, 558, 1018, 636, - 1019, 1349, 1116, 1019, 2240, 534, 534, 534, 564, 565, - 566, 567, 568, 566, 564, 564, 564, 564, 564, 564, - 564, 564, 564, 569, 564, 564, 564, 564, 570, 579, - 580, 581, 582, 580, 2556, 564, 564, 572, 564, 564, - - 573, 1799, 679, 617, 680, 681, 1197, 1660, 583, 1197, - 1800, 1660, 657, 658, 659, 660, 658, 1018, 2557, 1198, - 584, 682, 1019, 564, 574, 564, 661, 1058, 1058, 1058, - 1058, 662, 657, 658, 659, 660, 658, 1137, 1137, 1137, - 1137, 1175, 1176, 2558, 585, 1059, 661, 1149, 1149, 1149, - 1149, 662, 564, 564, 564, 564, 565, 575, 567, 568, - 575, 564, 564, 564, 564, 564, 564, 564, 564, 564, - 576, 564, 564, 564, 564, 577, 579, 586, 581, 582, - 586, 1765, 564, 564, 572, 564, 564, 573, 1293, 664, - 1766, 284, 665, 1676, 1052, 587, 1280, 1052, 679, 1294, - - 680, 681, 666, 667, 1238, 1177, 1178, 584, 668, 1369, - 564, 574, 564, 664, 1370, 284, 665, 682, 727, 1676, - 728, 729, 1155, 1155, 1155, 1155, 666, 667, 1755, 1889, - 1890, 585, 668, 1208, 1208, 1208, 1208, 730, 1756, 564, - 564, 564, 282, 283, 591, 592, 593, 591, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 594, 282, 282, - 282, 282, 286, 282, 282, 282, 282, 282, 282, 595, - 282, 282, 282, 282, 282, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 282, 282, 282, - - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 282, 282, 597, 282, - 283, 598, 599, 600, 598, 282, 601, 282, 282, 282, - 282, 282, 282, 282, 282, 717, 282, 718, 719, 603, - 1373, 640, 641, 642, 643, 641, 1675, 282, 282, 282, - 282, 282, 1377, 1838, 720, 644, 717, 1378, 718, 719, - 645, 1856, 1642, 721, 611, 625, 626, 613, 625, 646, - 1857, 2559, 647, 1675, 282, 720, 282, 1380, 727, 1838, - 728, 729, 1381, 616, 721, 1115, 1115, 1115, 1115, 1208, - - 1208, 1208, 1208, 627, 1388, 1052, 648, 730, 1052, 1379, - 1116, 1931, 1932, 282, 282, 282, 282, 283, 598, 599, - 600, 598, 282, 601, 282, 282, 282, 282, 282, 282, - 282, 282, 1649, 282, 628, 283, 603, 284, 285, 640, - 649, 650, 651, 649, 282, 282, 282, 282, 282, 1862, - 629, 1391, 630, 652, 286, 1396, 1392, 631, 653, 1863, - 1389, 611, 625, 626, 613, 625, 283, 646, 284, 285, - 654, 282, 283, 282, 284, 285, 283, 1967, 284, 285, - 616, 1060, 1060, 1060, 1060, 286, 1208, 1208, 1208, 1208, - 627, 286, 1397, 1018, 655, 286, 1971, 1398, 1225, 1061, - - 282, 282, 282, 282, 283, 604, 605, 606, 604, 282, - 607, 282, 282, 282, 282, 282, 282, 282, 282, 2562, - 282, 628, 684, 609, 685, 686, 684, 691, 685, 686, - 691, 282, 282, 282, 282, 282, 687, 629, 1078, 630, - 692, 688, 1078, 1385, 631, 688, 1385, 283, 1598, 284, - 285, 1393, 709, 689, 1393, 709, 1386, 689, 282, 283, - 282, 284, 285, 777, 1394, 569, 286, 1190, 1018, 1191, - 710, 751, 752, 1250, 778, 1018, 1016, 690, 286, 564, - 1019, 690, 735, 1028, 1028, 1028, 1028, 282, 282, 282, - 282, 283, 604, 605, 606, 604, 282, 607, 282, 282, - - 282, 282, 282, 282, 282, 282, 736, 282, 1029, 694, - 609, 695, 696, 704, 1409, 705, 706, 3918, 282, 282, - 282, 282, 282, 697, 1018, 1862, 1413, 698, 699, 1407, - 779, 1414, 707, 1883, 1722, 1888, 283, 1018, 284, 285, - 700, 1018, 1417, 1722, 708, 282, 1420, 282, 751, 752, - 389, 390, 391, 392, 390, 286, 1018, 1215, 1216, 1215, - 1215, 1019, 753, 754, 700, 2563, 395, 1018, 708, 396, - 1211, 1368, 1019, 1016, 282, 282, 282, 282, 283, 618, - 619, 620, 618, 282, 282, 282, 282, 282, 282, 282, - 282, 621, 282, 282, 282, 282, 282, 286, 282, 282, - - 282, 282, 282, 282, 622, 282, 282, 282, 282, 282, - 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, - 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, - 623, 623, 282, 282, 282, 623, 623, 623, 623, 623, - 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, - 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, - 623, 282, 282, 624, 282, 283, 282, 284, 285, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 594, - 282, 282, 282, 282, 286, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 637, 637, 637, - - 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, - 637, 637, 637, 637, 637, 637, 637, 637, 637, 282, - 282, 282, 637, 637, 637, 637, 637, 637, 637, 637, - 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, - 637, 637, 637, 637, 637, 637, 637, 637, 282, 282, - 282, 282, 283, 282, 284, 285, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 594, 282, 282, 282, - 282, 286, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 638, 638, 638, 638, 638, 638, - 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, - - 638, 638, 638, 638, 638, 638, 282, 282, 282, 638, - 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, - 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, - 638, 638, 638, 638, 638, 282, 282, 282, 282, 283, - 282, 669, 285, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 594, 282, 282, 282, 282, 286, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 670, 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 282, 282, 282, 670, 670, 670, 670, - - 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 282, 282, 282, 282, 283, 282, 676, 285, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 594, 282, 282, 282, 282, 286, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 677, 677, - 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, - 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, - 282, 282, 282, 677, 677, 677, 677, 677, 677, 677, - 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, - - 677, 677, 677, 677, 677, 677, 677, 677, 677, 282, - 282, 282, 694, 701, 695, 696, 701, 704, 1472, 705, - 706, 389, 390, 391, 392, 390, 702, 2058, 2059, 1227, - 698, 699, 1400, 753, 754, 1753, 707, 395, 1754, 756, - 396, 284, 757, 700, 756, 1018, 284, 757, 708, 2564, - 1019, 790, 758, 284, 791, 1227, 2239, 758, 759, 1400, - 1449, 792, 2098, 759, 1449, 1450, 1018, 700, 2257, 1453, - 793, 1019, 708, 564, 565, 709, 567, 568, 709, 564, - 564, 564, 564, 564, 564, 564, 564, 564, 569, 564, - 564, 564, 564, 710, 761, 762, 763, 764, 762, 2565, - - 564, 564, 711, 564, 564, 712, 765, 766, 1879, 1549, - 767, 1556, 1880, 768, 1550, 790, 1557, 284, 791, 761, - 762, 763, 764, 762, 283, 792, 284, 285, 564, 713, - 564, 765, 766, 2566, 793, 767, 1360, 1361, 768, 1360, - 777, 1622, 1472, 286, 1216, 1216, 1216, 1216, 1623, 1362, - 1624, 778, 1254, 1254, 1254, 1254, 1472, 564, 564, 564, - 564, 565, 714, 567, 568, 714, 564, 564, 564, 564, - 564, 564, 564, 564, 564, 576, 564, 564, 564, 564, - 715, 781, 782, 783, 784, 782, 2104, 564, 564, 711, - 564, 564, 712, 1028, 1028, 1028, 1028, 1375, 2444, 1376, - - 785, 830, 789, 831, 791, 789, 1859, 779, 1644, 1860, - 1645, 822, 786, 284, 823, 564, 713, 564, 1029, 824, - 832, 283, 1472, 284, 285, 825, 1215, 1216, 1215, 1215, - 826, 1268, 1267, 1268, 1268, 1662, 787, 1663, 1561, 1211, - 286, 1663, 827, 1562, 564, 564, 564, 282, 283, 282, - 722, 285, 282, 282, 723, 282, 282, 282, 282, 282, - 282, 282, 594, 1016, 282, 1472, 827, 725, 781, 782, - 783, 784, 782, 2092, 2093, 282, 282, 282, 282, 282, - 1293, 830, 789, 831, 791, 789, 1852, 788, 834, 789, - 831, 791, 789, 1885, 1920, 822, 1886, 284, 823, 786, - - 832, 1476, 282, 824, 282, 1472, 1477, 835, 283, 825, - 284, 285, 1280, 1852, 826, 1294, 1303, 1303, 1303, 1303, - 1238, 1920, 2455, 787, 1566, 1575, 827, 286, 2567, 1567, - 1576, 282, 282, 282, 282, 283, 282, 722, 285, 282, - 282, 723, 282, 282, 282, 282, 282, 282, 282, 594, - 827, 282, 1472, 822, 725, 284, 823, 1305, 1306, 1305, - 1305, 824, 282, 282, 282, 282, 282, 825, 1058, 1058, - 1058, 1058, 826, 834, 789, 831, 791, 789, 837, 789, - 831, 791, 789, 1948, 828, 822, 1059, 284, 823, 282, - 1018, 282, 835, 824, 1411, 1581, 1412, 838, 283, 825, - - 284, 285, 1018, 2448, 826, 1018, 1018, 1019, 828, 1948, - 1586, 1589, 1032, 1032, 1032, 1032, 828, 286, 282, 282, - 282, 282, 283, 282, 731, 285, 282, 282, 732, 282, - 282, 282, 282, 282, 282, 282, 594, 1029, 282, 1034, - 828, 734, 837, 789, 831, 791, 789, 2568, 1952, 282, - 282, 282, 282, 282, 1018, 283, 1887, 284, 285, 1593, - 1861, 838, 873, 1018, 874, 875, 2239, 2264, 1595, 840, - 841, 842, 843, 841, 286, 1952, 282, 922, 282, 284, - 923, 876, 881, 282, 284, 285, 282, 1950, 844, 2569, - 877, 1305, 1306, 1305, 1305, 1472, 924, 845, 1599, 1605, - - 846, 882, 1951, 1600, 1606, 282, 282, 282, 282, 283, - 282, 731, 285, 282, 282, 732, 282, 282, 282, 282, - 282, 282, 282, 594, 847, 282, 2167, 1472, 734, 840, - 841, 842, 843, 841, 2168, 2105, 282, 282, 282, 282, - 282, 1610, 873, 1879, 874, 875, 1611, 1896, 844, 881, - 282, 284, 285, 282, 1983, 1471, 852, 845, 853, 854, - 846, 876, 1471, 282, 922, 282, 284, 923, 882, 283, - 877, 284, 285, 1856, 2102, 855, 1310, 1311, 1310, 1310, - 1615, 1620, 1857, 924, 847, 1616, 1621, 856, 286, 1884, - 1472, 1471, 282, 282, 282, 282, 283, 282, 284, 285, - - 282, 282, 737, 282, 282, 282, 282, 282, 282, 282, - 594, 856, 282, 2570, 852, 739, 853, 854, 884, 282, - 284, 285, 282, 282, 282, 282, 282, 282, 884, 282, - 284, 285, 282, 855, 2108, 2246, 2433, 885, 887, 282, - 284, 285, 282, 2259, 1517, 856, 283, 885, 284, 285, - 282, 932, 282, 933, 934, 1642, 1472, 888, 887, 282, - 284, 285, 282, 1018, 1722, 286, 1018, 1647, 1019, 856, - 935, 1653, 1648, 1049, 1049, 1049, 1049, 888, 1722, 282, - 282, 282, 282, 283, 282, 284, 285, 282, 282, 737, - 282, 282, 282, 282, 282, 282, 282, 594, 1051, 282, - - 2162, 2571, 739, 890, 282, 284, 285, 282, 2103, 2162, - 282, 282, 282, 282, 282, 890, 282, 284, 285, 282, - 2572, 2573, 891, 899, 900, 901, 902, 900, 899, 900, - 901, 902, 900, 932, 891, 933, 934, 282, 926, 282, - 284, 927, 903, 926, 282, 284, 927, 903, 1230, 282, - 2574, 2162, 935, 1310, 1311, 1310, 1310, 928, 1322, 1322, - 1322, 1322, 928, 1240, 1283, 2162, 282, 282, 282, 282, - 283, 282, 740, 285, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 594, 282, 282, 282, 282, 286, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - - 282, 282, 741, 741, 741, 741, 741, 741, 741, 741, - 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, - 741, 741, 741, 741, 282, 282, 282, 741, 741, 741, - 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, - 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, - 741, 741, 741, 282, 282, 282, 742, 743, 744, 745, - 746, 744, 742, 742, 742, 742, 742, 742, 742, 742, - 742, 742, 742, 742, 742, 742, 747, 742, 742, 742, - 742, 742, 742, 748, 742, 742, 742, 742, 742, 749, - 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, - - 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, - 749, 742, 742, 742, 749, 749, 749, 749, 749, 749, - 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, - 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, - 742, 742, 750, 282, 283, 769, 770, 771, 769, 282, - 282, 282, 282, 282, 772, 282, 282, 282, 772, 282, - 773, 282, 282, 350, 282, 282, 282, 282, 282, 282, - 282, 774, 282, 775, 282, 282, 776, 776, 776, 776, - 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, - 776, 776, 776, 776, 776, 776, 776, 776, 282, 282, - - 282, 776, 776, 776, 776, 776, 776, 776, 776, 776, - 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, - 776, 776, 776, 776, 776, 776, 776, 282, 282, 282, - 789, 790, 794, 795, 796, 794, 789, 789, 797, 798, - 799, 792, 789, 789, 789, 789, 800, 789, 800, 801, - 802, 800, 800, 800, 800, 800, 800, 803, 789, 804, - 789, 789, 805, 806, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 806, 789, 807, 789, 808, 806, - 806, 806, 806, 806, 809, 806, 810, 806, 806, 806, - - 806, 806, 811, 806, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 789, 789, 812, 282, 283, 282, - 284, 285, 282, 282, 813, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 2575, 893, 286, 894, 895, - 893, 2576, 894, 895, 1678, 282, 282, 282, 282, 282, - 283, 1916, 284, 285, 1916, 896, 929, 1657, 283, 896, - 284, 285, 1658, 283, 929, 284, 285, 897, 1678, 286, - 1018, 897, 282, 282, 282, 1684, 1926, 286, 283, 1927, - 948, 285, 286, 1340, 1339, 1340, 1340, 1390, 1390, 1390, - 1390, 897, 1680, 1018, 1700, 897, 1928, 286, 1019, 1701, - - 1929, 282, 282, 282, 282, 283, 282, 284, 285, 282, - 282, 813, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 1678, 911, 286, 912, 913, 911, 1668, 912, - 913, 1472, 282, 282, 282, 282, 282, 914, 2015, 1018, - 1672, 914, 915, 949, 1019, 1673, 915, 1018, 953, 2577, - 954, 955, 1019, 283, 916, 284, 285, 950, 916, 282, - 282, 282, 956, 1691, 2015, 1692, 953, 957, 954, 955, - 2578, 2437, 286, 1429, 1429, 1429, 1429, 1016, 917, 1018, - 956, 1018, 917, 1517, 1019, 957, 1019, 2107, 282, 282, - 282, 282, 283, 815, 816, 817, 815, 282, 282, 282, - - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 286, 282, 282, 282, 282, 282, 282, 818, 282, - 282, 282, 282, 282, 819, 819, 819, 819, 819, 819, - 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, - 819, 819, 819, 819, 819, 819, 282, 282, 282, 819, - 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, - 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, - 819, 819, 819, 819, 819, 282, 282, 820, 282, 283, - 282, 284, 285, 282, 282, 282, 1018, 282, 282, 282, - 282, 1717, 2579, 282, 959, 282, 284, 960, 849, 1689, - - 959, 1076, 284, 960, 1076, 2279, 282, 282, 282, 282, - 850, 1018, 283, 961, 284, 285, 1693, 2280, 283, 961, - 948, 285, 962, 1644, 963, 1645, 1038, 1720, 962, 1038, - 963, 286, 1721, 282, 850, 282, 1181, 286, 1016, 2163, - 1735, 973, 864, 966, 974, 1736, 1182, 975, 2163, 1182, - 1016, 865, 976, 977, 978, 1251, 866, 2580, 1251, 1183, - 979, 1077, 282, 282, 282, 283, 282, 284, 285, 282, - 282, 282, 2016, 282, 282, 282, 282, 865, 1016, 282, - 1893, 282, 866, 949, 849, 1252, 1002, 1197, 284, 1003, - 1197, 2581, 282, 282, 282, 282, 850, 950, 2016, 283, - - 1198, 284, 285, 1004, 973, 1005, 966, 974, 1030, 1252, - 975, 1040, 1040, 1040, 1040, 976, 977, 978, 286, 282, - 850, 282, 965, 979, 966, 967, 1743, 1745, 968, 864, - 1834, 1744, 1746, 969, 1076, 1835, 1041, 1076, 865, 2130, - 2582, 970, 2130, 866, 1124, 1124, 1124, 1124, 282, 282, - 282, 283, 282, 284, 285, 282, 282, 282, 282, 282, - 282, 282, 282, 1125, 865, 282, 282, 282, 282, 866, - 286, 994, 995, 996, 997, 995, 2026, 971, 282, 282, - 282, 282, 282, 1164, 1472, 980, 1164, 966, 981, 1165, - 998, 975, 1206, 1211, 1077, 1043, 976, 1199, 1218, 999, - - 1832, 1000, 2026, 1832, 979, 282, 282, 282, 965, 1204, - 966, 967, 1204, 982, 968, 983, 1211, 1472, 1833, 969, - 1274, 1218, 1205, 1274, 1935, 1249, 1288, 970, 1936, 1288, - 1199, 1937, 2461, 1198, 282, 282, 282, 282, 283, 282, - 284, 285, 282, 282, 282, 282, 282, 282, 282, 282, - 1276, 2583, 282, 282, 282, 282, 1289, 286, 1002, 1328, - 284, 1003, 1328, 971, 2136, 282, 282, 282, 282, 282, - 980, 2436, 966, 981, 1277, 1004, 975, 1005, 1329, 1660, - 1289, 976, 2584, 1660, 985, 986, 987, 988, 986, 979, - 975, 2136, 282, 282, 282, 976, 989, 990, 982, 1841, - - 983, 2418, 1841, 979, 1438, 1438, 1438, 1438, 1440, 1440, - 1440, 1440, 1842, 2419, 2420, 1063, 1063, 1063, 1063, 1439, - 2029, 282, 282, 282, 282, 283, 282, 284, 285, 282, - 282, 858, 282, 282, 282, 282, 282, 282, 282, 282, - 1065, 282, 2585, 2586, 860, 1328, 2029, 1007, 1328, 284, - 1008, 2175, 282, 282, 282, 282, 282, 985, 986, 987, - 988, 986, 1853, 975, 1329, 1854, 1009, 2176, 976, 989, - 990, 980, 986, 987, 988, 986, 979, 975, 1010, 282, - 1855, 282, 976, 989, 2171, 1060, 1060, 1060, 1060, 2172, - 979, 1462, 1463, 1464, 1462, 1465, 1466, 1464, 1465, 991, - - 2219, 992, 1010, 1061, 1063, 1063, 1063, 1063, 282, 282, - 282, 282, 283, 282, 284, 285, 282, 282, 858, 282, - 282, 282, 282, 282, 282, 282, 282, 2219, 282, 1065, - 2587, 860, 994, 995, 996, 997, 995, 2589, 2040, 282, - 282, 282, 282, 282, 980, 986, 987, 988, 986, 1767, - 975, 998, 1767, 1768, 1660, 976, 989, 1656, 1660, 1016, - 999, 1660, 1000, 979, 2040, 1660, 282, 1769, 282, 1196, - 1016, 1016, 991, 1016, 992, 1022, 1022, 1022, 1022, 1438, - 1438, 1438, 1438, 1016, 1464, 1464, 1464, 1464, 1016, 1084, - 1084, 1084, 1084, 1023, 1439, 282, 282, 282, 282, 283, - - 282, 284, 285, 282, 282, 861, 282, 282, 282, 282, - 282, 282, 282, 282, 1065, 282, 1086, 2163, 863, 1007, - 1011, 284, 1008, 1011, 1016, 2185, 282, 282, 282, 282, - 282, 2163, 1472, 1012, 1084, 1084, 1084, 1084, 1013, 2205, - 2264, 1084, 1084, 1084, 1084, 1705, 1007, 1016, 284, 1008, - 1010, 1016, 1670, 282, 1671, 282, 1016, 1016, 1016, 1065, - 1882, 1086, 2590, 1882, 1016, 1009, 1065, 2218, 1086, 1546, - 1546, 1546, 1546, 1246, 1010, 2438, 2218, 1014, 1626, 1627, - 1626, 1626, 282, 282, 282, 282, 283, 282, 284, 285, - 282, 282, 861, 282, 282, 282, 282, 282, 282, 282, - - 282, 1014, 282, 1090, 2041, 863, 1007, 1011, 284, 1008, - 1011, 1091, 1255, 282, 282, 282, 282, 282, 2218, 2591, - 1012, 1084, 1084, 1084, 1084, 1013, 1084, 1084, 1084, 1084, - 2041, 2234, 2218, 1084, 1084, 1084, 1084, 1014, 1642, 1229, - 282, 1278, 282, 1279, 1280, 1660, 1065, 2235, 1086, 1660, - 1282, 1065, 2236, 1086, 2255, 1401, 1402, 1664, 1065, 1284, - 1086, 1014, 1665, 1118, 1118, 1118, 1118, 2592, 2115, 282, - 282, 282, 282, 283, 282, 284, 285, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 1087, 282, - 1092, 1119, 868, 1715, 2115, 1088, 1715, 2480, 1472, 282, - - 282, 282, 282, 864, 282, 1089, 1246, 1084, 1084, 1084, - 1084, 1716, 1084, 1084, 1084, 1084, 2265, 1084, 1084, 1084, - 1084, 2121, 1120, 1084, 1084, 1084, 1084, 282, 282, 282, - 2265, 1213, 1065, 1016, 1086, 2593, 1121, 1065, 1122, 1086, - 1123, 2443, 1065, 2238, 1086, 1214, 2238, 2121, 1065, 2122, - 1086, 1555, 1016, 1016, 1016, 1016, 282, 282, 282, 282, - 283, 282, 284, 285, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 2122, 282, 1101, 1472, 868, - 1093, 1660, 1095, 1094, 1097, 1660, 282, 282, 282, 282, - 864, 282, 1096, 1084, 1084, 1084, 1084, 1104, 1104, 1104, - - 1104, 2594, 2595, 1098, 1104, 1104, 1104, 1104, 1104, 1104, - 1104, 1104, 1230, 2598, 282, 282, 282, 2051, 1065, 1898, - 1086, 2052, 1105, 1022, 1022, 1022, 1022, 1240, 1283, 1105, - 2053, 2065, 2222, 1105, 2445, 2066, 1022, 1022, 1022, 1022, - 2067, 1023, 1863, 282, 282, 282, 282, 283, 282, 284, - 285, 282, 282, 282, 1023, 282, 282, 282, 282, 282, - 282, 282, 1099, 282, 2009, 1472, 870, 1100, 1107, 1107, - 1107, 1107, 2135, 2010, 282, 282, 282, 871, 1058, 1058, - 1058, 1058, 1060, 1060, 1060, 1060, 1135, 2599, 1016, 1016, - 2009, 1315, 1016, 1105, 1315, 1109, 1059, 1016, 2135, 2010, - - 1061, 282, 282, 282, 1316, 1016, 1162, 1162, 1162, 1162, - 2440, 1290, 1291, 1291, 1290, 1145, 1145, 1145, 1145, 2441, - 1118, 1118, 1118, 1118, 1163, 1118, 1118, 1118, 1118, 1292, - 282, 282, 282, 283, 282, 284, 285, 282, 282, 282, - 1146, 282, 282, 282, 282, 282, 282, 282, 1119, 282, - 1935, 1399, 870, 1119, 1399, 1145, 1145, 1145, 1145, 2224, - 282, 282, 282, 871, 1198, 1145, 1145, 1145, 1145, 1016, - 1016, 1145, 1145, 1145, 1145, 1626, 1627, 1626, 1626, 1120, - 1146, 3918, 2245, 1853, 1120, 2224, 1854, 282, 282, 282, - 1146, 1315, 2258, 1121, 1315, 1122, 1146, 1123, 1121, 1866, - - 1122, 1855, 1123, 1867, 1316, 3918, 1560, 1016, 1016, 1016, - 1016, 1565, 1016, 1016, 1016, 1016, 282, 282, 282, 283, - 282, 878, 285, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 286, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 879, 879, 879, 879, 879, 879, 879, 879, 879, - 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, - 879, 879, 879, 282, 282, 282, 879, 879, 879, 879, - 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, - 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, - - 879, 879, 282, 282, 282, 282, 283, 904, 905, 906, - 904, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 286, 282, 282, 282, 282, - 282, 282, 907, 282, 282, 282, 282, 282, 908, 908, - 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, - 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, - 282, 282, 282, 908, 908, 908, 908, 908, 908, 908, - 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, - 908, 908, 908, 908, 908, 908, 908, 908, 908, 282, - 282, 909, 282, 283, 282, 284, 285, 282, 282, 918, - - 282, 282, 282, 282, 282, 282, 282, 282, 2422, 282, - 2065, 2033, 920, 1151, 1151, 1151, 1151, 2034, 2035, 2600, - 282, 282, 282, 282, 282, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 2033, 1152, 1271, - 1272, 1271, 1271, 1245, 2034, 2035, 1245, 282, 1916, 282, - 1152, 1916, 1273, 1967, 1152, 1968, 1246, 1253, 1152, 1969, - 2601, 1247, 1441, 1441, 1441, 1441, 1604, 1016, 1016, 1016, - 1016, 1442, 1971, 1222, 2602, 1442, 282, 282, 282, 282, - 283, 282, 284, 285, 282, 282, 918, 282, 282, 282, - 282, 282, 282, 282, 282, 2603, 282, 1222, 1472, 920, - - 1266, 1267, 1268, 1266, 1472, 1472, 2289, 282, 282, 282, - 282, 282, 1228, 1269, 1290, 1291, 1291, 1290, 1247, 2604, - 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1290, 2605, - 1252, 1290, 1292, 2289, 282, 1385, 282, 2413, 1385, 1229, - 1230, 1278, 2608, 1279, 1280, 1299, 1292, 1281, 1386, 1299, - 1282, 2088, 2609, 2414, 1252, 1240, 1283, 2089, 1517, 1284, - 2468, 2454, 2434, 282, 282, 282, 282, 283, 282, 284, - 285, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 286, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 930, - - 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, - 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, - 930, 282, 282, 282, 930, 930, 930, 930, 930, 930, - 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, - 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, - 282, 282, 282, 282, 283, 282, 936, 285, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 937, 937, 286, 937, 937, 937, 937, 937, 937, - 282, 282, 282, 282, 282, 282, 937, 937, 937, 937, - 937, 937, 937, 938, 937, 937, 939, 937, 937, 937, - - 937, 937, 937, 937, 937, 937, 937, 937, 282, 282, - 282, 937, 937, 937, 937, 937, 937, 937, 937, 938, - 937, 937, 939, 937, 937, 937, 937, 937, 937, 937, - 937, 937, 937, 937, 937, 937, 937, 282, 282, 282, - 282, 283, 282, 936, 285, 282, 282, 940, 941, 282, - 282, 282, 282, 282, 282, 282, 1472, 282, 1295, 2027, - 943, 1295, 1286, 1767, 2610, 1286, 1767, 1801, 282, 282, - 282, 282, 941, 2028, 3918, 1287, 1296, 1472, 2611, 1228, - 1247, 1802, 1229, 1230, 1278, 2027, 1279, 1280, 1289, 1472, - 1285, 3918, 1276, 1282, 1472, 282, 944, 282, 1240, 1283, - - 2028, 2612, 1284, 1627, 1627, 1627, 1627, 1438, 1438, 1438, - 1438, 1662, 1289, 1663, 2439, 3918, 1277, 1663, 1298, 1298, - 1298, 1298, 1439, 2435, 282, 282, 941, 282, 283, 282, - 936, 285, 282, 282, 940, 941, 282, 282, 282, 282, - 282, 282, 282, 1299, 282, 2462, 2293, 943, 1298, 1298, - 1298, 1298, 2452, 2324, 2325, 282, 282, 282, 282, 941, - 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, - 1318, 1318, 2293, 1299, 1318, 1318, 1318, 1318, 1324, 2324, - 2325, 1324, 282, 944, 282, 1319, 1967, 2130, 1968, 1319, - 2130, 1472, 1969, 1319, 1609, 1016, 1016, 1016, 1016, 1319, - - 1571, 1572, 1571, 1571, 1970, 1971, 1325, 1425, 1425, 1425, - 1425, 282, 282, 941, 282, 283, 282, 936, 285, 282, - 282, 945, 282, 282, 282, 282, 282, 282, 282, 282, - 1573, 282, 1426, 1472, 947, 2090, 2578, 1326, 1338, 1339, - 1340, 1338, 282, 282, 282, 282, 282, 1337, 1844, 2091, - 1016, 1341, 2588, 2333, 1574, 1327, 1342, 2613, 1425, 1425, - 1425, 1425, 1214, 1344, 1345, 1346, 1344, 1845, 1343, 282, - 2332, 282, 2615, 2447, 1350, 1351, 1347, 1352, 1353, 1280, - 2333, 1199, 1354, 1426, 1626, 1627, 1626, 1626, 1355, 2616, - 1356, 1357, 1343, 1348, 1358, 1359, 2332, 1472, 282, 282, - - 282, 282, 283, 282, 936, 285, 282, 282, 945, 282, - 282, 282, 282, 282, 282, 282, 282, 1348, 282, 2617, - 1893, 947, 1221, 1403, 1894, 1221, 1403, 1895, 2334, 282, - 282, 282, 282, 282, 2226, 2345, 1287, 2096, 1876, 2621, - 1337, 1247, 1393, 1350, 1351, 1393, 1352, 1353, 1280, 2346, - 2097, 1354, 1222, 3918, 2334, 1394, 282, 1355, 282, 1356, - 1357, 2345, 2622, 1358, 1359, 1441, 1441, 1441, 1441, 2623, - 1441, 1441, 1441, 1441, 1442, 2346, 1222, 3918, 1442, 1442, - 2226, 2238, 2226, 1442, 2238, 282, 282, 282, 282, 283, - 282, 284, 285, 282, 282, 282, 282, 282, 282, 282, - - 282, 282, 282, 282, 282, 282, 282, 282, 286, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 951, 951, 951, 951, 951, 951, 951, 951, 951, - 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, - 951, 951, 951, 282, 282, 282, 951, 951, 951, 951, - 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, - 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, - 951, 951, 282, 282, 282, 282, 283, 282, 284, 285, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 286, 282, 282, 282, 282, - - 282, 282, 282, 282, 282, 282, 282, 282, 1015, 1015, - 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, - 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, - 282, 282, 282, 1015, 1015, 1015, 1015, 1015, 1015, 1015, - 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, - 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 282, - 282, 282, 1062, 1063, 1063, 1062, 1255, 1472, 1064, 1229, - 1765, 1278, 2624, 1279, 1280, 1421, 1421, 1421, 1421, 1766, - 1282, 1425, 1425, 1425, 1425, 1401, 1402, 1065, 2625, 1284, - 1425, 1425, 1425, 1425, 1422, 1422, 1422, 1422, 1422, 1422, - - 1423, 2626, 1431, 1431, 1431, 1431, 1426, 2449, 1435, 1435, - 1435, 1435, 1691, 1432, 1692, 1426, 2606, 2607, 1699, 1436, - 1016, 1066, 1251, 1067, 1016, 1251, 1016, 1068, 1433, 1016, - 1069, 1070, 2271, 1071, 1437, 2271, 1072, 1073, 1074, 1075, - 1228, 1441, 1441, 1441, 1441, 1058, 1058, 1058, 1058, 2627, - 1442, 1844, 1252, 1016, 1442, 1434, 1060, 1060, 1060, 1060, - 2628, 2272, 2363, 1059, 2629, 1214, 2630, 1229, 1230, 1231, - 1232, 1233, 1234, 1016, 1061, 1235, 1252, 2379, 1236, 1237, - 1238, 1239, 2387, 1240, 1241, 1242, 1243, 1244, 1255, 2363, - 1437, 1448, 1016, 1016, 2631, 1016, 1542, 1542, 1542, 1542, - - 1542, 1542, 1542, 1542, 2379, 1542, 1542, 1542, 1542, 2387, - 1016, 1639, 1639, 1639, 1639, 1256, 1257, 1231, 1258, 1259, - 1234, 1543, 1472, 1260, 2349, 1543, 1236, 1237, 1238, 1261, - 1543, 1262, 1263, 1242, 1243, 1264, 1265, 1542, 1542, 1542, - 1542, 1572, 1572, 1572, 1572, 1399, 1016, 1454, 1399, 2313, - 2349, 1455, 2313, 1360, 1361, 1455, 1360, 2352, 1198, 1456, - 1454, 1570, 1543, 1016, 1288, 1455, 1362, 1288, 1457, 1458, - 1844, 1574, 1016, 1454, 2442, 1459, 2006, 1455, 2314, 2632, - 1016, 1455, 1472, 2352, 1214, 1456, 1454, 2399, 1460, 1016, - 1461, 2353, 1455, 1468, 1289, 1574, 1457, 1471, 2023, 1471, - - 1473, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1711, - 1711, 1711, 1711, 1474, 2399, 2031, 1016, 2353, 1289, 1571, - 1572, 1571, 1571, 1614, 1016, 1016, 1016, 1016, 1619, 1016, - 1016, 1016, 1016, 1626, 1627, 1626, 1626, 1471, 2464, 1471, - 1479, 1629, 1630, 1631, 1630, 1630, 1632, 2734, 2681, 1573, - 1699, 1633, 1016, 2356, 1480, 2735, 1016, 1634, 1634, 1634, - 1634, 1016, 1634, 1634, 1634, 1634, 2370, 1481, 1482, 1483, - 1484, 1485, 1486, 1574, 1487, 1488, 2681, 1489, 1490, 2356, - 1491, 1492, 1635, 1493, 1494, 1495, 1496, 1635, 1711, 1711, - 1711, 1711, 2370, 1481, 1482, 1483, 1484, 1485, 1486, 2330, - - 1487, 1488, 2330, 1489, 1490, 1016, 1491, 1492, 2737, 2740, - 1493, 1494, 1495, 1496, 1497, 1497, 1497, 1497, 1634, 1634, - 1634, 1634, 1637, 1634, 1634, 1637, 1472, 1403, 2331, 1678, - 1403, 1694, 1694, 1694, 1694, 1497, 1018, 1497, 1497, 2741, - 1287, 1681, 1695, 1635, 1472, 1247, 2742, 1635, 1711, 1711, - 1711, 1711, 1767, 1678, 2375, 1767, 1696, 1712, 1712, 1712, - 1712, 1882, 1497, 2743, 1882, 1498, 1499, 1500, 1501, 1502, - 2183, 2746, 1503, 1504, 1246, 1505, 1472, 1680, 2446, 1506, - 2375, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1712, 1712, - 1712, 1712, 1514, 2747, 2748, 1471, 2453, 1471, 1473, 1471, - - 1515, 1515, 1515, 1515, 1515, 1515, 1516, 1678, 2376, 2744, - 2380, 1474, 1710, 1016, 1016, 1016, 1016, 2745, 1016, 1712, - 1712, 1712, 1712, 1016, 1016, 1016, 1022, 1022, 1022, 1022, - 1841, 1016, 2465, 1841, 2376, 1471, 2380, 1518, 1028, 1028, - 1028, 1028, 1882, 1842, 1023, 1882, 1027, 1028, 1028, 1027, - 2749, 1032, 1032, 1032, 1032, 1246, 1723, 1723, 1723, 1723, - 1448, 1016, 1016, 1029, 1016, 1468, 1497, 1497, 1497, 1497, - 2385, 1029, 1032, 1032, 1032, 1032, 1029, 1472, 1034, 1016, - 2386, 1029, 1036, 1036, 1036, 1036, 2390, 1497, 1472, 1497, - 1497, 1040, 1040, 1040, 1040, 1832, 2385, 1029, 1832, 1034, - - 2750, 1472, 1726, 1726, 1726, 1726, 2386, 1729, 1729, 1729, - 1729, 2751, 2390, 1833, 1519, 1016, 1041, 1520, 1521, 1522, - 1523, 1524, 1525, 2756, 1526, 1527, 1472, 1528, 1030, 1034, - 2450, 1529, 1041, 1530, 1531, 1532, 1533, 1534, 1535, 1513, - 1725, 2757, 2760, 2460, 1514, 2099, 2451, 1471, 2761, 1471, - 1472, 1471, 1515, 1515, 1515, 1515, 1515, 1515, 1516, 1731, - 1731, 1731, 1731, 1044, 1045, 1045, 1044, 1045, 1045, 1045, - 1045, 1049, 1049, 1049, 1049, 1043, 1045, 1045, 1045, 1045, - 1049, 1049, 1049, 1049, 2463, 2388, 2762, 1471, 1049, 1049, - 1049, 1049, 1102, 1102, 1102, 1102, 1051, 1741, 2389, 1882, - - 2471, 1733, 1882, 2758, 2759, 1051, 1742, 1742, 1742, 1742, - 1742, 2388, 1246, 1051, 2763, 1472, 2544, 1468, 1513, 1063, - 1063, 1063, 1063, 1514, 2389, 2545, 1471, 2471, 1471, 1473, - 1471, 1515, 1515, 1515, 1515, 1515, 1515, 1516, 1058, 1058, - 1058, 1058, 1474, 1324, 1065, 1047, 1324, 1983, 1471, 3918, - 2766, 1060, 1060, 1060, 1060, 1471, 1059, 2431, 3918, 1761, - 1761, 1761, 1761, 1472, 1472, 2812, 1471, 2432, 1518, 1061, - 2130, 1325, 1079, 2130, 2813, 2129, 1762, 1762, 1762, 1762, - 1770, 1770, 1770, 1770, 1471, 2815, 2475, 1536, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1468, 1062, 1063, 1063, - - 1062, 1764, 1326, 1064, 1472, 1065, 1084, 1084, 1084, 1084, - 2769, 1472, 2475, 1065, 2786, 1086, 2764, 1065, 2348, 1086, - 1327, 2348, 1065, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1065, 2765, 1086, 1084, 1084, 1084, 1084, 1110, 1110, - 1110, 1110, 1084, 1084, 1084, 1084, 2350, 2006, 1065, 2350, - 1086, 2099, 1065, 2816, 1086, 2100, 1066, 2770, 1067, 1065, - 2101, 1086, 1068, 1774, 1772, 1069, 1070, 1065, 1071, 1086, - 1472, 1072, 1073, 1074, 1075, 2351, 1472, 2618, 1084, 1084, - 1084, 1084, 1104, 1104, 1104, 1104, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1472, 1775, - - 2476, 1777, 1776, 1065, 2618, 1086, 1472, 1105, 1472, 1778, - 1780, 1065, 2649, 1086, 2775, 1065, 2817, 1086, 2482, 1065, - 2776, 1086, 1084, 1084, 1084, 1084, 2476, 2668, 1084, 1084, - 1084, 1084, 2752, 1084, 1084, 1084, 1084, 2753, 1779, 2649, - 1084, 1084, 1084, 1084, 2482, 2771, 2083, 1065, 1783, 1086, - 2084, 1781, 2483, 1065, 2668, 1086, 1782, 1784, 1065, 2085, - 1086, 1084, 1084, 1084, 1084, 1065, 2773, 1086, 1794, 1794, - 1794, 1794, 1084, 1084, 1084, 1084, 1983, 1471, 2483, 1785, - 1792, 1792, 1792, 1792, 1471, 2822, 1065, 2823, 1086, 1107, - 1107, 1107, 1107, 1105, 1472, 1786, 1787, 1065, 2824, 1086, - - 1107, 1107, 1107, 1107, 1788, 1789, 2680, 1086, 1797, 1797, - 1797, 1797, 1864, 1471, 1105, 2826, 1109, 1115, 1115, 1115, - 1115, 1117, 1117, 1117, 1117, 1105, 1790, 1109, 1117, 1117, - 1117, 1117, 1116, 2680, 1472, 1109, 1118, 1118, 1118, 1118, - 1124, 1124, 1124, 1124, 2684, 1791, 1124, 1124, 1124, 1124, - 2778, 2708, 1796, 1803, 1803, 1803, 1803, 1472, 1865, 1125, - 1130, 1130, 1130, 1130, 1119, 1125, 1808, 1808, 1808, 1808, - 1866, 2684, 1131, 1135, 1867, 1016, 1016, 1809, 2708, 1016, - 1136, 1137, 1137, 1136, 1016, 1137, 1137, 1137, 1137, 1812, - 2828, 2774, 1016, 2829, 1715, 1120, 1472, 1715, 1813, 1813, - - 1813, 1813, 1813, 1814, 1815, 1816, 1814, 1246, 2783, 1121, - 2832, 1122, 1716, 1123, 1145, 1145, 1145, 1145, 1819, 1819, - 1819, 1819, 1145, 1145, 1145, 1145, 1149, 1149, 1149, 1149, - 1151, 1151, 1151, 1151, 1823, 1823, 1823, 1823, 2547, 1146, - 2614, 2456, 2560, 1146, 2457, 2560, 2637, 1146, 1151, 1151, - 1151, 1151, 2638, 2458, 2459, 1152, 1016, 1016, 1829, 1152, - 1155, 1155, 1155, 1155, 2547, 1472, 2614, 1830, 1830, 1830, - 1830, 1830, 2637, 1152, 1162, 1162, 1162, 1162, 2638, 1196, - 1016, 1016, 2639, 1016, 1208, 1208, 1208, 1208, 1215, 1216, - 1215, 1215, 1163, 1016, 1216, 1216, 1216, 1216, 1016, 2833, - - 2834, 1211, 1821, 1245, 1472, 2561, 1245, 2835, 2639, 2782, - 1266, 1267, 1268, 1266, 2354, 2642, 1246, 2354, 1825, 2493, - 1472, 1247, 2712, 1269, 1268, 1267, 1268, 1268, 1247, 1268, - 1267, 1268, 1268, 1222, 1016, 1230, 1846, 1232, 1847, 1848, - 1252, 2642, 1849, 2355, 1472, 1850, 1237, 1238, 1239, 2712, - 1240, 1241, 1242, 1243, 1851, 2656, 2836, 1222, 1271, 1272, - 1271, 1271, 2779, 2785, 1252, 1271, 1272, 1271, 1271, 1274, - 1286, 1273, 1274, 1286, 1290, 1291, 1291, 1290, 1273, 1472, - 2838, 2656, 1198, 1287, 1295, 2661, 2357, 1295, 1247, 2357, - 2787, 2666, 1292, 1298, 1298, 1298, 1298, 2839, 2359, 1276, - - 1276, 2359, 1296, 1905, 1905, 1905, 1905, 1298, 1298, 1298, - 1298, 2661, 2840, 1882, 1289, 2358, 1882, 2666, 1299, 1303, - 1303, 1303, 1303, 1277, 1277, 1472, 1246, 2360, 1299, 2788, - 1472, 1472, 1299, 1305, 1306, 1305, 1305, 2841, 1289, 1310, - 1311, 1310, 1310, 1318, 1318, 1318, 1318, 1912, 1912, 1912, - 1912, 1318, 1318, 1318, 1318, 1322, 1322, 1322, 1322, 2842, - 1338, 1339, 1340, 1338, 1340, 1339, 1340, 1340, 1319, 2667, - 2671, 2361, 1319, 1341, 2361, 2789, 1319, 2685, 1342, 1344, - 1345, 1346, 1344, 2794, 2801, 1350, 1351, 1907, 1352, 1353, - 1343, 1472, 1347, 1354, 2843, 2667, 2671, 1199, 2844, 1355, - - 2362, 1356, 1357, 2685, 2754, 1358, 1359, 2754, 1472, 1348, - 1922, 1339, 1340, 1922, 1343, 1340, 1339, 1340, 1340, 1344, - 1345, 1346, 1344, 1923, 1339, 1340, 1923, 1943, 1944, 1943, - 1943, 1914, 1347, 1348, 1350, 1351, 1924, 1352, 1353, 2768, - 1343, 1472, 1354, 1946, 1944, 1946, 1946, 1472, 1355, 1348, - 1356, 1357, 2790, 1343, 1358, 1359, 1947, 1421, 1421, 1421, - 1421, 2755, 2845, 2846, 1343, 1421, 1421, 1421, 1421, 1425, - 1425, 1425, 1425, 1348, 1472, 2847, 2848, 1343, 1421, 1421, - 1421, 1421, 1423, 2780, 1422, 1422, 1422, 1422, 1422, 1422, - 1423, 2781, 2851, 2852, 1426, 2777, 1472, 1957, 1957, 1957, - - 1957, 1957, 1957, 1423, 1959, 1959, 1959, 1959, 1425, 1425, - 1425, 1425, 1429, 1429, 1429, 1429, 1431, 1431, 1431, 1431, - 1435, 1435, 1435, 1435, 1472, 2796, 1472, 1432, 1472, 1426, - 2853, 1436, 2669, 1426, 1438, 1438, 1438, 1438, 1440, 1440, - 1440, 1440, 1433, 2873, 2696, 2670, 1437, 1472, 2806, 1439, - 1440, 1440, 1440, 1440, 1441, 1441, 1441, 1441, 2669, 1441, - 1441, 1441, 1441, 1442, 2876, 2539, 2784, 1442, 1442, 1434, - 2696, 2670, 1442, 1462, 1463, 1464, 1462, 1465, 1466, 1464, - 1465, 1464, 1464, 1464, 1464, 2797, 2800, 2877, 1961, 1465, - 1466, 1464, 1465, 1976, 1977, 1464, 1976, 2542, 1513, 2881, - - 2802, 1472, 1437, 1514, 2022, 2005, 2703, 2022, 2005, 2882, - 1472, 1978, 1978, 1978, 1978, 1978, 1978, 1979, 2711, 1471, - 2883, 1471, 1472, 1471, 1471, 1471, 1471, 1471, 1471, 1471, - 1471, 2717, 2703, 2023, 2006, 2042, 2042, 2042, 2042, 2047, - 2047, 2047, 2047, 2886, 2711, 2030, 2024, 2025, 2030, 2007, - 2887, 2008, 1546, 1546, 1546, 1546, 2888, 2717, 2795, 1471, - 2798, 2799, 2049, 2049, 2049, 2049, 2718, 2889, 2054, 2054, - 2054, 2054, 2024, 2025, 2031, 2007, 1468, 1982, 2008, 1982, - 1984, 1471, 1982, 1982, 1982, 1982, 1982, 1982, 1471, 1468, - 2723, 2032, 2718, 1474, 2890, 2043, 2060, 2060, 2060, 2060, - - 1626, 1627, 1626, 1626, 2044, 2891, 1472, 2011, 2045, 2012, - 2364, 2046, 2814, 2364, 2013, 2048, 2723, 1471, 2032, 1982, - 1471, 2014, 1471, 1473, 1471, 1471, 1471, 1471, 1471, 1471, - 1471, 1471, 2050, 2011, 2893, 2012, 1474, 2055, 2814, 2365, - 2013, 1555, 1016, 1016, 1016, 1016, 2366, 2056, 2014, 2366, - 1570, 2894, 1016, 2061, 2803, 2896, 2898, 2017, 2018, 2019, - 1471, 2062, 1471, 1989, 1990, 1991, 1992, 1993, 1994, 1016, - 1995, 1996, 2020, 1997, 1998, 2367, 1999, 2000, 1016, 2001, - 2002, 2003, 2004, 2021, 1560, 1016, 1016, 1016, 1016, 1989, - 1990, 1991, 1992, 1993, 1994, 2899, 1995, 1996, 2020, 1997, - - 1998, 2036, 1999, 2000, 2037, 1016, 2001, 2002, 2003, 2004, - 2021, 2042, 2042, 2042, 2042, 2900, 2038, 2901, 2039, 2047, - 2047, 2047, 2047, 2054, 2054, 2054, 2054, 2036, 1472, 2849, - 2037, 2049, 2049, 2049, 2049, 2902, 1472, 2903, 2850, 2905, - 1472, 2368, 1472, 2038, 2368, 2039, 1513, 2890, 1472, 2906, - 1642, 1514, 2315, 2907, 1471, 2315, 1471, 1472, 1471, 1515, - 1515, 1515, 1515, 1515, 1515, 1516, 2060, 2060, 2060, 2060, - 2369, 2075, 1542, 1542, 1542, 1542, 1626, 1627, 1626, 1626, - 2076, 2316, 2560, 1472, 2077, 2560, 2791, 2078, 2080, 2908, - 2909, 2792, 2086, 1472, 1471, 2079, 2317, 1543, 2081, 2827, - - 2910, 2082, 2087, 2109, 2109, 2109, 2109, 1542, 1542, 1542, - 1542, 1565, 1016, 1016, 1016, 1016, 1571, 1572, 1571, 1571, - 1765, 2911, 2317, 2094, 1468, 1513, 2825, 2827, 1543, 1766, - 1514, 2095, 1543, 1471, 2804, 1471, 1473, 1471, 1515, 1515, - 1515, 1515, 1515, 1515, 1516, 2371, 1573, 2912, 2371, 1474, - 2805, 1572, 1572, 1572, 1572, 1604, 1016, 1016, 1016, 1016, - 1609, 1016, 1016, 1016, 1016, 1614, 1016, 1016, 1016, 1016, - 1574, 1893, 2913, 1471, 2372, 1518, 1619, 1016, 1016, 1016, - 1016, 1574, 1627, 1627, 1627, 1627, 1893, 2111, 1629, 1630, - 1631, 1630, 1630, 1626, 1627, 1626, 1626, 1629, 1630, 1631, - - 1630, 1630, 2914, 1468, 1513, 1574, 2915, 2895, 2897, 1514, - 2895, 2897, 1471, 2911, 1471, 1472, 1471, 1515, 1515, 1515, - 1515, 1515, 1515, 1516, 1017, 1631, 1631, 1631, 1631, 1626, - 1627, 1626, 1626, 1626, 1627, 1626, 1626, 1634, 1634, 1634, - 1634, 2126, 2126, 2126, 2126, 1637, 1634, 1634, 1637, 2916, - 2129, 2917, 1471, 1637, 1634, 1634, 1637, 1639, 1639, 1639, - 1639, 1678, 1635, 1678, 2144, 2904, 1635, 2182, 2904, 2918, - 1635, 2919, 2920, 2145, 2145, 2145, 2145, 2145, 1635, 1831, - 2924, 2272, 1468, 1513, 1831, 1678, 2335, 1678, 1514, 2335, - 2925, 1471, 2926, 1471, 1473, 1471, 1515, 1515, 1515, 1515, - - 1515, 1515, 1516, 1694, 1694, 1694, 1694, 1474, 2927, 1680, - 1705, 1680, 1016, 2928, 1695, 2336, 1016, 1711, 1711, 1711, - 1711, 1016, 1016, 1016, 1935, 2128, 2929, 2754, 1696, 1016, - 2754, 1471, 2337, 1518, 1710, 1016, 1016, 1016, 1016, 1678, - 1016, 1678, 2930, 1935, 1472, 1016, 1016, 1016, 2106, 1712, - 1712, 1712, 1712, 1016, 1723, 1723, 1723, 1723, 2931, 2337, - 2932, 1468, 1032, 1032, 1032, 1032, 1036, 1036, 1036, 1036, - 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 2926, 1029, - 2152, 2152, 2152, 2152, 2793, 2921, 2933, 1029, 2921, 1034, - 1729, 1729, 1729, 1729, 2318, 2934, 2935, 1034, 2936, 2374, - - 2937, 1034, 2374, 2319, 2938, 1041, 1729, 1729, 1729, 1729, - 1731, 1731, 1731, 1731, 2160, 1041, 2154, 2154, 2154, 2154, - 2318, 2939, 2940, 2161, 2161, 2161, 2161, 2161, 2023, 2319, - 2938, 1041, 1761, 1761, 1761, 1761, 2941, 2942, 1725, 2943, - 1762, 1762, 1762, 1762, 2944, 1079, 1762, 1762, 1762, 1762, - 1770, 1770, 1770, 1770, 1084, 1084, 1084, 1084, 1102, 1102, - 1102, 1102, 2945, 2942, 1043, 1764, 1084, 1084, 1084, 1084, - 2946, 1764, 2947, 2948, 2949, 1065, 2950, 2951, 2952, 1065, - 2953, 1086, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 2314, 1065, 2316, 1086, 1084, 1084, 1084, 1084, 2331, 1084, - - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1065, 2336, 1086, - 2351, 1065, 2355, 1086, 1084, 1084, 1084, 1084, 2955, 1065, - 2377, 1086, 2922, 2377, 1065, 2922, 1086, 2358, 1065, 2360, - 1086, 2362, 2365, 2923, 1772, 1110, 1110, 1110, 1110, 1065, - 2186, 1086, 1084, 1084, 1084, 1084, 2955, 2188, 2957, 2378, - 2187, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 2189, - 2190, 1084, 1084, 1084, 1084, 2381, 2956, 1065, 2381, 1086, - 1084, 1084, 1084, 1084, 2957, 2192, 1065, 2367, 1086, 2191, - 1065, 2369, 1086, 2372, 2378, 2382, 1065, 2392, 1086, 1084, - 1084, 1084, 1084, 2956, 2382, 1065, 2394, 1086, 1084, 1084, - - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1065, 2384, 1086, 2968, 2384, 2193, - 2396, 2398, 2195, 1065, 3028, 1086, 2194, 1065, 2975, 1086, - 2196, 1065, 3029, 1086, 3030, 1065, 3035, 1086, 3036, 1084, - 1084, 1084, 1084, 2968, 2031, 2197, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 2975, 1794, 1794, 1794, 1794, 1107, - 1107, 1107, 1107, 2200, 1065, 2198, 1086, 3037, 3038, 2199, - 3039, 3040, 3041, 1086, 3042, 3043, 2201, 1086, 3044, 2202, - 1105, 2978, 2754, 2983, 1105, 2754, 1109, 2984, 1797, 1797, - 1797, 1797, 1797, 1797, 1797, 1797, 1803, 1803, 1803, 1803, - - 1808, 1808, 1808, 1808, 1814, 1815, 1816, 1814, 2978, 2983, - 3047, 1809, 2211, 2984, 2203, 1109, 3048, 3049, 3050, 1109, - 3051, 2212, 2212, 2212, 2212, 2212, 1816, 1815, 1816, 1816, - 1819, 1819, 1819, 1819, 1145, 1145, 1145, 1145, 2989, 1796, - 1149, 1149, 1149, 1149, 1823, 1823, 1823, 1823, 1151, 1151, - 1151, 1151, 3052, 3055, 3056, 1146, 3059, 3060, 3057, 1146, - 1155, 1155, 1155, 1155, 2989, 2215, 3058, 1472, 3105, 1152, - 1472, 3106, 3109, 1152, 2216, 2216, 2216, 2216, 2216, 1905, - 1905, 1905, 1905, 1298, 1298, 1298, 1298, 1303, 1303, 1303, - 1303, 1912, 1912, 1912, 1912, 1318, 1318, 1318, 1318, 1322, - - 1322, 1322, 1322, 1472, 1299, 3110, 3111, 3002, 1299, 3117, - 1923, 1339, 1340, 1923, 1821, 3016, 1319, 1472, 2391, 3062, - 1319, 2391, 3070, 1924, 1922, 1339, 1340, 1922, 1825, 1923, - 1339, 1340, 1923, 3002, 3013, 1344, 1345, 1346, 1344, 3118, - 1343, 3016, 1924, 1943, 1944, 1943, 1943, 2392, 1347, 1943, - 1944, 1943, 1943, 3019, 1343, 2294, 2294, 2294, 2294, 1343, - 3069, 3013, 3020, 1907, 1343, 1348, 1429, 1429, 1429, 1429, - 3063, 1421, 1421, 1421, 1421, 1914, 3025, 3120, 1343, 3019, - 1423, 1472, 1472, 1343, 1421, 1421, 1421, 1421, 3020, 1348, - 1957, 1957, 1957, 1957, 1957, 1957, 1423, 1959, 1959, 1959, - - 1959, 1472, 3025, 1957, 1957, 1957, 1957, 1957, 1957, 1423, - 1425, 1425, 1425, 1425, 1976, 1977, 1464, 1976, 2307, 1977, - 1464, 2307, 1426, 1513, 1472, 3071, 2393, 1472, 1514, 2393, - 2326, 2327, 2328, 1472, 1472, 1426, 1978, 1978, 1978, 1978, - 1978, 1978, 1979, 1513, 3083, 2329, 2338, 1472, 1514, 3121, - 1472, 2830, 2339, 2340, 3065, 2394, 1978, 1978, 1978, 1978, - 1978, 1978, 1979, 2320, 2395, 2321, 2397, 2395, 1472, 2397, - 2322, 2329, 2338, 2341, 1472, 3072, 2342, 2323, 3075, 2339, - 2340, 1961, 2042, 2042, 2042, 2042, 3073, 1472, 2343, 2320, - 2344, 2321, 3064, 2396, 2551, 2398, 2322, 2551, 3074, 2341, - - 3079, 1468, 2342, 3076, 2323, 2047, 2047, 2047, 2047, 2049, - 2049, 2049, 2049, 3124, 1472, 2343, 3091, 2344, 3078, 1472, - 1472, 1468, 1982, 2552, 1982, 1984, 1471, 1982, 1982, 1982, - 1982, 1982, 1982, 1471, 2054, 2054, 2054, 2054, 1474, 2060, - 2060, 2060, 2060, 2421, 2421, 2421, 2421, 3125, 3093, 2421, - 2421, 2421, 2421, 2109, 2109, 2109, 2109, 1542, 1542, 1542, - 1542, 1472, 1471, 3080, 1982, 1982, 1472, 1982, 1984, 1471, - 1982, 1982, 1982, 1982, 1982, 1982, 1471, 2597, 1543, 3081, - 2597, 1474, 1543, 1546, 1546, 1546, 1546, 2126, 2126, 2126, - 2126, 2487, 1637, 1634, 1634, 1637, 1639, 1639, 1639, 1639, - - 2488, 2488, 2488, 2488, 2488, 1471, 2272, 1982, 1513, 3126, - 3128, 3088, 1635, 1514, 1472, 1472, 1471, 1635, 1471, 1472, - 1471, 2310, 2310, 2310, 2310, 2310, 2310, 1516, 2152, 2152, - 2152, 2152, 2154, 2154, 2154, 2154, 2493, 2111, 2514, 2514, - 2514, 2514, 3129, 1472, 1472, 2494, 2494, 2494, 2494, 2494, - 1472, 1079, 2539, 1041, 3130, 1472, 1471, 1084, 1084, 1084, - 1084, 2540, 2540, 2540, 2540, 2540, 2307, 1977, 1464, 2307, - 1472, 2128, 3077, 3086, 2517, 2517, 2517, 2517, 1084, 1084, - 1084, 1084, 1065, 3090, 1086, 1642, 1468, 1471, 3131, 1471, - 1472, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1065, - - 3082, 1086, 1472, 1065, 3087, 1086, 3084, 1084, 1084, 1084, - 1084, 1472, 1043, 1472, 1084, 1084, 1084, 1084, 3097, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1471, 3132, 1472, - 2634, 2516, 1065, 2634, 1086, 1084, 1084, 1084, 1084, 1065, - 3133, 1086, 3134, 2429, 1065, 3119, 1086, 3135, 1065, 3085, - 1086, 2518, 3136, 2294, 2294, 2294, 2294, 1468, 1513, 2314, - 1065, 3098, 1086, 1514, 3137, 3138, 1471, 3089, 1471, 1473, - 1471, 1515, 1515, 1515, 1515, 1515, 1515, 2466, 1423, 3094, - 2520, 2636, 1474, 2519, 2636, 3139, 2521, 1084, 1084, 1084, - 1084, 3140, 2523, 1084, 1084, 1084, 1084, 2522, 1084, 1084, - - 1084, 1084, 1084, 1084, 1084, 1084, 1471, 3142, 1518, 3143, - 2316, 3163, 1065, 3164, 1086, 3167, 3168, 3169, 1065, 2552, - 1086, 2542, 3171, 1065, 3172, 1086, 3173, 1065, 3175, 1086, - 2543, 2543, 2543, 2543, 2543, 3176, 1468, 1513, 1084, 1084, - 1084, 1084, 1514, 2640, 2526, 1471, 2640, 1471, 1473, 1471, - 1515, 1515, 1515, 1515, 1515, 1515, 1516, 2643, 2525, 2524, - 2643, 1474, 3177, 1065, 3178, 1086, 3181, 2527, 1084, 1084, - 1084, 1084, 2641, 1084, 1084, 1084, 1084, 3179, 1084, 1084, - 1084, 1084, 3182, 1472, 3180, 1471, 2644, 1518, 3183, 1084, - 1084, 1084, 1084, 1065, 3184, 1086, 2645, 2528, 1065, 2645, - - 1086, 2647, 2467, 1065, 2647, 1086, 3185, 1084, 1084, 1084, - 1084, 3186, 3187, 3189, 1065, 1468, 1086, 2650, 1893, 2652, - 2650, 2654, 2652, 3095, 2654, 2646, 2736, 2736, 2736, 2736, - 2648, 3096, 1065, 2530, 1086, 2529, 1421, 1421, 1421, 1421, - 2658, 2659, 2531, 2658, 2659, 3191, 2651, 2532, 2653, 3193, - 2655, 2662, 2533, 1893, 2662, 2619, 2619, 2619, 2619, 2619, - 2619, 1423, 2665, 3174, 2672, 2665, 3174, 2672, 3194, 2331, - 2660, 2738, 2738, 2738, 2738, 2674, 2676, 3195, 2674, 2676, - 2663, 3179, 2678, 2534, 1513, 2678, 3196, 2348, 3192, 1514, - 2348, 2336, 1471, 2673, 1471, 1472, 1471, 2310, 2310, 2310, - - 2310, 2310, 2310, 1516, 2675, 2677, 2683, 2687, 3197, 2683, - 2687, 2679, 2688, 3198, 2691, 2688, 2006, 2691, 2693, 2695, - 2698, 2693, 2695, 2698, 2700, 2702, 2705, 2700, 2702, 2705, - 2374, 2706, 1471, 2374, 2706, 2351, 2355, 2710, 3199, 2895, - 2710, 2689, 2895, 2358, 1935, 2739, 3201, 2360, 2362, 2365, - 3202, 3203, 3204, 2367, 2369, 2372, 3205, 1935, 2714, 2023, - 2707, 2714, 1468, 1513, 2384, 3206, 2378, 2384, 1514, 2715, - 3207, 1471, 2715, 1471, 1472, 1471, 2310, 2310, 2310, 2310, - 2310, 2310, 1516, 2719, 3180, 2721, 2719, 2382, 2721, 2725, - 3208, 2727, 2725, 2031, 2727, 3209, 2729, 2731, 2716, 2729, - - 2731, 2732, 3210, 3211, 2732, 2421, 2421, 2421, 2421, 3213, - 2879, 1471, 2720, 2879, 2722, 3214, 2807, 3215, 2392, 3216, - 2394, 2736, 2736, 2736, 2736, 2396, 2398, 2809, 3217, 3218, - 2733, 2738, 2738, 2738, 2738, 2810, 3212, 3219, 1472, 2880, - 2807, 1468, 1513, 2818, 2818, 2818, 2818, 1514, 1472, 3220, - 1471, 2641, 1471, 1472, 1471, 2310, 2310, 2310, 2310, 2310, - 2310, 1516, 3212, 2830, 1471, 2820, 2820, 2820, 2820, 2644, - 3224, 2819, 2831, 2831, 2831, 2831, 2831, 2837, 2837, 2837, - 2837, 2646, 2514, 2514, 2514, 2514, 2854, 2854, 2854, 2854, - 1471, 2648, 2651, 2821, 2807, 1079, 3224, 2517, 2517, 2517, - - 2517, 2872, 2872, 2872, 2872, 2772, 2897, 2767, 2653, 2897, - 2655, 1065, 2904, 1086, 2660, 2904, 1084, 1084, 1084, 1084, - 1468, 1513, 1065, 2663, 1086, 3188, 1514, 2885, 3188, 1471, - 2885, 1471, 1473, 1471, 1515, 1515, 1515, 1515, 1515, 1515, - 2466, 1065, 3233, 1086, 3122, 1474, 2673, 3122, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 2552, 2675, 2677, 1084, - 1084, 1084, 1084, 2679, 1084, 1084, 1084, 1084, 3233, 1471, - 2689, 1518, 3123, 1065, 2707, 1086, 2716, 1065, 2597, 1086, - 3190, 2597, 2720, 3190, 1065, 2855, 1086, 2921, 2722, 1065, - 2921, 1086, 2733, 3264, 3265, 1084, 1084, 1084, 1084, 1468, - - 1513, 1084, 1084, 1084, 1084, 1514, 3247, 2272, 1471, 2856, - 1471, 1473, 1471, 1515, 1515, 1515, 1515, 1515, 1515, 1516, - 1065, 2857, 1086, 2859, 1474, 2858, 1065, 3236, 1086, 1084, - 1084, 1084, 1084, 3247, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 2634, 3266, 1471, 2634, - 1518, 2811, 3267, 3236, 1065, 2922, 1086, 3237, 2922, 1065, - 2861, 1086, 3268, 1065, 3269, 1086, 2923, 1065, 3242, 1086, - 2860, 1084, 1084, 1084, 1084, 2314, 3258, 3270, 1468, 1084, - 1084, 1084, 1084, 3237, 1084, 1084, 1084, 1084, 2862, 2869, - 2869, 2869, 2869, 3271, 3242, 3272, 1065, 2864, 1086, 3274, - - 2636, 2863, 3258, 2636, 1065, 3273, 1086, 3275, 3273, 1065, - 2959, 1086, 3276, 2959, 1065, 3278, 1086, 2865, 2870, 2870, - 2870, 2870, 1084, 1084, 1084, 1084, 3279, 3280, 2866, 2316, - 3281, 2874, 2874, 2874, 2874, 1421, 1421, 1421, 1421, 2641, - 2867, 2868, 2875, 1065, 3282, 1086, 3283, 1065, 3287, 1086, - 1421, 1421, 1421, 1421, 2619, 2619, 2619, 2619, 2619, 2619, - 1423, 2736, 2736, 2736, 2736, 2738, 2738, 2738, 2738, 2619, - 2619, 2619, 2619, 2619, 2619, 1423, 1513, 2960, 3288, 2871, - 2960, 1514, 2963, 2965, 2967, 2963, 2965, 2967, 3289, 1978, - 1978, 1978, 1978, 1978, 1978, 1979, 2970, 2972, 2974, 2970, - - 2972, 2974, 2658, 3290, 2977, 2658, 2961, 2977, 3332, 3333, - 3336, 2644, 2646, 2648, 2980, 2665, 2981, 2980, 2665, 2981, - 2985, 2987, 1472, 2985, 2987, 2651, 2653, 2655, 3337, 2991, - 1472, 2331, 2991, 2660, 2993, 2995, 2997, 2993, 2995, 2997, - 3338, 2954, 1472, 2663, 2336, 2982, 3339, 1472, 2998, 2986, - 2988, 2998, 3000, 2683, 1468, 3000, 2683, 3003, 2673, 2687, - 3003, 1472, 2687, 2675, 2677, 2679, 3006, 2691, 2693, 3006, - 2691, 2693, 2695, 3007, 3299, 2695, 3007, 2999, 3293, 3342, - 2698, 3001, 2351, 2698, 2700, 3292, 3004, 2700, 2355, 2702, - 3009, 2705, 2702, 3009, 2705, 2689, 2358, 2360, 1472, 3301, - - 3012, 2362, 3008, 3012, 2710, 3014, 1472, 2710, 3014, 2365, - 1472, 2714, 3018, 2367, 2714, 3018, 1472, 3295, 2369, 3010, - 2372, 3022, 3024, 2725, 3022, 3024, 2725, 2727, 2729, 2707, - 2727, 2729, 2731, 2378, 3015, 2731, 3027, 3261, 3294, 3027, - 2382, 2716, 2738, 2738, 2738, 2738, 3031, 3032, 3033, 3031, - 2720, 2722, 2392, 3298, 1472, 3347, 2394, 2396, 3300, 1472, - 1642, 2398, 3303, 3261, 1472, 2733, 3034, 3034, 3034, 3034, - 3045, 3045, 3045, 3045, 3046, 3046, 3046, 3046, 3053, 3053, - 3053, 3053, 2738, 2738, 2738, 2738, 3031, 3032, 3033, 3031, - 3034, 3034, 3034, 3034, 3045, 3045, 3045, 3045, 3107, 1472, - - 1472, 3107, 3302, 1472, 1472, 3166, 1472, 1472, 3166, 3350, - 3307, 1472, 3046, 3046, 3046, 3046, 3053, 3053, 3053, 3053, - 2807, 1472, 3304, 2885, 2807, 1472, 2885, 3108, 3352, 1472, - 1472, 2809, 3341, 1472, 2880, 3100, 2808, 3353, 2818, 2818, - 2818, 2818, 1472, 2808, 2807, 3054, 1513, 3309, 2807, 1472, - 3312, 1514, 2552, 3311, 1471, 1472, 1471, 1472, 1471, 2310, - 2310, 2310, 2310, 2310, 2310, 1516, 2819, 3222, 1471, 3306, - 3222, 3354, 1471, 3112, 3112, 3112, 3112, 3308, 3113, 2820, - 2820, 2820, 2820, 3092, 3114, 3114, 3114, 3114, 3315, 3115, - 3116, 3116, 3116, 3116, 1471, 3318, 3223, 3319, 2807, 3313, - - 1472, 3061, 2807, 3127, 3127, 3127, 3127, 2821, 2837, 2837, - 2837, 2837, 3141, 3141, 3141, 3141, 2854, 2854, 2854, 2854, - 3144, 3144, 3144, 3144, 1468, 3066, 3066, 3066, 1472, 3066, - 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, - 3066, 1065, 3066, 1086, 3068, 1065, 3358, 1086, 3145, 3145, - 3145, 3145, 3310, 3066, 3066, 3066, 3066, 3066, 1084, 1084, - 1084, 1084, 3147, 3147, 3147, 3147, 2872, 2872, 2872, 2872, - 3361, 3225, 3362, 1065, 3225, 1086, 1084, 1084, 1084, 1084, - 3066, 3363, 3066, 1065, 3379, 1086, 3321, 1065, 1472, 1086, - 3380, 1084, 1084, 1084, 1084, 3161, 3161, 3161, 3161, 1472, - - 3226, 1065, 2880, 1086, 3273, 2959, 3162, 3273, 2959, 3066, - 3066, 3066, 2807, 1472, 1472, 3146, 1065, 3381, 1086, 3382, - 2808, 1472, 2808, 2809, 2808, 2808, 2808, 2808, 2808, 2808, - 2808, 2808, 3228, 3148, 2641, 3228, 2807, 1084, 1084, 1084, - 1084, 3323, 3151, 3151, 3151, 3151, 1084, 1084, 1084, 1084, - 3179, 3316, 3149, 3155, 3155, 3155, 3155, 3383, 3384, 3386, - 1471, 2961, 1065, 3317, 1086, 3385, 3322, 3152, 3385, 1086, - 3387, 1065, 3343, 1086, 3174, 3343, 3102, 3174, 1065, 3388, - 1086, 3200, 3200, 3200, 3200, 3389, 3156, 3156, 3156, 3156, - 3103, 1513, 1084, 1084, 1084, 1084, 1514, 1472, 3390, 1471, - - 3344, 1471, 1473, 1471, 1515, 1515, 1515, 1515, 1515, 1515, - 1516, 1065, 3150, 1086, 3391, 1474, 3153, 1065, 3392, 1086, - 3154, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 2869, - 2869, 2869, 2869, 3394, 2870, 2870, 2870, 2870, 3395, 1471, - 1867, 1518, 2874, 2874, 2874, 2874, 1065, 3398, 1086, 3324, - 1065, 3399, 1086, 2875, 1065, 2963, 1086, 3400, 2963, 1065, - 3104, 1086, 1084, 1084, 1084, 1084, 3396, 3157, 3393, 1468, - 3401, 3393, 2965, 2967, 3229, 2965, 2967, 3229, 1893, 2970, - 3396, 1513, 2970, 3158, 2644, 2972, 1514, 1065, 2972, 1086, - 1893, 3402, 3403, 3159, 1978, 1978, 1978, 1978, 1978, 1978, - - 1979, 2646, 2648, 3230, 2974, 3404, 3231, 2974, 2651, 3231, - 2977, 3405, 2980, 2977, 2653, 2980, 3235, 3239, 3241, 3235, - 3239, 3241, 2991, 2993, 2995, 2991, 2993, 2995, 2997, 3160, - 3406, 2997, 3407, 2655, 3244, 3232, 3221, 3244, 3408, 2660, - 3246, 2663, 3409, 3246, 3410, 2982, 2986, 2988, 1935, 1935, - 3411, 2673, 2675, 2677, 3412, 3249, 3413, 2679, 3249, 1468, - 3414, 3006, 3251, 2999, 3006, 3251, 3415, 3253, 3012, 3001, - 3253, 3012, 3254, 3257, 3018, 3254, 3257, 3018, 3259, 3022, - 3024, 3259, 3022, 3024, 3004, 3262, 3027, 3416, 3262, 3027, - 2689, 3008, 3031, 3032, 3033, 3031, 3010, 2707, 3417, 3418, - - 3419, 3255, 3015, 2716, 3420, 2961, 2982, 3260, 2720, 2722, - 3033, 3032, 3033, 3033, 3263, 2733, 3033, 3032, 3033, 3033, - 3034, 3034, 3034, 3034, 3045, 3045, 3045, 3045, 3277, 3277, - 3277, 3277, 3053, 3053, 3053, 3053, 3284, 3284, 3284, 3284, - 3286, 3286, 3286, 3286, 3305, 3305, 3305, 3305, 3305, 3305, - 3277, 3277, 3277, 3277, 3314, 3314, 3314, 3314, 3284, 3284, - 3284, 3284, 3286, 3286, 3286, 3286, 2807, 1472, 2986, 2807, - 3335, 1472, 2988, 3335, 2999, 1472, 3001, 3100, 2808, 1472, - 3100, 2808, 3424, 3004, 3122, 2808, 3166, 3122, 2808, 3166, - 2807, 3397, 3431, 2807, 3397, 3112, 3112, 3112, 3112, 3108, - - 3113, 3114, 3114, 3114, 3114, 3188, 3115, 3008, 3188, 3424, - 3285, 1513, 3123, 3010, 1471, 2880, 1514, 1471, 3431, 1471, - 3015, 1471, 1472, 1471, 2310, 2310, 2310, 2310, 2310, 2310, - 1516, 3434, 3320, 3116, 3116, 3116, 3116, 3340, 3340, 3340, - 3340, 3448, 3190, 3345, 2807, 3190, 3345, 2807, 3127, 3127, - 3127, 3127, 3348, 3348, 3348, 3348, 3449, 3434, 3451, 1471, - 3346, 3452, 3346, 3346, 3346, 3346, 3346, 3346, 3349, 3349, - 3349, 3349, 3351, 3351, 3351, 3351, 3453, 3454, 3291, 3455, - 3456, 3355, 3355, 3355, 3355, 3359, 3359, 3359, 3359, 1468, - 3066, 3066, 3066, 3457, 3066, 3066, 3066, 3066, 3066, 3066, - - 3066, 3066, 3066, 3066, 3066, 3066, 3356, 3066, 3458, 3068, - 3360, 3360, 3360, 3360, 3141, 3141, 3141, 3141, 3066, 3066, - 3066, 3066, 3066, 3144, 3144, 3144, 3144, 3441, 3364, 3145, - 3145, 3145, 3145, 3459, 1084, 1084, 1084, 1084, 3147, 3147, - 3147, 3147, 3460, 3273, 3463, 3066, 3273, 3066, 1065, 3464, - 1086, 3465, 3466, 3441, 1065, 3357, 1086, 3467, 3468, 1065, - 3494, 1086, 3499, 1065, 3500, 1086, 3200, 3200, 3200, 3200, - 3371, 3371, 3371, 3371, 3066, 3066, 3066, 3066, 3066, 3066, - 1472, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, - 3066, 3066, 3066, 3365, 3066, 1083, 3297, 3067, 1084, 1084, - - 1084, 1084, 1472, 1472, 3067, 3066, 3066, 3066, 3066, 3066, - 3367, 3367, 3367, 3367, 1472, 3151, 3151, 3151, 3151, 1084, - 1084, 1084, 1084, 1065, 3470, 1086, 1084, 1084, 1084, 1084, - 1472, 3449, 3066, 3067, 3066, 3368, 3108, 1086, 3501, 3502, - 3152, 3503, 1086, 1472, 1065, 1472, 1086, 3161, 3161, 3161, - 3161, 1065, 3477, 1086, 3474, 3504, 3423, 3366, 3162, 3423, - 3471, 3066, 3066, 3066, 3325, 3373, 3373, 3373, 3373, 1514, - 3484, 1472, 2808, 1472, 2808, 2809, 2808, 3326, 3326, 3326, - 3326, 3326, 3326, 3327, 3369, 3223, 3372, 3370, 2807, 3357, - 3374, 3472, 1086, 3155, 3155, 3155, 3155, 3156, 3156, 3156, - - 3156, 1472, 1084, 1084, 1084, 1084, 3376, 3376, 3376, 3376, - 3506, 1472, 1471, 1084, 1084, 1084, 1084, 3476, 1065, 3478, - 1086, 3511, 1065, 3426, 1086, 1472, 3426, 1065, 1472, 1086, - 3512, 1065, 1472, 1086, 3513, 1472, 3228, 1472, 1065, 3228, - 1086, 3486, 3103, 3325, 3378, 3378, 3378, 3378, 1514, 1642, - 3517, 2808, 3226, 2808, 2809, 2808, 3326, 3326, 3326, 3326, - 3326, 3326, 3327, 3375, 3479, 2961, 3518, 2807, 1472, 1065, - 3475, 1086, 3428, 3430, 3377, 3428, 3430, 3485, 3235, 3483, - 1513, 3235, 3482, 3432, 3239, 1514, 3432, 3239, 3487, 3241, - 1472, 1471, 3241, 1978, 1978, 1978, 1978, 1978, 1978, 1979, - - 3435, 3230, 3232, 3435, 1472, 3522, 3505, 2982, 3329, 3524, - 3491, 1472, 3433, 2986, 3244, 3538, 3246, 3244, 2988, 3246, - 3437, 3103, 2807, 3437, 3249, 3251, 1472, 3249, 3251, 3436, - 2807, 1472, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, - 2807, 2807, 3488, 2999, 3539, 3001, 2807, 3421, 3253, 3438, - 3493, 3253, 3440, 3004, 3008, 3440, 3257, 3443, 1468, 3257, - 3443, 3444, 3447, 3489, 3444, 3447, 3450, 3450, 3450, 3450, - 3277, 3277, 3277, 3277, 3490, 3540, 3541, 3010, 3542, 3335, - 3545, 3255, 3335, 3492, 3385, 3015, 3260, 3385, 3546, 3547, - 3445, 3263, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, - - 2807, 1513, 3462, 3462, 3462, 3462, 1514, 3543, 3108, 1471, - 3543, 1471, 1473, 1471, 1515, 1515, 1515, 1515, 1515, 1515, - 1516, 3284, 3284, 3284, 3284, 1474, 3284, 3284, 3284, 3284, - 3286, 3286, 3286, 3286, 3548, 3450, 3450, 3450, 3450, 3473, - 3473, 3473, 3473, 3305, 3305, 3305, 3305, 3305, 3305, 1471, - 3544, 1518, 1472, 3544, 3549, 3551, 1472, 3480, 3480, 3480, - 3480, 3461, 3461, 3461, 3461, 3331, 3461, 3461, 3461, 3461, - 3279, 3552, 3393, 3550, 1472, 3393, 3550, 1893, 1472, 1468, - 1513, 3554, 3558, 1472, 3343, 1514, 3397, 3343, 1471, 3397, - 1471, 1472, 1471, 2310, 2310, 2310, 2310, 2310, 2310, 1516, - - 3462, 3462, 3462, 3462, 3284, 3284, 3284, 3284, 3340, 3340, - 3340, 3340, 3344, 3553, 2807, 3555, 3553, 1472, 3555, 3481, - 3557, 1472, 3559, 3557, 3507, 2809, 3556, 3507, 1471, 1935, - 3561, 3469, 3345, 2810, 3562, 3345, 3563, 3562, 2807, 3564, - 3315, 3508, 3565, 3508, 3508, 3508, 3508, 3508, 3508, 3346, - 3566, 3346, 3346, 3346, 3346, 3346, 3346, 3223, 1468, 3066, - 3066, 3066, 1471, 3066, 3066, 3066, 3066, 3066, 3066, 3066, - 3066, 3066, 3066, 3066, 3066, 3226, 3066, 3509, 3297, 3067, - 3509, 3348, 3348, 3348, 3348, 3230, 3067, 3066, 3066, 3066, - 3066, 3066, 2807, 3232, 3346, 3255, 3346, 3346, 3346, 3346, - - 3346, 3346, 3349, 3349, 3349, 3349, 3351, 3351, 3351, 3351, - 3514, 3514, 3514, 3514, 3066, 3067, 3066, 3355, 3355, 3355, - 3355, 3371, 3371, 3371, 3371, 3359, 3359, 3359, 3359, 3360, - 3360, 3360, 3360, 3260, 3263, 3515, 3582, 3519, 3519, 3519, - 3519, 3584, 3356, 3066, 3066, 3066, 3066, 3066, 3066, 3585, - 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, - 3066, 3066, 3520, 3066, 3570, 3297, 3067, 3521, 3521, 3521, - 3521, 3588, 3589, 3067, 3066, 3066, 3066, 3066, 3066, 3523, - 3523, 3523, 3523, 3579, 3516, 3367, 3367, 3367, 3367, 3591, - 3570, 3357, 1084, 1084, 1084, 1084, 3592, 1084, 1084, 1084, - - 1084, 3066, 3067, 3066, 3527, 3527, 3527, 3527, 3593, 3579, - 3368, 3594, 1086, 1084, 1084, 1084, 1084, 1065, 3595, 1086, - 3596, 1472, 1065, 1472, 1086, 3371, 3371, 3371, 3371, 1083, - 3066, 3066, 3066, 2807, 3537, 3537, 3537, 3537, 1065, 1472, - 1086, 2807, 1472, 2807, 2807, 2807, 2807, 2807, 2807, 2807, - 2807, 2807, 2807, 3525, 1472, 1472, 1472, 2807, 3526, 3516, - 1472, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 3373, - 3373, 3373, 3373, 3531, 3531, 3531, 3531, 1472, 3620, 3603, - 3528, 3532, 3532, 3532, 3532, 3600, 1065, 3631, 1086, 3604, - 1065, 3632, 1086, 1472, 3374, 1472, 1086, 3615, 1083, 3450, - - 3450, 3450, 3450, 3611, 3423, 3612, 1065, 3423, 3533, 3609, - 3613, 3103, 3325, 3376, 3376, 3376, 3376, 1514, 3593, 1472, - 2808, 3529, 2808, 2809, 2808, 3326, 3326, 3326, 3326, 3326, - 3326, 3327, 1472, 3223, 3568, 3530, 2807, 3568, 1065, 3601, - 1086, 3536, 3536, 3536, 3536, 3610, 3378, 3378, 3378, 3378, - 1472, 3635, 3637, 3426, 3428, 3430, 3426, 3428, 3430, 3641, - 1471, 1472, 1513, 3569, 3642, 3643, 1065, 1514, 1086, 3614, - 3644, 1065, 1066, 1086, 3534, 1978, 1978, 1978, 1978, 1978, - 1978, 1979, 3226, 3230, 3232, 3572, 3645, 3535, 3572, 1074, - 3103, 3325, 3573, 3656, 3576, 3573, 1514, 3576, 1642, 2808, - - 3618, 2808, 2809, 2808, 3326, 3326, 3326, 3326, 3326, 3326, - 3327, 1748, 3617, 3567, 3433, 2807, 3578, 3440, 1472, 3578, - 3440, 3574, 3443, 3436, 3581, 3443, 3447, 3581, 1472, 3447, - 3590, 3590, 3590, 3590, 3461, 3461, 3461, 3461, 3657, 1471, - 1468, 3462, 3462, 3462, 3462, 3438, 3255, 3597, 3597, 3597, - 3597, 3260, 3647, 3445, 3636, 3263, 3598, 3598, 3598, 3598, - 3509, 3648, 3602, 3509, 3527, 3527, 3527, 3527, 3659, 3103, - 3325, 3660, 3616, 3661, 3660, 1514, 3661, 3662, 2807, 3663, - 2807, 2807, 2807, 3495, 3495, 3495, 3495, 3495, 3495, 3496, - 3590, 3590, 3590, 3590, 2807, 3597, 3597, 3597, 3597, 3598, - - 3598, 3598, 3598, 3507, 3665, 3543, 3507, 1472, 3543, 1893, - 3544, 3638, 1472, 3544, 3638, 3664, 1472, 3670, 3664, 1935, - 3508, 3561, 3508, 3508, 3508, 3508, 3508, 3508, 3508, 3671, - 3508, 3508, 3508, 3508, 3508, 3508, 3531, 3531, 3531, 3531, - 3646, 3646, 3646, 3646, 3514, 3514, 3514, 3514, 3103, 1513, - 3519, 3519, 3519, 3519, 1514, 3666, 3672, 1471, 3666, 1471, - 1473, 1471, 1515, 1515, 1515, 1515, 1515, 1515, 1516, 3515, - 3673, 3550, 3674, 1474, 3550, 3520, 3521, 3521, 3521, 3521, - 3523, 3523, 3523, 3523, 3649, 3649, 3649, 3649, 3650, 3650, - 3650, 3650, 3527, 3527, 3527, 3527, 3433, 1471, 3436, 1518, - - 3531, 3531, 3531, 3531, 1084, 1084, 1084, 1084, 3678, 1065, - 3438, 1086, 3445, 1065, 3553, 1086, 3498, 3553, 3516, 3537, - 3537, 3537, 3537, 3658, 3658, 3658, 3658, 1468, 1513, 1065, - 3684, 1086, 3686, 1514, 3678, 1066, 1471, 3534, 1471, 1472, - 1471, 2310, 2310, 2310, 2310, 2310, 2310, 1516, 3557, 3687, - 3535, 3557, 1074, 3055, 3652, 3652, 3652, 3652, 1084, 1084, - 1084, 1084, 3532, 3532, 3532, 3532, 3536, 3536, 3536, 3536, - 3668, 3690, 3694, 3668, 3651, 3555, 1471, 3562, 3555, 3653, - 3562, 1086, 3669, 1065, 3711, 1086, 3556, 1065, 3621, 3533, - 3718, 1065, 3719, 1086, 1642, 3722, 3638, 3599, 3726, 3638, - - 3677, 3572, 3680, 3677, 3572, 3680, 1468, 3586, 3586, 3586, - 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, - 3586, 3586, 3586, 3605, 3586, 3605, 3606, 3605, 3654, 3569, - 3433, 3574, 3730, 3655, 3605, 3586, 3586, 3586, 3586, 3586, - 3576, 3578, 3681, 3576, 3578, 3681, 3683, 3683, 3683, 3683, - 3733, 3581, 2176, 3714, 3581, 3590, 3590, 3590, 3590, 1935, - 1513, 3744, 3586, 3605, 3586, 1514, 2072, 3745, 3721, 3436, - 3438, 3682, 3746, 1978, 1978, 1978, 1978, 1978, 1978, 1979, - 3445, 3689, 3689, 3689, 3689, 3692, 3692, 3692, 3692, 3569, - 3574, 3586, 3586, 3586, 3587, 3587, 3587, 3587, 3587, 3587, + 4091, 295, 4091, 296, 297, 295, 4091, 296, 297, 1084, + 1085, 1094, 1111, 4091, 1094, 1111, 1076, 1076, 1082, 4091, + 298, 1077, 1077, 1083, 298, 294, 295, 294, 296, 297, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 298, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 294, 294, 294, 294, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + + 299, 299, 299, 299, 299, 299, 299, 299, 299, 294, + 294, 294, 301, 1137, 296, 302, 301, 1137, 296, 302, + 306, 307, 308, 309, 307, 303, 310, 1229, 1230, 303, + 295, 304, 296, 297, 295, 304, 296, 297, 1665, 311, + 306, 307, 308, 309, 307, 1251, 310, 1252, 328, 298, + 296, 329, 328, 298, 296, 329, 1236, 1237, 1288, 311, + 295, 387, 388, 389, 387, 1665, 295, 330, 296, 297, + 295, 330, 296, 297, 822, 312, 331, 822, 332, 394, + 331, 1076, 332, 1076, 1288, 298, 1077, 823, 1077, 298, + 824, 1112, 825, 2269, 1113, 312, 294, 295, 313, 314, + + 315, 313, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 298, 294, 294, 294, + 294, 294, 294, 316, 317, 294, 294, 294, 294, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 294, 294, 294, 294, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 319, 294, 320, 294, 295, 321, 296, 297, 321, 294, + 294, 294, 294, 294, 322, 294, 323, 294, 322, 294, + + 294, 294, 294, 298, 294, 294, 294, 294, 294, 294, + 324, 322, 325, 322, 294, 294, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 323, 294, + 294, 294, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 319, 294, 294, + 294, 295, 333, 334, 335, 333, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 336, 294, 294, + 298, 294, 294, 294, 294, 294, 294, 337, 317, 338, + + 294, 294, 294, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 294, 294, 294, 294, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 340, 294, 294, 342, 343, 344, + 345, 343, 342, 343, 344, 345, 343, 295, 572, 296, + 297, 744, 2628, 349, 1097, 1140, 346, 1097, 350, 351, + 1141, 346, 1404, 352, 1171, 295, 298, 296, 297, 1172, + 1345, 349, 1857, 1082, 353, 745, 350, 351, 1083, 1238, + + 1239, 352, 1858, 1541, 298, 295, 387, 388, 389, 387, + 1288, 1435, 353, 1074, 400, 401, 402, 403, 401, 409, + 1076, 296, 410, 1076, 394, 1077, 404, 405, 1077, 347, + 406, 411, 412, 407, 347, 348, 1288, 1242, 413, 1074, + 348, 400, 401, 402, 403, 401, 409, 1140, 296, 410, + 354, 1074, 1141, 404, 405, 2216, 1089, 406, 411, 412, + 407, 1095, 1095, 1095, 1095, 413, 1229, 1230, 354, 294, + 295, 355, 356, 357, 355, 294, 294, 358, 294, 294, + 359, 294, 360, 294, 359, 294, 361, 294, 294, 362, + 294, 294, 294, 294, 294, 294, 363, 364, 365, 366, + + 294, 294, 367, 367, 367, 367, 367, 367, 367, 367, + 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 367, 367, 367, 367, 368, 294, 294, 294, 367, 367, + 369, 367, 370, 367, 367, 367, 371, 367, 367, 372, + 373, 367, 374, 367, 367, 375, 376, 377, 378, 367, + 367, 367, 367, 379, 294, 380, 294, 295, 381, 382, + 383, 381, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 298, 294, 294, 294, + 294, 294, 294, 384, 294, 294, 294, 294, 294, 385, + 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, + + 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, + 385, 294, 294, 294, 294, 385, 385, 385, 385, 385, + 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, + 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, + 294, 294, 386, 294, 295, 387, 388, 389, 387, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 390, 294, 294, 391, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 392, 294, 294, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 294, 294, + + 294, 294, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 294, 294, 294, + 295, 1135, 296, 297, 1135, 1140, 295, 395, 296, 297, + 1141, 4091, 396, 395, 1103, 1104, 1104, 1103, 396, 298, + 432, 1717, 296, 433, 1076, 298, 397, 398, 425, 1077, + 426, 427, 397, 398, 425, 1289, 426, 427, 1721, 434, + 428, 432, 1243, 296, 433, 1243, 428, 429, 438, 439, + 440, 441, 439, 429, 442, 1244, 430, 1673, 2628, 443, + 434, 1136, 430, 1161, 1161, 1161, 1161, 444, 1404, 438, + + 439, 440, 441, 439, 435, 442, 436, 4091, 2631, 295, + 443, 296, 297, 397, 295, 1074, 296, 297, 444, 397, + 400, 414, 415, 416, 414, 435, 1106, 436, 298, 1717, + 1345, 1318, 462, 298, 463, 464, 447, 1201, 465, 417, + 1221, 447, 1202, 466, 1541, 1222, 418, 418, 1227, 419, + 1381, 467, 295, 1228, 296, 297, 295, 1225, 296, 297, + 1225, 445, 446, 1226, 1831, 1404, 462, 471, 463, 464, + 471, 298, 465, 472, 4091, 298, 1232, 466, 1831, 448, + 420, 1233, 445, 446, 448, 467, 1076, 468, 2211, 1724, + 485, 1077, 463, 486, 421, 1246, 422, 1345, 423, 489, + + 1247, 490, 491, 418, 400, 414, 415, 416, 414, 474, + 489, 1288, 490, 491, 1076, 469, 470, 1267, 492, 1261, + 2631, 468, 1260, 417, 495, 496, 296, 497, 496, 492, + 418, 418, 501, 419, 502, 503, 476, 1288, 498, 1258, + 476, 1403, 1258, 499, 495, 496, 296, 497, 496, 469, + 470, 504, 1259, 501, 493, 502, 503, 295, 498, 296, + 297, 1076, 1249, 499, 420, 493, 1268, 1403, 1265, 507, + 508, 1265, 504, 487, 1253, 1442, 298, 1443, 421, 1254, + 422, 1266, 423, 1169, 1169, 1169, 1169, 418, 294, 295, + 449, 450, 451, 449, 294, 294, 294, 294, 294, 294, + + 294, 294, 294, 294, 294, 294, 294, 294, 298, 294, + 294, 294, 294, 294, 294, 452, 294, 294, 294, 294, + 294, 453, 453, 453, 453, 453, 453, 453, 453, 453, + 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, + 453, 453, 453, 294, 294, 294, 294, 453, 453, 453, + 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, + 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, + 453, 453, 294, 294, 454, 294, 295, 455, 456, 457, + 455, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 298, 294, 294, 294, 294, + + 294, 294, 458, 294, 294, 294, 294, 294, 459, 459, + 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, + 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, + 294, 294, 294, 294, 459, 459, 459, 459, 459, 459, + 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, + 459, 459, 459, 459, 459, 459, 459, 459, 459, 294, + 294, 460, 462, 1609, 473, 464, 1449, 1588, 468, 462, + 1450, 473, 464, 468, 1345, 468, 478, 1451, 479, 480, + 468, 474, 481, 478, 2634, 479, 480, 1076, 474, 481, + 482, 485, 1077, 463, 486, 483, 295, 482, 296, 297, + + 1272, 295, 483, 296, 297, 1279, 295, 1280, 296, 297, + 474, 587, 1281, 596, 597, 298, 1285, 475, 507, 508, + 298, 1286, 4091, 2634, 475, 298, 1104, 1104, 1104, 1104, + 598, 484, 1176, 1176, 1176, 1176, 1236, 1237, 484, 4091, + 510, 511, 512, 513, 511, 468, 468, 510, 519, 512, + 513, 519, 468, 468, 514, 1080, 1080, 1080, 1080, 515, + 1831, 520, 587, 4091, 596, 597, 521, 1285, 516, 1831, + 1976, 517, 1313, 1081, 487, 516, 1977, 1076, 517, 505, + 506, 598, 1286, 1874, 505, 506, 523, 524, 525, 526, + 524, 295, 1875, 296, 297, 518, 523, 524, 525, 526, + + 524, 295, 518, 296, 297, 527, 2637, 1076, 4091, 1274, + 298, 1074, 1313, 1285, 528, 527, 529, 1285, 1286, 530, + 298, 531, 1313, 1275, 528, 295, 529, 296, 297, 530, + 295, 531, 296, 297, 1285, 1285, 1285, 532, 533, 1286, + 1362, 1077, 532, 533, 298, 1195, 1196, 1196, 1195, 298, + 294, 295, 294, 296, 297, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 298, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 534, 534, 534, 534, 534, 534, 534, + 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + + 534, 534, 534, 534, 534, 294, 294, 294, 294, 534, + 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + 534, 534, 534, 534, 294, 294, 294, 536, 537, 538, + 539, 537, 1541, 536, 537, 538, 539, 537, 1478, 1717, + 1479, 540, 1196, 1196, 1196, 1196, 541, 540, 1196, 1196, + 1196, 1196, 541, 542, 543, 544, 545, 546, 544, 542, + 542, 542, 542, 542, 542, 542, 542, 542, 547, 542, + 542, 542, 542, 548, 557, 558, 559, 560, 558, 2215, + 542, 542, 550, 542, 542, 551, 1076, 295, 561, 635, + + 297, 1374, 562, 563, 295, 1404, 635, 297, 681, 1076, + 682, 683, 564, 1345, 1077, 565, 298, 2251, 542, 552, + 542, 542, 620, 298, 621, 622, 620, 684, 621, 622, + 1189, 1189, 1189, 1189, 623, 1541, 624, 1697, 623, 566, + 624, 625, 1190, 1548, 1698, 625, 1699, 542, 542, 542, + 542, 543, 553, 545, 546, 553, 542, 542, 542, 542, + 542, 542, 542, 542, 542, 554, 542, 542, 542, 542, + 555, 557, 567, 568, 569, 567, 2077, 542, 542, 550, + 542, 542, 551, 1076, 681, 570, 682, 683, 1077, 562, + 571, 1382, 1735, 626, 1382, 2081, 1735, 626, 642, 564, + + 296, 643, 565, 684, 1383, 542, 552, 542, 542, 1076, + 642, 644, 296, 643, 1380, 1258, 2638, 645, 1258, 1104, + 1104, 1104, 1104, 644, 1094, 1379, 566, 1094, 1259, 645, + 1208, 1208, 1208, 1208, 542, 542, 542, 572, 573, 574, + 575, 576, 574, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 577, 572, 572, 572, 572, 578, 587, 588, + 589, 590, 588, 2639, 572, 572, 580, 572, 572, 581, + 1908, 666, 667, 668, 669, 667, 1666, 591, 1751, 1909, + 1086, 1087, 1087, 1086, 688, 670, 689, 690, 1094, 592, + 671, 1094, 572, 582, 572, 572, 666, 667, 668, 669, + + 667, 4091, 1666, 691, 1751, 1088, 1214, 1214, 1214, 1214, + 670, 1874, 1731, 593, 1074, 671, 1269, 1269, 1269, 1269, + 1875, 572, 572, 572, 572, 573, 583, 575, 576, 583, + 572, 572, 572, 572, 572, 572, 572, 572, 572, 584, + 572, 572, 572, 572, 585, 587, 594, 589, 590, 594, + 4091, 572, 572, 580, 572, 572, 581, 1737, 673, 1738, + 296, 674, 1089, 1738, 595, 688, 1992, 689, 690, 1076, + 1076, 675, 676, 1076, 1077, 1416, 592, 677, 1077, 572, + 582, 572, 572, 673, 691, 296, 674, 736, 1452, 737, + 738, 1452, 1174, 1174, 1174, 1174, 675, 676, 1076, 1436, + + 593, 1453, 677, 1077, 1437, 2640, 739, 1175, 572, 572, + 572, 294, 295, 599, 600, 601, 599, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 602, 294, 294, 294, + 294, 298, 294, 294, 294, 294, 294, 294, 603, 294, + 294, 294, 294, 294, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 294, 294, 294, 294, + 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 294, 294, 605, 294, 295, + + 606, 607, 608, 606, 294, 609, 294, 294, 294, 294, + 294, 294, 294, 294, 726, 294, 727, 728, 611, 1440, + 649, 650, 651, 652, 650, 2643, 294, 294, 294, 294, + 294, 1444, 2644, 729, 653, 726, 1445, 727, 728, 654, + 1238, 1239, 730, 620, 634, 635, 622, 634, 655, 2645, + 1745, 656, 1746, 294, 729, 294, 294, 736, 1395, 737, + 738, 1395, 625, 730, 1174, 1174, 1174, 1174, 1269, 1269, + 1269, 1269, 636, 1447, 1750, 657, 739, 1396, 1448, 1175, + 1998, 1999, 294, 294, 294, 294, 295, 606, 607, 608, + 606, 294, 609, 294, 294, 294, 294, 294, 294, 294, + + 294, 1750, 294, 637, 295, 611, 296, 297, 649, 658, + 659, 660, 658, 294, 294, 294, 294, 294, 1864, 638, + 1455, 639, 661, 298, 1458, 1446, 640, 662, 1865, 1459, + 620, 634, 635, 622, 634, 295, 655, 296, 297, 663, + 294, 1463, 294, 294, 1541, 295, 1456, 296, 297, 625, + 1080, 1080, 1080, 1080, 298, 1269, 1269, 1269, 1269, 636, + 1464, 1076, 1076, 664, 298, 1465, 1286, 1313, 1081, 294, + 294, 294, 294, 295, 612, 613, 614, 612, 294, 615, + 294, 294, 294, 294, 294, 294, 294, 294, 2217, 294, + 637, 693, 617, 694, 695, 693, 700, 694, 695, 700, + + 294, 618, 294, 294, 294, 696, 638, 1735, 639, 701, + 697, 1735, 1460, 640, 697, 1460, 295, 2646, 296, 297, + 1310, 718, 698, 1310, 718, 1461, 698, 294, 1111, 294, + 294, 1111, 1076, 1311, 577, 298, 1312, 1077, 1284, 719, + 1277, 1277, 1277, 1277, 1076, 1790, 699, 1074, 572, 1474, + 699, 744, 1087, 1087, 1087, 1087, 294, 294, 294, 294, + 295, 612, 613, 614, 612, 294, 615, 294, 294, 294, + 294, 294, 294, 294, 294, 745, 294, 1088, 703, 617, + 704, 705, 713, 1111, 714, 715, 1111, 294, 618, 294, + 294, 294, 706, 1076, 1076, 1969, 707, 708, 1484, 1487, + + 295, 716, 296, 297, 295, 1970, 296, 297, 295, 709, + 296, 297, 1862, 717, 294, 1863, 294, 294, 2647, 298, + 760, 761, 295, 298, 296, 297, 1766, 298, 1767, 1276, + 1277, 1276, 1276, 709, 760, 761, 1251, 717, 1252, 2648, + 1074, 298, 1272, 294, 294, 294, 294, 295, 627, 628, + 629, 627, 294, 294, 294, 294, 294, 294, 294, 294, + 630, 294, 294, 294, 294, 294, 298, 294, 294, 294, + 294, 294, 294, 631, 294, 294, 294, 294, 294, 632, + 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, + 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, - 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, - 3607, 3587, 3607, 3608, 3607, 3597, 3597, 3597, 3597, 3684, - 3752, 3607, 3587, 3587, 3587, 3587, 3587, 1983, 1471, 3675, - 3598, 3598, 3598, 3598, 3740, 1471, 3753, 3740, 1468, 3683, - 3683, 3683, 3683, 3918, 3918, 3918, 3918, 3755, 3757, 3587, - 3607, 3587, 3918, 3918, 3918, 3918, 1472, 1472, 3661, 3742, - 1472, 3661, 3742, 1472, 1471, 3918, 3918, 3918, 3918, 1472, - 3918, 3918, 3918, 3918, 3720, 3720, 3720, 3720, 3587, 3587, - 3587, 3325, 1472, 3772, 1472, 3664, 1514, 1472, 3664, 2808, - 1472, 2808, 2809, 2808, 3326, 3326, 3326, 3326, 3326, 3326, - - 3327, 3743, 1472, 3696, 3743, 2807, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 1983, 1471, 3918, 3918, 3918, 3918, - 3777, 3666, 1471, 1472, 3666, 3697, 3698, 1472, 3764, 1471, - 3781, 3668, 3759, 1472, 3668, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3669, 3776, 3761, 3699, 3782, 3619, 3784, - 3785, 1471, 1472, 3786, 1472, 3787, 1472, 2072, 3647, 3103, - 3325, 3724, 3724, 3724, 3724, 1514, 3677, 1472, 2807, 3677, - 2807, 2807, 2807, 3495, 3495, 3495, 3495, 3495, 3495, 3496, - 3689, 3689, 3689, 3689, 2807, 3093, 3918, 3918, 3918, 3918, - 3725, 3725, 3725, 3725, 3760, 3569, 3748, 1472, 3680, 3748, - - 3700, 3680, 3751, 1472, 3793, 3751, 3701, 3918, 3918, 3918, - 3918, 3692, 3692, 3692, 3692, 3918, 3918, 3918, 3918, 3763, - 3727, 3727, 3727, 3727, 1472, 3749, 1472, 3574, 1472, 1472, - 3794, 3682, 1472, 3646, 3646, 3646, 3646, 3682, 3103, 3325, - 3731, 3731, 3731, 3731, 1514, 3728, 1642, 2807, 3799, 2807, - 2807, 2807, 3495, 3495, 3495, 3495, 3495, 3495, 3496, 3649, - 3649, 3649, 3649, 2807, 1472, 3755, 3704, 3800, 3705, 3762, - 3650, 3650, 3650, 3650, 3735, 3735, 3735, 3735, 3658, 3658, - 3658, 3658, 1472, 3778, 1065, 3767, 1086, 3692, 3692, 3692, - 3692, 3708, 1472, 3772, 3729, 1065, 2072, 1086, 3814, 1083, - - 3720, 3720, 3720, 3720, 3715, 3740, 3742, 3768, 3740, 3742, - 3783, 3724, 3724, 3724, 3724, 3816, 3817, 3103, 3621, 3621, - 3621, 3819, 3732, 3621, 3621, 3621, 3622, 3621, 3621, 3621, - 3621, 3623, 3621, 3621, 3624, 3806, 3624, 1473, 3624, 3625, - 3625, 3625, 3625, 3625, 3625, 3626, 3621, 3621, 3621, 3621, - 3627, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3621, 3624, 3621, 3629, 3628, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - - 3628, 3628, 3621, 3621, 3630, 3633, 3633, 3633, 3634, 3633, - 3633, 3633, 3633, 3633, 3633, 3633, 3633, 3633, 3633, 3633, - 3633, 3633, 3633, 3633, 3633, 3634, 1084, 1084, 1084, 1084, - 1472, 3820, 3633, 3633, 3634, 3633, 3633, 3633, 3652, 3652, - 3652, 3652, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1472, 1065, 3743, 1086, 1472, 3743, 1983, 1471, 1983, 1471, - 3633, 3634, 3633, 3653, 1471, 1086, 1471, 1065, 3821, 1086, - 3715, 1065, 1472, 1086, 3725, 3725, 3725, 3725, 3735, 3735, - 3735, 3735, 3731, 3731, 3731, 3731, 3804, 1642, 1472, 3633, - 3633, 3633, 1513, 1471, 3805, 1471, 3792, 1514, 3809, 3792, - - 1471, 3734, 1471, 1472, 1471, 2310, 2310, 2310, 2310, 2310, - 2310, 1516, 3729, 3736, 3623, 3749, 3737, 3735, 3735, 3735, - 3735, 3715, 3803, 3727, 3727, 3727, 3727, 3715, 1513, 3797, - 3815, 3814, 3797, 1514, 1084, 1084, 1084, 1084, 3807, 3711, - 1471, 1978, 1978, 1978, 1978, 1978, 1978, 1979, 3728, 3798, - 3798, 3798, 3798, 3812, 3818, 3841, 3695, 3792, 3749, 1065, - 3792, 1086, 3847, 1472, 3732, 3798, 3798, 3798, 3798, 1472, - 1468, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, - 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3702, 3688, 3702, - 3703, 3702, 3747, 3790, 3790, 3790, 3790, 3729, 3702, 3688, - - 3688, 3688, 3688, 3688, 3751, 3833, 1468, 3751, 3788, 1084, - 1084, 1084, 1084, 3798, 3798, 3798, 3798, 3835, 3791, 3797, - 1086, 1472, 3797, 3862, 1513, 1642, 3688, 3702, 3688, 1514, - 1472, 3865, 3328, 3682, 1065, 3836, 1086, 1978, 1978, 1978, - 1978, 1978, 1978, 1979, 1983, 1471, 3715, 3715, 3749, 3715, - 1472, 3715, 1471, 1472, 1472, 3688, 3688, 3688, 3693, 3693, - 3693, 3693, 3693, 3693, 3693, 3693, 3693, 3693, 3693, 3693, - 3693, 3693, 3693, 3693, 3706, 3693, 3706, 3707, 3706, 3789, - 1472, 1471, 1472, 3852, 3858, 3706, 3693, 3693, 3693, 3693, - 3693, 3795, 3808, 3808, 3808, 3808, 3822, 3822, 3822, 3822, - - 3497, 3839, 1468, 3824, 3824, 3824, 3824, 3850, 3863, 1472, - 3853, 3868, 3837, 3693, 3706, 3693, 3827, 3827, 3827, 3827, - 3832, 3823, 1084, 1084, 1084, 1084, 3834, 3875, 3825, 3889, - 1086, 3830, 3830, 3830, 3830, 3831, 3831, 3831, 3831, 1472, - 3715, 1083, 3693, 3693, 3693, 3325, 1472, 1065, 3861, 1086, - 1514, 3895, 3497, 2808, 1472, 2808, 2809, 2808, 3326, 3326, - 3326, 3326, 3326, 3326, 3327, 3790, 3790, 3790, 3790, 2807, - 3830, 3830, 3830, 3830, 3831, 3831, 3831, 3831, 3845, 3845, - 3845, 3845, 3822, 3822, 3822, 3822, 3851, 1472, 3497, 3898, - 3791, 1472, 1086, 1471, 3497, 1472, 3709, 3826, 3827, 3827, - - 3827, 3827, 3874, 3846, 3871, 3715, 3894, 3823, 3848, 3848, - 3848, 3848, 3827, 3827, 3827, 3827, 3623, 3869, 3715, 3824, - 3824, 3824, 3824, 3103, 2807, 1084, 1084, 1084, 1084, 3715, - 1472, 3715, 2807, 1083, 2807, 2807, 2807, 2807, 2807, 2807, - 2807, 2807, 2807, 2807, 3825, 3880, 1086, 3900, 2807, 1472, - 1065, 3876, 1086, 3830, 3830, 3830, 3830, 3845, 3845, 3845, - 3845, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3866, - 3866, 3866, 3866, 3870, 3870, 3870, 3870, 3896, 3881, 3881, - 3881, 3881, 3846, 3882, 3882, 3882, 3882, 3897, 3710, 3497, - 1472, 3893, 3903, 3890, 3867, 1472, 1086, 3891, 3888, 3849, - - 1472, 3905, 3103, 3621, 3621, 3621, 3907, 3909, 3621, 3621, - 3621, 3621, 3621, 3621, 3621, 3621, 3711, 3621, 3621, 3621, - 3910, 3621, 3623, 3621, 3621, 3621, 3621, 3621, 3621, 3621, - 3621, 3621, 3621, 3621, 3621, 3621, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3621, 3621, - 3621, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3621, 3621, 3630, - 3621, 3621, 3621, 3715, 3715, 3621, 3621, 3621, 3621, 3621, - - 3621, 3621, 3621, 3711, 3621, 3621, 3715, 1472, 3715, 1472, - 3877, 3877, 3877, 3877, 3866, 3866, 3866, 3866, 3621, 3621, - 3621, 3621, 3621, 3879, 3879, 3879, 3879, 3877, 3877, 3877, - 3877, 3879, 3879, 3879, 3879, 3878, 3912, 3914, 3916, 3867, - 3908, 1086, 3917, 3899, 3623, 3621, 1467, 3621, 1083, 1021, - 1467, 2512, 3878, 3879, 3879, 3879, 3879, 1021, 1039, 2511, - 2510, 2509, 1021, 1039, 1114, 3902, 1021, 1039, 3901, 1114, - 3904, 2508, 2507, 1114, 3621, 3621, 3621, 3621, 3621, 3621, - 2506, 2505, 3621, 3621, 3621, 3622, 3621, 3621, 3621, 3621, - 3715, 3621, 3621, 3624, 2504, 3624, 1472, 3624, 3625, 3625, - - 3625, 3625, 3625, 3625, 3626, 3621, 3621, 3621, 3621, 3621, - 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, - 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, - 3629, 3629, 3621, 3624, 3621, 3629, 3629, 3629, 3629, 3629, - 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, - 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, - 3629, 3621, 3621, 3630, 3621, 3621, 3621, 3715, 3715, 3621, - 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3711, 3621, 3621, - 3715, 2503, 1986, 1472, 3906, 3906, 3906, 3906, 1080, 1986, - 2502, 3716, 3621, 3621, 3621, 3621, 3621, 1209, 2501, 1080, - - 1226, 1472, 1209, 1080, 1986, 1226, 1209, 1334, 1335, 1226, - 1981, 1986, 3583, 1335, 1981, 1334, 3583, 1335, 2500, 3621, - 1334, 3621, 1467, 1365, 1334, 1365, 1467, 3913, 1371, 1467, - 1365, 3911, 1467, 1371, 1365, 1444, 1467, 1371, 1601, 1467, - 1444, 1444, 3915, 1601, 1444, 2499, 2498, 1601, 3621, 3621, - 3621, 3621, 3621, 3621, 2497, 2496, 3621, 3621, 3621, 3621, - 3621, 3621, 3621, 3621, 3711, 3621, 3621, 3621, 2495, 3621, - 1986, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, - 3621, 3621, 3621, 3621, 3717, 3717, 3717, 3717, 3717, 3717, - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - - 3717, 3717, 3717, 3717, 3717, 3717, 3621, 3621, 3621, 3621, - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - 3717, 3717, 3717, 3717, 3717, 3621, 3621, 3621, 3621, 3621, - 3621, 2492, 2491, 3621, 3621, 3621, 3622, 3621, 3621, 3621, - 3621, 3715, 3621, 3621, 3624, 2490, 3624, 1473, 3624, 3625, - 3625, 3625, 3625, 3625, 3625, 3626, 3621, 3621, 3621, 3621, - 3627, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3621, 3624, 3621, 3629, 3628, 3628, 3628, - - 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3621, 3621, 3630, 1513, 2489, 3691, 2147, 2486, - 1514, 3691, 2486, 1471, 2485, 1471, 1472, 1471, 2310, 2310, - 2310, 2310, 2310, 2310, 1516, 1470, 1666, 1687, 1470, 1719, - 2484, 1666, 1687, 1470, 1719, 1666, 1687, 1470, 1719, 1021, - 1039, 1114, 2481, 2479, 2478, 1039, 1114, 1021, 2477, 1039, - 1114, 2474, 1021, 1471, 1822, 1826, 1021, 1209, 3510, 1822, - 1826, 2473, 1209, 1822, 1826, 1226, 1209, 2472, 1908, 2470, - 1226, 1915, 3758, 1908, 1226, 2469, 1915, 1908, 3510, 2428, - - 1915, 2427, 3510, 1468, 3754, 3754, 3754, 3754, 3754, 3754, - 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, - 3765, 3754, 3765, 3766, 3765, 2426, 2425, 2424, 2423, 1334, - 3639, 3765, 3754, 3754, 3754, 3754, 3754, 1334, 1335, 1371, - 1962, 2417, 1334, 1335, 1371, 1962, 1334, 1335, 1371, 1962, - 3639, 1365, 2416, 1365, 3639, 2415, 2412, 2411, 1365, 3754, - 3765, 3754, 1365, 1444, 2410, 1963, 2409, 2408, 1444, 1444, - 1963, 2112, 1444, 1963, 1963, 1470, 2112, 1601, 1470, 2407, - 2112, 2406, 1601, 1470, 2405, 2404, 1601, 1470, 3754, 3754, - 3754, 3325, 2403, 2402, 2401, 2400, 1514, 2131, 2312, 2808, - - 2309, 2808, 2809, 2808, 3326, 3326, 3326, 3326, 3326, 3326, - 3327, 1666, 2131, 1687, 1719, 2807, 1666, 2131, 1687, 1719, - 1666, 2131, 1687, 1719, 2153, 1822, 1826, 1908, 2308, 2153, - 1822, 1826, 1908, 2153, 1822, 1826, 1908, 1915, 1962, 1471, - 1963, 1981, 1915, 1962, 2306, 1963, 1915, 1962, 1963, 1963, - 2112, 2305, 2131, 1981, 2304, 2112, 2153, 1981, 2303, 2112, - 3769, 2153, 2302, 2301, 2300, 2153, 2299, 2131, 3640, 3103, - 3325, 2298, 2131, 3640, 2297, 1514, 2131, 3640, 2807, 3685, - 2807, 2807, 2807, 3495, 3495, 3495, 3495, 3495, 3495, 3496, - 3723, 3640, 3685, 3685, 2807, 3723, 3640, 2296, 3685, 3723, - - 3640, 1445, 3685, 3756, 3723, 1964, 3685, 2292, 2291, 3723, - 2290, 3685, 1947, 3723, 2288, 3685, 2287, 3756, 2286, 2285, - 2284, 2283, 3756, 1935, 2282, 2281, 3756, 2278, 2277, 2276, - 2275, 1935, 2274, 2273, 2270, 3770, 2269, 2268, 2267, 2266, - 2239, 2234, 2263, 2262, 2261, 2260, 1893, 2256, 3103, 3621, - 3621, 3621, 2254, 1893, 3621, 3621, 3621, 3622, 3621, 3621, - 3621, 3621, 3715, 3621, 3621, 3621, 2253, 3621, 2252, 3621, - 3773, 3773, 3773, 3773, 3773, 3773, 3774, 3621, 3621, 3621, - 3621, 3621, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, - 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, - - 3775, 3775, 3775, 3775, 3621, 3621, 3621, 3775, 3775, 3775, - 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, - 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, - 3775, 3775, 3775, 3621, 3621, 3630, 3621, 3621, 3621, 1876, - 2251, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3711, - 3621, 3621, 3624, 1867, 3624, 1472, 3624, 3624, 3624, 3624, - 3624, 3624, 3624, 3624, 3621, 3621, 3621, 3621, 3621, 3779, - 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, - 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, - 3779, 3621, 3624, 3621, 3779, 3779, 3779, 3779, 3779, 3779, + 632, 294, 294, 294, 294, 632, 632, 632, 632, 632, + 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, + 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, + 294, 294, 633, 294, 295, 294, 296, 297, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 602, 294, + 294, 294, 294, 298, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 646, 646, 294, 294, + 294, 294, 646, 646, 646, 646, 646, 646, 646, 646, + + 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 646, 294, 294, 294, + 294, 295, 294, 296, 297, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 602, 294, 294, 294, 294, + 298, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 647, 647, 647, 647, 647, 647, 647, + 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, + 647, 647, 647, 647, 647, 294, 294, 294, 294, 647, + 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, + 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, + + 647, 647, 647, 647, 294, 294, 294, 294, 295, 294, + 678, 297, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 602, 294, 294, 294, 294, 298, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, + 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, + 679, 679, 294, 294, 294, 294, 679, 679, 679, 679, + 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, + 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, + 679, 294, 294, 294, 294, 295, 294, 685, 297, 294, + + 294, 294, 294, 294, 294, 294, 294, 294, 294, 602, + 294, 294, 294, 294, 298, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 294, + 294, 294, 294, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 294, 294, + 294, 703, 710, 704, 705, 710, 713, 1982, 714, 715, + 400, 401, 402, 403, 401, 711, 1076, 1541, 1983, 707, + + 708, 1077, 762, 763, 1135, 716, 406, 1135, 295, 407, + 296, 297, 709, 765, 1945, 296, 766, 717, 400, 401, + 402, 403, 401, 1076, 786, 1137, 767, 298, 1077, 1137, + 762, 763, 768, 1076, 406, 787, 709, 407, 1077, 2579, + 1945, 717, 572, 573, 718, 575, 576, 718, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 577, 572, 572, + 572, 572, 719, 765, 1136, 296, 766, 2041, 2042, 572, + 572, 720, 572, 572, 721, 1358, 767, 770, 771, 772, + 773, 771, 768, 1516, 1087, 1087, 1087, 1087, 1517, 774, + 775, 2060, 295, 776, 296, 297, 777, 572, 722, 572, + + 572, 770, 771, 772, 773, 771, 2061, 1345, 786, 1088, + 1359, 298, 1541, 774, 775, 1299, 1719, 776, 1720, 787, + 777, 1317, 1317, 1317, 1317, 2649, 572, 572, 572, 572, + 573, 723, 575, 576, 723, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 584, 572, 572, 572, 572, 724, + 789, 790, 791, 792, 790, 2565, 572, 572, 720, 572, + 572, 721, 2168, 2169, 1959, 1091, 1091, 1091, 1091, 793, + 295, 1074, 296, 297, 295, 1966, 296, 297, 1967, 2030, + 835, 794, 296, 836, 572, 722, 572, 572, 837, 298, + 1088, 1959, 1093, 298, 838, 1331, 1330, 1331, 1331, 839, + + 1368, 1368, 1368, 1368, 1541, 795, 2030, 1099, 1099, 1099, + 1099, 840, 2186, 572, 572, 572, 294, 295, 294, 731, + 297, 294, 294, 732, 294, 294, 294, 294, 294, 294, + 294, 602, 1100, 294, 1963, 840, 734, 789, 790, 791, + 792, 790, 2062, 1964, 294, 294, 294, 294, 294, 1427, + 1428, 881, 1427, 882, 883, 1097, 796, 881, 1097, 882, + 883, 1986, 1429, 1476, 835, 1987, 296, 836, 794, 2062, + 884, 294, 837, 294, 294, 1480, 884, 1516, 838, 885, + 1481, 1243, 1520, 839, 1243, 885, 1370, 1371, 1370, 1370, + 1135, 1102, 795, 1135, 1244, 840, 1108, 1108, 1108, 1108, + + 294, 294, 294, 294, 295, 294, 731, 297, 294, 294, + 732, 294, 294, 294, 294, 294, 294, 294, 602, 840, + 294, 1110, 835, 734, 296, 836, 1122, 1122, 1122, 1122, + 837, 294, 294, 294, 294, 294, 838, 1089, 1541, 1969, + 930, 839, 296, 931, 889, 294, 296, 297, 294, 1997, + 1136, 1124, 1282, 841, 835, 1282, 296, 836, 294, 932, + 294, 294, 837, 890, 930, 1541, 296, 931, 838, 1174, + 1174, 1174, 1174, 839, 1435, 1541, 1074, 841, 1370, 1371, + 1370, 1370, 1283, 932, 1175, 841, 2598, 294, 294, 294, + 294, 295, 294, 740, 297, 294, 294, 741, 294, 294, + + 294, 294, 294, 294, 294, 602, 1283, 294, 2650, 841, + 743, 848, 849, 850, 851, 849, 2204, 2205, 294, 294, + 294, 294, 294, 2651, 889, 294, 296, 297, 294, 2571, + 852, 892, 294, 296, 297, 294, 1632, 2231, 860, 853, + 861, 862, 854, 890, 1076, 294, 2255, 294, 294, 1077, + 893, 892, 294, 296, 297, 294, 1358, 863, 1276, 1277, + 1276, 1276, 1994, 1626, 1345, 1995, 855, 1359, 1627, 864, + 893, 1272, 1299, 2255, 294, 294, 294, 294, 295, 294, + 740, 297, 294, 294, 741, 294, 294, 294, 294, 294, + 294, 294, 602, 864, 294, 1636, 2232, 743, 848, 849, + + 850, 851, 849, 1640, 2233, 294, 294, 294, 294, 294, + 2652, 895, 294, 296, 297, 294, 1541, 852, 895, 294, + 296, 297, 294, 2301, 1673, 860, 853, 861, 862, 854, + 896, 2302, 294, 1310, 294, 294, 1310, 896, 898, 294, + 296, 297, 294, 1545, 863, 1971, 1311, 1541, 1546, 1312, + 1545, 1260, 1074, 855, 1541, 1615, 864, 899, 1442, 2573, + 1443, 294, 294, 294, 294, 295, 294, 296, 297, 294, + 294, 746, 294, 294, 294, 294, 294, 294, 294, 602, + 864, 294, 2379, 2352, 748, 898, 294, 296, 297, 294, + 2392, 1972, 294, 294, 294, 294, 294, 907, 908, 909, + + 910, 908, 2058, 2653, 899, 907, 908, 909, 910, 908, + 2352, 2654, 901, 1545, 902, 903, 911, 2026, 1630, 294, + 2026, 294, 294, 295, 911, 296, 297, 295, 2058, 296, + 297, 904, 1375, 1376, 1375, 1375, 1375, 1376, 1375, 1375, + 1650, 1225, 298, 905, 1225, 1651, 298, 1226, 294, 294, + 294, 294, 295, 294, 296, 297, 294, 294, 746, 294, + 294, 294, 294, 294, 294, 294, 602, 905, 294, 1963, + 901, 748, 902, 903, 919, 2422, 920, 921, 1964, 294, + 294, 294, 294, 294, 934, 1993, 296, 935, 922, 904, + 294, 1076, 934, 923, 296, 935, 1656, 940, 294, 941, + + 942, 905, 2422, 936, 1288, 924, 294, 1467, 294, 294, + 1614, 936, 295, 1614, 296, 297, 943, 2655, 937, 1389, + 1389, 1389, 1389, 1611, 2656, 905, 1612, 1076, 1076, 925, + 1288, 298, 1077, 1661, 1467, 294, 294, 294, 294, 295, + 294, 749, 297, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 602, 294, 294, 294, 294, 298, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 750, 750, 750, 750, 750, 750, 750, 750, 750, + 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, + 750, 750, 750, 294, 294, 294, 294, 750, 750, 750, + + 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, + 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, + 750, 750, 294, 294, 294, 751, 752, 753, 754, 755, + 753, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 756, 751, 751, 751, 751, + 751, 751, 757, 751, 751, 751, 751, 751, 758, 758, + 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, + 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, + 751, 751, 751, 751, 758, 758, 758, 758, 758, 758, + 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, + + 758, 758, 758, 758, 758, 758, 758, 758, 758, 751, + 751, 759, 294, 295, 778, 779, 780, 778, 294, 294, + 294, 294, 294, 781, 294, 294, 294, 781, 294, 782, + 294, 294, 362, 294, 294, 294, 294, 294, 294, 294, + 783, 294, 784, 294, 294, 785, 785, 785, 785, 785, + 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, + 785, 785, 785, 785, 785, 785, 785, 294, 294, 294, + 294, 785, 785, 785, 785, 785, 785, 785, 785, 785, + 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, + 785, 785, 785, 785, 785, 785, 294, 294, 294, 797, + + 798, 797, 296, 799, 797, 797, 797, 797, 797, 797, + 800, 797, 797, 797, 797, 797, 797, 797, 797, 801, + 919, 1996, 920, 921, 2125, 1968, 797, 797, 797, 797, + 797, 797, 1076, 940, 922, 941, 942, 1664, 2036, 923, + 295, 2037, 296, 297, 1449, 295, 937, 956, 297, 1986, + 2125, 924, 943, 2005, 797, 797, 797, 797, 295, 298, + 956, 297, 2657, 295, 298, 296, 297, 1407, 1406, 1407, + 1407, 2249, 1450, 1076, 2249, 925, 1345, 298, 1668, 1451, + 2658, 2126, 298, 797, 797, 797, 797, 798, 797, 296, + 799, 797, 797, 797, 797, 797, 797, 800, 797, 797, + + 797, 797, 797, 797, 797, 797, 801, 2126, 1395, 1314, + 957, 1395, 1314, 797, 797, 797, 797, 797, 797, 961, + 1076, 962, 963, 957, 958, 1670, 961, 1396, 962, 963, + 2659, 1674, 295, 964, 296, 297, 1675, 958, 965, 1315, + 964, 797, 797, 797, 797, 965, 981, 1258, 974, 982, + 1258, 298, 983, 1457, 1457, 1457, 1457, 984, 985, 986, + 1259, 2660, 1478, 1315, 1479, 987, 1496, 1496, 1496, 1496, + 797, 797, 797, 797, 798, 803, 804, 805, 803, 797, + 797, 806, 807, 808, 800, 797, 797, 797, 797, 809, + 797, 810, 810, 811, 812, 812, 812, 812, 812, 812, + + 813, 797, 814, 797, 797, 815, 816, 816, 816, 816, + 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, + 816, 816, 816, 816, 816, 816, 816, 816, 797, 817, + 797, 797, 816, 816, 816, 816, 816, 818, 816, 819, + 816, 816, 816, 816, 816, 820, 816, 816, 816, 816, + 816, 816, 816, 816, 816, 816, 816, 797, 797, 821, + 294, 295, 294, 296, 297, 294, 294, 826, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 2309, 967, + 298, 296, 968, 967, 1310, 296, 968, 1310, 294, 294, + 294, 294, 294, 981, 2310, 974, 982, 1311, 969, 983, + + 1312, 2661, 969, 1680, 984, 985, 986, 970, 1681, 971, + 2038, 970, 987, 971, 2039, 294, 294, 294, 294, 973, + 1291, 974, 975, 1685, 999, 976, 1000, 1001, 1686, 2682, + 977, 1507, 1507, 1507, 1507, 1301, 1348, 2683, 978, 1530, + 1531, 1532, 1530, 1002, 294, 294, 294, 294, 295, 294, + 296, 297, 294, 294, 826, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 2684, 999, 298, 1000, 1001, + 1080, 1080, 1080, 1080, 979, 294, 294, 294, 294, 294, + 988, 1395, 974, 989, 1395, 1002, 983, 988, 1081, 974, + 989, 984, 2267, 983, 1122, 1122, 1122, 1122, 984, 987, + + 1396, 2267, 294, 294, 294, 294, 987, 2685, 990, 993, + 991, 994, 995, 1690, 2367, 990, 1695, 991, 1691, 1124, + 1731, 1696, 1074, 996, 1533, 1534, 1532, 1533, 997, 2688, + 2368, 294, 294, 294, 294, 295, 828, 829, 830, 828, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 298, 294, 294, 294, 294, 294, + 294, 831, 294, 294, 294, 294, 294, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, 832, 294, + 294, 294, 294, 832, 832, 832, 832, 832, 832, 832, + + 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, 294, 294, + 833, 797, 798, 797, 842, 799, 797, 797, 797, 797, + 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, + 797, 843, 802, 802, 802, 802, 802, 802, 797, 797, + 797, 797, 797, 797, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 797, 797, 797, 797, + 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, + + 844, 844, 844, 844, 844, 797, 797, 797, 797, 798, + 797, 842, 799, 797, 797, 797, 797, 797, 797, 797, + 797, 797, 797, 797, 797, 797, 797, 797, 843, 802, + 802, 802, 802, 802, 802, 797, 797, 797, 797, 797, + 797, 845, 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 797, 797, 797, 797, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 797, 797, 797, 797, 798, 797, 842, 799, + + 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, + 797, 797, 797, 797, 797, 843, 802, 802, 802, 802, + 802, 802, 797, 797, 797, 797, 797, 797, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, + 797, 797, 797, 797, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, 846, 797, + 797, 797, 294, 295, 294, 296, 297, 294, 294, 294, + 1076, 294, 294, 294, 294, 1077, 2268, 294, 973, 294, + + 974, 975, 857, 1717, 976, 1117, 1117, 1117, 1117, 977, + 294, 294, 294, 294, 858, 1722, 295, 978, 296, 297, + 1723, 2269, 993, 1118, 994, 995, 1014, 1015, 1016, 1017, + 1015, 1022, 2465, 296, 1023, 298, 996, 294, 858, 294, + 294, 997, 1076, 2691, 1732, 1018, 872, 1728, 1024, 1733, + 1025, 2693, 1076, 979, 1019, 873, 1020, 1759, 1876, 2465, + 874, 1876, 1163, 1163, 1163, 1163, 294, 294, 294, 295, + 294, 296, 297, 294, 294, 294, 1940, 294, 294, 294, + 294, 873, 1745, 294, 1746, 294, 874, 1164, 857, 1119, + 1119, 1119, 1119, 2694, 2093, 1540, 294, 294, 294, 294, + + 858, 1989, 1540, 295, 1989, 296, 297, 1120, 1004, 1005, + 1006, 1007, 1005, 1022, 983, 296, 1023, 1990, 2355, 984, + 1008, 1009, 298, 294, 858, 294, 294, 1010, 1970, 2368, + 1024, 1540, 1025, 872, 1532, 1535, 1532, 1532, 1623, 1623, + 1623, 1623, 873, 1701, 1702, 1701, 1701, 874, 1183, 1183, + 1183, 1183, 294, 294, 294, 295, 294, 296, 297, 294, + 294, 294, 294, 294, 294, 294, 294, 1184, 873, 294, + 294, 294, 294, 874, 298, 1014, 1015, 1016, 1017, 1015, + 1743, 2267, 294, 294, 294, 294, 294, 1004, 1005, 1006, + 1007, 1005, 1747, 983, 1018, 2267, 1076, 1748, 984, 1008, + + 1009, 1077, 1775, 1019, 1735, 1020, 1010, 1776, 1735, 294, + 294, 294, 294, 1049, 1541, 1050, 1051, 1076, 1057, 1052, + 1058, 1059, 1077, 1076, 1060, 2372, 2397, 1053, 1787, 1061, + 1062, 1063, 1054, 1701, 1702, 1701, 1701, 1064, 294, 294, + 294, 294, 295, 294, 296, 297, 294, 294, 294, 294, + 294, 294, 294, 294, 2218, 2136, 294, 294, 294, 294, + 1027, 298, 296, 1028, 1027, 2695, 296, 1028, 1055, 294, + 294, 294, 294, 294, 988, 1005, 1006, 1007, 1005, 1029, + 983, 2136, 2495, 1029, 2139, 984, 1008, 1143, 1143, 1143, + 1143, 1030, 1785, 987, 1074, 1034, 294, 294, 294, 294, + + 1265, 2698, 1011, 1265, 1012, 1057, 1074, 1058, 1059, 2495, + 2139, 1060, 1124, 1266, 1145, 1030, 1061, 1062, 1063, 1034, + 1702, 1702, 1702, 1702, 1064, 294, 294, 294, 294, 295, + 294, 296, 297, 294, 294, 866, 294, 294, 294, 294, + 294, 294, 294, 294, 1353, 294, 1831, 1353, 868, 2699, + 1117, 1117, 1117, 1117, 1764, 1831, 294, 294, 294, 294, + 294, 988, 1005, 1006, 1007, 1005, 1076, 983, 1118, 2511, + 1791, 1768, 984, 1008, 1354, 1792, 1049, 2700, 1050, 1051, + 987, 1948, 1052, 294, 1948, 294, 294, 1799, 1076, 1011, + 1053, 1012, 1800, 1077, 1949, 1054, 2511, 1541, 1354, 1679, + + 1074, 1074, 1074, 1074, 1646, 1647, 1646, 1646, 1163, 1163, + 1163, 1163, 294, 294, 294, 294, 295, 294, 296, 297, + 294, 294, 866, 294, 294, 294, 294, 294, 294, 294, + 294, 1055, 294, 1164, 1648, 868, 1027, 1031, 296, 1028, + 1031, 2701, 1541, 294, 294, 294, 294, 294, 2583, 2150, + 1032, 1119, 1119, 1119, 1119, 1033, 1076, 1066, 1649, 1067, + 1068, 1077, 1391, 1069, 2702, 1391, 1076, 1030, 1070, 1120, + 294, 1077, 294, 294, 1076, 2150, 1071, 1082, 1066, 1806, + 1067, 1068, 1083, 2296, 1069, 1701, 1702, 1701, 1701, 1070, + 1392, 1030, 2296, 1143, 1143, 1143, 1143, 1071, 2580, 294, + + 294, 294, 294, 295, 294, 296, 297, 294, 294, 869, + 294, 294, 294, 294, 294, 294, 294, 294, 1124, 294, + 1145, 1393, 871, 1027, 1031, 296, 1028, 1031, 2703, 2151, + 294, 294, 294, 294, 294, 1960, 2704, 1032, 1961, 1394, + 1072, 1073, 1033, 1143, 1143, 1143, 1143, 1143, 1143, 1143, + 1143, 2234, 2707, 1962, 1034, 2151, 1645, 294, 1074, 294, + 294, 1072, 1073, 1150, 1505, 1505, 1505, 1505, 1124, 1735, + 1145, 1812, 1124, 1735, 1145, 1074, 1813, 2234, 1034, 1506, + 1143, 1143, 1143, 1143, 1074, 1541, 294, 294, 294, 294, + 295, 294, 296, 297, 294, 294, 869, 294, 294, 294, + + 294, 294, 294, 294, 294, 1124, 294, 1145, 1541, 871, + 1146, 1074, 1714, 1714, 1714, 1714, 1149, 294, 294, 294, + 294, 294, 1080, 1080, 1080, 1080, 1037, 1038, 1039, 1040, + 1038, 2568, 1041, 1143, 1143, 1143, 1143, 1042, 1043, 1790, + 1081, 1074, 1044, 1820, 294, 1045, 294, 294, 1821, 1147, + 2369, 2578, 2388, 1046, 1080, 1080, 1080, 1080, 1124, 1148, + 1145, 1684, 1074, 1074, 1074, 1074, 1827, 1163, 1163, 1163, + 1163, 1828, 1081, 294, 294, 294, 294, 295, 294, 296, + 297, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 1164, 294, 1541, 2240, 876, 2241, 1160, 1647, + + 1647, 1647, 1647, 294, 294, 294, 294, 872, 294, 1047, + 2372, 1829, 1143, 1143, 1143, 1143, 1830, 1166, 1166, 1166, + 1166, 2240, 2373, 2241, 1037, 1038, 1039, 1040, 1038, 1649, + 1041, 294, 294, 294, 294, 1042, 1043, 1124, 2202, 1145, + 1044, 2297, 1164, 1045, 1168, 1689, 1074, 1074, 1074, 1074, + 2297, 1046, 2203, 1649, 1143, 1143, 1143, 1143, 1753, 2519, + 294, 294, 294, 294, 295, 294, 296, 297, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 1124, + 294, 1145, 1753, 876, 1844, 1152, 2519, 2351, 1153, 1845, + 294, 294, 294, 294, 872, 294, 2351, 1143, 1143, 1143, + + 1143, 1143, 1143, 1143, 1143, 1852, 1755, 1047, 2708, 1717, + 1853, 1151, 1854, 1143, 1143, 1143, 1143, 1855, 294, 294, + 294, 294, 1124, 1242, 1145, 1074, 1124, 2709, 1145, 1941, + 1505, 1505, 1505, 1505, 1942, 1735, 1753, 1074, 1124, 1735, + 1145, 1177, 1177, 1177, 1177, 1506, 2710, 294, 294, 294, + 294, 295, 294, 296, 297, 294, 294, 294, 1156, 294, + 294, 294, 294, 294, 294, 294, 1154, 294, 2617, 1178, + 878, 1080, 1080, 1080, 1080, 2711, 1155, 1157, 294, 294, + 294, 879, 1158, 1117, 1117, 1117, 1117, 1159, 2712, 1081, + 1831, 1119, 1119, 1119, 1119, 1177, 1177, 1177, 1177, 1876, + + 1179, 1118, 1876, 1877, 1831, 294, 294, 294, 294, 1120, + 1223, 1223, 1223, 1223, 1180, 2296, 1181, 1878, 1182, 1204, + 1204, 1204, 1204, 1178, 1177, 1177, 1177, 1177, 1224, 2296, + 1204, 1204, 1204, 1204, 294, 294, 294, 295, 294, 296, + 297, 294, 294, 294, 1205, 294, 294, 294, 294, 294, + 294, 294, 1178, 294, 1179, 1205, 878, 1204, 1204, 1204, + 1204, 2713, 2254, 2357, 294, 294, 294, 879, 1180, 2372, + 1181, 2359, 1182, 1204, 1204, 1204, 1204, 1210, 1210, 1210, + 1210, 2390, 1205, 1179, 1210, 1210, 1210, 1210, 2254, 2357, + 1267, 294, 294, 294, 294, 1260, 2412, 1180, 1205, 1181, + + 1291, 1182, 1211, 1505, 1505, 1505, 1505, 2008, 2413, 1211, + 1694, 1074, 1074, 1074, 1074, 1301, 1348, 2359, 1506, 2359, + 294, 294, 294, 295, 294, 886, 297, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 298, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 887, 887, 887, 887, 887, + 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, + 887, 887, 887, 887, 887, 887, 887, 294, 294, 294, + 294, 887, 887, 887, 887, 887, 887, 887, 887, 887, + 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, + + 887, 887, 887, 887, 887, 887, 294, 294, 294, 294, + 295, 912, 913, 914, 912, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 298, + 294, 294, 294, 294, 294, 294, 915, 294, 294, 294, + 294, 294, 916, 916, 916, 916, 916, 916, 916, 916, + 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 916, 916, 916, 916, 294, 294, 294, 294, 916, 916, + 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 916, 916, 916, 294, 294, 917, 294, 295, 294, 296, + + 297, 294, 294, 926, 294, 294, 294, 294, 294, 294, + 294, 294, 2371, 294, 2531, 2371, 928, 1210, 1210, 1210, + 1210, 1541, 2714, 2426, 294, 294, 294, 294, 294, 1796, + 1796, 1796, 1796, 1194, 2715, 1074, 1074, 1991, 1272, 1074, + 1991, 2531, 1211, 1279, 1074, 1210, 1210, 1210, 1210, 2426, + 1307, 294, 1074, 294, 294, 1257, 1074, 1074, 1541, 1074, + 1334, 1335, 1336, 1334, 1704, 1705, 1706, 1705, 1705, 1074, + 1211, 1735, 1272, 1337, 1074, 1735, 1338, 1279, 1316, 2569, + 294, 294, 294, 294, 295, 294, 296, 297, 294, 294, + 926, 294, 294, 294, 294, 294, 294, 294, 294, 1289, + + 294, 2716, 2592, 928, 1960, 1306, 1339, 1961, 1306, 1339, + 1074, 294, 294, 294, 294, 294, 1074, 1074, 1307, 1259, + 2717, 1876, 1962, 1308, 1876, 1910, 1290, 1291, 1343, 1614, + 1344, 1345, 1614, 2718, 1346, 1283, 1341, 1347, 294, 1911, + 294, 294, 1301, 1348, 2719, 1612, 1349, 1355, 1356, 1356, + 1355, 2720, 2721, 1508, 1508, 1508, 1508, 2045, 2265, 1283, + 1342, 2046, 1509, 2266, 2047, 1357, 1509, 294, 294, 294, + 294, 295, 294, 296, 297, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 298, 294, 294, 294, 294, 294, 294, 294, 294, 294, + + 294, 294, 294, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 294, 294, 294, 294, 938, + 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 294, 294, 294, 294, 295, 294, + 944, 297, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 945, 945, 298, 945, 945, + 945, 945, 945, 945, 294, 294, 294, 294, 294, 294, + 945, 945, 945, 945, 945, 945, 945, 946, 945, 945, + + 947, 945, 945, 945, 945, 945, 945, 945, 945, 945, + 945, 945, 294, 294, 294, 294, 945, 945, 945, 945, + 945, 945, 945, 946, 945, 945, 947, 945, 945, 945, + 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, + 945, 294, 294, 294, 294, 295, 294, 944, 297, 294, + 294, 948, 949, 294, 294, 294, 294, 294, 294, 294, + 1719, 294, 1720, 2297, 951, 1329, 1330, 1331, 1329, 2557, + 2722, 2177, 294, 294, 294, 294, 949, 2297, 1332, 1355, + 1356, 1356, 1355, 1308, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1218, 2026, 1074, 1315, 2026, 1357, 1074, 294, + + 952, 294, 294, 1074, 2723, 1508, 1508, 1508, 1508, 1364, + 1737, 1074, 1738, 1364, 1509, 1074, 1738, 1541, 1509, 1315, + 1646, 1647, 1646, 1646, 1363, 1363, 1363, 1363, 294, 294, + 949, 294, 295, 294, 944, 297, 294, 294, 948, 949, + 294, 294, 294, 294, 294, 294, 294, 1074, 294, 1364, + 1648, 951, 1351, 1360, 1282, 1351, 1360, 1282, 2318, 294, + 294, 294, 294, 949, 4091, 1352, 1363, 1363, 1363, 1363, + 1308, 1361, 2338, 2590, 1649, 1074, 1074, 1385, 1385, 1385, + 1385, 4091, 1341, 1354, 1283, 2351, 294, 952, 294, 294, + 1289, 1364, 1541, 1290, 1291, 1343, 2002, 1344, 1345, 2351, + + 2003, 1350, 1386, 2004, 1347, 4091, 1342, 1354, 1283, 1301, + 1348, 2456, 2724, 1349, 1983, 294, 294, 949, 294, 295, + 294, 944, 297, 294, 294, 953, 294, 294, 294, 294, + 294, 294, 294, 294, 2378, 294, 1971, 2456, 955, 1385, + 1385, 1385, 1385, 1541, 2391, 2200, 294, 294, 294, 294, + 294, 2201, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, + 1117, 1117, 1117, 1117, 1386, 2725, 2457, 1405, 1406, 1407, + 1405, 1382, 1541, 294, 1382, 294, 294, 1386, 1118, 1735, + 1408, 1386, 1972, 1735, 1383, 1409, 1508, 1508, 1508, 1508, + 1541, 1739, 2457, 1541, 1973, 1509, 1740, 1410, 1974, 1509, + + 2002, 2574, 294, 294, 294, 294, 295, 294, 944, 297, + 294, 294, 953, 294, 294, 294, 294, 294, 294, 294, + 294, 1410, 294, 1404, 2577, 955, 1411, 1412, 1413, 1411, + 2572, 1541, 2626, 294, 294, 294, 294, 294, 1274, 1414, + 1074, 2626, 1312, 2137, 1260, 1796, 1796, 1796, 1796, 2599, + 1417, 1418, 1275, 1419, 1420, 1345, 1415, 2138, 1421, 1588, + 294, 2605, 294, 294, 1422, 1355, 1423, 1424, 1355, 2137, + 1425, 1426, 1508, 1508, 1508, 1508, 1796, 1796, 1796, 1796, + 1415, 1509, 2305, 1357, 2138, 1509, 2726, 2306, 2591, 294, + 294, 294, 294, 295, 294, 296, 297, 294, 294, 294, + + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 298, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 959, 959, 959, 959, 959, + 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, + 959, 959, 959, 959, 959, 959, 959, 294, 294, 294, + 294, 959, 959, 959, 959, 959, 959, 959, 959, 959, + 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, + 959, 959, 959, 959, 959, 959, 294, 294, 294, 294, + 295, 294, 296, 297, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 298, + + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 294, 294, 294, 294, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 294, 294, 294, 1121, 1122, 1122, 1121, + 1404, 2727, 1123, 1417, 1418, 1318, 1419, 1420, 1345, 1466, + 1541, 1421, 1466, 1382, 2173, 1470, 1382, 1422, 1470, 1423, + 1424, 1124, 1259, 1425, 1426, 2728, 1383, 2174, 1352, 1774, + + 2175, 1074, 1290, 1308, 1343, 1074, 1344, 1345, 1804, 4091, + 1074, 1804, 2729, 1347, 1766, 4091, 1767, 1452, 1468, 1469, + 1452, 1307, 1349, 2464, 2398, 1125, 1805, 1126, 1074, 1876, + 1453, 1127, 1876, 4091, 1128, 1129, 2601, 1130, 2398, 4091, + 1131, 1132, 1133, 1134, 1289, 1318, 1541, 1940, 1290, 2464, + 1343, 2466, 1344, 1345, 1074, 1492, 1492, 1492, 1492, 1347, + 1119, 1119, 1119, 1119, 1468, 1469, 1973, 1951, 1349, 1074, + 1974, 1290, 1291, 1292, 1293, 1294, 1295, 2466, 1120, 1296, + 1493, 1275, 1297, 1298, 1299, 1300, 1952, 1301, 1302, 1303, + 1304, 1305, 1318, 1488, 1488, 1488, 1488, 2732, 2581, 2734, + + 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1797, 1797, + 1797, 1797, 1489, 1489, 1489, 1489, 1489, 1489, 1490, 1319, + 1320, 1292, 1321, 1322, 1295, 1493, 1798, 1323, 2397, 1493, + 1297, 1298, 1299, 1324, 2735, 1325, 1326, 1303, 1304, 1327, + 1328, 1492, 1492, 1492, 1492, 1498, 1498, 1498, 1498, 1502, + 1502, 1502, 1502, 1515, 1074, 1074, 1499, 1074, 2730, 2731, + 1503, 1610, 1531, 1532, 1610, 1540, 1493, 1541, 1543, 1540, + 2736, 1500, 1074, 1541, 1611, 1504, 1540, 1612, 2477, 1613, + 1540, 1544, 1542, 1543, 1540, 1785, 1540, 1074, 2553, 1543, + 1540, 1540, 1619, 1619, 1619, 1619, 1544, 1540, 1501, 1074, + + 2554, 2555, 1544, 1314, 2477, 1540, 1314, 2582, 1074, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1620, 1541, 2570, + 1540, 1619, 1619, 1619, 1619, 1541, 1540, 1709, 1709, 1709, + 1709, 1504, 1521, 1315, 1620, 1951, 1522, 1074, 1620, 2249, + 1522, 1951, 2249, 1074, 1523, 1521, 1620, 2737, 1310, 1275, + 1522, 1310, 1710, 1524, 1525, 1275, 1310, 1315, 1521, 1310, + 1526, 1311, 1522, 1541, 1312, 1460, 1522, 2738, 1460, 1311, + 1523, 1521, 1312, 1527, 2602, 1528, 1466, 1522, 1461, 1466, + 2739, 1524, 1549, 2588, 1701, 1702, 1701, 1701, 2740, 1259, + 1709, 1709, 1709, 1709, 1541, 2478, 1550, 1707, 1801, 1801, + + 1801, 1801, 1708, 2584, 1709, 1709, 1709, 1709, 2743, 1551, + 1552, 1553, 1554, 1555, 1556, 1710, 1557, 1558, 2481, 1559, + 1560, 2478, 1561, 1562, 1541, 1563, 1564, 1565, 1566, 1710, + 1801, 1801, 1801, 1801, 2208, 1551, 1552, 1553, 1554, 1555, + 1556, 2744, 1557, 1558, 2481, 1559, 1560, 2209, 1561, 1562, + 2210, 2045, 1563, 1564, 1565, 1566, 1567, 1567, 1567, 1567, + 1712, 1709, 1709, 1712, 1769, 1769, 1769, 1769, 1801, 1801, + 1801, 1801, 2745, 2746, 1753, 1770, 2589, 1567, 1541, 1567, + 1567, 1076, 1780, 2626, 1074, 1710, 1756, 1310, 1074, 1771, + 1310, 2747, 2484, 1074, 1074, 1074, 2748, 2626, 1753, 1991, + + 1311, 1074, 1991, 1312, 1567, 1260, 2749, 1568, 1569, 1570, + 1571, 1572, 1307, 2371, 1573, 1574, 2371, 1575, 2484, 1576, + 2750, 1577, 1755, 1578, 1579, 1580, 1581, 1582, 1583, 1584, + 1095, 1095, 1095, 1095, 1585, 1989, 2600, 1540, 1989, 1542, + 1543, 1540, 1586, 1586, 1586, 1586, 1586, 1586, 1587, 2485, + 2119, 1990, 1753, 1544, 1795, 1074, 1074, 1074, 1074, 2120, + 1074, 1080, 1080, 1080, 1080, 1074, 1074, 1074, 1080, 1080, + 1080, 1080, 2077, 1074, 2078, 2485, 2119, 1540, 2079, 1081, + 1080, 1080, 1080, 1080, 1874, 2120, 1081, 1117, 1117, 1117, + 1117, 2081, 2753, 1875, 1119, 1119, 1119, 1119, 1081, 1080, + + 1080, 1080, 1080, 1353, 1874, 1118, 1353, 1537, 1567, 1567, + 1567, 1567, 1120, 1875, 1817, 2404, 1074, 1081, 2404, 1541, + 1074, 1086, 1087, 1087, 1086, 1074, 1074, 1074, 1824, 1567, + 1074, 1567, 1567, 1354, 1074, 1840, 1840, 1840, 1840, 1074, + 1087, 1087, 1087, 1087, 2405, 2754, 1088, 1832, 1832, 1832, + 1832, 2755, 1117, 1117, 1117, 1117, 1589, 1354, 2723, 1590, + 1591, 1592, 1593, 1594, 1595, 1088, 1596, 1597, 2756, 1598, + 1118, 1599, 1088, 1600, 2733, 1601, 1602, 1603, 1604, 1605, + 1606, 1584, 1091, 1091, 1091, 1091, 1585, 2751, 2752, 1540, + 2545, 1542, 1543, 1540, 1586, 1586, 1586, 1586, 1586, 1586, + + 1587, 2445, 2757, 1089, 2445, 1544, 2546, 1088, 2547, 1093, + 2758, 1074, 1074, 1091, 1091, 1091, 1091, 1835, 1835, 1835, + 1835, 1099, 1099, 1099, 1099, 1103, 1104, 1104, 1103, 1540, + 2446, 1834, 1838, 1838, 1838, 1838, 1427, 1428, 1088, 1427, + 1093, 2760, 2761, 2161, 1093, 1470, 1100, 2162, 1470, 1429, + 1607, 1104, 1104, 1104, 1104, 2762, 2163, 1100, 1352, 1537, + 1631, 2766, 2177, 1308, 1631, 1631, 2178, 1632, 1631, 1631, + 2767, 2179, 1631, 2768, 1631, 1108, 1108, 1108, 1108, 2093, + 1540, 1634, 2488, 1634, 1631, 1634, 2769, 1540, 1104, 1104, + 1104, 1104, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, + + 1110, 1119, 1119, 1119, 1119, 1102, 1541, 1106, 2488, 1631, + 2770, 1631, 1631, 1842, 1850, 1948, 1540, 1110, 1948, 1120, + 2771, 1110, 2772, 1851, 1851, 1851, 1851, 1851, 1949, 1122, + 1122, 1122, 1122, 4091, 1870, 1870, 1870, 1870, 2773, 1991, + 1631, 1635, 1991, 2502, 2774, 1635, 1635, 1138, 1636, 1635, + 1635, 2575, 1307, 1635, 1124, 1635, 1871, 1871, 1871, 1871, + 2576, 2077, 1638, 2078, 1638, 1635, 1638, 2079, 2507, 2502, + 4091, 1879, 1879, 1879, 1879, 1143, 1143, 1143, 1143, 2080, + 2081, 1873, 1143, 1143, 1143, 1143, 1161, 1161, 1161, 1161, + 1635, 2775, 1635, 1635, 2507, 1339, 1124, 2776, 1339, 2116, + + 1124, 2133, 1145, 1163, 1163, 1163, 1163, 1124, 1259, 1145, + 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 2508, 2141, + 1804, 1635, 1639, 1804, 1541, 1341, 1639, 1639, 1164, 1640, + 1639, 1639, 2879, 1307, 1639, 1124, 1639, 1145, 1805, 1124, + 1541, 1145, 1541, 1642, 2508, 1642, 1639, 1642, 1753, 1342, + 1143, 1143, 1143, 1143, 2880, 1881, 1143, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 2882, 1991, 2566, 1883, 1991, 2885, + 2886, 1639, 1753, 1639, 1639, 1124, 2567, 1145, 1307, 2887, + 2212, 1124, 2195, 1145, 2213, 1124, 2196, 1145, 2608, 2214, + 1884, 1143, 1143, 1143, 1143, 2197, 1755, 1143, 1143, 1143, + + 1143, 2512, 1639, 1121, 1122, 1122, 1121, 2777, 2888, 1123, + 1541, 1143, 1143, 1143, 1143, 2608, 1124, 2891, 1145, 2892, + 1888, 1537, 1124, 1886, 1145, 1885, 1753, 2512, 1124, 2893, + 2826, 1887, 1903, 1903, 1903, 1903, 1124, 2517, 1145, 2894, + 1143, 1143, 1143, 1143, 1169, 1169, 1169, 1169, 1143, 1143, + 1143, 1143, 2597, 1614, 2212, 1892, 1614, 1164, 2826, 1889, + 2895, 2896, 1125, 2517, 1126, 1124, 1611, 1145, 1127, 1612, + 1753, 1128, 1129, 1124, 1130, 1145, 1890, 1131, 1132, 1133, + 1134, 1891, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 1753, 1143, 1143, 1143, 1143, 1143, + + 1143, 1143, 1143, 1893, 2889, 1894, 2897, 1124, 2763, 1145, + 2902, 1124, 2890, 1145, 2898, 1124, 1905, 1145, 1755, 2899, + 1124, 1895, 1145, 2905, 1124, 2518, 1145, 1901, 1901, 1901, + 1901, 1166, 1166, 1166, 1166, 2763, 1166, 1166, 1166, 1166, + 1906, 1906, 1906, 1906, 1174, 1174, 1174, 1174, 1753, 2223, + 1896, 2518, 2223, 2906, 1145, 1898, 1164, 1897, 1168, 1175, + 1899, 1164, 1611, 1168, 2909, 2224, 1541, 1168, 1176, 1176, + 1176, 1176, 1900, 1176, 1176, 1176, 1176, 1177, 1177, 1177, + 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1912, + 1912, 1912, 1912, 2522, 1189, 1189, 1189, 1189, 2462, 2223, + + 1184, 2462, 2223, 2612, 1184, 1178, 1190, 1917, 1917, 1917, + 1917, 1194, 1611, 1074, 1074, 1612, 2910, 1074, 1918, 2522, + 2907, 2908, 1074, 1195, 1196, 1196, 1195, 2463, 1921, 2612, + 1074, 1196, 1196, 1196, 1196, 2911, 1179, 1922, 1922, 1922, + 1922, 1922, 1923, 1924, 1925, 1923, 1204, 1204, 1204, 1204, + 1180, 2912, 1181, 2915, 1182, 1928, 1928, 1928, 1928, 1204, + 1204, 1204, 1204, 1208, 1208, 1208, 1208, 1210, 1210, 1210, + 1210, 1205, 1932, 1932, 1932, 1932, 1210, 1210, 1210, 1210, + 1205, 2963, 2093, 1540, 1205, 1214, 1214, 1214, 1214, 1541, + 1540, 1541, 1211, 1541, 1074, 1074, 1218, 1211, 1074, 1938, + + 1541, 1211, 1074, 1223, 1223, 1223, 1223, 1074, 1939, 1939, + 1939, 1939, 1939, 1541, 2964, 1074, 1257, 1074, 1074, 1540, + 1074, 1224, 1269, 1269, 1269, 1269, 1277, 1277, 1277, 1277, + 1074, 1276, 1277, 1276, 1276, 1074, 1541, 2917, 2918, 1930, + 1331, 1330, 1331, 1331, 1272, 2593, 2613, 1306, 2594, 2927, + 1306, 1074, 2007, 1330, 1331, 2007, 1934, 2595, 2596, 2936, + 1307, 1331, 1330, 1331, 1331, 1308, 2140, 2705, 1990, 2140, + 2705, 1074, 2613, 1334, 1335, 1336, 1334, 1283, 2933, 1074, + 1074, 1291, 1953, 1293, 1954, 1955, 1337, 2447, 1956, 1338, + 2447, 1957, 1298, 1299, 1300, 2141, 1301, 1302, 1303, 1304, + + 1958, 1283, 1329, 1330, 1331, 1329, 1334, 1335, 1336, 1334, + 1351, 1360, 2142, 1351, 1360, 1332, 2448, 1541, 2966, 1337, + 1308, 2967, 1338, 1352, 1355, 1356, 1356, 1355, 1308, 1361, + 2706, 2449, 1315, 1363, 1363, 1363, 1363, 2619, 2968, 2142, + 1341, 1354, 1357, 2015, 2015, 2015, 2015, 1363, 1363, 1363, + 1363, 1368, 1368, 1368, 1368, 2913, 1315, 2449, 1364, 1370, + 1371, 1370, 1370, 2619, 1342, 1354, 1391, 2620, 1364, 1391, + 2919, 2914, 1364, 1375, 1376, 1375, 1375, 1385, 1385, 1385, + 1385, 2022, 2022, 2022, 2022, 1385, 1385, 1385, 1385, 1389, + 1389, 1389, 1389, 2620, 1392, 1541, 1405, 1406, 1407, 1405, + + 1541, 1774, 1386, 1074, 2973, 2480, 1386, 1074, 2480, 1408, + 1386, 1541, 1074, 2794, 1409, 1407, 1406, 1407, 1407, 1411, + 1412, 1413, 1411, 2974, 2813, 1393, 1410, 2017, 1407, 1406, + 1407, 1407, 1414, 2975, 2116, 1312, 1541, 1260, 1417, 1418, + 2794, 1419, 1420, 1394, 2692, 2759, 1421, 2920, 2450, 1415, + 1410, 2813, 1422, 2922, 1423, 1424, 1074, 2451, 1425, 1426, + 2032, 1406, 1407, 2032, 2953, 2024, 1411, 1412, 1413, 1411, + 2692, 2759, 2977, 1415, 2450, 1541, 1990, 1417, 1418, 1414, + 1419, 1420, 1312, 2451, 2926, 1421, 2033, 1406, 1407, 2033, + 1410, 1422, 2482, 1423, 1424, 2482, 1415, 1425, 1426, 2034, + + 2053, 2054, 2053, 2053, 2056, 2054, 2056, 2056, 1488, 1488, + 1488, 1488, 2782, 2783, 1410, 1991, 1410, 2057, 1991, 1541, + 1415, 2483, 1488, 1488, 1488, 1488, 2932, 1541, 1307, 1488, + 1488, 1488, 1488, 1490, 1492, 1492, 1492, 1492, 2782, 2783, + 1410, 1489, 1489, 1489, 1489, 1489, 1489, 1490, 2067, 2067, + 2067, 2067, 2067, 2067, 1490, 2069, 2069, 2069, 2069, 1493, + 1492, 1492, 1492, 1492, 1496, 1496, 1496, 1496, 1498, 1498, + 1498, 1498, 1502, 1502, 1502, 1502, 2923, 2935, 1541, 1499, + 1493, 2486, 2979, 1503, 2486, 1493, 1505, 1505, 1505, 1505, + 1507, 1507, 1507, 1507, 1500, 1541, 2784, 2787, 1504, 2980, + + 2983, 1506, 1507, 1507, 1507, 1507, 1508, 1508, 1508, 1508, + 2487, 1508, 1508, 1508, 1508, 1509, 2990, 2991, 2992, 1509, + 1509, 1501, 2784, 2787, 1509, 1515, 1074, 1074, 2937, 1074, + 1530, 1531, 1532, 1530, 1533, 1534, 1532, 1533, 2993, 2071, + 1532, 1535, 1532, 1532, 1074, 1533, 1534, 1532, 1533, 2086, + 2087, 1532, 2086, 2928, 1504, 1532, 1535, 1532, 1532, 1584, + 2143, 2801, 2115, 2806, 1585, 2115, 2144, 2145, 2157, 2157, + 2157, 2157, 2088, 2088, 2088, 2088, 2088, 2088, 2089, 1540, + 1074, 2092, 1543, 1540, 2095, 1540, 2143, 2801, 2811, 2806, + 1540, 2116, 1540, 2144, 2145, 1544, 1540, 1544, 1542, 1543, + + 1540, 2152, 2152, 2152, 2152, 1541, 2117, 1540, 2118, 1541, + 1541, 2641, 1544, 2132, 2811, 2812, 2132, 1541, 1541, 1540, + 1540, 1540, 1540, 1541, 1540, 1540, 1540, 1540, 1540, 1540, + 1540, 1540, 2117, 1541, 2994, 2118, 1540, 1537, 2121, 2816, + 2122, 2812, 2133, 2467, 2158, 2123, 2467, 2127, 2128, 2129, + 2996, 2585, 2124, 2934, 2249, 2134, 2135, 2249, 2939, 2248, + 1540, 2153, 2130, 2944, 2121, 2816, 2122, 2586, 2947, 2587, + 2154, 2123, 2468, 2131, 2155, 2997, 2825, 2156, 1645, 2124, + 1074, 2134, 2135, 2159, 2159, 2159, 2159, 2952, 2130, 2469, + 1537, 2099, 2100, 2101, 2102, 2103, 2104, 1074, 2105, 2106, + + 2131, 2107, 2108, 2825, 2109, 2110, 1074, 2111, 2112, 2113, + 2114, 2164, 2164, 2164, 2164, 1541, 2469, 2099, 2100, 2101, + 2102, 2103, 2104, 2146, 2105, 2106, 2147, 2107, 2108, 2830, + 2109, 2110, 2978, 1074, 2111, 2112, 2113, 2114, 2148, 2998, + 2149, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2146, + 2999, 1541, 2147, 2160, 1541, 2830, 2157, 2157, 2157, 2157, + 2978, 3000, 1541, 2489, 2829, 2148, 2489, 2149, 2152, 2152, + 2152, 2152, 2491, 1541, 2948, 2491, 2159, 2159, 2159, 2159, + 2165, 1623, 1623, 1623, 1623, 1541, 1646, 1647, 1646, 1646, + 2166, 2829, 2490, 1541, 2164, 2164, 2164, 2164, 2171, 2946, + + 2493, 2492, 2206, 2493, 2841, 2496, 2172, 1584, 2496, 2848, + 2207, 1541, 1585, 2949, 2950, 1540, 1648, 1542, 1543, 1540, + 1586, 1586, 1586, 1586, 1586, 1586, 1587, 2853, 2187, 2494, + 2841, 1544, 2191, 2192, 2497, 2848, 2498, 2188, 3001, 2498, + 1649, 2189, 2500, 2193, 2190, 2500, 2194, 2857, 1610, 1531, + 1532, 1610, 3002, 3003, 2853, 1540, 1619, 1619, 1619, 1619, + 3004, 1611, 3005, 2198, 1612, 2499, 1613, 2225, 2225, 2225, + 2225, 2501, 3006, 2199, 2857, 3007, 1647, 1647, 1647, 1647, + 2503, 1620, 2520, 2503, 3008, 1537, 1584, 1619, 1619, 1619, + 1619, 1585, 1620, 3009, 1540, 2521, 1542, 1543, 1540, 1586, + + 1586, 1586, 1586, 1586, 1586, 1587, 1649, 2856, 2520, 2504, + 1544, 1631, 1620, 3010, 2506, 1631, 1631, 2506, 1632, 1631, + 1631, 2521, 1541, 1631, 1541, 1631, 1701, 1702, 1701, 1701, + 1649, 2862, 1635, 2856, 1540, 1631, 1635, 1635, 1541, 1636, + 1635, 1635, 2509, 2133, 1635, 2509, 1635, 1701, 1702, 1701, + 1701, 2227, 1702, 1702, 1702, 1702, 1635, 2862, 2513, 2863, + 1631, 2513, 1631, 1631, 1537, 1631, 2924, 1541, 2925, 1631, + 1631, 2510, 1632, 1631, 1631, 3011, 3031, 1631, 3034, 1631, + 1541, 1635, 2931, 1635, 1635, 2863, 1634, 2514, 1634, 1631, + 1634, 1631, 1679, 1074, 1074, 1074, 1074, 1684, 1074, 1074, + + 1074, 1074, 1689, 1074, 1074, 1074, 1074, 1694, 1074, 1074, + 1074, 1074, 1635, 1541, 1631, 2686, 1631, 1631, 1704, 1705, + 1706, 1705, 1705, 1639, 2938, 2951, 2868, 1639, 1639, 3035, + 1640, 1639, 1639, 2965, 2689, 1639, 3038, 1639, 1701, 1702, + 1701, 1701, 1541, 3039, 3040, 1631, 1635, 1639, 3043, 3044, + 1635, 1635, 2868, 1636, 1635, 1635, 3045, 2940, 1635, 2965, + 1635, 1704, 1705, 1706, 1705, 1705, 3046, 1638, 3047, 1638, + 1635, 1638, 1639, 3048, 1639, 1639, 1075, 1706, 1706, 1706, + 1706, 1701, 1702, 1701, 1701, 1701, 1702, 1701, 1701, 1709, + 1709, 1709, 1709, 1541, 2957, 1635, 1541, 1635, 1635, 2245, + + 2245, 2245, 2245, 1639, 1712, 1709, 1709, 1712, 3050, 2248, + 1714, 1714, 1714, 1714, 1710, 1712, 1709, 1709, 1712, 1769, + 1769, 1769, 1769, 3051, 1710, 2900, 1635, 1639, 2900, 1710, + 1770, 1639, 1639, 1541, 1640, 1639, 1639, 2941, 2929, 1639, + 1710, 1639, 2942, 1780, 1771, 1074, 2930, 3053, 1642, 1074, + 1642, 1639, 1642, 3055, 1074, 1074, 1074, 2263, 1796, 1796, + 1796, 1796, 1074, 3056, 3057, 3058, 2264, 2264, 2264, 2264, + 2264, 1797, 1797, 1797, 1797, 3059, 1639, 2516, 1639, 1639, + 2516, 2954, 2901, 2247, 1795, 1074, 1074, 1074, 1074, 1798, + 1074, 1801, 1801, 1801, 1801, 1074, 1074, 1074, 3060, 2275, + + 3062, 2223, 2705, 1074, 2223, 2705, 2141, 1639, 2276, 2276, + 2276, 2276, 2276, 1817, 1611, 1074, 1717, 1612, 2279, 1074, + 1095, 1095, 1095, 1095, 1074, 1074, 1074, 2280, 2280, 2280, + 2280, 2280, 1824, 2523, 1074, 2283, 2523, 3047, 1074, 1832, + 1832, 1832, 1832, 1074, 2284, 2284, 2284, 2284, 2284, 1091, + 1091, 1091, 1091, 1835, 1835, 1835, 1835, 1835, 1835, 1835, + 1835, 3063, 2524, 3064, 1088, 2286, 2286, 2286, 2286, 1838, + 1838, 1838, 1838, 3065, 1088, 3066, 1093, 3067, 2525, 3052, + 1093, 2525, 3052, 3068, 1093, 1838, 1838, 1838, 1838, 3069, + 1100, 2002, 2976, 3070, 1100, 1840, 1840, 1840, 1840, 2288, + + 2288, 2288, 2288, 1871, 1871, 1871, 1871, 2526, 2294, 2002, + 1100, 1870, 1870, 1870, 1870, 1074, 1074, 2295, 2295, 2295, + 2295, 2295, 3054, 1834, 1138, 3054, 3071, 3072, 1873, 1871, + 1871, 1871, 1871, 1879, 1879, 1879, 1879, 1143, 1143, 1143, + 1143, 1161, 1161, 1161, 1161, 1143, 1143, 1143, 1143, 1102, + 1143, 1143, 1143, 1143, 1873, 3068, 3061, 3073, 1124, 3061, + 2527, 3074, 1124, 2527, 1145, 1143, 1143, 1143, 1143, 3075, + 1124, 3076, 1145, 3077, 3081, 1124, 2405, 1145, 1143, 1143, + 1143, 1143, 3082, 1143, 1143, 1143, 1143, 3083, 3078, 2528, + 1124, 3078, 1145, 3084, 3085, 1143, 1143, 1143, 1143, 1169, + + 1169, 1169, 1169, 1124, 3079, 1145, 2529, 3079, 1124, 2529, + 1145, 1143, 1143, 1143, 1143, 3080, 2045, 1881, 2320, 2319, + 1124, 3086, 1145, 3087, 2045, 3088, 2321, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 1143, 2530, 1124, 3089, 1145, 1143, + 1143, 1143, 1143, 2322, 2323, 3083, 3090, 3091, 1143, 1143, + 1143, 1143, 1124, 3092, 1145, 3093, 1124, 3094, 1145, 1143, + 1143, 1143, 1143, 3096, 1124, 3095, 1145, 1143, 1143, 1143, + 1143, 2324, 2325, 1124, 3097, 1145, 1143, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 1124, 3098, 1145, 1143, 1143, 1143, + 1143, 3095, 1124, 3100, 1145, 1143, 1143, 1143, 1143, 3101, + + 3102, 1124, 3103, 1145, 2326, 1124, 2327, 1145, 2329, 3104, + 2696, 3105, 1124, 2696, 1145, 2328, 1912, 1912, 1912, 1912, + 1124, 3106, 1145, 1143, 1143, 1143, 1143, 1901, 1901, 1901, + 1901, 3107, 3108, 3109, 2330, 1901, 1901, 1901, 1901, 2697, + 3110, 2333, 2446, 2331, 2448, 2463, 2468, 2332, 1124, 2483, + 1145, 2487, 2742, 2779, 1145, 2742, 2779, 2334, 1903, 1903, + 1903, 1903, 1145, 3099, 2335, 1166, 1166, 1166, 1166, 1906, + 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1917, 1917, 1917, + 1917, 2405, 2446, 1164, 1923, 1924, 1925, 1923, 1918, 3099, + 1164, 2490, 1168, 2344, 1541, 2492, 1168, 2494, 2336, 2497, + + 1168, 2499, 2345, 2345, 2345, 2345, 2345, 1925, 1924, 1925, + 1925, 1928, 1928, 1928, 1928, 1204, 1204, 1204, 1204, 1208, + 1208, 1208, 1208, 1932, 1932, 1932, 1932, 1210, 1210, 1210, + 1210, 1214, 1214, 1214, 1214, 2955, 1205, 2501, 2504, 2510, + 1205, 2514, 1905, 2524, 2348, 2526, 2528, 2530, 1211, 3185, + 3186, 2956, 1211, 2349, 2349, 2349, 2349, 2349, 2007, 1330, + 1331, 2007, 2015, 2015, 2015, 2015, 1363, 1363, 1363, 1363, + 1368, 1368, 1368, 1368, 1990, 2022, 2022, 2022, 2022, 1385, + 1385, 1385, 1385, 1389, 1389, 1389, 1389, 1364, 3187, 3192, + 2092, 1364, 3193, 2095, 1540, 1930, 2033, 1406, 1407, 2033, + + 1386, 1540, 2781, 3114, 1386, 2781, 1544, 1934, 3125, 2034, + 3194, 2032, 1406, 1407, 2032, 2033, 1406, 1407, 2033, 1411, + 1412, 1413, 1411, 3195, 3196, 3197, 1410, 1990, 2034, 3114, + 1540, 2448, 1414, 3198, 3125, 1312, 2053, 2054, 2053, 2053, + 3112, 1410, 3199, 3113, 3135, 1410, 2017, 3200, 3201, 1415, + 1410, 2053, 2054, 2053, 2053, 2427, 2427, 2427, 2427, 2024, + 2069, 2069, 2069, 2069, 3132, 1410, 3140, 3202, 3112, 1410, + 3113, 3135, 3205, 1415, 1488, 1488, 1488, 1488, 3208, 3209, + 1490, 1488, 1488, 1488, 1488, 1493, 1492, 1492, 1492, 1492, + 3132, 3210, 3140, 2067, 2067, 2067, 2067, 2067, 2067, 1490, + + 2067, 2067, 2067, 2067, 2067, 2067, 1490, 1496, 1496, 1496, + 1496, 1493, 2086, 2087, 1532, 2086, 2086, 2087, 1532, 2086, + 1584, 2152, 2152, 2152, 2152, 1585, 2458, 2459, 2460, 2157, + 2157, 2157, 2157, 2088, 2088, 2088, 2088, 2088, 2088, 2089, + 1584, 2461, 3211, 3141, 2071, 1585, 2159, 2159, 2159, 2159, + 3212, 3215, 3146, 2088, 2088, 2088, 2088, 2088, 2088, 2089, + 2092, 3159, 2473, 2095, 1540, 2474, 2452, 2461, 2453, 3141, + 3170, 1540, 3216, 2454, 3219, 2470, 1544, 2475, 3146, 2476, + 2455, 2471, 2472, 2164, 2164, 2164, 2164, 3159, 2473, 3220, + 2900, 2474, 2452, 2900, 2453, 3217, 3267, 3170, 1537, 2454, + + 1540, 2470, 3173, 3218, 2475, 1541, 2476, 2455, 2471, 2472, + 2170, 2170, 2170, 2170, 2556, 2556, 2556, 2556, 1537, 1584, + 1623, 1623, 1623, 1623, 1585, 1541, 1541, 1540, 3173, 1540, + 1541, 1540, 2442, 2442, 2442, 2442, 2442, 2442, 1587, 2556, + 2556, 2556, 2556, 2225, 2225, 2225, 2225, 1619, 1619, 1619, + 1619, 2245, 2245, 2245, 2245, 3176, 1541, 1712, 1709, 1709, + 1712, 1714, 1714, 1714, 1714, 3268, 3255, 1540, 1620, 3236, + 2785, 1541, 1620, 2785, 2624, 3271, 1710, 3222, 3230, 2629, + 1541, 3176, 1710, 2625, 2625, 2625, 2625, 2625, 2630, 2630, + 2630, 2630, 2630, 2288, 2288, 2288, 2288, 1537, 1540, 2786, + + 1540, 1541, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, + 2632, 2286, 2286, 2286, 2286, 2662, 2662, 2662, 2662, 2633, + 2633, 2633, 2633, 2633, 3223, 3177, 2788, 2227, 1138, 2788, + 2635, 1143, 1143, 1143, 1143, 2247, 1100, 2641, 1540, 2636, + 2636, 2636, 2636, 2636, 1541, 3272, 2642, 2642, 2642, 2642, + 2642, 3177, 1541, 3273, 2564, 2789, 1124, 1541, 1145, 2881, + 2881, 2881, 2881, 1541, 2664, 2664, 2664, 2664, 1537, 1584, + 2556, 2556, 2556, 2556, 1585, 2900, 1541, 1540, 2900, 1542, + 1543, 1540, 1586, 1586, 1586, 1586, 1586, 1586, 2603, 1124, + 3182, 1145, 1541, 1544, 3250, 1102, 1143, 1143, 1143, 1143, + + 3232, 1143, 1143, 1143, 1143, 2663, 1143, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 1541, 3224, 3182, 1540, 1541, 1541, + 3229, 1124, 3279, 1145, 3234, 3280, 1124, 3282, 1145, 2686, + 1541, 1124, 2943, 1145, 1541, 1124, 1541, 1145, 2687, 2687, + 2687, 2687, 2687, 2427, 2427, 2427, 2427, 1537, 1584, 1143, + 1143, 1143, 1143, 1585, 3252, 1541, 1540, 1541, 1542, 1543, + 1540, 1586, 1586, 1586, 1586, 1586, 1586, 1587, 1490, 2665, + 2666, 3225, 1544, 3235, 1124, 2790, 1145, 2668, 2790, 2667, + 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 3237, 1143, + 1143, 1143, 1143, 3241, 3248, 2792, 1540, 1541, 2792, 3231, + + 1143, 1143, 1143, 1143, 2791, 1124, 1541, 1145, 1541, 1124, + 3233, 1145, 1541, 2604, 1124, 3283, 1145, 1143, 1143, 1143, + 1143, 1541, 1541, 2669, 2793, 1124, 1537, 1145, 1143, 1143, + 1143, 1143, 1541, 1143, 1143, 1143, 1143, 2670, 1143, 1143, + 1143, 1143, 1124, 2981, 1145, 2671, 1143, 1143, 1143, 1143, + 3238, 3249, 3240, 1124, 2672, 1145, 2795, 2673, 1124, 2795, + 1145, 2797, 3256, 1124, 2797, 1145, 1143, 1143, 1143, 1143, + 1717, 1124, 3245, 1145, 1143, 1143, 1143, 1143, 3242, 1541, + 2799, 2803, 2674, 2799, 2803, 2796, 1541, 2675, 3243, 2984, + 2798, 1124, 1541, 1145, 2995, 2995, 2995, 2995, 2677, 1124, + + 2676, 1145, 2986, 1488, 1488, 1488, 1488, 2678, 2689, 2800, + 2463, 2804, 2988, 2807, 2804, 2679, 2807, 2690, 2690, 2690, + 2690, 2690, 2764, 2764, 2764, 2764, 2764, 2764, 1490, 2680, + 3281, 2810, 2814, 3286, 2810, 2883, 2883, 2883, 2883, 3239, + 2805, 3244, 2808, 2817, 2819, 2815, 2817, 2819, 3251, 2821, + 2681, 1584, 2821, 3287, 2823, 3288, 1585, 2823, 2814, 1540, + 2468, 1540, 1541, 1540, 2442, 2442, 2442, 2442, 2442, 2442, + 1587, 2815, 2818, 2820, 2480, 3290, 2828, 2480, 2822, 2828, + 3291, 2832, 2833, 2824, 2832, 2833, 2836, 2838, 2840, 2836, + 2838, 2840, 2843, 2845, 2847, 2843, 2845, 2847, 2850, 1540, + + 3292, 2850, 3293, 2116, 2506, 2483, 3294, 2506, 3295, 2884, + 2487, 2834, 3296, 3297, 1541, 2490, 2492, 2494, 3298, 3299, + 3300, 2497, 2499, 2501, 3301, 2851, 3302, 2504, 2851, 1537, + 1584, 2855, 1541, 2133, 2855, 1585, 2859, 3304, 1540, 2859, + 1540, 1541, 1540, 2442, 2442, 2442, 2442, 2442, 2442, 1587, + 2516, 3305, 2860, 2516, 2852, 2860, 2864, 3325, 2866, 2864, + 2510, 2866, 3253, 2870, 2872, 2514, 2870, 2872, 2874, 2876, + 2877, 2874, 2876, 2877, 2903, 2903, 2903, 2903, 1540, 2141, + 3259, 2861, 3326, 3329, 3330, 2865, 3331, 2867, 2881, 2881, + 2881, 2881, 2524, 2526, 2697, 2958, 3333, 2528, 2530, 2878, + + 2883, 2883, 2883, 2883, 1541, 1541, 2960, 3334, 1537, 2903, + 2903, 2903, 2903, 3036, 2961, 3335, 3036, 1541, 3042, 2958, + 3337, 3042, 2969, 2969, 2969, 2969, 1541, 2971, 2971, 2971, + 2971, 2662, 2662, 2662, 2662, 3030, 3030, 3030, 3030, 3338, + 3339, 3340, 3037, 1540, 1138, 3343, 3344, 2697, 2904, 1584, + 2970, 3341, 3260, 3336, 1585, 2972, 3336, 1540, 3342, 1540, + 1541, 1540, 2442, 2442, 2442, 2442, 2442, 2442, 1587, 2981, + 3345, 3346, 3347, 2958, 2921, 2984, 3348, 3349, 2982, 2982, + 2982, 2982, 2982, 2945, 2985, 2985, 2985, 2985, 2985, 2986, + 3012, 3012, 3012, 3012, 2988, 3351, 2002, 1540, 2987, 2987, + + 2987, 2987, 2987, 2989, 2989, 2989, 2989, 2989, 3353, 1541, + 2664, 2664, 2664, 2664, 2916, 1124, 3355, 1145, 2881, 2881, + 2881, 2881, 2002, 1143, 1143, 1143, 1143, 1537, 1584, 1143, + 1143, 1143, 1143, 1585, 3356, 1124, 1540, 1145, 1542, 1543, + 1540, 1586, 1586, 1586, 1586, 1586, 1586, 2603, 1124, 3257, + 1145, 3357, 1544, 3358, 1124, 3359, 1145, 3258, 1143, 1143, + 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, + 3360, 1143, 1143, 1143, 1143, 3341, 1540, 1143, 1143, 1143, + 1143, 3052, 3354, 1124, 3052, 1145, 3361, 1124, 2045, 1145, + 3014, 1124, 3013, 1145, 3054, 3363, 1124, 3054, 1145, 3364, + + 3061, 3365, 1124, 3061, 1145, 3366, 1537, 1584, 1143, 1143, + 1143, 1143, 1585, 2742, 3367, 1540, 2742, 1542, 1543, 1540, + 1586, 1586, 1586, 1586, 1586, 1586, 1587, 2779, 3015, 3017, + 2779, 1544, 3016, 1124, 2045, 1145, 3019, 3018, 1143, 1143, + 1143, 1143, 2405, 1143, 1143, 1143, 1143, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 1143, 1540, 2446, 3368, 2962, 1143, + 1143, 1143, 1143, 1124, 3369, 1145, 2781, 3020, 1124, 2781, + 1145, 3342, 1124, 3370, 1145, 3371, 1124, 3372, 1145, 1143, + 1143, 1143, 1143, 3373, 1124, 1537, 1145, 3027, 3027, 3027, + 3027, 3028, 3028, 3028, 3028, 2448, 1143, 1143, 1143, 1143, + + 3116, 3375, 3022, 3116, 1124, 3021, 1145, 3350, 3024, 3376, + 3350, 3377, 1124, 3378, 1145, 3374, 1124, 3379, 1145, 3380, + 3025, 1124, 3023, 1145, 3032, 3032, 3032, 3032, 3381, 2786, + 2883, 2883, 2883, 2883, 3382, 3033, 3026, 1488, 1488, 1488, + 1488, 3374, 2786, 2789, 1488, 1488, 1488, 1488, 3117, 3120, + 2791, 3117, 3120, 3029, 3386, 2793, 2764, 2764, 2764, 2764, + 2764, 2764, 1490, 2764, 2764, 2764, 2764, 2764, 2764, 1490, + 1584, 3122, 2796, 3124, 3122, 1585, 3124, 3118, 2789, 3127, + 3386, 2798, 3127, 2088, 2088, 2088, 2088, 2088, 2088, 2089, + 3129, 3131, 2803, 3129, 3131, 2803, 3134, 2800, 3137, 3134, + + 2791, 3137, 2793, 2810, 3138, 2805, 2810, 3138, 2796, 3142, + 3144, 3148, 3142, 3144, 3148, 3150, 2808, 2818, 3150, 2798, + 2800, 2463, 2820, 3152, 2822, 2805, 3152, 2808, 3154, 2824, + 2834, 3154, 2468, 3139, 3155, 3111, 2852, 3155, 3143, 3145, + 2818, 2861, 3157, 2828, 2820, 3157, 2828, 3160, 1537, 2865, + 3160, 2832, 2822, 3163, 2832, 2836, 3163, 2824, 2836, 2838, + 3409, 2840, 2838, 3156, 2840, 3164, 2843, 2845, 3164, 2843, + 2845, 3158, 2483, 2867, 2847, 3166, 3161, 2847, 3166, 2878, + 2487, 3426, 2834, 2850, 2490, 3427, 2850, 3409, 2492, 3169, + 2494, 3428, 3169, 3429, 3165, 2497, 2499, 2855, 3171, 2859, + + 2855, 3171, 2859, 2501, 3167, 3175, 3179, 3181, 3175, 3179, + 3181, 2870, 2504, 2872, 2870, 3430, 2872, 2874, 2852, 2876, + 2874, 3184, 2876, 3395, 3184, 3431, 2510, 3172, 2514, 2883, + 2883, 2883, 2883, 3432, 2861, 2865, 2867, 3433, 3352, 3434, + 2524, 3352, 2526, 3436, 3078, 3437, 2528, 3078, 2530, 3395, + 2878, 3188, 3189, 3190, 3188, 3191, 3191, 3191, 3191, 3203, + 3203, 3203, 3203, 3204, 3204, 3204, 3204, 3206, 3206, 3206, + 3206, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 3213, + 3213, 3213, 3213, 2883, 2883, 2883, 2883, 3188, 3189, 3190, + 3188, 3191, 3191, 3191, 3191, 3203, 3203, 3203, 3203, 3438, + + 1541, 3439, 3269, 3435, 1541, 3269, 3435, 3284, 1541, 3441, + 3284, 3398, 1541, 3204, 3204, 3204, 3204, 3206, 3206, 3206, + 3206, 2903, 2903, 2903, 2903, 3213, 3213, 3213, 3213, 2958, + 1541, 3270, 2958, 3442, 1541, 3285, 3443, 3398, 1541, 3444, + 2960, 3207, 1541, 3262, 2959, 3445, 3214, 1584, 3446, 3450, + 3451, 2959, 1585, 2958, 3452, 1540, 2958, 1540, 1541, 1540, + 2442, 2442, 2442, 2442, 2442, 2442, 1587, 3399, 2969, 2969, + 2969, 2969, 3453, 3274, 3274, 3274, 3274, 1540, 3275, 3328, + 1540, 3246, 3328, 2971, 2971, 2971, 2971, 3278, 3278, 3278, + 3278, 3247, 3254, 3399, 3079, 1540, 2970, 3079, 3276, 3276, + + 3276, 3276, 3221, 3277, 3496, 3080, 3497, 2958, 3037, 3500, + 2958, 2972, 3289, 3289, 3289, 3289, 2995, 2995, 2995, 2995, + 3303, 3303, 3303, 3303, 1541, 1537, 3226, 3226, 3226, 1541, + 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, + 3226, 3226, 1541, 3226, 3404, 3228, 3012, 3012, 3012, 3012, + 3306, 3306, 3306, 3306, 3226, 3226, 3226, 3226, 3226, 1541, + 3307, 3307, 3307, 3307, 3457, 1143, 1143, 1143, 1143, 3501, + 3404, 1124, 3455, 1145, 3502, 1124, 3042, 1145, 3503, 3042, + 3420, 3226, 3423, 3226, 3226, 1124, 1541, 1145, 3506, 3461, + 1124, 3511, 1145, 3309, 3309, 3309, 3309, 3030, 3030, 3030, + + 3030, 3362, 3362, 3362, 3362, 2697, 3420, 3469, 3423, 1541, + 3226, 3226, 3226, 2958, 1143, 1143, 1143, 1143, 1124, 1541, + 1145, 2959, 3308, 2959, 2960, 2959, 2959, 2959, 2959, 2959, + 2959, 2959, 2959, 1143, 1143, 1143, 1143, 2958, 3464, 1124, + 1541, 1145, 1143, 1143, 1143, 1143, 1541, 3313, 3313, 3313, + 3313, 1143, 1143, 1143, 1143, 3514, 3384, 3474, 1124, 3384, + 1145, 1540, 3317, 3317, 3317, 3317, 1541, 1124, 1541, 1145, + 3387, 3310, 3314, 3387, 1145, 3456, 1124, 3264, 1145, 3323, + 3323, 3323, 3323, 1541, 3462, 3385, 1541, 1124, 3463, 1145, + 3324, 3265, 1584, 3116, 3311, 3390, 3116, 1585, 3390, 3388, + + 1540, 3516, 1542, 1543, 1540, 1586, 1586, 1586, 1586, 1586, + 1586, 1587, 3318, 3318, 3318, 3318, 1544, 3312, 1541, 3475, + 3466, 3315, 2786, 1541, 3118, 3316, 1143, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 1541, 3471, 3517, 1124, 3473, 1145, + 1540, 1143, 1143, 1143, 1143, 1541, 3027, 3027, 3027, 3027, + 1541, 1124, 1541, 1145, 1541, 1124, 3120, 1145, 3518, 3120, + 3522, 3266, 3028, 3028, 3028, 3028, 1124, 3476, 1145, 3435, + 1537, 1124, 3435, 1145, 3458, 1143, 1143, 1143, 1143, 3032, + 3032, 3032, 3032, 1541, 3481, 2789, 1541, 1124, 3465, 1145, + 3033, 3122, 3320, 3124, 3122, 3525, 3124, 3472, 1584, 1541, + + 1124, 3319, 1145, 1585, 3391, 3127, 3470, 3391, 3127, 3321, + 3467, 2088, 2088, 2088, 2088, 2088, 2088, 2089, 3129, 1541, + 2791, 3129, 2793, 3131, 3526, 3393, 3131, 3134, 3393, 3137, + 3134, 3483, 3137, 3392, 2796, 3397, 3401, 3403, 3397, 3401, + 3403, 3148, 3322, 3150, 3148, 3152, 3150, 2798, 3152, 1541, + 3527, 3480, 2800, 3383, 3394, 1541, 2805, 3154, 2808, 3406, + 3154, 3543, 3406, 3477, 3139, 3143, 3145, 1541, 3408, 1541, + 2818, 3408, 2820, 1541, 2822, 3411, 1537, 3163, 3411, 3413, + 3163, 3415, 3413, 3544, 3415, 3037, 2824, 3169, 3156, 3416, + 3169, 3419, 3416, 3175, 3419, 3421, 3175, 3158, 3421, 3179, + + 3181, 3545, 3179, 3181, 3161, 3546, 2834, 3479, 3165, 3424, + 3167, 3184, 3424, 3485, 3184, 3341, 2852, 3547, 3417, 3486, + 3172, 3488, 2861, 3548, 3422, 3550, 3482, 1717, 2865, 2867, + 3188, 3189, 3190, 3188, 3190, 3189, 3190, 3190, 3425, 3551, + 2878, 3190, 3189, 3190, 3190, 3191, 3191, 3191, 3191, 3203, + 3203, 3203, 3203, 3440, 3440, 3440, 3440, 3206, 3206, 3206, + 3206, 3206, 3206, 3206, 3206, 3213, 3213, 3213, 3213, 3447, + 3447, 3447, 3447, 3449, 3449, 3449, 3449, 3468, 3468, 3468, + 3468, 3468, 3468, 3440, 3440, 3440, 3440, 3206, 3206, 3206, + 3206, 3478, 3478, 3478, 3478, 3447, 3447, 3447, 3447, 3505, + + 1541, 3552, 3499, 3328, 1541, 3499, 3328, 3549, 1541, 3553, + 3549, 1541, 1541, 3449, 3449, 3449, 3449, 2958, 3554, 3274, + 3274, 3274, 3274, 2958, 3275, 3555, 3556, 3558, 3262, 2959, + 1541, 3270, 3037, 3559, 3262, 2959, 2959, 3278, 3278, 3278, + 3278, 2958, 2959, 3448, 1584, 1974, 3562, 2958, 3507, 1585, + 3336, 3507, 1540, 3336, 1540, 1541, 1540, 2442, 2442, 2442, + 2442, 2442, 2442, 1587, 3487, 1540, 3563, 3509, 3564, 3484, + 3509, 1540, 3276, 3276, 3276, 3276, 3508, 3277, 3504, 3504, + 3504, 3504, 3284, 3565, 3510, 3284, 3510, 3510, 3510, 3510, + 3510, 3510, 1540, 2002, 2002, 2958, 3289, 3289, 3289, 3289, + + 3566, 2958, 3512, 3512, 3512, 3512, 3513, 3513, 3513, 3513, + 3285, 3454, 3515, 3515, 3515, 3515, 3519, 3519, 3519, 3519, + 3567, 3568, 1537, 3226, 3226, 3226, 3569, 3226, 3226, 3226, + 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3570, + 3226, 3520, 3228, 3523, 3523, 3523, 3523, 3524, 3524, 3524, + 3524, 3226, 3226, 3226, 3226, 3226, 3303, 3303, 3303, 3303, + 3306, 3306, 3306, 3306, 3571, 3528, 3307, 3307, 3307, 3307, + 3560, 3572, 1143, 1143, 1143, 1143, 3557, 3573, 3226, 3557, + 3226, 3226, 3574, 3561, 3560, 1124, 3561, 1145, 2045, 3350, + 3521, 1124, 3350, 1145, 2045, 3352, 3575, 1124, 3352, 1145, + + 3576, 3309, 3309, 3309, 3309, 3577, 3578, 3226, 3226, 3226, + 3226, 3226, 3226, 3579, 3226, 3226, 3226, 3226, 3226, 3226, + 3226, 3226, 3226, 3226, 3226, 3226, 1124, 3226, 1145, 3460, + 3227, 3529, 1143, 1143, 1143, 1143, 3580, 3227, 3226, 3226, + 3226, 3226, 3226, 3581, 3531, 3531, 3531, 3531, 3582, 3313, + 3313, 3313, 3313, 3535, 3535, 3535, 3535, 1124, 3583, 1145, + 3584, 1143, 1143, 1143, 1143, 3226, 3227, 3226, 3226, 3532, + 3118, 1145, 3139, 3143, 3314, 3145, 1145, 3595, 1142, 1143, + 1143, 1143, 1143, 3156, 3158, 3161, 1124, 3165, 1145, 3167, + 3587, 3530, 3172, 3587, 3226, 3226, 3226, 3489, 3362, 3362, + + 3362, 3362, 1585, 3595, 1124, 2959, 1145, 2959, 2960, 2959, + 3490, 3490, 3490, 3490, 3490, 3490, 3491, 3588, 3533, 3385, + 3612, 2958, 3534, 3521, 3537, 3537, 3537, 3537, 3317, 3317, + 3317, 3317, 3318, 3318, 3318, 3318, 1143, 1143, 1143, 1143, + 3540, 3540, 3540, 3540, 3588, 1540, 3536, 3613, 3615, 3538, + 3616, 1145, 3617, 1124, 3618, 1145, 3619, 1124, 3620, 1145, + 3621, 1124, 3622, 1145, 3623, 1124, 3435, 1145, 3624, 3435, + 3625, 1143, 1143, 1143, 1143, 3265, 3489, 3542, 3542, 3542, + 3542, 1585, 3590, 3598, 2959, 3590, 2959, 2960, 2959, 3490, + 3490, 3490, 3490, 3490, 3490, 3491, 1124, 3539, 1145, 3628, + + 2958, 3629, 1124, 3605, 1145, 3323, 3323, 3323, 3323, 3598, + 3630, 3388, 3631, 3632, 3390, 3592, 3324, 3390, 3592, 3594, + 1584, 3633, 3594, 3397, 1540, 1585, 3397, 3596, 3401, 3605, + 3596, 3401, 3541, 2088, 2088, 2088, 2088, 2088, 2088, 2089, + 1541, 3493, 3660, 3118, 3392, 1541, 3403, 3599, 3394, 3403, + 3599, 3665, 3139, 1541, 3265, 2958, 3597, 3143, 1541, 3406, + 1541, 3408, 3406, 2958, 3408, 2958, 2958, 2958, 2958, 2958, + 2958, 2958, 2958, 2958, 2958, 3145, 3600, 3601, 3411, 2958, + 3601, 3411, 3413, 3415, 3635, 3413, 3415, 3585, 3156, 3604, + 3158, 3419, 3604, 3607, 3419, 3613, 3607, 3608, 1537, 3611, + + 3608, 3637, 3611, 3636, 3641, 3666, 3602, 3161, 3647, 1541, + 3270, 3165, 3167, 3614, 3614, 3614, 3614, 3667, 3417, 3668, + 3172, 3669, 3422, 3670, 3672, 3677, 3609, 3678, 3425, 3440, + 3440, 3440, 3440, 2958, 1584, 3626, 3626, 3626, 3626, 1585, + 1541, 1541, 1540, 1541, 1542, 1543, 1540, 1586, 1586, 1586, + 1586, 1586, 1586, 1587, 3626, 3626, 3626, 3626, 1544, 3627, + 3627, 3627, 3627, 3447, 3447, 3447, 3447, 3447, 3447, 3447, + 3447, 3449, 3449, 3449, 3449, 3614, 3614, 3614, 3614, 1541, + 3639, 1541, 1540, 3638, 3638, 3638, 3638, 1541, 1541, 1541, + 3642, 3643, 1541, 1541, 3499, 1541, 1541, 3499, 3495, 1541, + + 1541, 3468, 3468, 3468, 3468, 3468, 3468, 3645, 3645, 3645, + 3645, 1541, 1537, 3626, 3626, 3626, 3626, 1541, 1541, 1541, + 3679, 3640, 1717, 3270, 1541, 3648, 1541, 3649, 3442, 1584, + 1541, 3657, 3683, 3650, 1585, 3652, 3656, 1540, 3684, 1540, + 1541, 1540, 2442, 2442, 2442, 2442, 2442, 2442, 1587, 3644, + 3688, 3651, 3690, 3704, 3705, 3626, 3626, 3626, 3626, 3706, + 3707, 3708, 3653, 3659, 3627, 3627, 3627, 3627, 3711, 3646, + 3654, 3655, 1541, 3447, 3447, 3447, 3447, 1540, 3658, 3671, + 3634, 1541, 2958, 3504, 3504, 3504, 3504, 3712, 3549, 3709, + 1541, 3549, 3709, 2960, 3710, 3713, 3507, 3710, 3714, 3507, + + 3715, 2961, 3512, 3512, 3512, 3512, 2958, 1537, 3226, 3226, + 3226, 3717, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, + 3226, 3226, 3226, 3226, 3508, 3226, 3718, 3460, 3227, 3479, + 1540, 3673, 2002, 3720, 3673, 3227, 3226, 3226, 3226, 3226, + 3226, 3513, 3513, 3513, 3513, 3724, 3557, 3725, 3674, 3557, + 3674, 3674, 3674, 3674, 3674, 3674, 3509, 2045, 3716, 3509, + 2958, 3716, 3727, 3226, 3227, 3226, 3226, 3675, 3561, 3719, + 3675, 3561, 3719, 3510, 3729, 3510, 3510, 3510, 3510, 3510, + 3510, 3730, 3723, 3731, 3510, 3723, 3510, 3510, 3510, 3510, + 3510, 3510, 3226, 3226, 3226, 3226, 3226, 3226, 3732, 3226, + + 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, + 3226, 3385, 3226, 3388, 3460, 3227, 3515, 3515, 3515, 3515, + 3392, 3394, 3227, 3226, 3226, 3226, 3226, 3226, 3417, 3680, + 3680, 3680, 3680, 3519, 3519, 3519, 3519, 3535, 3535, 3535, + 3535, 3685, 3685, 3685, 3685, 3523, 3523, 3523, 3523, 3422, + 3226, 3227, 3226, 3226, 3681, 3425, 3748, 3750, 3520, 3524, + 3524, 3524, 3524, 3736, 3751, 3754, 3686, 3687, 3687, 3687, + 3687, 3689, 3689, 3689, 3689, 3535, 3535, 3535, 3535, 3226, + 3226, 3226, 2958, 1143, 1143, 1143, 1143, 3755, 3728, 3736, + 2958, 3728, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, + + 2958, 2958, 3757, 3682, 3758, 3759, 2958, 3521, 1124, 3760, + 1145, 3761, 3531, 3531, 3531, 3531, 3693, 3693, 3693, 3693, + 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 1143, 1143, 3762, 3532, 3763, 1145, + 1541, 1142, 3745, 3721, 3691, 1124, 3721, 1145, 1541, 1124, + 1541, 1145, 1541, 1124, 3722, 1145, 1541, 1124, 1541, 1145, + 3265, 3489, 3537, 3537, 3537, 3537, 1585, 1541, 3745, 2959, + 1541, 2959, 2960, 2959, 3490, 3490, 3490, 3490, 3490, 3490, + 3491, 3692, 1541, 3788, 3768, 2958, 3682, 3538, 3695, 1145, + 1541, 3694, 3697, 3697, 3697, 3697, 3698, 3698, 3698, 3698, + + 3769, 3776, 3696, 3799, 3540, 3540, 3540, 3540, 3770, 1540, + 3702, 3702, 3702, 3702, 3767, 1541, 3800, 1142, 1541, 3777, + 3771, 1124, 1541, 3699, 3703, 3703, 3703, 3703, 3803, 1124, + 3778, 1145, 3805, 3587, 3784, 1124, 3587, 1145, 3809, 3265, + 3489, 3542, 3542, 3542, 3542, 1585, 3734, 1541, 2959, 3734, + 2959, 2960, 2959, 3490, 3490, 3490, 3490, 3490, 3490, 3491, + 3810, 3783, 3385, 1125, 2958, 3700, 1124, 3781, 1145, 3590, + 3592, 3594, 3590, 3592, 3594, 3735, 3738, 1584, 3701, 3738, + 1133, 3739, 1585, 3742, 3739, 3779, 3742, 3811, 1540, 1541, + 2088, 2088, 2088, 2088, 2088, 2088, 2089, 3780, 3388, 3392, + + 3394, 3614, 3614, 3614, 3614, 3597, 3756, 3756, 3756, 3756, + 3740, 3744, 3600, 3604, 3744, 3812, 3604, 3607, 3265, 3489, + 3607, 1717, 3747, 3611, 1585, 3747, 3611, 2958, 3733, 2958, + 2958, 2958, 3661, 3661, 3661, 3661, 3661, 3661, 3662, 3782, + 3602, 1541, 3417, 2958, 1541, 3813, 3422, 3626, 3626, 3626, + 3626, 3609, 3425, 3824, 1857, 1537, 3627, 3627, 3627, 3627, + 3764, 3764, 3764, 3764, 3765, 3765, 3765, 3765, 3756, 3756, + 3756, 3756, 3760, 3764, 3764, 3764, 3764, 3804, 3765, 3765, + 3765, 3765, 3815, 3825, 3675, 1541, 1541, 3675, 3827, 3830, + 1541, 3816, 3785, 3828, 3786, 1541, 3828, 3265, 1584, 3693, + + 3693, 3693, 3693, 1585, 3673, 3831, 1540, 3673, 1542, 1543, + 1540, 1586, 1586, 1586, 1586, 1586, 1586, 1587, 3833, 2002, + 3838, 3674, 1544, 3674, 3674, 3674, 3674, 3674, 3674, 3829, + 3806, 2045, 3829, 3806, 3680, 3680, 3680, 3680, 3685, 3685, + 3685, 3685, 3697, 3697, 3697, 3697, 1540, 3674, 3727, 3674, + 3674, 3674, 3674, 3674, 3674, 3687, 3687, 3687, 3687, 3681, + 3839, 3709, 3840, 3686, 3709, 3664, 3814, 3814, 3814, 3814, + 3689, 3689, 3689, 3689, 3841, 3842, 1537, 1584, 3817, 3817, + 3817, 3817, 1585, 3710, 3597, 1540, 3710, 1540, 1541, 1540, + 2442, 2442, 2442, 2442, 2442, 2442, 1587, 3818, 3818, 3818, + + 3818, 3832, 3846, 1124, 3832, 1145, 3600, 3602, 3682, 3693, + 3693, 3693, 3693, 3609, 1125, 3852, 3700, 3820, 3820, 3820, + 3820, 3854, 1124, 3834, 1145, 1540, 3834, 3716, 3846, 3701, + 3716, 1133, 3697, 3697, 3697, 3697, 3703, 3703, 3703, 3703, + 3719, 3855, 3821, 3719, 1145, 3215, 3766, 3826, 3826, 3826, + 3826, 3723, 3858, 3859, 3723, 1537, 3752, 3752, 3752, 3752, + 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, + 3752, 3752, 3772, 3752, 3772, 3773, 3772, 3728, 3721, 3863, + 3728, 3721, 3881, 3772, 3752, 3752, 3752, 3752, 3752, 3722, + 3789, 3822, 2093, 1540, 1143, 1143, 1143, 1143, 3888, 3889, + + 1540, 1143, 1143, 1143, 1143, 3698, 3698, 3698, 3698, 3892, + 3896, 3752, 3772, 3752, 3752, 3836, 3900, 3806, 3836, 1124, + 3806, 1145, 3851, 3851, 3851, 3851, 1124, 3837, 1145, 1540, + 1124, 3903, 3699, 3756, 3756, 3756, 3756, 2310, 2045, 3914, + 3752, 3752, 3752, 3753, 3753, 3753, 3753, 3753, 3753, 3753, + 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3774, + 3753, 3774, 3775, 3774, 3819, 3702, 3702, 3702, 3702, 3915, + 3774, 3753, 3753, 3753, 3753, 3753, 3823, 1717, 3916, 3735, + 3845, 3738, 3848, 3845, 3738, 3848, 3740, 3852, 3742, 1584, + 1124, 3742, 1145, 3744, 1585, 3922, 3744, 3923, 3753, 3774, + + 3753, 3753, 2088, 2088, 2088, 2088, 2088, 2088, 2089, 3735, + 3597, 3740, 3857, 3857, 3857, 3857, 3910, 3600, 3927, 3910, + 3929, 3849, 3602, 3747, 3849, 1541, 3747, 3753, 3753, 3753, + 3489, 3861, 3861, 3861, 3861, 1585, 3829, 1541, 2959, 3829, + 2959, 2960, 2959, 3490, 3490, 3490, 3490, 3490, 3490, 3491, + 3850, 3891, 3609, 3912, 2958, 1541, 3912, 3945, 3843, 3764, + 3764, 3764, 3764, 3765, 3765, 3765, 3765, 1537, 3851, 3851, + 3851, 3851, 4091, 4091, 4091, 4091, 2093, 1540, 1540, 4091, + 4091, 4091, 4091, 3832, 1540, 1541, 3832, 1541, 3950, 1541, + 4091, 4091, 4091, 4091, 1541, 3932, 1541, 3787, 4091, 4091, + + 4091, 4091, 3913, 3884, 1541, 3913, 1541, 1541, 3265, 3489, + 3954, 1541, 3955, 1540, 1585, 1541, 2184, 2958, 3957, 2958, + 2958, 2958, 3661, 3661, 3661, 3661, 3661, 3661, 3662, 3931, + 3958, 3834, 3865, 2958, 3834, 3959, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1541, 3933, + 3940, 3867, 3866, 1541, 3934, 3845, 3935, 1541, 3845, 3960, + 3815, 1541, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 3890, 3890, 3890, 3890, 3868, 3857, 3857, 3857, 3857, 1541, + 3966, 3967, 3836, 1541, 3735, 3836, 1541, 3265, 3489, 3850, + 3972, 3941, 1541, 1585, 3837, 3927, 2958, 3973, 2958, 2958, + + 2958, 3661, 3661, 3661, 3661, 3661, 3661, 3662, 3894, 3894, + 3894, 3894, 2958, 3255, 3861, 3861, 3861, 3861, 3895, 3895, + 3895, 3895, 1541, 4091, 4091, 4091, 4091, 3869, 1541, 3918, + 3936, 1541, 3918, 3870, 3814, 3814, 3814, 3814, 3945, 3987, + 1541, 3826, 3826, 3826, 3826, 3905, 3905, 3905, 3905, 3857, + 3857, 3857, 3857, 3861, 3861, 3861, 3861, 3881, 3919, 3890, + 3890, 3890, 3890, 3885, 3989, 3979, 3265, 3789, 3789, 3789, + 1142, 3985, 3789, 3789, 3789, 3790, 3789, 3789, 3789, 3789, + 3791, 3789, 3789, 3792, 3875, 3793, 1543, 3792, 3794, 3794, + 3794, 3794, 3794, 3794, 3795, 3789, 3789, 3789, 3789, 3796, + + 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, + 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, + 3797, 3797, 3789, 3792, 3789, 3789, 3797, 3797, 3797, 3797, + 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, + 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, + 3797, 3789, 3789, 3798, 3801, 3801, 3801, 3802, 3801, 3801, + 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, + 3801, 3801, 3801, 3801, 3802, 4091, 4091, 4091, 4091, 1717, + 3949, 3801, 3801, 3802, 3801, 3801, 3801, 4091, 4091, 4091, + 4091, 3910, 1541, 2184, 3910, 1541, 4091, 4091, 4091, 4091, + + 3897, 3897, 3897, 3897, 1541, 3901, 3901, 3901, 3901, 3801, + 3802, 3801, 3801, 1541, 3990, 1541, 1717, 3817, 3817, 3817, + 3817, 3951, 1541, 3912, 3885, 3898, 3912, 3924, 3924, 3924, + 3924, 3992, 3913, 3965, 2184, 3913, 3965, 3993, 3801, 3801, + 3801, 1584, 1124, 3956, 1145, 3976, 1585, 1541, 1541, 1540, + 3873, 1540, 1541, 1540, 2442, 2442, 2442, 2442, 2442, 2442, + 1587, 3818, 3818, 3818, 3818, 3980, 3978, 3874, 1143, 1143, + 1143, 1143, 3878, 3994, 3899, 1143, 1143, 1143, 1143, 3820, + 3820, 3820, 3820, 3991, 3988, 3791, 1124, 3902, 1145, 1540, + 3919, 3885, 3982, 1124, 1584, 1145, 3885, 1541, 3987, 1585, + + 1124, 3925, 1145, 3977, 3821, 3864, 1145, 2088, 2088, 2088, + 2088, 2088, 2088, 2089, 3965, 3848, 4014, 3965, 3848, 1537, + 3856, 3856, 3856, 3856, 3856, 3856, 3856, 3856, 3856, 3856, + 3856, 3856, 3856, 3856, 3856, 3856, 3871, 3856, 3871, 3872, + 3871, 4007, 3906, 3904, 3740, 1541, 1541, 3871, 3856, 3856, + 3856, 3856, 3856, 3899, 1143, 1143, 1143, 1143, 3917, 3921, + 2093, 1540, 3921, 2093, 1540, 2093, 1540, 3492, 1540, 4020, + 4009, 1540, 1537, 1540, 4035, 3856, 3871, 3856, 3856, 1124, + 1717, 1145, 3924, 3924, 3924, 3924, 4005, 4006, 3850, 3894, + 3894, 3894, 3894, 3895, 3895, 3895, 3895, 1540, 1541, 1541, + + 1540, 4038, 1540, 3885, 3856, 3856, 3856, 3862, 3862, 3862, + 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, + 3862, 3862, 3862, 3876, 3862, 3876, 3877, 3876, 3907, 3897, + 3897, 3897, 3897, 1541, 3876, 3862, 3862, 3862, 3862, 3862, + 3905, 3905, 3905, 3905, 3901, 3901, 3901, 3901, 1143, 1143, + 1143, 1143, 1541, 4012, 3898, 4023, 3937, 3905, 3905, 3905, + 3905, 3885, 3862, 3876, 3862, 3862, 1584, 3970, 1541, 3921, + 3970, 1585, 3921, 1124, 1541, 1145, 1541, 1541, 3663, 2088, + 2088, 2088, 2088, 2088, 2088, 2089, 3971, 3971, 3971, 3971, + 4010, 3862, 3862, 3862, 3489, 4025, 3919, 4034, 3850, 1585, + + 4008, 3663, 2959, 3899, 2959, 2960, 2959, 3490, 3490, 3490, + 3490, 3490, 3490, 3491, 3963, 3963, 3963, 3963, 2958, 1541, + 3885, 3970, 3961, 4024, 3970, 4026, 3902, 4031, 1143, 1143, + 1143, 1143, 4044, 3968, 3924, 3924, 3924, 3924, 3663, 3964, + 4042, 1145, 1540, 4048, 1537, 3879, 3924, 3924, 3924, 3924, + 3919, 4062, 4047, 1124, 3885, 1145, 3885, 3971, 3971, 3971, + 3971, 3924, 3924, 3924, 3924, 3981, 3981, 3981, 3981, 3885, + 3663, 3885, 3265, 2958, 1541, 1541, 4041, 4068, 1541, 4061, + 4071, 2958, 1541, 2958, 2958, 2958, 2958, 2958, 2958, 2958, + 2958, 2958, 2958, 3995, 3995, 3995, 3995, 2958, 3962, 3997, + + 3997, 3997, 3997, 3963, 3963, 3963, 3963, 4000, 4000, 4000, + 4000, 3971, 3971, 3971, 3971, 4049, 4036, 3663, 3996, 4003, + 4003, 4003, 4003, 1541, 3998, 4053, 1145, 3791, 3964, 4067, + 1145, 4066, 1142, 4004, 4004, 4004, 4004, 3880, 4003, 4003, + 4003, 4003, 4073, 4076, 4018, 4018, 4018, 4018, 4078, 4080, + 4082, 3265, 3789, 3789, 3789, 1541, 4083, 3789, 3789, 3789, + 3789, 3789, 3789, 3789, 3789, 3881, 3789, 3789, 3789, 4019, + 3789, 4064, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, + 3789, 3789, 3789, 3789, 3789, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, + + 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3789, 3789, 3789, + 3789, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3882, 3789, 3789, 3798, 3789, + 3789, 3789, 3885, 3791, 3789, 3789, 3789, 3789, 3789, 3789, + 3789, 3789, 3881, 3789, 3789, 1541, 3885, 3885, 1541, 3885, + 4004, 4004, 4004, 4004, 1541, 4085, 4087, 3789, 3789, 3789, + 3789, 3789, 4089, 1143, 1143, 1143, 1143, 1541, 3995, 3995, + 3995, 3995, 4000, 4000, 4000, 4000, 3997, 3997, 3997, 3997, + 4021, 4021, 4021, 4021, 3789, 4090, 3789, 3789, 1124, 3791, + + 1145, 4069, 1536, 3996, 4000, 4000, 4000, 4000, 1536, 4072, + 3885, 3998, 4070, 1145, 3885, 1142, 4003, 4003, 4003, 4003, + 4063, 4084, 4075, 3789, 3789, 3789, 3789, 3789, 3789, 3885, + 1536, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3881, + 3789, 3789, 3792, 3885, 2091, 1543, 3792, 3885, 3999, 4018, + 4018, 4018, 4018, 3792, 3789, 3789, 3789, 3789, 3796, 4021, + 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4039, 4039, 4039, + 4039, 3749, 4074, 4086, 4019, 1098, 4043, 4043, 4043, 4043, + 1098, 3789, 3792, 3789, 3789, 4054, 4054, 4054, 4054, 4081, + 1139, 4077, 4040, 1541, 1145, 4052, 4052, 4052, 4052, 1173, + + 3860, 1139, 1541, 2627, 1173, 4050, 4050, 4050, 4050, 4088, + 3789, 3789, 3789, 3789, 3789, 3789, 2623, 2623, 3789, 3789, + 3789, 3790, 3789, 3789, 3789, 3789, 3885, 3789, 3789, 3792, + 4051, 3793, 1543, 3792, 3794, 3794, 3794, 3794, 3794, 3794, + 3795, 3789, 3789, 3789, 3789, 3796, 3797, 3797, 3797, 3797, + 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, + 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3789, 3792, + 3789, 3789, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, + 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, + 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3789, 3789, 3798, + + 3789, 3789, 3789, 2622, 2091, 3789, 3789, 3789, 3789, 3789, + 3789, 3789, 3789, 3881, 3789, 3789, 2091, 2621, 1536, 1541, + 4039, 4039, 4039, 4039, 1536, 3676, 2618, 3886, 3789, 3789, + 3789, 3789, 3789, 3807, 1143, 1143, 1143, 1143, 4052, 4052, + 4052, 4052, 2616, 2615, 2614, 4040, 3676, 1145, 4055, 4055, + 4055, 4055, 2611, 2610, 3807, 3789, 2609, 3789, 3789, 1124, + 1640, 1145, 1636, 1142, 1632, 1541, 4050, 4050, 4050, 4050, + 4052, 4052, 4052, 4052, 1270, 1287, 1402, 1438, 1529, 1270, + 1287, 1402, 1438, 1529, 3789, 3789, 3789, 3789, 3789, 3789, + 2607, 4051, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, + + 3881, 3789, 3789, 3789, 2606, 1541, 2096, 3789, 4022, 4079, + 4079, 4079, 4079, 2563, 3789, 3789, 3789, 3789, 3789, 3789, + 1079, 2562, 2561, 2560, 2559, 1432, 1541, 1432, 1079, 1096, + 1096, 1096, 1432, 1079, 1162, 1162, 1162, 1170, 1170, 1170, + 2558, 1401, 3789, 3789, 3789, 3789, 1209, 1209, 1209, 1401, + 1096, 1511, 2552, 2551, 1401, 1162, 1511, 1511, 1170, 1215, + 1215, 1215, 1369, 1369, 1369, 1676, 2550, 1209, 2549, 2548, + 1676, 3789, 3789, 3789, 1584, 1390, 1390, 1390, 2544, 1585, + 1215, 2543, 1540, 1369, 1540, 1541, 1540, 2442, 2442, 2442, + 2442, 2442, 2442, 1587, 2542, 2541, 1390, 1497, 1497, 1497, + + 1539, 2540, 1741, 1539, 1624, 1624, 1624, 1741, 1539, 1715, + 1715, 1715, 1749, 1749, 1762, 1749, 1808, 2539, 1497, 1762, + 1749, 1808, 1540, 1079, 1098, 1624, 1096, 1096, 1096, 1098, + 1715, 1079, 1173, 1931, 1935, 1270, 1079, 1173, 1931, 1935, + 1270, 3930, 2538, 1287, 2018, 2025, 1402, 1096, 1287, 2018, + 2025, 1402, 1537, 3926, 3926, 3926, 3926, 3926, 3926, 3926, + 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3938, + 3926, 3938, 3939, 3938, 1841, 1841, 1841, 1162, 1162, 1162, + 3938, 3926, 3926, 3926, 3926, 3926, 1170, 1170, 1170, 1438, + 2537, 1209, 1209, 1209, 1438, 1841, 2536, 2535, 1162, 1215, + + 1215, 1215, 1369, 1369, 1369, 2534, 2533, 1170, 3926, 3938, + 3926, 3926, 1209, 1390, 1390, 1390, 1401, 2072, 2532, 1432, + 1215, 1432, 2072, 1369, 1401, 1340, 1432, 1511, 2444, 1401, + 2441, 1529, 1511, 1511, 1390, 1340, 1529, 3926, 3926, 3926, + 3489, 1340, 1497, 1497, 1497, 1585, 1340, 2440, 2959, 2439, + 2959, 2960, 2959, 3490, 3490, 3490, 3490, 3490, 3490, 3491, + 2073, 2438, 2228, 1497, 2958, 2073, 1539, 2228, 2073, 1539, + 2096, 2096, 2437, 2096, 1539, 1624, 1624, 1624, 2096, 1676, + 1715, 1715, 1715, 2250, 1676, 1741, 1749, 1749, 1540, 1749, + 1741, 2436, 1762, 1808, 1749, 2287, 1624, 1762, 1808, 2250, + + 2287, 1715, 2435, 1931, 2250, 1096, 1096, 1096, 1931, 3942, + 1935, 2018, 2025, 2434, 2433, 1935, 2018, 2025, 3265, 3489, + 1841, 1841, 1841, 2072, 1585, 2432, 1096, 2958, 2072, 2958, + 2958, 2958, 3661, 3661, 3661, 3661, 3661, 3661, 3662, 2431, + 2430, 1841, 2429, 2958, 1105, 1105, 1105, 1162, 1162, 1162, + 1170, 1170, 1170, 1209, 1209, 1209, 1215, 1215, 1215, 1369, + 1369, 1369, 1390, 1390, 1390, 1105, 1512, 2073, 1162, 2250, + 2074, 1170, 2073, 2425, 1209, 2073, 2424, 1215, 2096, 2096, + 1369, 2096, 2228, 1390, 3943, 2250, 2096, 2228, 2287, 2423, + 2250, 2057, 2421, 2287, 1497, 1497, 1497, 3265, 3789, 3789, + + 3789, 2420, 2419, 3789, 3789, 3789, 3790, 3789, 3789, 3789, + 3789, 3885, 3789, 3789, 3789, 1497, 3789, 2418, 3789, 3946, + 3946, 3946, 3946, 3946, 3946, 3947, 3789, 3789, 3789, 3789, + 3789, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, + 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, + 3948, 3948, 3948, 3789, 3789, 3789, 3789, 3948, 3948, 3948, + 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, + 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, + 3948, 3948, 3789, 3789, 3798, 3789, 3789, 3789, 2417, 2416, + 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3881, 3789, - 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3780, 3779, - 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, - 3621, 3621, 3630, 3621, 3621, 3621, 2250, 2249, 3621, 3621, - 3621, 3621, 3621, 3621, 3621, 3621, 3711, 3621, 3621, 3621, - 2248, 3621, 1986, 3621, 3621, 3621, 3621, 3621, 3621, 3621, - 3621, 3621, 3621, 3621, 3621, 3621, 3717, 3717, 3717, 3717, - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3621, 3621, - 3621, 3621, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3621, 3621, 3621, - 3621, 3621, 3621, 2247, 2246, 3621, 3621, 3621, 3622, 3621, - 3621, 3621, 3621, 3623, 3621, 3621, 3624, 2245, 3624, 1472, - 3624, 3801, 3801, 3801, 3801, 3801, 3801, 3626, 3621, 3621, - 3621, 3621, 3621, 3802, 3802, 3802, 3802, 3802, 3802, 3802, - 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, - 3802, 3802, 3802, 3802, 3802, 3621, 3624, 3621, 3802, 3802, - 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, - 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, - 3802, 3802, 3802, 3802, 3621, 3621, 3630, 3325, 2244, 2243, - - 2242, 2241, 1514, 2237, 2236, 2808, 2233, 2808, 2809, 2808, - 3326, 3326, 3326, 3326, 3326, 3326, 3327, 2232, 2231, 2230, - 2229, 2807, 2228, 2227, 2225, 1879, 1869, 2223, 1859, 1211, - 1842, 2221, 2220, 1837, 1836, 2217, 2214, 2214, 2213, 2210, - 2210, 2209, 2208, 2207, 2206, 1471, 2151, 2204, 2151, 2185, - 2181, 2180, 2179, 2178, 2177, 2174, 2173, 2170, 2169, 2166, - 2165, 3810, 2164, 2159, 2159, 2158, 2157, 2156, 2155, 1048, - 2151, 2150, 2149, 2148, 2142, 3103, 3325, 2141, 1689, 1017, - 1689, 1514, 1689, 2140, 2807, 2139, 2807, 2807, 2807, 3495, - 3495, 3495, 3495, 3495, 3495, 3496, 2138, 2137, 1668, 1668, - - 2807, 1017, 1668, 1668, 1017, 2134, 2133, 1642, 1642, 1642, - 1017, 1642, 1642, 1636, 2125, 2124, 2123, 2120, 2119, 2118, - 2117, 2116, 1579, 1578, 2114, 2113, 1544, 1540, 1540, 1472, - 2073, 3811, 1468, 2071, 2070, 2069, 2068, 2064, 2063, 2057, - 1988, 1472, 1472, 1975, 1974, 1973, 1972, 1970, 1966, 1965, - 1964, 1445, 1445, 1427, 3103, 3828, 3828, 3829, 3829, 3828, - 3829, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, - 3828, 3828, 3828, 3828, 3828, 3829, 1956, 1955, 1954, 1409, - 1409, 1017, 3828, 3828, 3828, 3828, 3828, 3828, 1409, 1409, - 1953, 1949, 1396, 1388, 1388, 1942, 1941, 1373, 1373, 1017, - - 1373, 1373, 1364, 1940, 1363, 1939, 1938, 1934, 1933, 1930, - 3828, 3829, 3828, 1925, 1921, 1854, 1333, 1919, 1918, 1917, - 1332, 1330, 1320, 1911, 1910, 1909, 1301, 1904, 1903, 1854, - 1902, 1238, 1901, 1880, 1875, 1870, 1900, 1899, 1860, 3828, - 3828, 3828, 3621, 3621, 3621, 1897, 1892, 3621, 3621, 3621, - 3621, 3621, 3621, 3621, 3621, 3711, 3621, 3621, 3621, 1891, - 3621, 1249, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, - 3621, 3621, 3621, 3621, 3621, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3621, 3621, 3621, - - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3838, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3621, 3621, 3630, 3842, - 3842, 3842, 3843, 3842, 3842, 3842, 3842, 3842, 3842, 3842, - 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, - 1881, 1249, 1878, 1877, 1874, 1873, 3842, 3842, 3842, 3842, - 3842, 3842, 1872, 1871, 1868, 1861, 1858, 1211, 1211, 1211, - 1211, 1211, 1206, 1840, 1839, 1199, 1188, 1188, 1017, 1188, - 1188, 1184, 1837, 1174, 3842, 3844, 3842, 1174, 1836, 1827, - 1153, 1147, 1818, 1810, 1139, 1807, 1806, 1805, 1804, 1129, - - 1128, 1127, 1126, 1106, 1773, 1760, 1759, 1758, 1757, 1752, - 1751, 1750, 1747, 3842, 3842, 3842, 3621, 3621, 3621, 1083, - 1739, 3621, 3621, 3621, 3854, 3621, 3621, 3621, 3621, 3623, - 3621, 3621, 3855, 1738, 3855, 2809, 3855, 3856, 3856, 3856, - 3856, 3856, 3856, 3857, 3621, 3621, 3621, 3621, 3858, 3859, - 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, - 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, - 3859, 3621, 3624, 3621, 3859, 3859, 3859, 3859, 3859, 3859, - 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, - 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, - - 3621, 3621, 3860, 3621, 3621, 3621, 1737, 1734, 3621, 3621, - 3621, 3858, 3621, 3621, 3621, 3621, 3711, 3621, 3621, 3858, - 1728, 3858, 2807, 3858, 3858, 3858, 3858, 3858, 3858, 3858, - 3858, 3621, 3621, 3621, 3621, 3858, 3872, 3872, 3872, 3872, - 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, - 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3621, 3621, - 3621, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, - 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, - 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3621, 3621, 3860, - 3621, 3621, 3621, 1031, 1020, 3621, 3621, 3621, 3858, 3621, - - 3621, 3621, 3621, 3711, 3621, 3621, 1017, 1718, 1249, 2809, - 1714, 1017, 1713, 1017, 1017, 1017, 1707, 1017, 3621, 3621, - 3621, 3621, 3858, 1300, 1689, 1689, 1686, 1685, 1668, 1668, - 1650, 1642, 1642, 1636, 1017, 1582, 1017, 1582, 1579, 1578, - 1577, 1552, 1551, 1548, 1469, 3621, 3624, 3621, 1017, 1544, - 1540, 3918, 1537, 1472, 1469, 1468, 1017, 1452, 1451, 1445, - 1017, 1017, 1427, 1017, 1409, 1409, 1404, 1017, 1294, 1017, - 1294, 1389, 1017, 1379, 3621, 3621, 3858, 3621, 3621, 3621, - 1017, 1373, 3621, 3621, 3621, 3858, 3621, 3621, 3621, 3621, - 3711, 3621, 3621, 1373, 1364, 1300, 2809, 1017, 1363, 1017, - - 1199, 1017, 1333, 1017, 3873, 3621, 3621, 3621, 3621, 3858, - 1332, 1331, 1330, 1320, 1317, 1300, 1017, 1301, 1300, 1017, - 1199, 1017, 1253, 1017, 1223, 1017, 1211, 1017, 1203, 1202, - 1201, 1199, 3621, 3624, 3621, 1188, 1188, 1184, 1174, 1017, - 1159, 1017, 1170, 1017, 1159, 1158, 1017, 1153, 1147, 1144, - 1141, 1139, 1017, 1132, 1017, 1129, 1128, 1127, 1126, 1017, - 1017, 3621, 3621, 3858, 3621, 3621, 3621, 1106, 1083, 3621, - 3621, 3621, 1079, 3621, 3621, 3621, 3621, 3711, 3621, 3621, - 1057, 1055, 1017, 2807, 1048, 1017, 1031, 1026, 1017, 1017, - 1020, 1017, 3621, 3621, 3621, 3621, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3621, - 3621, 3621, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3621, 3621, - 3621, 3621, 3621, 3918, 3918, 3621, 3621, 3621, 3854, 3621, - 3621, 3621, 3621, 3715, 3621, 3621, 3858, 3918, 3858, 2807, - 3858, 3883, 3883, 3883, 3883, 3883, 3883, 3884, 3621, 3621, - 3621, 3621, 3858, 3885, 3885, 3885, 3885, 3885, 3885, 3885, - 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, - - 3885, 3885, 3885, 3885, 3885, 3621, 3621, 3621, 3885, 3885, - 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, - 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, - 3885, 3885, 3885, 3885, 3621, 3621, 3860, 3621, 3621, 3621, - 3918, 3918, 3621, 3621, 3621, 3858, 3621, 3621, 3621, 3621, - 3711, 3621, 3621, 3855, 3918, 3855, 2809, 3855, 3855, 3855, - 3855, 3855, 3855, 3855, 3855, 3621, 3621, 3621, 3621, 3858, - 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, - 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, - 3886, 3886, 3621, 3624, 3621, 3886, 3886, 3886, 3886, 3886, + 3789, 3792, 2045, 3792, 1541, 3792, 3792, 3792, 3792, 3792, + 3792, 3792, 3792, 3789, 3789, 3789, 3789, 3789, 3952, 3952, + 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, + 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, + 3789, 3792, 3789, 3789, 3952, 3952, 3952, 3952, 3952, 3952, + 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3953, 3952, 3952, + 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3789, + 3789, 3798, 3789, 3789, 3789, 2415, 2414, 3789, 3789, 3789, + 3789, 3789, 3789, 3789, 3789, 3881, 3789, 3789, 3789, 2411, + 2410, 2096, 3789, 1624, 1624, 1624, 1715, 1715, 1715, 3789, + + 3789, 3789, 3789, 3789, 3789, 1749, 1749, 2409, 1749, 2408, + 1105, 1105, 1105, 1749, 1624, 1749, 1749, 1715, 1749, 3808, + 3676, 3893, 3853, 1749, 3808, 2045, 3893, 3789, 3789, 3789, + 3789, 1105, 1749, 1749, 3676, 1749, 3676, 3853, 3808, 3893, + 1749, 3676, 3853, 3808, 3893, 2407, 2406, 2403, 2402, 2401, + 2400, 1379, 2399, 2372, 2367, 2396, 3789, 3789, 3789, 3789, + 3789, 3789, 2395, 2394, 3789, 3789, 3789, 3790, 3789, 3789, + 3789, 3789, 3791, 3789, 3789, 3792, 2393, 3792, 1541, 3792, + 3974, 3974, 3974, 3974, 3974, 3974, 3795, 3789, 3789, 3789, + 3789, 3789, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, - 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3887, - 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, - 3886, 3621, 3621, 3860, 3621, 3621, 3621, 3918, 3918, 3621, - 3621, 3621, 3918, 3621, 3621, 3621, 3621, 3711, 3621, 3621, - 3918, 3918, 3918, 2807, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3892, 3621, 3621, 3621, 3621, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3621, - 3621, 3621, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3621, 3621, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 315, 315, 315, - - 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, - 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, - 315, 315, 315, 315, 315, 315, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 388, 388, 388, 388, 388, - 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, - 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, - 388, 388, 388, 388, 397, 397, 397, 397, 397, 397, - 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, - - 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, - 397, 397, 397, 413, 413, 413, 413, 413, 413, 413, - 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, - 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, - 413, 413, 420, 420, 420, 420, 420, 420, 420, 420, - 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, - 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, - 420, 426, 426, 426, 426, 426, 426, 426, 426, 426, - 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, - 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, - - 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, - 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, - 450, 450, 450, 450, 450, 450, 450, 450, 450, 466, - 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, - 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, - 466, 466, 466, 466, 466, 466, 466, 466, 474, 474, - 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, - 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, - 474, 474, 474, 474, 474, 474, 474, 480, 480, 480, - 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, - - 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, - 480, 480, 480, 480, 480, 480, 486, 486, 486, 486, - 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, - 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, - 486, 486, 486, 486, 486, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - - 501, 501, 501, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 541, 541, 541, 541, 541, 541, 541, 541, 541, - 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, - 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, - 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, - - 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, - 548, 548, 548, 548, 548, 548, 548, 548, 548, 571, - 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, - 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, - 571, 571, 571, 571, 571, 571, 571, 571, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 602, 602, 602, - 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, - 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, - - 602, 602, 602, 602, 602, 602, 608, 608, 608, 608, - 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, - 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, - 608, 608, 608, 608, 608, 610, 610, 610, 610, 610, + 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, + 3975, 3975, 3975, 3975, 3789, 3792, 3789, 3789, 3975, 3975, + 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, + 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, + 3975, 3975, 3975, 3789, 3789, 3798, 3489, 2002, 2389, 2387, + 2002, 1585, 3807, 2386, 2959, 2385, 2959, 2960, 2959, 3490, + 3490, 3490, 3490, 3490, 3490, 3491, 3807, 3853, 3807, 3928, + 2958, 1983, 2384, 3807, 1974, 2383, 2382, 2381, 2380, 2379, + 2378, 2377, 3853, 2376, 3928, 2375, 2374, 3853, 2370, 3928, + 2369, 2366, 2365, 2364, 1540, 2363, 2362, 2361, 2360, 2358, + + 1986, 1976, 2356, 1966, 1272, 1949, 2354, 2353, 1944, 1943, + 3983, 2350, 2347, 2347, 2346, 2343, 2343, 2342, 2341, 2340, + 2339, 2285, 2337, 2285, 3265, 3489, 2318, 2315, 2314, 2313, + 1585, 2312, 2311, 2958, 2308, 2958, 2958, 2958, 3661, 3661, + 3661, 3661, 3661, 3661, 3662, 2307, 2304, 2303, 2300, 2958, + 2299, 2298, 2293, 2293, 2292, 2291, 2290, 2289, 1107, 2285, + 2281, 2277, 2273, 2272, 2271, 2270, 2261, 2260, 1764, 1075, + 1764, 1764, 2259, 2258, 2257, 2256, 1743, 1743, 1075, 1743, + 3984, 1743, 1075, 2253, 2252, 1717, 1717, 1717, 1075, 1717, + 1717, 1711, 2244, 2243, 2242, 2239, 2238, 2237, 2236, 2235, + + 1654, 1653, 1640, 3265, 4001, 4001, 4002, 4002, 4001, 4002, + 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, + 4001, 4001, 4001, 4001, 4002, 1636, 1632, 2230, 2229, 1621, + 1617, 4001, 4001, 4001, 4001, 4001, 4001, 1617, 2222, 2221, + 2220, 2219, 1541, 1541, 2185, 1537, 2183, 2182, 2181, 2180, + 2176, 2167, 2098, 1541, 1541, 2085, 2084, 2083, 2082, 4001, + 4002, 4001, 4001, 2080, 2076, 2075, 2074, 1512, 1512, 1494, + 2066, 2065, 2064, 1476, 1476, 1075, 1476, 1476, 2063, 2059, + 1463, 1455, 1455, 2052, 2051, 1440, 1440, 1075, 4001, 4001, + 4001, 3789, 3789, 3789, 1440, 1440, 3789, 3789, 3789, 3789, + + 3789, 3789, 3789, 3789, 3881, 3789, 3789, 3789, 1431, 3789, + 2050, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, + 3789, 3789, 3789, 3789, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3882, 3789, 3789, 3789, 3789, + 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 4011, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3789, 3789, 3798, 4015, 4015, + 4015, 4016, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, + 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 1430, + + 2049, 2048, 2044, 2043, 2040, 4015, 4015, 4015, 4015, 4015, + 4015, 2035, 2031, 1961, 1400, 2029, 2028, 2027, 1399, 1397, + 1387, 2021, 4091, 1379, 1379, 2020, 2019, 1366, 2014, 2013, + 1961, 2012, 1299, 4015, 4017, 4015, 4015, 2011, 1987, 1982, + 1977, 2010, 2009, 1967, 2006, 2001, 2000, 1988, 1985, 1984, + 1981, 1980, 1979, 1978, 1975, 1968, 1965, 1272, 1272, 1272, + 1272, 1272, 4015, 4015, 4015, 3789, 3789, 3789, 1267, 1947, + 3789, 3789, 3789, 4027, 3789, 3789, 3789, 3789, 3791, 3789, + 3789, 4028, 1946, 4028, 2960, 4028, 4029, 4029, 4029, 4029, + 4029, 4029, 4030, 3789, 3789, 3789, 3789, 4031, 4032, 4032, + + 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, + 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, + 3789, 3792, 3789, 3789, 4032, 4032, 4032, 4032, 4032, 4032, + 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, + 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 3789, + 3789, 4033, 3789, 3789, 3789, 1260, 1249, 3789, 3789, 3789, + 4031, 3789, 3789, 3789, 3789, 3881, 3789, 3789, 4031, 1249, + 4031, 2958, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, + 3789, 3789, 3789, 3789, 4031, 4045, 4045, 4045, 4045, 4045, + 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, + + 4045, 4045, 4045, 4045, 4045, 4045, 4045, 3789, 3789, 3789, + 3789, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, + 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, + 4045, 4045, 4045, 4045, 4045, 4045, 3789, 3789, 4033, 3789, + 3789, 3789, 1075, 1249, 3789, 3789, 3789, 4031, 3789, 3789, + 3789, 3789, 3881, 3789, 3789, 1249, 1245, 1944, 2960, 1235, + 1235, 1943, 1936, 1212, 1206, 1927, 1919, 3789, 3789, 3789, + 3789, 4031, 1198, 1916, 1915, 1914, 1913, 1188, 1187, 1186, + 1185, 1165, 1882, 1869, 1868, 1867, 1866, 1861, 1860, 1859, + 1856, 1142, 1848, 1847, 3789, 3792, 3789, 3789, 1846, 1843, + + 1837, 1090, 1084, 1078, 1075, 1826, 1819, 1811, 1075, 1810, + 1075, 1807, 1803, 1075, 1802, 1075, 1075, 1786, 1075, 1782, + 1075, 1365, 1764, 3789, 3789, 4031, 3789, 3789, 3789, 1764, + 1761, 3789, 3789, 3789, 4031, 3789, 3789, 3789, 3789, 3881, + 3789, 3789, 1760, 1743, 1743, 2960, 1725, 1717, 1717, 1711, + 1075, 1657, 1075, 4046, 3789, 3789, 3789, 3789, 4031, 1657, + 1654, 1653, 1652, 1629, 1628, 1625, 1538, 1075, 1621, 1617, + 4091, 1608, 1541, 1538, 1537, 1075, 1519, 1518, 1512, 1075, + 1075, 3789, 3792, 3789, 3789, 1494, 1075, 1476, 1476, 1471, + 1075, 1359, 1075, 1359, 1456, 1075, 1446, 1075, 1440, 1440, + + 1431, 1365, 1075, 1430, 1075, 1260, 1075, 1400, 1075, 1399, + 3789, 3789, 4031, 3789, 3789, 3789, 1398, 1397, 3789, 3789, + 3789, 1387, 3789, 3789, 3789, 3789, 3881, 3789, 3789, 1384, + 1365, 1075, 2958, 1379, 1366, 1365, 1075, 1260, 1075, 1316, + 1075, 3789, 3789, 3789, 3789, 1284, 1075, 1272, 1075, 1264, + 1263, 1262, 1260, 1249, 1249, 1245, 1235, 1075, 1075, 1231, + 1075, 1220, 1212, 1206, 1203, 1200, 1198, 1075, 3789, 3789, + 3789, 3789, 1191, 1075, 1188, 1187, 1186, 1185, 1075, 1075, + 1165, 1142, 1138, 1116, 1114, 1075, 1107, 1075, 1090, 1075, + 1075, 1078, 1075, 4091, 4091, 4091, 4091, 3789, 3789, 3789, + + 3789, 3789, 4091, 4091, 3789, 3789, 3789, 4027, 3789, 3789, + 3789, 3789, 3885, 3789, 3789, 4031, 4091, 4031, 2958, 4031, + 4056, 4056, 4056, 4056, 4056, 4056, 4057, 3789, 3789, 3789, + 3789, 4031, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, + 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, + 4058, 4058, 4058, 4058, 3789, 3789, 3789, 3789, 4058, 4058, + 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, + 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, + 4058, 4058, 4058, 3789, 3789, 4033, 3789, 3789, 3789, 4091, + 4091, 3789, 3789, 3789, 4031, 3789, 3789, 3789, 3789, 3881, + + 3789, 3789, 4028, 4091, 4028, 2960, 4028, 4028, 4028, 4028, + 4028, 4028, 4028, 4028, 3789, 3789, 3789, 3789, 4031, 4059, + 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, + 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, + 4059, 3789, 3792, 3789, 3789, 4059, 4059, 4059, 4059, 4059, + 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4060, 4059, + 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, + 3789, 3789, 4033, 3789, 3789, 3789, 4091, 4091, 3789, 3789, + 3789, 4091, 3789, 3789, 3789, 3789, 3881, 3789, 3789, 4091, + 4091, 4091, 2958, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4065, 3789, 3789, 3789, 3789, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 3789, 3789, + 3789, 3789, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 3789, 3789, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 431, 431, 431, 431, 431, 431, 431, 431, 431, + + 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, + 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 461, + 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, + 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, + 461, 461, 461, 461, 461, 461, 461, 461, 477, 477, + 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, + 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, + + 477, 477, 477, 477, 477, 477, 477, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 488, 488, 488, 488, + 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, + 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, + 488, 488, 488, 488, 488, 494, 494, 494, 494, 494, + 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, + 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, + 494, 494, 494, 494, 500, 500, 500, 500, 500, 500, + + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 509, 509, 509, 509, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, + 509, 509, 522, 522, 522, 522, 522, 522, 522, 522, + 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, + 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, + 522, 535, 535, 535, 535, 535, 535, 535, 535, 535, + 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, + + 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, + 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, + 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, + 549, 549, 549, 549, 549, 549, 549, 549, 549, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 586, 586, 586, + + 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, + 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, + 586, 586, 586, 586, 586, 586, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 632, 632, 632, 632, 632, 632, - 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, - 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, - 632, 632, 632, 639, 639, 639, 639, 639, 639, 639, - - 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, - 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, - 639, 639, 656, 656, 656, 656, 656, 656, 656, 656, - 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, - 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, - 656, 663, 663, 663, 663, 663, 663, 663, 663, 663, - 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, - 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, - 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, - 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, - - 671, 671, 671, 671, 671, 671, 671, 671, 671, 678, - 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, - 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, - 678, 678, 678, 678, 678, 678, 678, 678, 683, 683, - 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, - 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, - 683, 683, 683, 683, 683, 683, 683, 693, 693, 693, - 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, - 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, - 693, 693, 693, 693, 693, 693, 703, 703, 703, 703, - - 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, - 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, - 703, 703, 703, 703, 703, 571, 571, 571, 571, 571, - 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, - 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, - 571, 571, 571, 571, 716, 716, 716, 716, 716, 716, - 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, - 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, - 716, 716, 716, 724, 724, 724, 724, 724, 724, 724, - 724, 724, 724, 724, 724, 724, 724, 724, 724, 724, - - 724, 724, 724, 724, 724, 724, 724, 724, 724, 724, - 724, 724, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 733, 733, 733, 733, 733, 733, 733, 733, 733, + 610, 610, 610, 610, 610, 616, 616, 616, 616, 616, + 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, + 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, + 616, 616, 616, 616, 619, 619, 619, 619, 619, 619, + 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, + + 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, + 619, 619, 619, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 648, 648, 648, 648, 648, 648, 648, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 648, 665, 665, 665, 665, 665, 665, 665, 665, 665, + 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, + 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, + + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 687, 687, + 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, + 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, + 687, 687, 687, 687, 687, 687, 687, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, + + 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 702, 702, 702, 702, + 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, + 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, + 702, 702, 702, 702, 702, 712, 712, 712, 712, 712, + 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, + 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, + 712, 712, 712, 712, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, + + 579, 579, 579, 725, 725, 725, 725, 725, 725, 725, + 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, + 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, + 725, 725, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, - 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, - 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, - 738, 738, 738, 738, 738, 738, 738, 738, 738, 388, - - 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, - 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, - 388, 388, 388, 388, 388, 388, 388, 388, 755, 755, - 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, - 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, - 755, 755, 755, 755, 755, 755, 755, 760, 760, 760, - 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, - 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, - 760, 760, 760, 760, 760, 760, 780, 780, 780, 780, - 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, - - 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, - 780, 780, 780, 780, 780, 789, 789, 789, 789, 789, - 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, - 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, - 789, 789, 789, 789, 814, 814, 814, 814, 814, 814, - 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, - 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, - 814, 814, 814, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, - - 821, 821, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 833, 833, 833, 833, 833, 833, 833, 833, 833, - 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, - 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, - 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, - 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, - 836, 836, 836, 836, 836, 836, 836, 836, 836, 839, - 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, - - 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, - 839, 839, 839, 839, 839, 839, 839, 839, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 851, 851, 851, - 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, - 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, - 851, 851, 851, 851, 851, 851, 857, 857, 857, 857, - 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, - 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, - - 857, 857, 857, 857, 857, 859, 859, 859, 859, 859, + 733, 735, 735, 735, 735, 735, 735, 735, 735, 735, + 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, + 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, + 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, + + 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, + 742, 742, 742, 742, 742, 742, 742, 742, 742, 747, + 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, + 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, + 747, 747, 747, 747, 747, 747, 747, 747, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, + + 764, 764, 764, 764, 764, 764, 769, 769, 769, 769, + 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, + 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, + 769, 769, 769, 769, 769, 788, 788, 788, 788, 788, + 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, + 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, + 788, 788, 788, 788, 802, 802, 802, 802, 802, 802, + 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, + 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, + 802, 802, 802, 827, 827, 827, 827, 827, 827, 827, + + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 847, 847, 847, 847, 847, 847, 847, 847, 847, + 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, + 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, + 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, + 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, + + 856, 856, 856, 856, 856, 856, 856, 856, 856, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, - 859, 859, 859, 859, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 867, 867, 867, 867, 867, 867, 867, + 859, 859, 859, 859, 859, 859, 859, 859, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, - 867, 867, 869, 869, 869, 869, 869, 869, 869, 869, - - 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, - 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, - 869, 872, 872, 872, 872, 872, 872, 872, 872, 872, - 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, - 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + 867, 867, 867, 867, 867, 867, 870, 870, 870, 870, + + 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 875, 875, 875, 875, 875, + 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, + 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, + 875, 875, 875, 875, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, + 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, 880, 883, - 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, - 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, - - 883, 883, 883, 883, 883, 883, 883, 883, 886, 886, - 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, - 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, - 886, 886, 886, 886, 886, 886, 886, 889, 889, 889, - 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, - 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, - 889, 889, 889, 889, 889, 889, 892, 892, 892, 892, - 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, - 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, - 892, 892, 892, 892, 892, 898, 898, 898, 898, 898, - - 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 910, 910, 910, 910, 910, 910, - 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, - 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, - 910, 910, 910, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, - - 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, - 921, 925, 925, 925, 925, 925, 925, 925, 925, 925, - 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, - 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, - 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, - 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, - 931, 931, 931, 931, 931, 931, 931, 931, 931, 942, - 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, - 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, - 942, 942, 942, 942, 942, 942, 942, 942, 946, 946, - - 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, - 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, - 946, 946, 946, 946, 946, 946, 946, 952, 952, 952, - 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, - 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, - 952, 952, 952, 952, 952, 952, 958, 958, 958, 958, - 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, - 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, - 958, 958, 958, 958, 958, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, - - 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 972, 972, 972, 972, 972, 972, + 880, 880, 888, 888, 888, 888, 888, 888, 888, 888, + 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, + 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, + 888, 891, 891, 891, 891, 891, 891, 891, 891, 891, + 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, + 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 897, + + 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, + 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, + 897, 897, 897, 897, 897, 897, 897, 897, 900, 900, + 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, + 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, + 900, 900, 900, 900, 900, 900, 900, 906, 906, 906, + 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, + 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, + 906, 906, 906, 906, 906, 906, 918, 918, 918, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + 918, 918, 918, 918, 918, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 929, 929, 929, 929, 929, 929, + 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, + 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, + 929, 929, 929, 933, 933, 933, 933, 933, 933, 933, + 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, + 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, + + 933, 933, 939, 939, 939, 939, 939, 939, 939, 939, + 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, + 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, + 939, 950, 950, 950, 950, 950, 950, 950, 950, 950, + 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, + 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, + 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, + 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, + 954, 954, 954, 954, 954, 954, 954, 954, 954, 960, + 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, + + 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, + 960, 960, 960, 960, 960, 960, 960, 960, 966, 966, + 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, + 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, + 966, 966, 966, 966, 966, 966, 966, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, - 972, 972, 972, 969, 969, 969, 969, 969, 969, 969, - 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, - 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, - 969, 969, 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, - - 984, 993, 993, 993, 993, 993, 993, 993, 993, 993, - 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, - 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, - 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, - 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, - 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1006, - 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, - 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, - 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1033, 1033, 1033, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 1033, 1033, 1033, 3918, 3918, 1033, 3918, 3918, - 3918, 1033, 1037, 1037, 1037, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 1037, 3918, 3918, 3918, 1037, 1042, 1042, 1042, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 1042, 3918, 3918, 3918, 1042, 3918, 3918, - 3918, 1042, 3918, 3918, 1042, 1046, 1046, 1046, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 1046, 3918, 3918, 3918, 1046, - 1046, 1050, 1050, 1050, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1050, 1050, 3918, 3918, - 3918, 1050, 3918, 3918, 3918, 1050, 1056, 1056, 3918, 1056, + 972, 972, 972, 972, 972, 972, 980, 980, 980, 980, + 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, + 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, + + 980, 980, 980, 980, 980, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 992, 992, 992, 992, 992, 992, + 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, + 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, + 992, 992, 992, 998, 998, 998, 998, 998, 998, 998, + 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, + 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, + 998, 998, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, + + 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, + 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, + 1003, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, + 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, + 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1036, 1036, + 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, + 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, + 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1048, 1048, 1048, + 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, + 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, + 1048, 1048, 1048, 1048, 1048, 1048, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, - 1056, 1056, 1056, 1056, 1056, 1085, 1085, 1085, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1085, 1085, 1085, 3918, 3918, 1085, 3918, 3918, 3918, 1085, - - 1103, 1103, 1103, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1103, 3918, 3918, 3918, 1103, 1108, 1108, 1108, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1108, 1108, 1108, 3918, 3918, 1108, 3918, 3918, 3918, 1108, - 1111, 1111, 1111, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1111, 3918, 3918, 3918, 1111, 1133, 1133, 3918, 3918, 3918, - 1133, 1133, 3918, 1133, 1133, 1133, 1133, 1133, 1133, 1133, - 3918, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, - - 1133, 3918, 3918, 1133, 1134, 1134, 1134, 1134, 1134, 1134, - 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, - 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, - 1134, 1134, 1134, 1138, 1138, 3918, 3918, 1138, 1138, 1138, - 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, - 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, - 1138, 1138, 1140, 1140, 3918, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1148, 1148, 1148, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 1148, 1148, 3918, 3918, - 3918, 1148, 3918, 3918, 3918, 1148, 1150, 1150, 1150, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1150, 3918, 3918, 3918, - 1150, 1154, 1154, 1154, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1154, 1154, 3918, 3918, - 3918, 1154, 3918, 3918, 3918, 1154, 1156, 1156, 1156, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1156, 3918, 3918, 3918, - 1156, 1157, 1157, 3918, 1157, 1157, 1157, 1157, 1157, 1157, - - 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, - 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, - 1173, 1173, 3918, 1173, 1173, 1173, 1173, 1173, 1173, 1173, - 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, - 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1179, - 1179, 3918, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 3918, - 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, - 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1180, 1180, - 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, - 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, - - 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1187, 1187, 1187, - 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, - 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, - 1187, 1187, 1187, 1187, 1187, 1187, 1189, 1189, 1189, 1189, - 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, - 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, - 1189, 1189, 1189, 1189, 1189, 1194, 3918, 3918, 1194, 1194, - 1194, 1194, 1194, 1194, 1194, 3918, 1194, 1194, 1194, 1194, - 3918, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 3918, 1194, - 1194, 1194, 1194, 1194, 1195, 1195, 1195, 1195, 1195, 1195, - - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1210, 1210, 3918, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, - 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, - 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, - 1212, 1217, 1217, 3918, 1217, 1217, 1217, 1217, 1217, 1217, + 1056, 1056, 1056, 1056, 1056, 1065, 1065, 1065, 1065, 1065, + + 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, + 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, + 1065, 1065, 1065, 1065, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1092, 1092, 1092, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1092, + 1092, 1092, 4091, 4091, 1092, 1101, 1101, 1101, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 1101, 4091, 4091, 4091, 1101, 4091, 4091, 4091, + + 4091, 4091, 1101, 1105, 1105, 1105, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 1105, 4091, 4091, 4091, 1105, 1109, + 1109, 1109, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 1109, 1109, 4091, 4091, 4091, + 1109, 1115, 1115, 4091, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1144, 1144, 1144, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 1144, 1144, 1144, 4091, + + 4091, 1144, 1167, 1167, 1167, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1167, 1167, + 1167, 4091, 4091, 1167, 1192, 1192, 4091, 4091, 1192, 4091, + 1192, 1192, 4091, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 4091, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 4091, 4091, 1192, 1193, 1193, 1193, 1193, 1193, 1193, 1193, + 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, + 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, + 1193, 1193, 1197, 1197, 4091, 4091, 1197, 1197, 1197, 1197, + 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, + + 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, + 1197, 1199, 1199, 4091, 1199, 1199, 1199, 1199, 1199, 1199, + 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, + 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, + 1207, 1207, 1207, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 1207, 1207, 4091, 4091, + 4091, 1207, 1213, 1213, 1213, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1213, 1213, + 4091, 4091, 4091, 1213, 1216, 1216, 4091, 1216, 1216, 4091, + 1216, 1216, 4091, 1216, 1216, 1216, 1216, 1216, 1216, 1216, + + 4091, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 4091, 1216, + 4091, 4091, 1216, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, - 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1219, 1219, 4091, 1219, 1219, 1219, 1219, 1219, + 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, + 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, + 1219, 1234, 1234, 4091, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + + 1240, 1240, 4091, 1240, 1240, 1240, 1240, 1240, 1240, 1240, + 1240, 4091, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, + 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1241, + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, - 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1270, - 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, - 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, - 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1275, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1275, 3918, 3918, - 3918, 3918, 3918, 1275, 3918, 3918, 3918, 1275, 1275, 3918, - 1275, 3918, 1275, 1302, 1302, 1302, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1302, 1302, - 3918, 3918, 3918, 1302, 3918, 3918, 3918, 1302, 1304, 1304, - 1304, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1304, 3918, - 3918, 3918, 1304, 1307, 1307, 3918, 1307, 3918, 1307, 1307, - 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, - 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, - 1307, 1307, 1308, 3918, 1308, 1308, 1308, 1308, 1308, 3918, - 3918, 3918, 1308, 3918, 1308, 3918, 1308, 1312, 1312, 3918, - 1312, 3918, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, - - 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, - 1312, 1312, 1312, 1312, 1312, 1312, 1313, 3918, 1313, 1313, - 1313, 1313, 1313, 3918, 3918, 3918, 1313, 3918, 1313, 3918, - 1313, 1321, 1321, 1321, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1321, 1321, 3918, 3918, - 3918, 1321, 3918, 3918, 3918, 1321, 1323, 1323, 1323, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1323, 3918, 3918, 3918, - 1323, 1366, 1366, 3918, 1366, 1366, 1366, 1366, 1366, 1366, - 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, - - 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1372, - 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1250, 1250, 1250, + 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, + + 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, + 1250, 1250, 1250, 1250, 1250, 1250, 1255, 4091, 4091, 1255, + 1255, 1255, 1255, 1255, 1255, 1255, 1255, 4091, 1255, 1255, + 1255, 1255, 4091, 1255, 1255, 1255, 1255, 1255, 1255, 1255, + 4091, 1255, 1255, 1255, 1255, 1256, 1256, 1256, 1256, 1256, + 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, + 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, + 1256, 1256, 1256, 1256, 1271, 1271, 4091, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + + 1271, 1271, 1271, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1278, 1278, 4091, 1278, 1278, 1278, 1278, 1278, + 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, + 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, + 1278, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, + 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, + 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, + 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, + + 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, + 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1340, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1340, + 4091, 4091, 4091, 4091, 4091, 1340, 4091, 4091, 4091, 1340, + 1340, 4091, 1340, 1367, 1367, 1367, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1367, + 1367, 4091, 4091, 4091, 1367, 1372, 1372, 4091, 1372, 1372, + 4091, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1374, 1374, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1387, 1387, 1387, - - 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, - 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, - 1387, 1387, 1387, 1387, 1387, 1387, 1395, 1395, 3918, 1395, - 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, - 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, - 1395, 1395, 1395, 1395, 1395, 1405, 1405, 3918, 1405, 3918, - 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, - 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, - 1405, 1405, 1405, 1405, 1406, 3918, 1406, 1406, 1406, 1406, - 1406, 3918, 3918, 3918, 1406, 3918, 1406, 3918, 1406, 1408, - - 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, - 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, - 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1410, 1410, - 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, - 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, - 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1415, 1415, 3918, - 1415, 3918, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, - 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, - 1415, 1415, 1415, 1415, 1415, 1415, 1416, 3918, 1416, 1416, - 1416, 1416, 1416, 3918, 3918, 3918, 1416, 3918, 1416, 3918, - - 1416, 1418, 1418, 3918, 1418, 3918, 1418, 1418, 1418, 1418, - 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, - 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, - 1419, 3918, 1419, 1419, 1419, 1419, 1419, 3918, 3918, 3918, - 1419, 3918, 1419, 3918, 1419, 1424, 1424, 1424, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1424, 1424, 3918, 3918, 3918, 1424, 3918, 3918, 3918, 1424, - 1428, 1428, 1428, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 1428, 1428, 3918, 3918, 3918, - 1428, 3918, 3918, 3918, 1428, 1430, 1430, 1430, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 1430, 3918, 3918, 3918, 1430, - 1443, 1443, 1443, 3918, 3918, 1443, 3918, 3918, 3918, 1443, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1443, 3918, 3918, 3918, 1443, 1446, 3918, 3918, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 3918, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 3918, 1446, - 1446, 1446, 1446, 1446, 1447, 1447, 1447, 1447, 1447, 1447, - 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, - 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, - - 1447, 1447, 1447, 1471, 3918, 1471, 1471, 1471, 1471, 1471, - 3918, 3918, 3918, 1471, 3918, 1471, 3918, 1471, 1475, 3918, - 1475, 1475, 1475, 1475, 1475, 3918, 3918, 1475, 1475, 3918, - 1475, 3918, 1475, 1517, 3918, 3918, 1517, 3918, 3918, 1517, - 3918, 1517, 1517, 1517, 1517, 1517, 3918, 3918, 1517, 1517, - 3918, 1517, 3918, 1517, 3918, 3918, 1517, 1518, 3918, 3918, - 1518, 3918, 3918, 1518, 3918, 1518, 1518, 1518, 1518, 1518, - 3918, 3918, 3918, 1518, 3918, 1518, 3918, 1518, 3918, 3918, - 1518, 1539, 1539, 3918, 1539, 1539, 1539, 1539, 1539, 1539, - 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, - - 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, - 1541, 1541, 3918, 1541, 1541, 3918, 3918, 3918, 1541, 3918, - 3918, 3918, 1541, 1545, 1545, 1545, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1545, 1545, - 3918, 3918, 3918, 1545, 3918, 3918, 3918, 1545, 1547, 1547, - 1547, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1547, 3918, - 3918, 3918, 1547, 1553, 3918, 3918, 3918, 1553, 1553, 1553, - 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, - 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, - - 1553, 1553, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1558, 3918, 3918, 3918, 1558, 1558, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, - 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, - 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1563, - 3918, 3918, 3918, 1563, 1563, 1563, 1563, 1563, 1563, 1563, - - 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, - 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1568, 1568, 3918, - 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, - 1568, 1568, 3918, 1568, 1568, 3918, 1568, 1568, 1568, 1568, - 3918, 1568, 1568, 1568, 1568, 1568, 1569, 1569, 1569, 1569, - 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, - 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, - - 1569, 1569, 1569, 1569, 1569, 1580, 3918, 3918, 1580, 1580, - 3918, 1580, 3918, 1580, 1580, 1580, 1580, 1580, 3918, 3918, - 3918, 1580, 3918, 3918, 3918, 1580, 3918, 3918, 1580, 1583, - 1583, 3918, 3918, 3918, 3918, 1583, 3918, 1583, 1583, 3918, - 3918, 3918, 1583, 3918, 3918, 3918, 1583, 1584, 1584, 3918, - 1584, 3918, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, - 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, - 1584, 1584, 1584, 1584, 1584, 1584, 1585, 3918, 1585, 1585, - 1585, 1585, 1585, 3918, 3918, 3918, 1585, 3918, 1585, 3918, - 1585, 1587, 1587, 3918, 1587, 3918, 1587, 1587, 1587, 1587, - - 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, - 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, - 1588, 3918, 1588, 1588, 1588, 1588, 1588, 3918, 3918, 3918, - 1588, 3918, 1588, 3918, 1588, 1592, 3918, 1592, 1592, 1592, - 1592, 3918, 3918, 3918, 3918, 1592, 3918, 3918, 3918, 1592, - 1594, 3918, 3918, 3918, 3918, 3918, 1594, 3918, 1594, 1594, - 1594, 1594, 1594, 3918, 3918, 1594, 1594, 3918, 3918, 3918, - 1594, 3918, 3918, 1594, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 3918, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - - 1596, 1596, 1596, 1597, 1597, 1597, 1597, 1597, 1597, 1597, - 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, - 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, - 1597, 1597, 1602, 3918, 3918, 3918, 1602, 1602, 1602, 1602, - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - 1602, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, - 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, - 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, - 1607, 3918, 3918, 3918, 1607, 1607, 1607, 1607, 1607, 1607, - - 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, - 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1608, - 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, - 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, - 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1612, 3918, - 3918, 3918, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, - 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, - 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1613, 1613, 1613, - 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, - 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, - - 1613, 1613, 1613, 1613, 1613, 1613, 1617, 3918, 3918, 3918, - 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, - 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, - 1617, 1617, 1617, 1617, 1617, 1618, 1618, 1618, 1618, 1618, - 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, - 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, - 1618, 1618, 1618, 1618, 1625, 1625, 1625, 1625, 1625, 1625, - 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, - 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, - 1625, 1625, 1625, 1628, 1628, 1628, 1628, 1628, 1628, 1628, - - 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, - 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, - 1628, 1628, 1638, 1638, 1638, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1638, 1638, 3918, - 3918, 3918, 1638, 3918, 3918, 3918, 1638, 1640, 1640, 1640, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1640, 3918, 3918, - 3918, 1640, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 3918, 1641, 1641, 1641, 1641, - - 1641, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, - 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, - 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, - 1651, 1651, 3918, 1651, 3918, 1651, 1651, 1651, 1651, 1651, - 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, - 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1652, - 3918, 1652, 1652, 1652, 1652, 1652, 3918, 3918, 3918, 1652, - 3918, 1652, 3918, 1652, 1654, 1654, 3918, 1654, 1654, 1654, - 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, - 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, - - 1654, 1654, 1654, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - 1655, 1655, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, + 1372, 1372, 1372, 1372, 1373, 4091, 1373, 1373, 1373, 1373, + + 1373, 4091, 4091, 4091, 1373, 4091, 1373, 1377, 1377, 4091, + 1377, 1377, 4091, 1377, 1377, 1377, 1377, 1377, 1377, 1377, + 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, + 1377, 1377, 1377, 1377, 1377, 1377, 1378, 4091, 1378, 1378, + 1378, 1378, 1378, 4091, 1378, 4091, 1378, 4091, 1378, 1388, + 1388, 1388, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 1388, 1388, 4091, 4091, 4091, + 1388, 1433, 1433, 4091, 1433, 1433, 1433, 1433, 1433, 1433, + 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, + 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, + + 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, + 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, + 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1439, + 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, + 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, + 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1441, 1441, + 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, + 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, + 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1462, 1462, 4091, 1462, + 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, + 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, + 1462, 1462, 1462, 1462, 1462, 1472, 1472, 4091, 1472, 1472, + 4091, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, + 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, + 1472, 1472, 1472, 1472, 1473, 4091, 1473, 1473, 1473, 1473, + 1473, 4091, 4091, 4091, 1473, 4091, 1473, 1475, 1475, 1475, + 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, + + 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, + 1475, 1475, 1475, 1475, 1475, 1475, 1477, 1477, 1477, 1477, + 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, + 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, + 1477, 1477, 1477, 1477, 1477, 1482, 1482, 4091, 1482, 1482, + 4091, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1483, 4091, 1483, 1483, 1483, 1483, + 1483, 4091, 4091, 4091, 1483, 4091, 1483, 1485, 1485, 4091, + 1485, 1485, 4091, 1485, 1485, 1485, 1485, 1485, 1485, 1485, + + 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, + 1485, 1485, 1485, 1485, 1485, 1485, 1486, 4091, 1486, 1486, + 1486, 1486, 1486, 4091, 4091, 4091, 1486, 4091, 1486, 1491, + 1491, 1491, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 1491, 1491, 4091, 4091, 4091, + 1491, 1495, 1495, 1495, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1495, 1495, 4091, + 4091, 4091, 1495, 1510, 1510, 1510, 4091, 4091, 4091, 1510, + 4091, 4091, 4091, 1510, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 1510, 1513, 4091, 4091, 1513, 1513, + + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 4091, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 4091, + 1513, 1513, 1513, 1513, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1540, 4091, 1540, 1540, 1540, 1540, 1540, + 4091, 4091, 4091, 1540, 4091, 1540, 1542, 4091, 1542, 1542, + 1542, 1542, 1542, 4091, 4091, 1542, 1542, 4091, 1542, 1547, + 4091, 1547, 1547, 1547, 1547, 1547, 4091, 4091, 1547, 1547, + 4091, 1547, 1588, 4091, 4091, 1588, 4091, 4091, 1588, 4091, + + 1588, 1588, 1588, 1588, 1588, 4091, 4091, 1588, 1588, 4091, + 1588, 4091, 4091, 4091, 1588, 1616, 1616, 4091, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1618, 1618, 4091, 1618, 1618, 4091, + 4091, 4091, 1618, 1622, 1622, 1622, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1622, + 1622, 4091, 4091, 4091, 1622, 1633, 4091, 4091, 1633, 4091, + 1633, 1633, 1633, 4091, 4091, 1633, 4091, 1633, 1633, 1633, + 1633, 1633, 4091, 1633, 1633, 4091, 1633, 4091, 4091, 1633, + + 1637, 4091, 4091, 1637, 4091, 1637, 1637, 1637, 4091, 4091, + 1637, 4091, 1637, 1637, 1637, 1637, 1637, 4091, 1637, 1637, + 4091, 1637, 4091, 4091, 1637, 1641, 4091, 4091, 1641, 4091, + 1641, 1641, 1641, 4091, 4091, 1641, 4091, 1641, 1641, 1641, + 1641, 1641, 4091, 1641, 1641, 4091, 1641, 4091, 4091, 1641, + 1643, 1643, 4091, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 4091, 1643, 1643, 4091, + 1643, 1643, 1643, 1643, 4091, 1643, 1643, 1643, 1643, 1644, + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1655, 4091, + 4091, 1655, 1655, 4091, 1655, 4091, 1655, 1655, 1655, 1655, + 1655, 4091, 4091, 4091, 1655, 4091, 4091, 4091, 4091, 4091, + 1655, 1658, 1658, 4091, 4091, 4091, 4091, 1658, 4091, 1658, + 1658, 4091, 4091, 4091, 1658, 1659, 1659, 4091, 1659, 1659, + 4091, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, - 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, - 1659, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, - - 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, - 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1669, - 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, - 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, - 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1674, 1674, - 3918, 1674, 3918, 3918, 3918, 3918, 1674, 3918, 3918, 3918, - 1674, 1677, 1677, 3918, 1677, 3918, 1677, 1677, 1677, 1677, + 1659, 1659, 1659, 1659, 1660, 4091, 1660, 1660, 1660, 1660, + 1660, 4091, 4091, 4091, 1660, 4091, 1660, 1662, 1662, 4091, + 1662, 1662, 4091, 1662, 1662, 1662, 1662, 1662, 1662, 1662, + + 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, + 1662, 1662, 1662, 1662, 1662, 1662, 1663, 4091, 1663, 1663, + 1663, 1663, 1663, 4091, 4091, 4091, 1663, 4091, 1663, 1667, + 4091, 1667, 1667, 1667, 1667, 4091, 4091, 4091, 4091, 1667, + 1669, 4091, 4091, 4091, 4091, 4091, 1669, 4091, 1669, 1669, + 1669, 1669, 1669, 4091, 4091, 1669, 1669, 4091, 4091, 4091, + 4091, 4091, 1669, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 4091, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, + + 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, + 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, + 1672, 1677, 4091, 4091, 4091, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, - 1678, 3918, 3918, 3918, 3918, 3918, 1678, 3918, 1678, 1678, - - 1678, 1678, 1678, 3918, 3918, 1678, 1678, 3918, 3918, 3918, - 1678, 3918, 3918, 1678, 1679, 3918, 3918, 3918, 3918, 3918, - 1679, 3918, 1679, 1679, 1679, 1679, 1679, 3918, 3918, 1679, - 1679, 3918, 1679, 3918, 1679, 3918, 3918, 1679, 1680, 3918, - 1680, 1680, 1680, 1680, 1680, 3918, 3918, 3918, 1680, 3918, - 1680, 3918, 1680, 1682, 1682, 3918, 1682, 3918, 1682, 1682, - 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, + 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, + 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, + 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1682, + 4091, 4091, 4091, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, - 1682, 1682, 1683, 3918, 1683, 1683, 1683, 1683, 1683, 3918, - 3918, 3918, 1683, 3918, 1683, 3918, 1683, 1688, 1688, 1688, - 1688, 1688, 1688, 1688, 1688, 1688, 1688, 3918, 1688, 1688, + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1683, 1683, + 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, + 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, + 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1687, 4091, 4091, + 4091, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, - 1688, 1688, 1688, 1688, 1688, 1688, 1690, 1690, 1690, 1690, - 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, - 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, - 1690, 1690, 1690, 1690, 1690, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1697, 1697, 3918, 1697, 3918, 1697, - 1697, 3918, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, - - 1697, 1697, 1697, 1697, 1697, 1697, 1697, 3918, 1697, 1697, - 1697, 1697, 1697, 1698, 1698, 1698, 1698, 1698, 1698, 1698, - 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, - 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, - 1698, 1698, 1702, 1702, 3918, 1702, 1702, 1702, 1702, 1702, - 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, - 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, - 1702, 1703, 1703, 3918, 1703, 3918, 1703, 1703, 3918, 3918, - 3918, 1703, 1703, 1703, 1703, 1703, 3918, 1703, 1703, 1703, + 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, + 1688, 1688, 1688, 1688, 1688, 1692, 4091, 4091, 4091, 1692, + + 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, + 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, + 1692, 1692, 1692, 1692, 1693, 1693, 1693, 1693, 1693, 1693, + 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, + 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, + 1693, 1693, 1693, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, - 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, - 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, - 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1706, - 1706, 3918, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1708, 3918, - 3918, 3918, 3918, 1708, 1708, 3918, 3918, 3918, 1708, 1708, - 1708, 1708, 1708, 3918, 1708, 1708, 1708, 1708, 1708, 1708, - 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1248, 1248, 1248, 1248, - 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, - 1248, 3918, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, - 1248, 1248, 1248, 1248, 1248, 1724, 1724, 1724, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 1724, 3918, 3918, 3918, 1724, 3918, 3918, 3918, 1724, - 3918, 3918, 1724, 1033, 1033, 1033, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1033, 1033, - 1033, 3918, 3918, 1033, 3918, 3918, 3918, 1033, 1037, 1037, - - 1037, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1037, 3918, - 3918, 3918, 1037, 1727, 1727, 1727, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1727, 3918, - 1727, 3918, 3918, 1727, 3918, 3918, 3918, 1727, 1042, 1042, - 1042, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 1042, 3918, 3918, 3918, 1042, 3918, - 3918, 3918, 1042, 3918, 3918, 1042, 1730, 1730, 1730, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 1730, 1730, 3918, 3918, 3918, 1730, 3918, 3918, 3918, - - 1730, 1732, 1732, 1732, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 1732, 3918, 3918, 3918, 1732, 1046, 1046, 1046, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1046, 3918, 3918, 3918, - 1046, 1046, 1050, 1050, 1050, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1050, 1050, 3918, - 3918, 3918, 1050, 3918, 3918, 3918, 1050, 1740, 1740, 3918, - 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, - 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, - - 1740, 1740, 1740, 1740, 1740, 1740, 1763, 1763, 1763, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 1763, 1763, 3918, 3918, 3918, 1763, 3918, 3918, 3918, - 1763, 1771, 1771, 1771, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1771, 3918, 3918, - 3918, 1771, 3918, 3918, 3918, 1771, 3918, 3918, 1771, 1085, - 1085, 1085, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 1085, 1085, 1085, 3918, 3918, 1085, - 3918, 3918, 3918, 1085, 1103, 1103, 1103, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 1103, 3918, 3918, 3918, 1103, 1793, - 1793, 1793, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 1793, 3918, 1793, 3918, 3918, 1793, - 3918, 3918, 3918, 1793, 1795, 1795, 1795, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1795, 3918, 3918, 3918, 1795, 3918, 3918, 3918, 1795, 3918, - 3918, 1795, 1108, 1108, 1108, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1108, 1108, 1108, - 3918, 3918, 1108, 3918, 3918, 3918, 1108, 1111, 1111, 1111, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1111, 3918, 3918, - 3918, 1111, 1798, 1798, 1798, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1798, 3918, 1798, - 3918, 3918, 1798, 3918, 3918, 3918, 1798, 1133, 1133, 3918, - 3918, 3918, 1133, 1133, 3918, 1133, 1133, 1133, 1133, 1133, - 1133, 1133, 3918, 1133, 1133, 1133, 1133, 1133, 1133, 1133, - 1133, 1133, 1133, 3918, 3918, 1133, 1134, 1134, 1134, 1134, - 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, - 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, - 1134, 1134, 1134, 1134, 1134, 1138, 1138, 3918, 3918, 1138, - - 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, - 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, - 1138, 1138, 1138, 1138, 1811, 1811, 3918, 1811, 1811, 1811, - 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, - 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, - 1811, 1811, 1811, 1817, 1817, 3918, 1817, 1817, 1817, 1817, - 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, - 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, - 1817, 1817, 1820, 1820, 1820, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1820, 3918, - - 3918, 3918, 1820, 3918, 3918, 3918, 1820, 3918, 3918, 1820, - 1148, 1148, 1148, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 1148, 1148, 3918, 3918, 3918, - 1148, 3918, 3918, 3918, 1148, 1150, 1150, 1150, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 1150, 3918, 3918, 3918, 1150, - 1824, 1824, 1824, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1824, 3918, 3918, 3918, - 1824, 3918, 3918, 3918, 1824, 3918, 3918, 1824, 1154, 1154, - 1154, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 1154, 1154, 3918, 3918, 3918, 1154, 3918, - 3918, 3918, 1154, 1156, 1156, 1156, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 1156, 3918, 3918, 3918, 1156, 1828, 1828, - 3918, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, - 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, - 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1831, 1831, 3918, - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, - 1831, 1831, 1831, 1831, 1831, 1831, 1179, 1179, 3918, 1179, - - 1179, 1179, 1179, 1179, 1179, 1179, 3918, 1179, 1179, 1179, - 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, - 1179, 1179, 1179, 1179, 1179, 1180, 1180, 1180, 1180, 1180, - 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, - 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, - 1180, 1180, 1180, 1180, 1187, 1187, 1187, 1187, 1187, 1187, - 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, - 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, - 1187, 1187, 1187, 1189, 1189, 1189, 1189, 1189, 1189, 1189, - 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, - - 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, - 1189, 1189, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1194, 3918, 3918, 1194, 1194, 1194, 1194, 1194, 1194, - 1194, 3918, 1194, 1194, 1194, 1194, 3918, 1194, 1194, 1194, - 1194, 1194, 1194, 1194, 3918, 1194, 1194, 1194, 1194, 1194, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1210, - - 1210, 3918, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1217, 1217, - 3918, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, + 1703, 1713, 1713, 1713, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1713, 1713, 4091, + 4091, 4091, 1713, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 4091, 1716, 1716, + 1716, 1716, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, + 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, + 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, + 1718, 1726, 1726, 4091, 1726, 1726, 4091, 1726, 1726, 1726, + + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1727, 4091, 1727, 1727, 1727, 1727, 1727, 4091, 4091, 4091, + 1727, 4091, 1727, 1729, 1729, 4091, 1729, 1729, 1729, 1729, + 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, + 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, + 1729, 1729, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, + 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, + 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, + 1730, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, + 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, + 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1742, + 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, + 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, + 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1744, 1744, + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1752, 1752, 4091, + 1752, 1752, 4091, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1753, 4091, 4091, 4091, + 4091, 4091, 1753, 4091, 1753, 1753, 1753, 1753, 1753, 4091, + 4091, 1753, 1753, 4091, 4091, 4091, 4091, 4091, 1753, 1754, + 4091, 4091, 4091, 4091, 4091, 1754, 4091, 1754, 1754, 1754, + 1754, 1754, 4091, 4091, 1754, 1754, 4091, 1754, 4091, 4091, + 4091, 1754, 1755, 4091, 1755, 1755, 1755, 1755, 1755, 4091, + 4091, 4091, 1755, 4091, 1755, 1757, 1757, 4091, 1757, 1757, + + 4091, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1758, 4091, 1758, 1758, 1758, 1758, + 1758, 4091, 4091, 4091, 1758, 4091, 1758, 1763, 1763, 1763, + 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 4091, 1763, + 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, + 1763, 1763, 1763, 1763, 1763, 1763, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1074, 1074, 1074, 1074, 1074, + + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1772, 1772, 4091, 1772, 1772, 4091, + 1772, 1772, 4091, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 4091, 1772, + 1772, 1772, 1772, 1773, 1773, 1773, 1773, 1773, 1773, 1773, + 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, + 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, + 1773, 1773, 1777, 1777, 4091, 1777, 1777, 1777, 1777, 1777, + 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, + + 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, + 1777, 1778, 1778, 4091, 1778, 1778, 4091, 1778, 1778, 4091, + 4091, 4091, 1778, 1778, 1778, 1778, 1778, 4091, 1778, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1781, + 1781, 4091, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1783, 1783, + + 4091, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 4091, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1784, 1784, 1784, + 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, + 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, + 1784, 1784, 1784, 1784, 1784, 1784, 1788, 1788, 4091, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1793, 4091, 4091, 4091, 1793, 4091, + 1793, 1793, 4091, 4091, 4091, 1793, 1793, 1793, 1793, 1793, + 4091, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 1793, 1793, 1793, 1794, 1794, 1794, 1794, 1794, 1794, 1794, + 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, + 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, + 1794, 1794, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, + 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 4091, 1309, + 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, + + 1309, 1809, 1809, 4091, 1809, 1809, 1809, 1809, 1809, 1809, + 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, + 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, + 1814, 1814, 4091, 1814, 1814, 1814, 1814, 1814, 1814, 1814, + 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, + 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1815, + 1815, 4091, 1815, 1815, 4091, 1815, 1815, 4091, 4091, 4091, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1816, 1816, + 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, + + 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, + 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1818, 1818, 4091, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1822, 1822, 4091, 1822, + 1822, 4091, 1822, 1822, 4091, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 4091, 4091, 1822, 1823, 1823, 1823, 1823, 1823, + 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, + 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, + + 1823, 1823, 1823, 1823, 1825, 1825, 4091, 1825, 1825, 1825, + 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, + 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, + 1825, 1825, 1825, 1833, 1833, 1833, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 1833, 4091, 4091, 4091, 1833, 4091, 4091, 4091, 4091, 4091, + 1833, 1092, 1092, 1092, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1092, 1092, 1092, + 4091, 4091, 1092, 1836, 1836, 1836, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1836, + + 4091, 1836, 4091, 4091, 1836, 1101, 1101, 1101, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 1101, 4091, 4091, 4091, 1101, 4091, 4091, 4091, + 4091, 4091, 1101, 1839, 1839, 1839, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1839, + 1839, 4091, 4091, 4091, 1839, 1105, 1105, 1105, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 1105, 4091, 4091, 4091, + 1105, 1109, 1109, 1109, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1109, 1109, 4091, + + 4091, 4091, 1109, 1849, 1849, 4091, 1849, 1849, 1849, 1849, + 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, + 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, + 1849, 1849, 1872, 1872, 1872, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1872, 1872, + 4091, 4091, 4091, 1872, 1880, 1880, 1880, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 1880, 4091, 4091, 4091, 1880, 4091, 4091, 4091, 4091, + 4091, 1880, 1144, 1144, 1144, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1144, 1144, + + 1144, 4091, 4091, 1144, 1902, 1902, 1902, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 1902, 4091, 1902, 4091, 4091, 1902, 1904, 1904, 1904, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 1904, 4091, 4091, 4091, 1904, 4091, 4091, + 4091, 4091, 4091, 1904, 1167, 1167, 1167, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 1167, 1167, 1167, 4091, 4091, 1167, 1907, 1907, 1907, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 1907, 4091, 1907, 4091, 4091, 1907, 1192, 1192, + + 4091, 4091, 1192, 4091, 1192, 1192, 4091, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 4091, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 4091, 4091, 1192, 1193, 1193, 1193, + 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, + 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, + 1193, 1193, 1193, 1193, 1193, 1193, 1197, 1197, 4091, 4091, + 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, + 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, + 1197, 1197, 1197, 1197, 1197, 1920, 1920, 4091, 1920, 1920, + 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, + + 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, + 1920, 1920, 1920, 1920, 1926, 1926, 4091, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1929, 1929, 1929, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 1929, 4091, 4091, 4091, 1929, 4091, 4091, 4091, 4091, 4091, + 1929, 1207, 1207, 1207, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1207, 1207, 4091, + 4091, 4091, 1207, 1933, 1933, 1933, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 1933, 4091, 4091, 4091, 1933, 4091, 4091, 4091, 4091, 4091, + 1933, 1213, 1213, 1213, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1213, 1213, 4091, + 4091, 4091, 1213, 1216, 1216, 4091, 1216, 1216, 4091, 1216, + 1216, 4091, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 4091, + 1216, 1216, 1216, 1216, 1216, 1216, 1216, 4091, 1216, 4091, + 4091, 1216, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, - 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1212, 1212, 1212, - 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, - 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, - 1212, 1212, 1212, 1212, 1212, 1212, 1843, 1843, 1843, 1843, - 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, - - 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, - 1843, 1843, 1843, 1843, 1843, 1248, 1248, 1248, 1248, 1248, + + 1217, 1937, 1937, 4091, 1937, 1937, 1937, 1937, 1937, 1937, + 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, + 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, + 1240, 1240, 4091, 1240, 1240, 1240, 1240, 1240, 1240, 1240, + 1240, 4091, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, + 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1241, + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, - 3918, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, - 1248, 1248, 1248, 1248, 1270, 1270, 1270, 1270, 1270, 1270, - 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 3918, - 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, - 1270, 1270, 1270, 1275, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 1275, 3918, 3918, 3918, 3918, 3918, 1275, 3918, - 3918, 3918, 1275, 1275, 3918, 1275, 3918, 1275, 1906, 1906, - - 1906, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 1906, 3918, 3918, 3918, 1906, 3918, - 3918, 3918, 1906, 3918, 3918, 1906, 1302, 1302, 1302, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 1302, 1302, 3918, 3918, 3918, 1302, 3918, 3918, 3918, - 1302, 1304, 1304, 1304, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 1304, 3918, 3918, 3918, 1304, 1307, 1307, 3918, 1307, - 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, - 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, - - 1307, 1307, 1307, 1307, 1307, 1308, 3918, 1308, 1308, 1308, - 1308, 1308, 3918, 3918, 3918, 1308, 3918, 1308, 3918, 1308, - 1312, 1312, 3918, 1312, 1312, 1312, 1312, 1312, 1312, 1312, - 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, - 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1313, - 3918, 1313, 1313, 1313, 1313, 1313, 3918, 3918, 3918, 1313, - 3918, 1313, 3918, 1313, 1913, 1913, 1913, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1913, 3918, 3918, 3918, 1913, 3918, 3918, 3918, 1913, 3918, - 3918, 1913, 1321, 1321, 1321, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1321, 1321, 3918, - 3918, 3918, 1321, 3918, 3918, 3918, 1321, 1323, 1323, 1323, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1323, 3918, 3918, - 3918, 1323, 1366, 1366, 3918, 1366, 1366, 1366, 1366, 1366, - 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, - 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, - 1366, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, + 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1250, 1250, 1250, + 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, + 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, + 1250, 1250, 1250, 1250, 1250, 1250, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1255, 4091, 4091, 1255, 1255, + 1255, 1255, 1255, 1255, 1255, 1255, 4091, 1255, 1255, 1255, + 1255, 4091, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 4091, + + 1255, 1255, 1255, 1255, 1256, 1256, 1256, 1256, 1256, 1256, + 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, + 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, + 1256, 1256, 1256, 1271, 1271, 4091, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1278, 1278, 4091, 1278, 1278, 1278, 1278, 1278, + 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, + 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, + 1278, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, + 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, + 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1309, + 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, + 1309, 1309, 1309, 1309, 1309, 4091, 1309, 1309, 1309, 1309, + 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1333, 1333, + 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, + 1333, 1333, 1333, 1333, 4091, 1333, 1333, 1333, 1333, 1333, + + 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1340, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1340, 4091, 4091, + 4091, 4091, 4091, 1340, 4091, 4091, 4091, 1340, 1340, 4091, + 1340, 2016, 2016, 2016, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 2016, 4091, + 4091, 4091, 2016, 4091, 4091, 4091, 4091, 4091, 2016, 1367, + 1367, 1367, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 1367, 1367, 4091, 4091, 4091, + 1367, 1372, 1372, 4091, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1374, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1387, 1387, 1387, - 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, - - 1387, 1387, 3918, 1387, 1387, 1387, 1387, 1387, 1387, 1387, - 1387, 1387, 1387, 1387, 1387, 1387, 1395, 1395, 3918, 1395, - 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, - 1395, 3918, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, - 1395, 1395, 1395, 1395, 1395, 1945, 1945, 1945, 1945, 1945, - 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, - 3918, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, - 1945, 1945, 1945, 1945, 1275, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 1275, 3918, 3918, 3918, 3918, 3918, 1275, - 3918, 3918, 3918, 3918, 1275, 3918, 3918, 3918, 1275, 1405, - - 1405, 3918, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, - 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, - 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1406, 3918, - 1406, 1406, 1406, 1406, 1406, 3918, 3918, 3918, 1406, 3918, - 1406, 3918, 1406, 1408, 1408, 1408, 1408, 1408, 1408, 1408, - 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, - 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, - 1408, 1408, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, - 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, - 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, - - 1410, 1415, 1415, 3918, 1415, 1415, 1415, 1415, 1415, 1415, - 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, - 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, - 1416, 3918, 1416, 1416, 1416, 1416, 1416, 3918, 3918, 3918, - 1416, 3918, 1416, 3918, 1416, 1418, 1418, 3918, 1418, 1418, - 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, - 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, - 1418, 1418, 1418, 1418, 1419, 3918, 1419, 1419, 1419, 1419, - 1419, 3918, 3918, 3918, 1419, 3918, 1419, 3918, 1419, 1424, - 1424, 1424, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 1424, 1424, 3918, 3918, 3918, 1424, - 3918, 3918, 3918, 1424, 1958, 1958, 1958, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1958, - 1958, 3918, 3918, 3918, 1958, 3918, 3918, 3918, 1958, 1960, - 1960, 1960, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 1960, 3918, 3918, 3918, 1960, - 3918, 3918, 3918, 1960, 3918, 3918, 1960, 1428, 1428, 1428, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 1428, 1428, 3918, 3918, 3918, 1428, 3918, 3918, - 3918, 1428, 1430, 1430, 1430, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 1430, 3918, 3918, 3918, 1430, 1443, 1443, 1443, - 3918, 3918, 1443, 3918, 3918, 3918, 1443, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1443, 3918, 3918, - 3918, 1443, 1446, 3918, 3918, 1446, 1446, 1446, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 1446, 3918, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 3918, 1446, 1446, 1446, 1446, - 1446, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, - 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, - 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, - - 1980, 3918, 3918, 1980, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 1980, 1980, 3918, 3918, 3918, 1980, 3918, 3918, 3918, - 1980, 3918, 3918, 1980, 1471, 3918, 1471, 1471, 1471, 1471, - 1471, 3918, 3918, 3918, 1471, 3918, 1471, 3918, 1471, 1982, - 3918, 1982, 1982, 1982, 1982, 1982, 3918, 3918, 3918, 1982, - 3918, 1982, 3918, 1982, 1985, 3918, 1985, 1985, 1985, 1985, - 1985, 3918, 3918, 1985, 1985, 3918, 1985, 3918, 1985, 1475, - 3918, 1475, 1475, 1475, 1475, 1475, 3918, 3918, 1475, 1475, - 3918, 1475, 3918, 1475, 1987, 3918, 1987, 1987, 1987, 1987, - 1987, 3918, 3918, 3918, 1987, 3918, 1987, 3918, 1987, 3918, - - 3918, 1987, 2072, 3918, 3918, 3918, 3918, 2072, 3918, 3918, - 2072, 2072, 3918, 2072, 3918, 3918, 3918, 3918, 2072, 2072, - 2072, 3918, 2072, 3918, 3918, 3918, 2072, 1518, 3918, 3918, - 1518, 3918, 3918, 1518, 3918, 1518, 1518, 1518, 1518, 1518, - 3918, 3918, 3918, 1518, 3918, 1518, 3918, 1518, 3918, 3918, - 1518, 1517, 3918, 3918, 1517, 3918, 3918, 1517, 3918, 1517, - 1517, 1517, 1517, 1517, 3918, 3918, 1517, 1517, 3918, 1517, - 3918, 1517, 3918, 3918, 1517, 1539, 1539, 3918, 1539, 1539, - 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, - 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, - - 1539, 1539, 1539, 1539, 1541, 1541, 3918, 1541, 1541, 3918, - 3918, 3918, 1541, 3918, 3918, 3918, 1541, 2110, 2110, 2110, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 2110, 3918, 3918, 3918, 2110, 3918, 3918, - 3918, 2110, 3918, 3918, 2110, 1545, 1545, 1545, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1545, 1545, 3918, 3918, 3918, 1545, 3918, 3918, 3918, 1545, - 1547, 1547, 1547, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1547, 3918, 3918, 3918, 1547, 1553, 3918, 3918, 3918, 1553, - - 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, - 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, - 1553, 1553, 1553, 1553, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1558, 3918, 3918, 3918, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - 1558, 1558, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, - 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, - - 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, - 1559, 1563, 3918, 3918, 3918, 1563, 1563, 1563, 1563, 1563, - 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, - 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1568, - 1568, 3918, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, - 1568, 1568, 1568, 1568, 3918, 1568, 1568, 3918, 1568, 1568, - 1568, 1568, 3918, 1568, 1568, 1568, 1568, 1568, 1569, 1569, - - 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, - 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, - 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1580, 3918, 3918, - 1580, 1580, 3918, 1580, 3918, 1580, 1580, 1580, 1580, 1580, - 3918, 3918, 3918, 1580, 3918, 3918, 3918, 1580, 3918, 3918, - 1580, 1583, 1583, 3918, 3918, 3918, 3918, 1583, 3918, 1583, - 1583, 3918, 3918, 3918, 1583, 3918, 3918, 3918, 1583, 1584, - 1584, 3918, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, - 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, - 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1585, 3918, - - 1585, 1585, 1585, 1585, 1585, 3918, 3918, 3918, 1585, 3918, - 1585, 3918, 1585, 1587, 1587, 3918, 1587, 1587, 1587, 1587, - 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, - 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, - 1587, 1587, 1588, 3918, 1588, 1588, 1588, 1588, 1588, 3918, - 3918, 3918, 1588, 3918, 1588, 3918, 1588, 1592, 3918, 1592, - 1592, 1592, 1592, 3918, 3918, 3918, 3918, 1592, 3918, 3918, - 3918, 1592, 1594, 3918, 3918, 3918, 3918, 3918, 1594, 3918, - 1594, 1594, 1594, 1594, 1594, 3918, 3918, 1594, 1594, 3918, - 3918, 3918, 1594, 3918, 3918, 1594, 1596, 1596, 1596, 1596, - - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 3918, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1597, 1597, 1597, 1597, 1597, - 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, - 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, - 1597, 1597, 1597, 1597, 1602, 3918, 3918, 3918, 1602, 1602, - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - 1602, 1602, 1602, 1603, 1603, 1603, 1603, 1603, 1603, 1603, - 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, - - 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, - 1603, 1603, 1607, 3918, 3918, 3918, 1607, 1607, 1607, 1607, - 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, - 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, - 1607, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, - 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, - 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, - 1612, 3918, 3918, 3918, 1612, 1612, 1612, 1612, 1612, 1612, - 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, - 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1613, - - 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, - 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, - 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1617, 3918, - 3918, 3918, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, - 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, - 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1618, 1618, 1618, - 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, - 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, - 1618, 1618, 1618, 1618, 1618, 1618, 1625, 1625, 1625, 1625, - 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, - - 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, - 1625, 1625, 1625, 1625, 1625, 1628, 1628, 1628, 1628, 1628, - 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, - 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, - 1628, 1628, 1628, 1628, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 2127, 2127, 2127, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 2127, - 3918, 3918, 3918, 2127, 3918, 3918, 3918, 2127, 3918, 3918, - - 2127, 1638, 1638, 1638, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1638, 1638, 3918, 3918, - 3918, 1638, 3918, 3918, 3918, 1638, 1640, 1640, 1640, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1640, 3918, 3918, 3918, - 1640, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 3918, 1641, 1641, 1641, 1641, 1641, - 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, - 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, - 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1651, - 1651, 3918, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, - 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, - 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1652, 3918, - 1652, 1652, 1652, 1652, 1652, 3918, 3918, 3918, 1652, 3918, - 1652, 3918, 1652, 1654, 1654, 3918, 1654, 1654, 1654, 1654, - 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, - 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, - 1654, 1654, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - - 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - 1655, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1373, 4091, 1373, 1373, 1373, 1373, 1373, 4091, 4091, 4091, + 1373, 4091, 1373, 1377, 1377, 4091, 1377, 1377, 1377, 1377, + 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, + 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, + 1377, 1377, 1378, 4091, 1378, 1378, 1378, 1378, 1378, 4091, + 1378, 4091, 1378, 4091, 1378, 2023, 2023, 2023, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 2023, 4091, 4091, 4091, 2023, 4091, 4091, 4091, + 4091, 4091, 2023, 1388, 1388, 1388, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1388, + 1388, 4091, 4091, 4091, 1388, 1433, 1433, 4091, 1433, 1433, + 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, + 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, + 1433, 1433, 1433, 1433, 1434, 1434, 1434, 1434, 1434, 1434, + 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, + 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, + 1434, 1434, 1434, 1439, 1439, 1439, 1439, 1439, 1439, 1439, + 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, + 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, + + 1439, 1439, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, + 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, + 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, + 1441, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 4091, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1462, + 1462, 4091, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, + + 1462, 1462, 1462, 1462, 1462, 4091, 1462, 1462, 1462, 1462, + 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 2055, 2055, + 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, + 2055, 2055, 2055, 2055, 4091, 2055, 2055, 2055, 2055, 2055, + 2055, 2055, 2055, 2055, 2055, 2055, 2055, 1472, 1472, 4091, + 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, + 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, + 1472, 1472, 1472, 1472, 1472, 1472, 1473, 4091, 1473, 1473, + 1473, 1473, 1473, 4091, 4091, 4091, 1473, 4091, 1473, 1475, + 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, + + 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, + 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1477, 1477, + 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, + 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, + 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1482, 1482, 4091, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1483, 4091, 1483, 1483, + 1483, 1483, 1483, 4091, 4091, 4091, 1483, 4091, 1483, 1485, + 1485, 4091, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, + + 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, + 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1486, 4091, + 1486, 1486, 1486, 1486, 1486, 4091, 4091, 4091, 1486, 4091, + 1486, 1491, 1491, 1491, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1491, 1491, 4091, + 4091, 4091, 1491, 2068, 2068, 2068, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 2068, + 2068, 4091, 4091, 4091, 2068, 2070, 2070, 2070, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 2070, 4091, 4091, 4091, 2070, 4091, 4091, 4091, + + 4091, 4091, 2070, 1495, 1495, 1495, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1495, + 1495, 4091, 4091, 4091, 1495, 1510, 1510, 1510, 4091, 4091, + 4091, 1510, 4091, 4091, 4091, 1510, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 1510, 1513, 4091, 4091, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 4091, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 4091, 1513, 1513, 1513, 1513, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + + 1514, 1514, 1514, 1514, 1514, 2090, 4091, 4091, 2090, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 2090, 2090, 4091, 4091, + 4091, 2090, 4091, 4091, 4091, 4091, 4091, 2090, 1540, 4091, + 1540, 1540, 1540, 1540, 1540, 4091, 4091, 4091, 1540, 4091, + 1540, 2092, 4091, 2092, 2092, 2092, 2092, 2092, 4091, 4091, + 4091, 2092, 4091, 2092, 1542, 4091, 1542, 1542, 1542, 1542, + 1542, 4091, 4091, 1542, 1542, 4091, 1542, 2094, 4091, 2094, + 2094, 2094, 2094, 2094, 4091, 4091, 2094, 2094, 4091, 2094, + 1547, 4091, 1547, 1547, 1547, 1547, 1547, 4091, 4091, 1547, + 1547, 4091, 1547, 2097, 4091, 2097, 2097, 2097, 2097, 2097, + + 4091, 4091, 4091, 2097, 4091, 2097, 4091, 4091, 4091, 2097, + 2184, 4091, 4091, 4091, 4091, 4091, 2184, 4091, 4091, 2184, + 2184, 4091, 2184, 4091, 4091, 4091, 4091, 2184, 2184, 2184, + 4091, 2184, 1588, 4091, 4091, 1588, 4091, 4091, 1588, 4091, + 1588, 1588, 1588, 1588, 1588, 4091, 4091, 1588, 1588, 4091, + 1588, 4091, 4091, 4091, 1588, 1616, 1616, 4091, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1618, 1618, 4091, 1618, 1618, 4091, + 4091, 4091, 1618, 2226, 2226, 2226, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 2226, 4091, 4091, 4091, 2226, 4091, 4091, 4091, 4091, 4091, + 2226, 1622, 1622, 1622, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1622, 1622, 4091, + 4091, 4091, 1622, 1631, 4091, 4091, 1631, 4091, 1631, 1631, + 1631, 4091, 4091, 1631, 4091, 1631, 1631, 1631, 1631, 1631, + 4091, 1631, 1631, 4091, 1631, 4091, 4091, 1631, 1633, 4091, + 4091, 1633, 4091, 1633, 1633, 1633, 4091, 4091, 1633, 4091, + 1633, 1633, 1633, 1633, 1633, 4091, 1633, 1633, 4091, 1633, + 4091, 4091, 1633, 1634, 4091, 4091, 1634, 4091, 1634, 1634, + + 1634, 4091, 4091, 1634, 4091, 1634, 1634, 1634, 1634, 1634, + 4091, 1634, 1634, 4091, 1634, 4091, 4091, 1634, 1635, 4091, + 4091, 1635, 4091, 1635, 1635, 1635, 4091, 4091, 1635, 4091, + 1635, 1635, 1635, 1635, 1635, 4091, 1635, 1635, 4091, 1635, + 4091, 4091, 1635, 1637, 4091, 4091, 1637, 4091, 1637, 1637, + 1637, 4091, 4091, 1637, 4091, 1637, 1637, 1637, 1637, 1637, + 4091, 1637, 1637, 4091, 1637, 4091, 4091, 1637, 1638, 4091, + 4091, 1638, 4091, 1638, 1638, 1638, 4091, 4091, 1638, 4091, + 1638, 1638, 1638, 1638, 1638, 4091, 1638, 1638, 4091, 1638, + 4091, 4091, 1638, 1639, 4091, 4091, 1639, 4091, 1639, 1639, + + 1639, 4091, 4091, 1639, 4091, 1639, 1639, 1639, 1639, 1639, + 4091, 1639, 1639, 4091, 1639, 4091, 4091, 1639, 1641, 4091, + 4091, 1641, 4091, 1641, 1641, 1641, 4091, 4091, 1641, 4091, + 1641, 1641, 1641, 1641, 1641, 4091, 1641, 1641, 4091, 1641, + 4091, 4091, 1641, 1642, 4091, 4091, 1642, 4091, 1642, 1642, + 1642, 4091, 4091, 1642, 4091, 1642, 1642, 1642, 1642, 1642, + 4091, 1642, 1642, 4091, 1642, 4091, 4091, 1642, 1643, 1643, + 4091, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 4091, 1643, 1643, 4091, 1643, 1643, + 1643, 1643, 4091, 1643, 1643, 1643, 1643, 1644, 1644, 1644, + + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + 1644, 1644, 1644, 1644, 1644, 1644, 1655, 4091, 4091, 1655, + 1655, 4091, 1655, 4091, 1655, 1655, 1655, 1655, 1655, 4091, + 4091, 4091, 1655, 4091, 4091, 4091, 4091, 4091, 1655, 1658, + 1658, 4091, 4091, 4091, 4091, 1658, 4091, 1658, 1658, 4091, + 4091, 4091, 1658, 1659, 1659, 4091, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1667, - 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, - 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, - 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1669, 1669, - - 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, - 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, - 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1674, 1674, 3918, - 1674, 3918, 3918, 3918, 3918, 1674, 3918, 3918, 3918, 1674, - 1677, 1677, 3918, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1659, 1659, 1660, 4091, 1660, 1660, 1660, 1660, 1660, 4091, + + 4091, 4091, 1660, 4091, 1660, 1662, 1662, 4091, 1662, 1662, + 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, + 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, + 1662, 1662, 1662, 1662, 1663, 4091, 1663, 1663, 1663, 1663, + 1663, 4091, 4091, 4091, 1663, 4091, 1663, 1667, 4091, 1667, + 1667, 1667, 1667, 4091, 4091, 4091, 4091, 1667, 1669, 4091, + 4091, 4091, 4091, 4091, 1669, 4091, 1669, 1669, 1669, 1669, + 1669, 4091, 4091, 1669, 1669, 4091, 4091, 4091, 4091, 4091, + 1669, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + + 4091, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, + 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, + 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1677, + 4091, 4091, 4091, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, - 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1678, - 3918, 3918, 3918, 3918, 3918, 1678, 3918, 1678, 1678, 1678, - 1678, 1678, 3918, 3918, 1678, 1678, 3918, 3918, 3918, 1678, - 3918, 3918, 1678, 1679, 3918, 3918, 3918, 3918, 3918, 1679, - - 3918, 1679, 1679, 1679, 1679, 1679, 3918, 3918, 1679, 1679, - 3918, 1679, 3918, 1679, 3918, 3918, 1679, 1680, 3918, 1680, - 1680, 1680, 1680, 1680, 3918, 3918, 3918, 1680, 3918, 1680, - 3918, 1680, 1682, 1682, 3918, 1682, 1682, 1682, 1682, 1682, - 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1678, 1678, + 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, + 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, + 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1682, 4091, 4091, + + 4091, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, - 1682, 1683, 3918, 1683, 1683, 1683, 1683, 1683, 3918, 3918, - 3918, 1683, 3918, 1683, 3918, 1683, 1688, 1688, 1688, 1688, - 1688, 1688, 1688, 1688, 1688, 1688, 3918, 1688, 1688, 1688, + 1682, 1682, 1682, 1682, 1682, 1682, 1683, 1683, 1683, 1683, + 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, + 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, + 1683, 1683, 1683, 1683, 1683, 1687, 4091, 4091, 4091, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, + 1687, 1687, 1687, 1687, 1688, 1688, 1688, 1688, 1688, 1688, + 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, + 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, + 1688, 1688, 1688, 1692, 4091, 4091, 4091, 1692, 1692, 1692, + 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, + 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, + 1692, 1692, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, + 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, + 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, + 1693, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, - 1688, 1688, 1688, 1688, 1688, 1690, 1690, 1690, 1690, 1690, - 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, - 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, - 1690, 1690, 1690, 1690, 1697, 1697, 3918, 1697, 3918, 1697, - 1697, 3918, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, - 1697, 1697, 1697, 1697, 1697, 1697, 1697, 3918, 1697, 1697, - 1697, 1697, 1697, 1698, 1698, 1698, 1698, 1698, 1698, 1698, - 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, - 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, - 1698, 1698, 1703, 1703, 3918, 1703, 3918, 1703, 1703, 3918, - - 3918, 3918, 1703, 1703, 1703, 1703, 1703, 3918, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, - 1703, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, - 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, - 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, - 2143, 2143, 3918, 2143, 2143, 2143, 2143, 2143, 2143, 2143, - 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, - 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 1708, - 3918, 3918, 3918, 3918, 1708, 1708, 3918, 3918, 3918, 1708, - 1708, 1708, 1708, 1708, 3918, 1708, 1708, 1708, 1708, 1708, - - 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1724, 1724, 1724, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 1724, 3918, 3918, 3918, 1724, 3918, 3918, - 3918, 1724, 3918, 3918, 1724, 1033, 1033, 1033, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1033, 1033, 1033, 3918, 3918, 1033, 3918, 3918, 3918, 1033, - 1037, 1037, 1037, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1037, 3918, 3918, 3918, 1037, 1727, 1727, 1727, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1727, 3918, 1727, 3918, 3918, 1727, 3918, 3918, 3918, 1727, - 1042, 1042, 1042, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1042, 3918, 3918, 3918, - 1042, 3918, 3918, 3918, 1042, 3918, 3918, 1042, 1730, 1730, - 1730, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 1730, 1730, 3918, 3918, 3918, 1730, 3918, - 3918, 3918, 1730, 1732, 1732, 1732, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 1732, 3918, 3918, 3918, 1732, 1046, 1046, - 1046, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1046, 3918, - 3918, 3918, 1046, 1763, 1763, 1763, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1763, 1763, - 3918, 3918, 3918, 1763, 3918, 3918, 3918, 1763, 2182, 2182, - 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 3918, 2182, - 2182, 2182, 2182, 3918, 2182, 2182, 2182, 2182, 2182, 2182, - 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2184, 2184, 2184, - - 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, - 2184, 2184, 3918, 2184, 2184, 2184, 2184, 2184, 2184, 2184, - 2184, 2184, 2184, 2184, 2184, 2184, 1771, 1771, 1771, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 1771, 3918, 3918, 3918, 1771, 3918, 3918, 3918, - 1771, 3918, 3918, 1771, 1085, 1085, 1085, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1085, - 1085, 1085, 3918, 3918, 1085, 3918, 3918, 3918, 1085, 1103, - 1103, 1103, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1103, - - 3918, 3918, 3918, 1103, 1793, 1793, 1793, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1793, - 3918, 1793, 3918, 3918, 1793, 3918, 3918, 3918, 1793, 1795, - 1795, 1795, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 1795, 3918, 3918, 3918, 1795, - 3918, 3918, 3918, 1795, 3918, 3918, 1795, 1108, 1108, 1108, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 1108, 1108, 1108, 3918, 3918, 1108, 3918, 3918, - 3918, 1108, 1111, 1111, 1111, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 1111, 3918, 3918, 3918, 1111, 1798, 1798, 1798, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 1798, 3918, 1798, 3918, 3918, 1798, 3918, 3918, - 3918, 1798, 1817, 1817, 3918, 1817, 1817, 1817, 1817, 1817, - 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, - 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, - 1817, 1820, 1820, 1820, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1820, 3918, 3918, - 3918, 1820, 3918, 3918, 3918, 1820, 3918, 3918, 1820, 1148, - 1148, 1148, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 1148, 1148, 3918, 3918, 3918, 1148, - 3918, 3918, 3918, 1148, 1150, 1150, 1150, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 1150, 3918, 3918, 3918, 1150, 1824, - 1824, 1824, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 1824, 3918, 3918, 3918, 1824, - 3918, 3918, 3918, 1824, 3918, 3918, 1824, 1154, 1154, 1154, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 1154, 1154, 3918, 3918, 3918, 1154, 3918, 3918, - 3918, 1154, 1156, 1156, 1156, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 1156, 3918, 3918, 3918, 1156, 1831, 1831, 3918, - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, - 1831, 1831, 1831, 1831, 1831, 1831, 1194, 3918, 3918, 1194, - 1194, 1194, 1194, 1194, 1194, 1194, 3918, 1194, 1194, 1194, - 1194, 3918, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 3918, - 1194, 1194, 1194, 1194, 1194, 1843, 1843, 1843, 1843, 1843, - 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, - 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, - - 1843, 1843, 1843, 1843, 1217, 1217, 3918, 1217, 1217, 1217, - 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, - 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, - 1217, 1217, 1217, 1906, 1906, 1906, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1906, - 3918, 3918, 3918, 1906, 3918, 3918, 3918, 1906, 3918, 3918, - 1906, 1302, 1302, 1302, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1302, 1302, 3918, 3918, - 3918, 1302, 3918, 3918, 3918, 1302, 1304, 1304, 1304, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 1304, 3918, 3918, 3918, - 1304, 1913, 1913, 1913, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1913, 3918, 3918, - 3918, 1913, 3918, 3918, 3918, 1913, 3918, 3918, 1913, 1321, - 1321, 1321, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 1321, 1321, 3918, 3918, 3918, 1321, - 3918, 3918, 3918, 1321, 1323, 1323, 1323, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 1323, 3918, 3918, 3918, 1323, 1248, - 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, + 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, + 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 2246, 2246, + 2246, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 2246, 4091, 4091, 4091, 2246, + 4091, 4091, 4091, 4091, 4091, 2246, 1713, 1713, 1713, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 1713, 1713, 4091, 4091, 4091, 1713, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 4091, 1716, 1716, 1716, 1716, 1718, 1718, 1718, + 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, + 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, + 1718, 1718, 1718, 1718, 1718, 1718, 1726, 1726, 4091, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1727, 4091, 1727, 1727, 1727, + + 1727, 1727, 4091, 4091, 4091, 1727, 4091, 1727, 1729, 1729, + 4091, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, + 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, + 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1730, 1730, 1730, + 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, + 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, + 1730, 1730, 1730, 1730, 1730, 1730, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1736, 1736, 1736, 1736, 1736, + + 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, + 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, + 1736, 1736, 1736, 1736, 1742, 1742, 1742, 1742, 1742, 1742, + 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, + 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, + 1742, 1742, 1742, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + 1744, 1744, 1752, 1752, 4091, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1753, 4091, 4091, 4091, 4091, 4091, 1753, 4091, 1753, + 1753, 1753, 1753, 1753, 4091, 4091, 1753, 1753, 4091, 4091, + 4091, 4091, 4091, 1753, 1754, 4091, 4091, 4091, 4091, 4091, + 1754, 4091, 1754, 1754, 1754, 1754, 1754, 4091, 4091, 1754, + 1754, 4091, 1754, 4091, 4091, 4091, 1754, 1755, 4091, 1755, + 1755, 1755, 1755, 1755, 4091, 4091, 4091, 1755, 4091, 1755, + 1757, 1757, 4091, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1758, + + 4091, 1758, 1758, 1758, 1758, 1758, 4091, 4091, 4091, 1758, + 4091, 1758, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, + 1763, 1763, 1763, 4091, 1763, 1763, 1763, 1763, 1763, 1763, + 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, + 1763, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1772, 1772, 4091, 1772, 1772, 4091, 1772, 1772, 4091, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 4091, 1772, 1772, 1772, 1772, 1773, + + 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, + 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, + 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1778, 1778, + 4091, 1778, 1778, 4091, 1778, 1778, 4091, 4091, 4091, 1778, + 1778, 1778, 1778, 1778, 4091, 1778, 1778, 1778, 1778, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1779, 1779, 2262, 2262, 4091, 2262, + 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, + + 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, + 2262, 2262, 2262, 2262, 2262, 1783, 1783, 4091, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 4091, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1784, 1784, 1784, 1784, 1784, 1784, + 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, + 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, + 1784, 1784, 1784, 1788, 1788, 4091, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + + 1788, 1788, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1793, 4091, 4091, 4091, 1793, 4091, 1793, 1793, 4091, + 4091, 4091, 1793, 1793, 1793, 1793, 1793, 4091, 1793, 1793, + 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, + 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, + 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 2274, + 2274, 4091, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, + + 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, + 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 1815, 1815, + 4091, 1815, 1815, 4091, 1815, 1815, 4091, 4091, 4091, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1816, 1816, 1816, + 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, + 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, + 1816, 1816, 1816, 1816, 1816, 1816, 2278, 2278, 4091, 2278, + 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, + 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, + + 2278, 2278, 2278, 2278, 2278, 1822, 1822, 4091, 1822, 1822, + 4091, 1822, 1822, 4091, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 4091, 4091, 1822, 1823, 1823, 1823, 1823, 1823, 1823, + 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, + 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, + 1823, 1823, 1823, 2282, 2282, 4091, 2282, 2282, 2282, 2282, + 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, + 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, + 2282, 2282, 1833, 1833, 1833, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1833, + 4091, 4091, 4091, 1833, 4091, 4091, 4091, 4091, 4091, 1833, + 1092, 1092, 1092, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 1092, 1092, 1092, 4091, + 4091, 1092, 1836, 1836, 1836, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1836, 4091, + 1836, 4091, 4091, 1836, 1101, 1101, 1101, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 1101, 4091, 4091, 4091, 1101, 4091, 4091, 4091, 4091, + 4091, 1101, 1839, 1839, 1839, 4091, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1839, 1839, + 4091, 4091, 4091, 1839, 1872, 1872, 1872, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 1872, 1872, 4091, 4091, 4091, 1872, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 4091, 2316, 2316, + 2316, 2316, 4091, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2317, 2317, 2317, 2317, 2317, + 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, + 2317, 4091, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, + 2317, 2317, 2317, 2317, 1880, 1880, 1880, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 1880, 4091, 4091, 4091, 1880, 4091, 4091, 4091, 4091, + 4091, 1880, 1144, 1144, 1144, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1144, 1144, + 1144, 4091, 4091, 1144, 1902, 1902, 1902, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 1902, 4091, 1902, 4091, 4091, 1902, 1904, 1904, 1904, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 1904, 4091, 4091, 4091, 1904, 4091, 4091, + 4091, 4091, 4091, 1904, 1167, 1167, 1167, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 1167, 1167, 1167, 4091, 4091, 1167, 1907, 1907, 1907, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 1907, 4091, 1907, 4091, 4091, 1907, 1926, 1926, + 4091, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1929, 1929, 1929, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 1929, 4091, 4091, 4091, 1929, 4091, + 4091, 4091, 4091, 4091, 1929, 1207, 1207, 1207, 4091, 4091, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 1207, 1207, 4091, 4091, 4091, 1207, 1933, 1933, 1933, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 1933, 4091, 4091, 4091, 1933, 4091, + 4091, 4091, 4091, 4091, 1933, 1213, 1213, 1213, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 1213, 1213, 4091, 4091, 4091, 1213, 1255, 4091, 4091, + 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 4091, 1255, + 1255, 1255, 1255, 4091, 1255, 1255, 1255, 1255, 1255, 1255, + 1255, 4091, 1255, 1255, 1255, 1255, 1950, 1950, 1950, 1950, + + 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, + 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, + 1950, 1950, 1950, 1950, 1950, 1278, 1278, 4091, 1278, 1278, + 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, + 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, + 1278, 1278, 1278, 1278, 2016, 2016, 2016, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 2016, 4091, 4091, 4091, 2016, 4091, 4091, 4091, 4091, + 4091, 2016, 1367, 1367, 1367, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1367, 1367, + + 4091, 4091, 4091, 1367, 2023, 2023, 2023, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 2023, 4091, 4091, 4091, 2023, 4091, 4091, 4091, 4091, + 4091, 2023, 1388, 1388, 1388, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1388, 1388, + 4091, 4091, 4091, 1388, 1309, 1309, 1309, 1309, 1309, 1309, + 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, + 4091, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, + 1309, 1309, 1309, 2055, 2055, 4091, 2055, 2055, 2055, 2055, + 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 4091, + + 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, + 2055, 2055, 2428, 2428, 2428, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 2428, + 4091, 4091, 4091, 2428, 2068, 2068, 2068, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 2068, 2068, 4091, 4091, 4091, 2068, 2070, 2070, 2070, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 2070, 4091, 4091, 4091, 2070, 4091, 4091, + 4091, 4091, 4091, 2070, 1495, 1495, 1495, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + + 1495, 1495, 4091, 4091, 4091, 1495, 1513, 4091, 4091, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 4091, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 4091, 1513, 1513, 1513, 1513, 2090, 4091, 4091, 2090, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 2090, 2090, 4091, 4091, + 4091, 2090, 4091, 4091, 4091, 4091, 4091, 2090, 2092, 4091, + 2092, 2092, 2092, 2092, 2092, 4091, 4091, 4091, 2092, 4091, + 2092, 2094, 4091, 2094, 2094, 2094, 2094, 2094, 4091, 4091, + 2094, 2094, 4091, 2094, 2443, 4091, 4091, 2443, 4091, 4091, + 2443, 4091, 2443, 2443, 2443, 2443, 2443, 4091, 4091, 4091, + + 2443, 4091, 2443, 4091, 4091, 4091, 2443, 2479, 2479, 4091, + 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, + 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, + 2479, 2479, 2479, 2479, 2479, 2479, 2505, 2505, 4091, 2505, + 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, + 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, + 2505, 2505, 2505, 2505, 2505, 2515, 2515, 4091, 2515, 2515, + 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, + 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, + 2515, 2515, 2515, 2515, 2184, 4091, 4091, 4091, 4091, 4091, + + 2184, 4091, 4091, 2184, 2184, 4091, 2184, 4091, 4091, 4091, + 4091, 2184, 2184, 2184, 4091, 2184, 2097, 4091, 2097, 2097, + 2097, 2097, 2097, 4091, 4091, 4091, 2097, 4091, 2097, 4091, + 4091, 4091, 2097, 1540, 4091, 1540, 1540, 1540, 1540, 1540, + 4091, 4091, 4091, 1540, 4091, 1540, 1588, 4091, 4091, 1588, + 4091, 4091, 1588, 4091, 1588, 1588, 1588, 1588, 1588, 4091, + 4091, 1588, 1588, 4091, 1588, 4091, 4091, 4091, 1588, 2226, + 2226, 2226, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 2226, 4091, 4091, 4091, + 2226, 4091, 4091, 4091, 4091, 4091, 2226, 1622, 1622, 1622, + + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 1622, 1622, 4091, 4091, 4091, 1622, 1631, + 4091, 4091, 1631, 4091, 1631, 1631, 1631, 4091, 4091, 1631, + 4091, 1631, 1631, 1631, 1631, 1631, 4091, 1631, 1631, 4091, + 1631, 4091, 4091, 1631, 1635, 4091, 4091, 1635, 4091, 1635, + 1635, 1635, 4091, 4091, 1635, 4091, 1635, 1635, 1635, 1635, + 1635, 4091, 1635, 1635, 4091, 1635, 4091, 4091, 1635, 1639, + 4091, 4091, 1639, 4091, 1639, 1639, 1639, 4091, 4091, 1639, + 4091, 1639, 1639, 1639, 1639, 1639, 4091, 1639, 1639, 4091, + 1639, 4091, 4091, 1639, 1643, 1643, 4091, 1643, 1643, 1643, - 1248, 1248, 1248, 1248, 3918, 1248, 1248, 1248, 1248, 1248, - 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1945, 1945, - 3918, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, - 1945, 1945, 1945, 3918, 1945, 1945, 1945, 1945, 1945, 1945, - 1945, 1945, 1945, 1945, 1945, 1945, 1945, 2295, 2295, 2295, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 2295, 3918, 3918, 3918, 2295, 3918, 3918, - 3918, 2295, 1958, 1958, 1958, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1958, 1958, 3918, - 3918, 3918, 1958, 3918, 3918, 3918, 1958, 1960, 1960, 1960, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 1960, 3918, 3918, 3918, 1960, 3918, 3918, - 3918, 1960, 3918, 3918, 1960, 1428, 1428, 1428, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1428, 1428, 3918, 3918, 3918, 1428, 3918, 3918, 3918, 1428, - 1430, 1430, 1430, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1430, 3918, 3918, 3918, 1430, 1446, 3918, 3918, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 3918, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 3918, 1446, - - 1446, 1446, 1446, 1446, 1980, 3918, 3918, 1980, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 1980, 1980, 3918, 3918, 3918, - 1980, 3918, 3918, 3918, 1980, 3918, 3918, 1980, 1982, 3918, - 1982, 1982, 1982, 1982, 1982, 3918, 3918, 3918, 1982, 3918, - 1982, 3918, 1982, 1985, 3918, 1985, 1985, 1985, 1985, 1985, - 3918, 3918, 1985, 1985, 3918, 1985, 3918, 1985, 2311, 3918, - 3918, 2311, 3918, 3918, 2311, 3918, 2311, 2311, 2311, 2311, - 2311, 3918, 3918, 3918, 2311, 3918, 2311, 3918, 2311, 3918, - 3918, 2311, 2347, 2347, 3918, 2347, 2347, 2347, 2347, 2347, - 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, - - 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, - 2347, 2373, 2373, 3918, 2373, 2373, 2373, 2373, 2373, 2373, - 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, - 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, - 2383, 2383, 3918, 2383, 2383, 2383, 2383, 2383, 2383, 2383, - 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, - 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2072, - 3918, 3918, 3918, 3918, 2072, 3918, 3918, 2072, 2072, 3918, - 2072, 3918, 3918, 3918, 3918, 2072, 2072, 2072, 3918, 2072, - 3918, 3918, 3918, 2072, 1987, 3918, 1987, 1987, 1987, 1987, - - 1987, 3918, 3918, 3918, 1987, 3918, 1987, 3918, 1987, 3918, - 3918, 1987, 1471, 3918, 1471, 1471, 1471, 1471, 1471, 3918, - 3918, 3918, 1471, 3918, 1471, 3918, 1471, 1517, 3918, 3918, - 1517, 3918, 3918, 1517, 3918, 1517, 1517, 1517, 1517, 1517, - 3918, 3918, 1517, 1517, 3918, 1517, 3918, 1517, 3918, 3918, - 1517, 2110, 2110, 2110, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 2110, 3918, 3918, - 3918, 2110, 3918, 3918, 3918, 2110, 3918, 3918, 2110, 1545, - 1545, 1545, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 1545, 1545, 3918, 3918, 3918, 1545, - - 3918, 3918, 3918, 1545, 1547, 1547, 1547, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 1547, 3918, 3918, 3918, 1547, 1568, - 1568, 3918, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, - 1568, 1568, 1568, 1568, 3918, 1568, 1568, 3918, 1568, 1568, - 1568, 1568, 3918, 1568, 1568, 1568, 1568, 1568, 2127, 2127, - 2127, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 2127, 3918, 3918, 3918, 2127, 3918, - 3918, 3918, 2127, 3918, 3918, 2127, 1638, 1638, 1638, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 1638, 1638, 3918, 3918, 3918, 1638, 3918, 3918, 3918, - 1638, 1640, 1640, 1640, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 1640, 3918, 3918, 3918, 1640, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 3918, - 1641, 1641, 1641, 1641, 1641, 1674, 1674, 3918, 1674, 3918, - 3918, 3918, 3918, 1674, 3918, 3918, 3918, 1674, 1042, 1042, - 1042, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 1042, 3918, 3918, 3918, 1042, 3918, - - 3918, 3918, 1042, 3918, 3918, 1042, 1046, 1046, 1046, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1046, 3918, 3918, 3918, - 1046, 1080, 1080, 1080, 3918, 3918, 3918, 3918, 3918, 3918, - 1080, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 1080, 3918, 3918, 3918, 1080, 1085, 1085, 1085, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 1085, 1085, 1085, 3918, 3918, 1085, 3918, 3918, 3918, - 1085, 1831, 1831, 3918, 1831, 1831, 1831, 1831, 1831, 1831, - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, - - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, - 1194, 3918, 3918, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - 3918, 1194, 1194, 1194, 1194, 3918, 1194, 1194, 1194, 1194, - 1194, 1194, 1194, 3918, 1194, 1194, 1194, 1194, 1194, 2596, - 2596, 3918, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, - 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, - 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2295, 2295, - 2295, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 2295, 3918, 3918, 3918, 2295, 3918, - 3918, 3918, 2295, 2620, 2620, 2620, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 2620, 2620, - 3918, 3918, 3918, 2620, 3918, 3918, 3918, 2620, 1446, 3918, - 3918, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 1446, 1446, 1446, 3918, 1446, 1446, 1446, 1446, 1446, 1446, - 1446, 3918, 1446, 1446, 1446, 1446, 1446, 2311, 3918, 3918, - 2311, 3918, 3918, 2311, 3918, 2311, 2311, 2311, 2311, 2311, - 3918, 3918, 3918, 2311, 3918, 2311, 3918, 2311, 3918, 3918, - 2311, 2633, 2633, 3918, 2633, 2633, 2633, 2633, 2633, 2633, - 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, - 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, - - 2635, 2635, 3918, 2635, 2635, 2635, 2635, 2635, 2635, 2635, - 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, - 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2657, - 2657, 3918, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2664, 2664, - 3918, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2347, 2347, 3918, - 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, - - 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, - 2347, 2347, 2347, 2347, 2347, 2347, 2682, 2682, 3918, 2682, - 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, - 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, - 2682, 2682, 2682, 2682, 2682, 2686, 2686, 3918, 2686, 2686, - 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, - 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, - 2686, 2686, 2686, 2686, 2690, 2690, 3918, 2690, 2690, 2690, - 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, - 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, - - 2690, 2690, 2690, 2692, 2692, 3918, 2692, 2692, 2692, 2692, - 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, - 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, - 2692, 2692, 2694, 2694, 3918, 2694, 2694, 2694, 2694, 2694, - 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, - 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, - 2694, 2697, 2697, 3918, 2697, 2697, 2697, 2697, 2697, 2697, - 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, - 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, - 2699, 2699, 3918, 2699, 2699, 2699, 2699, 2699, 2699, 2699, - - 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, - 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2701, - 2701, 3918, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, - 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, - 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2704, 2704, - 3918, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, - 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, - 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2373, 2373, 3918, - 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, - 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, - - 2373, 2373, 2373, 2373, 2373, 2373, 2709, 2709, 3918, 2709, - 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, - 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, - 2709, 2709, 2709, 2709, 2709, 2713, 2713, 3918, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2383, 2383, 3918, 2383, 2383, 2383, - 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, - 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, - 2383, 2383, 2383, 2724, 2724, 3918, 2724, 2724, 2724, 2724, - - 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, - 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, - 2724, 2724, 2726, 2726, 3918, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2728, 2728, 3918, 2728, 2728, 2728, 2728, 2728, 2728, - 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, - 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, - 2730, 2730, 3918, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2311, - 3918, 3918, 2311, 3918, 3918, 2311, 3918, 2311, 2311, 2311, - 2311, 2311, 3918, 3918, 3918, 2311, 3918, 2311, 3918, 2311, - 3918, 3918, 2311, 1471, 3918, 1471, 1471, 1471, 1471, 1471, - 3918, 3918, 3918, 1471, 3918, 1471, 3918, 1471, 2808, 3918, - 3918, 3918, 3918, 3918, 2808, 3918, 2808, 2808, 2808, 2808, - 2808, 3918, 3918, 2808, 2808, 3918, 2808, 3918, 2808, 3918, - 3918, 2808, 1517, 3918, 3918, 1517, 3918, 3918, 1517, 3918, - 1517, 1517, 1517, 1517, 1517, 3918, 3918, 1517, 1517, 3918, - 1517, 3918, 1517, 3918, 3918, 1517, 1568, 1568, 3918, 1568, - - 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, - 1568, 3918, 1568, 1568, 3918, 1568, 1568, 1568, 1568, 3918, - 1568, 1568, 1568, 1568, 1568, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 3918, 1641, - 1641, 1641, 1641, 1641, 1674, 1674, 3918, 1674, 3918, 3918, - 3918, 3918, 1674, 3918, 3918, 3918, 1674, 1080, 1080, 1080, - 3918, 3918, 3918, 3918, 3918, 3918, 1080, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1080, 3918, 3918, - 3918, 1080, 1085, 1085, 1085, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1085, 1085, 1085, - 3918, 3918, 1085, 3918, 3918, 3918, 1085, 1831, 1831, 3918, - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, - 1831, 1831, 1831, 1831, 1831, 1831, 2878, 2878, 2878, 2878, - 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, - 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, - 2878, 2878, 2878, 2878, 2878, 1194, 3918, 3918, 1194, 1194, - 1194, 1194, 1194, 1194, 1194, 3918, 1194, 1194, 1194, 1194, - 3918, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 3918, 1194, - - 1194, 1194, 1194, 1194, 2884, 2884, 3918, 2884, 2884, 2884, - 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, - 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, - 2884, 2884, 2884, 2892, 2892, 2892, 2892, 2892, 2892, 2892, - 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 3918, - 2892, 2892, 2892, 2892, 3918, 2892, 2892, 2892, 3918, 2892, - 2892, 2892, 2596, 2596, 3918, 2596, 2596, 2596, 2596, 2596, - 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, - 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, - 2596, 2620, 2620, 2620, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 3918, 3918, 2620, 2620, 3918, 3918, - 3918, 2620, 3918, 3918, 3918, 2620, 1446, 3918, 3918, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 1446, 3918, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 3918, - 1446, 1446, 1446, 1446, 1446, 1980, 3918, 3918, 1980, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1980, 1980, 3918, 3918, - 3918, 1980, 3918, 3918, 3918, 1980, 3918, 3918, 1980, 2633, - 2633, 3918, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, - 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, - 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2635, 2635, - - 3918, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, - 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, - 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2958, 2958, 3918, - 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, - 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, - 2958, 2958, 2958, 2958, 2958, 2958, 2962, 2962, 3918, 2962, - 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, - 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, - 2962, 2962, 2962, 2962, 2962, 2964, 2964, 3918, 2964, 2964, - 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, - - 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, - 2964, 2964, 2964, 2964, 2966, 2966, 3918, 2966, 2966, 2966, - 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, - 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, - 2966, 2966, 2966, 2969, 2969, 3918, 2969, 2969, 2969, 2969, - 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, - 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, - 2969, 2969, 2971, 2971, 3918, 2971, 2971, 2971, 2971, 2971, - 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, - 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, - - 2971, 2973, 2973, 3918, 2973, 2973, 2973, 2973, 2973, 2973, - 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973, - 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973, - 2657, 2657, 3918, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2976, - 2976, 3918, 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, - 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, - 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2979, 2979, - 3918, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, - - 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, - 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2664, 2664, 3918, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2990, 2990, 3918, 2990, - 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, - 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, - 2990, 2990, 2990, 2990, 2990, 2992, 2992, 3918, 2992, 2992, - 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, - 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, - - 2992, 2992, 2992, 2992, 2994, 2994, 3918, 2994, 2994, 2994, - 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, - 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, - 2994, 2994, 2994, 2996, 2996, 3918, 2996, 2996, 2996, 2996, - 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, - 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, - 2996, 2996, 2682, 2682, 3918, 2682, 2682, 2682, 2682, 2682, - 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, - 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, - 2682, 2686, 2686, 3918, 2686, 2686, 2686, 2686, 2686, 2686, - - 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, - 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, - 3005, 3005, 3918, 3005, 3005, 3005, 3005, 3005, 3005, 3005, - 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, - 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, 2690, - 2690, 3918, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, - 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, - 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2692, 2692, - 3918, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, - 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, - - 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2694, 2694, 3918, - 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, - 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, - 2694, 2694, 2694, 2694, 2694, 2694, 2697, 2697, 3918, 2697, - 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, - 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, - 2697, 2697, 2697, 2697, 2697, 2699, 2699, 3918, 2699, 2699, - 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, - 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, - 2699, 2699, 2699, 2699, 2701, 2701, 3918, 2701, 2701, 2701, - - 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, - 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, - 2701, 2701, 2701, 2704, 2704, 3918, 2704, 2704, 2704, 2704, - 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, - 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, - 2704, 2704, 3011, 3011, 3918, 3011, 3011, 3011, 3011, 3011, - 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, - 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, - 3011, 2709, 2709, 3918, 2709, 2709, 2709, 2709, 2709, 2709, - 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, - - 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, - 2713, 2713, 3918, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 3017, - 3017, 3918, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, - 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, - 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3021, 3021, - 3918, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, - 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, - 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3023, 3023, 3918, - - 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, - 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, - 3023, 3023, 3023, 3023, 3023, 3023, 2724, 2724, 3918, 2724, - 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, - 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, - 2724, 2724, 2724, 2724, 2724, 2726, 2726, 3918, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2728, 2728, 3918, 2728, 2728, 2728, - 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, - - 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, - 2728, 2728, 2728, 2730, 2730, 3918, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 3026, 3026, 3918, 3026, 3026, 3026, 3026, 3026, - 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, - 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, - 3026, 2311, 3918, 3918, 2311, 3918, 3918, 2311, 3918, 2311, - 2311, 2311, 2311, 2311, 3918, 3918, 3918, 2311, 3918, 2311, - 3918, 2311, 3918, 3918, 2311, 1471, 3918, 1471, 1471, 1471, - - 1471, 1471, 3918, 3918, 3918, 1471, 3918, 1471, 3918, 1471, - 3067, 3067, 3918, 3067, 3067, 3067, 3067, 3067, 3067, 3067, - 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, - 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 2807, - 3918, 3918, 3918, 3918, 3918, 2807, 3918, 2807, 2807, 2807, - 2807, 2807, 3918, 3918, 2807, 2807, 3918, 3918, 3918, 2807, - 3918, 3918, 2807, 2808, 3918, 3918, 3918, 3918, 3918, 2808, - 3918, 2808, 2808, 2808, 2808, 2808, 3918, 3918, 2808, 2808, - 3918, 2808, 3918, 2808, 3918, 3918, 2808, 3099, 3918, 3918, - 3918, 3918, 3918, 3099, 3918, 3099, 3099, 3099, 3099, 3099, - - 3918, 3918, 3099, 3099, 3918, 3099, 3918, 3099, 3918, 3918, - 3099, 3101, 3918, 3918, 3918, 3918, 3918, 3101, 3918, 3101, - 3101, 3101, 3101, 3101, 3918, 3918, 3101, 3101, 3918, 3101, - 3918, 3101, 3918, 3918, 3101, 1517, 3918, 3918, 1517, 3918, - 3918, 1517, 3918, 1517, 1517, 1517, 1517, 1517, 3918, 3918, - 1517, 1517, 3918, 1517, 3918, 1517, 3918, 3918, 1517, 1568, - 1568, 3918, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, - 1568, 1568, 1568, 1568, 3918, 1568, 1568, 3918, 1568, 1568, - 1568, 1568, 3918, 1568, 1568, 1568, 1568, 1568, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 3918, 1641, 1641, 1641, 1641, 1641, 1674, 1674, 3918, - 1674, 3918, 3918, 3918, 3918, 1674, 3918, 3918, 3918, 1674, - 1085, 1085, 1085, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 1085, 1085, 1085, 3918, 3918, - 1085, 3918, 3918, 3918, 1085, 1831, 1831, 3918, 1831, 1831, - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, - 1831, 1831, 1831, 1831, 3165, 3165, 3918, 3165, 3165, 3165, - 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, - - 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, - 3165, 3165, 3165, 1194, 3918, 3918, 1194, 1194, 1194, 1194, - 1194, 1194, 1194, 3918, 1194, 1194, 1194, 1194, 3918, 1194, - 1194, 1194, 1194, 1194, 1194, 1194, 3918, 1194, 1194, 1194, - 1194, 1194, 2884, 2884, 3918, 2884, 2884, 2884, 2884, 2884, - 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, - 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, - 2884, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, - 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3918, 3170, 3170, - 3170, 3170, 3918, 3170, 3170, 3170, 3918, 3170, 3170, 3170, - - 1446, 3918, 3918, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 3918, 1446, 1446, 1446, 1446, - 1446, 1446, 1446, 3918, 1446, 1446, 1446, 1446, 1446, 1980, - 3918, 3918, 1980, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1980, 1980, 3918, 3918, 3918, 1980, 3918, 3918, 3918, 1980, - 3918, 3918, 1980, 2958, 2958, 3918, 2958, 2958, 2958, 2958, - 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, - 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, - 2958, 2958, 3227, 3227, 3918, 3227, 3227, 3227, 3227, 3227, - 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 4091, 1643, 1643, 4091, 1643, 1643, 1643, 1643, 4091, 1643, + 1643, 1643, 1643, 2246, 2246, 2246, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 2246, 4091, 4091, 4091, 2246, 4091, 4091, 4091, 4091, 4091, + 2246, 1713, 1713, 1713, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1713, 1713, 4091, + 4091, 4091, 1713, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 4091, 1716, 1716, + + 1716, 1716, 1101, 1101, 1101, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1101, + 4091, 4091, 4091, 1101, 4091, 4091, 4091, 4091, 4091, 1101, + 1139, 1139, 1139, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 1139, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 1139, 1144, 1144, 1144, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1144, 1144, + 1144, 4091, 4091, 1144, 1255, 4091, 4091, 1255, 1255, 1255, + 1255, 1255, 1255, 1255, 1255, 4091, 1255, 1255, 1255, 1255, + 4091, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 4091, 1255, + + 1255, 1255, 1255, 2741, 2741, 4091, 2741, 2741, 2741, 2741, + 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, + 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, + 2741, 2741, 2428, 2428, 2428, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 2428, + 4091, 4091, 4091, 2428, 2765, 2765, 2765, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 2765, 2765, 4091, 4091, 4091, 2765, 1513, 4091, 4091, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 4091, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + + 4091, 1513, 1513, 1513, 1513, 2443, 4091, 4091, 2443, 4091, + 4091, 2443, 4091, 2443, 2443, 2443, 2443, 2443, 4091, 4091, + 4091, 2443, 4091, 2443, 4091, 4091, 4091, 2443, 2778, 2778, + 4091, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, + 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, + 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2780, 2780, 4091, + 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, + 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, + 2780, 2780, 2780, 2780, 2780, 2780, 2802, 2802, 4091, 2802, + 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, + + 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, + 2802, 2802, 2802, 2802, 2802, 2809, 2809, 4091, 2809, 2809, + 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, + 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, + 2809, 2809, 2809, 2809, 2479, 2479, 4091, 2479, 2479, 2479, + 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, + 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, + 2479, 2479, 2479, 2827, 2827, 4091, 2827, 2827, 2827, 2827, + 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, + 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, + + 2827, 2827, 2831, 2831, 4091, 2831, 2831, 2831, 2831, 2831, + 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, + 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, + 2831, 2835, 2835, 4091, 2835, 2835, 2835, 2835, 2835, 2835, + 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835, + 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835, + 2837, 2837, 4091, 2837, 2837, 2837, 2837, 2837, 2837, 2837, + 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, + 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2839, + 2839, 4091, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, + + 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, + 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2842, 2842, + 4091, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, + 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, + 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2844, 2844, 4091, + 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, + 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, + 2844, 2844, 2844, 2844, 2844, 2844, 2846, 2846, 4091, 2846, + 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, + 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, + + 2846, 2846, 2846, 2846, 2846, 2849, 2849, 4091, 2849, 2849, + 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, + 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, + 2849, 2849, 2849, 2849, 2505, 2505, 4091, 2505, 2505, 2505, + 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, + 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, + 2505, 2505, 2505, 2854, 2854, 4091, 2854, 2854, 2854, 2854, + 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, + 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, + 2854, 2854, 2858, 2858, 4091, 2858, 2858, 2858, 2858, 2858, + + 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, + 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, + 2858, 2515, 2515, 4091, 2515, 2515, 2515, 2515, 2515, 2515, + 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, + 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, + 2869, 2869, 4091, 2869, 2869, 2869, 2869, 2869, 2869, 2869, + 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, + 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2871, + 2871, 4091, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, + 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, + + 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2873, 2873, + 4091, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, + 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, + 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2875, 2875, 4091, + 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, + 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, + 2875, 2875, 2875, 2875, 2875, 2875, 2443, 4091, 4091, 2443, + 4091, 4091, 2443, 4091, 2443, 2443, 2443, 2443, 2443, 4091, + 4091, 4091, 2443, 4091, 2443, 4091, 4091, 4091, 2443, 1540, + 4091, 1540, 1540, 1540, 1540, 1540, 4091, 4091, 4091, 1540, + + 4091, 1540, 2959, 4091, 4091, 4091, 4091, 4091, 2959, 4091, + 2959, 2959, 2959, 2959, 2959, 4091, 4091, 2959, 2959, 4091, + 2959, 4091, 4091, 4091, 2959, 1588, 4091, 4091, 1588, 4091, + 4091, 1588, 4091, 1588, 1588, 1588, 1588, 1588, 4091, 4091, + 1588, 1588, 4091, 1588, 4091, 4091, 4091, 1588, 1643, 1643, + 4091, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 4091, 1643, 1643, 4091, 1643, 1643, + 1643, 1643, 4091, 1643, 1643, 1643, 1643, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + + 1716, 4091, 1716, 1716, 1716, 1716, 1139, 1139, 1139, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 1139, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1139, 1144, 1144, + 1144, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 1144, 1144, 1144, 4091, 4091, 1144, + 1255, 4091, 4091, 1255, 1255, 1255, 1255, 1255, 1255, 1255, + 1255, 4091, 1255, 1255, 1255, 1255, 4091, 1255, 1255, 1255, + 1255, 1255, 1255, 1255, 4091, 1255, 1255, 1255, 1255, 3041, + 3041, 4091, 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, + 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, + 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3049, 3049, + 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3049, 3049, 3049, 3049, 3049, 4091, 3049, 3049, 3049, 3049, + 4091, 3049, 3049, 3049, 3049, 3049, 3049, 2741, 2741, 4091, + 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, + 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, + 2741, 2741, 2741, 2741, 2741, 2741, 2765, 2765, 2765, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 2765, 2765, 4091, 4091, 4091, 2765, 1513, 4091, + 4091, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + + 1513, 1513, 1513, 1513, 4091, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 4091, 1513, 1513, 1513, 1513, 2090, 4091, 4091, + 2090, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 2090, 2090, + 4091, 4091, 4091, 2090, 4091, 4091, 4091, 4091, 4091, 2090, + 2778, 2778, 4091, 2778, 2778, 2778, 2778, 2778, 2778, 2778, + 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, + 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2780, + 2780, 4091, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, + 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, + 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780, 3115, 3115, + + 4091, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, + 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, + 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3119, 3119, 4091, + 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, + 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, + 3119, 3119, 3119, 3119, 3119, 3119, 3121, 3121, 4091, 3121, + 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, + 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, + 3121, 3121, 3121, 3121, 3121, 3123, 3123, 4091, 3123, 3123, + 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, + + 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, + 3123, 3123, 3123, 3123, 3126, 3126, 4091, 3126, 3126, 3126, + 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, + 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, + 3126, 3126, 3126, 3128, 3128, 4091, 3128, 3128, 3128, 3128, + 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, + 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, + 3128, 3128, 3130, 3130, 4091, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + + 3130, 2802, 2802, 4091, 2802, 2802, 2802, 2802, 2802, 2802, + 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, + 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, + 3133, 3133, 4091, 3133, 3133, 3133, 3133, 3133, 3133, 3133, + 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3133, + 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3136, + 3136, 4091, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, + 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, + 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 2809, 2809, + 4091, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, + + 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, + 2809, 2809, 2809, 2809, 2809, 2809, 2809, 3147, 3147, 4091, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3149, 3149, 4091, 3149, + 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3149, 3149, 3151, 3151, 4091, 3151, 3151, + 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, + 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, + + 3151, 3151, 3151, 3151, 3153, 3153, 4091, 3153, 3153, 3153, + 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, + 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, + 3153, 3153, 3153, 2827, 2827, 4091, 2827, 2827, 2827, 2827, + 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, + 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, + 2827, 2827, 2831, 2831, 4091, 2831, 2831, 2831, 2831, 2831, + 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, + 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, + 2831, 3162, 3162, 4091, 3162, 3162, 3162, 3162, 3162, 3162, + + 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, + 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, + 2835, 2835, 4091, 2835, 2835, 2835, 2835, 2835, 2835, 2835, + 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835, + 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2837, + 2837, 4091, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, + 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, + 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2839, 2839, + 4091, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, + 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, + + 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2842, 2842, 4091, + 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, + 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, + 2842, 2842, 2842, 2842, 2842, 2842, 2844, 2844, 4091, 2844, + 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, + 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, + 2844, 2844, 2844, 2844, 2844, 2846, 2846, 4091, 2846, 2846, + 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, + 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, + 2846, 2846, 2846, 2846, 2849, 2849, 4091, 2849, 2849, 2849, + + 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, + 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, + 2849, 2849, 2849, 3168, 3168, 4091, 3168, 3168, 3168, 3168, + 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, + 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, + 3168, 3168, 2854, 2854, 4091, 2854, 2854, 2854, 2854, 2854, + 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, + 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, + 2854, 2858, 2858, 4091, 2858, 2858, 2858, 2858, 2858, 2858, + 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, + + 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, + 3174, 3174, 4091, 3174, 3174, 3174, 3174, 3174, 3174, 3174, + 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, + 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3178, + 3178, 4091, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, + 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, + 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3180, 3180, + 4091, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, + 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, + 3180, 3180, 3180, 3180, 3180, 3180, 3180, 2869, 2869, 4091, + + 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, + 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, + 2869, 2869, 2869, 2869, 2869, 2869, 2871, 2871, 4091, 2871, + 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, + 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, + 2871, 2871, 2871, 2871, 2871, 2873, 2873, 4091, 2873, 2873, + 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, + 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, + 2873, 2873, 2873, 2873, 2875, 2875, 4091, 2875, 2875, 2875, + 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, + + 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, + 2875, 2875, 2875, 3183, 3183, 4091, 3183, 3183, 3183, 3183, + 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183, + 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183, + 3183, 3183, 2443, 4091, 4091, 2443, 4091, 4091, 2443, 4091, + 2443, 2443, 2443, 2443, 2443, 4091, 4091, 4091, 2443, 4091, + 2443, 4091, 4091, 4091, 2443, 1540, 4091, 1540, 1540, 1540, + 1540, 1540, 4091, 4091, 4091, 1540, 4091, 1540, 3227, 3227, + 4091, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, - 3227, 2962, 2962, 3918, 2962, 2962, 2962, 2962, 2962, 2962, - 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, - 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, - 2964, 2964, 3918, 2964, 2964, 2964, 2964, 2964, 2964, 2964, - 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, - 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2966, - 2966, 3918, 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, - 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, - 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2969, 2969, - - 3918, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, - 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, - 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2971, 2971, 3918, - 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, - 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, - 2971, 2971, 2971, 2971, 2971, 2971, 2973, 2973, 3918, 2973, - 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973, - 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973, - 2973, 2973, 2973, 2973, 2973, 2976, 2976, 3918, 2976, 2976, - 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, - - 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, - 2976, 2976, 2976, 2976, 2979, 2979, 3918, 2979, 2979, 2979, - 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, - 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, - 2979, 2979, 2979, 3234, 3234, 3918, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3238, 3238, 3918, 3238, 3238, 3238, 3238, 3238, - 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, - 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, - - 3238, 3240, 3240, 3918, 3240, 3240, 3240, 3240, 3240, 3240, - 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, - 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, - 2990, 2990, 3918, 2990, 2990, 2990, 2990, 2990, 2990, 2990, - 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, - 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2992, - 2992, 3918, 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, - 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, - 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2994, 2994, - 3918, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, - - 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, - 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2996, 2996, 3918, - 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, - 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, - 2996, 2996, 2996, 2996, 2996, 2996, 3243, 3243, 3918, 3243, - 3243, 3243, 3243, 3243, 3243, 3243, 3243, 3243, 3243, 3243, - 3243, 3243, 3243, 3243, 3243, 3243, 3243, 3243, 3243, 3243, - 3243, 3243, 3243, 3243, 3243, 3245, 3245, 3918, 3245, 3245, - 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, - 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, - - 3245, 3245, 3245, 3245, 3248, 3248, 3918, 3248, 3248, 3248, - 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, - 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, - 3248, 3248, 3248, 3005, 3005, 3918, 3005, 3005, 3005, 3005, - 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, - 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, - 3005, 3005, 3250, 3250, 3918, 3250, 3250, 3250, 3250, 3250, - 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, - 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, - 3250, 3252, 3252, 3918, 3252, 3252, 3252, 3252, 3252, 3252, - - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3011, 3011, 3918, 3011, 3011, 3011, 3011, 3011, 3011, 3011, - 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, - 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3256, - 3256, 3918, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, - 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, - 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3017, 3017, - 3918, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, - 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, - - 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3021, 3021, 3918, - 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, - 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, - 3021, 3021, 3021, 3021, 3021, 3021, 3023, 3023, 3918, 3023, - 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, - 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, - 3023, 3023, 3023, 3023, 3023, 3026, 3026, 3918, 3026, 3026, - 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, - 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, - 3026, 3026, 3026, 3026, 2311, 3918, 3918, 2311, 3918, 3918, - - 2311, 3918, 2311, 2311, 2311, 2311, 2311, 3918, 3918, 3918, - 2311, 3918, 2311, 3918, 2311, 3918, 3918, 2311, 1471, 3918, - 1471, 1471, 1471, 1471, 1471, 3918, 3918, 3918, 1471, 3918, - 1471, 3918, 1471, 3066, 3066, 3918, 3066, 3066, 3066, 3066, - 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, - 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, - 3066, 3066, 3067, 3067, 3918, 3067, 3067, 3067, 3067, 3067, - 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, - 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, - 3067, 3296, 3296, 3918, 3296, 3296, 3296, 3296, 3296, 3296, - - 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, - 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, - 3099, 3918, 3918, 3918, 3918, 3918, 3099, 3918, 3099, 3099, - 3099, 3099, 3099, 3918, 3918, 3099, 3099, 3918, 3099, 3918, - 3099, 3918, 3918, 3099, 3328, 3918, 3918, 3328, 3918, 3918, - 3328, 3918, 3328, 3328, 3328, 3328, 3328, 3918, 3918, 3328, - 3328, 3918, 3328, 3918, 3328, 3918, 3918, 3328, 3330, 3918, - 3918, 3918, 3918, 3918, 3330, 3918, 3330, 3330, 3330, 3330, - 3330, 3918, 3918, 3330, 3330, 3918, 3918, 3918, 3330, 3918, - 3918, 3330, 1517, 3918, 3918, 1517, 3918, 3918, 1517, 3918, - - 1517, 1517, 1517, 1517, 1517, 3918, 3918, 1517, 1517, 3918, - 1517, 3918, 1517, 3918, 3918, 1517, 3334, 3334, 3918, 3334, - 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3334, - 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3334, - 3334, 3334, 3334, 3334, 3334, 1568, 1568, 3918, 1568, 1568, - 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, - 3918, 1568, 1568, 3918, 1568, 1568, 1568, 1568, 3918, 1568, - 1568, 1568, 1568, 1568, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 3918, 1641, 1641, - - 1641, 1641, 1641, 1085, 1085, 1085, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1085, 1085, - 1085, 3918, 3918, 1085, 3918, 3918, 3918, 1085, 3165, 3165, - 3918, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, - 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, - 3165, 3165, 3165, 3165, 3165, 3165, 3165, 1194, 3918, 3918, - 1194, 1194, 1194, 1194, 1194, 1194, 1194, 3918, 1194, 1194, - 1194, 1194, 3918, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - 3918, 1194, 1194, 1194, 1194, 1194, 1446, 3918, 3918, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - - 1446, 3918, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 3918, - 1446, 1446, 1446, 1446, 1446, 1980, 3918, 3918, 1980, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1980, 1980, 3918, 3918, - 3918, 1980, 3918, 3918, 3918, 1980, 3918, 3918, 1980, 3422, - 3422, 3918, 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, - 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, - 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3425, 3425, - 3918, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, - 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, - 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3227, 3227, 3918, + 3227, 3227, 3227, 3227, 3227, 3227, 3227, 2958, 4091, 4091, + 4091, 4091, 4091, 2958, 4091, 2958, 2958, 2958, 2958, 2958, + 4091, 4091, 2958, 2958, 4091, 4091, 4091, 4091, 4091, 2958, + 2959, 4091, 4091, 4091, 4091, 4091, 2959, 4091, 2959, 2959, + 2959, 2959, 2959, 4091, 4091, 2959, 2959, 4091, 2959, 4091, + 4091, 4091, 2959, 3261, 4091, 4091, 4091, 4091, 4091, 3261, + 4091, 3261, 3261, 3261, 3261, 3261, 4091, 4091, 3261, 3261, + 4091, 3261, 4091, 4091, 4091, 3261, 3263, 4091, 4091, 4091, + 4091, 4091, 3263, 4091, 3263, 3263, 3263, 3263, 3263, 4091, + 4091, 3263, 3263, 4091, 3263, 4091, 4091, 4091, 3263, 1588, + + 4091, 4091, 1588, 4091, 4091, 1588, 4091, 1588, 1588, 1588, + 1588, 1588, 4091, 4091, 1588, 1588, 4091, 1588, 4091, 4091, + 4091, 1588, 1643, 1643, 4091, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 4091, 1643, + 1643, 4091, 1643, 1643, 1643, 1643, 4091, 1643, 1643, 1643, + 1643, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 4091, 1716, 1716, 1716, 1716, + 1144, 1144, 1144, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 1144, 1144, 1144, 4091, + + 4091, 1144, 3327, 3327, 4091, 3327, 3327, 3327, 3327, 3327, + 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, + 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, + 3327, 1255, 4091, 4091, 1255, 1255, 1255, 1255, 1255, 1255, + 1255, 1255, 4091, 1255, 1255, 1255, 1255, 4091, 1255, 1255, + 1255, 1255, 1255, 1255, 1255, 4091, 1255, 1255, 1255, 1255, + 3041, 3041, 4091, 3041, 3041, 3041, 3041, 3041, 3041, 3041, + 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, + 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3332, + 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, + + 3332, 3332, 3332, 3332, 3332, 3332, 4091, 3332, 3332, 3332, + 3332, 4091, 3332, 3332, 3332, 3332, 3332, 3332, 1513, 4091, + 4091, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 4091, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 4091, 1513, 1513, 1513, 1513, 2090, 4091, 4091, + 2090, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 2090, 2090, + 4091, 4091, 4091, 2090, 4091, 4091, 4091, 4091, 4091, 2090, + 3115, 3115, 4091, 3115, 3115, 3115, 3115, 3115, 3115, 3115, + 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, + 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3389, + + 3389, 4091, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, + 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, + 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3119, 3119, + 4091, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, + 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, + 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3121, 3121, 4091, + 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, + 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, + 3121, 3121, 3121, 3121, 3121, 3121, 3123, 3123, 4091, 3123, + 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, + + 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, + 3123, 3123, 3123, 3123, 3123, 3126, 3126, 4091, 3126, 3126, + 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, + 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3126, + 3126, 3126, 3126, 3126, 3128, 3128, 4091, 3128, 3128, 3128, + 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, + 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, + 3128, 3128, 3128, 3130, 3130, 4091, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + + 3130, 3130, 3133, 3133, 4091, 3133, 3133, 3133, 3133, 3133, + 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3133, + 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3133, + 3133, 3136, 3136, 4091, 3136, 3136, 3136, 3136, 3136, 3136, + 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, + 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, + 3396, 3396, 4091, 3396, 3396, 3396, 3396, 3396, 3396, 3396, + 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, + 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3400, + 3400, 4091, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, + + 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, + 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3402, 3402, + 4091, 3402, 3402, 3402, 3402, 3402, 3402, 3402, 3402, 3402, + 3402, 3402, 3402, 3402, 3402, 3402, 3402, 3402, 3402, 3402, + 3402, 3402, 3402, 3402, 3402, 3402, 3402, 3147, 3147, 4091, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3149, 3149, 4091, 3149, + 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + + 3149, 3149, 3149, 3149, 3149, 3151, 3151, 4091, 3151, 3151, + 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, + 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, + 3151, 3151, 3151, 3151, 3153, 3153, 4091, 3153, 3153, 3153, + 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, + 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, + 3153, 3153, 3153, 3405, 3405, 4091, 3405, 3405, 3405, 3405, + 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, + 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, + 3405, 3405, 3407, 3407, 4091, 3407, 3407, 3407, 3407, 3407, + + 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, + 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, + 3407, 3410, 3410, 4091, 3410, 3410, 3410, 3410, 3410, 3410, + 3410, 3410, 3410, 3410, 3410, 3410, 3410, 3410, 3410, 3410, + 3410, 3410, 3410, 3410, 3410, 3410, 3410, 3410, 3410, 3410, + 3162, 3162, 4091, 3162, 3162, 3162, 3162, 3162, 3162, 3162, + 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, + 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3412, + 3412, 4091, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, + 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, + + 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3414, 3414, + 4091, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, + 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, + 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3168, 3168, 4091, + 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, + 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, + 3168, 3168, 3168, 3168, 3168, 3168, 3418, 3418, 4091, 3418, + 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, + 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, + 3418, 3418, 3418, 3418, 3418, 3174, 3174, 4091, 3174, 3174, + + 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, + 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, + 3174, 3174, 3174, 3174, 3178, 3178, 4091, 3178, 3178, 3178, + 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, + 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, + 3178, 3178, 3178, 3180, 3180, 4091, 3180, 3180, 3180, 3180, + 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, + 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, + 3180, 3180, 3183, 3183, 4091, 3183, 3183, 3183, 3183, 3183, + 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183, + + 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183, + 3183, 2443, 4091, 4091, 2443, 4091, 4091, 2443, 4091, 2443, + 2443, 2443, 2443, 2443, 4091, 4091, 4091, 2443, 4091, 2443, + 4091, 4091, 4091, 2443, 1540, 4091, 1540, 1540, 1540, 1540, + 1540, 4091, 4091, 4091, 1540, 4091, 1540, 3226, 3226, 4091, + 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, + 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, + 3226, 3226, 3226, 3226, 3226, 3226, 3227, 3227, 4091, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, - 3227, 3227, 3227, 3227, 3227, 3227, 3427, 3427, 3918, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3429, 3429, 3918, 3429, 3429, - 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, - 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, - 3429, 3429, 3429, 3429, 3234, 3234, 3918, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3238, 3238, 3918, 3238, 3238, 3238, 3238, - 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, - 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, - 3238, 3238, 3240, 3240, 3918, 3240, 3240, 3240, 3240, 3240, - 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, - 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, - 3240, 3243, 3243, 3918, 3243, 3243, 3243, 3243, 3243, 3243, - 3243, 3243, 3243, 3243, 3243, 3243, 3243, 3243, 3243, 3243, - 3243, 3243, 3243, 3243, 3243, 3243, 3243, 3243, 3243, 3243, - - 3245, 3245, 3918, 3245, 3245, 3245, 3245, 3245, 3245, 3245, - 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, - 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3248, - 3248, 3918, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, - 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, - 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3250, 3250, - 3918, 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, - 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, - 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3252, 3252, 3918, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3439, 3439, 3918, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3256, 3256, 3918, 3256, 3256, - 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, - 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, - 3256, 3256, 3256, 3256, 3442, 3442, 3918, 3442, 3442, 3442, - 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, - 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, - - 3442, 3442, 3442, 3446, 3446, 3918, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 2311, 3918, 3918, 2311, 3918, 3918, 2311, 3918, - 2311, 2311, 2311, 2311, 2311, 3918, 3918, 3918, 2311, 3918, - 2311, 3918, 2311, 3918, 3918, 2311, 1471, 3918, 1471, 1471, - 1471, 1471, 1471, 3918, 3918, 3918, 1471, 3918, 1471, 3918, - 1471, 3296, 3296, 3918, 3296, 3296, 3296, 3296, 3296, 3296, - 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, - 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, - - 3330, 3918, 3918, 3918, 3918, 3918, 3330, 3918, 3330, 3330, - 3330, 3330, 3330, 3918, 3918, 3330, 3330, 3918, 3918, 3918, - 3330, 3918, 3918, 3330, 3328, 3918, 3918, 3328, 3918, 3918, - 3328, 3918, 3328, 3328, 3328, 3328, 3328, 3918, 3918, 3328, - 3328, 3918, 3328, 3918, 3328, 3918, 3918, 3328, 2808, 3918, - 3918, 3918, 3918, 3918, 2808, 3918, 2808, 2808, 2808, 2808, - 2808, 3918, 3918, 2808, 2808, 3918, 2808, 3918, 2808, 3918, - 3918, 2808, 3497, 3918, 3918, 3497, 3918, 3918, 3497, 3918, - 3497, 3497, 3497, 3497, 3497, 3918, 3918, 3497, 3497, 3918, - 3918, 3918, 3497, 3918, 3918, 3497, 1517, 3918, 3918, 1517, - - 3918, 3918, 1517, 3918, 1517, 1517, 1517, 1517, 1517, 3918, - 3918, 1517, 1517, 3918, 1517, 3918, 1517, 3918, 3918, 1517, - 3334, 3334, 3918, 3334, 3334, 3334, 3334, 3334, 3334, 3334, - 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3334, - 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3334, 1568, - 1568, 3918, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, - 1568, 1568, 1568, 1568, 3918, 1568, 1568, 3918, 1568, 1568, - 1568, 1568, 3918, 1568, 1568, 1568, 1568, 1568, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - - 1641, 3918, 1641, 1641, 1641, 1641, 1641, 3510, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3510, 3918, 3510, 3918, 3918, 3918, 3918, 3510, 3918, 3918, - 3918, 3510, 1085, 1085, 1085, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 1085, 1085, 1085, - 3918, 3918, 1085, 3918, 3918, 3918, 1085, 1194, 3918, 3918, - 1194, 1194, 1194, 1194, 1194, 1194, 1194, 3918, 1194, 1194, - 1194, 1194, 3918, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - 3918, 1194, 1194, 1194, 1194, 1194, 3560, 3560, 3560, 3560, - 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, - - 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, - 3560, 3560, 3560, 3560, 3560, 1446, 3918, 3918, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 3918, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 3918, 1446, - 1446, 1446, 1446, 1446, 1980, 3918, 3918, 1980, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 1980, 1980, 3918, 3918, 3918, - 1980, 3918, 3918, 3918, 1980, 3918, 3918, 1980, 3422, 3422, - 3918, 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, - 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, - 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3425, 3425, 3918, - - 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, - 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, - 3425, 3425, 3425, 3425, 3425, 3425, 3427, 3427, 3918, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3429, 3429, 3918, 3429, 3429, - 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, - 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, - 3429, 3429, 3429, 3429, 3571, 3571, 3918, 3571, 3571, 3571, - 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, - - 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, - 3571, 3571, 3571, 3575, 3575, 3918, 3575, 3575, 3575, 3575, - 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, - 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, - 3575, 3575, 3577, 3577, 3918, 3577, 3577, 3577, 3577, 3577, - 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, - 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, - 3577, 3439, 3439, 3918, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - - 3442, 3442, 3918, 3442, 3442, 3442, 3442, 3442, 3442, 3442, - 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, - 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3580, - 3580, 3918, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, - 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, - 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3446, 3446, - 3918, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3586, 3586, 3586, - 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, - 3586, 3586, 3586, 3918, 3586, 3586, 3586, 3586, 3918, 3586, - 3586, 3586, 3918, 3586, 3586, 3586, 3587, 3587, 3587, 3587, - 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, - 3587, 3587, 3918, 3587, 3587, 3587, 3587, 3918, 3587, 3587, - 3587, 3918, 3587, 3587, 3587, 2311, 3918, 3918, 2311, 3918, - 3918, 2311, 3918, 2311, 2311, 2311, 2311, 2311, 3918, 3918, - 3918, 2311, 3918, 2311, 3918, 2311, 3918, 3918, 2311, 1471, - 3918, 1471, 1471, 1471, 1471, 1471, 3918, 3918, 3918, 1471, - 3918, 1471, 3918, 1471, 3328, 3918, 3918, 3328, 3918, 3918, - 3328, 3918, 3328, 3328, 3328, 3328, 3328, 3918, 3918, 3328, - - 3328, 3918, 3328, 3918, 3328, 3918, 3918, 3328, 3497, 3918, - 3918, 3497, 3918, 3918, 3497, 3918, 3497, 3497, 3497, 3497, - 3497, 3918, 3918, 3497, 3497, 3918, 3918, 3918, 3497, 3918, - 3918, 3497, 2807, 3918, 3918, 3918, 3918, 3918, 2807, 3918, - 2807, 2807, 2807, 2807, 2807, 3918, 3918, 2807, 2807, 3918, - 3918, 3918, 2807, 3918, 3918, 2807, 1568, 1568, 1568, 1568, - 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, - 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, - 1568, 1568, 1568, 1568, 1568, 3634, 3634, 3634, 3634, 3634, - 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, - - 3634, 3918, 3634, 3634, 3634, 3634, 3918, 3634, 3634, 3634, - 3918, 3634, 3634, 3634, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 3918, 1641, 1641, - 1641, 1641, 1641, 3639, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3639, 3918, 3639, 3918, - 3918, 3918, 3918, 3639, 3918, 3918, 3918, 3639, 1085, 1085, - 1085, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 1085, 1085, 1085, 3918, 3918, 1085, 3918, - 3918, 3918, 1085, 3667, 3667, 3667, 3667, 3667, 3667, 3667, - - 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3918, - 3667, 3667, 3667, 3667, 3918, 3667, 3667, 3667, 3918, 3667, - 3667, 3667, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, - 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, - 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, - 3560, 1446, 3918, 3918, 1446, 1446, 1446, 1446, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 3918, 1446, 1446, 1446, - 1446, 1446, 1446, 1446, 3918, 1446, 1446, 1446, 1446, 1446, - 1980, 3918, 3918, 1980, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 1980, 1980, 3918, 3918, 3918, 1980, 3918, 3918, 3918, - - 1980, 3918, 3918, 1980, 3676, 3676, 3918, 3676, 3676, 3676, - 3676, 3676, 3676, 3676, 3676, 3676, 3676, 3676, 3676, 3676, - 3676, 3676, 3676, 3676, 3676, 3676, 3676, 3676, 3676, 3676, - 3676, 3676, 3676, 3571, 3571, 3918, 3571, 3571, 3571, 3571, - 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, - 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, - 3571, 3571, 3679, 3679, 3918, 3679, 3679, 3679, 3679, 3679, - 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, - 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, - 3679, 3575, 3575, 3918, 3575, 3575, 3575, 3575, 3575, 3575, - - 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, - 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, - 3577, 3577, 3918, 3577, 3577, 3577, 3577, 3577, 3577, 3577, - 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, - 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3580, - 3580, 3918, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, - 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, - 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3688, 3688, - 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, - 3688, 3688, 3688, 3688, 3918, 3688, 3688, 3688, 3688, 3918, - - 3688, 3688, 3688, 3918, 3688, 3688, 3688, 3693, 3693, 3693, - 3693, 3693, 3693, 3693, 3693, 3693, 3693, 3693, 3693, 3693, - 3693, 3693, 3693, 3918, 3693, 3693, 3693, 3693, 3918, 3693, - 3693, 3693, 3918, 3693, 3693, 3693, 2311, 3918, 3918, 2311, - 3918, 3918, 2311, 3918, 2311, 2311, 2311, 2311, 2311, 3918, - 3918, 3918, 2311, 3918, 2311, 3918, 2311, 3918, 3918, 2311, - 1471, 1471, 1471, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 1471, 3918, 1471, 1471, 1471, 1471, 1471, 3918, 3918, 3918, - 1471, 3918, 1471, 3918, 1471, 1982, 3918, 1982, 1982, 1982, - 1982, 1982, 3918, 3918, 3918, 1982, 3918, 1982, 3918, 1982, - - 3328, 3918, 3918, 3328, 3918, 3918, 3328, 3918, 3328, 3328, - 3328, 3328, 3328, 3918, 3918, 3328, 3328, 3918, 3328, 3918, - 3328, 3918, 3918, 3328, 3330, 3918, 3918, 3918, 3918, 3918, - 3330, 3918, 3330, 3330, 3330, 3330, 3330, 3918, 3918, 3330, - 3330, 3918, 3918, 3918, 3330, 3918, 3918, 3330, 3621, 3621, - 3918, 3918, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, - 3918, 3621, 3918, 3621, 3621, 3621, 3621, 3621, 3621, 3621, - 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3713, 3918, 3918, - 3918, 3918, 3713, 3918, 3918, 3713, 3713, 3918, 3713, 3918, - 3918, 3918, 3918, 3713, 3713, 3713, 3918, 3713, 3918, 3918, - - 3918, 3713, 3624, 3624, 3918, 3918, 3624, 3624, 3624, 3624, - 3624, 3624, 3624, 3624, 3918, 3624, 3624, 3624, 3624, 3624, - 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, - 3624, 1568, 1568, 3918, 1568, 1568, 1568, 1568, 1568, 1568, - 1568, 1568, 1568, 1568, 1568, 1568, 3918, 1568, 1568, 3918, - 1568, 1568, 1568, 1568, 3918, 1568, 1568, 1568, 1568, 1568, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 3918, 1641, 1641, 1641, 1641, 1641, 1085, - 1085, 1085, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918, 3918, 1085, 1085, 1085, 3918, 3918, 1085, - 3918, 3918, 3918, 1085, 3738, 3738, 3738, 3738, 3738, 3738, - 3738, 3738, 3738, 3738, 3738, 3738, 3738, 3738, 3738, 3738, - 3918, 3738, 3738, 3738, 3738, 3918, 3738, 3738, 3738, 3918, - 3738, 3738, 3738, 3739, 3739, 3918, 3739, 3739, 3739, 3739, - 3739, 3739, 3739, 3739, 3739, 3739, 3739, 3739, 3739, 3739, - 3739, 3739, 3739, 3739, 3739, 3739, 3739, 3739, 3739, 3739, - 3739, 3739, 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, - 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3918, 3741, - 3741, 3741, 3741, 3918, 3741, 3741, 3741, 3918, 3741, 3741, - - 3741, 1446, 3918, 3918, 1446, 1446, 1446, 1446, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 3918, 1446, 1446, 1446, - 1446, 1446, 1446, 1446, 3918, 1446, 1446, 1446, 1446, 1446, - 1980, 3918, 3918, 1980, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 1980, 1980, 3918, 3918, 3918, 1980, 3918, 3918, 3918, - 1980, 3918, 3918, 1980, 3676, 3676, 3918, 3676, 3676, 3676, - 3676, 3676, 3676, 3676, 3676, 3676, 3676, 3676, 3676, 3676, - 3676, 3676, 3676, 3676, 3676, 3676, 3676, 3676, 3676, 3676, - 3676, 3676, 3676, 3679, 3679, 3918, 3679, 3679, 3679, 3679, - 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, - - 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, - 3679, 3679, 3750, 3750, 3918, 3750, 3750, 3750, 3750, 3750, - 3750, 3750, 3750, 3750, 3750, 3750, 3750, 3750, 3750, 3750, - 3750, 3750, 3750, 3750, 3750, 3750, 3750, 3750, 3750, 3750, - 3750, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, - 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3918, 3754, 3754, - 3754, 3754, 3918, 3754, 3754, 3754, 3918, 3754, 3754, 3754, - 2311, 3918, 3918, 2311, 3918, 3918, 2311, 3918, 2311, 2311, - 2311, 2311, 2311, 3918, 3918, 3918, 2311, 3918, 2311, 3918, - 2311, 3918, 3918, 2311, 1471, 3918, 1471, 1471, 1471, 1471, - - 1471, 3918, 3918, 3918, 1471, 3918, 1471, 3918, 1471, 1982, - 3918, 1982, 1982, 1982, 1982, 1982, 3918, 3918, 3918, 1982, - 3918, 1982, 3918, 1982, 3328, 3918, 3918, 3328, 3918, 3918, - 3328, 3918, 3328, 3328, 3328, 3328, 3328, 3918, 3918, 3328, - 3328, 3918, 3328, 3918, 3328, 3918, 3918, 3328, 3497, 3918, - 3918, 3497, 3918, 3918, 3497, 3918, 3497, 3497, 3497, 3497, - 3497, 3918, 3918, 3497, 3497, 3918, 3918, 3918, 3497, 3918, - 3918, 3497, 3771, 3918, 3918, 3918, 3918, 3771, 3918, 3918, - 3771, 3771, 3918, 3771, 3918, 3918, 3918, 3918, 3918, 3771, - 3771, 3918, 3771, 3918, 3918, 3918, 3771, 3713, 3918, 3918, - - 3918, 3918, 3713, 3918, 3918, 3713, 3713, 3918, 3713, 3918, - 3918, 3918, 3918, 3713, 3713, 3713, 3918, 3713, 3918, 3918, - 3918, 3713, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 3918, 1641, 1641, 1641, 1641, - 1641, 1085, 1085, 1085, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 1085, 1085, 1085, 3918, - 3918, 1085, 3918, 3918, 3918, 1085, 3739, 3739, 3918, 3739, - 3739, 3739, 3739, 3739, 3739, 3739, 3739, 3739, 3739, 3739, - 3739, 3739, 3739, 3739, 3739, 3739, 3739, 3739, 3739, 3739, - - 3739, 3739, 3739, 3739, 3739, 1446, 3918, 3918, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 3918, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 3918, 1446, - 1446, 1446, 1446, 1446, 1980, 3918, 3918, 1980, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 1980, 1980, 3918, 3918, 3918, - 1980, 3918, 3918, 3918, 1980, 3918, 3918, 1980, 3796, 3796, - 3918, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, - 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, - 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3621, 3621, 3918, - 3918, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3918, - - 3621, 3918, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, - 3621, 3621, 3621, 3621, 3621, 3621, 3813, 3918, 3918, 3918, - 3918, 3813, 3918, 3918, 3813, 3813, 3918, 3813, 3918, 3918, - 3918, 3918, 3918, 3813, 3813, 3918, 3813, 3918, 3918, 3918, - 3813, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, - 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3918, 3829, 3829, - 3829, 3829, 3918, 3829, 3829, 3829, 3918, 3829, 3829, 3829, - 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, - 3840, 3840, 3840, 3840, 3840, 3840, 3918, 3840, 3840, 3840, - 3840, 3918, 3840, 3840, 3840, 3918, 3840, 3840, 3840, 3844, + 3227, 3227, 3227, 3227, 3227, 3459, 3459, 4091, 3459, 3459, + 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, + 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, + 3459, 3459, 3459, 3459, 3261, 4091, 4091, 4091, 4091, 4091, + 3261, 4091, 3261, 3261, 3261, 3261, 3261, 4091, 4091, 3261, + 3261, 4091, 3261, 4091, 4091, 4091, 3261, 3492, 4091, 4091, + 3492, 4091, 4091, 3492, 4091, 3492, 3492, 3492, 3492, 3492, + 4091, 4091, 3492, 3492, 4091, 3492, 4091, 4091, 4091, 3492, + 3494, 4091, 4091, 4091, 4091, 4091, 3494, 4091, 3494, 3494, + 3494, 3494, 3494, 4091, 4091, 3494, 3494, 4091, 4091, 4091, + + 4091, 4091, 3494, 1588, 4091, 4091, 1588, 4091, 4091, 1588, + 4091, 1588, 1588, 1588, 1588, 1588, 4091, 4091, 1588, 1588, + 4091, 1588, 4091, 4091, 4091, 1588, 3498, 3498, 4091, 3498, + 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, + 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, + 3498, 3498, 3498, 3498, 3498, 1643, 1643, 4091, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 4091, 1643, 1643, 4091, 1643, 1643, 1643, 1643, 4091, + 1643, 1643, 1643, 1643, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 4091, 1716, + 1716, 1716, 1716, 1144, 1144, 1144, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1144, + 1144, 1144, 4091, 4091, 1144, 3327, 3327, 4091, 3327, 3327, + 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, + 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, + 3327, 3327, 3327, 3327, 1255, 4091, 4091, 1255, 1255, 1255, + 1255, 1255, 1255, 1255, 1255, 4091, 1255, 1255, 1255, 1255, + 4091, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 4091, 1255, + 1255, 1255, 1255, 1513, 4091, 4091, 1513, 1513, 1513, 1513, + + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 4091, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 4091, 1513, 1513, + 1513, 1513, 2090, 4091, 4091, 2090, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 2090, 2090, 4091, 4091, 4091, 2090, 4091, + 4091, 4091, 4091, 4091, 2090, 3586, 3586, 4091, 3586, 3586, + 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, + 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, + 3586, 3586, 3586, 3586, 3589, 3589, 4091, 3589, 3589, 3589, + 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, + 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, + + 3589, 3589, 3589, 3389, 3389, 4091, 3389, 3389, 3389, 3389, + 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, + 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, + 3389, 3389, 3591, 3591, 4091, 3591, 3591, 3591, 3591, 3591, + 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, + 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, + 3591, 3593, 3593, 4091, 3593, 3593, 3593, 3593, 3593, 3593, + 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, + 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, + 3396, 3396, 4091, 3396, 3396, 3396, 3396, 3396, 3396, 3396, + + 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, + 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3400, + 3400, 4091, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, + 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, + 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3402, 3402, + 4091, 3402, 3402, 3402, 3402, 3402, 3402, 3402, 3402, 3402, + 3402, 3402, 3402, 3402, 3402, 3402, 3402, 3402, 3402, 3402, + 3402, 3402, 3402, 3402, 3402, 3402, 3402, 3405, 3405, 4091, + 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, + 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, + + 3405, 3405, 3405, 3405, 3405, 3405, 3407, 3407, 4091, 3407, + 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, + 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, + 3407, 3407, 3407, 3407, 3407, 3410, 3410, 4091, 3410, 3410, + 3410, 3410, 3410, 3410, 3410, 3410, 3410, 3410, 3410, 3410, + 3410, 3410, 3410, 3410, 3410, 3410, 3410, 3410, 3410, 3410, + 3410, 3410, 3410, 3410, 3412, 3412, 4091, 3412, 3412, 3412, + 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, + 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, + 3412, 3412, 3412, 3414, 3414, 4091, 3414, 3414, 3414, 3414, + + 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, + 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, + 3414, 3414, 3603, 3603, 4091, 3603, 3603, 3603, 3603, 3603, + 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, + 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, + 3603, 3418, 3418, 4091, 3418, 3418, 3418, 3418, 3418, 3418, + 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, + 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, + 3606, 3606, 4091, 3606, 3606, 3606, 3606, 3606, 3606, 3606, + 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, + + 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3610, + 3610, 4091, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, + 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, + 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 2443, 4091, + 4091, 2443, 4091, 4091, 2443, 4091, 2443, 2443, 2443, 2443, + 2443, 4091, 4091, 4091, 2443, 4091, 2443, 4091, 4091, 4091, + 2443, 1540, 4091, 1540, 1540, 1540, 1540, 1540, 4091, 4091, + 4091, 1540, 4091, 1540, 3459, 3459, 4091, 3459, 3459, 3459, + 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, + 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, + + 3459, 3459, 3459, 3494, 4091, 4091, 4091, 4091, 4091, 3494, + 4091, 3494, 3494, 3494, 3494, 3494, 4091, 4091, 3494, 3494, + 4091, 4091, 4091, 4091, 4091, 3494, 3492, 4091, 4091, 3492, + 4091, 4091, 3492, 4091, 3492, 3492, 3492, 3492, 3492, 4091, + 4091, 3492, 3492, 4091, 3492, 4091, 4091, 4091, 3492, 2959, + 4091, 4091, 4091, 4091, 4091, 2959, 4091, 2959, 2959, 2959, + 2959, 2959, 4091, 4091, 2959, 2959, 4091, 2959, 4091, 4091, + 4091, 2959, 3663, 4091, 4091, 3663, 4091, 4091, 3663, 4091, + 3663, 3663, 3663, 3663, 3663, 4091, 4091, 3663, 3663, 4091, + 4091, 4091, 4091, 4091, 3663, 1588, 4091, 4091, 1588, 4091, + + 4091, 1588, 4091, 1588, 1588, 1588, 1588, 1588, 4091, 4091, + 1588, 1588, 4091, 1588, 4091, 4091, 4091, 1588, 3498, 3498, + 4091, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, + 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, + 3498, 3498, 3498, 3498, 3498, 3498, 3498, 1643, 1643, 4091, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 4091, 1643, 1643, 4091, 1643, 1643, 1643, + 1643, 4091, 1643, 1643, 1643, 1643, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + + 4091, 1716, 1716, 1716, 1716, 1144, 1144, 1144, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 1144, 1144, 1144, 4091, 4091, 1144, 1255, 4091, 4091, + 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 4091, 1255, + 1255, 1255, 1255, 4091, 1255, 1255, 1255, 1255, 1255, 1255, + 1255, 4091, 1255, 1255, 1255, 1255, 3726, 3726, 3726, 3726, + 3726, 3726, 3726, 3726, 3726, 3726, 3726, 3726, 3726, 3726, + 3726, 3726, 3726, 3726, 3726, 3726, 3726, 3726, 3726, 3726, + 3726, 3726, 3726, 3726, 3726, 1513, 4091, 4091, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + + 1513, 4091, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 4091, + 1513, 1513, 1513, 1513, 2090, 4091, 4091, 2090, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 2090, 2090, 4091, 4091, 4091, + 2090, 4091, 4091, 4091, 4091, 4091, 2090, 3586, 3586, 4091, + 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, + 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, + 3586, 3586, 3586, 3586, 3586, 3586, 3589, 3589, 4091, 3589, + 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, + 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, + 3589, 3589, 3589, 3589, 3589, 3591, 3591, 4091, 3591, 3591, + + 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, + 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, + 3591, 3591, 3591, 3591, 3593, 3593, 4091, 3593, 3593, 3593, + 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, + 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, + 3593, 3593, 3593, 3737, 3737, 4091, 3737, 3737, 3737, 3737, + 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, + 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, + 3737, 3737, 3741, 3741, 4091, 3741, 3741, 3741, 3741, 3741, + 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, + + 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, + 3741, 3743, 3743, 4091, 3743, 3743, 3743, 3743, 3743, 3743, + 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, + 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, + 3603, 3603, 4091, 3603, 3603, 3603, 3603, 3603, 3603, 3603, + 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, + 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3606, + 3606, 4091, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, + 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, + 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3746, 3746, + + 4091, 3746, 3746, 3746, 3746, 3746, 3746, 3746, 3746, 3746, + 3746, 3746, 3746, 3746, 3746, 3746, 3746, 3746, 3746, 3746, + 3746, 3746, 3746, 3746, 3746, 3746, 3746, 3610, 3610, 4091, + 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, + 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, + 3610, 3610, 3610, 3610, 3610, 3610, 3752, 3752, 3752, 3752, + 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, + 3752, 3752, 3752, 4091, 3752, 3752, 3752, 3752, 4091, 3752, + 3752, 3752, 3752, 3752, 3752, 3753, 3753, 3753, 3753, 3753, + 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, + + 3753, 3753, 4091, 3753, 3753, 3753, 3753, 4091, 3753, 3753, + 3753, 3753, 3753, 3753, 2443, 4091, 4091, 2443, 4091, 4091, + 2443, 4091, 2443, 2443, 2443, 2443, 2443, 4091, 4091, 4091, + 2443, 4091, 2443, 4091, 4091, 4091, 2443, 1540, 4091, 1540, + 1540, 1540, 1540, 1540, 4091, 4091, 4091, 1540, 4091, 1540, + 3492, 4091, 4091, 3492, 4091, 4091, 3492, 4091, 3492, 3492, + 3492, 3492, 3492, 4091, 4091, 3492, 3492, 4091, 3492, 4091, + 4091, 4091, 3492, 3663, 4091, 4091, 3663, 4091, 4091, 3663, + 4091, 3663, 3663, 3663, 3663, 3663, 4091, 4091, 3663, 3663, + 4091, 4091, 4091, 4091, 4091, 3663, 2958, 4091, 4091, 4091, + + 4091, 4091, 2958, 4091, 2958, 2958, 2958, 2958, 2958, 4091, + 4091, 2958, 2958, 4091, 4091, 4091, 4091, 4091, 2958, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 3802, 3802, + 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, + 3802, 3802, 3802, 3802, 3802, 4091, 3802, 3802, 3802, 3802, + 4091, 3802, 3802, 3802, 3802, 3802, 3802, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + + 1716, 4091, 1716, 1716, 1716, 1716, 1144, 1144, 1144, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 1144, 1144, 1144, 4091, 4091, 1144, 3835, 3835, + 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, + 3835, 3835, 3835, 3835, 3835, 4091, 3835, 3835, 3835, 3835, + 4091, 3835, 3835, 3835, 3835, 3835, 3835, 3726, 3726, 3726, + 3726, 3726, 3726, 3726, 3726, 3726, 3726, 3726, 3726, 3726, + 3726, 3726, 3726, 3726, 3726, 3726, 3726, 3726, 3726, 3726, + 3726, 3726, 3726, 3726, 3726, 3726, 1513, 4091, 4091, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + + 1513, 1513, 4091, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 4091, 1513, 1513, 1513, 1513, 2090, 4091, 4091, 2090, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 2090, 2090, 4091, 4091, + 4091, 2090, 4091, 4091, 4091, 4091, 4091, 2090, 3844, 3844, + 4091, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, + 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, + 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3737, 3737, 4091, + 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, + 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, + 3737, 3737, 3737, 3737, 3737, 3737, 3847, 3847, 4091, 3847, + + 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, + 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, + 3847, 3847, 3847, 3847, 3847, 3741, 3741, 4091, 3741, 3741, + 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, + 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, 3741, + 3741, 3741, 3741, 3741, 3743, 3743, 4091, 3743, 3743, 3743, + 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, + 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, + 3743, 3743, 3743, 3746, 3746, 4091, 3746, 3746, 3746, 3746, + 3746, 3746, 3746, 3746, 3746, 3746, 3746, 3746, 3746, 3746, + + 3746, 3746, 3746, 3746, 3746, 3746, 3746, 3746, 3746, 3746, + 3746, 3746, 3856, 3856, 3856, 3856, 3856, 3856, 3856, 3856, + 3856, 3856, 3856, 3856, 3856, 3856, 3856, 3856, 3856, 4091, + 3856, 3856, 3856, 3856, 4091, 3856, 3856, 3856, 3856, 3856, + 3856, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, + 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 4091, 3862, + 3862, 3862, 3862, 4091, 3862, 3862, 3862, 3862, 3862, 3862, + 2443, 4091, 4091, 2443, 4091, 4091, 2443, 4091, 2443, 2443, + 2443, 2443, 2443, 4091, 4091, 4091, 2443, 4091, 2443, 4091, + 4091, 4091, 2443, 1540, 1540, 1540, 4091, 4091, 4091, 4091, + + 4091, 4091, 4091, 4091, 1540, 4091, 1540, 1540, 1540, 1540, + 1540, 4091, 4091, 4091, 1540, 4091, 1540, 2092, 4091, 2092, + 2092, 2092, 2092, 2092, 4091, 4091, 4091, 2092, 4091, 2092, + 3492, 4091, 4091, 3492, 4091, 4091, 3492, 4091, 3492, 3492, + 3492, 3492, 3492, 4091, 4091, 3492, 3492, 4091, 3492, 4091, + 4091, 4091, 3492, 3494, 4091, 4091, 4091, 4091, 4091, 3494, + 4091, 3494, 3494, 3494, 3494, 3494, 4091, 4091, 3494, 3494, + 4091, 4091, 4091, 4091, 4091, 3494, 3789, 3789, 4091, 4091, + 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 4091, + 3789, 4091, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, + + 3789, 3789, 3789, 3789, 3789, 3883, 4091, 4091, 4091, 4091, + 4091, 3883, 4091, 4091, 3883, 3883, 4091, 3883, 4091, 4091, + 4091, 4091, 3883, 3883, 3883, 4091, 3883, 3792, 3792, 4091, + 4091, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, + 4091, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, + 3792, 3792, 3792, 3792, 3792, 3792, 3793, 3793, 4091, 4091, + 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 4091, + 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, + 3793, 3793, 3793, 3793, 3793, 3887, 3887, 4091, 4091, 3887, + 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 4091, 3887, + 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, + 3887, 3887, 3887, 3887, 1643, 1643, 4091, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 4091, 1643, 1643, 4091, 1643, 1643, 1643, 1643, 4091, 1643, + 1643, 1643, 1643, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 4091, 1716, 1716, + 1716, 1716, 1144, 1144, 1144, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 1144, 1144, + 1144, 4091, 4091, 1144, 3908, 3908, 3908, 3908, 3908, 3908, + + 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3908, 4091, 3908, 3908, 3908, 3908, 4091, 3908, 3908, 3908, + 3908, 3908, 3908, 3909, 3909, 4091, 3909, 3909, 3909, 3909, + 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, + 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, + 3909, 3909, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, + 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 4091, + 3911, 3911, 3911, 3911, 4091, 3911, 3911, 3911, 3911, 3911, + 3911, 1513, 4091, 4091, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 4091, 1513, 1513, + + 1513, 1513, 1513, 1513, 1513, 4091, 1513, 1513, 1513, 1513, + 2090, 4091, 4091, 2090, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 2090, 2090, 4091, 4091, 4091, 2090, 4091, 4091, 4091, + 4091, 4091, 2090, 3844, 3844, 4091, 3844, 3844, 3844, 3844, + 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, - 3844, 3844, 3844, 3844, 3844, 3918, 3844, 3844, 3844, 3844, - 3918, 3844, 3844, 3844, 3918, 3844, 3844, 3844, 3864, 3864, - 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, - 3864, 3864, 3864, 3864, 3918, 3864, 3864, 3864, 3864, 3918, - 3864, 3864, 3864, 3918, 3864, 3864, 3864, 3855, 3855, 3918, - 3918, 3855, 3855, 3855, 3855, 3855, 3855, 3855, 3855, 3918, - 3855, 3855, 3855, 3855, 3855, 3855, 3855, 3855, 3855, 3855, - 3855, 3855, 3855, 3855, 3855, 3855, 3858, 3858, 3918, 3918, - 3858, 3858, 3858, 3858, 3858, 3858, 3858, 3858, 3918, 3858, - - 3858, 3858, 3858, 3858, 3858, 3858, 3858, 3858, 3858, 3858, - 3858, 3858, 3858, 3858, 3858, 281, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918 + 3844, 3844, 3847, 3847, 4091, 3847, 3847, 3847, 3847, 3847, + 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, + 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, + 3847, 3920, 3920, 4091, 3920, 3920, 3920, 3920, 3920, 3920, + + 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, + 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, + 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, + 3926, 3926, 3926, 3926, 3926, 3926, 3926, 4091, 3926, 3926, + 3926, 3926, 4091, 3926, 3926, 3926, 3926, 3926, 3926, 2443, + 4091, 4091, 2443, 4091, 4091, 2443, 4091, 2443, 2443, 2443, + 2443, 2443, 4091, 4091, 4091, 2443, 4091, 2443, 4091, 4091, + 4091, 2443, 1540, 4091, 1540, 1540, 1540, 1540, 1540, 4091, + 4091, 4091, 1540, 4091, 1540, 2092, 4091, 2092, 2092, 2092, + 2092, 2092, 4091, 4091, 4091, 2092, 4091, 2092, 3492, 4091, + + 4091, 3492, 4091, 4091, 3492, 4091, 3492, 3492, 3492, 3492, + 3492, 4091, 4091, 3492, 3492, 4091, 3492, 4091, 4091, 4091, + 3492, 3663, 4091, 4091, 3663, 4091, 4091, 3663, 4091, 3663, + 3663, 3663, 3663, 3663, 4091, 4091, 3663, 3663, 4091, 4091, + 4091, 4091, 4091, 3663, 3944, 4091, 4091, 4091, 4091, 4091, + 3944, 4091, 4091, 3944, 3944, 4091, 3944, 4091, 4091, 4091, + 4091, 4091, 3944, 3944, 4091, 3944, 3883, 4091, 4091, 4091, + 4091, 4091, 3883, 4091, 4091, 3883, 3883, 4091, 3883, 4091, + 4091, 4091, 4091, 3883, 3883, 3883, 4091, 3883, 3887, 3887, + 4091, 4091, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, + + 3887, 4091, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, + 3887, 3887, 3887, 3887, 3887, 3887, 3887, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 4091, 1716, 1716, 1716, 1716, 1144, 1144, 1144, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 1144, 1144, 1144, 4091, 4091, 1144, 3909, 3909, + 4091, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, + 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, + 3909, 3909, 3909, 3909, 3909, 3909, 3909, 1513, 4091, 4091, + + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 4091, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 4091, 1513, 1513, 1513, 1513, 2090, 4091, 4091, 2090, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 2090, 2090, 4091, + 4091, 4091, 2090, 4091, 4091, 4091, 4091, 4091, 2090, 3969, + 3969, 4091, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, + 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, + 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3789, 3789, + 4091, 4091, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, + 3789, 4091, 3789, 4091, 3789, 3789, 3789, 3789, 3789, 3789, + + 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3986, 4091, 4091, + 4091, 4091, 4091, 3986, 4091, 4091, 3986, 3986, 4091, 3986, + 4091, 4091, 4091, 4091, 4091, 3986, 3986, 4091, 3986, 4002, + 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, + 4002, 4002, 4002, 4002, 4002, 4002, 4091, 4002, 4002, 4002, + 4002, 4091, 4002, 4002, 4002, 4002, 4002, 4002, 4013, 4013, + 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, + 4013, 4013, 4013, 4013, 4013, 4091, 4013, 4013, 4013, 4013, + 4091, 4013, 4013, 4013, 4013, 4013, 4013, 4017, 4017, 4017, + 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, + + 4017, 4017, 4017, 4017, 4091, 4017, 4017, 4017, 4017, 4091, + 4017, 4017, 4017, 4017, 4017, 4017, 4037, 4037, 4037, 4037, + 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, + 4037, 4037, 4037, 4091, 4037, 4037, 4037, 4037, 4091, 4037, + 4037, 4037, 4037, 4037, 4037, 4028, 4028, 4091, 4091, 4028, + 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4091, 4028, + 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, + 4028, 4028, 4028, 4028, 4031, 4031, 4091, 4091, 4031, 4031, + 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4091, 4031, 4031, + 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, + + 4031, 4031, 4031, 293, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091 + } ; -static yyconst short int yy_chk[34104] = +static yyconst short int yy_chk[34292] = { 0, - 0, 1, 0, 1, 1, 2, 307, 2, 2, 307, - 308, 308, 308, 308, 0, 347, 286, 292, 299, 347, - 1, 286, 292, 299, 2, 3, 3, 3, 3, 3, + 0, 1, 0, 1, 1, 2, 0, 2, 2, 312, + 312, 319, 340, 0, 319, 340, 298, 304, 311, 0, + 1, 298, 304, 311, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -5990,15 +6102,15 @@ static yyconst short int yy_chk[34104] = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 5, 811, 5, 5, 6, 811, 6, 6, - 7, 7, 7, 7, 7, 5, 7, 464, 464, 6, - 9, 5, 9, 9, 10, 6, 10, 10, 2180, 7, - 8, 8, 8, 8, 8, 493, 8, 493, 15, 9, - 15, 15, 16, 10, 16, 16, 483, 483, 1713, 8, - 35, 148, 35, 35, 148, 318, 63, 15, 63, 63, - 318, 16, 35, 35, 328, 7, 15, 328, 15, 35, - 16, 334, 16, 1713, 335, 63, 334, 335, 148, 350, - 368, 368, 368, 368, 350, 8, 11, 11, 11, 11, + 3, 3, 5, 359, 5, 5, 6, 359, 6, 6, + 7, 7, 7, 7, 7, 5, 7, 475, 475, 6, + 9, 5, 9, 9, 10, 6, 10, 10, 873, 7, + 8, 8, 8, 8, 8, 501, 8, 501, 15, 9, + 15, 15, 16, 10, 16, 16, 491, 491, 550, 8, + 29, 29, 29, 29, 29, 873, 63, 15, 63, 63, + 64, 16, 64, 64, 174, 7, 15, 174, 15, 29, + 16, 330, 16, 346, 550, 63, 330, 174, 346, 64, + 174, 347, 174, 2268, 347, 8, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, @@ -6028,18 +6140,18 @@ static yyconst short int yy_chk[34104] = 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 19, 19, 19, - 19, 19, 20, 20, 20, 20, 20, 21, 346, 21, - 21, 346, 1067, 21, 309, 379, 19, 309, 21, 21, - 379, 20, 1067, 21, 383, 22, 21, 22, 22, 383, - 396, 22, 2183, 402, 21, 396, 22, 22, 402, 544, - - 64, 22, 64, 64, 22, 29, 29, 29, 29, 29, - 485, 485, 22, 1280, 30, 30, 30, 30, 30, 64, - 406, 29, 418, 544, 29, 406, 423, 418, 346, 19, - 30, 423, 433, 30, 20, 19, 36, 433, 36, 36, - 20, 33, 33, 33, 33, 33, 457, 463, 36, 36, - 21, 457, 463, 33, 33, 36, 309, 33, 648, 1280, - 33, 374, 374, 374, 374, 672, 648, 672, 22, 23, + 19, 19, 20, 20, 20, 20, 20, 21, 148, 21, + 21, 148, 2274, 21, 321, 362, 19, 321, 21, 21, + 362, 20, 657, 21, 391, 22, 21, 22, 22, 391, + 657, 22, 1126, 394, 21, 148, 22, 22, 394, 493, + + 493, 22, 1126, 1604, 22, 30, 30, 30, 30, 30, + 564, 681, 22, 681, 33, 33, 33, 33, 33, 35, + 407, 35, 35, 413, 30, 407, 33, 33, 413, 19, + 33, 35, 35, 33, 20, 19, 564, 495, 35, 495, + 20, 34, 34, 34, 34, 34, 36, 417, 36, 36, + 21, 495, 417, 34, 34, 1604, 321, 34, 36, 36, + 34, 320, 320, 320, 320, 36, 1230, 1230, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, @@ -6069,34 +6181,34 @@ static yyconst short int yy_chk[34104] = 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 31, 627, 31, 31, 627, 472, 32, 31, 32, 32, - 472, 1241, 31, 32, 395, 395, 395, 395, 32, 31, - 627, 41, 1241, 41, 41, 32, 31, 31, 321, 321, - 321, 321, 32, 32, 34, 34, 34, 34, 34, 39, - 41, 39, 39, 478, 484, 2206, 34, 34, 478, 484, - 34, 39, 40, 34, 40, 40, 491, 42, 39, 42, - 42, 491, 736, 61, 40, 61, 61, 39, 507, 542, - - 736, 40, 487, 507, 487, 41, 42, 41, 460, 556, - 40, 460, 61, 31, 460, 45, 487, 45, 45, 32, - 37, 37, 37, 37, 37, 542, 43, 43, 43, 43, - 43, 512, 43, 513, 45, 556, 512, 43, 513, 37, - 321, 42, 45, 42, 1236, 43, 37, 37, 61, 37, - 1236, 44, 44, 44, 44, 44, 46, 44, 46, 46, - 558, 647, 44, 51, 1024, 51, 51, 519, 488, 51, - 44, 488, 519, 1024, 51, 46, 55, 51, 55, 55, - 37, 488, 51, 46, 558, 45, 572, 532, 301, 301, - 301, 301, 532, 647, 37, 55, 37, 53, 37, 53, - - 53, 646, 496, 37, 38, 38, 38, 38, 38, 43, - 43, 53, 572, 301, 496, 528, 53, 528, 54, 496, - 54, 54, 57, 38, 57, 57, 46, 646, 57, 528, - 38, 38, 54, 38, 44, 44, 57, 54, 2207, 533, - 67, 57, 67, 67, 533, 2208, 51, 51, 390, 390, - 390, 390, 53, 65, 65, 65, 65, 65, 503, 67, - 55, 503, 511, 390, 38, 511, 68, 65, 68, 68, - 301, 503, 65, 54, 540, 511, 546, 57, 38, 540, - 38, 546, 38, 2209, 679, 68, 679, 38, 47, 47, + 31, 358, 31, 31, 358, 429, 32, 31, 32, 32, + 429, 552, 31, 32, 333, 333, 333, 333, 32, 31, + 41, 922, 41, 41, 434, 32, 31, 31, 39, 434, + 39, 39, 32, 32, 40, 552, 40, 40, 922, 41, + 39, 42, 496, 42, 42, 496, 40, 39, 43, 43, + 43, 43, 43, 40, 43, 496, 39, 881, 2275, 43, + 42, 358, 40, 380, 380, 380, 380, 43, 656, 44, + + 44, 44, 44, 44, 41, 44, 41, 566, 2278, 45, + 44, 45, 45, 31, 46, 881, 46, 46, 44, 32, + 37, 37, 37, 37, 37, 42, 333, 42, 45, 924, + 656, 566, 51, 46, 51, 51, 45, 444, 51, 37, + 467, 46, 444, 51, 1601, 467, 37, 37, 474, 37, + 618, 51, 55, 474, 55, 55, 56, 471, 56, 56, + 471, 43, 43, 471, 1083, 744, 52, 52, 52, 52, + 52, 55, 52, 52, 618, 56, 483, 52, 1083, 45, + 37, 483, 44, 44, 46, 52, 492, 51, 1601, 924, + 59, 492, 59, 59, 37, 499, 37, 744, 37, 61, + + 499, 61, 61, 37, 38, 38, 38, 38, 38, 59, + 62, 580, 62, 62, 515, 51, 51, 520, 61, 515, + 2279, 52, 520, 38, 65, 65, 65, 65, 65, 62, + 38, 38, 67, 38, 67, 67, 55, 580, 65, 511, + 56, 655, 511, 65, 66, 66, 66, 66, 66, 52, + 52, 67, 511, 68, 61, 68, 68, 71, 66, 71, + 71, 521, 504, 66, 38, 62, 521, 655, 519, 71, + 71, 519, 68, 59, 504, 688, 71, 688, 38, 504, + 38, 519, 38, 386, 386, 386, 386, 38, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, @@ -6116,168 +6228,165 @@ static yyconst short int yy_chk[34104] = 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 52, 52, 52, 52, 52, 690, 52, 52, - 2213, 690, 56, 52, 56, 56, 52, 803, 690, 547, - 58, 52, 58, 58, 547, 803, 58, 59, 571, 59, - 59, 56, 555, 60, 58, 60, 60, 555, 735, 58, - - 62, 59, 62, 62, 1649, 571, 59, 60, 295, 295, - 295, 295, 60, 66, 66, 66, 66, 66, 69, 62, - 69, 69, 70, 563, 70, 70, 295, 66, 563, 571, - 735, 71, 66, 71, 71, 58, 727, 69, 727, 536, - 1025, 70, 536, 71, 71, 52, 52, 2218, 570, 72, - 71, 72, 72, 570, 1025, 62, 56, 296, 296, 296, - 296, 72, 72, 73, 73, 73, 73, 73, 72, 536, - 59, 93, 1649, 93, 93, 296, 60, 73, 297, 297, - 297, 297, 73, 2220, 74, 74, 74, 74, 74, 689, - 93, 73, 1030, 536, 73, 1030, 297, 77, 74, 77, - - 77, 69, 69, 74, 866, 70, 70, 75, 75, 75, - 75, 75, 74, 2075, 873, 74, 77, 689, 73, 76, - 76, 76, 76, 76, 689, 77, 75, 77, 576, 78, - 866, 78, 78, 576, 922, 75, 922, 75, 76, 74, - 577, 79, 873, 79, 79, 577, 583, 76, 78, 76, - 587, 583, 865, 79, 79, 587, 2075, 78, 914, 78, - 79, 80, 2221, 80, 80, 417, 417, 417, 417, 428, - 428, 428, 428, 80, 80, 914, 932, 417, 932, 865, - 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 49, 49, 53, 820, 53, 53, 699, 820, 53, 54, + 699, 54, 54, 53, 699, 54, 57, 699, 57, 57, + 54, 53, 57, 58, 2282, 58, 58, 527, 54, 58, + 57, 60, 527, 60, 60, 57, 69, 58, 69, 69, + + 540, 70, 58, 70, 70, 540, 72, 541, 72, 72, + 60, 93, 541, 93, 93, 69, 548, 53, 72, 72, + 70, 548, 579, 2283, 54, 72, 334, 334, 334, 334, + 93, 57, 406, 406, 406, 406, 1237, 1237, 58, 579, + 73, 73, 73, 73, 73, 53, 53, 74, 74, 74, + 74, 74, 54, 54, 73, 307, 307, 307, 307, 73, + 1082, 74, 94, 579, 94, 94, 74, 555, 73, 1082, + 1297, 73, 555, 307, 60, 74, 1297, 563, 74, 69, + 69, 94, 563, 1140, 70, 70, 75, 75, 75, 75, + 75, 77, 1140, 77, 77, 73, 76, 76, 76, 76, + + 76, 78, 74, 78, 78, 75, 2289, 571, 334, 536, + 77, 536, 571, 578, 75, 76, 75, 585, 578, 77, + 78, 77, 585, 536, 76, 79, 76, 79, 79, 78, + 80, 78, 80, 80, 591, 595, 598, 79, 79, 591, + 595, 598, 80, 80, 79, 439, 439, 439, 439, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 83, 83, - 83, 83, 83, 1516, 84, 84, 84, 84, 84, 1169, - 1169, 1516, 83, 322, 322, 322, 322, 83, 84, 429, - 429, 429, 429, 84, 85, 85, 85, 85, 85, 85, - + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 83, 83, 83, + 83, 83, 1603, 84, 84, 84, 84, 84, 736, 1724, + 736, 83, 440, 440, 440, 440, 83, 84, 441, 441, + 441, 441, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 87, 87, 87, 87, 87, - 2222, 85, 85, 85, 85, 85, 85, 590, 94, 87, - 94, 94, 590, 87, 87, 1035, 603, 107, 1035, 107, - 107, 603, 108, 87, 108, 108, 87, 94, 609, 85, - 85, 85, 101, 609, 101, 101, 107, 123, 616, 123, - 123, 108, 636, 616, 101, 322, 101, 636, 1081, 2223, - 87, 101, 323, 323, 323, 323, 123, 1081, 85, 85, - 85, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 85, 85, 85, 85, 87, 87, 87, 87, 87, 1603, + 85, 85, 85, 85, 85, 85, 611, 107, 87, 107, + + 107, 611, 87, 87, 108, 745, 108, 108, 123, 625, + 123, 123, 87, 745, 625, 87, 107, 1724, 85, 85, + 85, 85, 101, 108, 101, 101, 102, 123, 102, 102, + 428, 428, 428, 428, 101, 813, 101, 905, 102, 87, + 102, 101, 428, 813, 905, 102, 905, 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - - 86, 86, 88, 88, 88, 88, 88, 2225, 86, 86, - 86, 86, 86, 86, 614, 925, 88, 614, 2227, 925, - 88, 88, 124, 101, 124, 124, 109, 614, 109, 109, - 88, 2228, 102, 88, 102, 102, 86, 86, 86, 109, - 110, 124, 110, 110, 102, 109, 102, 391, 391, 391, - 391, 102, 1868, 110, 323, 645, 653, 88, 662, 110, - 645, 653, 391, 662, 1868, 86, 86, 86, 89, 89, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 88, 88, 88, 88, 88, 1524, 86, 86, 86, + 86, 86, 86, 645, 124, 88, 124, 124, 645, 88, + 88, 623, 933, 101, 623, 1524, 933, 102, 109, 88, + + 109, 109, 88, 124, 623, 86, 86, 86, 86, 617, + 110, 109, 110, 110, 617, 650, 2290, 109, 650, 335, + 335, 335, 335, 110, 1089, 617, 88, 1089, 650, 110, + 454, 454, 454, 454, 86, 86, 86, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, - 91, 91, 91, 91, 2229, 89, 89, 89, 89, 89, - - 89, 1112, 127, 102, 127, 127, 641, 927, 91, 641, - 1112, 927, 117, 117, 117, 117, 117, 668, 2230, 641, - 91, 127, 668, 89, 89, 89, 117, 340, 340, 340, - 340, 117, 118, 118, 118, 118, 118, 430, 430, 430, - 430, 1176, 1176, 2231, 91, 340, 118, 443, 443, 443, - 443, 118, 89, 89, 89, 90, 90, 90, 90, 90, + 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, + 91, 91, 91, 2291, 89, 89, 89, 89, 89, 89, + 1171, 117, 117, 117, 117, 117, 874, 91, 947, 1171, + 313, 313, 313, 313, 127, 117, 127, 127, 1094, 91, + 117, 1094, 89, 89, 89, 89, 118, 118, 118, 118, + + 118, 335, 874, 127, 947, 313, 460, 460, 460, 460, + 118, 1221, 930, 91, 930, 118, 524, 524, 524, 524, + 1221, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 92, 92, 92, 92, - 92, 1160, 90, 90, 90, 90, 90, 90, 585, 119, - 1160, 119, 119, 939, 1047, 92, 585, 1047, 128, 585, - - 128, 128, 119, 119, 585, 1178, 1178, 92, 119, 675, - 90, 90, 90, 120, 675, 120, 120, 128, 141, 939, - 141, 141, 449, 449, 449, 449, 120, 120, 1072, 1260, - 1260, 92, 120, 516, 516, 516, 516, 141, 1072, 90, - 90, 90, 95, 95, 95, 95, 95, 95, 95, 95, + 90, 90, 90, 90, 90, 92, 92, 92, 92, 92, + 1315, 90, 90, 90, 90, 90, 90, 934, 119, 934, + 119, 119, 313, 934, 92, 128, 1315, 128, 128, 654, + 662, 119, 119, 671, 654, 662, 92, 119, 671, 90, + 90, 90, 90, 120, 128, 120, 120, 141, 700, 141, + 141, 700, 401, 401, 401, 401, 120, 120, 677, 684, + + 92, 700, 120, 677, 684, 2292, 141, 401, 90, 90, + 90, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 97, + 95, 95, 95, 95, 95, 95, 95, 95, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 137, 97, 137, 137, 97, - 682, 115, 115, 115, 115, 115, 938, 97, 97, 97, - 97, 97, 682, 1201, 137, 115, 138, 682, 138, 138, - 115, 1229, 916, 137, 105, 105, 105, 105, 105, 115, - 1229, 2232, 115, 938, 97, 138, 97, 688, 142, 1201, - 142, 142, 688, 105, 138, 392, 392, 392, 392, 517, - - 517, 517, 517, 105, 692, 1052, 115, 142, 1052, 692, - 392, 1354, 1354, 97, 97, 97, 98, 98, 98, 98, + 97, 97, 97, 97, 137, 97, 137, 137, 97, 691, + 115, 115, 115, 115, 115, 2296, 97, 97, 97, 97, + 97, 691, 2297, 137, 115, 138, 691, 138, 138, 115, + 1239, 1239, 137, 105, 105, 105, 105, 105, 115, 2298, + 940, 115, 940, 97, 138, 97, 97, 142, 636, 142, + 142, 636, 105, 138, 402, 402, 402, 402, 525, 525, + 525, 525, 105, 697, 946, 115, 142, 636, 697, 402, + 1323, 1323, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 916, 98, 105, 145, 98, 145, 145, 116, - 116, 116, 116, 116, 98, 98, 98, 98, 98, 1233, - 105, 699, 105, 116, 145, 702, 699, 105, 116, 1233, - 702, 106, 106, 106, 106, 106, 146, 116, 146, 146, - 116, 98, 151, 98, 151, 151, 152, 1457, 152, 152, - 106, 341, 341, 341, 341, 146, 518, 518, 518, 518, - 106, 151, 707, 710, 116, 152, 1457, 707, 710, 341, - - 98, 98, 98, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 2234, - 99, 106, 129, 99, 129, 129, 130, 130, 130, 130, - 130, 99, 99, 99, 99, 99, 129, 106, 1078, 106, - 130, 129, 1078, 691, 106, 130, 691, 167, 1597, 167, - 167, 701, 147, 129, 701, 147, 691, 130, 99, 157, - 99, 157, 157, 167, 701, 147, 167, 1189, 715, 1189, - 147, 157, 157, 715, 167, 720, 1597, 129, 157, 147, - 720, 130, 147, 302, 302, 302, 302, 99, 99, 99, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 147, 100, 302, 131, - 100, 131, 131, 133, 730, 133, 133, 1252, 100, 100, - 100, 100, 100, 131, 725, 1259, 730, 131, 131, 725, - 167, 730, 133, 1252, 1720, 1259, 158, 734, 158, 158, - 131, 739, 734, 1720, 133, 100, 739, 100, 158, 158, - 159, 159, 159, 159, 159, 158, 747, 529, 529, 529, - 529, 747, 159, 159, 131, 2235, 159, 759, 133, 159, - 529, 1367, 759, 1367, 100, 100, 100, 103, 103, 103, + 98, 946, 98, 105, 145, 98, 145, 145, 116, 116, + 116, 116, 116, 98, 98, 98, 98, 98, 1131, 105, + 701, 105, 116, 145, 708, 701, 105, 116, 1131, 708, + 106, 106, 106, 106, 106, 146, 116, 146, 146, 116, + 98, 711, 98, 98, 1605, 151, 711, 151, 151, 106, + 308, 308, 308, 308, 146, 526, 526, 526, 526, 106, + 716, 719, 724, 116, 151, 716, 719, 724, 308, 98, + 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 1605, 99, + 106, 129, 99, 129, 129, 130, 130, 130, 130, 130, + + 99, 99, 99, 99, 99, 129, 106, 935, 106, 130, + 129, 935, 710, 106, 130, 710, 152, 2299, 152, 152, + 554, 147, 129, 554, 147, 710, 130, 99, 1106, 99, + 99, 1106, 729, 554, 147, 152, 554, 729, 554, 147, + 538, 538, 538, 538, 734, 999, 129, 999, 147, 734, + 130, 147, 314, 314, 314, 314, 99, 99, 99, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 147, 100, 314, 131, 100, + 131, 131, 133, 1111, 133, 133, 1111, 100, 100, 100, + 100, 100, 131, 743, 748, 1294, 131, 131, 743, 748, + + 191, 133, 191, 191, 192, 1294, 192, 192, 157, 131, + 157, 157, 1130, 133, 100, 1130, 100, 100, 2300, 191, + 157, 157, 158, 192, 158, 158, 961, 157, 961, 537, + 537, 537, 537, 131, 158, 158, 1250, 133, 1250, 2301, + 961, 158, 537, 100, 100, 100, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 111, 111, 111, 111, 111, 111, + 103, 103, 103, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 121, 121, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + + 113, 113, 113, 113, 113, 113, 113, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 125, 125, 125, 125, 125, + 121, 121, 121, 121, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, @@ -6285,274 +6394,321 @@ static yyconst short int yy_chk[34104] = 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 132, 132, 132, 132, 132, 134, 1530, 134, - 134, 160, 160, 160, 160, 160, 132, 1504, 1504, 711, - 132, 132, 711, 160, 160, 1071, 134, 160, 1071, 161, - 160, 161, 161, 132, 162, 768, 162, 162, 134, 2236, - 768, 171, 161, 171, 171, 711, 1890, 162, 161, 711, - 785, 171, 1530, 162, 788, 785, 793, 132, 1890, 788, - 171, 793, 134, 135, 135, 135, 135, 135, 135, 135, + 125, 132, 132, 132, 132, 132, 134, 1302, 134, 134, + 159, 159, 159, 159, 159, 132, 756, 2199, 1302, 132, + + 132, 756, 159, 159, 1123, 134, 159, 1123, 167, 159, + 167, 167, 132, 161, 1262, 161, 161, 134, 160, 160, + 160, 160, 160, 768, 167, 1137, 161, 167, 768, 1137, + 160, 160, 161, 777, 160, 167, 132, 160, 777, 2199, + 1262, 134, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 163, 163, 163, 163, 163, 2237, - - 135, 135, 135, 135, 135, 135, 163, 163, 1244, 826, - 163, 832, 1244, 163, 826, 172, 832, 172, 172, 164, - 164, 164, 164, 164, 168, 172, 168, 168, 135, 135, - 135, 164, 164, 2239, 172, 164, 658, 658, 164, 658, - 168, 897, 1534, 168, 530, 530, 530, 530, 897, 658, - 897, 168, 554, 554, 554, 554, 2087, 135, 135, 135, + 135, 135, 135, 162, 1123, 162, 162, 1421, 1421, 135, + 135, 135, 135, 135, 135, 592, 162, 163, 163, 163, + 163, 163, 162, 793, 315, 315, 315, 315, 793, 163, + 163, 1469, 168, 163, 168, 168, 163, 135, 135, 135, + + 135, 164, 164, 164, 164, 164, 1469, 592, 168, 315, + 592, 168, 2187, 164, 164, 592, 919, 164, 919, 168, + 164, 562, 562, 562, 562, 2302, 135, 135, 135, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - 136, 169, 169, 169, 169, 169, 1534, 136, 136, 136, - 136, 136, 136, 303, 303, 303, 303, 1374, 2087, 1374, - - 169, 183, 183, 183, 183, 183, 1231, 168, 911, 1231, - 911, 179, 169, 179, 179, 136, 136, 136, 303, 179, - 183, 191, 1527, 191, 191, 179, 531, 531, 531, 531, - 179, 561, 561, 561, 561, 926, 169, 926, 835, 531, - 191, 926, 179, 835, 136, 136, 136, 139, 139, 139, + 169, 169, 169, 169, 169, 2187, 136, 136, 136, 136, + 136, 136, 1574, 1574, 1288, 318, 318, 318, 318, 169, + 203, 919, 203, 203, 204, 1292, 204, 204, 1292, 1403, + 179, 169, 179, 179, 136, 136, 136, 136, 179, 203, + 318, 1288, 318, 204, 179, 569, 569, 569, 569, 179, + + 605, 605, 605, 605, 1587, 169, 1403, 332, 332, 332, + 332, 179, 1587, 136, 136, 136, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 911, 139, 2097, 179, 139, 170, 170, - 170, 170, 170, 1527, 1527, 139, 139, 139, 139, 139, - 584, 184, 184, 184, 184, 184, 1227, 170, 185, 185, - 185, 185, 185, 1257, 1336, 180, 1257, 180, 180, 170, - - 184, 802, 139, 180, 139, 802, 802, 185, 192, 180, - 192, 192, 584, 1227, 180, 584, 597, 597, 597, 597, - 584, 1336, 2097, 170, 838, 844, 180, 192, 2240, 838, - 844, 139, 139, 139, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 180, 140, 2091, 181, 140, 181, 181, 598, 598, 598, - 598, 181, 140, 140, 140, 140, 140, 181, 349, 349, - 349, 349, 181, 186, 186, 186, 186, 186, 187, 187, - 187, 187, 187, 1400, 181, 182, 349, 182, 182, 140, - 849, 140, 186, 182, 1410, 849, 1410, 187, 203, 182, - - 203, 203, 855, 2091, 182, 860, 863, 855, 181, 1400, - 860, 863, 306, 306, 306, 306, 182, 203, 140, 140, - 140, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 306, 143, 306, - 182, 143, 188, 188, 188, 188, 188, 2241, 1404, 143, - 143, 143, 143, 143, 868, 204, 1258, 204, 204, 868, - 1258, 188, 211, 870, 211, 211, 1901, 1901, 870, 189, - 189, 189, 189, 189, 204, 1404, 143, 233, 143, 233, - 233, 211, 215, 215, 215, 215, 215, 1402, 189, 2242, - 211, 600, 600, 600, 600, 1535, 233, 189, 876, 882, - - 189, 215, 1402, 876, 882, 143, 143, 143, 144, 144, + 139, 139, 332, 139, 1290, 179, 139, 170, 170, 170, + 170, 170, 1471, 1290, 139, 139, 139, 139, 139, 667, + 667, 211, 667, 211, 211, 1097, 170, 212, 1097, 212, + 212, 1305, 667, 739, 180, 1305, 180, 180, 170, 1471, + 211, 139, 180, 139, 139, 739, 212, 796, 180, 211, + 739, 1243, 796, 180, 1243, 212, 606, 606, 606, 606, + 1135, 332, 170, 1135, 1243, 180, 339, 339, 339, 339, + + 139, 139, 139, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 180, + 140, 339, 181, 140, 181, 181, 356, 356, 356, 356, + 181, 140, 140, 140, 140, 140, 181, 1097, 2214, 1322, + 233, 181, 233, 233, 215, 215, 215, 215, 215, 1322, + 1135, 356, 544, 181, 182, 544, 182, 182, 140, 233, + 140, 140, 182, 215, 234, 1597, 234, 234, 182, 403, + 403, 403, 403, 182, 1434, 2192, 1434, 181, 608, 608, + 608, 608, 544, 234, 403, 182, 2214, 140, 140, 140, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + + 143, 143, 143, 143, 143, 143, 544, 143, 2303, 182, + 143, 189, 189, 189, 189, 189, 1597, 1597, 143, 143, + 143, 143, 143, 2304, 216, 216, 216, 216, 216, 2192, + 189, 217, 217, 217, 217, 217, 1632, 1632, 195, 189, + 195, 195, 189, 216, 801, 143, 1751, 143, 143, 801, + 217, 218, 218, 218, 218, 218, 593, 195, 539, 539, + 539, 539, 1320, 839, 593, 1320, 189, 593, 839, 195, + 218, 539, 593, 1751, 143, 143, 143, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 189, 144, 1750, 1532, 144, 190, - 190, 190, 190, 190, 1750, 1535, 144, 144, 144, 144, - 144, 885, 212, 1264, 212, 212, 885, 1264, 190, 216, - 216, 216, 216, 216, 1472, 1472, 195, 190, 195, 195, - 190, 212, 1472, 144, 234, 144, 234, 234, 216, 235, - 212, 235, 235, 1256, 1532, 195, 604, 604, 604, 604, - 888, 891, 1256, 234, 190, 888, 891, 195, 235, 1256, - 2077, 1472, 144, 144, 144, 149, 149, 149, 149, 149, - + 144, 144, 144, 195, 144, 1636, 1636, 144, 190, 190, + + 190, 190, 190, 1640, 1640, 144, 144, 144, 144, 144, + 2305, 219, 219, 219, 219, 219, 2194, 190, 220, 220, + 220, 220, 220, 1859, 1672, 196, 190, 196, 196, 190, + 219, 1859, 144, 584, 144, 144, 584, 220, 221, 221, + 221, 221, 221, 811, 196, 1345, 584, 811, 811, 584, + 825, 584, 1672, 190, 825, 825, 196, 221, 1441, 2194, + 1441, 144, 144, 144, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 195, 149, 2243, 196, 149, 196, 196, 217, 217, - 217, 217, 217, 149, 149, 149, 149, 149, 218, 218, - 218, 218, 218, 196, 1538, 1892, 2077, 217, 219, 219, - 219, 219, 219, 1892, 1538, 196, 236, 218, 236, 236, - 149, 243, 149, 243, 243, 915, 1533, 219, 220, 220, - 220, 220, 220, 896, 1721, 236, 920, 915, 896, 196, - 243, 920, 915, 327, 327, 327, 327, 220, 1721, 149, - 149, 149, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 327, 150, - - 1743, 2244, 150, 221, 221, 221, 221, 221, 1533, 1743, - 150, 150, 150, 150, 150, 222, 222, 222, 222, 222, - 2245, 2246, 221, 225, 225, 225, 225, 225, 226, 226, - 226, 226, 226, 244, 222, 244, 244, 150, 237, 150, - 237, 237, 225, 238, 237, 238, 238, 226, 1276, 238, - 2247, 1744, 244, 606, 606, 606, 606, 237, 624, 624, - 624, 624, 238, 1276, 1276, 1744, 150, 150, 150, 153, + 196, 149, 2001, 1945, 149, 222, 222, 222, 222, 222, + 2001, 1345, 149, 149, 149, 149, 149, 225, 225, 225, + + 225, 225, 1467, 2306, 222, 226, 226, 226, 226, 226, + 1945, 2307, 223, 843, 223, 223, 225, 1396, 843, 149, + 1396, 149, 149, 235, 226, 235, 235, 236, 1467, 236, + 236, 223, 612, 612, 612, 612, 614, 614, 614, 614, + 852, 1225, 235, 223, 1225, 852, 236, 1225, 149, 149, + 149, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 223, 150, 1319, + 224, 150, 224, 224, 229, 2058, 229, 229, 1319, 150, + 150, 150, 150, 150, 237, 1319, 237, 237, 229, 224, + 237, 857, 238, 229, 238, 238, 857, 243, 238, 243, + + 243, 224, 2058, 237, 720, 229, 150, 720, 150, 150, + 823, 238, 239, 823, 239, 239, 243, 2308, 239, 633, + 633, 633, 633, 823, 2309, 224, 823, 863, 868, 229, + 720, 239, 863, 868, 720, 150, 150, 150, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 155, 155, 155, 155, + 153, 153, 153, 153, 153, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 165, 165, 165, 165, 165, 165, 165, + 155, 155, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, - - 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 171, + + 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, + 230, 1321, 230, 230, 1555, 1321, 171, 171, 171, 171, + 171, 171, 871, 244, 230, 244, 244, 871, 1418, 230, + 240, 1418, 240, 240, 698, 251, 240, 251, 251, 1327, + 1555, 230, 244, 1327, 171, 171, 171, 171, 252, 240, + 252, 252, 2310, 257, 251, 257, 257, 660, 660, 660, + 660, 1715, 698, 876, 1715, 230, 698, 252, 876, 698, + 2311, 1556, 257, 171, 171, 171, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, + + 172, 172, 172, 172, 172, 172, 172, 1556, 1392, 558, + 251, 1392, 558, 172, 172, 172, 172, 172, 172, 255, + 878, 255, 255, 252, 251, 878, 256, 1392, 256, 256, + 2312, 884, 258, 255, 258, 258, 884, 252, 255, 558, + 256, 172, 172, 172, 172, 256, 263, 1258, 263, 263, + 1258, 258, 263, 707, 707, 707, 707, 263, 263, 263, + 1258, 2313, 1477, 558, 1477, 263, 759, 759, 759, 759, + 172, 172, 172, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 2248, 223, 175, 223, 223, - 224, 2249, 224, 224, 942, 175, 175, 175, 175, 175, - 239, 1329, 239, 239, 1329, 223, 239, 924, 240, 224, - 240, 240, 924, 257, 240, 257, 257, 223, 942, 239, - 947, 224, 175, 175, 175, 947, 1351, 240, 251, 1351, - 251, 251, 257, 651, 651, 651, 651, 698, 698, 698, - 698, 223, 942, 961, 970, 224, 1352, 251, 961, 970, - - 1352, 175, 175, 175, 176, 176, 176, 176, 176, 176, + 175, 175, 175, 175, 175, 175, 175, 175, 1865, 259, + 175, 259, 259, 260, 1032, 260, 260, 1032, 175, 175, + 175, 175, 175, 264, 1865, 264, 264, 1032, 259, 264, + + 1032, 2314, 260, 890, 264, 264, 264, 259, 890, 259, + 1419, 260, 264, 260, 1419, 175, 175, 175, 175, 261, + 1341, 261, 261, 893, 269, 261, 269, 269, 893, 2339, + 261, 776, 776, 776, 776, 1341, 1341, 2340, 261, 803, + 803, 803, 803, 269, 175, 175, 175, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 942, 229, 176, 229, 229, 230, 935, 230, - 230, 2081, 176, 176, 176, 176, 176, 229, 1485, 979, - 935, 230, 229, 251, 979, 935, 230, 998, 255, 2250, - 255, 255, 998, 258, 229, 258, 258, 251, 230, 176, - 176, 176, 255, 953, 1485, 953, 256, 255, 256, 256, - 2251, 2081, 258, 750, 750, 750, 750, 953, 229, 1005, - 256, 1009, 230, 1537, 1005, 256, 1009, 1537, 176, 176, - 176, 177, 177, 177, 177, 177, 177, 177, 177, 177, - + 176, 176, 176, 176, 176, 2341, 270, 176, 270, 270, + 309, 309, 309, 309, 261, 176, 176, 176, 176, 176, + 265, 1395, 265, 265, 1395, 270, 265, 266, 309, 266, + 266, 265, 1799, 266, 357, 357, 357, 357, 266, 265, + + 1395, 1799, 176, 176, 176, 176, 266, 2342, 265, 267, + 265, 267, 267, 896, 1969, 266, 899, 266, 896, 357, + 1730, 899, 1730, 267, 804, 804, 804, 804, 267, 2346, + 1969, 176, 176, 176, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 193, 193, - 193, 193, 193, 193, 193, 193, 1013, 193, 193, 193, - 193, 1013, 2252, 193, 259, 193, 259, 259, 193, 957, - - 260, 1064, 260, 260, 1064, 1932, 193, 193, 193, 193, - 193, 957, 205, 259, 205, 205, 957, 1932, 252, 260, - 252, 252, 259, 1643, 259, 1643, 1038, 1023, 260, 1038, - 260, 205, 1023, 193, 193, 193, 1180, 252, 1180, 1745, - 1053, 263, 205, 263, 263, 1053, 1182, 263, 1745, 1182, - 1180, 205, 263, 263, 263, 550, 205, 2253, 550, 1182, - 263, 1064, 193, 193, 194, 194, 194, 194, 194, 194, - 194, 194, 1486, 194, 194, 194, 194, 205, 1643, 194, - 2254, 194, 205, 252, 194, 550, 273, 1197, 273, 273, - 1197, 2255, 194, 194, 194, 194, 194, 252, 1486, 206, - - 1197, 206, 206, 273, 264, 273, 264, 264, 1038, 550, - 264, 320, 320, 320, 320, 264, 264, 264, 206, 194, - 194, 194, 261, 264, 261, 261, 1059, 1061, 261, 206, - 1163, 1059, 1061, 261, 1076, 1163, 320, 1076, 206, 1640, - 2256, 261, 1640, 206, 408, 408, 408, 408, 194, 194, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 408, 206, 197, 197, 197, 197, 206, - 197, 271, 271, 271, 271, 271, 1489, 261, 197, 197, - 197, 197, 197, 1164, 2101, 265, 1164, 265, 265, 1164, - 271, 265, 1205, 1211, 1076, 320, 265, 1205, 1211, 271, - - 1161, 271, 1489, 1161, 265, 197, 197, 197, 262, 1204, - 262, 262, 1204, 265, 262, 265, 1219, 2080, 1161, 262, - 566, 1219, 1204, 566, 1357, 1287, 580, 262, 1357, 580, - 1287, 1357, 2101, 566, 197, 197, 197, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 566, 2257, 198, 198, 198, 198, 580, 198, 274, 1325, - 274, 274, 1325, 262, 1676, 198, 198, 198, 198, 198, - 266, 2080, 266, 266, 566, 274, 266, 274, 1325, 1659, - 580, 266, 2258, 1659, 267, 267, 267, 267, 267, 266, - 267, 1676, 198, 198, 198, 267, 267, 267, 266, 1207, - - 266, 2064, 1207, 267, 762, 762, 762, 762, 767, 767, - 767, 767, 1207, 2064, 2064, 344, 344, 344, 344, 762, - 1491, 198, 198, 198, 199, 199, 199, 199, 199, 199, + 177, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + + 183, 183, 183, 183, 183, 183, 183, 183, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 187, 187, 187, 187, 187, + + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 193, 193, 193, 193, 193, 193, 193, 193, + 904, 193, 193, 193, 193, 904, 1802, 193, 262, 193, + + 262, 262, 193, 923, 262, 352, 352, 352, 352, 262, + 193, 193, 193, 193, 193, 923, 205, 262, 205, 205, + 923, 1802, 268, 352, 268, 268, 275, 275, 275, 275, + 275, 277, 2108, 277, 277, 205, 268, 193, 193, 193, + 193, 268, 928, 2351, 932, 275, 205, 928, 277, 932, + 277, 2353, 955, 262, 275, 205, 275, 955, 1222, 2108, + 205, 1222, 381, 381, 381, 381, 193, 193, 194, 194, + 194, 194, 194, 194, 194, 194, 1222, 194, 194, 194, + 194, 205, 1744, 194, 1744, 194, 205, 381, 194, 353, + 353, 353, 353, 2354, 1541, 1541, 194, 194, 194, 194, + + 194, 1310, 1541, 206, 1310, 206, 206, 353, 271, 271, + 271, 271, 271, 278, 271, 278, 278, 1310, 1954, 271, + 271, 271, 206, 194, 194, 194, 194, 271, 1954, 2355, + 278, 1541, 278, 206, 805, 805, 805, 805, 833, 833, + 833, 833, 206, 906, 906, 906, 906, 206, 419, 419, + 419, 419, 194, 194, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 419, 206, 197, + 197, 197, 197, 206, 197, 276, 276, 276, 276, 276, + 943, 1800, 197, 197, 197, 197, 197, 272, 272, 272, + 272, 272, 943, 272, 276, 1800, 969, 943, 272, 272, + + 272, 969, 978, 276, 1734, 276, 272, 978, 1734, 197, + 197, 197, 197, 287, 1606, 287, 287, 987, 289, 287, + 289, 289, 987, 997, 289, 2011, 2011, 287, 997, 289, + 289, 289, 287, 908, 908, 908, 908, 289, 197, 197, + 197, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 1606, 1559, 198, 198, 198, 198, + 279, 198, 279, 279, 281, 2356, 281, 281, 287, 198, + 198, 198, 198, 198, 273, 273, 273, 273, 273, 279, + 273, 1559, 2126, 281, 1561, 273, 273, 367, 367, 367, + 367, 279, 993, 273, 993, 281, 198, 198, 198, 198, + + 1265, 2358, 273, 1265, 273, 290, 993, 290, 290, 2126, + 1561, 290, 367, 1265, 367, 279, 290, 290, 290, 281, + 909, 909, 909, 909, 290, 198, 198, 198, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 344, 199, 2259, 2259, 199, 1328, 1491, 275, 1328, 275, - 275, 1756, 199, 199, 199, 199, 199, 268, 268, 268, - 268, 268, 1228, 268, 1328, 1228, 275, 1756, 268, 268, - 268, 269, 269, 269, 269, 269, 268, 269, 275, 199, - 1228, 199, 269, 269, 1753, 352, 352, 352, 352, 1753, - 269, 794, 794, 794, 794, 795, 795, 795, 795, 269, - - 1838, 269, 275, 352, 345, 345, 345, 345, 199, 199, - 199, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 1838, 200, 345, - 2260, 200, 272, 272, 272, 272, 272, 2262, 1495, 200, - 200, 200, 200, 200, 270, 270, 270, 270, 270, 1082, - 270, 272, 1082, 1082, 1662, 270, 270, 1655, 1662, 1655, - 272, 1664, 272, 270, 1495, 1664, 200, 1082, 200, 502, - 502, 502, 270, 502, 270, 375, 375, 375, 375, 763, - 763, 763, 763, 502, 796, 796, 796, 796, 502, 355, - 355, 355, 355, 375, 763, 200, 200, 200, 201, 201, - - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 355, 201, 355, 1746, 201, 276, - 276, 276, 276, 276, 502, 1802, 201, 201, 201, 201, - 201, 1746, 2082, 276, 359, 359, 359, 359, 276, 1802, - 2263, 360, 360, 360, 360, 973, 277, 973, 277, 277, - 276, 973, 1669, 201, 1669, 201, 973, 973, 973, 359, - 1250, 359, 2264, 1250, 973, 277, 360, 1834, 360, 820, - 820, 820, 820, 1250, 276, 2082, 1834, 277, 898, 898, - 898, 898, 201, 201, 201, 202, 202, 202, 202, 202, + 199, 199, 199, 199, 588, 199, 1829, 588, 199, 2360, + 361, 361, 361, 361, 965, 1829, 199, 199, 199, 199, + 199, 274, 274, 274, 274, 274, 965, 274, 361, 2137, + 1002, 965, 274, 274, 588, 1002, 288, 2361, 288, 288, + 274, 1268, 288, 199, 1268, 199, 199, 1010, 1018, 274, + 288, 274, 1010, 1018, 1268, 288, 2137, 2203, 588, 889, + + 889, 889, 889, 889, 849, 849, 849, 849, 382, 382, + 382, 382, 199, 199, 199, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 288, 200, 382, 849, 200, 280, 280, 280, 280, + 280, 2362, 2200, 200, 200, 200, 200, 200, 2203, 1565, + 280, 364, 364, 364, 364, 280, 1025, 291, 849, 291, + 291, 1025, 634, 291, 2363, 634, 1029, 280, 291, 364, + 200, 1029, 200, 200, 1033, 1565, 291, 1045, 292, 1033, + 292, 292, 1045, 1852, 292, 910, 910, 910, 910, 292, + 634, 280, 1852, 372, 372, 372, 372, 292, 2200, 200, + + 200, 200, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 372, 201, + 372, 634, 201, 282, 282, 282, 282, 282, 2364, 1566, + 201, 201, 201, 201, 201, 1289, 2365, 282, 1289, 634, + 291, 291, 282, 369, 369, 369, 369, 371, 371, 371, + 371, 1652, 2367, 1289, 282, 1566, 848, 201, 848, 201, + 201, 292, 292, 372, 771, 771, 771, 771, 369, 1737, + 369, 1054, 371, 1737, 371, 848, 1054, 1652, 282, 771, + 370, 370, 370, 370, 848, 2189, 201, 201, 201, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 277, 202, 359, 1496, 202, 278, 278, 278, 278, - 278, 360, 712, 202, 202, 202, 202, 202, 1835, 2266, - 278, 357, 357, 357, 357, 278, 358, 358, 358, 358, - 1496, 1862, 1835, 361, 361, 361, 361, 278, 2132, 712, - 202, 712, 202, 712, 712, 928, 357, 1862, 357, 928, - 712, 358, 1888, 358, 1888, 712, 712, 928, 361, 712, - 361, 278, 928, 403, 403, 403, 403, 2267, 1577, 202, - 202, 202, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 357, 207, - 361, 403, 207, 1011, 1577, 358, 1011, 2132, 2086, 207, - - 207, 207, 207, 207, 207, 358, 1011, 362, 362, 362, - 362, 1011, 366, 366, 366, 366, 1902, 363, 363, 363, - 363, 1590, 403, 364, 364, 364, 364, 207, 207, 207, - 1902, 1212, 362, 1212, 362, 2268, 403, 366, 403, 366, - 403, 2086, 363, 1867, 363, 1212, 1867, 1590, 364, 1591, - 364, 830, 830, 830, 830, 830, 207, 207, 207, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 1591, 208, 366, 2088, 208, - 362, 1665, 363, 362, 364, 1665, 208, 208, 208, 208, - 208, 208, 363, 365, 365, 365, 365, 369, 369, 369, - - 369, 2269, 2270, 364, 370, 370, 370, 370, 371, 371, - 371, 371, 1277, 2273, 208, 208, 208, 1501, 365, 1277, - 365, 1501, 369, 376, 376, 376, 376, 1277, 1277, 370, - 1501, 1508, 1847, 371, 2088, 1508, 377, 377, 377, 377, - 1508, 376, 1847, 208, 208, 208, 209, 209, 209, 209, - 209, 209, 209, 209, 377, 209, 209, 209, 209, 209, - 209, 209, 365, 209, 1483, 2084, 209, 365, 373, 373, - 373, 373, 1675, 1483, 209, 209, 209, 209, 378, 378, - 378, 378, 387, 387, 387, 387, 427, 2274, 427, 427, - 1483, 1315, 427, 373, 1315, 373, 378, 427, 1675, 1483, - - 387, 209, 209, 209, 1315, 427, 459, 459, 459, 459, - 2084, 581, 581, 581, 581, 438, 438, 438, 438, 2084, - 404, 404, 404, 404, 459, 405, 405, 405, 405, 581, - 209, 209, 210, 210, 210, 210, 210, 210, 210, 210, - 438, 210, 210, 210, 210, 210, 210, 210, 404, 210, - 2275, 709, 210, 405, 709, 439, 439, 439, 439, 1852, - 210, 210, 210, 210, 709, 440, 440, 440, 440, 427, - 427, 442, 442, 442, 442, 900, 900, 900, 900, 404, - 439, 709, 1891, 1255, 405, 1852, 1255, 210, 210, 210, - 440, 1316, 1891, 404, 1316, 404, 442, 404, 405, 1848, - - 405, 1255, 405, 1848, 1316, 709, 834, 834, 834, 834, - 834, 837, 837, 837, 837, 837, 210, 210, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 202, 202, 202, 202, 202, 370, 202, 370, 2198, 202, + 369, 848, 917, 917, 917, 917, 371, 202, 202, 202, + 202, 202, 387, 387, 387, 387, 285, 285, 285, 285, + 285, 2189, 285, 378, 378, 378, 378, 285, 285, 1789, + 387, 1789, 285, 1064, 202, 285, 202, 202, 1064, 370, + 1997, 2198, 1997, 285, 388, 388, 388, 388, 378, 370, + 378, 892, 892, 892, 892, 892, 1071, 383, 383, 383, + 383, 1071, 388, 202, 202, 202, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 383, 207, 1596, 1665, 207, 1666, 378, 850, + + 850, 850, 850, 207, 207, 207, 207, 207, 207, 285, + 1975, 1081, 374, 374, 374, 374, 1081, 385, 385, 385, + 385, 1665, 1975, 1666, 286, 286, 286, 286, 286, 850, + 286, 207, 207, 207, 207, 286, 286, 374, 1596, 374, + 286, 1854, 385, 286, 385, 895, 895, 895, 895, 895, + 1854, 286, 1596, 850, 373, 373, 373, 373, 950, 2144, + 207, 207, 207, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 373, + 208, 373, 950, 208, 1112, 374, 2144, 1941, 374, 1112, + 208, 208, 208, 208, 208, 208, 1941, 376, 376, 376, + + 376, 375, 375, 375, 375, 1118, 950, 286, 2368, 2251, + 1118, 373, 1120, 377, 377, 377, 377, 1120, 208, 208, + 208, 208, 376, 1241, 376, 1241, 375, 2369, 375, 1224, + 772, 772, 772, 772, 1224, 1739, 950, 1241, 377, 1739, + 377, 414, 414, 414, 414, 772, 2370, 208, 208, 208, + 209, 209, 209, 209, 209, 209, 209, 209, 376, 209, + 209, 209, 209, 209, 209, 209, 375, 209, 2251, 414, + 209, 389, 389, 389, 389, 2372, 375, 376, 209, 209, + 209, 209, 377, 390, 390, 390, 390, 377, 2373, 389, + 1830, 398, 398, 398, 398, 415, 415, 415, 415, 1141, + + 414, 390, 1141, 1141, 1830, 209, 209, 209, 209, 398, + 470, 470, 470, 470, 414, 1853, 414, 1141, 414, 449, + 449, 449, 449, 415, 416, 416, 416, 416, 470, 1853, + 450, 450, 450, 450, 209, 209, 210, 210, 210, 210, + 210, 210, 210, 210, 449, 210, 210, 210, 210, 210, + 210, 210, 416, 210, 415, 450, 210, 451, 451, 451, + 451, 2374, 1750, 1959, 210, 210, 210, 210, 415, 1999, + 415, 1961, 415, 453, 453, 453, 453, 455, 455, 455, + 455, 1999, 451, 416, 456, 456, 456, 456, 1750, 1959, + 1266, 210, 210, 210, 210, 1266, 2042, 416, 453, 416, + + 1342, 416, 455, 773, 773, 773, 773, 1342, 2042, 456, + 898, 898, 898, 898, 898, 1342, 1342, 1961, 773, 1961, + 210, 210, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, @@ -6561,7 +6717,7 @@ static yyconst short int yy_chk[34104] = 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 227, 227, 227, 227, 227, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, @@ -6570,26 +6726,26 @@ static yyconst short int yy_chk[34104] = 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 231, 231, 231, 231, 231, 231, 231, 231, - - 231, 231, 231, 231, 231, 231, 231, 231, 2066, 231, - 2066, 1493, 231, 444, 444, 444, 444, 1493, 1493, 2276, - 231, 231, 231, 231, 231, 445, 445, 445, 445, 446, - 446, 446, 446, 448, 448, 448, 448, 1493, 444, 562, - 562, 562, 562, 545, 1493, 1493, 545, 231, 1916, 231, - 445, 1916, 562, 1455, 446, 1455, 545, 562, 448, 1455, - 2277, 545, 769, 769, 769, 769, 881, 881, 881, 881, - 881, 769, 1455, 545, 2278, 769, 231, 231, 231, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 2279, 232, 545, 1525, 232, - - 559, 559, 559, 559, 2078, 2096, 1948, 232, 232, 232, - 232, 232, 573, 559, 582, 582, 582, 582, 559, 2280, - 591, 591, 591, 591, 592, 592, 592, 592, 1290, 2281, - 559, 1290, 582, 1948, 232, 1385, 232, 2059, 1385, 573, - 573, 573, 2283, 573, 573, 591, 1290, 573, 1385, 592, - 573, 1525, 2284, 2059, 559, 573, 573, 1525, 2108, 573, - 2108, 2096, 2078, 232, 232, 232, 241, 241, 241, 241, + 227, 227, 227, 227, 227, 227, 231, 231, 231, 231, + + 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, + 231, 231, 1974, 231, 2151, 1974, 231, 457, 457, 457, + 457, 2190, 2375, 2062, 231, 231, 231, 231, 231, 1005, + 1005, 1005, 1005, 438, 2376, 438, 438, 1313, 1272, 438, + 1313, 2151, 457, 1272, 438, 459, 459, 459, 459, 2062, + 1313, 231, 438, 231, 231, 510, 510, 510, 2210, 510, + 570, 570, 570, 570, 907, 907, 907, 907, 907, 510, + 459, 1740, 1280, 570, 510, 1740, 570, 1280, 570, 2190, + 231, 231, 231, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 581, + + 232, 2377, 2210, 232, 1318, 553, 574, 1318, 553, 574, + 510, 232, 232, 232, 232, 232, 438, 438, 553, 574, + 2378, 1172, 1318, 553, 1172, 1172, 581, 581, 581, 1614, + 581, 581, 1614, 2379, 581, 553, 574, 581, 232, 1172, + 232, 232, 581, 581, 2380, 1614, 581, 589, 589, 589, + 589, 2381, 2382, 778, 778, 778, 778, 1424, 1798, 553, + 574, 1424, 778, 1798, 1424, 589, 778, 232, 232, 232, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, @@ -6599,7 +6755,7 @@ static yyconst short int yy_chk[34104] = 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 245, 245, 245, 245, 245, 245, 245, + 241, 241, 241, 241, 241, 241, 241, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, @@ -6609,45 +6765,45 @@ static yyconst short int yy_chk[34104] = 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, + 245, 245, 245, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 2083, 247, 586, 1490, - 247, 586, 575, 1113, 2285, 575, 1113, 1113, 247, 247, - 247, 247, 247, 1490, 1275, 575, 586, 2079, 2286, 574, - 575, 1113, 574, 574, 574, 1490, 574, 574, 586, 2102, - 574, 1275, 575, 574, 2094, 247, 247, 247, 574, 574, - - 1490, 2287, 574, 901, 901, 901, 901, 764, 764, 764, - 764, 1661, 586, 1661, 2083, 1275, 575, 1661, 593, 593, - 593, 593, 764, 2079, 247, 247, 247, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 593, 248, 2102, 1952, 248, 596, 596, - 596, 596, 2094, 1993, 1994, 248, 248, 248, 248, 248, - 618, 618, 618, 618, 619, 619, 619, 619, 620, 620, - 620, 620, 1952, 596, 623, 623, 623, 623, 625, 1993, - 1994, 625, 248, 248, 248, 618, 1454, 2131, 1454, 619, - 2131, 1526, 1454, 620, 884, 884, 884, 884, 884, 623, - - 841, 841, 841, 841, 1454, 1454, 625, 744, 744, 744, - 744, 248, 248, 248, 249, 249, 249, 249, 249, 249, + 1718, 247, 1718, 1855, 247, 567, 567, 567, 567, 2178, + 2383, 2178, 247, 247, 247, 247, 247, 1855, 567, 590, + 590, 590, 590, 567, 599, 599, 599, 599, 600, 600, + 600, 600, 462, 2026, 462, 567, 2026, 590, 462, 247, + + 247, 247, 247, 462, 2384, 779, 779, 779, 779, 599, + 1736, 462, 1736, 600, 779, 1718, 1736, 2208, 779, 567, + 851, 851, 851, 851, 601, 601, 601, 601, 247, 247, + 247, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 462, 248, 601, + 851, 248, 583, 594, 1282, 583, 594, 1282, 1911, 248, + 248, 248, 248, 248, 1340, 583, 604, 604, 604, 604, + 583, 594, 1911, 2208, 851, 462, 462, 627, 627, 627, + 627, 1340, 583, 594, 1282, 1942, 248, 248, 248, 248, + 582, 604, 1595, 582, 582, 582, 1326, 582, 582, 1942, + + 1326, 582, 627, 1326, 582, 1340, 583, 594, 1282, 582, + 582, 2103, 2385, 582, 1326, 248, 248, 248, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 841, 249, 744, 2090, 249, 1526, 2261, 625, 649, 649, - 649, 649, 249, 249, 249, 249, 249, 654, 1214, 1526, - 1214, 649, 2261, 1998, 841, 625, 649, 2288, 745, 745, - 745, 745, 1214, 652, 652, 652, 652, 1214, 649, 249, - 1997, 249, 2290, 2090, 654, 654, 652, 654, 654, 654, - 1998, 652, 654, 745, 902, 902, 902, 902, 654, 2291, - 654, 654, 649, 652, 654, 654, 1997, 1529, 249, 249, - - 249, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 652, 250, 2292, - 1263, 250, 1221, 714, 1263, 1221, 714, 1263, 1999, 250, - 250, 250, 250, 250, 1854, 2003, 714, 1529, 1263, 2296, - 655, 714, 1393, 655, 655, 1393, 655, 655, 655, 2004, - 1529, 655, 1221, 714, 1999, 1393, 250, 655, 250, 655, - 655, 2003, 2297, 655, 655, 770, 770, 770, 770, 2298, - 771, 771, 771, 771, 770, 2004, 1221, 714, 770, 771, - 1854, 2238, 1854, 771, 2238, 250, 250, 250, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, + 249, 249, 249, 249, 2000, 249, 1295, 2103, 249, 628, + 628, 628, 628, 2195, 2000, 1595, 249, 249, 249, 249, + 249, 1595, 629, 629, 629, 629, 632, 632, 632, 632, + 782, 782, 782, 782, 628, 2386, 2104, 658, 658, 658, + 658, 1382, 2197, 249, 1382, 249, 249, 629, 782, 936, + 658, 632, 1295, 936, 1382, 658, 780, 780, 780, 780, + 2193, 936, 2104, 2215, 1295, 780, 936, 658, 1295, 780, + + 2387, 2195, 249, 249, 249, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 658, 250, 663, 2197, 250, 661, 661, 661, 661, + 2193, 2209, 2265, 250, 250, 250, 250, 250, 1273, 661, + 1273, 2265, 661, 1560, 661, 1006, 1006, 1006, 1006, 2215, + 663, 663, 1273, 663, 663, 663, 661, 1560, 663, 2221, + 250, 2221, 250, 250, 663, 1355, 663, 663, 1355, 1560, + 663, 663, 781, 781, 781, 781, 1007, 1007, 1007, 1007, + 661, 781, 1862, 1355, 1560, 781, 2388, 1862, 2209, 250, + 250, 250, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, @@ -6656,3080 +6812,3057 @@ static yyconst short int yy_chk[34104] = 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 343, 343, 343, 343, 713, 2092, 343, 713, - 2185, 713, 2299, 713, 713, 741, 741, 741, 741, 2185, - 713, 746, 746, 746, 746, 713, 713, 343, 2300, 713, - 749, 749, 749, 749, 741, 741, 741, 741, 741, 741, - - 741, 2301, 752, 752, 752, 752, 746, 2092, 758, 758, - 758, 758, 1690, 752, 1690, 749, 2282, 2282, 965, 758, - 965, 343, 1251, 343, 965, 1251, 1690, 343, 752, 965, - 343, 343, 1920, 343, 758, 1920, 343, 343, 343, 343, - 543, 772, 772, 772, 772, 773, 773, 773, 773, 2302, - 772, 1843, 1251, 1843, 772, 752, 774, 774, 774, 774, - 2303, 1920, 2016, 773, 2304, 1843, 2305, 543, 543, 543, - 543, 543, 543, 965, 774, 543, 1251, 2027, 543, 543, - 543, 543, 2034, 543, 543, 543, 543, 543, 557, 2016, - 758, 781, 781, 781, 2306, 781, 815, 815, 815, 815, - - 816, 816, 816, 816, 2027, 817, 817, 817, 817, 2034, - 781, 909, 909, 909, 909, 557, 557, 557, 557, 557, - 557, 815, 2085, 557, 2007, 816, 557, 557, 557, 557, - 817, 557, 557, 557, 557, 557, 557, 819, 819, 819, - 819, 842, 842, 842, 842, 1399, 781, 792, 1399, 1989, - 2007, 792, 1989, 1360, 1360, 792, 1360, 2009, 1399, 792, - 792, 840, 819, 840, 1288, 792, 1360, 1288, 792, 792, - 1845, 842, 1845, 792, 2085, 792, 2347, 792, 1989, 2308, - 840, 792, 2104, 2009, 1845, 792, 792, 2041, 792, 840, - 792, 2010, 792, 2308, 1288, 842, 792, 801, 2373, 801, - - 801, 801, 801, 801, 801, 801, 801, 801, 801, 986, - 986, 986, 986, 801, 2041, 2383, 840, 2010, 1288, 843, - 843, 843, 843, 887, 887, 887, 887, 887, 890, 890, - 890, 890, 890, 903, 903, 903, 903, 801, 2104, 801, - 804, 899, 899, 899, 899, 899, 903, 2400, 2349, 843, - 1698, 903, 1698, 2012, 804, 2401, 1698, 904, 904, 904, - 904, 1698, 905, 905, 905, 905, 2020, 804, 804, 804, - 804, 804, 804, 843, 804, 804, 2349, 804, 804, 2012, - 804, 804, 904, 804, 804, 804, 804, 905, 987, 987, - 987, 987, 2020, 804, 804, 804, 804, 804, 804, 1996, - - 804, 804, 1996, 804, 804, 1698, 804, 804, 2403, 2405, - 804, 804, 804, 804, 805, 805, 805, 805, 906, 906, - 906, 906, 908, 908, 908, 908, 2089, 1403, 1996, 943, - 1403, 963, 963, 963, 963, 805, 943, 805, 805, 2406, - 1403, 943, 963, 906, 2095, 1403, 2407, 908, 988, 988, - 988, 988, 1767, 943, 2024, 1767, 963, 995, 995, 995, - 995, 1717, 805, 2408, 1717, 805, 805, 805, 805, 805, - 1767, 2410, 805, 805, 1717, 805, 2105, 943, 2089, 805, - 2024, 805, 805, 805, 805, 805, 805, 806, 996, 996, - 996, 996, 806, 2411, 2412, 806, 2095, 806, 806, 806, - - 806, 806, 806, 806, 806, 806, 806, 943, 2025, 2409, - 2028, 806, 985, 985, 985, 985, 985, 2409, 985, 997, - 997, 997, 997, 985, 985, 985, 1022, 1022, 1022, 1022, - 1841, 985, 2105, 1841, 2025, 806, 2028, 806, 1028, 1028, - 1028, 1028, 1881, 1841, 1022, 1881, 1027, 1027, 1027, 1027, - 2413, 1032, 1032, 1032, 1032, 1881, 1031, 1031, 1031, 1031, - 1447, 1447, 1447, 1028, 1447, 806, 807, 807, 807, 807, - 2032, 1027, 1033, 1033, 1033, 1033, 1032, 807, 1032, 1447, - 2033, 1031, 1036, 1036, 1036, 1036, 2036, 807, 2093, 807, - 807, 1040, 1040, 1040, 1040, 1832, 2032, 1033, 1832, 1033, - - 2414, 2100, 1037, 1037, 1037, 1037, 2033, 1042, 1042, 1042, - 1042, 2415, 2036, 1832, 807, 1447, 1040, 807, 807, 807, - 807, 807, 807, 2418, 807, 807, 2103, 807, 1027, 1037, - 2093, 807, 1042, 807, 807, 807, 807, 807, 807, 808, - 1031, 2419, 2422, 2100, 808, 2100, 2093, 808, 2423, 808, - 808, 808, 808, 808, 808, 808, 808, 808, 808, 1043, - 1043, 1043, 1043, 1044, 1044, 1044, 1044, 1045, 1045, 1045, - 1045, 1046, 1046, 1046, 1046, 1040, 1048, 1048, 1048, 1048, - 1049, 1049, 1049, 1049, 2103, 2035, 2424, 808, 1050, 1050, - 1050, 1050, 1102, 1102, 1102, 1102, 1046, 1057, 2035, 1882, - - 2115, 1048, 1882, 2420, 2420, 1049, 1057, 1057, 1057, 1057, - 1057, 2035, 1882, 1050, 2425, 2076, 2217, 808, 809, 1063, - 1063, 1063, 1063, 809, 2035, 2217, 809, 2115, 809, 809, - 809, 809, 809, 809, 809, 809, 809, 809, 1058, 1058, - 1058, 1058, 809, 1324, 1063, 1044, 1324, 1982, 1982, 1045, - 2427, 1060, 1060, 1060, 1060, 1982, 1058, 2076, 1048, 1079, - 1079, 1079, 1079, 2431, 2448, 2469, 809, 2076, 809, 1060, - 2130, 1324, 1079, 2130, 2470, 2130, 1080, 1080, 1080, 1080, - 1083, 1083, 1083, 1083, 1982, 2472, 2121, 809, 1084, 1084, - 1084, 1084, 1085, 1085, 1085, 1085, 809, 1062, 1062, 1062, - - 1062, 1080, 1324, 1062, 2432, 1083, 1087, 1087, 1087, 1087, - 2431, 1531, 2121, 1084, 2448, 1084, 2426, 1085, 2005, 1085, - 1324, 2005, 1062, 1088, 1088, 1088, 1088, 1089, 1089, 1089, - 1089, 1087, 2426, 1087, 1090, 1090, 1090, 1090, 1110, 1110, - 1110, 1110, 1092, 1092, 1092, 1092, 2008, 2005, 1088, 2008, - 1088, 1531, 1089, 2473, 1089, 1531, 1062, 2432, 1062, 1090, - 1531, 1090, 1062, 1087, 1083, 1062, 1062, 1092, 1062, 1092, - 2438, 1062, 1062, 1062, 1062, 2008, 2439, 2293, 1091, 1091, - 1091, 1091, 1104, 1104, 1104, 1104, 1093, 1093, 1093, 1093, - 1094, 1094, 1094, 1094, 1095, 1095, 1095, 1095, 2434, 1088, - - 2122, 1090, 1089, 1091, 2293, 1091, 1523, 1104, 2436, 1090, - 1092, 1093, 2325, 1093, 2438, 1094, 2474, 1094, 2135, 1095, - 2439, 1095, 1096, 1096, 1096, 1096, 2122, 2339, 1097, 1097, - 1097, 1097, 2416, 1098, 1098, 1098, 1098, 2416, 1091, 2325, - 1099, 1099, 1099, 1099, 2135, 2434, 1523, 1096, 1094, 1096, - 1523, 1093, 2136, 1097, 2339, 1097, 1093, 1095, 1098, 1523, - 1098, 1100, 1100, 1100, 1100, 1099, 2436, 1099, 1106, 1106, - 1106, 1106, 1101, 1101, 1101, 1101, 1983, 1983, 2136, 1096, - 1103, 1103, 1103, 1103, 1983, 2477, 1100, 2478, 1100, 1107, - 1107, 1107, 1107, 1106, 2441, 1096, 1097, 1101, 2479, 1101, - - 1108, 1108, 1108, 1108, 1098, 1099, 2346, 1103, 1111, 1111, - 1111, 1111, 1234, 1983, 1107, 2481, 1107, 1115, 1115, 1115, - 1115, 1116, 1116, 1116, 1116, 1108, 1100, 1108, 1117, 1117, - 1117, 1117, 1115, 2346, 2437, 1111, 1118, 1118, 1118, 1118, - 1119, 1119, 1119, 1119, 2352, 1101, 1124, 1124, 1124, 1124, - 2441, 2376, 1106, 1125, 1125, 1125, 1125, 2445, 1234, 1119, - 1130, 1130, 1130, 1130, 1118, 1124, 1131, 1131, 1131, 1131, - 1234, 2352, 1130, 1134, 1234, 1134, 1134, 1131, 2376, 1134, - 1136, 1136, 1136, 1136, 1134, 1137, 1137, 1137, 1137, 1141, - 2484, 2437, 1134, 2485, 1715, 1118, 2098, 1715, 1141, 1141, - - 1141, 1141, 1141, 1142, 1142, 1142, 1142, 1715, 2445, 1118, - 2489, 1118, 1715, 1118, 1145, 1145, 1145, 1145, 1147, 1147, - 1147, 1147, 1148, 1148, 1148, 1148, 1149, 1149, 1149, 1149, - 1151, 1151, 1151, 1151, 1153, 1153, 1153, 1153, 2219, 1145, - 2289, 2098, 2233, 1147, 2098, 2233, 2317, 1148, 1154, 1154, - 1154, 1154, 2318, 2098, 2098, 1151, 1134, 1134, 1158, 1153, - 1155, 1155, 1155, 1155, 2219, 2444, 2289, 1158, 1158, 1158, - 1158, 1158, 2317, 1154, 1162, 1162, 1162, 1162, 2318, 1195, - 1195, 1195, 2319, 1195, 1208, 1208, 1208, 1208, 1215, 1215, - 1215, 1215, 1162, 1195, 1216, 1216, 1216, 1216, 1195, 2490, - - 2491, 1215, 1147, 1245, 2442, 2233, 1245, 2492, 2319, 2444, - 1266, 1266, 1266, 1266, 2011, 2321, 1245, 2011, 1153, 2494, - 2447, 1245, 2380, 1266, 1268, 1268, 1268, 1268, 1266, 1271, - 1271, 1271, 1271, 1245, 1195, 1222, 1222, 1222, 1222, 1222, - 1266, 2321, 1222, 2011, 2449, 1222, 1222, 1222, 1222, 2380, - 1222, 1222, 1222, 1222, 1222, 2329, 2497, 1245, 1269, 1269, - 1269, 1269, 2442, 2447, 1266, 1273, 1273, 1273, 1273, 1274, - 1286, 1269, 1274, 1286, 1291, 1291, 1291, 1291, 1273, 2450, - 2499, 2329, 1274, 1286, 1295, 2333, 2013, 1295, 1286, 2013, - 2449, 2337, 1291, 1298, 1298, 1298, 1298, 2500, 2014, 1274, - - 1286, 2014, 1295, 1301, 1301, 1301, 1301, 1302, 1302, 1302, - 1302, 2333, 2501, 2149, 1295, 2013, 2149, 2337, 1298, 1303, - 1303, 1303, 1303, 1274, 1286, 2455, 2149, 2014, 1301, 2450, - 2461, 2451, 1302, 1305, 1305, 1305, 1305, 2502, 1295, 1310, - 1310, 1310, 1310, 1318, 1318, 1318, 1318, 1320, 1320, 1320, - 1320, 1321, 1321, 1321, 1321, 1322, 1322, 1322, 1322, 2503, - 1338, 1338, 1338, 1338, 1340, 1340, 1340, 1340, 1318, 2338, - 2341, 2015, 1320, 1338, 2015, 2451, 1321, 2353, 1338, 1341, - 1341, 1341, 1341, 2455, 2461, 1343, 1343, 1301, 1343, 1343, - 1338, 2430, 1341, 1343, 2504, 2338, 2341, 1341, 2505, 1343, - - 2015, 1343, 1343, 2353, 2417, 1343, 1343, 2417, 2452, 1341, - 1344, 1344, 1344, 1344, 1338, 1346, 1346, 1346, 1346, 1347, - 1347, 1347, 1347, 1349, 1349, 1349, 1349, 1395, 1395, 1395, - 1395, 1320, 1347, 1341, 1348, 1348, 1349, 1348, 1348, 2430, - 1344, 2443, 1348, 1396, 1396, 1396, 1396, 2440, 1348, 1347, - 1348, 1348, 2452, 1349, 1348, 1348, 1396, 1421, 1421, 1421, - 1421, 2417, 2506, 2507, 1344, 1422, 1422, 1422, 1422, 1425, - 1425, 1425, 1425, 1347, 2457, 2508, 2509, 1349, 1424, 1424, - 1424, 1424, 1421, 2443, 1422, 1422, 1422, 1422, 1422, 1422, - 1422, 2443, 2511, 2512, 1425, 2440, 2465, 1424, 1424, 1424, - - 1424, 1424, 1424, 1424, 1427, 1427, 1427, 1427, 1428, 1428, - 1428, 1428, 1429, 1429, 1429, 1429, 1431, 1431, 1431, 1431, - 1435, 1435, 1435, 1435, 2446, 2457, 2458, 1431, 2460, 1427, - 2513, 1435, 2340, 1428, 1438, 1438, 1438, 1438, 1439, 1439, - 1439, 1439, 1431, 2536, 2363, 2340, 1435, 2462, 2465, 1438, - 1440, 1440, 1440, 1440, 1441, 1441, 1441, 1441, 2340, 1442, - 1442, 1442, 1442, 1441, 2538, 2540, 2446, 1441, 1442, 1431, - 2363, 2340, 1442, 1462, 1462, 1462, 1462, 1463, 1463, 1463, - 1463, 1464, 1464, 1464, 1464, 2458, 2460, 2541, 1427, 1465, - 1465, 1465, 1465, 1466, 1466, 1466, 1466, 2543, 1467, 2548, - - 2462, 2459, 1435, 1467, 1488, 1482, 2370, 1488, 1482, 2549, - 2456, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 2379, 1478, - 2550, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, - 1478, 2386, 2370, 1488, 1482, 1498, 1498, 1498, 1498, 1499, - 1499, 1499, 1499, 2553, 2379, 1492, 1488, 1488, 1492, 1482, - 2554, 1482, 1546, 1546, 1546, 1546, 2555, 2386, 2456, 1478, - 2459, 2459, 1500, 1500, 1500, 1500, 2387, 2556, 1502, 1502, - 1502, 1502, 1488, 1488, 1492, 1482, 1467, 1473, 1482, 1473, - 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1478, - 2390, 1492, 2387, 1473, 2557, 1498, 1505, 1505, 1505, 1505, - - 1625, 1625, 1625, 1625, 1498, 2558, 2463, 1484, 1498, 1484, - 2017, 1498, 2471, 2017, 1484, 1499, 2390, 1473, 1492, 1473, - 1475, 1484, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, - 1475, 1475, 1500, 1484, 2561, 1484, 1475, 1502, 2471, 2017, - 1484, 1554, 1554, 1554, 1554, 1554, 2018, 1502, 1484, 2018, - 1569, 2562, 1569, 1505, 2463, 2564, 2566, 1487, 1487, 1487, - 1475, 1505, 1475, 1480, 1480, 1480, 1480, 1480, 1480, 1569, - 1480, 1480, 1487, 1480, 1480, 2018, 1480, 1480, 1569, 1480, - 1480, 1480, 1480, 1487, 1559, 1559, 1559, 1559, 1559, 1480, - 1480, 1480, 1480, 1480, 1480, 2567, 1480, 1480, 1487, 1480, - - 1480, 1494, 1480, 1480, 1494, 1569, 1480, 1480, 1480, 1480, - 1487, 1520, 1520, 1520, 1520, 2568, 1494, 2569, 1494, 1521, - 1521, 1521, 1521, 1524, 1524, 1524, 1524, 1494, 1520, 2510, - 1494, 1522, 1522, 1522, 1522, 2570, 1521, 2571, 2510, 2573, - 1524, 2019, 2453, 1494, 2019, 1494, 1515, 2574, 1522, 2575, - 2480, 1515, 1990, 2576, 1515, 1990, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1528, 1528, 1528, 1528, - 2019, 1520, 1542, 1542, 1542, 1542, 1626, 1626, 1626, 1626, - 1520, 1990, 2560, 1528, 1520, 2560, 2453, 1520, 1522, 2577, - 2578, 2453, 1524, 2464, 1515, 1521, 1990, 1542, 1522, 2483, - - 2579, 1522, 1524, 1544, 1544, 1544, 1544, 1545, 1545, 1545, - 1545, 1564, 1564, 1564, 1564, 1564, 1571, 1571, 1571, 1571, - 2515, 2580, 1990, 1528, 1515, 1517, 2480, 2483, 1544, 2515, - 1517, 1528, 1545, 1517, 2464, 1517, 1517, 1517, 1517, 1517, - 1517, 1517, 1517, 1517, 1517, 2021, 1571, 2581, 2021, 1517, - 2464, 1572, 1572, 1572, 1572, 1603, 1603, 1603, 1603, 1603, - 1608, 1608, 1608, 1608, 1608, 1613, 1613, 1613, 1613, 1613, - 1571, 2582, 2583, 1517, 2021, 1517, 1618, 1618, 1618, 1618, - 1618, 1572, 1627, 1627, 1627, 1627, 2584, 1544, 1628, 1628, - 1628, 1628, 1628, 1629, 1629, 1629, 1629, 1630, 1630, 1630, - - 1630, 1630, 2585, 1517, 1518, 1572, 2586, 2563, 2565, 1518, - 2563, 2565, 1518, 2587, 1518, 1518, 1518, 1518, 1518, 1518, - 1518, 1518, 1518, 1518, 1631, 1631, 1631, 1631, 1631, 1632, - 1632, 1632, 1632, 1633, 1633, 1633, 1633, 1634, 1634, 1634, - 1634, 1636, 1636, 1636, 1636, 1637, 1637, 1637, 1637, 2588, - 1637, 2589, 1518, 1638, 1638, 1638, 1638, 1639, 1639, 1639, - 1639, 1679, 1634, 1681, 1707, 2572, 1636, 2545, 2572, 2590, - 1637, 2591, 2592, 1707, 1707, 1707, 1707, 1707, 1638, 2545, - 2595, 2596, 1518, 1536, 2545, 1679, 2000, 1681, 1536, 2000, - 2598, 1536, 2599, 1536, 1536, 1536, 1536, 1536, 1536, 1536, - - 1536, 1536, 1536, 1694, 1694, 1694, 1694, 1536, 2600, 1679, - 1704, 1681, 1704, 2601, 1694, 2000, 1704, 1711, 1711, 1711, - 1711, 1704, 1704, 1704, 2602, 1636, 2603, 2454, 1694, 1704, - 2454, 1536, 2000, 1536, 1709, 1709, 1709, 1709, 1709, 1679, - 1709, 1681, 2604, 2605, 2454, 1709, 1709, 1709, 1536, 1712, - 1712, 1712, 1712, 1709, 1723, 1723, 1723, 1723, 2606, 2000, - 2607, 1536, 1724, 1724, 1724, 1724, 1725, 1725, 1725, 1725, - 1726, 1726, 1726, 1726, 1727, 1727, 1727, 1727, 2608, 1723, - 1728, 1728, 1728, 1728, 2454, 2593, 2609, 1724, 2593, 1724, - 1729, 1729, 1729, 1729, 1991, 2610, 2611, 1726, 2612, 2022, - - 2613, 1727, 2022, 1991, 2614, 1728, 1730, 1730, 1730, 1730, - 1731, 1731, 1731, 1731, 1742, 1729, 1734, 1734, 1734, 1734, - 1991, 2615, 2616, 1742, 1742, 1742, 1742, 1742, 2022, 1991, - 2614, 1730, 1761, 1761, 1761, 1761, 2617, 2618, 1723, 2621, - 1762, 1762, 1762, 1762, 2622, 1761, 1763, 1763, 1763, 1763, - 1770, 1770, 1770, 1770, 1771, 1771, 1771, 1771, 1772, 1772, - 1772, 1772, 2623, 2618, 1728, 1762, 1774, 1774, 1774, 1774, - 2624, 1763, 2625, 2626, 2627, 1770, 2628, 2629, 2630, 1771, - 2631, 1771, 1775, 1775, 1775, 1775, 1776, 1776, 1776, 1776, - 2633, 1774, 2635, 1774, 1777, 1777, 1777, 1777, 2657, 1778, - - 1778, 1778, 1778, 1779, 1779, 1779, 1779, 1775, 2664, 1775, - 2682, 1776, 2686, 1776, 1780, 1780, 1780, 1780, 2637, 1777, - 2026, 1777, 2594, 2026, 1778, 2594, 1778, 2690, 1779, 2692, - 1779, 2694, 2697, 2594, 1770, 1796, 1796, 1796, 1796, 1780, - 1774, 1780, 1781, 1781, 1781, 1781, 2637, 1776, 2639, 2026, - 1775, 1782, 1782, 1782, 1782, 1783, 1783, 1783, 1783, 1777, - 1778, 1784, 1784, 1784, 1784, 2029, 2638, 1781, 2029, 1781, - 1785, 1785, 1785, 1785, 2639, 1780, 1782, 2699, 1782, 1779, - 1783, 2701, 1783, 2704, 2709, 2713, 1784, 2724, 1784, 1786, - 1786, 1786, 1786, 2638, 2029, 1785, 2726, 1785, 1787, 1787, - - 1787, 1787, 1788, 1788, 1788, 1788, 1789, 1789, 1789, 1789, - 1790, 1790, 1790, 1790, 1786, 2030, 1786, 2649, 2030, 1781, - 2728, 2730, 1783, 1787, 2734, 1787, 1782, 1788, 2656, 1788, - 1784, 1789, 2735, 1789, 2737, 1790, 2742, 1790, 2743, 1791, - 1791, 1791, 1791, 2649, 2030, 1785, 1792, 1792, 1792, 1792, - 1793, 1793, 1793, 1793, 2656, 1794, 1794, 1794, 1794, 1795, - 1795, 1795, 1795, 1788, 1791, 1786, 1791, 2744, 2745, 1787, - 2746, 2747, 2748, 1792, 2749, 2750, 1789, 1793, 2751, 1790, - 1794, 2661, 2754, 2667, 1795, 2754, 1795, 2668, 1797, 1797, - 1797, 1797, 1798, 1798, 1798, 1798, 1803, 1803, 1803, 1803, - - 1808, 1808, 1808, 1808, 1814, 1814, 1814, 1814, 2661, 2667, - 2755, 1808, 1813, 2668, 1791, 1797, 2756, 2757, 2758, 1798, - 2759, 1813, 1813, 1813, 1813, 1813, 1816, 1816, 1816, 1816, - 1819, 1819, 1819, 1819, 1820, 1820, 1820, 1820, 2671, 1794, - 1821, 1821, 1821, 1821, 1823, 1823, 1823, 1823, 1824, 1824, - 1824, 1824, 2760, 2762, 2763, 1819, 2765, 2766, 2764, 1820, - 1825, 1825, 1825, 1825, 2671, 1830, 2764, 2768, 2812, 1823, - 2777, 2813, 2815, 1824, 1830, 1830, 1830, 1830, 1830, 1905, - 1905, 1905, 1905, 1906, 1906, 1906, 1906, 1907, 1907, 1907, - 1907, 1912, 1912, 1912, 1912, 1913, 1913, 1913, 1913, 1914, - - 1914, 1914, 1914, 2774, 1905, 2816, 2817, 2684, 1906, 2823, - 1921, 1921, 1921, 1921, 1819, 2712, 1912, 2769, 2037, 2768, - 1913, 2037, 2777, 1921, 1922, 1922, 1922, 1922, 1823, 1923, - 1923, 1923, 1923, 2684, 2708, 1924, 1924, 1924, 1924, 2824, - 1921, 2712, 1923, 1943, 1943, 1943, 1943, 2037, 1924, 1946, - 1946, 1946, 1946, 2717, 1922, 1956, 1956, 1956, 1956, 1923, - 2774, 2708, 2718, 1905, 1921, 1924, 1961, 1961, 1961, 1961, - 2769, 1957, 1957, 1957, 1957, 1912, 2723, 2826, 1922, 2717, - 1956, 2778, 2790, 1923, 1958, 1958, 1958, 1958, 2718, 1924, - 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1959, 1959, 1959, - - 1959, 2771, 2723, 1958, 1958, 1958, 1958, 1958, 1958, 1958, - 1960, 1960, 1960, 1960, 1976, 1976, 1976, 1976, 1977, 1977, - 1977, 1977, 1959, 1978, 2782, 2778, 2038, 2779, 1978, 2038, - 1995, 1995, 1995, 2780, 2770, 1960, 1978, 1978, 1978, 1978, - 1978, 1978, 1978, 1980, 2790, 1995, 2001, 2786, 1980, 2828, - 2781, 2831, 2001, 2001, 2771, 2038, 1980, 1980, 1980, 1980, - 1980, 1980, 1980, 1992, 2039, 1992, 2040, 2039, 2800, 2040, - 1992, 1995, 2001, 2002, 2785, 2779, 2002, 1992, 2782, 2001, - 2001, 1959, 2042, 2042, 2042, 2042, 2780, 2802, 2002, 1992, - 2002, 1992, 2770, 2039, 2224, 2040, 1992, 2224, 2781, 2002, - - 2786, 1978, 2002, 2783, 1992, 2047, 2047, 2047, 2047, 2049, - 2049, 2049, 2049, 2832, 2783, 2002, 2800, 2002, 2785, 2787, - 2788, 1980, 1984, 2224, 1984, 1984, 1984, 1984, 1984, 1984, - 1984, 1984, 1984, 1984, 2054, 2054, 2054, 2054, 1984, 2060, - 2060, 2060, 2060, 2065, 2065, 2065, 2065, 2833, 2802, 2099, - 2099, 2099, 2099, 2109, 2109, 2109, 2109, 2110, 2110, 2110, - 2110, 2797, 1984, 2787, 1984, 1985, 2099, 1985, 1985, 1985, - 1985, 1985, 1985, 1985, 1985, 1985, 1985, 2271, 2109, 2788, - 2271, 1985, 2110, 2111, 2111, 2111, 2111, 2126, 2126, 2126, - 2126, 2145, 2127, 2127, 2127, 2127, 2128, 2128, 2128, 2128, - - 2145, 2145, 2145, 2145, 2145, 1985, 2271, 1985, 1987, 2835, - 2838, 2797, 2126, 1987, 2784, 2795, 1987, 2127, 1987, 1987, - 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 2152, 2152, - 2152, 2152, 2154, 2154, 2154, 2154, 2161, 2109, 2181, 2181, - 2181, 2181, 2839, 2799, 2789, 2161, 2161, 2161, 2161, 2161, - 2796, 2181, 2212, 2152, 2840, 2793, 1987, 2186, 2186, 2186, - 2186, 2212, 2212, 2212, 2212, 2212, 2307, 2307, 2307, 2307, - 2805, 2126, 2784, 2795, 2187, 2187, 2187, 2187, 2188, 2188, - 2188, 2188, 2186, 2799, 2186, 2825, 1987, 2074, 2841, 2074, - 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2187, - - 2789, 2187, 2794, 2188, 2796, 2188, 2793, 2190, 2190, 2190, - 2190, 2798, 2152, 2806, 2189, 2189, 2189, 2189, 2805, 2191, - 2191, 2191, 2191, 2192, 2192, 2192, 2192, 2074, 2842, 2803, - 2313, 2186, 2190, 2313, 2190, 2193, 2193, 2193, 2193, 2189, - 2843, 2189, 2844, 2074, 2191, 2825, 2191, 2845, 2192, 2794, - 2192, 2188, 2846, 2294, 2294, 2294, 2294, 2074, 2106, 2313, - 2193, 2806, 2193, 2106, 2847, 2848, 2106, 2798, 2106, 2106, - 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2294, 2803, - 2190, 2315, 2106, 2189, 2315, 2849, 2191, 2196, 2196, 2196, - 2196, 2850, 2193, 2195, 2195, 2195, 2195, 2192, 2194, 2194, - - 2194, 2194, 2197, 2197, 2197, 2197, 2106, 2852, 2106, 2853, - 2315, 2876, 2196, 2877, 2196, 2881, 2882, 2883, 2195, 2884, - 2195, 2216, 2887, 2194, 2888, 2194, 2889, 2197, 2893, 2197, - 2216, 2216, 2216, 2216, 2216, 2894, 2106, 2107, 2198, 2198, - 2198, 2198, 2107, 2320, 2196, 2107, 2320, 2107, 2107, 2107, - 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2322, 2195, 2194, - 2322, 2107, 2896, 2198, 2898, 2198, 2900, 2197, 2199, 2199, - 2199, 2199, 2320, 2200, 2200, 2200, 2200, 2899, 2201, 2201, - 2201, 2201, 2901, 2804, 2899, 2107, 2322, 2107, 2902, 2202, - 2202, 2202, 2202, 2199, 2903, 2199, 2323, 2198, 2200, 2323, - - 2200, 2324, 2107, 2201, 2324, 2201, 2905, 2203, 2203, 2203, - 2203, 2906, 2907, 2909, 2202, 2107, 2202, 2326, 2910, 2327, - 2326, 2328, 2327, 2804, 2328, 2323, 2402, 2402, 2402, 2402, - 2324, 2804, 2203, 2200, 2203, 2199, 2295, 2295, 2295, 2295, - 2330, 2332, 2200, 2330, 2332, 2912, 2326, 2201, 2327, 2914, - 2328, 2334, 2202, 2915, 2334, 2295, 2295, 2295, 2295, 2295, - 2295, 2295, 2335, 2891, 2342, 2335, 2891, 2342, 2916, 2330, - 2332, 2404, 2404, 2404, 2404, 2343, 2344, 2917, 2343, 2344, - 2334, 2913, 2345, 2203, 2310, 2345, 2918, 2348, 2913, 2310, - 2348, 2335, 2310, 2342, 2310, 2310, 2310, 2310, 2310, 2310, - - 2310, 2310, 2310, 2310, 2343, 2344, 2350, 2354, 2919, 2350, - 2354, 2345, 2356, 2920, 2357, 2356, 2348, 2357, 2359, 2361, - 2364, 2359, 2361, 2364, 2366, 2368, 2371, 2366, 2368, 2371, - 2374, 2375, 2310, 2374, 2375, 2350, 2354, 2377, 2924, 2895, - 2377, 2356, 2895, 2357, 2925, 2404, 2927, 2359, 2361, 2364, - 2928, 2929, 2930, 2366, 2368, 2371, 2931, 2932, 2381, 2374, - 2375, 2381, 2310, 2311, 2384, 2933, 2377, 2384, 2311, 2385, - 2934, 2311, 2385, 2311, 2311, 2311, 2311, 2311, 2311, 2311, - 2311, 2311, 2311, 2388, 2937, 2389, 2388, 2381, 2389, 2391, - 2938, 2393, 2391, 2384, 2393, 2939, 2395, 2397, 2385, 2395, - - 2397, 2399, 2940, 2941, 2399, 2421, 2421, 2421, 2421, 2943, - 2547, 2311, 2388, 2547, 2389, 2944, 2466, 2945, 2391, 2946, - 2393, 2433, 2433, 2433, 2433, 2395, 2397, 2466, 2947, 2948, - 2399, 2435, 2435, 2435, 2435, 2466, 2942, 2950, 2433, 2547, - 2466, 2311, 2429, 2475, 2475, 2475, 2475, 2429, 2435, 2953, - 2429, 2958, 2429, 2429, 2429, 2429, 2429, 2429, 2429, 2429, - 2429, 2429, 2942, 2488, 2466, 2476, 2476, 2476, 2476, 2962, - 2956, 2475, 2488, 2488, 2488, 2488, 2488, 2498, 2498, 2498, - 2498, 2964, 2514, 2514, 2514, 2514, 2516, 2516, 2516, 2516, - 2429, 2966, 2969, 2476, 2466, 2514, 2956, 2517, 2517, 2517, - - 2517, 2535, 2535, 2535, 2535, 2435, 2897, 2429, 2971, 2897, - 2973, 2516, 2904, 2516, 2976, 2904, 2518, 2518, 2518, 2518, - 2429, 2467, 2517, 2979, 2517, 2908, 2467, 2551, 2908, 2467, - 2551, 2467, 2467, 2467, 2467, 2467, 2467, 2467, 2467, 2467, - 2467, 2518, 2978, 2518, 2829, 2467, 2990, 2829, 2519, 2519, - 2519, 2519, 2522, 2522, 2522, 2522, 2551, 2992, 2994, 2520, - 2520, 2520, 2520, 2996, 2521, 2521, 2521, 2521, 2978, 2467, - 3005, 2467, 2829, 2519, 3011, 2519, 3017, 2522, 2597, 2522, - 2911, 2597, 3021, 2911, 2520, 2518, 2520, 2921, 3023, 2521, - 2921, 2521, 3026, 3028, 3029, 2523, 2523, 2523, 2523, 2467, - - 2468, 2524, 2524, 2524, 2524, 2468, 3002, 2597, 2468, 2519, - 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, - 2523, 2520, 2523, 2522, 2468, 2521, 2524, 2983, 2524, 2525, - 2525, 2525, 2525, 3002, 2526, 2526, 2526, 2526, 2527, 2527, - 2527, 2527, 2528, 2528, 2528, 2528, 2634, 3030, 2468, 2634, - 2468, 2468, 3035, 2983, 2525, 2922, 2525, 2984, 2922, 2526, - 2524, 2526, 3036, 2527, 3037, 2527, 2922, 2528, 2989, 2528, - 2523, 2529, 2529, 2529, 2529, 2634, 3016, 3038, 2468, 2530, - 2530, 2530, 2530, 2984, 2531, 2531, 2531, 2531, 2525, 2532, - 2532, 2532, 2532, 3039, 2989, 3040, 2529, 2527, 2529, 3042, - - 2636, 2526, 3016, 2636, 2530, 3041, 2530, 3043, 3041, 2531, - 2640, 2531, 3044, 2640, 2532, 3048, 2532, 2528, 2533, 2533, - 2533, 2533, 2534, 2534, 2534, 2534, 3049, 3050, 2529, 2636, - 3051, 2537, 2537, 2537, 2537, 2619, 2619, 2619, 2619, 2640, - 2530, 2531, 2537, 2533, 3052, 2533, 3054, 2534, 3057, 2534, - 2620, 2620, 2620, 2620, 2619, 2619, 2619, 2619, 2619, 2619, - 2619, 2736, 2736, 2736, 2736, 2738, 2738, 2738, 2738, 2620, - 2620, 2620, 2620, 2620, 2620, 2620, 2632, 2642, 3058, 2534, - 2642, 2632, 2643, 2645, 2647, 2643, 2645, 2647, 3059, 2632, - 2632, 2632, 2632, 2632, 2632, 2632, 2650, 2652, 2654, 2650, - - 2652, 2654, 2658, 3060, 2659, 2658, 2642, 2659, 3105, 3106, - 3109, 2643, 2645, 2647, 2662, 2665, 2666, 2662, 2665, 2666, - 2669, 2670, 3063, 2669, 2670, 2650, 2652, 2654, 3110, 2672, - 3070, 2658, 2672, 2659, 2674, 2676, 2678, 2674, 2676, 2678, - 3111, 2632, 3062, 2662, 2665, 2666, 3117, 3072, 2680, 2669, - 2670, 2680, 2681, 2683, 2632, 2681, 2683, 2685, 2672, 2687, - 2685, 3065, 2687, 2674, 2676, 2678, 2688, 2691, 2693, 2688, - 2691, 2693, 2695, 2696, 3070, 2695, 2696, 2680, 3063, 3120, - 2698, 2681, 2683, 2698, 2700, 3062, 2685, 2700, 2687, 2702, - 2703, 2705, 2702, 2703, 2705, 2688, 2691, 2693, 3064, 3072, - - 2706, 2695, 2696, 2706, 2710, 2711, 3069, 2710, 2711, 2698, - 3074, 2714, 2715, 2700, 2714, 2715, 3071, 3065, 2702, 2703, - 2705, 2719, 2721, 2725, 2719, 2721, 2725, 2727, 2729, 2706, - 2727, 2729, 2731, 2710, 2711, 2731, 2732, 3020, 3064, 2732, - 2714, 2715, 2739, 2739, 2739, 2739, 2740, 2740, 2740, 2740, - 2719, 2721, 2725, 3069, 3078, 3125, 2727, 2729, 3071, 3073, - 3119, 2731, 3074, 3020, 3075, 2732, 2741, 2741, 2741, 2741, - 2752, 2752, 2752, 2752, 2753, 2753, 2753, 2753, 2761, 2761, - 2761, 2761, 2772, 2772, 2772, 2772, 2775, 2775, 2775, 2775, - 2776, 2776, 2776, 2776, 2791, 2791, 2791, 2791, 2814, 2772, - - 3083, 2814, 3073, 2775, 3081, 2879, 3085, 2776, 2879, 3130, - 3078, 2791, 2792, 2792, 2792, 2792, 2801, 2801, 2801, 2801, - 2808, 3077, 3075, 2885, 2809, 3079, 2885, 2814, 3132, 2792, - 3088, 2808, 3119, 2801, 2879, 2809, 2809, 3133, 2818, 2818, - 2818, 2818, 3091, 2809, 2808, 2761, 2767, 3081, 2809, 3092, - 3085, 2767, 2885, 3083, 2767, 3086, 2767, 2767, 2767, 2767, - 2767, 2767, 2767, 2767, 2767, 2767, 2818, 2955, 2808, 3077, - 2955, 3134, 2809, 2819, 2819, 2819, 2819, 3079, 2819, 2820, - 2820, 2820, 2820, 2801, 2821, 2821, 2821, 2821, 3088, 2821, - 2822, 2822, 2822, 2822, 2767, 3091, 2955, 3092, 2808, 3086, - - 3082, 2767, 2809, 2836, 2836, 2836, 2836, 2820, 2837, 2837, - 2837, 2837, 2851, 2851, 2851, 2851, 2854, 2854, 2854, 2854, - 2855, 2855, 2855, 2855, 2767, 2773, 2773, 2773, 3095, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2854, 2773, 2854, 2773, 2855, 3136, 2855, 2856, 2856, - 2856, 2856, 3082, 2773, 2773, 2773, 2773, 2773, 2857, 2857, - 2857, 2857, 2858, 2858, 2858, 2858, 2872, 2872, 2872, 2872, - 3139, 2957, 3140, 2856, 2957, 2856, 2859, 2859, 2859, 2859, - 2773, 3142, 2773, 2857, 3163, 2857, 3095, 2858, 3097, 2858, - 3164, 2860, 2860, 2860, 2860, 2873, 2873, 2873, 2873, 3089, - - 2957, 2859, 3165, 2859, 3080, 2959, 2873, 3080, 2959, 2773, - 2773, 2773, 2810, 3090, 3096, 2857, 2860, 3167, 2860, 3168, - 2810, 3080, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, - 2810, 2810, 2960, 2859, 2959, 2960, 2810, 2861, 2861, 2861, - 2861, 3097, 2862, 2862, 2862, 2862, 2863, 2863, 2863, 2863, - 3169, 3089, 2860, 2864, 2864, 2864, 2864, 3171, 3172, 3175, - 2810, 2960, 2861, 3090, 2861, 3173, 3096, 2862, 3173, 2862, - 3176, 2863, 3121, 2863, 3174, 3121, 2810, 3174, 2864, 3177, - 2864, 2926, 2926, 2926, 2926, 3178, 2865, 2865, 2865, 2865, - 2810, 2811, 2866, 2866, 2866, 2866, 2811, 3098, 3179, 2811, - - 3121, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, - 2811, 2865, 2861, 2865, 3180, 2811, 2862, 2866, 3181, 2866, - 2863, 2867, 2867, 2867, 2867, 2868, 2868, 2868, 2868, 2869, - 2869, 2869, 2869, 3183, 2870, 2870, 2870, 2870, 3184, 2811, - 3187, 2811, 2874, 2874, 2874, 2874, 2867, 3189, 2867, 3098, - 2868, 3191, 2868, 2874, 2869, 2963, 2869, 3192, 2963, 2870, - 2811, 2870, 2871, 2871, 2871, 2871, 3185, 2866, 3182, 2811, - 3193, 3182, 2965, 2967, 2968, 2965, 2967, 2968, 3194, 2970, - 3185, 2954, 2970, 2867, 2963, 2972, 2954, 2871, 2972, 2871, - 3195, 3196, 3197, 2868, 2954, 2954, 2954, 2954, 2954, 2954, - - 2954, 2965, 2967, 2968, 2974, 3198, 2975, 2974, 2970, 2975, - 2977, 3199, 2980, 2977, 2972, 2980, 2981, 2985, 2987, 2981, - 2985, 2987, 2991, 2993, 2995, 2991, 2993, 2995, 2997, 2871, - 3201, 2997, 3202, 2974, 2998, 2975, 2954, 2998, 3203, 2977, - 3000, 2980, 3204, 3000, 3205, 2981, 2985, 2987, 3206, 3207, - 3209, 2991, 2993, 2995, 3210, 3003, 3211, 2997, 3003, 2954, - 3212, 3006, 3007, 2998, 3006, 3007, 3213, 3009, 3012, 3000, - 3009, 3012, 3013, 3014, 3018, 3013, 3014, 3018, 3019, 3022, - 3024, 3019, 3022, 3024, 3003, 3025, 3027, 3214, 3025, 3027, - 3006, 3007, 3031, 3031, 3031, 3031, 3009, 3012, 3215, 3217, - - 3218, 3013, 3014, 3018, 3219, 3227, 3234, 3019, 3022, 3024, - 3032, 3032, 3032, 3032, 3025, 3027, 3033, 3033, 3033, 3033, - 3034, 3034, 3034, 3034, 3045, 3045, 3045, 3045, 3047, 3047, - 3047, 3047, 3053, 3053, 3053, 3053, 3055, 3055, 3055, 3055, - 3056, 3056, 3056, 3056, 3076, 3076, 3076, 3076, 3076, 3076, - 3084, 3084, 3084, 3084, 3087, 3087, 3087, 3087, 3093, 3093, - 3093, 3093, 3094, 3094, 3094, 3094, 3099, 3084, 3238, 3100, - 3107, 3087, 3240, 3107, 3243, 3093, 3245, 3099, 3099, 3094, - 3100, 3100, 3224, 3248, 3122, 3099, 3166, 3122, 3100, 3166, - 3099, 3186, 3233, 3100, 3186, 3112, 3112, 3112, 3112, 3107, - - 3112, 3114, 3114, 3114, 3114, 3188, 3114, 3250, 3188, 3224, - 3055, 3061, 3122, 3252, 3099, 3166, 3061, 3100, 3233, 3061, - 3256, 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3061, - 3061, 3237, 3093, 3116, 3116, 3116, 3116, 3118, 3118, 3118, - 3118, 3264, 3190, 3123, 3099, 3190, 3123, 3100, 3127, 3127, - 3127, 3127, 3128, 3128, 3128, 3128, 3265, 3237, 3267, 3061, - 3123, 3268, 3123, 3123, 3123, 3123, 3123, 3123, 3129, 3129, - 3129, 3129, 3131, 3131, 3131, 3131, 3269, 3270, 3061, 3271, - 3272, 3135, 3135, 3135, 3135, 3137, 3137, 3137, 3137, 3061, - 3067, 3067, 3067, 3274, 3067, 3067, 3067, 3067, 3067, 3067, - - 3067, 3067, 3067, 3067, 3067, 3067, 3135, 3067, 3275, 3067, - 3138, 3138, 3138, 3138, 3141, 3141, 3141, 3141, 3067, 3067, - 3067, 3067, 3067, 3144, 3144, 3144, 3144, 3258, 3144, 3145, - 3145, 3145, 3145, 3276, 3146, 3146, 3146, 3146, 3147, 3147, - 3147, 3147, 3278, 3273, 3282, 3067, 3273, 3067, 3144, 3283, - 3144, 3287, 3288, 3258, 3145, 3135, 3145, 3289, 3290, 3146, - 3329, 3146, 3332, 3147, 3333, 3147, 3200, 3200, 3200, 3200, - 3152, 3152, 3152, 3152, 3067, 3067, 3067, 3068, 3068, 3068, - 3292, 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, - 3068, 3068, 3068, 3146, 3068, 3152, 3068, 3068, 3148, 3148, - - 3148, 3148, 3294, 3303, 3068, 3068, 3068, 3068, 3068, 3068, - 3149, 3149, 3149, 3149, 3300, 3151, 3151, 3151, 3151, 3153, - 3153, 3153, 3153, 3148, 3292, 3148, 3150, 3150, 3150, 3150, - 3310, 3293, 3068, 3068, 3068, 3149, 3334, 3149, 3336, 3337, - 3151, 3338, 3151, 3298, 3153, 3293, 3153, 3161, 3161, 3161, - 3161, 3150, 3303, 3150, 3300, 3339, 3222, 3148, 3161, 3222, - 3294, 3068, 3068, 3068, 3101, 3154, 3154, 3154, 3154, 3101, - 3310, 3304, 3101, 3302, 3101, 3101, 3101, 3101, 3101, 3101, - 3101, 3101, 3101, 3101, 3149, 3222, 3153, 3150, 3101, 3151, - 3154, 3298, 3154, 3155, 3155, 3155, 3155, 3156, 3156, 3156, - - 3156, 3312, 3157, 3157, 3157, 3157, 3158, 3158, 3158, 3158, - 3342, 3306, 3101, 3159, 3159, 3159, 3159, 3302, 3155, 3304, - 3155, 3347, 3156, 3225, 3156, 3311, 3225, 3157, 3301, 3157, - 3350, 3158, 3308, 3158, 3352, 3309, 3228, 3313, 3159, 3228, - 3159, 3312, 3101, 3102, 3160, 3160, 3160, 3160, 3102, 3341, - 3354, 3102, 3225, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3102, 3102, 3102, 3157, 3306, 3228, 3357, 3102, 3322, 3160, - 3301, 3160, 3229, 3231, 3159, 3229, 3231, 3311, 3235, 3309, - 3221, 3235, 3308, 3236, 3239, 3221, 3236, 3239, 3313, 3241, - 3318, 3102, 3241, 3221, 3221, 3221, 3221, 3221, 3221, 3221, - - 3242, 3229, 3231, 3242, 3324, 3362, 3341, 3235, 3102, 3364, - 3322, 3319, 3236, 3239, 3244, 3380, 3246, 3244, 3241, 3246, - 3247, 3102, 3103, 3247, 3249, 3251, 3321, 3249, 3251, 3242, - 3103, 3323, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, - 3103, 3103, 3318, 3244, 3383, 3246, 3103, 3221, 3253, 3247, - 3324, 3253, 3254, 3249, 3251, 3254, 3257, 3259, 3221, 3257, - 3259, 3261, 3262, 3319, 3261, 3262, 3266, 3266, 3266, 3266, - 3277, 3277, 3277, 3277, 3321, 3384, 3386, 3253, 3387, 3335, - 3390, 3254, 3335, 3323, 3385, 3257, 3259, 3385, 3391, 3392, - 3261, 3262, 3279, 3279, 3279, 3279, 3280, 3280, 3280, 3280, - - 3103, 3104, 3281, 3281, 3281, 3281, 3104, 3388, 3335, 3104, - 3388, 3104, 3104, 3104, 3104, 3104, 3104, 3104, 3104, 3104, - 3104, 3284, 3284, 3284, 3284, 3104, 3285, 3285, 3285, 3285, - 3286, 3286, 3286, 3286, 3394, 3295, 3295, 3295, 3295, 3299, - 3299, 3299, 3299, 3305, 3305, 3305, 3305, 3305, 3305, 3104, - 3389, 3104, 3295, 3389, 3395, 3398, 3299, 3307, 3307, 3307, - 3307, 3315, 3315, 3315, 3315, 3104, 3316, 3316, 3316, 3316, - 3280, 3399, 3393, 3396, 3307, 3393, 3396, 3400, 3315, 3104, - 3291, 3403, 3406, 3316, 3343, 3291, 3397, 3343, 3291, 3397, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - - 3317, 3317, 3317, 3317, 3320, 3320, 3320, 3320, 3340, 3340, - 3340, 3340, 3343, 3402, 3327, 3404, 3402, 3317, 3404, 3307, - 3405, 3320, 3407, 3405, 3344, 3327, 3404, 3344, 3291, 3409, - 3411, 3291, 3345, 3327, 3412, 3345, 3413, 3412, 3327, 3415, - 3316, 3344, 3416, 3344, 3344, 3344, 3344, 3344, 3344, 3345, - 3420, 3345, 3345, 3345, 3345, 3345, 3345, 3422, 3291, 3296, - 3296, 3296, 3327, 3296, 3296, 3296, 3296, 3296, 3296, 3296, - 3296, 3296, 3296, 3296, 3296, 3425, 3296, 3346, 3296, 3296, - 3346, 3348, 3348, 3348, 3348, 3427, 3296, 3296, 3296, 3296, - 3296, 3296, 3327, 3429, 3346, 3439, 3346, 3346, 3346, 3346, - - 3346, 3346, 3349, 3349, 3349, 3349, 3351, 3351, 3351, 3351, - 3353, 3353, 3353, 3353, 3296, 3296, 3296, 3355, 3355, 3355, - 3355, 3356, 3356, 3356, 3356, 3359, 3359, 3359, 3359, 3360, - 3360, 3360, 3360, 3442, 3446, 3353, 3448, 3358, 3358, 3358, - 3358, 3451, 3355, 3296, 3296, 3296, 3297, 3297, 3297, 3452, - 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, - 3297, 3297, 3358, 3297, 3431, 3297, 3297, 3361, 3361, 3361, - 3361, 3455, 3456, 3297, 3297, 3297, 3297, 3297, 3297, 3363, - 3363, 3363, 3363, 3441, 3353, 3367, 3367, 3367, 3367, 3458, - 3431, 3355, 3365, 3365, 3365, 3365, 3459, 3366, 3366, 3366, - - 3366, 3297, 3297, 3297, 3368, 3368, 3368, 3368, 3463, 3441, - 3367, 3464, 3367, 3369, 3369, 3369, 3369, 3365, 3465, 3365, - 3466, 3474, 3366, 3470, 3366, 3371, 3371, 3371, 3371, 3368, - 3297, 3297, 3297, 3325, 3379, 3379, 3379, 3379, 3369, 3475, - 3369, 3325, 3482, 3325, 3325, 3325, 3325, 3325, 3325, 3325, - 3325, 3325, 3325, 3365, 3486, 3481, 3478, 3325, 3366, 3367, - 3484, 3370, 3370, 3370, 3370, 3372, 3372, 3372, 3372, 3373, - 3373, 3373, 3373, 3374, 3374, 3374, 3374, 3487, 3496, 3474, - 3369, 3375, 3375, 3375, 3375, 3470, 3370, 3499, 3370, 3475, - 3372, 3500, 3372, 3479, 3373, 3471, 3373, 3486, 3374, 3450, - - 3450, 3450, 3450, 3481, 3423, 3482, 3375, 3423, 3375, 3478, - 3484, 3325, 3326, 3376, 3376, 3376, 3376, 3326, 3488, 3485, - 3326, 3370, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, - 3326, 3326, 3488, 3423, 3424, 3372, 3326, 3424, 3376, 3471, - 3376, 3377, 3377, 3377, 3377, 3479, 3378, 3378, 3378, 3378, - 3491, 3504, 3506, 3426, 3428, 3430, 3426, 3428, 3430, 3512, - 3326, 3490, 3421, 3424, 3513, 3516, 3377, 3421, 3377, 3485, - 3517, 3378, 3376, 3378, 3376, 3421, 3421, 3421, 3421, 3421, - 3421, 3421, 3426, 3428, 3430, 3432, 3518, 3376, 3432, 3376, - 3326, 3328, 3434, 3533, 3435, 3434, 3328, 3435, 3505, 3328, - - 3491, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, - 3328, 3534, 3490, 3421, 3432, 3328, 3437, 3440, 3472, 3437, - 3440, 3434, 3443, 3435, 3444, 3443, 3447, 3444, 3489, 3447, - 3457, 3457, 3457, 3457, 3461, 3461, 3461, 3461, 3535, 3328, - 3421, 3462, 3462, 3462, 3462, 3437, 3440, 3467, 3467, 3467, - 3467, 3443, 3524, 3444, 3505, 3447, 3468, 3468, 3468, 3468, - 3509, 3524, 3472, 3509, 3515, 3515, 3515, 3515, 3539, 3328, - 3330, 3540, 3489, 3541, 3540, 3330, 3541, 3542, 3330, 3545, - 3330, 3330, 3330, 3330, 3330, 3330, 3330, 3330, 3330, 3330, - 3483, 3483, 3483, 3483, 3330, 3492, 3492, 3492, 3492, 3493, - - 3493, 3493, 3493, 3507, 3548, 3543, 3507, 3483, 3543, 3552, - 3544, 3508, 3492, 3544, 3508, 3547, 3493, 3558, 3547, 3559, - 3507, 3560, 3507, 3507, 3507, 3507, 3507, 3507, 3508, 3563, - 3508, 3508, 3508, 3508, 3508, 3508, 3520, 3520, 3520, 3520, - 3522, 3522, 3522, 3522, 3514, 3514, 3514, 3514, 3330, 3331, - 3519, 3519, 3519, 3519, 3331, 3549, 3564, 3331, 3549, 3331, - 3331, 3331, 3331, 3331, 3331, 3331, 3331, 3331, 3331, 3514, - 3565, 3550, 3566, 3331, 3550, 3519, 3521, 3521, 3521, 3521, - 3523, 3523, 3523, 3523, 3525, 3525, 3525, 3525, 3526, 3526, - 3526, 3526, 3527, 3527, 3527, 3527, 3571, 3331, 3575, 3331, - - 3531, 3531, 3531, 3531, 3528, 3528, 3528, 3528, 3570, 3525, - 3577, 3525, 3580, 3526, 3553, 3526, 3331, 3553, 3514, 3537, - 3537, 3537, 3537, 3538, 3538, 3538, 3538, 3331, 3469, 3528, - 3583, 3528, 3584, 3469, 3570, 3521, 3469, 3521, 3469, 3469, - 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3557, 3585, - 3521, 3557, 3521, 3588, 3529, 3529, 3529, 3529, 3530, 3530, - 3530, 3530, 3532, 3532, 3532, 3532, 3536, 3536, 3536, 3536, - 3556, 3592, 3596, 3556, 3528, 3555, 3469, 3562, 3555, 3529, - 3562, 3529, 3556, 3530, 3621, 3530, 3555, 3532, 3630, 3532, - 3631, 3536, 3632, 3536, 3636, 3637, 3638, 3469, 3643, 3638, - - 3568, 3572, 3573, 3568, 3572, 3573, 3469, 3476, 3476, 3476, - 3476, 3476, 3476, 3476, 3476, 3476, 3476, 3476, 3476, 3476, - 3476, 3476, 3476, 3476, 3476, 3476, 3476, 3476, 3529, 3568, - 3572, 3573, 3645, 3530, 3476, 3476, 3476, 3476, 3476, 3476, - 3576, 3578, 3579, 3576, 3578, 3579, 3582, 3582, 3582, 3582, - 3648, 3581, 3657, 3623, 3581, 3590, 3590, 3590, 3590, 3670, - 3567, 3671, 3476, 3476, 3476, 3567, 3623, 3672, 3636, 3576, - 3578, 3579, 3673, 3567, 3567, 3567, 3567, 3567, 3567, 3567, - 3581, 3591, 3591, 3591, 3591, 3594, 3594, 3594, 3594, 3676, - 3679, 3476, 3476, 3476, 3477, 3477, 3477, 3477, 3477, 3477, - - 3477, 3477, 3477, 3477, 3477, 3477, 3477, 3477, 3477, 3477, - 3477, 3477, 3477, 3477, 3477, 3597, 3597, 3597, 3597, 3685, - 3686, 3477, 3477, 3477, 3477, 3477, 3477, 3606, 3606, 3567, - 3598, 3598, 3598, 3598, 3660, 3606, 3687, 3660, 3567, 3600, - 3600, 3600, 3600, 3601, 3601, 3601, 3601, 3691, 3694, 3477, - 3477, 3477, 3602, 3602, 3602, 3602, 3600, 3702, 3661, 3663, - 3601, 3661, 3663, 3706, 3606, 3603, 3603, 3603, 3603, 3602, - 3604, 3604, 3604, 3604, 3635, 3635, 3635, 3635, 3477, 3477, - 3477, 3494, 3603, 3711, 3701, 3664, 3494, 3604, 3664, 3494, - 3696, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, - - 3494, 3665, 3698, 3601, 3665, 3494, 3605, 3605, 3605, 3605, - 3607, 3607, 3607, 3607, 3608, 3608, 3609, 3609, 3609, 3609, - 3714, 3666, 3608, 3605, 3666, 3602, 3603, 3607, 3701, 3494, - 3718, 3668, 3696, 3609, 3668, 3610, 3610, 3610, 3610, 3611, - 3611, 3611, 3611, 3668, 3713, 3698, 3604, 3719, 3494, 3722, - 3726, 3608, 3610, 3729, 3697, 3730, 3611, 3713, 3733, 3494, - 3495, 3641, 3641, 3641, 3641, 3495, 3677, 3700, 3495, 3677, - 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, - 3613, 3613, 3613, 3613, 3495, 3609, 3614, 3614, 3614, 3614, - 3642, 3642, 3642, 3642, 3697, 3677, 3678, 3613, 3680, 3678, - - 3610, 3680, 3681, 3614, 3745, 3681, 3611, 3615, 3615, 3615, - 3615, 3616, 3616, 3616, 3616, 3618, 3618, 3618, 3618, 3700, - 3644, 3644, 3644, 3644, 3615, 3678, 3699, 3680, 3616, 3705, - 3746, 3681, 3618, 3646, 3646, 3646, 3646, 3750, 3495, 3497, - 3647, 3647, 3647, 3647, 3497, 3644, 3721, 3497, 3753, 3497, - 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3649, - 3649, 3649, 3649, 3497, 3708, 3756, 3614, 3757, 3615, 3699, - 3650, 3650, 3650, 3650, 3653, 3653, 3653, 3653, 3658, 3658, - 3658, 3658, 3765, 3715, 3649, 3705, 3649, 3692, 3692, 3692, - 3692, 3618, 3763, 3771, 3644, 3650, 3715, 3650, 3777, 3653, - - 3720, 3720, 3720, 3720, 3779, 3740, 3742, 3708, 3740, 3742, - 3721, 3724, 3724, 3724, 3724, 3781, 3782, 3497, 3498, 3498, - 3498, 3784, 3647, 3498, 3498, 3498, 3498, 3498, 3498, 3498, - 3498, 3498, 3498, 3498, 3498, 3763, 3498, 3498, 3498, 3498, - 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, - 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, - 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, - 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, - 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, - 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, - - 3498, 3498, 3498, 3498, 3498, 3501, 3501, 3501, 3501, 3501, - 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, - 3501, 3501, 3501, 3501, 3501, 3501, 3651, 3651, 3651, 3651, - 3760, 3785, 3501, 3501, 3501, 3501, 3501, 3501, 3652, 3652, - 3652, 3652, 3655, 3655, 3655, 3655, 3654, 3654, 3654, 3654, - 3762, 3651, 3743, 3651, 3768, 3743, 3703, 3703, 3707, 3707, - 3501, 3501, 3501, 3652, 3703, 3652, 3707, 3655, 3786, 3655, - 3780, 3654, 3759, 3654, 3725, 3725, 3725, 3725, 3728, 3728, - 3728, 3728, 3731, 3731, 3731, 3731, 3760, 3783, 3764, 3501, - 3501, 3501, 3599, 3703, 3762, 3707, 3744, 3599, 3768, 3744, - - 3599, 3651, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, - 3599, 3599, 3652, 3654, 3795, 3796, 3655, 3735, 3735, 3735, - 3735, 3801, 3759, 3727, 3727, 3727, 3727, 3802, 3675, 3748, - 3780, 3813, 3748, 3675, 3734, 3734, 3734, 3734, 3764, 3774, - 3599, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3727, 3752, - 3752, 3752, 3752, 3774, 3783, 3817, 3599, 3792, 3748, 3734, - 3792, 3734, 3821, 3804, 3731, 3798, 3798, 3798, 3798, 3807, - 3599, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, - 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, - 3612, 3612, 3675, 3737, 3737, 3737, 3737, 3727, 3612, 3612, - - 3612, 3612, 3612, 3612, 3751, 3804, 3675, 3751, 3734, 3736, - 3736, 3736, 3736, 3761, 3761, 3761, 3761, 3807, 3737, 3797, - 3737, 3834, 3797, 3838, 3747, 3842, 3612, 3612, 3612, 3747, - 3761, 3847, 3810, 3751, 3736, 3810, 3736, 3747, 3747, 3747, - 3747, 3747, 3747, 3747, 3766, 3766, 3839, 3856, 3797, 3859, - 3832, 3815, 3766, 3835, 3850, 3612, 3612, 3612, 3617, 3617, - 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, - 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3736, - 3803, 3766, 3806, 3834, 3860, 3617, 3617, 3617, 3617, 3617, - 3617, 3747, 3767, 3767, 3767, 3767, 3787, 3787, 3787, 3787, - - 3811, 3815, 3747, 3788, 3788, 3788, 3788, 3832, 3839, 3767, - 3835, 3850, 3811, 3617, 3617, 3617, 3791, 3791, 3791, 3791, - 3803, 3787, 3789, 3789, 3789, 3789, 3806, 3862, 3788, 3875, - 3788, 3799, 3799, 3799, 3799, 3800, 3800, 3800, 3800, 3833, - 3886, 3791, 3617, 3617, 3617, 3619, 3853, 3789, 3837, 3789, - 3619, 3889, 3837, 3619, 3851, 3619, 3619, 3619, 3619, 3619, - 3619, 3619, 3619, 3619, 3619, 3790, 3790, 3790, 3790, 3619, - 3805, 3805, 3805, 3805, 3809, 3809, 3809, 3809, 3820, 3820, - 3820, 3820, 3822, 3822, 3822, 3822, 3833, 3805, 3861, 3892, - 3790, 3809, 3790, 3619, 3888, 3868, 3619, 3789, 3823, 3823, - - 3823, 3823, 3861, 3820, 3853, 3863, 3888, 3822, 3825, 3825, - 3825, 3825, 3827, 3827, 3827, 3827, 3894, 3851, 3890, 3824, - 3824, 3824, 3824, 3619, 3620, 3826, 3826, 3826, 3826, 3876, - 3891, 3887, 3620, 3825, 3620, 3620, 3620, 3620, 3620, 3620, - 3620, 3620, 3620, 3620, 3824, 3868, 3824, 3895, 3620, 3880, - 3826, 3863, 3826, 3830, 3830, 3830, 3830, 3845, 3845, 3845, - 3845, 3846, 3846, 3846, 3846, 3848, 3848, 3848, 3848, 3849, - 3849, 3849, 3849, 3852, 3852, 3852, 3852, 3890, 3869, 3869, - 3869, 3869, 3845, 3871, 3871, 3871, 3871, 3891, 3620, 3874, - 3852, 3887, 3898, 3876, 3849, 3869, 3849, 3880, 3874, 3826, - - 3871, 3900, 3620, 3622, 3622, 3622, 3903, 3905, 3622, 3622, - 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, - 3907, 3622, 3909, 3622, 3622, 3622, 3622, 3622, 3622, 3622, - 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, - 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, - 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, - 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, - 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, - 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, - 3624, 3624, 3624, 3893, 3904, 3624, 3624, 3624, 3624, 3624, - - 3624, 3624, 3624, 3624, 3624, 3624, 3896, 3897, 3899, 3624, - 3865, 3865, 3865, 3865, 3866, 3866, 3866, 3866, 3624, 3624, - 3624, 3624, 3624, 3867, 3867, 3867, 3867, 3877, 3877, 3877, - 3877, 3878, 3878, 3878, 3878, 3865, 3910, 3912, 3914, 3866, - 3904, 3866, 3916, 3893, 3917, 3624, 4244, 3624, 3867, 4002, - 4244, 2179, 3877, 3879, 3879, 3879, 3879, 4002, 4005, 2178, - 2177, 2176, 4002, 4005, 4015, 3897, 4002, 4005, 3896, 4015, - 3899, 2175, 2174, 4015, 3624, 3624, 3624, 3625, 3625, 3625, - 2173, 2172, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, - 3625, 3625, 3625, 3625, 2171, 3625, 3625, 3625, 3625, 3625, - - 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, - 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, - 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, - 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, - 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, - 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, - 3625, 3625, 3625, 3625, 3626, 3626, 3626, 3908, 3911, 3626, - 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, - 3913, 2170, 4250, 3626, 3902, 3902, 3902, 3902, 4010, 4250, - 2169, 3626, 3626, 3626, 3626, 3626, 3626, 4032, 2168, 4010, - - 4036, 3902, 4032, 4010, 4380, 4036, 4032, 4048, 4049, 4036, - 4245, 4380, 4601, 4049, 4245, 4048, 4601, 4049, 2167, 3626, - 4048, 3626, 4073, 4050, 4048, 4050, 4073, 3911, 4053, 4073, - 4050, 3908, 4411, 4053, 4050, 4070, 4411, 4053, 4101, 4411, - 4070, 4070, 3913, 4101, 4070, 2166, 2165, 4101, 3626, 3626, - 3626, 3627, 3627, 3627, 2164, 2163, 3627, 3627, 3627, 3627, - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 2162, 3627, - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, - - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3628, 3628, - 3628, 2158, 2157, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 2156, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - - 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 3695, 2155, 4628, 2146, 2144, - 3695, 4628, 2143, 3695, 2140, 3695, 3695, 3695, 3695, 3695, - 3695, 3695, 3695, 3695, 3695, 4074, 4122, 4132, 4074, 4145, - 2139, 4122, 4132, 4074, 4145, 4122, 4132, 4074, 4145, 4146, - 4151, 4167, 2133, 2125, 2124, 4151, 4167, 4146, 2123, 4151, - 4167, 2118, 4146, 3695, 4176, 4180, 4146, 4190, 4613, 4176, - 4180, 2117, 4190, 4176, 4180, 4195, 4190, 2116, 4202, 2114, - 4195, 4210, 3695, 4202, 4195, 2113, 4210, 4202, 4613, 2072, - - 4210, 2071, 4613, 3695, 3704, 3704, 3704, 3704, 3704, 3704, - 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, - 3704, 3704, 3704, 3704, 3704, 2070, 2069, 2068, 2067, 4211, - 4640, 3704, 3704, 3704, 3704, 3704, 3704, 4211, 4212, 4216, - 4237, 2063, 4211, 4212, 4216, 4237, 4211, 4212, 4216, 4237, - 4640, 4213, 2062, 4213, 4640, 2061, 2058, 2057, 4213, 3704, - 3704, 3704, 4213, 4239, 2056, 4240, 2055, 2053, 4239, 4239, - 4240, 4261, 4239, 4240, 4240, 4246, 4261, 4280, 4246, 2052, - 4261, 2051, 4280, 4246, 2050, 2048, 4280, 4246, 3704, 3704, - 3704, 3709, 2046, 2045, 2044, 2043, 3709, 4295, 1988, 3709, - - 1981, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 4304, 4295, 4314, 4324, 3709, 4304, 4295, 4314, 4324, - 4304, 4295, 4314, 4324, 4332, 4349, 4353, 4361, 1979, 4332, - 4349, 4353, 4361, 4332, 4349, 4353, 4361, 4365, 4373, 3709, - 4374, 4377, 4365, 4373, 1975, 4374, 4365, 4373, 4374, 4374, - 4392, 1974, 4397, 4377, 1973, 4392, 4401, 4377, 1972, 4392, - 3709, 4401, 1971, 1970, 1969, 4401, 1968, 4397, 4614, 3709, - 3710, 1967, 4397, 4614, 1966, 3710, 4397, 4614, 3710, 4626, - 3710, 3710, 3710, 3710, 3710, 3710, 3710, 3710, 3710, 3710, - 4641, 4642, 4652, 4626, 3710, 4641, 4642, 1965, 4626, 4641, - - 4642, 1964, 4626, 4654, 4663, 1963, 4652, 1951, 1950, 4663, - 1949, 4652, 1947, 4663, 1942, 4652, 1941, 4654, 1940, 1939, - 1938, 1937, 4654, 1936, 1934, 1933, 4654, 1931, 1930, 1929, - 1928, 1927, 1926, 1925, 1919, 3710, 1918, 1917, 1911, 1903, - 1900, 1899, 1898, 1897, 1896, 1895, 1894, 1889, 3710, 3712, - 3712, 3712, 1887, 1886, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 1885, 3712, 1884, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3716, 3716, 3716, 1883, - 1880, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, - 3716, 3716, 3716, 1879, 3716, 3716, 3716, 3716, 3716, 3716, - 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, - 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, - 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, - 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, - - 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, - 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, - 3716, 3716, 3716, 3717, 3717, 3717, 1878, 1877, 3717, 3717, - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - 1876, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - - 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - 3758, 3758, 3758, 1875, 1874, 3758, 3758, 3758, 3758, 3758, - 3758, 3758, 3758, 3758, 3758, 3758, 3758, 1873, 3758, 3758, - 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, - 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, - 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, - 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, - 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, - 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, - 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3769, 1872, 1871, - - 1870, 1869, 3769, 1866, 1863, 3769, 1861, 3769, 3769, 3769, - 3769, 3769, 3769, 3769, 3769, 3769, 3769, 1860, 1859, 1858, - 1857, 3769, 1856, 1855, 1853, 1851, 1850, 1849, 1846, 1844, - 1842, 1840, 1839, 1837, 1836, 1833, 1829, 1828, 1818, 1812, - 1811, 1807, 1806, 1805, 1804, 3769, 1801, 1800, 1799, 1769, - 1764, 1760, 1759, 1758, 1757, 1755, 1754, 1752, 1751, 1749, - 1748, 3769, 1747, 1741, 1740, 1738, 1737, 1736, 1735, 1733, - 1722, 1718, 1716, 1714, 1706, 3769, 3770, 1696, 1693, 1692, - 1691, 3770, 1688, 1686, 3770, 1685, 3770, 3770, 3770, 3770, - 3770, 3770, 3770, 3770, 3770, 3770, 1682, 1677, 1673, 1672, - - 3770, 1671, 1670, 1667, 1663, 1651, 1650, 1648, 1647, 1646, - 1645, 1644, 1641, 1635, 1624, 1623, 1622, 1587, 1584, 1582, - 1579, 1578, 1574, 1573, 1552, 1551, 1543, 1540, 1539, 1519, - 1514, 3770, 1513, 1512, 1511, 1510, 1509, 1507, 1506, 1503, - 1479, 1477, 1471, 1461, 1460, 1459, 1458, 1456, 1452, 1451, - 1445, 1444, 1443, 1426, 3770, 3793, 3793, 3793, 3793, 3793, - 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, - 3793, 3793, 3793, 3793, 3793, 3793, 1423, 1418, 1415, 1414, - 1413, 1412, 3793, 3793, 3793, 3793, 3793, 3793, 1411, 1408, - 1405, 1401, 1394, 1388, 1386, 1384, 1383, 1378, 1377, 1376, - - 1375, 1372, 1365, 1364, 1362, 1359, 1358, 1356, 1355, 1353, - 3793, 3793, 3793, 1350, 1342, 1337, 1334, 1332, 1331, 1330, - 1327, 1326, 1319, 1317, 1312, 1307, 1299, 1296, 1294, 1293, - 1292, 1289, 1285, 1284, 1283, 1282, 1281, 1279, 1278, 3793, - 3793, 3793, 3812, 3812, 3812, 1265, 1262, 3812, 3812, 3812, - 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 1261, - 3812, 1249, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, - 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, - 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, - 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, - - 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, - 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, - 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3818, - 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, - 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, - 1247, 1246, 1243, 1242, 1240, 1239, 3818, 3818, 3818, 3818, - 3818, 3818, 1238, 1237, 1235, 1232, 1230, 1220, 1218, 1217, - 1213, 1210, 1206, 1203, 1202, 1198, 1193, 1192, 1191, 1190, - 1187, 1183, 1177, 1175, 3818, 3818, 3818, 1174, 1168, 1157, - 1152, 1146, 1144, 1140, 1138, 1129, 1128, 1127, 1126, 1123, - - 1122, 1121, 1120, 1105, 1086, 1077, 1075, 1074, 1073, 1070, - 1069, 1068, 1066, 3818, 3818, 3818, 3836, 3836, 3836, 1065, - 1056, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 1055, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - - 3836, 3836, 3836, 3854, 3854, 3854, 1054, 1051, 3854, 3854, - 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, - 1041, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, - 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, - 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, - 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, - 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, - 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, - 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, - 3855, 3855, 3855, 1029, 1021, 3855, 3855, 3855, 3855, 3855, - - 3855, 3855, 3855, 3855, 3855, 3855, 1016, 1014, 1012, 3855, - 1010, 1007, 1004, 1002, 994, 980, 976, 959, 3855, 3855, - 3855, 3855, 3855, 956, 955, 952, 950, 949, 934, 931, - 917, 913, 910, 907, 893, 856, 852, 850, 847, 846, - 845, 828, 827, 825, 824, 3855, 3855, 3855, 822, 818, - 813, 812, 810, 800, 798, 797, 790, 787, 786, 776, - 761, 756, 748, 743, 729, 726, 721, 717, 708, 704, - 700, 697, 694, 687, 3855, 3855, 3855, 3857, 3857, 3857, - 684, 681, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, - 3857, 3857, 3857, 678, 670, 667, 3857, 664, 661, 657, - - 644, 640, 637, 633, 3857, 3857, 3857, 3857, 3857, 3857, - 630, 629, 628, 622, 617, 615, 611, 595, 594, 579, - 569, 565, 553, 549, 539, 535, 527, 515, 510, 509, - 508, 506, 3857, 3857, 3857, 495, 492, 490, 482, 481, - 477, 475, 471, 467, 456, 455, 451, 447, 441, 437, - 432, 431, 421, 419, 414, 412, 411, 410, 409, 398, - 389, 3857, 3857, 3857, 3858, 3858, 3858, 372, 351, 3858, - 3858, 3858, 348, 3858, 3858, 3858, 3858, 3858, 3858, 3858, - 338, 336, 330, 3858, 325, 316, 304, 300, 294, 289, - 287, 283, 3858, 3858, 3858, 3858, 281, 0, 0, 0, + 253, 253, 253, 253, 253, 253, 253, 253, 253, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 355, 355, 355, 355, + 664, 2389, 355, 664, 664, 721, 664, 664, 664, 718, + 2217, 664, 718, 1383, 1577, 723, 1383, 664, 723, 664, + 664, 355, 718, 664, 664, 2390, 1383, 1577, 723, 973, + + 1577, 973, 721, 723, 721, 973, 721, 721, 1031, 718, + 973, 1031, 2391, 721, 1765, 723, 1765, 1452, 721, 721, + 1452, 1031, 721, 2107, 2012, 355, 1031, 355, 1765, 1876, + 1452, 355, 1876, 718, 355, 355, 2217, 355, 2012, 723, + 355, 355, 355, 355, 551, 722, 2201, 1876, 722, 2107, + 722, 2109, 722, 722, 973, 753, 753, 753, 753, 722, + 783, 783, 783, 783, 722, 722, 1955, 1275, 722, 1275, + 1955, 551, 551, 551, 551, 551, 551, 2109, 783, 551, + 753, 1275, 551, 551, 551, 551, 1275, 551, 551, 551, + 551, 551, 565, 750, 750, 750, 750, 2393, 2201, 2395, + + 754, 754, 754, 754, 755, 755, 755, 755, 1009, 1009, + 1009, 1009, 750, 750, 750, 750, 750, 750, 750, 565, + 565, 565, 565, 565, 565, 754, 1009, 565, 2396, 755, + 565, 565, 565, 565, 2397, 565, 565, 565, 565, 565, + 565, 758, 758, 758, 758, 761, 761, 761, 761, 767, + 767, 767, 767, 789, 789, 789, 761, 789, 2392, 2392, + 767, 822, 822, 822, 822, 810, 758, 2202, 810, 810, + 2399, 761, 789, 2191, 822, 767, 810, 822, 2113, 822, + 812, 810, 812, 812, 812, 1784, 824, 1784, 2176, 824, + 824, 812, 828, 828, 828, 828, 812, 824, 761, 1784, + + 2176, 2176, 824, 1314, 2113, 810, 1314, 2202, 789, 829, + 829, 829, 829, 830, 830, 830, 830, 828, 2218, 2191, + 812, 832, 832, 832, 832, 2206, 824, 912, 912, 912, + 912, 767, 800, 1314, 829, 1950, 800, 1950, 830, 2250, + 800, 1952, 2250, 1952, 800, 800, 832, 2400, 1307, 1950, + 800, 1307, 912, 800, 800, 1952, 1311, 1314, 800, 1311, + 800, 1307, 800, 2204, 1307, 1460, 800, 2401, 1460, 1311, + 800, 800, 1311, 800, 2218, 800, 1466, 800, 1460, 1466, + 2402, 800, 814, 2206, 911, 911, 911, 911, 2403, 1466, + 913, 913, 913, 913, 1600, 2114, 814, 911, 1015, 1015, + + 1015, 1015, 911, 2204, 914, 914, 914, 914, 2406, 814, + 814, 814, 814, 814, 814, 913, 814, 814, 2117, 814, + 814, 2114, 814, 814, 2207, 814, 814, 814, 814, 914, + 1016, 1016, 1016, 1016, 1600, 814, 814, 814, 814, 814, + 814, 2407, 814, 814, 2117, 814, 814, 1600, 814, 814, + 1600, 2408, 814, 814, 814, 814, 815, 815, 815, 815, + 916, 916, 916, 916, 971, 971, 971, 971, 1017, 1017, + 1017, 1017, 2409, 2410, 951, 971, 2207, 815, 2216, 815, + 815, 951, 981, 2266, 981, 916, 951, 1352, 981, 971, + 1352, 2411, 2119, 981, 981, 981, 2412, 2266, 951, 1806, + + 1352, 981, 1806, 1352, 815, 1352, 2413, 815, 815, 815, + 815, 815, 1806, 2371, 815, 815, 2371, 815, 2119, 815, + 2414, 815, 951, 815, 815, 815, 815, 815, 815, 816, + 1095, 1095, 1095, 1095, 816, 1989, 2216, 816, 1989, 816, + 816, 816, 816, 816, 816, 816, 816, 816, 816, 2120, + 1553, 1989, 951, 816, 1004, 1004, 1004, 1004, 1004, 1553, + 1004, 1038, 1038, 1038, 1038, 1004, 1004, 1004, 1039, 1039, + 1039, 1039, 1522, 1004, 1522, 2120, 1553, 816, 1522, 1038, + 1040, 1040, 1040, 1040, 2318, 1553, 1039, 1044, 1044, 1044, + 1044, 1522, 2416, 2318, 1046, 1046, 1046, 1046, 1040, 1080, + + 1080, 1080, 1080, 1353, 2350, 1044, 1353, 816, 817, 817, + 817, 817, 1046, 2350, 1057, 2030, 1057, 1080, 2030, 817, + 1057, 1086, 1086, 1086, 1086, 1057, 1057, 1057, 1066, 817, + 1066, 817, 817, 1353, 1066, 1102, 1102, 1102, 1102, 1066, + 1087, 1087, 1087, 1087, 2030, 2417, 1086, 1090, 1090, 1090, + 1090, 2418, 1117, 1117, 1117, 1117, 817, 1353, 2394, 817, + 817, 817, 817, 817, 817, 1087, 817, 817, 2419, 817, + 1117, 817, 1090, 817, 2394, 817, 817, 817, 817, 817, + 817, 818, 1091, 1091, 1091, 1091, 818, 2415, 2415, 818, + 2169, 818, 818, 818, 818, 818, 818, 818, 818, 818, + + 818, 2099, 2420, 1086, 2099, 818, 2169, 1091, 2169, 1091, + 2421, 1066, 1066, 1092, 1092, 1092, 1092, 1096, 1096, 1096, + 1096, 1099, 1099, 1099, 1099, 1103, 1103, 1103, 1103, 818, + 2099, 1090, 1101, 1101, 1101, 1101, 1427, 1427, 1092, 1427, + 1092, 2423, 2424, 1571, 1096, 1470, 1099, 1571, 1470, 1427, + 818, 1104, 1104, 1104, 1104, 2425, 1571, 1101, 1470, 818, + 844, 2429, 1579, 1470, 844, 844, 1579, 844, 844, 844, + 2430, 1579, 844, 2431, 844, 1105, 1105, 1105, 1105, 2092, + 2092, 844, 2122, 844, 844, 844, 2432, 2092, 1107, 1107, + 1107, 1107, 1108, 1108, 1108, 1108, 1109, 1109, 1109, 1109, + + 1105, 1119, 1119, 1119, 1119, 1099, 2196, 1103, 2122, 844, + 2433, 844, 844, 1107, 1116, 1948, 2092, 1108, 1948, 1119, + 2434, 1109, 2435, 1116, 1116, 1116, 1116, 1116, 1948, 1122, + 1122, 1122, 1122, 1104, 1138, 1138, 1138, 1138, 2436, 1988, + 844, 845, 1988, 2130, 2437, 845, 845, 1138, 845, 845, + 845, 2196, 1988, 845, 1122, 845, 1139, 1139, 1139, 1139, + 2196, 1521, 845, 1521, 845, 845, 845, 1521, 2134, 2130, + 1107, 1142, 1142, 1142, 1142, 1143, 1143, 1143, 1143, 1521, + 1521, 1139, 1144, 1144, 1144, 1144, 1161, 1161, 1161, 1161, + 845, 2438, 845, 845, 2134, 1339, 1142, 2439, 1339, 2479, + + 1143, 2505, 1143, 1163, 1163, 1163, 1163, 1144, 1339, 1144, + 1146, 1146, 1146, 1146, 1147, 1147, 1147, 1147, 2135, 2515, + 1804, 845, 846, 1804, 2188, 1339, 846, 846, 1163, 846, + 846, 846, 2532, 1804, 846, 1146, 846, 1146, 1804, 1147, + 1602, 1147, 1593, 846, 2135, 846, 846, 846, 1754, 1339, + 1148, 1148, 1148, 1148, 2533, 1142, 1149, 1149, 1149, 1149, + 1150, 1150, 1150, 1150, 2535, 1991, 2188, 1146, 1991, 2537, + 2538, 846, 1754, 846, 846, 1148, 2188, 1148, 1991, 2539, + 1602, 1149, 1593, 1149, 1602, 1150, 1593, 1150, 2234, 1602, + 1147, 1151, 1151, 1151, 1151, 1593, 1754, 1153, 1153, 1153, + + 1153, 2138, 846, 1121, 1121, 1121, 1121, 2440, 2540, 1121, + 2213, 1152, 1152, 1152, 1152, 2234, 1151, 2542, 1151, 2543, + 1150, 2440, 1153, 1149, 1153, 1148, 1754, 2138, 1121, 2544, + 2481, 1149, 1165, 1165, 1165, 1165, 1152, 2142, 1152, 2545, + 1154, 1154, 1154, 1154, 1169, 1169, 1169, 1169, 1155, 1155, + 1155, 1155, 2213, 1611, 2213, 1153, 1611, 1165, 2481, 1151, + 2546, 2547, 1121, 2142, 1121, 1154, 1611, 1154, 1121, 1611, + 1756, 1121, 1121, 1155, 1121, 1155, 1152, 1121, 1121, 1121, + 1121, 1152, 1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157, + 1158, 1158, 1158, 1158, 1756, 1159, 1159, 1159, 1159, 1160, + + 1160, 1160, 1160, 1154, 2541, 1155, 2548, 1156, 2426, 1156, + 2551, 1157, 2541, 1157, 2549, 1158, 1165, 1158, 1756, 2549, + 1159, 1155, 1159, 2553, 1160, 2143, 1160, 1162, 1162, 1162, + 1162, 1166, 1166, 1166, 1166, 2426, 1167, 1167, 1167, 1167, + 1170, 1170, 1170, 1170, 1174, 1174, 1174, 1174, 1756, 1615, + 1156, 2143, 1615, 2554, 1162, 1158, 1166, 1157, 1166, 1174, + 1159, 1167, 1615, 1167, 2557, 1615, 1615, 1170, 1175, 1175, + 1175, 1175, 1160, 1176, 1176, 1176, 1176, 1177, 1177, 1177, + 1177, 1178, 1178, 1178, 1178, 1183, 1183, 1183, 1183, 1184, + 1184, 1184, 1184, 2146, 1189, 1189, 1189, 1189, 2106, 2222, + + 1178, 2106, 2222, 2240, 1183, 1177, 1189, 1190, 1190, 1190, + 1190, 1193, 2222, 1193, 1193, 2222, 2558, 1193, 1190, 2146, + 2555, 2555, 1193, 1195, 1195, 1195, 1195, 2106, 1200, 2240, + 1193, 1196, 1196, 1196, 1196, 2559, 1177, 1200, 1200, 1200, + 1200, 1200, 1201, 1201, 1201, 1201, 1204, 1204, 1204, 1204, + 1177, 2560, 1177, 2562, 1177, 1206, 1206, 1206, 1206, 1207, + 1207, 1207, 1207, 1208, 1208, 1208, 1208, 1210, 1210, 1210, + 1210, 1204, 1212, 1212, 1212, 1212, 1213, 1213, 1213, 1213, + 1206, 2606, 2093, 2093, 1207, 1214, 1214, 1214, 1214, 2565, + 2093, 2566, 1210, 2576, 1193, 1193, 1217, 1212, 1217, 1220, + + 2211, 1213, 1217, 1223, 1223, 1223, 1223, 1217, 1220, 1220, + 1220, 1220, 1220, 2584, 2607, 1217, 1256, 1256, 1256, 2093, + 1256, 1223, 1269, 1269, 1269, 1269, 1277, 1277, 1277, 1277, + 1256, 1276, 1276, 1276, 1276, 1256, 2581, 2565, 2566, 1206, + 1331, 1331, 1331, 1331, 1276, 2211, 2241, 1306, 2211, 2576, + 1306, 1217, 1334, 1334, 1334, 1334, 1212, 2211, 2211, 2584, + 1306, 1336, 1336, 1336, 1336, 1306, 1562, 2366, 1334, 1562, + 2366, 1256, 2241, 1332, 1332, 1332, 1332, 1306, 2581, 1217, + 1217, 1283, 1283, 1283, 1283, 1283, 1332, 2100, 1283, 1332, + 2100, 1283, 1283, 1283, 1283, 1562, 1283, 1283, 1283, 1283, + + 1283, 1306, 1329, 1329, 1329, 1329, 1337, 1337, 1337, 1337, + 1351, 1360, 1562, 1351, 1360, 1329, 2100, 2567, 2609, 1337, + 1329, 2610, 1337, 1351, 1356, 1356, 1356, 1356, 1351, 1360, + 2366, 2100, 1329, 1363, 1363, 1363, 1363, 2254, 2611, 1562, + 1351, 1360, 1356, 1366, 1366, 1366, 1366, 1367, 1367, 1367, + 1367, 1368, 1368, 1368, 1368, 2561, 1329, 2100, 1363, 1370, + 1370, 1370, 1370, 2254, 1351, 1360, 1391, 2255, 1366, 1391, + 2567, 2561, 1367, 1375, 1375, 1375, 1375, 1385, 1385, 1385, + 1385, 1387, 1387, 1387, 1387, 1388, 1388, 1388, 1388, 1389, + 1389, 1389, 1389, 2255, 1391, 2571, 1405, 1405, 1405, 1405, + + 2569, 1773, 1385, 1773, 2614, 2115, 1387, 1773, 2115, 1405, + 1388, 2599, 1773, 2457, 1405, 1407, 1407, 1407, 1407, 1408, + 1408, 1408, 1408, 2615, 2471, 1391, 1405, 1366, 1413, 1413, + 1413, 1413, 1408, 2616, 2115, 1408, 2575, 1408, 1410, 1410, + 2457, 1410, 1410, 1391, 2352, 2422, 1410, 2569, 2101, 1408, + 1405, 2471, 1410, 2571, 1410, 1410, 1773, 2101, 1410, 1410, + 1411, 1411, 1411, 1411, 2599, 1387, 1414, 1414, 1414, 1414, + 2352, 2422, 2618, 1408, 2101, 2580, 1411, 1415, 1415, 1414, + 1415, 1415, 1414, 2101, 2575, 1415, 1416, 1416, 1416, 1416, + 1411, 1415, 2118, 1415, 1415, 2118, 1414, 1415, 1415, 1416, + + 1462, 1462, 1462, 1462, 1463, 1463, 1463, 1463, 1488, 1488, + 1488, 1488, 2449, 2450, 1411, 2271, 1416, 1463, 2271, 2572, + 1414, 2118, 1489, 1489, 1489, 1489, 2580, 2583, 2271, 1491, + 1491, 1491, 1491, 1488, 1492, 1492, 1492, 1492, 2449, 2450, + 1416, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1491, 1491, + 1491, 1491, 1491, 1491, 1491, 1494, 1494, 1494, 1494, 1492, + 1495, 1495, 1495, 1495, 1496, 1496, 1496, 1496, 1498, 1498, + 1498, 1498, 1502, 1502, 1502, 1502, 2572, 2583, 2585, 1498, + 1494, 2121, 2621, 1502, 2121, 1495, 1505, 1505, 1505, 1505, + 1506, 1506, 1506, 1506, 1498, 2577, 2451, 2453, 1502, 2622, + + 2626, 1505, 1507, 1507, 1507, 1507, 1508, 1508, 1508, 1508, + 2121, 1509, 1509, 1509, 1509, 1508, 2637, 2638, 2639, 1508, + 1509, 1498, 2451, 2453, 1509, 1514, 1514, 1514, 2585, 1514, + 1530, 1530, 1530, 1530, 1531, 1531, 1531, 1531, 2640, 1494, + 1532, 1532, 1532, 1532, 1514, 1533, 1533, 1533, 1533, 1534, + 1534, 1534, 1534, 2577, 1502, 1535, 1535, 1535, 1535, 1536, + 1563, 2461, 1552, 2465, 1536, 1552, 1563, 1563, 1569, 1569, + 1569, 1569, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1542, + 1514, 1543, 1542, 1542, 1543, 1543, 1563, 2461, 2469, 2465, + 1542, 1552, 1543, 1563, 1563, 1542, 1547, 1543, 1547, 1547, + + 1547, 1568, 1568, 1568, 1568, 2591, 1552, 1547, 1552, 2205, + 2582, 2642, 1547, 1558, 2469, 2470, 1558, 2594, 2587, 1542, + 1548, 1543, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, + 1548, 1548, 1552, 2598, 2645, 1552, 1547, 1536, 1554, 2473, + 1554, 2470, 1558, 2110, 1569, 1554, 2110, 1557, 1557, 1557, + 2647, 2205, 1554, 2582, 2249, 1558, 1558, 2249, 2587, 2249, + 1548, 1568, 1557, 2591, 1554, 2473, 1554, 2205, 2594, 2205, + 1568, 1554, 2110, 1557, 1568, 2648, 2478, 1568, 1644, 1554, + 1644, 1558, 1558, 1570, 1570, 1570, 1570, 2598, 1557, 2110, + 1548, 1550, 1550, 1550, 1550, 1550, 1550, 1644, 1550, 1550, + + 1557, 1550, 1550, 2478, 1550, 1550, 1644, 1550, 1550, 1550, + 1550, 1572, 1572, 1572, 1572, 2595, 2110, 1550, 1550, 1550, + 1550, 1550, 1550, 1564, 1550, 1550, 1564, 1550, 1550, 2485, + 1550, 1550, 2620, 1644, 1550, 1550, 1550, 1550, 1564, 2649, + 1564, 1575, 1575, 1575, 1575, 1598, 1598, 1598, 1598, 1564, + 2650, 2593, 1564, 1570, 2596, 2485, 1591, 1591, 1591, 1591, + 2620, 2651, 1598, 2123, 2484, 1564, 2123, 1564, 1590, 1590, + 1590, 1590, 2124, 1591, 2595, 2124, 1592, 1592, 1592, 1592, + 1572, 1623, 1623, 1623, 1623, 1590, 1646, 1646, 1646, 1646, + 1572, 2484, 2123, 1592, 1594, 1594, 1594, 1594, 1575, 2593, + + 2125, 2124, 1598, 2125, 2495, 2127, 1575, 1586, 2127, 2502, + 1598, 1594, 1586, 2596, 2596, 1586, 1646, 1586, 1586, 1586, + 1586, 1586, 1586, 1586, 1586, 1586, 1586, 2508, 1590, 2125, + 2495, 1586, 1591, 1592, 2127, 2502, 2128, 1590, 2652, 2128, + 1646, 1590, 2129, 1592, 1590, 2129, 1592, 2512, 1610, 1610, + 1610, 1610, 2653, 2654, 2508, 1586, 1619, 1619, 1619, 1619, + 2655, 1610, 2656, 1594, 1610, 2128, 1610, 1621, 1621, 1621, + 1621, 2129, 2657, 1594, 2512, 2658, 1647, 1647, 1647, 1647, + 2131, 1619, 2145, 2131, 2658, 1586, 1588, 1622, 1622, 1622, + 1622, 1588, 1621, 2659, 1588, 2145, 1588, 1588, 1588, 1588, + + 1588, 1588, 1588, 1588, 1588, 1588, 1647, 2511, 2145, 2131, + 1588, 1634, 1622, 2660, 2132, 1634, 1634, 2132, 1634, 1634, + 1634, 2145, 2573, 1634, 2574, 1634, 1700, 1700, 1700, 1700, + 1647, 2518, 1638, 2511, 1588, 1634, 1638, 1638, 2579, 1638, + 1638, 1638, 2136, 2132, 1638, 2136, 1638, 1701, 1701, 1701, + 1701, 1621, 1702, 1702, 1702, 1702, 1638, 2518, 2139, 2519, + 1634, 2139, 1634, 1634, 1588, 1633, 2573, 2597, 2574, 1633, + 1633, 2136, 1633, 1633, 1633, 2661, 2683, 1633, 2685, 1633, + 2586, 1638, 2579, 1638, 1638, 2519, 1633, 2139, 1633, 1633, + 1633, 1634, 1678, 1678, 1678, 1678, 1678, 1683, 1683, 1683, + + 1683, 1683, 1688, 1688, 1688, 1688, 1688, 1693, 1693, 1693, + 1693, 1693, 1638, 2588, 1633, 2687, 1633, 1633, 1703, 1703, + 1703, 1703, 1703, 1642, 2586, 2597, 2522, 1642, 1642, 2688, + 1642, 1642, 1642, 2608, 2690, 1642, 2693, 1642, 1704, 1704, + 1704, 1704, 2602, 2694, 2695, 1633, 1637, 1642, 2698, 2699, + 1637, 1637, 2522, 1637, 1637, 1637, 2700, 2588, 1637, 2608, + 1637, 1705, 1705, 1705, 1705, 1705, 2701, 1637, 2702, 1637, + 1637, 1637, 1642, 2703, 1642, 1642, 1706, 1706, 1706, 1706, + 1706, 1707, 1707, 1707, 1707, 1708, 1708, 1708, 1708, 1709, + 1709, 1709, 1709, 2589, 2602, 1637, 2578, 1637, 1637, 1711, + + 1711, 1711, 1711, 1642, 1712, 1712, 1712, 1712, 2706, 1712, + 1714, 1714, 1714, 1714, 1709, 1713, 1713, 1713, 1713, 1769, + 1769, 1769, 1769, 2707, 1711, 2550, 1637, 1641, 2550, 1712, + 1769, 1641, 1641, 2600, 1641, 1641, 1641, 2589, 2578, 1641, + 1713, 1641, 2589, 1779, 1769, 1779, 2578, 2709, 1641, 1779, + 1641, 1641, 1641, 2711, 1779, 1779, 1779, 1782, 1796, 1796, + 1796, 1796, 1779, 2712, 2713, 2714, 1782, 1782, 1782, 1782, + 1782, 1797, 1797, 1797, 1797, 2715, 1641, 2140, 1641, 1641, + 2140, 2600, 2550, 1711, 1794, 1794, 1794, 1794, 1794, 1797, + 1794, 1801, 1801, 1801, 1801, 1794, 1794, 1794, 2716, 1810, + + 2718, 2223, 2705, 1794, 2223, 2705, 2140, 1641, 1810, 1810, + 1810, 1810, 1810, 1816, 2223, 1816, 2617, 2223, 1819, 1816, + 1834, 1834, 1834, 1834, 1816, 1816, 1816, 1819, 1819, 1819, + 1819, 1819, 1823, 2147, 1823, 1826, 2147, 2719, 1823, 1832, + 1832, 1832, 1832, 1823, 1826, 1826, 1826, 1826, 1826, 1833, + 1833, 1833, 1833, 1835, 1835, 1835, 1835, 1836, 1836, 1836, + 1836, 2720, 2147, 2721, 1832, 1837, 1837, 1837, 1837, 1838, + 1838, 1838, 1838, 2722, 1833, 2723, 1833, 2724, 2148, 2708, + 1835, 2148, 2708, 2725, 1836, 1839, 1839, 1839, 1839, 2726, + 1837, 2727, 2617, 2728, 1838, 1840, 1840, 1840, 1840, 1843, + + 1843, 1843, 1843, 1871, 1871, 1871, 1871, 2148, 1851, 2729, + 1839, 1870, 1870, 1870, 1870, 1823, 1823, 1851, 1851, 1851, + 1851, 1851, 2710, 1832, 1870, 2710, 2730, 2731, 1871, 1872, + 1872, 1872, 1872, 1879, 1879, 1879, 1879, 1880, 1880, 1880, + 1880, 1881, 1881, 1881, 1881, 1883, 1883, 1883, 1883, 1837, + 1884, 1884, 1884, 1884, 1872, 2732, 2717, 2733, 1879, 2717, + 2149, 2734, 1880, 2149, 1880, 1885, 1885, 1885, 1885, 2735, + 1883, 2736, 1883, 2737, 2740, 1884, 2741, 1884, 1886, 1886, + 1886, 1886, 2743, 1887, 1887, 1887, 1887, 2744, 2738, 2149, + 1885, 2738, 1885, 2745, 2746, 1888, 1888, 1888, 1888, 1905, + + 1905, 1905, 1905, 1886, 2739, 1886, 2150, 2739, 1887, 2150, + 1887, 1889, 1889, 1889, 1889, 2739, 2747, 1879, 1884, 1883, + 1888, 2748, 1888, 2749, 2750, 2751, 1885, 1890, 1890, 1890, + 1890, 1891, 1891, 1891, 1891, 2150, 1889, 2752, 1889, 1893, + 1893, 1893, 1893, 1886, 1887, 2753, 2754, 2755, 1892, 1892, + 1892, 1892, 1890, 2756, 1890, 2757, 1891, 2758, 1891, 1894, + 1894, 1894, 1894, 2760, 1893, 2759, 1893, 1895, 1895, 1895, + 1895, 1888, 1889, 1892, 2761, 1892, 1896, 1896, 1896, 1896, + 1897, 1897, 1897, 1897, 1894, 2762, 1894, 1898, 1898, 1898, + 1898, 2759, 1895, 2766, 1895, 1899, 1899, 1899, 1899, 2767, + + 2768, 1896, 2769, 1896, 1890, 1897, 1891, 1897, 1893, 2770, + 2357, 2771, 1898, 2357, 1898, 1892, 1912, 1912, 1912, 1912, + 1899, 2772, 1899, 1900, 1900, 1900, 1900, 1901, 1901, 1901, + 1901, 2773, 2774, 2775, 1894, 1902, 1902, 1902, 1902, 2357, + 2776, 1897, 2778, 1895, 2780, 2802, 2809, 1896, 1900, 2827, + 1900, 2831, 2404, 2445, 1901, 2404, 2445, 1898, 1903, 1903, + 1903, 1903, 1902, 2763, 1899, 1904, 1904, 1904, 1904, 1906, + 1906, 1906, 1906, 1907, 1907, 1907, 1907, 1917, 1917, 1917, + 1917, 2404, 2445, 1903, 1923, 1923, 1923, 1923, 1917, 2763, + 1904, 2835, 1904, 1922, 2601, 2837, 1906, 2839, 1900, 2842, + + 1907, 2844, 1922, 1922, 1922, 1922, 1922, 1925, 1925, 1925, + 1925, 1928, 1928, 1928, 1928, 1929, 1929, 1929, 1929, 1930, + 1930, 1930, 1930, 1932, 1932, 1932, 1932, 1933, 1933, 1933, + 1933, 1934, 1934, 1934, 1934, 2601, 1928, 2846, 2849, 2854, + 1929, 2858, 1903, 2869, 1939, 2871, 2873, 2875, 1932, 2879, + 2880, 2601, 1933, 1939, 1939, 1939, 1939, 1939, 2007, 2007, + 2007, 2007, 2015, 2015, 2015, 2015, 2016, 2016, 2016, 2016, + 2017, 2017, 2017, 2017, 2007, 2022, 2022, 2022, 2022, 2023, + 2023, 2023, 2023, 2024, 2024, 2024, 2024, 2015, 2882, 2887, + 2094, 2016, 2888, 2094, 2094, 1928, 2031, 2031, 2031, 2031, + + 2022, 2094, 2447, 2784, 2023, 2447, 2094, 1932, 2794, 2031, + 2889, 2032, 2032, 2032, 2032, 2033, 2033, 2033, 2033, 2034, + 2034, 2034, 2034, 2890, 2891, 2892, 2031, 2032, 2033, 2784, + 2094, 2447, 2034, 2893, 2794, 2034, 2053, 2053, 2053, 2053, + 2782, 2032, 2894, 2783, 2806, 2033, 2015, 2895, 2896, 2034, + 2031, 2056, 2056, 2056, 2056, 2066, 2066, 2066, 2066, 2022, + 2069, 2069, 2069, 2069, 2801, 2032, 2812, 2897, 2782, 2033, + 2783, 2806, 2901, 2034, 2067, 2067, 2067, 2067, 2905, 2906, + 2066, 2068, 2068, 2068, 2068, 2069, 2070, 2070, 2070, 2070, + 2801, 2907, 2812, 2067, 2067, 2067, 2067, 2067, 2067, 2067, + + 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2071, 2071, 2071, + 2071, 2070, 2086, 2086, 2086, 2086, 2087, 2087, 2087, 2087, + 2088, 2152, 2152, 2152, 2152, 2088, 2105, 2105, 2105, 2157, + 2157, 2157, 2157, 2088, 2088, 2088, 2088, 2088, 2088, 2088, + 2090, 2105, 2908, 2813, 2069, 2090, 2159, 2159, 2159, 2159, + 2909, 2911, 2816, 2090, 2090, 2090, 2090, 2090, 2090, 2090, + 2095, 2829, 2112, 2095, 2095, 2112, 2102, 2105, 2102, 2813, + 2853, 2095, 2912, 2102, 2914, 2111, 2095, 2112, 2816, 2112, + 2102, 2111, 2111, 2164, 2164, 2164, 2164, 2829, 2112, 2915, + 2900, 2112, 2102, 2900, 2102, 2913, 2963, 2853, 2088, 2102, + + 2095, 2111, 2857, 2913, 2112, 2953, 2112, 2102, 2111, 2111, + 2170, 2170, 2170, 2170, 2177, 2177, 2177, 2177, 2090, 2097, + 2227, 2227, 2227, 2227, 2097, 2917, 2926, 2097, 2857, 2097, + 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2212, + 2212, 2212, 2212, 2225, 2225, 2225, 2225, 2226, 2226, 2226, + 2226, 2245, 2245, 2245, 2245, 2862, 2212, 2246, 2246, 2246, + 2246, 2247, 2247, 2247, 2247, 2964, 2953, 2097, 2225, 2932, + 2452, 2918, 2226, 2452, 2264, 2966, 2245, 2917, 2926, 2276, + 2932, 2862, 2246, 2264, 2264, 2264, 2264, 2264, 2276, 2276, + 2276, 2276, 2276, 2288, 2288, 2288, 2288, 2097, 2186, 2452, + + 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, + 2280, 2286, 2286, 2286, 2286, 2315, 2315, 2315, 2315, 2280, + 2280, 2280, 2280, 2280, 2918, 2863, 2454, 2225, 2315, 2454, + 2284, 2319, 2319, 2319, 2319, 2245, 2286, 2295, 2186, 2284, + 2284, 2284, 2284, 2284, 2948, 2967, 2295, 2295, 2295, 2295, + 2295, 2863, 2928, 2968, 2186, 2454, 2319, 2919, 2319, 2534, + 2534, 2534, 2534, 2923, 2320, 2320, 2320, 2320, 2186, 2219, + 2556, 2556, 2556, 2556, 2219, 2590, 2930, 2219, 2590, 2219, + 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2320, + 2868, 2320, 2590, 2219, 2948, 2286, 2321, 2321, 2321, 2321, + + 2928, 2322, 2322, 2322, 2322, 2319, 2323, 2323, 2323, 2323, + 2324, 2324, 2324, 2324, 2950, 2919, 2868, 2219, 2920, 2931, + 2923, 2321, 2974, 2321, 2930, 2975, 2322, 2977, 2322, 2345, + 2933, 2323, 2590, 2323, 2937, 2324, 2946, 2324, 2345, 2345, + 2345, 2345, 2345, 2427, 2427, 2427, 2427, 2219, 2220, 2325, + 2325, 2325, 2325, 2220, 2950, 2927, 2220, 2929, 2220, 2220, + 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2427, 2321, + 2322, 2920, 2220, 2931, 2325, 2455, 2325, 2324, 2455, 2323, + 2326, 2326, 2326, 2326, 2327, 2327, 2327, 2327, 2933, 2328, + 2328, 2328, 2328, 2937, 2946, 2456, 2220, 2947, 2456, 2927, + + 2329, 2329, 2329, 2329, 2455, 2326, 2934, 2326, 2936, 2327, + 2929, 2327, 2954, 2220, 2328, 2979, 2328, 2330, 2330, 2330, + 2330, 2943, 2938, 2325, 2456, 2329, 2220, 2329, 2331, 2331, + 2331, 2331, 2939, 2332, 2332, 2332, 2332, 2326, 2333, 2333, + 2333, 2333, 2330, 2982, 2330, 2327, 2334, 2334, 2334, 2334, + 2934, 2947, 2936, 2331, 2328, 2331, 2458, 2329, 2332, 2458, + 2332, 2459, 2954, 2333, 2459, 2333, 2335, 2335, 2335, 2335, + 2976, 2334, 2943, 2334, 2336, 2336, 2336, 2336, 2938, 2940, + 2460, 2462, 2330, 2460, 2462, 2458, 2935, 2331, 2939, 2985, + 2459, 2335, 2949, 2335, 2646, 2646, 2646, 2646, 2333, 2336, + + 2332, 2336, 2987, 2428, 2428, 2428, 2428, 2333, 2349, 2460, + 2462, 2464, 2989, 2466, 2464, 2334, 2466, 2349, 2349, 2349, + 2349, 2349, 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2335, + 2976, 2467, 2472, 2990, 2467, 2536, 2536, 2536, 2536, 2935, + 2464, 2940, 2466, 2474, 2475, 2472, 2474, 2475, 2949, 2476, + 2336, 2442, 2476, 2991, 2477, 2993, 2442, 2477, 2472, 2442, + 2467, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, + 2442, 2472, 2474, 2475, 2480, 2996, 2482, 2480, 2476, 2482, + 2997, 2486, 2488, 2477, 2486, 2488, 2489, 2491, 2493, 2489, + 2491, 2493, 2496, 2498, 2500, 2496, 2498, 2500, 2503, 2442, + + 2998, 2503, 2999, 2480, 2506, 2482, 3000, 2506, 3001, 2536, + 2486, 2488, 3002, 3003, 2951, 2489, 2491, 2493, 3004, 3005, + 3006, 2496, 2498, 2500, 3007, 2507, 3008, 2503, 2507, 2442, + 2443, 2509, 2956, 2506, 2509, 2443, 2513, 3010, 2443, 2513, + 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, + 2516, 3011, 2517, 2516, 2507, 2517, 2520, 3034, 2521, 2520, + 2509, 2521, 2951, 2523, 2525, 2513, 2523, 2525, 2527, 2529, + 2531, 2527, 2529, 2531, 2552, 2552, 2552, 2552, 2443, 2516, + 2956, 2517, 3035, 3038, 3039, 2520, 3040, 2521, 2568, 2568, + 2568, 2568, 2523, 2525, 3041, 2603, 3044, 2527, 2529, 2531, + + 2570, 2570, 2570, 2570, 2957, 2568, 2603, 3045, 2443, 2592, + 2592, 2592, 2592, 2692, 2603, 3046, 2692, 2570, 2696, 2603, + 3050, 2696, 2612, 2612, 2612, 2612, 2592, 2613, 2613, 2613, + 2613, 2662, 2662, 2662, 2662, 2682, 2682, 2682, 2682, 3051, + 3053, 3055, 2692, 2603, 2662, 3057, 3058, 2696, 2552, 2564, + 2612, 3056, 2957, 3048, 2564, 2613, 3048, 2564, 3056, 2564, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2625, + 3059, 3060, 3062, 2603, 2570, 2630, 3063, 3064, 2625, 2625, + 2625, 2625, 2625, 2592, 2630, 2630, 2630, 2630, 2630, 2633, + 2663, 2663, 2663, 2663, 2636, 3066, 3067, 2564, 2633, 2633, + + 2633, 2633, 2633, 2636, 2636, 2636, 2636, 2636, 3069, 2955, + 2664, 2664, 2664, 2664, 2564, 2663, 3071, 2663, 2881, 2881, + 2881, 2881, 3072, 2665, 2665, 2665, 2665, 2564, 2604, 2666, + 2666, 2666, 2666, 2604, 3073, 2664, 2604, 2664, 2604, 2604, + 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2665, 2955, + 2665, 3074, 2604, 3075, 2666, 3076, 2666, 2955, 2669, 2669, + 2669, 2669, 2670, 2670, 2670, 2670, 2667, 2667, 2667, 2667, + 3077, 2668, 2668, 2668, 2668, 3070, 2604, 2671, 2671, 2671, + 2671, 3052, 3070, 2669, 3052, 2669, 3081, 2670, 3082, 2670, + 2666, 2667, 2665, 2667, 3054, 3084, 2668, 3054, 2668, 3085, + + 3061, 3086, 2671, 3061, 2671, 3087, 2604, 2605, 2672, 2672, + 2672, 2672, 2605, 2742, 3088, 2605, 2742, 2605, 2605, 2605, + 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2779, 2667, 2669, + 2779, 2605, 2668, 2672, 3089, 2672, 2671, 2670, 2673, 2673, + 2673, 2673, 2742, 2674, 2674, 2674, 2674, 2675, 2675, 2675, + 2675, 2676, 2676, 2676, 2676, 2605, 2779, 3090, 2605, 2677, + 2677, 2677, 2677, 2673, 3091, 2673, 2781, 2672, 2674, 2781, + 2674, 3094, 2675, 3095, 2675, 3096, 2676, 3097, 2676, 2678, + 2678, 2678, 2678, 3098, 2677, 2605, 2677, 2679, 2679, 2679, + 2679, 2680, 2680, 2680, 2680, 2781, 2681, 2681, 2681, 2681, + + 2785, 3100, 2674, 2785, 2678, 2673, 2678, 3065, 2676, 3101, + 3065, 3102, 2679, 3103, 2679, 3099, 2680, 3104, 2680, 3105, + 2677, 2681, 2675, 2681, 2684, 2684, 2684, 2684, 3107, 2785, + 2883, 2883, 2883, 2883, 3110, 2684, 2678, 2764, 2764, 2764, + 2764, 3099, 3115, 3119, 2765, 2765, 2765, 2765, 2787, 2788, + 3121, 2787, 2788, 2681, 3113, 3123, 2764, 2764, 2764, 2764, + 2764, 2764, 2764, 2765, 2765, 2765, 2765, 2765, 2765, 2765, + 2777, 2790, 3126, 2792, 2790, 2777, 2792, 2787, 2788, 2795, + 3113, 3128, 2795, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2797, 2799, 2803, 2797, 2799, 2803, 2804, 3130, 2807, 2804, + + 2790, 2807, 2792, 2810, 2811, 3133, 2810, 2811, 2795, 2814, + 2815, 2817, 2814, 2815, 2817, 2819, 3136, 3147, 2819, 2797, + 2799, 2803, 3149, 2821, 3151, 2804, 2821, 2807, 2823, 3153, + 3162, 2823, 2810, 2811, 2825, 2777, 3168, 2825, 2814, 2815, + 2817, 3174, 2826, 2828, 2819, 2826, 2828, 2830, 2777, 3178, + 2830, 2832, 2821, 2833, 2832, 2836, 2833, 2823, 2836, 2838, + 3159, 2840, 2838, 2825, 2840, 2841, 2843, 2845, 2841, 2843, + 2845, 2826, 2828, 3180, 2847, 2848, 2830, 2847, 2848, 3183, + 2832, 3185, 2833, 2850, 2836, 3186, 2850, 3159, 2838, 2851, + 2840, 3187, 2851, 3192, 2841, 2843, 2845, 2855, 2856, 2859, + + 2855, 2856, 2859, 2847, 2848, 2860, 2864, 2866, 2860, 2864, + 2866, 2870, 2850, 2872, 2870, 3193, 2872, 2874, 2851, 2876, + 2874, 2877, 2876, 3135, 2877, 3194, 2855, 2856, 2859, 2884, + 2884, 2884, 2884, 3195, 2860, 2864, 2866, 3196, 3068, 3197, + 2870, 3068, 2872, 3199, 3078, 3200, 2874, 3078, 2876, 3135, + 2877, 2885, 2885, 2885, 2885, 2886, 2886, 2886, 2886, 2898, + 2898, 2898, 2898, 2899, 2899, 2899, 2899, 2902, 2902, 2902, + 2902, 2903, 2903, 2903, 2903, 2904, 2904, 2904, 2904, 2910, + 2910, 2910, 2910, 2921, 2921, 2921, 2921, 2924, 2924, 2924, + 2924, 2925, 2925, 2925, 2925, 2941, 2941, 2941, 2941, 3201, + + 2921, 3202, 2965, 3198, 2924, 2965, 3198, 2980, 2925, 3208, + 2980, 3140, 2941, 2942, 2942, 2942, 2942, 2944, 2944, 2944, + 2944, 2945, 2945, 2945, 2945, 2952, 2952, 2952, 2952, 2959, + 2942, 2965, 2960, 3209, 2944, 2980, 3210, 3140, 2945, 3211, + 2959, 2902, 2952, 2960, 2960, 3212, 2910, 2916, 3214, 3217, + 3218, 2960, 2916, 2959, 3219, 2916, 2960, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 3141, 2969, 2969, + 2969, 2969, 3220, 2970, 2970, 2970, 2970, 2959, 2970, 3036, + 2960, 2944, 3036, 2971, 2971, 2971, 2971, 2973, 2973, 2973, + 2973, 2944, 2952, 3141, 3079, 2916, 2969, 3079, 2972, 2972, + + 2972, 2972, 2916, 2972, 3267, 3079, 3268, 2959, 3036, 3271, + 2960, 2971, 2994, 2994, 2994, 2994, 2995, 2995, 2995, 2995, + 3009, 3009, 3009, 3009, 3224, 2916, 2922, 2922, 2922, 3222, + 2922, 2922, 2922, 2922, 2922, 2922, 2922, 2922, 2922, 2922, + 2922, 2922, 3229, 2922, 3146, 2922, 3012, 3012, 3012, 3012, + 3013, 3013, 3013, 3013, 2922, 2922, 2922, 2922, 2922, 3237, + 3014, 3014, 3014, 3014, 3224, 3015, 3015, 3015, 3015, 3272, + 3146, 3012, 3222, 3012, 3273, 3013, 3042, 3013, 3279, 3042, + 3173, 2922, 3177, 2922, 2922, 3014, 3232, 3014, 3282, 3229, + 3015, 3287, 3015, 3016, 3016, 3016, 3016, 3030, 3030, 3030, + + 3030, 3083, 3083, 3083, 3083, 3042, 3173, 3237, 3177, 3243, + 2922, 2922, 2922, 2961, 3017, 3017, 3017, 3017, 3016, 3223, + 3016, 2961, 3015, 2961, 2961, 2961, 2961, 2961, 2961, 2961, + 2961, 2961, 2961, 3018, 3018, 3018, 3018, 2961, 3232, 3017, + 3230, 3017, 3019, 3019, 3019, 3019, 3231, 3020, 3020, 3020, + 3020, 3021, 3021, 3021, 3021, 3292, 3112, 3243, 3018, 3112, + 3018, 2961, 3022, 3022, 3022, 3022, 3244, 3019, 3234, 3019, + 3114, 3017, 3020, 3114, 3020, 3223, 3021, 2961, 3021, 3031, + 3031, 3031, 3031, 3239, 3230, 3112, 3242, 3022, 3231, 3022, + 3031, 2961, 2962, 3116, 3018, 3117, 3116, 2962, 3117, 3114, + + 2962, 3294, 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, + 2962, 2962, 3023, 3023, 3023, 3023, 2962, 3019, 3225, 3244, + 3234, 3020, 3116, 3246, 3117, 3021, 3024, 3024, 3024, 3024, + 3025, 3025, 3025, 3025, 3252, 3239, 3295, 3023, 3242, 3023, + 2962, 3026, 3026, 3026, 3026, 3233, 3027, 3027, 3027, 3027, + 3238, 3024, 3235, 3024, 3241, 3025, 3120, 3025, 3296, 3120, + 3298, 2962, 3028, 3028, 3028, 3028, 3026, 3246, 3026, 3240, + 2962, 3027, 3240, 3027, 3225, 3029, 3029, 3029, 3029, 3032, + 3032, 3032, 3032, 3254, 3252, 3120, 3240, 3028, 3233, 3028, + 3032, 3122, 3025, 3124, 3122, 3301, 3124, 3241, 3111, 3251, + + 3029, 3024, 3029, 3111, 3125, 3127, 3238, 3125, 3127, 3026, + 3235, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3129, 3248, + 3122, 3129, 3124, 3131, 3302, 3132, 3131, 3134, 3132, 3137, + 3134, 3254, 3137, 3125, 3127, 3138, 3142, 3144, 3138, 3142, + 3144, 3148, 3029, 3150, 3148, 3152, 3150, 3129, 3152, 3250, + 3304, 3251, 3131, 3111, 3132, 3257, 3134, 3154, 3137, 3155, + 3154, 3325, 3155, 3248, 3138, 3142, 3144, 3258, 3157, 3260, + 3148, 3157, 3150, 3253, 3152, 3160, 3111, 3163, 3160, 3164, + 3163, 3166, 3164, 3326, 3166, 3327, 3154, 3169, 3155, 3170, + 3169, 3171, 3170, 3175, 3171, 3176, 3175, 3157, 3176, 3179, + + 3181, 3329, 3179, 3181, 3160, 3330, 3163, 3250, 3164, 3182, + 3166, 3184, 3182, 3257, 3184, 3331, 3169, 3333, 3170, 3258, + 3171, 3260, 3175, 3334, 3176, 3337, 3253, 3281, 3179, 3181, + 3188, 3188, 3188, 3188, 3189, 3189, 3189, 3189, 3182, 3338, + 3184, 3190, 3190, 3190, 3190, 3191, 3191, 3191, 3191, 3203, + 3203, 3203, 3203, 3205, 3205, 3205, 3205, 3206, 3206, 3206, + 3206, 3207, 3207, 3207, 3207, 3213, 3213, 3213, 3213, 3215, + 3215, 3215, 3215, 3216, 3216, 3216, 3216, 3236, 3236, 3236, + 3236, 3236, 3236, 3245, 3245, 3245, 3245, 3247, 3247, 3247, + 3247, 3249, 3249, 3249, 3249, 3255, 3255, 3255, 3255, 3281, + + 3245, 3339, 3269, 3328, 3247, 3269, 3328, 3335, 3249, 3340, + 3335, 3259, 3255, 3256, 3256, 3256, 3256, 3261, 3341, 3274, + 3274, 3274, 3274, 3262, 3274, 3342, 3343, 3345, 3261, 3261, + 3256, 3269, 3328, 3346, 3262, 3262, 3261, 3278, 3278, 3278, + 3278, 3261, 3262, 3215, 3221, 3349, 3351, 3262, 3283, 3221, + 3336, 3283, 3221, 3336, 3221, 3221, 3221, 3221, 3221, 3221, + 3221, 3221, 3221, 3221, 3259, 3261, 3353, 3285, 3354, 3255, + 3285, 3262, 3276, 3276, 3276, 3276, 3283, 3276, 3280, 3280, + 3280, 3280, 3284, 3355, 3285, 3284, 3285, 3285, 3285, 3285, + 3285, 3285, 3221, 3356, 3357, 3261, 3289, 3289, 3289, 3289, + + 3358, 3262, 3290, 3290, 3290, 3290, 3291, 3291, 3291, 3291, + 3284, 3221, 3293, 3293, 3293, 3293, 3297, 3297, 3297, 3297, + 3359, 3360, 3221, 3227, 3227, 3227, 3361, 3227, 3227, 3227, + 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3363, + 3227, 3297, 3227, 3299, 3299, 3299, 3299, 3300, 3300, 3300, + 3300, 3227, 3227, 3227, 3227, 3227, 3303, 3303, 3303, 3303, + 3306, 3306, 3306, 3306, 3364, 3306, 3307, 3307, 3307, 3307, + 3347, 3365, 3308, 3308, 3308, 3308, 3344, 3366, 3227, 3344, + 3227, 3227, 3367, 3348, 3347, 3306, 3348, 3306, 3368, 3350, + 3297, 3307, 3350, 3307, 3369, 3352, 3371, 3308, 3352, 3308, + + 3372, 3309, 3309, 3309, 3309, 3373, 3374, 3227, 3227, 3227, + 3228, 3228, 3228, 3375, 3228, 3228, 3228, 3228, 3228, 3228, + 3228, 3228, 3228, 3228, 3228, 3228, 3309, 3228, 3309, 3228, + 3228, 3308, 3310, 3310, 3310, 3310, 3376, 3228, 3228, 3228, + 3228, 3228, 3228, 3377, 3311, 3311, 3311, 3311, 3379, 3313, + 3313, 3313, 3313, 3314, 3314, 3314, 3314, 3310, 3380, 3310, + 3381, 3312, 3312, 3312, 3312, 3228, 3228, 3228, 3228, 3311, + 3389, 3311, 3396, 3400, 3313, 3402, 3313, 3395, 3314, 3315, + 3315, 3315, 3315, 3405, 3407, 3410, 3312, 3412, 3312, 3414, + 3384, 3310, 3418, 3384, 3228, 3228, 3228, 3263, 3362, 3362, + + 3362, 3362, 3263, 3395, 3315, 3263, 3315, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3386, 3311, 3384, + 3426, 3263, 3312, 3313, 3316, 3316, 3316, 3316, 3317, 3317, + 3317, 3317, 3318, 3318, 3318, 3318, 3319, 3319, 3319, 3319, + 3320, 3320, 3320, 3320, 3386, 3263, 3315, 3427, 3429, 3316, + 3430, 3316, 3431, 3317, 3432, 3317, 3433, 3318, 3434, 3318, + 3436, 3319, 3437, 3319, 3438, 3320, 3435, 3320, 3439, 3435, + 3441, 3321, 3321, 3321, 3321, 3263, 3264, 3322, 3322, 3322, + 3322, 3264, 3387, 3399, 3264, 3387, 3264, 3264, 3264, 3264, + 3264, 3264, 3264, 3264, 3264, 3264, 3321, 3319, 3321, 3445, + + 3264, 3446, 3322, 3420, 3322, 3323, 3323, 3323, 3323, 3399, + 3450, 3387, 3451, 3452, 3390, 3391, 3323, 3390, 3391, 3393, + 3383, 3453, 3393, 3397, 3264, 3383, 3397, 3398, 3401, 3420, + 3398, 3401, 3321, 3383, 3383, 3383, 3383, 3383, 3383, 3383, + 3455, 3264, 3493, 3390, 3391, 3457, 3403, 3404, 3393, 3403, + 3404, 3496, 3397, 3461, 3264, 3265, 3398, 3401, 3471, 3406, + 3465, 3408, 3406, 3265, 3408, 3265, 3265, 3265, 3265, 3265, + 3265, 3265, 3265, 3265, 3265, 3403, 3404, 3409, 3411, 3265, + 3409, 3411, 3413, 3415, 3455, 3413, 3415, 3383, 3406, 3416, + 3408, 3419, 3416, 3421, 3419, 3456, 3421, 3423, 3383, 3424, + + 3423, 3461, 3424, 3457, 3465, 3497, 3409, 3411, 3471, 3456, + 3498, 3413, 3415, 3428, 3428, 3428, 3428, 3500, 3416, 3501, + 3419, 3502, 3421, 3503, 3506, 3511, 3423, 3514, 3424, 3440, + 3440, 3440, 3440, 3265, 3266, 3442, 3442, 3442, 3442, 3266, + 3463, 3466, 3266, 3467, 3266, 3266, 3266, 3266, 3266, 3266, + 3266, 3266, 3266, 3266, 3443, 3443, 3443, 3443, 3266, 3444, + 3444, 3444, 3444, 3447, 3447, 3447, 3447, 3448, 3448, 3448, + 3448, 3449, 3449, 3449, 3449, 3458, 3458, 3458, 3458, 3464, + 3463, 3472, 3266, 3462, 3462, 3462, 3462, 3473, 3485, 3486, + 3466, 3467, 3458, 3474, 3499, 3476, 3469, 3499, 3266, 3475, + + 3462, 3468, 3468, 3468, 3468, 3468, 3468, 3470, 3470, 3470, + 3470, 3477, 3266, 3479, 3479, 3479, 3479, 3488, 3482, 3483, + 3516, 3464, 3505, 3499, 3470, 3472, 3487, 3473, 3443, 3454, + 3479, 3486, 3518, 3474, 3454, 3476, 3485, 3454, 3521, 3454, + 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3469, + 3526, 3475, 3528, 3544, 3547, 3480, 3480, 3480, 3480, 3548, + 3550, 3551, 3477, 3488, 3481, 3481, 3481, 3481, 3554, 3470, + 3482, 3483, 3480, 3484, 3484, 3484, 3484, 3454, 3487, 3505, + 3454, 3481, 3491, 3504, 3504, 3504, 3504, 3555, 3549, 3552, + 3484, 3549, 3552, 3491, 3553, 3556, 3507, 3553, 3558, 3507, + + 3559, 3491, 3512, 3512, 3512, 3512, 3491, 3454, 3459, 3459, + 3459, 3562, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, + 3459, 3459, 3459, 3459, 3507, 3459, 3563, 3459, 3459, 3480, + 3491, 3508, 3564, 3567, 3508, 3459, 3459, 3459, 3459, 3459, + 3459, 3513, 3513, 3513, 3513, 3570, 3557, 3571, 3508, 3557, + 3508, 3508, 3508, 3508, 3508, 3508, 3509, 3573, 3560, 3509, + 3491, 3560, 3575, 3459, 3459, 3459, 3459, 3510, 3561, 3566, + 3510, 3561, 3566, 3509, 3577, 3509, 3509, 3509, 3509, 3509, + 3509, 3579, 3569, 3580, 3510, 3569, 3510, 3510, 3510, 3510, + 3510, 3510, 3459, 3459, 3459, 3460, 3460, 3460, 3584, 3460, + + 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, + 3460, 3586, 3460, 3589, 3460, 3460, 3515, 3515, 3515, 3515, + 3591, 3593, 3460, 3460, 3460, 3460, 3460, 3460, 3603, 3517, + 3517, 3517, 3517, 3519, 3519, 3519, 3519, 3520, 3520, 3520, + 3520, 3522, 3522, 3522, 3522, 3523, 3523, 3523, 3523, 3606, + 3460, 3460, 3460, 3460, 3517, 3610, 3612, 3615, 3519, 3524, + 3524, 3524, 3524, 3595, 3616, 3619, 3522, 3525, 3525, 3525, + 3525, 3527, 3527, 3527, 3527, 3535, 3535, 3535, 3535, 3460, + 3460, 3460, 3489, 3529, 3529, 3529, 3529, 3620, 3576, 3595, + 3489, 3576, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, + + 3489, 3489, 3622, 3517, 3623, 3624, 3489, 3519, 3529, 3628, + 3529, 3629, 3531, 3531, 3531, 3531, 3532, 3532, 3532, 3532, + 3530, 3530, 3530, 3530, 3533, 3533, 3533, 3533, 3534, 3534, + 3534, 3534, 3536, 3536, 3536, 3536, 3630, 3531, 3631, 3531, + 3636, 3532, 3605, 3568, 3529, 3530, 3568, 3530, 3643, 3533, + 3639, 3533, 3635, 3534, 3568, 3534, 3637, 3536, 3653, 3536, + 3489, 3490, 3537, 3537, 3537, 3537, 3490, 3644, 3605, 3490, + 3640, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, + 3490, 3530, 3646, 3662, 3636, 3490, 3531, 3537, 3534, 3537, + 3655, 3533, 3538, 3538, 3538, 3538, 3539, 3539, 3539, 3539, + + 3637, 3643, 3536, 3665, 3540, 3540, 3540, 3540, 3639, 3490, + 3541, 3541, 3541, 3541, 3635, 3650, 3666, 3538, 3652, 3644, + 3640, 3539, 3647, 3539, 3543, 3543, 3543, 3543, 3670, 3540, + 3646, 3540, 3672, 3587, 3655, 3541, 3587, 3541, 3678, 3490, + 3492, 3542, 3542, 3542, 3542, 3492, 3588, 3649, 3492, 3588, + 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, + 3679, 3652, 3587, 3540, 3492, 3540, 3542, 3650, 3542, 3590, + 3592, 3594, 3590, 3592, 3594, 3588, 3596, 3585, 3540, 3596, + 3540, 3598, 3585, 3599, 3598, 3647, 3599, 3682, 3492, 3651, + 3585, 3585, 3585, 3585, 3585, 3585, 3585, 3649, 3590, 3592, + + 3594, 3614, 3614, 3614, 3614, 3596, 3621, 3621, 3621, 3621, + 3598, 3601, 3599, 3604, 3601, 3683, 3604, 3607, 3492, 3494, + 3607, 3671, 3608, 3611, 3494, 3608, 3611, 3494, 3585, 3494, + 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3651, + 3601, 3656, 3604, 3494, 3657, 3684, 3607, 3626, 3626, 3626, + 3626, 3608, 3611, 3699, 3700, 3585, 3627, 3627, 3627, 3627, + 3632, 3632, 3632, 3632, 3633, 3633, 3633, 3633, 3648, 3648, + 3648, 3648, 3654, 3658, 3658, 3658, 3658, 3671, 3659, 3659, + 3659, 3659, 3690, 3701, 3675, 3648, 3654, 3675, 3705, 3708, + 3658, 3690, 3656, 3706, 3657, 3659, 3706, 3494, 3495, 3681, + + 3681, 3681, 3681, 3495, 3673, 3711, 3495, 3673, 3495, 3495, + 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3714, 3718, + 3724, 3673, 3495, 3673, 3673, 3673, 3673, 3673, 3673, 3707, + 3674, 3725, 3707, 3674, 3680, 3680, 3680, 3680, 3685, 3685, + 3685, 3685, 3686, 3686, 3686, 3686, 3495, 3674, 3726, 3674, + 3674, 3674, 3674, 3674, 3674, 3687, 3687, 3687, 3687, 3680, + 3729, 3709, 3730, 3685, 3709, 3495, 3688, 3688, 3688, 3688, + 3689, 3689, 3689, 3689, 3731, 3732, 3495, 3634, 3691, 3691, + 3691, 3691, 3634, 3710, 3737, 3634, 3710, 3634, 3634, 3634, + 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3692, 3692, 3692, + + 3692, 3713, 3736, 3691, 3713, 3691, 3741, 3743, 3680, 3693, + 3693, 3693, 3693, 3746, 3687, 3749, 3687, 3695, 3695, 3695, + 3695, 3750, 3692, 3715, 3692, 3634, 3715, 3716, 3736, 3687, + 3716, 3687, 3697, 3697, 3697, 3697, 3703, 3703, 3703, 3703, + 3719, 3751, 3695, 3719, 3695, 3754, 3634, 3704, 3704, 3704, + 3704, 3723, 3758, 3759, 3723, 3634, 3641, 3641, 3641, 3641, + 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, + 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3728, 3721, 3763, + 3728, 3721, 3789, 3641, 3641, 3641, 3641, 3641, 3641, 3721, + 3798, 3695, 3773, 3773, 3694, 3694, 3694, 3694, 3799, 3800, + + 3773, 3696, 3696, 3696, 3696, 3698, 3698, 3698, 3698, 3805, + 3811, 3641, 3641, 3641, 3641, 3722, 3813, 3806, 3722, 3694, + 3806, 3694, 3748, 3748, 3748, 3748, 3696, 3722, 3696, 3773, + 3698, 3816, 3698, 3756, 3756, 3756, 3756, 3825, 3838, 3839, + 3641, 3641, 3641, 3642, 3642, 3642, 3642, 3642, 3642, 3642, + 3642, 3642, 3642, 3642, 3642, 3642, 3642, 3642, 3642, 3642, + 3642, 3642, 3642, 3642, 3694, 3702, 3702, 3702, 3702, 3840, + 3642, 3642, 3642, 3642, 3642, 3642, 3696, 3804, 3841, 3844, + 3734, 3738, 3739, 3734, 3738, 3739, 3847, 3853, 3742, 3733, + 3702, 3742, 3702, 3744, 3733, 3854, 3744, 3855, 3642, 3642, + + 3642, 3642, 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3734, + 3738, 3739, 3757, 3757, 3757, 3757, 3828, 3742, 3860, 3828, + 3863, 3745, 3744, 3747, 3745, 3871, 3747, 3642, 3642, 3642, + 3660, 3761, 3761, 3761, 3761, 3660, 3829, 3876, 3660, 3829, + 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, + 3745, 3804, 3747, 3831, 3660, 3866, 3831, 3881, 3733, 3764, + 3764, 3764, 3764, 3765, 3765, 3765, 3765, 3733, 3767, 3767, + 3767, 3767, 3768, 3768, 3768, 3768, 3775, 3775, 3660, 3769, + 3769, 3769, 3769, 3832, 3775, 3767, 3832, 3865, 3884, 3768, + 3770, 3770, 3770, 3770, 3875, 3866, 3769, 3660, 3771, 3771, + + 3771, 3771, 3833, 3791, 3869, 3833, 3867, 3770, 3660, 3661, + 3888, 3868, 3889, 3775, 3661, 3771, 3791, 3661, 3892, 3661, + 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3865, + 3896, 3834, 3768, 3661, 3834, 3899, 3772, 3772, 3772, 3772, + 3774, 3774, 3774, 3774, 3776, 3776, 3776, 3776, 3878, 3867, + 3875, 3770, 3769, 3772, 3868, 3845, 3869, 3774, 3845, 3900, + 3903, 3776, 3777, 3777, 3777, 3777, 3778, 3778, 3778, 3778, + 3803, 3803, 3803, 3803, 3771, 3780, 3780, 3780, 3780, 3777, + 3915, 3916, 3836, 3778, 3845, 3836, 3870, 3661, 3663, 3920, + 3923, 3878, 3780, 3663, 3836, 3928, 3663, 3929, 3663, 3663, + + 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3809, 3809, + 3809, 3809, 3663, 3776, 3784, 3784, 3784, 3784, 3810, 3810, + 3810, 3810, 3935, 3783, 3783, 3783, 3783, 3777, 3938, 3846, + 3870, 3784, 3846, 3778, 3814, 3814, 3814, 3814, 3944, 3950, + 3783, 3826, 3826, 3826, 3826, 3821, 3821, 3821, 3821, 3857, + 3857, 3857, 3857, 3861, 3861, 3861, 3861, 3947, 3846, 3890, + 3890, 3890, 3890, 3952, 3954, 3935, 3663, 3664, 3664, 3664, + 3821, 3947, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3783, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3667, 3667, 3781, 3781, 3781, 3781, 3891, + 3883, 3667, 3667, 3667, 3667, 3667, 3667, 3782, 3782, 3782, + 3782, 3910, 3781, 3883, 3910, 3931, 3786, 3786, 3786, 3786, + + 3812, 3812, 3812, 3812, 3782, 3815, 3815, 3815, 3815, 3667, + 3667, 3667, 3667, 3786, 3955, 3936, 3956, 3817, 3817, 3817, + 3817, 3885, 3934, 3912, 3953, 3812, 3912, 3858, 3858, 3858, + 3858, 3957, 3913, 3914, 3885, 3913, 3914, 3958, 3667, 3667, + 3667, 3766, 3817, 3891, 3817, 3931, 3766, 3932, 3941, 3766, + 3781, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, + 3766, 3818, 3818, 3818, 3818, 3936, 3934, 3782, 3819, 3819, + 3819, 3819, 3786, 3959, 3812, 3822, 3822, 3822, 3822, 3820, + 3820, 3820, 3820, 3956, 3953, 3968, 3818, 3815, 3818, 3766, + 3969, 3974, 3941, 3819, 3843, 3819, 3975, 3979, 3986, 3843, + + 3822, 3858, 3822, 3932, 3820, 3766, 3820, 3843, 3843, 3843, + 3843, 3843, 3843, 3843, 3965, 3848, 3990, 3965, 3848, 3766, + 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, + 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, + 3779, 3979, 3822, 3819, 3848, 3977, 3976, 3779, 3779, 3779, + 3779, 3779, 3779, 3820, 3823, 3823, 3823, 3823, 3843, 3849, + 3872, 3872, 3849, 3877, 3877, 3939, 3939, 3983, 3872, 3994, + 3983, 3877, 3843, 3939, 4011, 3779, 3779, 3779, 3779, 3823, + 4015, 3823, 3873, 3873, 3873, 3873, 3976, 3977, 3849, 3894, + 3894, 3894, 3894, 3895, 3895, 3895, 3895, 3872, 4005, 3873, + + 3877, 4020, 3939, 3988, 3779, 3779, 3779, 3785, 3785, 3785, + 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, + 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3823, 3897, + 3897, 3897, 3897, 4007, 3785, 3785, 3785, 3785, 3785, 3785, + 3898, 3898, 3898, 3898, 3901, 3901, 3901, 3901, 3904, 3904, + 3904, 3904, 3980, 3988, 3897, 4005, 3873, 3905, 3905, 3905, + 3905, 4029, 3785, 3785, 3785, 3785, 3917, 3918, 4008, 3921, + 3918, 3917, 3921, 3904, 4026, 3904, 4006, 4024, 3984, 3917, + 3917, 3917, 3917, 3917, 3917, 3917, 3922, 3922, 3922, 3922, + 3984, 3785, 3785, 3785, 3787, 4007, 3918, 4010, 3921, 3787, + + 3980, 4010, 3787, 3897, 3787, 3787, 3787, 3787, 3787, 3787, + 3787, 3787, 3787, 3787, 3907, 3907, 3907, 3907, 3787, 4023, + 4032, 3970, 3904, 4006, 3970, 4008, 3901, 4033, 3906, 3906, + 3906, 3906, 4026, 3917, 3924, 3924, 3924, 3924, 4034, 3907, + 4024, 3907, 3787, 4035, 3917, 3787, 3925, 3925, 3925, 3925, + 3970, 4048, 4034, 3906, 4012, 3906, 4059, 3933, 3933, 3933, + 3933, 3937, 3937, 3937, 3937, 3940, 3940, 3940, 3940, 4036, + 4047, 4060, 3787, 3788, 3933, 4041, 4023, 4062, 3937, 4047, + 4065, 3788, 3940, 3788, 3788, 3788, 3788, 3788, 3788, 3788, + 3788, 3788, 3788, 3960, 3960, 3960, 3960, 3788, 3906, 3961, + + 3961, 3961, 3961, 3963, 3963, 3963, 3963, 3964, 3964, 3964, + 3964, 3971, 3971, 3971, 3971, 4036, 4012, 4061, 3960, 3972, + 3972, 3972, 3972, 4053, 3961, 4041, 3961, 4067, 3963, 4061, + 3963, 4060, 3964, 3973, 3973, 3973, 3973, 3788, 3978, 3978, + 3978, 3978, 4068, 4071, 3993, 3993, 3993, 3993, 4073, 4076, + 4078, 3788, 3790, 3790, 3790, 3978, 4080, 3790, 3790, 3790, + 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3993, + 3790, 4053, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, + 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, + 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, + + 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, + 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, + 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, + 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3792, + 3792, 3792, 4063, 4082, 3792, 3792, 3792, 3792, 3792, 3792, + 3792, 3792, 3792, 3792, 3792, 4064, 4049, 4081, 3792, 4066, + 3982, 3982, 3982, 3982, 4070, 4083, 4085, 3792, 3792, 3792, + 3792, 3792, 4087, 3962, 3962, 3962, 3962, 3982, 3995, 3995, + 3995, 3995, 3996, 3996, 3996, 3996, 3997, 3997, 3997, 3997, + 3998, 3998, 3998, 3998, 3792, 4089, 3792, 3792, 3962, 4090, + + 3962, 4063, 4252, 3995, 4000, 4000, 4000, 4000, 4252, 4066, + 4069, 3997, 4064, 3997, 4084, 3998, 4003, 4003, 4003, 4003, + 4049, 4081, 4070, 3792, 3792, 3792, 3793, 3793, 3793, 4072, + 4434, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, + 3793, 3793, 3793, 4077, 4435, 3793, 3793, 4086, 3962, 4018, + 4018, 4018, 4018, 3793, 3793, 3793, 3793, 3793, 3793, 4019, + 4019, 4019, 4019, 4021, 4021, 4021, 4021, 4022, 4022, 4022, + 4022, 4803, 4069, 4084, 4018, 4181, 4025, 4025, 4025, 4025, + 4181, 3793, 3793, 3793, 3793, 4042, 4042, 4042, 4042, 4077, + 4186, 4072, 4022, 4025, 4022, 4051, 4051, 4051, 4051, 4191, + + 4830, 4186, 4042, 2267, 4191, 4038, 4038, 4038, 4038, 4086, + 3793, 3793, 3793, 3794, 3794, 3794, 2263, 2262, 3794, 3794, + 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, + 4038, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, + 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, + 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, + 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, + 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, + 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, + 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, + + 3795, 3795, 3795, 2259, 4580, 3795, 3795, 3795, 3795, 3795, + 3795, 3795, 3795, 3795, 3795, 3795, 4580, 2258, 4616, 3795, + 4039, 4039, 4039, 4039, 4616, 4815, 2252, 3795, 3795, 3795, + 3795, 3795, 3795, 4844, 3999, 3999, 3999, 3999, 4040, 4040, + 4040, 4040, 2244, 2243, 2242, 4039, 4815, 4039, 4044, 4044, + 4044, 4044, 2237, 2236, 4844, 3795, 2235, 3795, 3795, 3999, + 2233, 3999, 2232, 4040, 2231, 4044, 4050, 4050, 4050, 4050, + 4052, 4052, 4052, 4052, 4210, 4214, 4227, 4231, 4251, 4210, + 4214, 4227, 4231, 4251, 3795, 3795, 3795, 3796, 3796, 3796, + 2230, 4050, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, + + 3796, 3796, 3796, 3796, 2229, 2224, 3796, 3796, 3999, 4075, + 4075, 4075, 4075, 2184, 3796, 3796, 3796, 3796, 3796, 3796, + 4178, 2183, 2182, 2181, 2180, 4228, 4075, 4228, 4178, 4180, + 4180, 4180, 4228, 4178, 4188, 4188, 4188, 4190, 4190, 4190, + 2179, 4226, 3796, 3796, 3796, 3796, 4197, 4197, 4197, 4226, + 4180, 4248, 2175, 2174, 4226, 4188, 4248, 4248, 4190, 4199, + 4199, 4199, 4219, 4219, 4219, 4277, 2173, 4197, 2172, 2171, + 4277, 3796, 3796, 3796, 3864, 4225, 4225, 4225, 2168, 3864, + 4199, 2167, 3864, 4219, 3864, 3864, 3864, 3864, 3864, 3864, + 3864, 3864, 3864, 3864, 2166, 2165, 4225, 4246, 4246, 4246, + + 4253, 2163, 4298, 4253, 4261, 4261, 4261, 4298, 4253, 4289, + 4289, 4289, 4301, 4301, 4308, 4301, 4325, 2162, 4246, 4308, + 4301, 4325, 3864, 4334, 4339, 4261, 4337, 4337, 4337, 4339, + 4289, 4334, 4355, 4364, 4368, 4379, 4334, 4355, 4364, 4368, + 4379, 3864, 2161, 4384, 4391, 4399, 4401, 4337, 4384, 4391, + 4399, 4401, 3864, 3874, 3874, 3874, 3874, 3874, 3874, 3874, + 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, + 3874, 3874, 3874, 3874, 4342, 4342, 4342, 4349, 4349, 4349, + 3874, 3874, 3874, 3874, 3874, 3874, 4353, 4353, 4353, 4405, + 2160, 4363, 4363, 4363, 4405, 4342, 2158, 2156, 4349, 4367, + + 4367, 4367, 4390, 4390, 4390, 2155, 2154, 4353, 3874, 3874, + 3874, 3874, 4363, 4398, 4398, 4398, 4400, 4426, 2153, 4402, + 4367, 4402, 4426, 4390, 4400, 4412, 4402, 4428, 2098, 4400, + 2091, 4432, 4428, 4428, 4398, 4412, 4432, 3874, 3874, 3874, + 3879, 4412, 4425, 4425, 4425, 3879, 4412, 2089, 3879, 2085, + 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, + 4429, 2084, 4451, 4425, 3879, 4429, 4436, 4451, 4429, 4436, + 4441, 4441, 2083, 4441, 4436, 4450, 4450, 4450, 4441, 4473, + 4487, 4487, 4487, 4488, 4473, 4497, 4500, 4500, 3879, 4500, + 4497, 2082, 4507, 4521, 4500, 4536, 4450, 4507, 4521, 4488, + + 4536, 4487, 2081, 4553, 4488, 4531, 4531, 4531, 4553, 3879, + 4557, 4564, 4568, 2080, 2079, 4557, 4564, 4568, 3879, 3880, + 4535, 4535, 4535, 4576, 3880, 2078, 4531, 3880, 4576, 3880, + 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 2077, + 2076, 4535, 2075, 3880, 4537, 4537, 4537, 4543, 4543, 4543, + 4547, 4547, 4547, 4552, 4552, 4552, 4556, 4556, 4556, 4563, + 4563, 4563, 4567, 4567, 4567, 4537, 2074, 4577, 4543, 4603, + 2073, 4547, 4577, 2061, 4552, 4577, 2060, 4556, 4583, 4583, + 4563, 4583, 4595, 4567, 3880, 4603, 4583, 4595, 4607, 2059, + 4603, 2057, 2052, 4607, 4575, 4575, 4575, 3880, 3882, 3882, + + 3882, 2051, 2050, 3882, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 4575, 3882, 2049, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, 3882, + 3882, 3882, 3882, 3882, 3882, 3886, 3886, 3886, 2048, 2047, + 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3858, - 3858, 3858, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3858, 3858, - 3872, 3872, 3872, 0, 0, 3872, 3872, 3872, 3872, 3872, - 3872, 3872, 3872, 3872, 3872, 3872, 3872, 0, 3872, 3872, - 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, - 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, - 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, - - 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, - 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, - 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, - 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3873, 3873, 3873, - 0, 0, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, - 3873, 3873, 3873, 3873, 0, 3873, 3873, 3873, 3873, 3873, - 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, - 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, - 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, - 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, - - 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, - 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3873, - 3873, 3873, 3873, 3873, 3884, 3884, 3884, 0, 0, 3884, - 3884, 3884, 0, 3884, 3884, 3884, 3884, 3884, 3884, 3884, - 0, 0, 0, 3884, 0, 0, 0, 0, 0, 0, - 0, 3884, 3884, 3884, 3884, 3884, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3884, - 3884, 3884, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3886, 3886, 2046, 3886, 3886, 3886, 3886, 3886, 3886, 3886, + 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, + 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, + 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, + 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, + 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, + 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, + 3886, 3886, 3887, 3887, 3887, 2044, 2043, 3887, 3887, 3887, + 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 2041, + 2040, 3887, 3887, 4594, 4594, 4594, 4602, 4602, 4602, 3887, + + 3887, 3887, 3887, 3887, 3887, 4605, 4605, 2039, 4605, 2038, + 4608, 4608, 4608, 4605, 4594, 4646, 4646, 4602, 4646, 4816, + 4786, 4845, 4828, 4646, 4816, 2037, 4845, 3887, 3887, 3887, + 3887, 4608, 4704, 4704, 4786, 4704, 4786, 4828, 4846, 4868, + 4704, 4786, 4828, 4846, 4868, 2036, 2035, 2029, 2028, 2027, + 2021, 2020, 2013, 2010, 2009, 2008, 3887, 3887, 3887, 3930, + 3930, 3930, 2006, 2005, 3930, 3930, 3930, 3930, 3930, 3930, + 3930, 3930, 3930, 3930, 3930, 3930, 2004, 3930, 3930, 3930, + 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, + 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, - 0, 0, 0, 0, 0, 0, 0, 0, 3884, 3884, - 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, - 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, - 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3920, - 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, - 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, - 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3922, 3922, 3922, - - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3923, 3923, 3923, 3923, - 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, - 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, - 3923, 3923, 3923, 3923, 3923, 3924, 3924, 3924, 3924, 3924, - 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, - 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, - 3924, 3924, 3924, 3924, 3925, 3925, 3925, 3925, 3925, 3925, - 3925, 3925, 3925, 3925, 3925, 3925, 3925, 3925, 3925, 3925, - - 3925, 3925, 3925, 3925, 3925, 3925, 3925, 3925, 3925, 3925, - 3925, 3925, 3925, 3926, 3926, 3926, 3926, 3926, 3926, 3926, - 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, - 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, - 3926, 3926, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, - 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, - 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, - 3927, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, - 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, - 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, - - 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, - 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, - 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, - 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3931, 3931, - 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, - 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, - 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3932, 3932, 3932, - 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, - - 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, - 3932, 3932, 3932, 3932, 3932, 3932, 3933, 3933, 3933, 3933, - 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, - 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, - 3933, 3933, 3933, 3933, 3933, 3934, 3934, 3934, 3934, 3934, - 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3934, - 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3934, - 3934, 3934, 3934, 3934, 3935, 3935, 3935, 3935, 3935, 3935, - 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, - 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, - - 3935, 3935, 3935, 3936, 3936, 3936, 3936, 3936, 3936, 3936, - 3936, 3936, 3936, 3936, 3936, 3936, 3936, 3936, 3936, 3936, - 3936, 3936, 3936, 3936, 3936, 3936, 3936, 3936, 3936, 3936, - 3936, 3936, 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, - 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, - 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, - 3937, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, - 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, - 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, - 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, - - 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, - 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3940, - 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, - 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, - 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3941, 3941, - 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, - 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, - 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3942, 3942, 3942, - 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, - 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, - - 3942, 3942, 3942, 3942, 3942, 3942, 3943, 3943, 3943, 3943, - 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, - 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, - 3943, 3943, 3943, 3943, 3943, 3944, 3944, 3944, 3944, 3944, - 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, - 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, - 3944, 3944, 3944, 3944, 3945, 3945, 3945, 3945, 3945, 3945, - 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, - 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, - 3945, 3945, 3945, 3946, 3946, 3946, 3946, 3946, 3946, 3946, - - 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, - 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, - 3946, 3946, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, - 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, - 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, - 3947, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, - 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, - 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, - 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, - 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, - - 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3950, - 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, - 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, - 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3951, 3951, - 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, - 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, - 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3952, 3952, 3952, - 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, - 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, - 3952, 3952, 3952, 3952, 3952, 3952, 3953, 3953, 3953, 3953, - - 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, - 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, - 3953, 3953, 3953, 3953, 3953, 3954, 3954, 3954, 3954, 3954, - 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, - 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, - 3954, 3954, 3954, 3954, 3955, 3955, 3955, 3955, 3955, 3955, - 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, - 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, - 3955, 3955, 3955, 3956, 3956, 3956, 3956, 3956, 3956, 3956, - 3956, 3956, 3956, 3956, 3956, 3956, 3956, 3956, 3956, 3956, - - 3956, 3956, 3956, 3956, 3956, 3956, 3956, 3956, 3956, 3956, - 3956, 3956, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, - 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, - 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, - 3957, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, - 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, - 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, - 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, - 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, - 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3960, - - 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, - 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, - 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3961, 3961, - 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, - 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, - 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3962, 3962, 3962, - 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, - 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, - 3962, 3962, 3962, 3962, 3962, 3962, 3963, 3963, 3963, 3963, - 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, - - 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, - 3963, 3963, 3963, 3963, 3963, 3964, 3964, 3964, 3964, 3964, - 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, - 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, - 3964, 3964, 3964, 3964, 3965, 3965, 3965, 3965, 3965, 3965, - 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, - 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, - 3965, 3965, 3965, 3966, 3966, 3966, 3966, 3966, 3966, 3966, - 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, + 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, + 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, + 3930, 3930, 3930, 3930, 3930, 3930, 3942, 2003, 1998, 1996, + 1995, 3942, 4814, 1994, 3942, 1993, 3942, 3942, 3942, 3942, + 3942, 3942, 3942, 3942, 3942, 3942, 4814, 4856, 4814, 4858, + 3942, 1992, 1987, 4814, 1986, 1985, 1984, 1983, 1982, 1981, + 1980, 1979, 4856, 1978, 4858, 1977, 1976, 4856, 1973, 4858, + 1970, 1968, 1967, 1966, 3942, 1965, 1964, 1963, 1962, 1960, + + 1958, 1957, 1956, 1953, 1951, 1949, 1947, 1946, 1944, 1943, + 3942, 1940, 1938, 1937, 1927, 1921, 1920, 1916, 1915, 1914, + 1913, 1910, 1909, 1908, 3942, 3943, 1878, 1873, 1869, 1868, + 3943, 1867, 1866, 3943, 1864, 3943, 3943, 3943, 3943, 3943, + 3943, 3943, 3943, 3943, 3943, 1863, 1861, 1860, 1858, 3943, + 1857, 1856, 1850, 1849, 1847, 1846, 1845, 1844, 1842, 1831, + 1825, 1818, 1809, 1807, 1805, 1803, 1781, 1771, 1768, 1767, + 1766, 1763, 1761, 1760, 1757, 1752, 1748, 1747, 1746, 1745, + 3943, 1742, 1738, 1726, 1725, 1723, 1722, 1721, 1720, 1719, + 1716, 1710, 1699, 1698, 1697, 1662, 1659, 1657, 1654, 1653, + + 1649, 1648, 1639, 3943, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, - - 3966, 3966, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, - 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, - 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, - 3967, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, - 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, - 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, - 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, - 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, - 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3970, - 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, - - 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, - 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3971, 3971, - 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, - 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, - 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3972, 3972, 3972, - 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, - 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, - 3972, 3972, 3972, 3972, 3972, 3972, 3973, 3973, 3973, 3973, - 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, - 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, - - 3973, 3973, 3973, 3973, 3973, 3974, 3974, 3974, 3974, 3974, - 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, - 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, - 3974, 3974, 3974, 3974, 3975, 3975, 3975, 3975, 3975, 3975, - 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, - 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, - 3975, 3975, 3975, 3976, 3976, 3976, 3976, 3976, 3976, 3976, - 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, - 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, - 3976, 3976, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, - - 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, - 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, - 3977, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, - 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, - 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, - 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, - 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, - 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3980, - 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, - 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, - - 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3981, 3981, - 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, - 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, - 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3982, 3982, 3982, - 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, - 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, - 3982, 3982, 3982, 3982, 3982, 3982, 3983, 3983, 3983, 3983, - 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, - 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, - 3983, 3983, 3983, 3983, 3983, 3984, 3984, 3984, 3984, 3984, - - 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, - 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, - 3984, 3984, 3984, 3984, 3985, 3985, 3985, 3985, 3985, 3985, + 3966, 3966, 3966, 3966, 3966, 1635, 1631, 1629, 1628, 1620, + 1617, 3966, 3966, 3966, 3966, 3966, 3966, 1616, 1613, 1609, + 1608, 1607, 1599, 1589, 1585, 1584, 1583, 1582, 1581, 1580, + 1578, 1573, 1549, 1546, 1540, 1528, 1527, 1526, 1525, 3966, + 3966, 3966, 3966, 1523, 1519, 1518, 1512, 1511, 1510, 1493, + 1490, 1485, 1482, 1481, 1480, 1479, 1478, 1475, 1472, 1468, + 1461, 1455, 1453, 1451, 1450, 1445, 1444, 1443, 3966, 3966, + 3966, 3985, 3985, 3985, 1442, 1439, 3985, 3985, 3985, 3985, + + 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 1432, 3985, + 1431, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, - 3985, 3985, 3985, 3986, 3986, 3986, 3986, 3986, 3986, 3986, - 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, - 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, - 3986, 3986, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, - 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, - - 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, - 3987, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, - 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, - 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, - 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, - 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, - 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3990, - 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, - 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, - 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3991, 3991, - - 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, + 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, + 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, + 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, + 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, - 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3992, 3992, 3992, - 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, - 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, - 3992, 3992, 3992, 3992, 3992, 3992, 3993, 3993, 3993, 3993, - 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, - 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, - 3993, 3993, 3993, 3993, 3993, 3994, 3994, 3994, 3994, 3994, - 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, - - 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, - 3994, 3994, 3994, 3994, 3995, 3995, 3995, 3995, 3995, 3995, - 3995, 3995, 3995, 3995, 3995, 3995, 3995, 3995, 3995, 3995, - 3995, 3995, 3995, 3995, 3995, 3995, 3995, 3995, 3995, 3995, - 3995, 3995, 3995, 3996, 3996, 3996, 3996, 3996, 3996, 3996, - 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, - 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, - 3996, 3996, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, - 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, - 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, - - 3997, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, - 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, - 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, - 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, - 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, - 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 4000, - 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, - 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, - 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4001, 4001, - 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, - - 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, - 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4003, 4003, 4003, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4003, 4003, 4003, 0, 0, 4003, 0, 0, - 0, 4003, 4004, 4004, 4004, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4004, 0, 0, 0, 4004, 4006, 4006, 4006, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4006, 0, 0, 0, 4006, 0, 0, - 0, 4006, 0, 0, 4006, 4007, 4007, 4007, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4007, 0, 0, 0, 4007, - 4007, 4008, 4008, 4008, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4008, 4008, 0, 0, - 0, 4008, 0, 0, 0, 4008, 4009, 4009, 0, 4009, + 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 1429, + + 1426, 1425, 1423, 1422, 1420, 3991, 3991, 3991, 3991, 3991, + 3991, 1417, 1409, 1404, 1401, 1399, 1398, 1397, 1394, 1393, + 1386, 1384, 1381, 1380, 1378, 1377, 1372, 1364, 1361, 1359, + 1358, 1357, 1354, 3991, 3991, 3991, 3991, 1350, 1349, 1348, + 1347, 1346, 1344, 1343, 1328, 1325, 1324, 1308, 1304, 1303, + 1301, 1300, 1299, 1298, 1296, 1293, 1291, 1281, 1279, 1278, + 1274, 1271, 3991, 3991, 3991, 4009, 4009, 4009, 1267, 1264, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, + 4009, 4009, 1263, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, - 4009, 4009, 4009, 4009, 4009, 4011, 4011, 4011, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4011, 4011, 4011, 0, 0, 4011, 0, 0, 0, 4011, - - 4012, 4012, 4012, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4012, 0, 0, 0, 4012, 4013, 4013, 4013, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4013, 4013, 4013, 0, 0, 4013, 0, 0, 0, 4013, - 4014, 4014, 4014, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4014, 0, 0, 0, 4014, 4016, 4016, 0, 0, 0, - 4016, 4016, 0, 4016, 4016, 4016, 4016, 4016, 4016, 4016, - 0, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, - 4016, 0, 0, 4016, 4017, 4017, 4017, 4017, 4017, 4017, - 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, - 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, - 4017, 4017, 4017, 4018, 4018, 0, 0, 4018, 4018, 4018, - 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, - 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, - 4018, 4018, 4019, 4019, 0, 4019, 4019, 4019, 4019, 4019, - 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, - 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, - 4019, 4020, 4020, 4020, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 4020, 4020, 0, 0, - 0, 4020, 0, 0, 0, 4020, 4021, 4021, 4021, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4021, 0, 0, 0, - 4021, 4022, 4022, 4022, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4022, 4022, 0, 0, - 0, 4022, 0, 0, 0, 4022, 4023, 4023, 4023, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4023, 0, 0, 0, - 4023, 4024, 4024, 0, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4025, 4025, 0, 4025, 4025, 4025, 4025, 4025, 4025, 4025, - 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, - 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4026, - 4026, 0, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 0, - 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, - 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4027, 4027, + 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, + 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, + 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, + 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, + 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, + 4009, 4009, 4027, 4027, 4027, 1259, 1254, 4027, 4027, 4027, + 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 1253, + 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, - 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4028, 4028, 4028, - 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, - 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, - 4028, 4028, 4028, 4028, 4028, 4028, 4029, 4029, 4029, 4029, - 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, - 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, - 4029, 4029, 4029, 4029, 4029, 4030, 0, 0, 4030, 4030, - 4030, 4030, 4030, 4030, 4030, 0, 4030, 4030, 4030, 4030, - 0, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 0, 4030, - 4030, 4030, 4030, 4030, 4031, 4031, 4031, 4031, 4031, 4031, - - 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, - 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, - 4031, 4031, 4031, 4033, 4033, 0, 4033, 4033, 4033, 4033, - 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, - 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, - 4033, 4033, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, - 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, - 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, - 4034, 4035, 4035, 0, 4035, 4035, 4035, 4035, 4035, 4035, - 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, - - 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, - 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, - 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, - 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4038, - 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, - 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, - 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4039, 0, - 0, 0, 0, 0, 0, 0, 0, 4039, 0, 0, - 0, 0, 0, 4039, 0, 0, 0, 4039, 4039, 0, - 4039, 0, 4039, 4040, 4040, 4040, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 4040, 4040, - 0, 0, 0, 4040, 0, 0, 0, 4040, 4041, 4041, - 4041, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4041, 0, - 0, 0, 4041, 4042, 4042, 0, 4042, 0, 4042, 4042, - 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, - 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, - 4042, 4042, 4043, 0, 4043, 4043, 4043, 4043, 4043, 0, - 0, 0, 4043, 0, 4043, 0, 4043, 4044, 4044, 0, - 4044, 0, 4044, 4044, 4044, 4044, 4044, 4044, 4044, 4044, - - 4044, 4044, 4044, 4044, 4044, 4044, 4044, 4044, 4044, 4044, - 4044, 4044, 4044, 4044, 4044, 4044, 4045, 0, 4045, 4045, - 4045, 4045, 4045, 0, 0, 0, 4045, 0, 4045, 0, - 4045, 4046, 4046, 4046, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4046, 4046, 0, 0, - 0, 4046, 0, 0, 0, 4046, 4047, 4047, 4047, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4047, 0, 0, 0, - 4047, 4051, 4051, 0, 4051, 4051, 4051, 4051, 4051, 4051, - 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, - - 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, - 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, - 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, - 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4054, - 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, - 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, - 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4055, 4055, - 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, - 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, - 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4056, 4056, 4056, - - 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, - 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, - 4056, 4056, 4056, 4056, 4056, 4056, 4057, 4057, 0, 4057, - 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, - 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, - 4057, 4057, 4057, 4057, 4057, 4058, 4058, 0, 4058, 0, - 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, - 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, - 4058, 4058, 4058, 4058, 4059, 0, 4059, 4059, 4059, 4059, - 4059, 0, 0, 0, 4059, 0, 4059, 0, 4059, 4060, - - 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, - 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, - 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4061, 4061, - 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, - 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, - 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4062, 4062, 0, - 4062, 0, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, - 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, - 4062, 4062, 4062, 4062, 4062, 4062, 4063, 0, 4063, 4063, - 4063, 4063, 4063, 0, 0, 0, 4063, 0, 4063, 0, - - 4063, 4064, 4064, 0, 4064, 0, 4064, 4064, 4064, 4064, - 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, - 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, - 4065, 0, 4065, 4065, 4065, 4065, 4065, 0, 0, 0, - 4065, 0, 4065, 0, 4065, 4066, 4066, 4066, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4066, 4066, 0, 0, 0, 4066, 0, 0, 0, 4066, - 4067, 4067, 4067, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4067, 4067, 0, 0, 0, - 4067, 0, 0, 0, 4067, 4068, 4068, 4068, 0, 0, - + 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, + 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, + 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, + 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4028, + 4028, 4028, 1252, 1251, 4028, 4028, 4028, 4028, 4028, 4028, + 4028, 4028, 4028, 4028, 4028, 1248, 1244, 1238, 4028, 1236, + 1235, 1229, 1219, 1211, 1205, 1203, 1199, 4028, 4028, 4028, + 4028, 4028, 1197, 1188, 1187, 1186, 1185, 1182, 1181, 1180, + 1179, 1164, 1145, 1136, 1134, 1133, 1132, 1129, 1128, 1127, + 1125, 1124, 1115, 1114, 4028, 4028, 4028, 4028, 1113, 1110, + + 1100, 1088, 1085, 1079, 1074, 1070, 1061, 1053, 1049, 1042, + 1037, 1034, 1030, 1027, 1024, 1022, 1014, 996, 988, 984, + 967, 964, 963, 4028, 4028, 4028, 4030, 4030, 4030, 960, + 958, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, + 4030, 4030, 957, 942, 939, 4030, 925, 921, 918, 915, + 901, 864, 860, 4030, 4030, 4030, 4030, 4030, 4030, 858, + 855, 854, 853, 841, 840, 838, 837, 835, 831, 826, + 821, 819, 809, 807, 806, 798, 795, 794, 785, 770, + 765, 4030, 4030, 4030, 4030, 757, 752, 738, 735, 730, + 726, 717, 713, 709, 706, 703, 696, 693, 690, 687, + + 679, 676, 673, 670, 666, 653, 649, 646, 642, 639, + 4030, 4030, 4030, 4031, 4031, 4031, 638, 637, 4031, 4031, + 4031, 631, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 626, + 624, 620, 4031, 616, 603, 602, 587, 577, 573, 561, + 557, 4031, 4031, 4031, 4031, 547, 543, 535, 523, 518, + 517, 516, 514, 503, 500, 498, 490, 489, 485, 482, + 478, 466, 458, 452, 448, 443, 442, 432, 4031, 4031, + 4031, 4031, 430, 425, 423, 422, 421, 420, 409, 400, + 384, 363, 360, 350, 348, 342, 337, 328, 316, 306, + 301, 299, 295, 293, 0, 0, 0, 4031, 4031, 4045, + + 4045, 4045, 0, 0, 4045, 4045, 4045, 4045, 4045, 4045, + 4045, 4045, 4045, 4045, 4045, 4045, 0, 4045, 4045, 4045, + 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, + 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, + 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, + 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, + 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, + 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, + 4045, 4045, 4045, 4045, 4045, 4045, 4046, 4046, 4046, 0, + 0, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, + + 4046, 4046, 4046, 0, 4046, 4046, 4046, 4046, 4046, 4046, + 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, + 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, + 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, + 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, + 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, + 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, + 4046, 4046, 4046, 4057, 4057, 4057, 0, 0, 4057, 4057, + 4057, 0, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 0, + 0, 0, 4057, 0, 0, 0, 0, 0, 0, 0, + + 4057, 4057, 4057, 4057, 4057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4068, 0, 0, 0, 4068, - 4069, 4069, 4069, 0, 0, 4069, 0, 0, 0, 4069, + 0, 0, 0, 0, 0, 0, 0, 0, 4057, 4057, + 4057, 4057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4069, 0, 0, 0, 4069, 4071, 0, 0, 4071, 4071, - 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, - 0, 4071, 4071, 4071, 4071, 4071, 4071, 4071, 0, 4071, - 4071, 4071, 4071, 4071, 4072, 4072, 4072, 4072, 4072, 4072, - 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, - 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, - - 4072, 4072, 4072, 4075, 0, 4075, 4075, 4075, 4075, 4075, - 0, 0, 0, 4075, 0, 4075, 0, 4075, 4076, 0, - 4076, 4076, 4076, 4076, 4076, 0, 0, 4076, 4076, 0, - 4076, 0, 4076, 4077, 0, 0, 4077, 0, 0, 4077, - 0, 4077, 4077, 4077, 4077, 4077, 0, 0, 4077, 4077, - 0, 4077, 0, 4077, 0, 0, 4077, 4078, 0, 0, - 4078, 0, 0, 4078, 0, 4078, 4078, 4078, 4078, 4078, - 0, 0, 0, 4078, 0, 4078, 0, 4078, 0, 0, - 4078, 4079, 4079, 0, 4079, 4079, 4079, 4079, 4079, 4079, - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, - - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, - 4080, 4080, 0, 4080, 4080, 0, 0, 0, 4080, 0, - 0, 0, 4080, 4081, 4081, 4081, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4081, 4081, - 0, 0, 0, 4081, 0, 0, 0, 4081, 4082, 4082, - 4082, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4082, 0, - 0, 0, 4082, 4083, 0, 0, 0, 4083, 4083, 4083, - 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, - 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, - - 4083, 4083, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, - 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, - 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, - 4084, 4085, 0, 0, 0, 4085, 4085, 4085, 4085, 4085, - 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, - 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, - 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, - 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, - 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4087, - 0, 0, 0, 4087, 4087, 4087, 4087, 4087, 4087, 4087, - - 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, - 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4088, 4088, - 4088, 4088, 4088, 4088, 4088, 4088, 4088, 4088, 4088, 4088, - 4088, 4088, 4088, 4088, 4088, 4088, 4088, 4088, 4088, 4088, - 4088, 4088, 4088, 4088, 4088, 4088, 4088, 4089, 4089, 0, - 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, - 4089, 4089, 0, 4089, 4089, 0, 4089, 4089, 4089, 4089, - 0, 4089, 4089, 4089, 4089, 4089, 4090, 4090, 4090, 4090, - 4090, 4090, 4090, 4090, 4090, 4090, 4090, 4090, 4090, 4090, - 4090, 4090, 4090, 4090, 4090, 4090, 4090, 4090, 4090, 4090, - - 4090, 4090, 4090, 4090, 4090, 4091, 0, 0, 4091, 4091, - 0, 4091, 0, 4091, 4091, 4091, 4091, 4091, 0, 0, - 0, 4091, 0, 0, 0, 4091, 0, 0, 4091, 4092, - 4092, 0, 0, 0, 0, 4092, 0, 4092, 4092, 0, - 0, 0, 4092, 0, 0, 0, 4092, 4093, 4093, 0, - 4093, 0, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, + 0, 0, 0, 0, 0, 0, 0, 4057, 4057, 4092, + 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, + 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, + 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, - 4093, 4093, 4093, 4093, 4093, 4093, 4094, 0, 4094, 4094, - 4094, 4094, 4094, 0, 0, 0, 4094, 0, 4094, 0, - 4094, 4095, 4095, 0, 4095, 0, 4095, 4095, 4095, 4095, + 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, + 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4094, 4094, 4094, + 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, + 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, + 4094, 4094, 4094, 4094, 4094, 4094, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, - 4096, 0, 4096, 4096, 4096, 4096, 4096, 0, 0, 0, - 4096, 0, 4096, 0, 4096, 4097, 0, 4097, 4097, 4097, - 4097, 0, 0, 0, 0, 4097, 0, 0, 0, 4097, - 4098, 0, 0, 0, 0, 0, 4098, 0, 4098, 4098, - 4098, 4098, 4098, 0, 0, 4098, 4098, 0, 0, 0, - 4098, 0, 0, 4098, 4099, 4099, 4099, 4099, 4099, 4099, + 4095, 4095, 4095, 4095, 4095, 4096, 4096, 4096, 4096, 4096, + 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, + 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, + + 4096, 4096, 4096, 4096, 4097, 4097, 4097, 4097, 4097, 4097, + 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4097, + 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4097, + 4097, 4097, 4097, 4098, 4098, 4098, 4098, 4098, 4098, 4098, + 4098, 4098, 4098, 4098, 4098, 4098, 4098, 4098, 4098, 4098, + 4098, 4098, 4098, 4098, 4098, 4098, 4098, 4098, 4098, 4098, + 4098, 4098, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, - 4099, 4099, 0, 4099, 4099, 4099, 4099, 4099, 4099, 4099, + 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, + 4099, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, - 4099, 4099, 4099, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, - 4100, 4100, 4102, 0, 0, 0, 4102, 4102, 4102, 4102, + 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, + 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, + 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, - 4102, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, + 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, - 4104, 0, 0, 0, 4104, 4104, 4104, 4104, 4104, 4104, + 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4104, 4104, 4104, + 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4105, + 4104, 4104, 4104, 4104, 4104, 4104, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, - 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4106, 0, - 0, 0, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, + 4105, 4105, 4105, 4105, 4105, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, - 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4107, 4107, 4107, + 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, + 4106, 4106, 4106, 4106, 4107, 4107, 4107, 4107, 4107, 4107, + 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, - - 4107, 4107, 4107, 4107, 4107, 4107, 4108, 0, 0, 0, + 4107, 4107, 4107, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, - 4108, 4108, 4108, 4108, 4108, 4109, 4109, 4109, 4109, 4109, + 4108, 4108, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, - 4109, 4109, 4109, 4109, 4110, 4110, 4110, 4110, 4110, 4110, - 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, + 4109, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, - 4110, 4110, 4110, 4111, 4111, 4111, 4111, 4111, 4111, 4111, + 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, - 4111, 4111, 4112, 4112, 4112, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4112, 4112, 0, - 0, 0, 4112, 0, 0, 0, 4112, 4113, 4113, 4113, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4113, 0, 0, - 0, 4113, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, - 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, - 4114, 4114, 4114, 4114, 4114, 0, 4114, 4114, 4114, 4114, + 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4112, + 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, + 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, + 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4113, 4113, + 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, + 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, + 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4114, 4114, 4114, - 4114, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, + 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, + 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, + 4114, 4114, 4114, 4114, 4114, 4114, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, - 4116, 4116, 0, 4116, 0, 4116, 4116, 4116, 4116, 4116, + 4115, 4115, 4115, 4115, 4115, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, - 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4117, - 0, 4117, 4117, 4117, 4117, 4117, 0, 0, 0, 4117, - 0, 4117, 0, 4117, 4118, 4118, 0, 4118, 4118, 4118, + 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, + 4116, 4116, 4116, 4116, 4117, 4117, 4117, 4117, 4117, 4117, + 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, + + 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, + 4117, 4117, 4117, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, - - 4118, 4118, 4118, 4119, 4119, 4119, 4119, 4119, 4119, 4119, + 4118, 4118, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, - 4119, 4119, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, + 4119, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, - 4120, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, + 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, + 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4122, + 4122, 4122, 4122, 4122, 4122, 4122, 4122, 4122, 4122, 4122, + 4122, 4122, 4122, 4122, 4122, 4122, 4122, 4122, 4122, 4122, + 4122, 4122, 4122, 4122, 4122, 4122, 4122, 4122, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, - 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, - 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4124, + 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, + 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, - 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4125, 4125, - 0, 4125, 0, 0, 0, 0, 4125, 0, 0, 0, - 4125, 4126, 4126, 0, 4126, 0, 4126, 4126, 4126, 4126, + 4124, 4124, 4124, 4124, 4124, 4124, 4125, 4125, 4125, 4125, + 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, + 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, + 4125, 4125, 4125, 4125, 4125, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, - 4127, 0, 0, 0, 0, 0, 4127, 0, 4127, 4127, - - 4127, 4127, 4127, 0, 0, 4127, 4127, 0, 0, 0, - 4127, 0, 0, 4127, 4128, 0, 0, 0, 0, 0, - 4128, 0, 4128, 4128, 4128, 4128, 4128, 0, 0, 4128, - 4128, 0, 4128, 0, 4128, 0, 0, 4128, 4129, 0, - 4129, 4129, 4129, 4129, 4129, 0, 0, 0, 4129, 0, - 4129, 0, 4129, 4130, 4130, 0, 4130, 0, 4130, 4130, + 4126, 4126, 4126, 4126, 4127, 4127, 4127, 4127, 4127, 4127, + 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, + 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, + + 4127, 4127, 4127, 4128, 4128, 4128, 4128, 4128, 4128, 4128, + 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, + 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, + 4128, 4128, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, + 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, + 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, + 4129, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, - 4130, 4130, 4131, 0, 4131, 4131, 4131, 4131, 4131, 0, - 0, 0, 4131, 0, 4131, 0, 4131, 4133, 4133, 4133, + 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, - 4133, 4133, 4133, 4133, 4133, 4133, 4133, 0, 4133, 4133, + 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, + 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4132, + 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, + 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, + 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4133, 4133, + 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, - 4133, 4133, 4133, 4133, 4133, 4133, 4134, 4134, 4134, 4134, + 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, - 4134, 4134, 4134, 4134, 4134, 4135, 4135, 4135, 4135, 4135, + + 4134, 4134, 4134, 4134, 4134, 4134, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, - 4135, 4135, 4135, 4135, 4136, 4136, 0, 4136, 0, 4136, - 4136, 0, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, - - 4136, 4136, 4136, 4136, 4136, 4136, 4136, 0, 4136, 4136, - 4136, 4136, 4136, 4137, 4137, 4137, 4137, 4137, 4137, 4137, + 4135, 4135, 4135, 4135, 4135, 4136, 4136, 4136, 4136, 4136, + 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, + 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, + 4136, 4136, 4136, 4136, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, - 4137, 4137, 4138, 4138, 0, 4138, 4138, 4138, 4138, 4138, + 4137, 4137, 4137, 4138, 4138, 4138, 4138, 4138, 4138, 4138, + 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, - 4138, 4139, 4139, 0, 4139, 0, 4139, 4139, 0, 0, - 0, 4139, 4139, 4139, 4139, 4139, 0, 4139, 4139, 4139, + 4138, 4138, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, - + 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, + 4139, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, - 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4141, - 4141, 0, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, - 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4142, 0, - 0, 0, 0, 4142, 4142, 0, 0, 0, 4142, 4142, - 4142, 4142, 4142, 0, 4142, 4142, 4142, 4142, 4142, 4142, - 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4143, 4143, 4143, - 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, + 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, + 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4142, + 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, + 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, + 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4143, 4143, + 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, - 4143, 4143, 4143, 4143, 4143, 4143, 4144, 4144, 4144, 4144, + 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, - 4144, 0, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, - 4144, 4144, 4144, 4144, 4144, 4147, 4147, 4147, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4147, 0, 0, 0, 4147, 0, 0, 0, 4147, - 0, 0, 4147, 4148, 4148, 4148, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4148, 4148, - 4148, 0, 0, 4148, 0, 0, 0, 4148, 4149, 4149, - - 4149, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4149, 0, - 0, 0, 4149, 4150, 4150, 4150, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4150, 0, - 4150, 0, 0, 4150, 0, 0, 0, 4150, 4152, 4152, - 4152, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4152, 0, 0, 0, 4152, 0, - 0, 0, 4152, 0, 0, 4152, 4153, 4153, 4153, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4153, 4153, 0, 0, 0, 4153, 0, 0, 0, - - 4153, 4154, 4154, 4154, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4154, 0, 0, 0, 4154, 4155, 4155, 4155, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4155, 0, 0, 0, - 4155, 4155, 4156, 4156, 4156, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4156, 4156, 0, - 0, 0, 4156, 0, 0, 0, 4156, 4157, 4157, 0, + 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, + 4144, 4144, 4144, 4144, 4144, 4144, 4145, 4145, 4145, 4145, + + 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, + 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, + 4145, 4145, 4145, 4145, 4145, 4146, 4146, 4146, 4146, 4146, + 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, + 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, + 4146, 4146, 4146, 4146, 4147, 4147, 4147, 4147, 4147, 4147, + 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, + 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, + 4147, 4147, 4147, 4148, 4148, 4148, 4148, 4148, 4148, 4148, + 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, + + 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, + 4148, 4148, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, + 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, + 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, + 4149, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, + 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, + 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, + 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, + 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, + 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4152, + + 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, + 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, + 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4153, 4153, + 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, + 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, + 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4154, 4154, 4154, + 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, + 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, + 4154, 4154, 4154, 4154, 4154, 4154, 4155, 4155, 4155, 4155, + 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, + + 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, + 4155, 4155, 4155, 4155, 4155, 4156, 4156, 4156, 4156, 4156, + 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, + 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, + 4156, 4156, 4156, 4156, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, + 4157, 4157, 4157, 4158, 4158, 4158, 4158, 4158, 4158, 4158, + 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, + 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, + + 4158, 4158, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, + 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, + 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, + 4159, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, + 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, + 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, + 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, + 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, + 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4162, + 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, + + 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, + 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4163, 4163, + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4164, 4164, 4164, + 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, + 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, + 4164, 4164, 4164, 4164, 4164, 4164, 4165, 4165, 4165, 4165, + 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, + 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, + + 4165, 4165, 4165, 4165, 4165, 4166, 4166, 4166, 4166, 4166, + 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, + 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, + 4166, 4166, 4166, 4166, 4167, 4167, 4167, 4167, 4167, 4167, + 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, + 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, + 4167, 4167, 4167, 4168, 4168, 4168, 4168, 4168, 4168, 4168, + 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, + 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, + 4168, 4168, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, - 4157, 4157, 4157, 4157, 4157, 4157, 4158, 4158, 4158, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4158, 4158, 0, 0, 0, 4158, 0, 0, 0, - 4158, 4159, 4159, 4159, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4159, 0, 0, - 0, 4159, 0, 0, 0, 4159, 0, 0, 4159, 4160, - 4160, 4160, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4160, 4160, 4160, 0, 0, 4160, - 0, 0, 0, 4160, 4161, 4161, 4161, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 4161, 0, 0, 0, 4161, 4162, - 4162, 4162, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4162, 0, 4162, 0, 0, 4162, - 0, 0, 0, 4162, 4163, 4163, 4163, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4163, 0, 0, 0, 4163, 0, 0, 0, 4163, 0, - 0, 4163, 4164, 4164, 4164, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4164, 4164, 4164, - 0, 0, 4164, 0, 0, 0, 4164, 4165, 4165, 4165, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 4165, 0, 0, - 0, 4165, 4166, 4166, 4166, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4166, 0, 4166, - 0, 0, 4166, 0, 0, 0, 4166, 4168, 4168, 0, - 0, 0, 4168, 4168, 0, 4168, 4168, 4168, 4168, 4168, - 4168, 4168, 0, 4168, 4168, 4168, 4168, 4168, 4168, 4168, - 4168, 4168, 4168, 0, 0, 4168, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, - 4169, 4169, 4169, 4169, 4169, 4170, 4170, 0, 0, 4170, - + 4169, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, - 4170, 4170, 4170, 4170, 4171, 4171, 0, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, - 4171, 4171, 4171, 4172, 4172, 0, 4172, 4172, 4172, 4172, + 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, - 4172, 4172, 4173, 4173, 4173, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4173, 0, - 0, 0, 4173, 0, 0, 0, 4173, 0, 0, 4173, - 4174, 4174, 4174, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4174, 4174, 0, 0, 0, - 4174, 0, 0, 0, 4174, 4175, 4175, 4175, 0, 0, + 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4173, 4173, + 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, + 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, + 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4174, 4174, 4174, + 4174, 4174, 4174, 4174, 4174, 4174, 4174, 4174, 4174, 4174, + 4174, 4174, 4174, 4174, 4174, 4174, 4174, 4174, 4174, 4174, + 4174, 4174, 4174, 4174, 4174, 4174, 4175, 4175, 4175, 4175, + 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, + 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, + 4175, 4175, 4175, 4175, 4175, 4176, 4176, 4176, 4176, 4176, + + 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, + 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, + 4176, 4176, 4176, 4176, 4177, 4177, 4177, 4177, 4177, 4177, + 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, + 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, + 4177, 4177, 4177, 4179, 4179, 4179, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4179, + 4179, 4179, 0, 0, 4179, 4182, 4182, 4182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4175, 0, 0, 0, 4175, - 4177, 4177, 4177, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4177, 0, 0, 0, - 4177, 0, 0, 0, 4177, 0, 0, 4177, 4178, 4178, - 4178, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 4178, 4178, 0, 0, 0, 4178, 0, - 0, 0, 4178, 4179, 4179, 4179, 0, 0, 0, 0, + 0, 0, 4182, 0, 0, 0, 4182, 0, 0, 0, + + 0, 0, 4182, 4183, 4183, 4183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4179, 0, 0, 0, 4179, 4181, 4181, - 0, 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, - 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, - 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4182, 4182, 0, - 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, - 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, - 4182, 4182, 4182, 4182, 4182, 4182, 4183, 4183, 0, 4183, - - 4183, 4183, 4183, 4183, 4183, 4183, 0, 4183, 4183, 4183, - 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, - 4183, 4183, 4183, 4183, 4183, 4184, 4184, 4184, 4184, 4184, - 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, - 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, - 4184, 4184, 4184, 4184, 4185, 4185, 4185, 4185, 4185, 4185, + 0, 0, 0, 0, 4183, 0, 0, 0, 4183, 4184, + 4184, 4184, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4184, 4184, 0, 0, 0, + 4184, 4185, 4185, 0, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, - 4185, 4185, 4185, 4186, 4186, 4186, 4186, 4186, 4186, 4186, - 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, - - 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, - 4186, 4186, 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, - 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, - 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, - 4187, 4188, 0, 0, 4188, 4188, 4188, 4188, 4188, 4188, - 4188, 0, 4188, 4188, 4188, 4188, 0, 4188, 4188, 4188, - 4188, 4188, 4188, 4188, 0, 4188, 4188, 4188, 4188, 4188, - 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, - 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, - 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4191, - - 4191, 0, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, - 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, - 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4192, 4192, + 4187, 4187, 4187, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4187, 4187, 4187, 0, + + 0, 4187, 4189, 4189, 4189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4189, 4189, + 4189, 0, 0, 4189, 4192, 4192, 0, 0, 4192, 0, + 4192, 4192, 0, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 0, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, - 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, - 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4193, 4193, 4193, + 0, 0, 4192, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, - 4193, 4193, 4193, 4193, 4193, 4193, 4194, 4194, 4194, 4194, + 4193, 4193, 4194, 4194, 0, 0, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, - 4194, 4194, 4194, 4194, 4194, 4196, 4196, 4196, 4196, 4196, - 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, - 0, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, - 4196, 4196, 4196, 4196, 4197, 4197, 4197, 4197, 4197, 4197, - 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 0, - 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, - 4197, 4197, 4197, 4198, 0, 0, 0, 0, 0, 0, - 0, 0, 4198, 0, 0, 0, 0, 0, 4198, 0, - 0, 0, 4198, 4198, 0, 4198, 0, 4198, 4199, 4199, - - 4199, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4199, 0, 0, 0, 4199, 0, - 0, 0, 4199, 0, 0, 4199, 4200, 4200, 4200, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4200, 4200, 0, 0, 0, 4200, 0, 0, 0, - 4200, 4201, 4201, 4201, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4201, 0, 0, 0, 4201, 4203, 4203, 0, 4203, + 4194, 4195, 4195, 0, 4195, 4195, 4195, 4195, 4195, 4195, + 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, + 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, + 4196, 4196, 4196, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4196, 4196, 0, 0, + 0, 4196, 4198, 4198, 4198, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4198, 4198, + 0, 0, 0, 4198, 4200, 4200, 0, 4200, 4200, 0, + 4200, 4200, 0, 4200, 4200, 4200, 4200, 4200, 4200, 4200, + + 0, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 0, 4200, + 0, 0, 4200, 4201, 4201, 4201, 4201, 4201, 4201, 4201, + 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4201, + 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4201, + 4201, 4201, 4202, 4202, 0, 4202, 4202, 4202, 4202, 4202, + 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, + 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, + 4202, 4203, 4203, 0, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, - 4203, 4203, 4203, 4203, 4203, 4204, 0, 4204, 4204, 4204, - 4204, 4204, 0, 0, 0, 4204, 0, 4204, 0, 4204, - 4205, 4205, 0, 4205, 4205, 4205, 4205, 4205, 4205, 4205, + 4204, 4204, 0, 4204, 4204, 4204, 4204, 4204, 4204, 4204, + 4204, 0, 4204, 4204, 4204, 4204, 4204, 4204, 4204, 4204, + 4204, 4204, 4204, 4204, 4204, 4204, 4204, 4204, 4204, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, - 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4206, - 0, 4206, 4206, 4206, 4206, 4206, 0, 0, 0, 4206, - 0, 4206, 0, 4206, 4207, 4207, 4207, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4207, 0, 0, 0, 4207, 0, 0, 0, 4207, 0, - 0, 4207, 4208, 4208, 4208, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 4208, 4208, 0, - 0, 0, 4208, 0, 0, 0, 4208, 4209, 4209, 4209, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4209, 0, 0, - 0, 4209, 4214, 4214, 0, 4214, 4214, 4214, 4214, 4214, - 4214, 4214, 4214, 4214, 4214, 4214, 4214, 4214, 4214, 4214, - 4214, 4214, 4214, 4214, 4214, 4214, 4214, 4214, 4214, 4214, - 4214, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, + 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, + 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4206, 4206, + 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, + 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, + 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4207, 4207, 4207, + 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, + + 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, + 4207, 4207, 4207, 4207, 4207, 4207, 4208, 0, 0, 4208, + 4208, 4208, 4208, 4208, 4208, 4208, 4208, 0, 4208, 4208, + 4208, 4208, 0, 4208, 4208, 4208, 4208, 4208, 4208, 4208, + 0, 4208, 4208, 4208, 4208, 4209, 4209, 4209, 4209, 4209, + 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4209, + 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4209, + 4209, 4209, 4209, 4209, 4211, 4211, 0, 4211, 4211, 4211, + 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, + 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, + + 4211, 4211, 4211, 4212, 4212, 4212, 4212, 4212, 4212, 4212, + 4212, 4212, 4212, 4212, 4212, 4212, 4212, 4212, 4212, 4212, + 4212, 4212, 4212, 4212, 4212, 4212, 4212, 4212, 4212, 4212, + 4212, 4212, 4213, 4213, 0, 4213, 4213, 4213, 4213, 4213, + 4213, 4213, 4213, 4213, 4213, 4213, 4213, 4213, 4213, 4213, + 4213, 4213, 4213, 4213, 4213, 4213, 4213, 4213, 4213, 4213, + 4213, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, - - 4217, 4217, 4217, 4217, 4217, 4217, 4217, 4217, 4217, 4217, - 4217, 4217, 4217, 4217, 4217, 4217, 4217, 4217, 4217, 4217, - 4217, 4217, 4217, 4217, 4217, 4217, 4217, 4217, 4217, 4218, - 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4218, - 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4218, - 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4219, 4219, - 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, - 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, - 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4220, 4220, 4220, + 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, + + 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, + 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4217, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4217, + 0, 0, 0, 0, 0, 4217, 0, 0, 0, 4217, + 4217, 0, 4217, 4218, 4218, 4218, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4218, + 4218, 0, 0, 0, 4218, 4220, 4220, 0, 4220, 4220, + 0, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, + 4220, 4220, 4220, 4220, 4221, 0, 4221, 4221, 4221, 4221, - 4220, 4220, 0, 4220, 4220, 4220, 4220, 4220, 4220, 4220, - 4220, 4220, 4220, 4220, 4220, 4220, 4221, 4221, 0, 4221, - 4221, 4221, 4221, 4221, 4221, 4221, 4221, 4221, 4221, 4221, - 4221, 0, 4221, 4221, 4221, 4221, 4221, 4221, 4221, 4221, - 4221, 4221, 4221, 4221, 4221, 4222, 4222, 4222, 4222, 4222, + 4221, 0, 0, 0, 4221, 0, 4221, 4222, 4222, 0, + 4222, 4222, 0, 4222, 4222, 4222, 4222, 4222, 4222, 4222, 4222, 4222, 4222, 4222, 4222, 4222, 4222, 4222, 4222, 4222, - 0, 4222, 4222, 4222, 4222, 4222, 4222, 4222, 4222, 4222, - 4222, 4222, 4222, 4222, 4223, 0, 0, 0, 0, 0, - 0, 0, 0, 4223, 0, 0, 0, 0, 0, 4223, - 0, 0, 0, 0, 4223, 0, 0, 0, 4223, 4224, - - 4224, 0, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, - 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, - 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4225, 0, - 4225, 4225, 4225, 4225, 4225, 0, 0, 0, 4225, 0, - 4225, 0, 4225, 4226, 4226, 4226, 4226, 4226, 4226, 4226, - 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, - 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, - 4226, 4226, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, - 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, - 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, - - 4227, 4228, 4228, 0, 4228, 4228, 4228, 4228, 4228, 4228, - 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, - 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, - 4229, 0, 4229, 4229, 4229, 4229, 4229, 0, 0, 0, - 4229, 0, 4229, 0, 4229, 4230, 4230, 0, 4230, 4230, + 4222, 4222, 4222, 4222, 4222, 4222, 4223, 0, 4223, 4223, + 4223, 4223, 4223, 0, 4223, 0, 4223, 0, 4223, 4224, + 4224, 4224, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4224, 4224, 0, 0, 0, + 4224, 4229, 4229, 0, 4229, 4229, 4229, 4229, 4229, 4229, + 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, + 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, + 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, - 4230, 4230, 4230, 4230, 4231, 0, 4231, 4231, 4231, 4231, - 4231, 0, 0, 0, 4231, 0, 4231, 0, 4231, 4232, - 4232, 4232, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 4232, 4232, 0, 0, 0, 4232, - 0, 0, 0, 4232, 4233, 4233, 4233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4233, - 4233, 0, 0, 0, 4233, 0, 0, 0, 4233, 4234, - 4234, 4234, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4234, 0, 0, 0, 4234, - 0, 0, 0, 4234, 0, 0, 4234, 4235, 4235, 4235, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4235, 4235, 0, 0, 0, 4235, 0, 0, - 0, 4235, 4236, 4236, 4236, 0, 0, 0, 0, 0, + 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4232, + 4232, 4232, 4232, 4232, 4232, 4232, 4232, 4232, 4232, 4232, + 4232, 4232, 4232, 4232, 4232, 4232, 4232, 4232, 4232, 4232, + 4232, 4232, 4232, 4232, 4232, 4232, 4232, 4232, 4233, 4233, + 4233, 4233, 4233, 4233, 4233, 4233, 4233, 4233, 4233, 4233, + 4233, 4233, 4233, 4233, 4233, 4233, 4233, 4233, 4233, 4233, + 4233, 4233, 4233, 4233, 4233, 4233, 4233, 4234, 4234, 4234, + 4234, 4234, 4234, 4234, 4234, 4234, 4234, 4234, 4234, 4234, + + 4234, 4234, 4234, 4234, 4234, 4234, 4234, 4234, 4234, 4234, + 4234, 4234, 4234, 4234, 4234, 4234, 4235, 4235, 0, 4235, + 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, + 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, + 4235, 4235, 4235, 4235, 4235, 4236, 4236, 0, 4236, 4236, + 0, 4236, 4236, 4236, 4236, 4236, 4236, 4236, 4236, 4236, + 4236, 4236, 4236, 4236, 4236, 4236, 4236, 4236, 4236, 4236, + 4236, 4236, 4236, 4236, 4237, 0, 4237, 4237, 4237, 4237, + 4237, 0, 0, 0, 4237, 0, 4237, 4238, 4238, 4238, + 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, + + 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, + 4238, 4238, 4238, 4238, 4238, 4238, 4239, 4239, 4239, 4239, + 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, + 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, + 4239, 4239, 4239, 4239, 4239, 4240, 4240, 0, 4240, 4240, + 0, 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, + 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, + 4240, 4240, 4240, 4240, 4241, 0, 4241, 4241, 4241, 4241, + 4241, 0, 0, 0, 4241, 0, 4241, 4242, 4242, 0, + 4242, 4242, 0, 4242, 4242, 4242, 4242, 4242, 4242, 4242, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4236, 0, 0, 0, 4236, 4238, 4238, 4238, - 0, 0, 4238, 0, 0, 0, 4238, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4238, 0, 0, - 0, 4238, 4241, 0, 0, 4241, 4241, 4241, 4241, 4241, - 4241, 4241, 4241, 4241, 4241, 4241, 4241, 0, 4241, 4241, - 4241, 4241, 4241, 4241, 4241, 0, 4241, 4241, 4241, 4241, - 4241, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, - 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, - - 4243, 0, 0, 4243, 0, 0, 0, 0, 0, 0, - 0, 4243, 4243, 0, 0, 0, 4243, 0, 0, 0, - 4243, 0, 0, 4243, 4247, 0, 4247, 4247, 4247, 4247, - 4247, 0, 0, 0, 4247, 0, 4247, 0, 4247, 4248, - 0, 4248, 4248, 4248, 4248, 4248, 0, 0, 0, 4248, - 0, 4248, 0, 4248, 4249, 0, 4249, 4249, 4249, 4249, - 4249, 0, 0, 4249, 4249, 0, 4249, 0, 4249, 4251, - 0, 4251, 4251, 4251, 4251, 4251, 0, 0, 4251, 4251, - 0, 4251, 0, 4251, 4252, 0, 4252, 4252, 4252, 4252, - 4252, 0, 0, 0, 4252, 0, 4252, 0, 4252, 0, - - 0, 4252, 4253, 0, 0, 0, 0, 4253, 0, 0, - 4253, 4253, 0, 4253, 0, 0, 0, 0, 4253, 4253, - 4253, 0, 4253, 0, 0, 0, 4253, 4254, 0, 0, - 4254, 0, 0, 4254, 0, 4254, 4254, 4254, 4254, 4254, - 0, 0, 0, 4254, 0, 4254, 0, 4254, 0, 0, - 4254, 4255, 0, 0, 4255, 0, 0, 4255, 0, 4255, - 4255, 4255, 4255, 4255, 0, 0, 4255, 4255, 0, 4255, - 0, 4255, 0, 0, 4255, 4256, 4256, 0, 4256, 4256, - 4256, 4256, 4256, 4256, 4256, 4256, 4256, 4256, 4256, 4256, - 4256, 4256, 4256, 4256, 4256, 4256, 4256, 4256, 4256, 4256, - - 4256, 4256, 4256, 4256, 4257, 4257, 0, 4257, 4257, 0, - 0, 0, 4257, 0, 0, 0, 4257, 4258, 4258, 4258, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4258, 0, 0, 0, 4258, 0, 0, - 0, 4258, 0, 0, 4258, 4259, 4259, 4259, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4259, 4259, 0, 0, 0, 4259, 0, 0, 0, 4259, - 4260, 4260, 4260, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4260, 0, 0, 0, 4260, 4262, 0, 0, 0, 4262, - - 4262, 4262, 4262, 4262, 4262, 4262, 4262, 4262, 4262, 4262, - 4262, 4262, 4262, 4262, 4262, 4262, 4262, 4262, 4262, 4262, - 4262, 4262, 4262, 4262, 4263, 4263, 4263, 4263, 4263, 4263, - 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, - 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, - 4263, 4263, 4263, 4264, 0, 0, 0, 4264, 4264, 4264, - 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, - 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, - 4264, 4264, 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, - 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, - - 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, - 4265, 4266, 0, 0, 0, 4266, 4266, 4266, 4266, 4266, + 4242, 4242, 4242, 4242, 4242, 4242, 4243, 0, 4243, 4243, + 4243, 4243, 4243, 0, 0, 0, 4243, 0, 4243, 4244, + 4244, 4244, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4244, 4244, 0, 0, 0, + 4244, 4245, 4245, 4245, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4245, 4245, 0, + 0, 0, 4245, 4247, 4247, 4247, 0, 0, 0, 4247, + 0, 0, 0, 4247, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4247, 4249, 0, 0, 4249, 4249, + + 4249, 4249, 4249, 4249, 4249, 4249, 4249, 4249, 4249, 4249, + 4249, 0, 4249, 4249, 4249, 4249, 4249, 4249, 4249, 0, + 4249, 4249, 4249, 4249, 4250, 4250, 4250, 4250, 4250, 4250, + 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, + 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, + 4250, 4250, 4250, 4254, 0, 4254, 4254, 4254, 4254, 4254, + 0, 0, 0, 4254, 0, 4254, 4255, 0, 4255, 4255, + 4255, 4255, 4255, 0, 0, 4255, 4255, 0, 4255, 4256, + 0, 4256, 4256, 4256, 4256, 4256, 0, 0, 4256, 4256, + 0, 4256, 4257, 0, 0, 4257, 0, 0, 4257, 0, + + 4257, 4257, 4257, 4257, 4257, 0, 0, 4257, 4257, 0, + 4257, 0, 0, 0, 4257, 4258, 4258, 0, 4258, 4258, + 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, + 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, + 4258, 4258, 4258, 4258, 4259, 4259, 0, 4259, 4259, 0, + 0, 0, 4259, 4260, 4260, 4260, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4260, + 4260, 0, 0, 0, 4260, 4262, 0, 0, 4262, 0, + 4262, 4262, 4262, 0, 0, 4262, 0, 4262, 4262, 4262, + 4262, 4262, 0, 4262, 4262, 0, 4262, 0, 0, 4262, + + 4263, 0, 0, 4263, 0, 4263, 4263, 4263, 0, 0, + 4263, 0, 4263, 4263, 4263, 4263, 4263, 0, 4263, 4263, + 0, 4263, 0, 0, 4263, 4264, 0, 0, 4264, 0, + 4264, 4264, 4264, 0, 0, 4264, 0, 4264, 4264, 4264, + 4264, 4264, 0, 4264, 4264, 0, 4264, 0, 0, 4264, + 4265, 4265, 0, 4265, 4265, 4265, 4265, 4265, 4265, 4265, + 4265, 4265, 4265, 4265, 4265, 4265, 0, 4265, 4265, 0, + 4265, 4265, 4265, 4265, 0, 4265, 4265, 4265, 4265, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, - 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, - 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, - 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4268, - 4268, 0, 4268, 4268, 4268, 4268, 4268, 4268, 4268, 4268, - 4268, 4268, 4268, 4268, 0, 4268, 4268, 0, 4268, 4268, - 4268, 4268, 0, 4268, 4268, 4268, 4268, 4268, 4269, 4269, + 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4267, 0, + 0, 4267, 4267, 0, 4267, 0, 4267, 4267, 4267, 4267, + 4267, 0, 0, 0, 4267, 0, 0, 0, 0, 0, + 4267, 4268, 4268, 0, 0, 0, 0, 4268, 0, 4268, + 4268, 0, 0, 0, 4268, 4269, 4269, 0, 4269, 4269, + 0, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, - 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, - 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4270, 0, 0, - 4270, 4270, 0, 4270, 0, 4270, 4270, 4270, 4270, 4270, - 0, 0, 0, 4270, 0, 0, 0, 4270, 0, 0, - 4270, 4271, 4271, 0, 0, 0, 0, 4271, 0, 4271, - 4271, 0, 0, 0, 4271, 0, 0, 0, 4271, 4272, - 4272, 0, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, - 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, - 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4273, 0, - - 4273, 4273, 4273, 4273, 4273, 0, 0, 0, 4273, 0, - 4273, 0, 4273, 4274, 4274, 0, 4274, 4274, 4274, 4274, - 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4274, - 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4274, - 4274, 4274, 4275, 0, 4275, 4275, 4275, 4275, 4275, 0, - 0, 0, 4275, 0, 4275, 0, 4275, 4276, 0, 4276, - 4276, 4276, 4276, 0, 0, 0, 0, 4276, 0, 0, - 0, 4276, 4277, 0, 0, 0, 0, 0, 4277, 0, - 4277, 4277, 4277, 4277, 4277, 0, 0, 4277, 4277, 0, - 0, 0, 4277, 0, 0, 4277, 4278, 4278, 4278, 4278, - + 4269, 4269, 4269, 4269, 4270, 0, 4270, 4270, 4270, 4270, + 4270, 0, 0, 0, 4270, 0, 4270, 4271, 4271, 0, + 4271, 4271, 0, 4271, 4271, 4271, 4271, 4271, 4271, 4271, + + 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, + 4271, 4271, 4271, 4271, 4271, 4271, 4272, 0, 4272, 4272, + 4272, 4272, 4272, 0, 0, 0, 4272, 0, 4272, 4273, + 0, 4273, 4273, 4273, 4273, 0, 0, 0, 0, 4273, + 4274, 0, 0, 0, 0, 0, 4274, 0, 4274, 4274, + 4274, 4274, 4274, 0, 0, 4274, 4274, 0, 0, 0, + 0, 0, 4274, 4275, 4275, 4275, 4275, 4275, 4275, 4275, + 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, + 4275, 4275, 0, 4275, 4275, 4275, 4275, 4275, 4275, 4275, + 4275, 4275, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, + + 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, + 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, + 4276, 4278, 0, 0, 0, 4278, 4278, 4278, 4278, 4278, + 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, - 4278, 4278, 4278, 4278, 0, 4278, 4278, 4278, 4278, 4278, - 4278, 4278, 4278, 4278, 4278, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, - 4279, 4279, 4279, 4279, 4281, 0, 0, 0, 4281, 4281, + 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4280, + 0, 0, 0, 4280, 4280, 4280, 4280, 4280, 4280, 4280, + 4280, 4280, 4280, 4280, 4280, 4280, 4280, 4280, 4280, 4280, + + 4280, 4280, 4280, 4280, 4280, 4280, 4280, 4280, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, - 4281, 4281, 4281, 4282, 4282, 4282, 4282, 4282, 4282, 4282, + 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4282, 0, 0, + 0, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, - - 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, 4282, - 4282, 4282, 4283, 0, 0, 0, 4283, 4283, 4283, 4283, + 4282, 4282, 4282, 4282, 4282, 4282, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, - 4283, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, + 4283, 4283, 4283, 4283, 4283, 4284, 0, 0, 0, 4284, + 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, - 4285, 0, 0, 0, 4285, 4285, 4285, 4285, 4285, 4285, + 4284, 4284, 4284, 4284, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, - 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4286, - + 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, + 4285, 4285, 4285, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, - 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4287, 0, - 0, 0, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, + 4286, 4286, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, - 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4288, 4288, 4288, - 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, - 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, - 4288, 4288, 4288, 4288, 4288, 4288, 4289, 4289, 4289, 4289, - 4289, 4289, 4289, 4289, 4289, 4289, 4289, 4289, 4289, 4289, - - 4289, 4289, 4289, 4289, 4289, 4289, 4289, 4289, 4289, 4289, - 4289, 4289, 4289, 4289, 4289, 4290, 4290, 4290, 4290, 4290, - 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, + + 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, + 4287, 4288, 4288, 4288, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4288, 4288, 0, + 0, 0, 4288, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, - 4290, 4290, 4290, 4290, 4291, 4291, 4291, 4291, 4291, 4291, + 4290, 4290, 4290, 4290, 4290, 4290, 4290, 0, 4290, 4290, + 4290, 4290, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, 4291, - 4291, 4291, 4291, 4292, 4292, 4292, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4292, - 0, 0, 0, 4292, 0, 0, 0, 4292, 0, 0, + 4291, 4292, 4292, 0, 4292, 4292, 0, 4292, 4292, 4292, + + 4292, 4292, 4292, 4292, 4292, 4292, 4292, 4292, 4292, 4292, + 4292, 4292, 4292, 4292, 4292, 4292, 4292, 4292, 4292, 4292, + 4293, 0, 4293, 4293, 4293, 4293, 4293, 0, 0, 0, + 4293, 0, 4293, 4294, 4294, 0, 4294, 4294, 4294, 4294, + 4294, 4294, 4294, 4294, 4294, 4294, 4294, 4294, 4294, 4294, + 4294, 4294, 4294, 4294, 4294, 4294, 4294, 4294, 4294, 4294, + 4294, 4294, 4295, 4295, 4295, 4295, 4295, 4295, 4295, 4295, + 4295, 4295, 4295, 4295, 4295, 4295, 4295, 4295, 4295, 4295, + 4295, 4295, 4295, 4295, 4295, 4295, 4295, 4295, 4295, 4295, + 4295, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, - 4292, 4293, 4293, 4293, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4293, 4293, 0, 0, - 0, 4293, 0, 0, 0, 4293, 4294, 4294, 4294, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4294, 0, 0, 0, - 4294, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, - 4296, 4296, 4296, 4296, 0, 4296, 4296, 4296, 4296, 4296, + 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4296, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, - - 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4298, - 4298, 0, 4298, 4298, 4298, 4298, 4298, 4298, 4298, 4298, - 4298, 4298, 4298, 4298, 4298, 4298, 4298, 4298, 4298, 4298, - 4298, 4298, 4298, 4298, 4298, 4298, 4298, 4298, 4299, 0, - 4299, 4299, 4299, 4299, 4299, 0, 0, 0, 4299, 0, - 4299, 0, 4299, 4300, 4300, 0, 4300, 4300, 4300, 4300, + 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4299, + 4299, 4299, 4299, 4299, 4299, 4299, 4299, 4299, 4299, 4299, + 4299, 4299, 4299, 4299, 4299, 4299, 4299, 4299, 4299, 4299, + 4299, 4299, 4299, 4299, 4299, 4299, 4299, 4299, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4300, - 4300, 4300, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, - 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, - 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, - 4301, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, + 4300, 4300, 4300, 4300, 4300, 4300, 4300, 4302, 4302, 0, + 4302, 4302, 0, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, - 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, - 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, - 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, - 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4305, - 4305, 4305, 4305, 4305, 4305, 4305, 4305, 4305, 4305, 4305, - 4305, 4305, 4305, 4305, 4305, 4305, 4305, 4305, 4305, 4305, - 4305, 4305, 4305, 4305, 4305, 4305, 4305, 4305, 4306, 4306, - + 4302, 4302, 4302, 4302, 4302, 4302, 4303, 0, 0, 0, + 0, 0, 4303, 0, 4303, 4303, 4303, 4303, 4303, 0, + 0, 4303, 4303, 0, 0, 0, 0, 0, 4303, 4304, + 0, 0, 0, 0, 0, 4304, 0, 4304, 4304, 4304, + 4304, 4304, 0, 0, 4304, 4304, 0, 4304, 0, 0, + 0, 4304, 4305, 0, 4305, 4305, 4305, 4305, 4305, 0, + 0, 0, 4305, 0, 4305, 4306, 4306, 0, 4306, 4306, + + 0, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, - 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, - 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4307, 4307, 0, - 4307, 0, 0, 0, 0, 4307, 0, 0, 0, 4307, - 4308, 4308, 0, 4308, 4308, 4308, 4308, 4308, 4308, 4308, - 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, - 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4309, - 0, 0, 0, 0, 0, 4309, 0, 4309, 4309, 4309, - 4309, 4309, 0, 0, 4309, 4309, 0, 0, 0, 4309, - 0, 0, 4309, 4310, 0, 0, 0, 0, 0, 4310, - - 0, 4310, 4310, 4310, 4310, 4310, 0, 0, 4310, 4310, - 0, 4310, 0, 4310, 0, 0, 4310, 4311, 0, 4311, - 4311, 4311, 4311, 4311, 0, 0, 0, 4311, 0, 4311, - 0, 4311, 4312, 4312, 0, 4312, 4312, 4312, 4312, 4312, - 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, - 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, - 4312, 4313, 0, 4313, 4313, 4313, 4313, 4313, 0, 0, - 0, 4313, 0, 4313, 0, 4313, 4315, 4315, 4315, 4315, - 4315, 4315, 4315, 4315, 4315, 4315, 0, 4315, 4315, 4315, + 4306, 4306, 4306, 4306, 4307, 0, 4307, 4307, 4307, 4307, + 4307, 0, 0, 0, 4307, 0, 4307, 4309, 4309, 4309, + 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, 0, 4309, + 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, + 4309, 4309, 4309, 4309, 4309, 4309, 4310, 4310, 4310, 4310, + 4310, 4310, 4310, 4310, 4310, 4310, 4310, 4310, 4310, 4310, + 4310, 4310, 4310, 4310, 4310, 4310, 4310, 4310, 4310, 4310, + 4310, 4310, 4310, 4310, 4310, 4311, 4311, 4311, 4311, 4311, + + 4311, 4311, 4311, 4311, 4311, 4311, 4311, 4311, 4311, 4311, + 4311, 4311, 4311, 4311, 4311, 4311, 4311, 4311, 4311, 4311, + 4311, 4311, 4311, 4311, 4312, 4312, 0, 4312, 4312, 0, + 4312, 4312, 0, 4312, 4312, 4312, 4312, 4312, 4312, 4312, + 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 0, 4312, + 4312, 4312, 4312, 4313, 4313, 4313, 4313, 4313, 4313, 4313, + 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, + 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, + 4313, 4313, 4314, 4314, 0, 4314, 4314, 4314, 4314, 4314, + 4314, 4314, 4314, 4314, 4314, 4314, 4314, 4314, 4314, 4314, + + 4314, 4314, 4314, 4314, 4314, 4314, 4314, 4314, 4314, 4314, + 4314, 4315, 4315, 0, 4315, 4315, 0, 4315, 4315, 0, + 0, 0, 4315, 4315, 4315, 4315, 4315, 0, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, - - 4315, 4315, 4315, 4315, 4315, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, - 4316, 4316, 4316, 4316, 4317, 4317, 0, 4317, 0, 4317, + 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4317, 4317, 0, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, - 4317, 4317, 4317, 4317, 4317, 4317, 4317, 0, 4317, 4317, - 4317, 4317, 4317, 4318, 4318, 4318, 4318, 4318, 4318, 4318, - 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, - 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, - 4318, 4318, 4319, 4319, 0, 4319, 0, 4319, 4319, 0, + 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, + 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4318, 4318, - 0, 0, 4319, 4319, 4319, 4319, 4319, 0, 4319, 4319, + 0, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 0, + 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, + 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, - 4319, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, + 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, + 4319, 4319, 4319, 4319, 4319, 4319, 4320, 4320, 0, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, - 4321, 4321, 0, 4321, 4321, 4321, 4321, 4321, 4321, 4321, + 4320, 4320, 4320, 4320, 4320, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, - 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4322, - 0, 0, 0, 0, 4322, 4322, 0, 0, 0, 4322, - 4322, 4322, 4322, 4322, 0, 4322, 4322, 4322, 4322, 4322, - 4322, 4322, 4322, 4322, 4322, 4322, 4322, 4322, 4323, 4323, + 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, + 4321, 4321, 4321, 4321, 4322, 0, 0, 0, 4322, 0, + 4322, 4322, 0, 0, 0, 4322, 4322, 4322, 4322, 4322, + 0, 4322, 4322, 4322, 4322, 4322, 4322, 4322, 4322, 4322, + 4322, 4322, 4322, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, - 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4325, 4325, 4325, + 4323, 4323, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, + 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 0, 4324, + 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, + + 4324, 4326, 4326, 0, 4326, 4326, 4326, 4326, 4326, 4326, + 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, + 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, + 4327, 4327, 0, 4327, 4327, 4327, 4327, 4327, 4327, 4327, + 4327, 4327, 4327, 4327, 4327, 4327, 4327, 4327, 4327, 4327, + 4327, 4327, 4327, 4327, 4327, 4327, 4327, 4327, 4327, 4328, + 4328, 0, 4328, 4328, 0, 4328, 4328, 0, 0, 0, + 4328, 4328, 4328, 4328, 4328, 4328, 4328, 4328, 4328, 4328, + 4328, 4328, 4328, 4328, 4328, 4328, 4328, 4328, 4329, 4329, + 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, + + 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, + 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4330, 4330, 0, + 4330, 4330, 4330, 4330, 4330, 4330, 4330, 4330, 4330, 4330, + 4330, 4330, 4330, 4330, 4330, 4330, 4330, 4330, 4330, 4330, + 4330, 4330, 4330, 4330, 4330, 4330, 4331, 4331, 0, 4331, + 4331, 0, 4331, 4331, 0, 4331, 4331, 4331, 4331, 4331, + 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, + 4331, 4331, 0, 0, 4331, 4332, 4332, 4332, 4332, 4332, + 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, + 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, + + 4332, 4332, 4332, 4332, 4333, 4333, 0, 4333, 4333, 4333, + 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, + 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, + 4333, 4333, 4333, 4335, 4335, 4335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4325, 0, 0, 0, 4325, 0, 0, - 0, 4325, 0, 0, 4325, 4326, 4326, 4326, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4326, 4326, 4326, 0, 0, 4326, 0, 0, 0, 4326, - 4327, 4327, 4327, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4327, 0, 0, 0, 4327, 4328, 4328, 4328, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4328, 0, 4328, 0, 0, 4328, 0, 0, 0, 4328, - 4329, 4329, 4329, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4329, 0, 0, 0, - 4329, 0, 0, 0, 4329, 0, 0, 4329, 4330, 4330, - 4330, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4330, 4330, 0, 0, 0, 4330, 0, - 0, 0, 4330, 4331, 4331, 4331, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4331, 0, 0, 0, 4331, 4333, 4333, - 4333, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4333, 0, - 0, 0, 4333, 4334, 4334, 4334, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4334, 4334, - 0, 0, 0, 4334, 0, 0, 0, 4334, 4335, 4335, - 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 0, 4335, - 4335, 4335, 4335, 0, 4335, 4335, 4335, 4335, 4335, 4335, - 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4336, 4336, 4336, - - 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, - 4336, 4336, 0, 4336, 4336, 4336, 4336, 4336, 4336, 4336, - 4336, 4336, 4336, 4336, 4336, 4336, 4337, 4337, 4337, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4337, 0, 0, 0, 4337, 0, 0, 0, - 4337, 0, 0, 4337, 4338, 4338, 4338, 0, 0, 0, + 4335, 0, 0, 0, 4335, 0, 0, 0, 0, 0, + 4335, 4336, 4336, 4336, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4336, 4336, 4336, + 0, 0, 4336, 4338, 4338, 4338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4338, - 4338, 4338, 0, 0, 4338, 0, 0, 0, 4338, 4339, - 4339, 4339, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4339, - - 0, 0, 0, 4339, 4340, 4340, 4340, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4340, - 0, 4340, 0, 0, 4340, 0, 0, 0, 4340, 4341, - 4341, 4341, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4341, 0, 0, 0, 4341, - 0, 0, 0, 4341, 0, 0, 4341, 4342, 4342, 4342, + + 0, 4338, 0, 0, 4338, 4340, 4340, 4340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4342, 4342, 4342, 0, 0, 4342, 0, 0, - 0, 4342, 4343, 4343, 4343, 0, 0, 0, 0, 0, + 0, 0, 4340, 0, 0, 0, 4340, 0, 0, 0, + 0, 0, 4340, 4341, 4341, 4341, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4341, + 4341, 0, 0, 0, 4341, 4343, 4343, 4343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4343, 0, 0, 0, + 4343, 4344, 4344, 4344, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4344, 4344, 0, - 0, 0, 4343, 0, 0, 0, 4343, 4344, 4344, 4344, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4344, 0, 4344, 0, 0, 4344, 0, 0, - 0, 4344, 4345, 4345, 0, 4345, 4345, 4345, 4345, 4345, + 0, 0, 4344, 4345, 4345, 0, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, - 4345, 4346, 4346, 4346, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4346, 0, 0, - 0, 4346, 0, 0, 0, 4346, 0, 0, 4346, 4347, - 4347, 4347, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 4347, 4347, 0, 0, 0, 4347, - 0, 0, 0, 4347, 4348, 4348, 4348, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4348, 0, 0, 0, 4348, 4350, - 4350, 4350, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4350, 0, 0, 0, 4350, - 0, 0, 0, 4350, 0, 0, 4350, 4351, 4351, 4351, + 4345, 4345, 4346, 4346, 4346, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4346, 4346, + 0, 0, 0, 4346, 4347, 4347, 4347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4351, 4351, 0, 0, 0, 4351, 0, 0, - 0, 4351, 4352, 4352, 4352, 0, 0, 0, 0, 0, + 0, 4347, 0, 0, 0, 4347, 0, 0, 0, 0, + 0, 4347, 4348, 4348, 4348, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4348, 4348, + 4348, 0, 0, 4348, 4350, 4350, 4350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4352, 0, 0, 0, 4352, 4354, 4354, 0, - 4354, 4354, 4354, 4354, 4354, 4354, 4354, 4354, 4354, 4354, - 4354, 4354, 4354, 4354, 4354, 4354, 4354, 4354, 4354, 4354, - 4354, 4354, 4354, 4354, 4354, 4354, 4355, 0, 0, 4355, - 4355, 4355, 4355, 4355, 4355, 4355, 0, 4355, 4355, 4355, - 4355, 0, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 0, - 4355, 4355, 4355, 4355, 4355, 4356, 4356, 4356, 4356, 4356, - 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, - 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, - - 4356, 4356, 4356, 4356, 4357, 4357, 0, 4357, 4357, 4357, - 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, - 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, - 4357, 4357, 4357, 4358, 4358, 4358, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4358, - 0, 0, 0, 4358, 0, 0, 0, 4358, 0, 0, - 4358, 4359, 4359, 4359, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4359, 4359, 0, 0, - 0, 4359, 0, 0, 0, 4359, 4360, 4360, 4360, 0, + 4350, 0, 4350, 0, 0, 4350, 4351, 4351, 4351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 4360, 0, 0, 0, - 4360, 4362, 4362, 4362, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4362, 0, 0, - 0, 4362, 0, 0, 0, 4362, 0, 0, 4362, 4363, - 4363, 4363, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4363, 4363, 0, 0, 0, 4363, - 0, 0, 0, 4363, 4364, 4364, 4364, 0, 0, 0, + 0, 0, 0, 4351, 0, 0, 0, 4351, 0, 0, + 0, 0, 0, 4351, 4352, 4352, 4352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4364, 0, 0, 0, 4364, 4366, - 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, - - 4366, 4366, 4366, 4366, 0, 4366, 4366, 4366, 4366, 4366, - 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4367, 4367, - 0, 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, - 4367, 4367, 4367, 0, 4367, 4367, 4367, 4367, 4367, 4367, - 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4368, 4368, 4368, + 4352, 4352, 4352, 0, 0, 4352, 4354, 4354, 4354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4368, 0, 0, 0, 4368, 0, 0, - 0, 4368, 4369, 4369, 4369, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4369, 4369, 0, - 0, 0, 4369, 0, 0, 0, 4369, 4370, 4370, 4370, + 0, 0, 4354, 0, 4354, 0, 0, 4354, 4356, 4356, + 0, 0, 4356, 0, 4356, 4356, 0, 4356, 4356, 4356, + 4356, 4356, 4356, 4356, 0, 4356, 4356, 4356, 4356, 4356, + 4356, 4356, 4356, 4356, 0, 0, 4356, 4357, 4357, 4357, + 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, + 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, + 4357, 4357, 4357, 4357, 4357, 4357, 4358, 4358, 0, 0, + 4358, 4358, 4358, 4358, 4358, 4358, 4358, 4358, 4358, 4358, + 4358, 4358, 4358, 4358, 4358, 4358, 4358, 4358, 4358, 4358, + 4358, 4358, 4358, 4358, 4358, 4359, 4359, 0, 4359, 4359, + 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, + + 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, + 4359, 4359, 4359, 4359, 4360, 4360, 0, 4360, 4360, 4360, + 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, + 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, + 4360, 4360, 4360, 4361, 4361, 4361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4370, 0, 0, 0, 4370, 0, 0, - 0, 4370, 0, 0, 4370, 4371, 4371, 4371, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4371, 4371, 0, 0, 0, 4371, 0, 0, 0, 4371, - 4372, 4372, 4372, 0, 0, 0, 0, 0, 0, 0, + 4361, 0, 0, 0, 4361, 0, 0, 0, 0, 0, + 4361, 4362, 4362, 4362, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4362, 4362, 0, + 0, 0, 4362, 4365, 4365, 4365, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4372, 0, 0, 0, 4372, 4375, 0, 0, 4375, 4375, + 4365, 0, 0, 0, 4365, 0, 0, 0, 0, 0, + 4365, 4366, 4366, 4366, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4366, 4366, 0, + 0, 0, 4366, 4369, 4369, 0, 4369, 4369, 0, 4369, + 4369, 0, 4369, 4369, 4369, 4369, 4369, 4369, 4369, 0, + 4369, 4369, 4369, 4369, 4369, 4369, 4369, 0, 4369, 0, + 0, 4369, 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4370, + 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4370, + 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4370, + + 4370, 4371, 4371, 0, 4371, 4371, 4371, 4371, 4371, 4371, + 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, + 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, + 4372, 4372, 0, 4372, 4372, 4372, 4372, 4372, 4372, 4372, + 4372, 0, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, + 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4373, + 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, + 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, + 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4374, 4374, + 4374, 4374, 4374, 4374, 4374, 4374, 4374, 4374, 4374, 4374, + + 4374, 4374, 4374, 4374, 4374, 4374, 4374, 4374, 4374, 4374, + 4374, 4374, 4374, 4374, 4374, 4374, 4374, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, - 0, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 0, 4375, - - 4375, 4375, 4375, 4375, 4376, 0, 0, 4376, 0, 0, - 0, 0, 0, 0, 0, 4376, 4376, 0, 0, 0, - 4376, 0, 0, 0, 4376, 0, 0, 4376, 4378, 0, - 4378, 4378, 4378, 4378, 4378, 0, 0, 0, 4378, 0, - 4378, 0, 4378, 4379, 0, 4379, 4379, 4379, 4379, 4379, - 0, 0, 4379, 4379, 0, 4379, 0, 4379, 4381, 0, - 0, 4381, 0, 0, 4381, 0, 4381, 4381, 4381, 4381, - 4381, 0, 0, 0, 4381, 0, 4381, 0, 4381, 0, - 0, 4381, 4382, 4382, 0, 4382, 4382, 4382, 4382, 4382, - 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, + 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, + 4375, 4375, 4375, 4375, 4375, 4375, 4376, 4376, 4376, 4376, + 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, + 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, + 4376, 4376, 4376, 4376, 4376, 4377, 0, 0, 4377, 4377, + 4377, 4377, 4377, 4377, 4377, 4377, 0, 4377, 4377, 4377, + 4377, 0, 4377, 4377, 4377, 4377, 4377, 4377, 4377, 0, + + 4377, 4377, 4377, 4377, 4378, 4378, 4378, 4378, 4378, 4378, + 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, + 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, + 4378, 4378, 4378, 4380, 4380, 0, 4380, 4380, 4380, 4380, + 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, + 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, + 4380, 4380, 4381, 4381, 0, 4381, 4381, 4381, 4381, 4381, + 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, + 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, + 4381, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, - 4382, 4383, 4383, 0, 4383, 4383, 4383, 4383, 4383, 4383, + 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, - 4384, 4384, 0, 4384, 4384, 4384, 4384, 4384, 4384, 4384, - 4384, 4384, 4384, 4384, 4384, 4384, 4384, 4384, 4384, 4384, - 4384, 4384, 4384, 4384, 4384, 4384, 4384, 4384, 4384, 4385, - 0, 0, 0, 0, 4385, 0, 0, 4385, 4385, 0, - 4385, 0, 0, 0, 0, 4385, 4385, 4385, 0, 4385, - 0, 0, 0, 4385, 4386, 0, 4386, 4386, 4386, 4386, - - 4386, 0, 0, 0, 4386, 0, 4386, 0, 4386, 0, - 0, 4386, 4387, 0, 4387, 4387, 4387, 4387, 4387, 0, - 0, 0, 4387, 0, 4387, 0, 4387, 4388, 0, 0, - 4388, 0, 0, 4388, 0, 4388, 4388, 4388, 4388, 4388, - 0, 0, 4388, 4388, 0, 4388, 0, 4388, 0, 0, - 4388, 4389, 4389, 4389, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4389, 0, 0, - 0, 4389, 0, 0, 0, 4389, 0, 0, 4389, 4390, - 4390, 4390, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4390, 4390, 0, 0, 0, 4390, - - 0, 0, 0, 4390, 4391, 4391, 4391, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4391, 0, 0, 0, 4391, 4393, - 4393, 0, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, - 4393, 4393, 4393, 4393, 0, 4393, 4393, 0, 4393, 4393, - 4393, 4393, 0, 4393, 4393, 4393, 4393, 4393, 4394, 4394, - 4394, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4394, 0, 0, 0, 4394, 0, - 0, 0, 4394, 0, 0, 4394, 4395, 4395, 4395, 0, + 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4385, + 4385, 4385, 4385, 4385, 4385, 4385, 4385, 4385, 4385, 4385, + 4385, 4385, 4385, 4385, 4385, 0, 4385, 4385, 4385, 4385, + 4385, 4385, 4385, 4385, 4385, 4385, 4385, 4385, 4386, 4386, + 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, + 4386, 4386, 4386, 4386, 0, 4386, 4386, 4386, 4386, 4386, + + 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4387, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4387, 0, 0, + 0, 0, 0, 4387, 0, 0, 0, 4387, 4387, 0, + 4387, 4388, 4388, 4388, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4388, 0, + 0, 0, 4388, 0, 0, 0, 0, 0, 4388, 4389, + 4389, 4389, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4389, 4389, 0, 0, 0, + 4389, 4392, 4392, 0, 4392, 4392, 4392, 4392, 4392, 4392, + 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, + + 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, + 4393, 0, 4393, 4393, 4393, 4393, 4393, 0, 0, 0, + 4393, 0, 4393, 4394, 4394, 0, 4394, 4394, 4394, 4394, + 4394, 4394, 4394, 4394, 4394, 4394, 4394, 4394, 4394, 4394, + 4394, 4394, 4394, 4394, 4394, 4394, 4394, 4394, 4394, 4394, + 4394, 4394, 4395, 0, 4395, 4395, 4395, 4395, 4395, 0, + 4395, 0, 4395, 0, 4395, 4396, 4396, 4396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4396, 0, 0, 0, 4396, 0, 0, 0, + 0, 0, 4396, 4397, 4397, 4397, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4397, + 4397, 0, 0, 0, 4397, 4403, 4403, 0, 4403, 4403, + 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, + 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, + 4403, 4403, 4403, 4403, 4404, 4404, 4404, 4404, 4404, 4404, + 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, + 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, + 4404, 4404, 4404, 4406, 4406, 4406, 4406, 4406, 4406, 4406, + 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, + 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, - 0, 4395, 4395, 0, 0, 0, 4395, 0, 0, 0, - 4395, 4396, 4396, 4396, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4396, 0, 0, 0, 4396, 4398, 4398, 4398, 4398, - 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, - 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 0, - 4398, 4398, 4398, 4398, 4398, 4399, 4399, 0, 4399, 0, - 0, 0, 0, 4399, 0, 0, 0, 4399, 4400, 4400, - 4400, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4400, 0, 0, 0, 4400, 0, - - 0, 0, 4400, 0, 0, 4400, 4402, 4402, 4402, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4402, 0, 0, 0, - 4402, 4403, 4403, 4403, 0, 0, 0, 0, 0, 0, - 4403, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4403, 0, 0, 0, 4403, 4404, 4404, 4404, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4404, 4404, 4404, 0, 0, 4404, 0, 0, 0, - 4404, 4405, 4405, 0, 4405, 4405, 4405, 4405, 4405, 4405, - 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, - - 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, - 4406, 0, 0, 4406, 4406, 4406, 4406, 4406, 4406, 4406, - 0, 4406, 4406, 4406, 4406, 0, 4406, 4406, 4406, 4406, - 4406, 4406, 4406, 0, 4406, 4406, 4406, 4406, 4406, 4407, - 4407, 0, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, + 4406, 4406, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, + 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, - 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4408, 4408, - 4408, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4408, 0, 0, 0, 4408, 0, - 0, 0, 4408, 4409, 4409, 4409, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 4409, 4409, - 0, 0, 0, 4409, 0, 0, 0, 4409, 4410, 0, - 0, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, - 4410, 4410, 4410, 0, 4410, 4410, 4410, 4410, 4410, 4410, - 4410, 0, 4410, 4410, 4410, 4410, 4410, 4412, 0, 0, - 4412, 0, 0, 4412, 0, 4412, 4412, 4412, 4412, 4412, - 0, 0, 0, 4412, 0, 4412, 0, 4412, 0, 0, - 4412, 4413, 4413, 0, 4413, 4413, 4413, 4413, 4413, 4413, + 4407, 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, + 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, + 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, + 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, + 4409, 4409, 4409, 4409, 4409, 4409, 0, 4409, 4409, 4409, + 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4410, + 4410, 0, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, + + 4410, 4410, 4410, 4410, 4410, 0, 4410, 4410, 4410, 4410, + 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4411, 4411, + 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, + 4411, 4411, 4411, 4411, 0, 4411, 4411, 4411, 4411, 4411, + 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4413, 4413, 0, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, + 4413, 4413, 4413, 4413, 4413, 4413, 4414, 0, 4414, 4414, + 4414, 4414, 4414, 0, 0, 0, 4414, 0, 4414, 4415, + 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, - 4414, 4414, 0, 4414, 4414, 4414, 4414, 4414, 4414, 4414, - 4414, 4414, 4414, 4414, 4414, 4414, 4414, 4414, 4414, 4414, - 4414, 4414, 4414, 4414, 4414, 4414, 4414, 4414, 4414, 4415, - 4415, 0, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4416, 4416, - 0, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, + 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4417, 4417, 0, 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, - 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, - 4417, 4417, 4417, 4417, 4417, 4417, 4418, 4418, 0, 4418, - 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, - 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, - 4418, 4418, 4418, 4418, 4418, 4419, 4419, 0, 4419, 4419, - 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, + 4417, 4417, 4417, 4417, 4417, 4417, 4418, 0, 4418, 4418, + 4418, 4418, 4418, 0, 0, 0, 4418, 0, 4418, 4419, + 4419, 0, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, + 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, - 4419, 4419, 4419, 4419, 4420, 4420, 0, 4420, 4420, 4420, - 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, - 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, - - 4420, 4420, 4420, 4421, 4421, 0, 4421, 4421, 4421, 4421, - 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, - 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, - 4421, 4421, 4422, 4422, 0, 4422, 4422, 4422, 4422, 4422, - 4422, 4422, 4422, 4422, 4422, 4422, 4422, 4422, 4422, 4422, - 4422, 4422, 4422, 4422, 4422, 4422, 4422, 4422, 4422, 4422, - 4422, 4423, 4423, 0, 4423, 4423, 4423, 4423, 4423, 4423, - 4423, 4423, 4423, 4423, 4423, 4423, 4423, 4423, 4423, 4423, - 4423, 4423, 4423, 4423, 4423, 4423, 4423, 4423, 4423, 4423, - 4424, 4424, 0, 4424, 4424, 4424, 4424, 4424, 4424, 4424, - - 4424, 4424, 4424, 4424, 4424, 4424, 4424, 4424, 4424, 4424, - 4424, 4424, 4424, 4424, 4424, 4424, 4424, 4424, 4424, 4425, - 4425, 0, 4425, 4425, 4425, 4425, 4425, 4425, 4425, 4425, - 4425, 4425, 4425, 4425, 4425, 4425, 4425, 4425, 4425, 4425, - 4425, 4425, 4425, 4425, 4425, 4425, 4425, 4425, 4426, 4426, - 0, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, - 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, - 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4427, 4427, 0, - 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, - 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, - - 4427, 4427, 4427, 4427, 4427, 4427, 4428, 4428, 0, 4428, - 4428, 4428, 4428, 4428, 4428, 4428, 4428, 4428, 4428, 4428, - 4428, 4428, 4428, 4428, 4428, 4428, 4428, 4428, 4428, 4428, - 4428, 4428, 4428, 4428, 4428, 4429, 4429, 0, 4429, 4429, - 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, - 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, - 4429, 4429, 4429, 4429, 4430, 4430, 0, 4430, 4430, 4430, - 4430, 4430, 4430, 4430, 4430, 4430, 4430, 4430, 4430, 4430, - 4430, 4430, 4430, 4430, 4430, 4430, 4430, 4430, 4430, 4430, - 4430, 4430, 4430, 4431, 4431, 0, 4431, 4431, 4431, 4431, + 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4420, 0, + 4420, 4420, 4420, 4420, 4420, 0, 0, 0, 4420, 0, + 4420, 4421, 4421, 4421, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4421, 4421, 0, + 0, 0, 4421, 4422, 4422, 4422, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4422, + 4422, 0, 0, 0, 4422, 4423, 4423, 4423, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4423, 0, 0, 0, 4423, 0, 0, 0, + 0, 0, 4423, 4424, 4424, 4424, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4424, + 4424, 0, 0, 0, 4424, 4427, 4427, 4427, 0, 0, + 0, 4427, 0, 0, 0, 4427, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4427, 4430, 0, 0, + 4430, 4430, 4430, 4430, 4430, 4430, 4430, 4430, 4430, 4430, + 4430, 4430, 4430, 0, 4430, 4430, 4430, 4430, 4430, 4430, + 4430, 0, 4430, 4430, 4430, 4430, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, 4431, - 4431, 4431, 4432, 4432, 0, 4432, 4432, 4432, 4432, 4432, - 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, - 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, - 4432, 4433, 4433, 0, 4433, 4433, 4433, 4433, 4433, 4433, - 4433, 4433, 4433, 4433, 4433, 4433, 4433, 4433, 4433, 4433, - 4433, 4433, 4433, 4433, 4433, 4433, 4433, 4433, 4433, 4433, - 4434, 4434, 0, 4434, 4434, 4434, 4434, 4434, 4434, 4434, - 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, - - 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4435, - 0, 0, 4435, 0, 0, 4435, 0, 4435, 4435, 4435, - 4435, 4435, 0, 0, 0, 4435, 0, 4435, 0, 4435, - 0, 0, 4435, 4436, 0, 4436, 4436, 4436, 4436, 4436, - 0, 0, 0, 4436, 0, 4436, 0, 4436, 4437, 0, - 0, 0, 0, 0, 4437, 0, 4437, 4437, 4437, 4437, - 4437, 0, 0, 4437, 4437, 0, 4437, 0, 4437, 0, - 0, 4437, 4438, 0, 0, 4438, 0, 0, 4438, 0, - 4438, 4438, 4438, 4438, 4438, 0, 0, 4438, 4438, 0, - 4438, 0, 4438, 0, 0, 4438, 4439, 4439, 0, 4439, - - 4439, 4439, 4439, 4439, 4439, 4439, 4439, 4439, 4439, 4439, - 4439, 0, 4439, 4439, 0, 4439, 4439, 4439, 4439, 0, - 4439, 4439, 4439, 4439, 4439, 4440, 4440, 4440, 4440, 4440, - 4440, 4440, 4440, 4440, 4440, 4440, 4440, 4440, 4440, 4440, - 4440, 4440, 4440, 4440, 4440, 4440, 4440, 4440, 0, 4440, - 4440, 4440, 4440, 4440, 4441, 4441, 0, 4441, 0, 0, - 0, 0, 4441, 0, 0, 0, 4441, 4442, 4442, 4442, - 0, 0, 0, 0, 0, 0, 4442, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4442, 0, 0, - 0, 4442, 4443, 4443, 4443, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 4443, 4443, 4443, - 0, 0, 4443, 0, 0, 0, 4443, 4444, 4444, 0, - 4444, 4444, 4444, 4444, 4444, 4444, 4444, 4444, 4444, 4444, - 4444, 4444, 4444, 4444, 4444, 4444, 4444, 4444, 4444, 4444, - 4444, 4444, 4444, 4444, 4444, 4444, 4445, 4445, 4445, 4445, - 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, - 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, - 4445, 4445, 4445, 4445, 4445, 4446, 0, 0, 4446, 4446, - 4446, 4446, 4446, 4446, 4446, 0, 4446, 4446, 4446, 4446, - 0, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 0, 4446, - - 4446, 4446, 4446, 4446, 4447, 4447, 0, 4447, 4447, 4447, - 4447, 4447, 4447, 4447, 4447, 4447, 4447, 4447, 4447, 4447, - 4447, 4447, 4447, 4447, 4447, 4447, 4447, 4447, 4447, 4447, - 4447, 4447, 4447, 4448, 4448, 4448, 4448, 4448, 4448, 4448, - 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 0, - 4448, 4448, 4448, 4448, 0, 4448, 4448, 4448, 0, 4448, - 4448, 4448, 4449, 4449, 0, 4449, 4449, 4449, 4449, 4449, - 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, - 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, - 4449, 4450, 4450, 4450, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 4450, 4450, 0, 0, - 0, 4450, 0, 0, 0, 4450, 4451, 0, 0, 4451, - 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, - 4451, 0, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 0, - 4451, 4451, 4451, 4451, 4451, 4452, 0, 0, 4452, 0, - 0, 0, 0, 0, 0, 0, 4452, 4452, 0, 0, - 0, 4452, 0, 0, 0, 4452, 0, 0, 4452, 4453, - 4453, 0, 4453, 4453, 4453, 4453, 4453, 4453, 4453, 4453, - 4453, 4453, 4453, 4453, 4453, 4453, 4453, 4453, 4453, 4453, - 4453, 4453, 4453, 4453, 4453, 4453, 4453, 4453, 4454, 4454, - - 0, 4454, 4454, 4454, 4454, 4454, 4454, 4454, 4454, 4454, - 4454, 4454, 4454, 4454, 4454, 4454, 4454, 4454, 4454, 4454, - 4454, 4454, 4454, 4454, 4454, 4454, 4454, 4455, 4455, 0, - 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, - 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, - 4455, 4455, 4455, 4455, 4455, 4455, 4456, 4456, 0, 4456, - 4456, 4456, 4456, 4456, 4456, 4456, 4456, 4456, 4456, 4456, - 4456, 4456, 4456, 4456, 4456, 4456, 4456, 4456, 4456, 4456, - 4456, 4456, 4456, 4456, 4456, 4457, 4457, 0, 4457, 4457, - 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, - - 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, - 4457, 4457, 4457, 4457, 4458, 4458, 0, 4458, 4458, 4458, - 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, - 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, - 4458, 4458, 4458, 4459, 4459, 0, 4459, 4459, 4459, 4459, - 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, - 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, - 4459, 4459, 4460, 4460, 0, 4460, 4460, 4460, 4460, 4460, - 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, - 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, - - 4460, 4461, 4461, 0, 4461, 4461, 4461, 4461, 4461, 4461, - 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, - 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, - 4462, 4462, 0, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + + 4431, 4431, 4431, 4431, 4431, 4433, 0, 0, 4433, 0, + 0, 0, 0, 0, 0, 0, 4433, 4433, 0, 0, + 0, 4433, 0, 0, 0, 0, 0, 4433, 4437, 0, + 4437, 4437, 4437, 4437, 4437, 0, 0, 0, 4437, 0, + 4437, 4438, 0, 4438, 4438, 4438, 4438, 4438, 0, 0, + 0, 4438, 0, 4438, 4439, 0, 4439, 4439, 4439, 4439, + 4439, 0, 0, 4439, 4439, 0, 4439, 4440, 0, 4440, + 4440, 4440, 4440, 4440, 0, 0, 4440, 4440, 0, 4440, + 4442, 0, 4442, 4442, 4442, 4442, 4442, 0, 0, 4442, + 4442, 0, 4442, 4443, 0, 4443, 4443, 4443, 4443, 4443, + + 0, 0, 0, 4443, 0, 4443, 0, 0, 0, 4443, + 4444, 0, 0, 0, 0, 0, 4444, 0, 0, 4444, + 4444, 0, 4444, 0, 0, 0, 0, 4444, 4444, 4444, + 0, 4444, 4445, 0, 0, 4445, 0, 0, 4445, 0, + 4445, 4445, 4445, 4445, 4445, 0, 0, 4445, 4445, 0, + 4445, 0, 0, 0, 4445, 4446, 4446, 0, 4446, 4446, + 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, + 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, + 4446, 4446, 4446, 4446, 4447, 4447, 0, 4447, 4447, 0, + 0, 0, 4447, 4448, 4448, 4448, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4448, 0, 0, 0, 4448, 0, 0, 0, 0, 0, + 4448, 4449, 4449, 4449, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4449, 4449, 0, + 0, 0, 4449, 4452, 0, 0, 4452, 0, 4452, 4452, + 4452, 0, 0, 4452, 0, 4452, 4452, 4452, 4452, 4452, + 0, 4452, 4452, 0, 4452, 0, 0, 4452, 4453, 0, + 0, 4453, 0, 4453, 4453, 4453, 0, 0, 4453, 0, + 4453, 4453, 4453, 4453, 4453, 0, 4453, 4453, 0, 4453, + 0, 0, 4453, 4454, 0, 0, 4454, 0, 4454, 4454, + + 4454, 0, 0, 4454, 0, 4454, 4454, 4454, 4454, 4454, + 0, 4454, 4454, 0, 4454, 0, 0, 4454, 4455, 0, + 0, 4455, 0, 4455, 4455, 4455, 0, 0, 4455, 0, + 4455, 4455, 4455, 4455, 4455, 0, 4455, 4455, 0, 4455, + 0, 0, 4455, 4456, 0, 0, 4456, 0, 4456, 4456, + 4456, 0, 0, 4456, 0, 4456, 4456, 4456, 4456, 4456, + 0, 4456, 4456, 0, 4456, 0, 0, 4456, 4457, 0, + 0, 4457, 0, 4457, 4457, 4457, 0, 0, 4457, 0, + 4457, 4457, 4457, 4457, 4457, 0, 4457, 4457, 0, 4457, + 0, 0, 4457, 4458, 0, 0, 4458, 0, 4458, 4458, + + 4458, 0, 0, 4458, 0, 4458, 4458, 4458, 4458, 4458, + 0, 4458, 4458, 0, 4458, 0, 0, 4458, 4459, 0, + 0, 4459, 0, 4459, 4459, 4459, 0, 0, 4459, 0, + 4459, 4459, 4459, 4459, 4459, 0, 4459, 4459, 0, 4459, + 0, 0, 4459, 4460, 0, 0, 4460, 0, 4460, 4460, + 4460, 0, 0, 4460, 0, 4460, 4460, 4460, 4460, 4460, + 0, 4460, 4460, 0, 4460, 0, 0, 4460, 4461, 4461, + 0, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, + 4461, 4461, 4461, 4461, 0, 4461, 4461, 0, 4461, 4461, + 4461, 4461, 0, 4461, 4461, 4461, 4461, 4462, 4462, 4462, + + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, - 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4463, - 4463, 0, 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, - 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, - 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4464, 4464, - 0, 4464, 4464, 4464, 4464, 4464, 4464, 4464, 4464, 4464, - - 4464, 4464, 4464, 4464, 4464, 4464, 4464, 4464, 4464, 4464, - 4464, 4464, 4464, 4464, 4464, 4464, 4464, 4465, 4465, 0, + 4462, 4462, 4462, 4462, 4462, 4462, 4463, 0, 0, 4463, + 4463, 0, 4463, 0, 4463, 4463, 4463, 4463, 4463, 0, + 0, 0, 4463, 0, 0, 0, 0, 0, 4463, 4464, + 4464, 0, 0, 0, 0, 4464, 0, 4464, 4464, 0, + 0, 0, 4464, 4465, 4465, 0, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, - 4465, 4465, 4465, 4465, 4465, 4465, 4466, 4466, 0, 4466, - 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, - 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, - 4466, 4466, 4466, 4466, 4466, 4467, 4467, 0, 4467, 4467, + 4465, 4465, 4466, 0, 4466, 4466, 4466, 4466, 4466, 0, + + 0, 0, 4466, 0, 4466, 4467, 4467, 0, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, - - 4467, 4467, 4467, 4467, 4468, 4468, 0, 4468, 4468, 4468, - 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, - 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, - 4468, 4468, 4468, 4469, 4469, 0, 4469, 4469, 4469, 4469, - 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, - 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, - 4469, 4469, 4470, 4470, 0, 4470, 4470, 4470, 4470, 4470, - 4470, 4470, 4470, 4470, 4470, 4470, 4470, 4470, 4470, 4470, - 4470, 4470, 4470, 4470, 4470, 4470, 4470, 4470, 4470, 4470, - 4470, 4471, 4471, 0, 4471, 4471, 4471, 4471, 4471, 4471, - - 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, + 4467, 4467, 4467, 4467, 4468, 0, 4468, 4468, 4468, 4468, + 4468, 0, 0, 0, 4468, 0, 4468, 4469, 0, 4469, + 4469, 4469, 4469, 0, 0, 0, 0, 4469, 4470, 0, + 0, 0, 0, 0, 4470, 0, 4470, 4470, 4470, 4470, + 4470, 0, 0, 4470, 4470, 0, 0, 0, 0, 0, + 4470, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, - 4472, 4472, 0, 4472, 4472, 4472, 4472, 4472, 4472, 4472, + + 0, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, + 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, - 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4473, - 4473, 0, 4473, 4473, 4473, 4473, 4473, 4473, 4473, 4473, - 4473, 4473, 4473, 4473, 4473, 4473, 4473, 4473, 4473, 4473, - 4473, 4473, 4473, 4473, 4473, 4473, 4473, 4473, 4474, 4474, - 0, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, + 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4474, + 0, 0, 0, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, - - 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4475, 4475, 0, + 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, - 4475, 4475, 4475, 4475, 4475, 4475, 4476, 4476, 0, 4476, - 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, + 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4476, 0, 0, + + 0, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, 4476, - 4476, 4476, 4476, 4476, 4476, 4477, 4477, 0, 4477, 4477, + 4476, 4476, 4476, 4476, 4476, 4476, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, - 4477, 4477, 4477, 4477, 4478, 4478, 0, 4478, 4478, 4478, - + 4477, 4477, 4477, 4477, 4477, 4478, 0, 0, 0, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, - 4478, 4478, 4478, 4479, 4479, 0, 4479, 4479, 4479, 4479, + 4478, 4478, 4478, 4478, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, + 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, - 4479, 4479, 4480, 4480, 0, 4480, 4480, 4480, 4480, 4480, + 4479, 4479, 4479, 4480, 0, 0, 0, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, 4480, - 4480, 4481, 4481, 0, 4481, 4481, 4481, 4481, 4481, 4481, + 4480, 4480, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, - 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, - 4482, 4482, 0, 4482, 4482, 4482, 4482, 4482, 4482, 4482, + 4481, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, - 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4483, - 4483, 0, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, + 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, + + 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, - 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4484, 4484, - 0, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, + 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, - 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4485, 4485, 0, - - 4485, 4485, 4485, 4485, 4485, 4485, 4485, 4485, 4485, 4485, - 4485, 4485, 4485, 4485, 4485, 4485, 4485, 4485, 4485, 4485, - 4485, 4485, 4485, 4485, 4485, 4485, 4486, 4486, 0, 4486, - 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, - 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, - 4486, 4486, 4486, 4486, 4486, 4487, 4487, 0, 4487, 4487, - 4487, 4487, 4487, 4487, 4487, 4487, 4487, 4487, 4487, 4487, - 4487, 4487, 4487, 4487, 4487, 4487, 4487, 4487, 4487, 4487, - 4487, 4487, 4487, 4487, 4488, 4488, 0, 4488, 4488, 4488, - 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, - - 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, - 4488, 4488, 4488, 4489, 4489, 0, 4489, 4489, 4489, 4489, + 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, + 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4485, 4485, + 4485, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4485, 0, 0, 0, 4485, + 0, 0, 0, 0, 0, 4485, 4486, 4486, 4486, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 4486, 4486, 0, 0, 0, 4486, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, 4489, - 4489, 4489, 4490, 4490, 0, 4490, 4490, 4490, 4490, 4490, + 4489, 4489, 0, 4489, 4489, 4489, 4489, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, - 4490, 4491, 0, 0, 4491, 0, 0, 4491, 0, 4491, - 4491, 4491, 4491, 4491, 0, 0, 0, 4491, 0, 4491, - 0, 4491, 0, 0, 4491, 4492, 0, 4492, 4492, 4492, + 4490, 4490, 4490, 4490, 4490, 4490, 4491, 4491, 0, 4491, + 4491, 4491, 4491, 4491, 4491, 4491, 4491, 4491, 4491, 4491, + 4491, 4491, 4491, 4491, 4491, 4491, 4491, 4491, 4491, 4491, + 4491, 4491, 4491, 4491, 4491, 4492, 0, 4492, 4492, 4492, - 4492, 4492, 0, 0, 0, 4492, 0, 4492, 0, 4492, - 4493, 4493, 0, 4493, 4493, 4493, 4493, 4493, 4493, 4493, + 4492, 4492, 0, 0, 0, 4492, 0, 4492, 4493, 4493, + 0, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, - 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4494, - 0, 0, 0, 0, 0, 4494, 0, 4494, 4494, 4494, - 4494, 4494, 0, 0, 4494, 4494, 0, 0, 0, 4494, - 0, 0, 4494, 4495, 0, 0, 0, 0, 0, 4495, - 0, 4495, 4495, 4495, 4495, 4495, 0, 0, 4495, 4495, - 0, 4495, 0, 4495, 0, 0, 4495, 4496, 0, 0, - 0, 0, 0, 4496, 0, 4496, 4496, 4496, 4496, 4496, - - 0, 0, 4496, 4496, 0, 4496, 0, 4496, 0, 0, - 4496, 4497, 0, 0, 0, 0, 0, 4497, 0, 4497, - 4497, 4497, 4497, 4497, 0, 0, 4497, 4497, 0, 4497, - 0, 4497, 0, 0, 4497, 4498, 0, 0, 4498, 0, - 0, 4498, 0, 4498, 4498, 4498, 4498, 4498, 0, 0, - 4498, 4498, 0, 4498, 0, 4498, 0, 0, 4498, 4499, - 4499, 0, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, - 4499, 4499, 4499, 4499, 0, 4499, 4499, 0, 4499, 4499, - 4499, 4499, 0, 4499, 4499, 4499, 4499, 4499, 4500, 4500, - 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, - - 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, - 4500, 0, 4500, 4500, 4500, 4500, 4500, 4501, 4501, 0, - 4501, 0, 0, 0, 0, 4501, 0, 0, 0, 4501, - 4502, 4502, 4502, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4502, 4502, 4502, 0, 0, - 4502, 0, 0, 0, 4502, 4503, 4503, 0, 4503, 4503, - 4503, 4503, 4503, 4503, 4503, 4503, 4503, 4503, 4503, 4503, - 4503, 4503, 4503, 4503, 4503, 4503, 4503, 4503, 4503, 4503, - 4503, 4503, 4503, 4503, 4504, 4504, 0, 4504, 4504, 4504, - 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, - - 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, - 4504, 4504, 4504, 4505, 0, 0, 4505, 4505, 4505, 4505, - 4505, 4505, 4505, 0, 4505, 4505, 4505, 4505, 0, 4505, - 4505, 4505, 4505, 4505, 4505, 4505, 0, 4505, 4505, 4505, - 4505, 4505, 4506, 4506, 0, 4506, 4506, 4506, 4506, 4506, - 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, - 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, - 4506, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, - 4507, 4507, 4507, 4507, 4507, 4507, 4507, 0, 4507, 4507, - 4507, 4507, 0, 4507, 4507, 4507, 0, 4507, 4507, 4507, - - 4508, 0, 0, 4508, 4508, 4508, 4508, 4508, 4508, 4508, - 4508, 4508, 4508, 4508, 4508, 0, 4508, 4508, 4508, 4508, - 4508, 4508, 4508, 0, 4508, 4508, 4508, 4508, 4508, 4509, - 0, 0, 4509, 0, 0, 0, 0, 0, 0, 0, - 4509, 4509, 0, 0, 0, 4509, 0, 0, 0, 4509, - 0, 0, 4509, 4510, 4510, 0, 4510, 4510, 4510, 4510, - 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, + 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4494, 4494, 4494, + 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, + 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, + 4494, 4494, 4494, 4494, 4494, 4494, 4495, 4495, 4495, 4495, + 4495, 4495, 4495, 4495, 4495, 4495, 4495, 4495, 4495, 4495, + 4495, 4495, 4495, 4495, 4495, 4495, 4495, 4495, 4495, 4495, + 4495, 4495, 4495, 4495, 4495, 4496, 4496, 4496, 4496, 4496, + + 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, + 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, + 4496, 4496, 4496, 4496, 4498, 4498, 4498, 4498, 4498, 4498, + 4498, 4498, 4498, 4498, 4498, 4498, 4498, 4498, 4498, 4498, + 4498, 4498, 4498, 4498, 4498, 4498, 4498, 4498, 4498, 4498, + 4498, 4498, 4498, 4499, 4499, 4499, 4499, 4499, 4499, 4499, + 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, + 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, + 4499, 4499, 4501, 4501, 0, 4501, 4501, 4501, 4501, 4501, + 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, + + 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, + 4501, 4502, 0, 0, 0, 0, 0, 4502, 0, 4502, + 4502, 4502, 4502, 4502, 0, 0, 4502, 4502, 0, 0, + 0, 0, 0, 4502, 4503, 0, 0, 0, 0, 0, + 4503, 0, 4503, 4503, 4503, 4503, 4503, 0, 0, 4503, + 4503, 0, 4503, 0, 0, 0, 4503, 4504, 0, 4504, + 4504, 4504, 4504, 4504, 0, 0, 0, 4504, 0, 4504, + 4505, 4505, 0, 4505, 4505, 4505, 4505, 4505, 4505, 4505, + 4505, 4505, 4505, 4505, 4505, 4505, 4505, 4505, 4505, 4505, + 4505, 4505, 4505, 4505, 4505, 4505, 4505, 4505, 4505, 4506, + + 0, 4506, 4506, 4506, 4506, 4506, 0, 0, 0, 4506, + 0, 4506, 4508, 4508, 4508, 4508, 4508, 4508, 4508, 4508, + 4508, 4508, 4508, 0, 4508, 4508, 4508, 4508, 4508, 4508, + 4508, 4508, 4508, 4508, 4508, 4508, 4508, 4508, 4508, 4508, + 4508, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, + 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, + 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, + 4510, 4510, 0, 4510, 4510, 0, 4510, 4510, 0, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, - 4510, 4510, 4511, 4511, 0, 4511, 4511, 4511, 4511, 4511, - 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, + 4510, 4510, 4510, 4510, 0, 4510, 4510, 4510, 4510, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, - 4511, 4512, 4512, 0, 4512, 4512, 4512, 4512, 4512, 4512, - 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, - 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, - 4513, 4513, 0, 4513, 4513, 4513, 4513, 4513, 4513, 4513, + 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, + 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4512, 4512, + 0, 4512, 4512, 0, 4512, 4512, 0, 0, 0, 4512, + 4512, 4512, 4512, 4512, 0, 4512, 4512, 4512, 4512, 4512, + 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, - 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4514, - 4514, 0, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, + 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, + 4513, 4513, 4513, 4513, 4513, 4513, 4514, 4514, 0, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, - 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4515, 4515, - 0, 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, + 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, + 4514, 4514, 4514, 4514, 4514, 4515, 4515, 0, 4515, 4515, + 4515, 4515, 4515, 4515, 4515, 4515, 0, 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, - 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4516, 4516, 0, + 4515, 4515, 4515, 4515, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, - 4516, 4516, 4516, 4516, 4516, 4516, 4517, 4517, 0, 4517, + 4516, 4516, 4516, 4517, 4517, 0, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, - 4517, 4517, 4517, 4517, 4517, 4518, 4518, 0, 4518, 4518, - 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + 4517, 4517, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, - 4518, 4518, 4518, 4518, 4519, 4519, 0, 4519, 4519, 4519, - 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + 4518, 4519, 0, 0, 0, 4519, 0, 4519, 4519, 0, + 0, 0, 4519, 4519, 4519, 4519, 4519, 0, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, - 4519, 4519, 4519, 4520, 4520, 0, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, - 4520, 4520, 4521, 4521, 0, 4521, 4521, 4521, 4521, 4521, - 4521, 4521, 4521, 4521, 4521, 4521, 4521, 4521, 4521, 4521, - 4521, 4521, 4521, 4521, 4521, 4521, 4521, 4521, 4521, 4521, + 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4522, + 4522, 0, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, - 4521, 4522, 4522, 0, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, - 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, - 4523, 4523, 0, 4523, 4523, 4523, 4523, 4523, 4523, 4523, + 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4523, 4523, + 0, 4523, 4523, 0, 4523, 4523, 0, 0, 0, 4523, 4523, 4523, 4523, 4523, 4523, 4523, 4523, 4523, 4523, 4523, - 4523, 4523, 4523, 4523, 4523, 4523, 4523, 4523, 4523, 4524, - 4524, 0, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, + 4523, 4523, 4523, 4523, 4523, 4523, 4523, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, - 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4525, 4525, - 0, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, - + 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, + 4524, 4524, 4524, 4524, 4524, 4524, 4525, 4525, 0, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, - 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4526, 4526, 0, - 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, + 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, + + 4525, 4525, 4525, 4525, 4525, 4526, 4526, 0, 4526, 4526, + 0, 4526, 4526, 0, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, - 4526, 4526, 4526, 4526, 4526, 4526, 4527, 4527, 0, 4527, + 4526, 0, 0, 4526, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, - 4527, 4527, 4527, 4527, 4527, 4528, 4528, 0, 4528, 4528, + 4527, 4527, 4527, 4528, 4528, 0, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, + 4528, 4528, 4529, 4529, 4529, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4529, + 0, 0, 0, 4529, 0, 0, 0, 0, 0, 4529, + 4530, 4530, 4530, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4530, 4530, 4530, 0, + 0, 4530, 4532, 4532, 4532, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4532, 0, + 4532, 0, 0, 4532, 4533, 4533, 4533, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4533, 0, 0, 0, 4533, 0, 0, 0, 0, + 0, 4533, 4534, 4534, 4534, 0, 0, 0, 0, 0, - 4528, 4528, 4528, 4528, 4529, 4529, 0, 4529, 4529, 4529, - 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, - 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, - 4529, 4529, 4529, 4530, 4530, 0, 4530, 4530, 4530, 4530, - 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, - 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, - 4530, 4530, 4531, 4531, 0, 4531, 4531, 4531, 4531, 4531, - 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, - 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, - 4531, 4532, 4532, 0, 4532, 4532, 4532, 4532, 4532, 4532, - - 4532, 4532, 4532, 4532, 4532, 4532, 4532, 4532, 4532, 4532, - 4532, 4532, 4532, 4532, 4532, 4532, 4532, 4532, 4532, 4532, - 4533, 4533, 0, 4533, 4533, 4533, 4533, 4533, 4533, 4533, - 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, - 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4534, - 4534, 0, 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4534, - 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4534, - 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4535, 4535, - 0, 4535, 4535, 4535, 4535, 4535, 4535, 4535, 4535, 4535, - 4535, 4535, 4535, 4535, 4535, 4535, 4535, 4535, 4535, 4535, - - 4535, 4535, 4535, 4535, 4535, 4535, 4535, 4536, 4536, 0, - 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, - 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, - 4536, 4536, 4536, 4536, 4536, 4536, 4537, 4537, 0, 4537, - 4537, 4537, 4537, 4537, 4537, 4537, 4537, 4537, 4537, 4537, - 4537, 4537, 4537, 4537, 4537, 4537, 4537, 4537, 4537, 4537, - 4537, 4537, 4537, 4537, 4537, 4538, 4538, 0, 4538, 4538, - 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, - 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, - 4538, 4538, 4538, 4538, 4539, 0, 0, 4539, 0, 0, - - 4539, 0, 4539, 4539, 4539, 4539, 4539, 0, 0, 0, - 4539, 0, 4539, 0, 4539, 0, 0, 4539, 4540, 0, - 4540, 4540, 4540, 4540, 4540, 0, 0, 0, 4540, 0, - 4540, 0, 4540, 4541, 4541, 0, 4541, 4541, 4541, 4541, - 4541, 4541, 4541, 4541, 4541, 4541, 4541, 4541, 4541, 4541, - 4541, 4541, 4541, 4541, 4541, 4541, 4541, 4541, 4541, 4541, - 4541, 4541, 4542, 4542, 0, 4542, 4542, 4542, 4542, 4542, - 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, - 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, - 4542, 4543, 4543, 0, 4543, 4543, 4543, 4543, 4543, 4543, - - 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, - 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, - 4544, 0, 0, 0, 0, 0, 4544, 0, 4544, 4544, - 4544, 4544, 4544, 0, 0, 4544, 4544, 0, 4544, 0, - 4544, 0, 0, 4544, 4545, 0, 0, 4545, 0, 0, - 4545, 0, 4545, 4545, 4545, 4545, 4545, 0, 0, 4545, - 4545, 0, 4545, 0, 4545, 0, 0, 4545, 4546, 0, - 0, 0, 0, 0, 4546, 0, 4546, 4546, 4546, 4546, - 4546, 0, 0, 4546, 4546, 0, 0, 0, 4546, 0, - 0, 4546, 4547, 0, 0, 4547, 0, 0, 4547, 0, - - 4547, 4547, 4547, 4547, 4547, 0, 0, 4547, 4547, 0, - 4547, 0, 4547, 0, 0, 4547, 4548, 4548, 0, 4548, - 4548, 4548, 4548, 4548, 4548, 4548, 4548, 4548, 4548, 4548, - 4548, 4548, 4548, 4548, 4548, 4548, 4548, 4548, 4548, 4548, - 4548, 4548, 4548, 4548, 4548, 4549, 4549, 0, 4549, 4549, + 0, 0, 0, 0, 0, 0, 0, 0, 4534, 4534, + 0, 0, 0, 4534, 4538, 4538, 4538, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4538, 4538, 0, 0, 0, 4538, 4539, 4539, 4539, 4539, + 4539, 4539, 4539, 4539, 4539, 4539, 4539, 0, 4539, 4539, + 4539, 4539, 0, 4539, 4539, 4539, 4539, 4539, 4539, 4539, + 4539, 4539, 4539, 4539, 4539, 4540, 4540, 4540, 4540, 4540, + 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, + 4540, 0, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, + 4540, 4540, 4540, 4540, 4541, 4541, 4541, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4541, 0, 0, 0, 4541, 0, 0, 0, 0, + 0, 4541, 4542, 4542, 4542, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4542, 4542, + 4542, 0, 0, 4542, 4544, 4544, 4544, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4544, 0, 4544, 0, 0, 4544, 4545, 4545, 4545, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4545, 0, 0, 0, 4545, 0, 0, + 0, 0, 0, 4545, 4546, 4546, 4546, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4546, 4546, 4546, 0, 0, 4546, 4548, 4548, 4548, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4548, 0, 4548, 0, 0, 4548, 4549, 4549, + 0, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, - 0, 4549, 4549, 0, 4549, 4549, 4549, 4549, 0, 4549, - 4549, 4549, 4549, 4549, 4550, 4550, 4550, 4550, 4550, 4550, - 4550, 4550, 4550, 4550, 4550, 4550, 4550, 4550, 4550, 4550, - 4550, 4550, 4550, 4550, 4550, 4550, 4550, 0, 4550, 4550, - - 4550, 4550, 4550, 4551, 4551, 4551, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4551, 4551, - 4551, 0, 0, 4551, 0, 0, 0, 4551, 4552, 4552, - 0, 4552, 4552, 4552, 4552, 4552, 4552, 4552, 4552, 4552, - 4552, 4552, 4552, 4552, 4552, 4552, 4552, 4552, 4552, 4552, - 4552, 4552, 4552, 4552, 4552, 4552, 4552, 4553, 0, 0, - 4553, 4553, 4553, 4553, 4553, 4553, 4553, 0, 4553, 4553, - 4553, 4553, 0, 4553, 4553, 4553, 4553, 4553, 4553, 4553, - 0, 4553, 4553, 4553, 4553, 4553, 4554, 0, 0, 4554, - 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, - - 4554, 0, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 0, - 4554, 4554, 4554, 4554, 4554, 4555, 0, 0, 4555, 0, - 0, 0, 0, 0, 0, 0, 4555, 4555, 0, 0, - 0, 4555, 0, 0, 0, 4555, 0, 0, 4555, 4556, - 4556, 0, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, - 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, - 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4557, 4557, - 0, 4557, 4557, 4557, 4557, 4557, 4557, 4557, 4557, 4557, - 4557, 4557, 4557, 4557, 4557, 4557, 4557, 4557, 4557, 4557, - 4557, 4557, 4557, 4557, 4557, 4557, 4557, 4558, 4558, 0, - - 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, - 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, - 4558, 4558, 4558, 4558, 4558, 4558, 4559, 4559, 0, 4559, + 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4550, 4550, 4550, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4550, 0, 0, 0, 4550, 0, + 0, 0, 0, 0, 4550, 4551, 4551, 4551, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4551, 4551, 0, 0, 0, 4551, 4554, 4554, 4554, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4554, 0, 0, 0, 4554, 0, + 0, 0, 0, 0, 4554, 4555, 4555, 4555, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4555, 4555, 0, 0, 0, 4555, 4558, 0, 0, + 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 0, 4558, + 4558, 4558, 4558, 0, 4558, 4558, 4558, 4558, 4558, 4558, + 4558, 0, 4558, 4558, 4558, 4558, 4559, 4559, 4559, 4559, + 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4560, 4560, 0, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, - 4560, 4560, 4560, 4560, 4561, 4561, 0, 4561, 4561, 4561, - 4561, 4561, 4561, 4561, 4561, 4561, 4561, 4561, 4561, 4561, - - 4561, 4561, 4561, 4561, 4561, 4561, 4561, 4561, 4561, 4561, - 4561, 4561, 4561, 4562, 4562, 0, 4562, 4562, 4562, 4562, - 4562, 4562, 4562, 4562, 4562, 4562, 4562, 4562, 4562, 4562, - 4562, 4562, 4562, 4562, 4562, 4562, 4562, 4562, 4562, 4562, - 4562, 4562, 4563, 4563, 0, 4563, 4563, 4563, 4563, 4563, - 4563, 4563, 4563, 4563, 4563, 4563, 4563, 4563, 4563, 4563, - 4563, 4563, 4563, 4563, 4563, 4563, 4563, 4563, 4563, 4563, - 4563, 4564, 4564, 0, 4564, 4564, 4564, 4564, 4564, 4564, - 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, - 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, - - 4565, 4565, 0, 4565, 4565, 4565, 4565, 4565, 4565, 4565, - 4565, 4565, 4565, 4565, 4565, 4565, 4565, 4565, 4565, 4565, - 4565, 4565, 4565, 4565, 4565, 4565, 4565, 4565, 4565, 4566, - 4566, 0, 4566, 4566, 4566, 4566, 4566, 4566, 4566, 4566, - 4566, 4566, 4566, 4566, 4566, 4566, 4566, 4566, 4566, 4566, - 4566, 4566, 4566, 4566, 4566, 4566, 4566, 4566, 4567, 4567, - 0, 4567, 4567, 4567, 4567, 4567, 4567, 4567, 4567, 4567, - 4567, 4567, 4567, 4567, 4567, 4567, 4567, 4567, 4567, 4567, - 4567, 4567, 4567, 4567, 4567, 4567, 4567, 4568, 4568, 0, - 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, - - 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, - 4568, 4568, 4568, 4568, 4568, 4568, 4569, 4569, 0, 4569, - 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, + 4560, 4560, 4560, 4560, 4561, 4561, 4561, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4561, 0, 0, 0, 4561, 0, 0, 0, 0, + 0, 4561, 4562, 4562, 4562, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4562, 4562, + + 0, 0, 0, 4562, 4565, 4565, 4565, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4565, 0, 0, 0, 4565, 0, 0, 0, 0, + 0, 4565, 4566, 4566, 4566, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4566, 4566, + 0, 0, 0, 4566, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, - 4569, 4569, 4569, 4569, 4569, 4570, 4570, 0, 4570, 4570, - 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, + 0, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, + 4569, 4569, 4569, 4570, 4570, 0, 4570, 4570, 4570, 4570, + 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 0, + 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, - 4570, 4570, 4570, 4570, 4571, 4571, 0, 4571, 4571, 4571, - 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, - 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, - - 4571, 4571, 4571, 4572, 4572, 0, 4572, 4572, 4572, 4572, - 4572, 4572, 4572, 4572, 4572, 4572, 4572, 4572, 4572, 4572, - 4572, 4572, 4572, 4572, 4572, 4572, 4572, 4572, 4572, 4572, - 4572, 4572, 4573, 0, 0, 4573, 0, 0, 4573, 0, - 4573, 4573, 4573, 4573, 4573, 0, 0, 0, 4573, 0, - 4573, 0, 4573, 0, 0, 4573, 4574, 0, 4574, 4574, - 4574, 4574, 4574, 0, 0, 0, 4574, 0, 4574, 0, - 4574, 4575, 4575, 0, 4575, 4575, 4575, 4575, 4575, 4575, - 4575, 4575, 4575, 4575, 4575, 4575, 4575, 4575, 4575, 4575, - 4575, 4575, 4575, 4575, 4575, 4575, 4575, 4575, 4575, 4575, - - 4576, 0, 0, 0, 0, 0, 4576, 0, 4576, 4576, - 4576, 4576, 4576, 0, 0, 4576, 4576, 0, 0, 0, - 4576, 0, 0, 4576, 4577, 0, 0, 4577, 0, 0, - 4577, 0, 4577, 4577, 4577, 4577, 4577, 0, 0, 4577, - 4577, 0, 4577, 0, 4577, 0, 0, 4577, 4578, 0, - 0, 0, 0, 0, 4578, 0, 4578, 4578, 4578, 4578, - 4578, 0, 0, 4578, 4578, 0, 4578, 0, 4578, 0, - 0, 4578, 4579, 0, 0, 4579, 0, 0, 4579, 0, - 4579, 4579, 4579, 4579, 4579, 0, 0, 4579, 4579, 0, - 0, 0, 4579, 0, 0, 4579, 4580, 0, 0, 4580, - - 0, 0, 4580, 0, 4580, 4580, 4580, 4580, 4580, 0, - 0, 4580, 4580, 0, 4580, 0, 4580, 0, 0, 4580, - 4581, 4581, 0, 4581, 4581, 4581, 4581, 4581, 4581, 4581, - 4581, 4581, 4581, 4581, 4581, 4581, 4581, 4581, 4581, 4581, - 4581, 4581, 4581, 4581, 4581, 4581, 4581, 4581, 4581, 4582, - 4582, 0, 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, - 4582, 4582, 4582, 4582, 0, 4582, 4582, 0, 4582, 4582, - 4582, 4582, 0, 4582, 4582, 4582, 4582, 4582, 4583, 4583, - 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, - 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, - - 4583, 0, 4583, 4583, 4583, 4583, 4583, 4584, 0, 0, + 4570, 4570, 4571, 4571, 4571, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4571, + 0, 0, 0, 4571, 4572, 4572, 4572, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4572, 4572, 0, 0, 0, 4572, 4573, 4573, 4573, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4573, 0, 0, 0, 4573, 0, 0, + 0, 0, 0, 4573, 4574, 4574, 4574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4584, 0, 4584, 0, 0, 0, 0, 4584, 0, 0, - 0, 4584, 4585, 4585, 4585, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4585, 4585, 4585, - 0, 0, 4585, 0, 0, 0, 4585, 4586, 0, 0, - 4586, 4586, 4586, 4586, 4586, 4586, 4586, 0, 4586, 4586, - 4586, 4586, 0, 4586, 4586, 4586, 4586, 4586, 4586, 4586, - 0, 4586, 4586, 4586, 4586, 4586, 4587, 4587, 4587, 4587, - 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, + 4574, 4574, 0, 0, 0, 4574, 4578, 0, 0, 4578, + 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, + 4578, 4578, 0, 4578, 4578, 4578, 4578, 4578, 4578, 4578, + 0, 4578, 4578, 4578, 4578, 4579, 0, 0, 4579, 0, + 0, 0, 0, 0, 0, 0, 4579, 4579, 0, 0, + 0, 4579, 0, 0, 0, 0, 0, 4579, 4581, 0, + 4581, 4581, 4581, 4581, 4581, 0, 0, 0, 4581, 0, + 4581, 4582, 0, 4582, 4582, 4582, 4582, 4582, 0, 0, + 4582, 4582, 0, 4582, 4584, 0, 0, 4584, 0, 0, + 4584, 0, 4584, 4584, 4584, 4584, 4584, 0, 0, 0, + + 4584, 0, 4584, 0, 0, 0, 4584, 4585, 4585, 0, + 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, + 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, + 4585, 4585, 4585, 4585, 4585, 4585, 4586, 4586, 0, 4586, + 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, + 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, + 4586, 4586, 4586, 4586, 4586, 4587, 4587, 0, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, - 4587, 4587, 4587, 4587, 4587, 4588, 0, 0, 4588, 4588, - 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, - 0, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 0, 4588, - 4588, 4588, 4588, 4588, 4589, 0, 0, 4589, 0, 0, - 0, 0, 0, 0, 0, 4589, 4589, 0, 0, 0, - 4589, 0, 0, 0, 4589, 0, 0, 4589, 4590, 4590, - 0, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, - 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, - 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4591, 4591, 0, - - 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, - 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, - 4591, 4591, 4591, 4591, 4591, 4591, 4592, 4592, 0, 4592, - 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, - 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, - 4592, 4592, 4592, 4592, 4592, 4593, 4593, 0, 4593, 4593, - 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, - 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, - 4593, 4593, 4593, 4593, 4594, 4594, 0, 4594, 4594, 4594, - 4594, 4594, 4594, 4594, 4594, 4594, 4594, 4594, 4594, 4594, - - 4594, 4594, 4594, 4594, 4594, 4594, 4594, 4594, 4594, 4594, - 4594, 4594, 4594, 4595, 4595, 0, 4595, 4595, 4595, 4595, - 4595, 4595, 4595, 4595, 4595, 4595, 4595, 4595, 4595, 4595, - 4595, 4595, 4595, 4595, 4595, 4595, 4595, 4595, 4595, 4595, - 4595, 4595, 4596, 4596, 0, 4596, 4596, 4596, 4596, 4596, - 4596, 4596, 4596, 4596, 4596, 4596, 4596, 4596, 4596, 4596, - 4596, 4596, 4596, 4596, 4596, 4596, 4596, 4596, 4596, 4596, - 4596, 4597, 4597, 0, 4597, 4597, 4597, 4597, 4597, 4597, - 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, - 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, - - 4598, 4598, 0, 4598, 4598, 4598, 4598, 4598, 4598, 4598, - 4598, 4598, 4598, 4598, 4598, 4598, 4598, 4598, 4598, 4598, - 4598, 4598, 4598, 4598, 4598, 4598, 4598, 4598, 4598, 4599, - 4599, 0, 4599, 4599, 4599, 4599, 4599, 4599, 4599, 4599, - 4599, 4599, 4599, 4599, 4599, 4599, 4599, 4599, 4599, 4599, - 4599, 4599, 4599, 4599, 4599, 4599, 4599, 4599, 4600, 4600, - 0, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, - 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, - 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4602, 4602, 4602, - 4602, 4602, 4602, 4602, 4602, 4602, 4602, 4602, 4602, 4602, - - 4602, 4602, 4602, 0, 4602, 4602, 4602, 4602, 0, 4602, - 4602, 4602, 0, 4602, 4602, 4602, 4603, 4603, 4603, 4603, - 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, - 4603, 4603, 0, 4603, 4603, 4603, 4603, 0, 4603, 4603, - 4603, 0, 4603, 4603, 4603, 4604, 0, 0, 4604, 0, - 0, 4604, 0, 4604, 4604, 4604, 4604, 4604, 0, 0, - 0, 4604, 0, 4604, 0, 4604, 0, 0, 4604, 4605, - 0, 4605, 4605, 4605, 4605, 4605, 0, 0, 0, 4605, - 0, 4605, 0, 4605, 4606, 0, 0, 4606, 0, 0, - 4606, 0, 4606, 4606, 4606, 4606, 4606, 0, 0, 4606, - - 4606, 0, 4606, 0, 4606, 0, 0, 4606, 4607, 0, - 0, 4607, 0, 0, 4607, 0, 4607, 4607, 4607, 4607, - 4607, 0, 0, 4607, 4607, 0, 0, 0, 4607, 0, - 0, 4607, 4608, 0, 0, 0, 0, 0, 4608, 0, - 4608, 4608, 4608, 4608, 4608, 0, 0, 4608, 4608, 0, - 0, 0, 4608, 0, 0, 4608, 4609, 4609, 4609, 4609, - 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, - 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, - 4609, 4609, 4609, 4609, 4609, 4610, 4610, 4610, 4610, 4610, - 4610, 4610, 4610, 4610, 4610, 4610, 4610, 4610, 4610, 4610, + 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, + 4587, 4587, 4587, 4587, 4588, 0, 0, 0, 0, 0, + + 4588, 0, 0, 4588, 4588, 0, 4588, 0, 0, 0, + 0, 4588, 4588, 4588, 0, 4588, 4589, 0, 4589, 4589, + 4589, 4589, 4589, 0, 0, 0, 4589, 0, 4589, 0, + 0, 0, 4589, 4590, 0, 4590, 4590, 4590, 4590, 4590, + 0, 0, 0, 4590, 0, 4590, 4591, 0, 0, 4591, + 0, 0, 4591, 0, 4591, 4591, 4591, 4591, 4591, 0, + 0, 4591, 4591, 0, 4591, 0, 0, 0, 4591, 4592, + 4592, 4592, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4592, 0, 0, 0, + 4592, 0, 0, 0, 0, 0, 4592, 4593, 4593, 4593, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4593, 4593, 0, 0, 0, 4593, 4596, + 0, 0, 4596, 0, 4596, 4596, 4596, 0, 0, 4596, + 0, 4596, 4596, 4596, 4596, 4596, 0, 4596, 4596, 0, + 4596, 0, 0, 4596, 4597, 0, 0, 4597, 0, 4597, + 4597, 4597, 0, 0, 4597, 0, 4597, 4597, 4597, 4597, + 4597, 0, 4597, 4597, 0, 4597, 0, 0, 4597, 4598, + 0, 0, 4598, 0, 4598, 4598, 4598, 0, 0, 4598, + 0, 4598, 4598, 4598, 4598, 4598, 0, 4598, 4598, 0, + 4598, 0, 0, 4598, 4599, 4599, 0, 4599, 4599, 4599, - 4610, 0, 4610, 4610, 4610, 4610, 0, 4610, 4610, 4610, - 0, 4610, 4610, 4610, 4611, 4611, 4611, 4611, 4611, 4611, - 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, - 4611, 4611, 4611, 4611, 4611, 4611, 4611, 0, 4611, 4611, - 4611, 4611, 4611, 4612, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4612, 0, 4612, 0, - 0, 0, 0, 4612, 0, 0, 0, 4612, 4615, 4615, - 4615, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4615, 4615, 4615, 0, 0, 4615, 0, - 0, 0, 4615, 4616, 4616, 4616, 4616, 4616, 4616, 4616, - - 4616, 4616, 4616, 4616, 4616, 4616, 4616, 4616, 4616, 0, - 4616, 4616, 4616, 4616, 0, 4616, 4616, 4616, 0, 4616, - 4616, 4616, 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, - 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, - 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, - 4617, 4618, 0, 0, 4618, 4618, 4618, 4618, 4618, 4618, - 4618, 4618, 4618, 4618, 4618, 4618, 0, 4618, 4618, 4618, - 4618, 4618, 4618, 4618, 0, 4618, 4618, 4618, 4618, 4618, - 4619, 0, 0, 4619, 0, 0, 0, 0, 0, 0, - 0, 4619, 4619, 0, 0, 0, 4619, 0, 0, 0, - - 4619, 0, 0, 4619, 4620, 4620, 0, 4620, 4620, 4620, + 4599, 4599, 4599, 4599, 4599, 4599, 4599, 4599, 4599, 4599, + 0, 4599, 4599, 0, 4599, 4599, 4599, 4599, 0, 4599, + 4599, 4599, 4599, 4600, 4600, 4600, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4600, 0, 0, 0, 4600, 0, 0, 0, 0, 0, + 4600, 4601, 4601, 4601, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4601, 4601, 0, + 0, 0, 4601, 4604, 4604, 4604, 4604, 4604, 4604, 4604, + 4604, 4604, 4604, 4604, 4604, 4604, 4604, 4604, 4604, 4604, + 4604, 4604, 4604, 4604, 4604, 4604, 4604, 0, 4604, 4604, + + 4604, 4604, 4606, 4606, 4606, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4606, + 0, 0, 0, 4606, 0, 0, 0, 0, 0, 4606, + 4609, 4609, 4609, 0, 0, 0, 0, 0, 0, 0, + 4609, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4609, 4610, 4610, 4610, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4610, 4610, + 4610, 0, 0, 4610, 4611, 0, 0, 4611, 4611, 4611, + 4611, 4611, 4611, 4611, 4611, 0, 4611, 4611, 4611, 4611, + 0, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 0, 4611, + + 4611, 4611, 4611, 4612, 4612, 0, 4612, 4612, 4612, 4612, + 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, + 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, + 4612, 4612, 4613, 4613, 4613, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4613, + 0, 0, 0, 4613, 4614, 4614, 4614, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4614, 4614, 0, 0, 0, 4614, 4615, 0, 0, 4615, + 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, + 4615, 4615, 0, 4615, 4615, 4615, 4615, 4615, 4615, 4615, + + 0, 4615, 4615, 4615, 4615, 4617, 0, 0, 4617, 0, + 0, 4617, 0, 4617, 4617, 4617, 4617, 4617, 0, 0, + 0, 4617, 0, 4617, 0, 0, 0, 4617, 4618, 4618, + 0, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, + 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, + 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4619, 4619, 0, + 4619, 4619, 4619, 4619, 4619, 4619, 4619, 4619, 4619, 4619, + 4619, 4619, 4619, 4619, 4619, 4619, 4619, 4619, 4619, 4619, + 4619, 4619, 4619, 4619, 4619, 4619, 4620, 4620, 0, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, + 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, - 4620, 4620, 4620, 4621, 4621, 0, 4621, 4621, 4621, 4621, + 4620, 4620, 4620, 4620, 4620, 4621, 4621, 0, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, - 4621, 4621, 4622, 4622, 0, 4622, 4622, 4622, 4622, 4622, + 4621, 4621, 4621, 4621, 4622, 4622, 0, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, - 4622, 4623, 4623, 0, 4623, 4623, 4623, 4623, 4623, 4623, - + 4622, 4622, 4622, 4623, 4623, 0, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, - 4624, 4624, 0, 4624, 4624, 4624, 4624, 4624, 4624, 4624, + + 4623, 4623, 4624, 4624, 0, 4624, 4624, 4624, 4624, 4624, + 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, - 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4624, 4625, - 4625, 0, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, + 4624, 4625, 4625, 0, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, - 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4627, 4627, - 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, - 4627, 4627, 4627, 4627, 0, 4627, 4627, 4627, 4627, 0, + 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, 4625, + 4626, 4626, 0, 4626, 4626, 4626, 4626, 4626, 4626, 4626, + 4626, 4626, 4626, 4626, 4626, 4626, 4626, 4626, 4626, 4626, + 4626, 4626, 4626, 4626, 4626, 4626, 4626, 4626, 4626, 4627, + 4627, 0, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, - 4627, 4627, 4627, 0, 4627, 4627, 4627, 4629, 4629, 4629, + 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, + 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4628, 4628, + 0, 4628, 4628, 4628, 4628, 4628, 4628, 4628, 4628, 4628, + 4628, 4628, 4628, 4628, 4628, 4628, 4628, 4628, 4628, 4628, + 4628, 4628, 4628, 4628, 4628, 4628, 4628, 4629, 4629, 0, + 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, - 4629, 4629, 4629, 0, 4629, 4629, 4629, 4629, 0, 4629, - 4629, 4629, 0, 4629, 4629, 4629, 4630, 0, 0, 4630, - 0, 0, 4630, 0, 4630, 4630, 4630, 4630, 4630, 0, - 0, 0, 4630, 0, 4630, 0, 4630, 0, 0, 4630, - 4631, 4631, 4631, 0, 0, 0, 0, 0, 0, 0, - 4631, 0, 4631, 4631, 4631, 4631, 4631, 0, 0, 0, - 4631, 0, 4631, 0, 4631, 4632, 0, 4632, 4632, 4632, - 4632, 4632, 0, 0, 0, 4632, 0, 4632, 0, 4632, - - 4633, 0, 0, 4633, 0, 0, 4633, 0, 4633, 4633, - 4633, 4633, 4633, 0, 0, 4633, 4633, 0, 4633, 0, - 4633, 0, 0, 4633, 4634, 0, 0, 0, 0, 0, - 4634, 0, 4634, 4634, 4634, 4634, 4634, 0, 0, 4634, - 4634, 0, 0, 0, 4634, 0, 0, 4634, 4635, 4635, - 0, 0, 4635, 4635, 4635, 4635, 4635, 4635, 4635, 4635, - 0, 4635, 0, 4635, 4635, 4635, 4635, 4635, 4635, 4635, - 4635, 4635, 4635, 4635, 4635, 4635, 4635, 4636, 0, 0, - 0, 0, 4636, 0, 0, 4636, 4636, 0, 4636, 0, - 0, 0, 0, 4636, 4636, 4636, 0, 4636, 0, 0, - - 0, 4636, 4637, 4637, 0, 0, 4637, 4637, 4637, 4637, - 4637, 4637, 4637, 4637, 0, 4637, 4637, 4637, 4637, 4637, + 4629, 4629, 4629, 4629, 4629, 4629, 4630, 4630, 0, 4630, + 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, + 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, + + 4630, 4630, 4630, 4630, 4630, 4631, 4631, 0, 4631, 4631, + 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, + 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, + 4631, 4631, 4631, 4631, 4632, 4632, 0, 4632, 4632, 4632, + 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, + 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, + 4632, 4632, 4632, 4633, 4633, 0, 4633, 4633, 4633, 4633, + 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, + 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, + 4633, 4633, 4634, 4634, 0, 4634, 4634, 4634, 4634, 4634, + + 4634, 4634, 4634, 4634, 4634, 4634, 4634, 4634, 4634, 4634, + 4634, 4634, 4634, 4634, 4634, 4634, 4634, 4634, 4634, 4634, + 4634, 4635, 4635, 0, 4635, 4635, 4635, 4635, 4635, 4635, + 4635, 4635, 4635, 4635, 4635, 4635, 4635, 4635, 4635, 4635, + 4635, 4635, 4635, 4635, 4635, 4635, 4635, 4635, 4635, 4635, + 4636, 4636, 0, 4636, 4636, 4636, 4636, 4636, 4636, 4636, + 4636, 4636, 4636, 4636, 4636, 4636, 4636, 4636, 4636, 4636, + 4636, 4636, 4636, 4636, 4636, 4636, 4636, 4636, 4636, 4637, + 4637, 0, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, - 4637, 4638, 4638, 0, 4638, 4638, 4638, 4638, 4638, 4638, - 4638, 4638, 4638, 4638, 4638, 4638, 0, 4638, 4638, 0, - 4638, 4638, 4638, 4638, 0, 4638, 4638, 4638, 4638, 4638, + + 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4638, 4638, + 0, 4638, 4638, 4638, 4638, 4638, 4638, 4638, 4638, 4638, + 4638, 4638, 4638, 4638, 4638, 4638, 4638, 4638, 4638, 4638, + 4638, 4638, 4638, 4638, 4638, 4638, 4638, 4639, 4639, 0, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, 4639, - 4639, 4639, 4639, 0, 4639, 4639, 4639, 4639, 4639, 4643, - 4643, 4643, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 4643, 4643, 4643, 0, 0, 4643, - 0, 0, 0, 4643, 4644, 4644, 4644, 4644, 4644, 4644, - 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, - 0, 4644, 4644, 4644, 4644, 0, 4644, 4644, 4644, 0, - 4644, 4644, 4644, 4645, 4645, 0, 4645, 4645, 4645, 4645, + 4639, 4639, 4639, 4639, 4639, 4639, 4640, 0, 0, 4640, + 0, 0, 4640, 0, 4640, 4640, 4640, 4640, 4640, 0, + 0, 0, 4640, 0, 4640, 0, 0, 0, 4640, 4641, + 0, 4641, 4641, 4641, 4641, 4641, 0, 0, 0, 4641, + + 0, 4641, 4642, 0, 0, 0, 0, 0, 4642, 0, + 4642, 4642, 4642, 4642, 4642, 0, 0, 4642, 4642, 0, + 4642, 0, 0, 0, 4642, 4643, 0, 0, 4643, 0, + 0, 4643, 0, 4643, 4643, 4643, 4643, 4643, 0, 0, + 4643, 4643, 0, 4643, 0, 0, 0, 4643, 4644, 4644, + 0, 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, + 4644, 4644, 4644, 4644, 0, 4644, 4644, 0, 4644, 4644, + 4644, 4644, 0, 4644, 4644, 4644, 4644, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, - 4645, 4645, 4646, 4646, 4646, 4646, 4646, 4646, 4646, 4646, - 4646, 4646, 4646, 4646, 4646, 4646, 4646, 4646, 0, 4646, - 4646, 4646, 4646, 0, 4646, 4646, 4646, 0, 4646, 4646, - - 4646, 4647, 0, 0, 4647, 4647, 4647, 4647, 4647, 4647, - 4647, 4647, 4647, 4647, 4647, 4647, 0, 4647, 4647, 4647, - 4647, 4647, 4647, 4647, 0, 4647, 4647, 4647, 4647, 4647, - 4648, 0, 0, 4648, 0, 0, 0, 0, 0, 0, - 0, 4648, 4648, 0, 0, 0, 4648, 0, 0, 0, - 4648, 0, 0, 4648, 4649, 4649, 0, 4649, 4649, 4649, - 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, - 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, - 4649, 4649, 4649, 4650, 4650, 0, 4650, 4650, 4650, 4650, - 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, + 4645, 0, 4645, 4645, 4645, 4645, 4647, 4647, 4647, 0, + 0, 0, 0, 0, 0, 0, 4647, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4647, 4648, 4648, + 4648, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4648, 4648, 4648, 0, 0, 4648, + 4649, 0, 0, 4649, 4649, 4649, 4649, 4649, 4649, 4649, + 4649, 0, 4649, 4649, 4649, 4649, 0, 4649, 4649, 4649, + 4649, 4649, 4649, 4649, 0, 4649, 4649, 4649, 4649, 4650, + 4650, 0, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, - 4650, 4650, 4651, 4651, 0, 4651, 4651, 4651, 4651, 4651, - 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, + + 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, - 4651, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, - 4653, 4653, 4653, 4653, 4653, 4653, 4653, 0, 4653, 4653, - 4653, 4653, 0, 4653, 4653, 4653, 0, 4653, 4653, 4653, - 4655, 0, 0, 4655, 0, 0, 4655, 0, 4655, 4655, - 4655, 4655, 4655, 0, 0, 0, 4655, 0, 4655, 0, - 4655, 0, 0, 4655, 4656, 0, 4656, 4656, 4656, 4656, - - 4656, 0, 0, 0, 4656, 0, 4656, 0, 4656, 4657, - 0, 4657, 4657, 4657, 4657, 4657, 0, 0, 0, 4657, - 0, 4657, 0, 4657, 4658, 0, 0, 4658, 0, 0, - 4658, 0, 4658, 4658, 4658, 4658, 4658, 0, 0, 4658, - 4658, 0, 4658, 0, 4658, 0, 0, 4658, 4659, 0, - 0, 4659, 0, 0, 4659, 0, 4659, 4659, 4659, 4659, - 4659, 0, 0, 4659, 4659, 0, 0, 0, 4659, 0, - 0, 4659, 4660, 0, 0, 0, 0, 4660, 0, 0, - 4660, 4660, 0, 4660, 0, 0, 0, 0, 0, 4660, - 4660, 0, 4660, 0, 0, 0, 4660, 4661, 0, 0, - - 0, 0, 4661, 0, 0, 4661, 4661, 0, 4661, 0, - 0, 0, 0, 4661, 4661, 4661, 0, 4661, 0, 0, - 0, 4661, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, + 4651, 4651, 4651, 4651, 4651, 0, 4651, 4651, 4651, 4651, + 0, 4651, 4651, 4651, 4651, 4651, 4651, 4652, 4652, 0, + 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, + 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, + 4652, 4652, 4652, 4652, 4652, 4652, 4653, 4653, 4653, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4653, 4653, 0, 0, 0, 4653, 4654, 0, + 0, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, + + 4654, 4654, 4654, 4654, 0, 4654, 4654, 4654, 4654, 4654, + 4654, 4654, 0, 4654, 4654, 4654, 4654, 4655, 0, 0, + 4655, 0, 0, 0, 0, 0, 0, 0, 4655, 4655, + 0, 0, 0, 4655, 0, 0, 0, 0, 0, 4655, + 4656, 4656, 0, 4656, 4656, 4656, 4656, 4656, 4656, 4656, + 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, + 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4657, + 4657, 0, 4657, 4657, 4657, 4657, 4657, 4657, 4657, 4657, + 4657, 4657, 4657, 4657, 4657, 4657, 4657, 4657, 4657, 4657, + 4657, 4657, 4657, 4657, 4657, 4657, 4657, 4657, 4658, 4658, + + 0, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, + 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, + 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4659, 4659, 0, + 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, + 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, + 4659, 4659, 4659, 4659, 4659, 4659, 4660, 4660, 0, 4660, + 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, + 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, + 4660, 4660, 4660, 4660, 4660, 4661, 4661, 0, 4661, 4661, + 4661, 4661, 4661, 4661, 4661, 4661, 4661, 4661, 4661, 4661, + + 4661, 4661, 4661, 4661, 4661, 4661, 4661, 4661, 4661, 4661, + 4661, 4661, 4661, 4661, 4662, 4662, 0, 4662, 4662, 4662, + 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, - 4662, 4662, 4662, 4662, 4662, 0, 4662, 4662, 4662, 4662, - 4662, 4664, 4664, 4664, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4664, 4664, 4664, 0, - 0, 4664, 0, 0, 0, 4664, 4665, 4665, 0, 4665, + 4662, 4662, 4662, 4663, 4663, 0, 4663, 4663, 4663, 4663, + 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, + 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, + 4663, 4663, 4664, 4664, 0, 4664, 4664, 4664, 4664, 4664, + 4664, 4664, 4664, 4664, 4664, 4664, 4664, 4664, 4664, 4664, + 4664, 4664, 4664, 4664, 4664, 4664, 4664, 4664, 4664, 4664, + + 4664, 4665, 4665, 0, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, - - 4665, 4665, 4665, 4665, 4665, 4666, 0, 0, 4666, 4666, + 4666, 4666, 0, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, - 0, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 0, 4666, - 4666, 4666, 4666, 4666, 4667, 0, 0, 4667, 0, 0, - 0, 0, 0, 0, 0, 4667, 4667, 0, 0, 0, - 4667, 0, 0, 0, 4667, 0, 0, 4667, 4668, 4668, + 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4667, + 4667, 0, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, + 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, + 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4668, 4668, 0, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, + 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4669, 4669, 0, - 0, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 0, - - 4669, 0, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, - 4669, 4669, 4669, 4669, 4669, 4669, 4670, 0, 0, 0, - 0, 4670, 0, 0, 4670, 4670, 0, 4670, 0, 0, - 0, 0, 0, 4670, 4670, 0, 4670, 0, 0, 0, - 4670, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, - 4671, 4671, 4671, 4671, 4671, 4671, 4671, 0, 4671, 4671, - 4671, 4671, 0, 4671, 4671, 4671, 0, 4671, 4671, 4671, + 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, + 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, + 4669, 4669, 4669, 4669, 4669, 4669, 4670, 4670, 0, 4670, + 4670, 4670, 4670, 4670, 4670, 4670, 4670, 4670, 4670, 4670, + 4670, 4670, 4670, 4670, 4670, 4670, 4670, 4670, 4670, 4670, + 4670, 4670, 4670, 4670, 4670, 4671, 4671, 0, 4671, 4671, + 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, + 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, + + 4671, 4671, 4671, 4671, 4672, 4672, 0, 4672, 4672, 4672, 4672, 4672, 4672, 4672, 4672, 4672, 4672, 4672, 4672, 4672, - 4672, 4672, 4672, 4672, 4672, 4672, 0, 4672, 4672, 4672, - 4672, 0, 4672, 4672, 4672, 0, 4672, 4672, 4672, 4673, - + 4672, 4672, 4672, 4672, 4672, 4672, 4672, 4672, 4672, 4672, + 4672, 4672, 4672, 4673, 4673, 0, 4673, 4673, 4673, 4673, + 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, - 4673, 4673, 4673, 4673, 4673, 0, 4673, 4673, 4673, 4673, - 0, 4673, 4673, 4673, 0, 4673, 4673, 4673, 4674, 4674, + 4673, 4673, 4674, 4674, 0, 4674, 4674, 4674, 4674, 4674, 4674, 4674, 4674, 4674, 4674, 4674, 4674, 4674, 4674, 4674, - 4674, 4674, 4674, 4674, 0, 4674, 4674, 4674, 4674, 0, - 4674, 4674, 4674, 0, 4674, 4674, 4674, 4675, 4675, 0, - 0, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 0, - 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, - 4675, 4675, 4675, 4675, 4675, 4675, 4676, 4676, 0, 0, - 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 0, 4676, + 4674, 4674, 4674, 4674, 4674, 4674, 4674, 4674, 4674, 4674, + 4674, 4675, 4675, 0, 4675, 4675, 4675, 4675, 4675, 4675, + 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, + 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, + 4676, 4676, 0, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, - 4676, 4676, 4676, 4676, 4676, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - - 3918, 3918, 3918 + 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4677, + 4677, 0, 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, + 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, + 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4678, 4678, + 0, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, + 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, + + 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4679, 4679, 0, + 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, + 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, + 4679, 4679, 4679, 4679, 4679, 4679, 4680, 4680, 0, 4680, + 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, + 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, + 4680, 4680, 4680, 4680, 4680, 4681, 4681, 0, 4681, 4681, + 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, + 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, + 4681, 4681, 4681, 4681, 4682, 4682, 0, 4682, 4682, 4682, + + 4682, 4682, 4682, 4682, 4682, 4682, 4682, 4682, 4682, 4682, + 4682, 4682, 4682, 4682, 4682, 4682, 4682, 4682, 4682, 4682, + 4682, 4682, 4682, 4683, 4683, 0, 4683, 4683, 4683, 4683, + 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, + 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, + 4683, 4683, 4684, 4684, 0, 4684, 4684, 4684, 4684, 4684, + 4684, 4684, 4684, 4684, 4684, 4684, 4684, 4684, 4684, 4684, + 4684, 4684, 4684, 4684, 4684, 4684, 4684, 4684, 4684, 4684, + 4684, 4685, 4685, 0, 4685, 4685, 4685, 4685, 4685, 4685, + 4685, 4685, 4685, 4685, 4685, 4685, 4685, 4685, 4685, 4685, + + 4685, 4685, 4685, 4685, 4685, 4685, 4685, 4685, 4685, 4685, + 4686, 4686, 0, 4686, 4686, 4686, 4686, 4686, 4686, 4686, + 4686, 4686, 4686, 4686, 4686, 4686, 4686, 4686, 4686, 4686, + 4686, 4686, 4686, 4686, 4686, 4686, 4686, 4686, 4686, 4687, + 4687, 0, 4687, 4687, 4687, 4687, 4687, 4687, 4687, 4687, + 4687, 4687, 4687, 4687, 4687, 4687, 4687, 4687, 4687, 4687, + 4687, 4687, 4687, 4687, 4687, 4687, 4687, 4687, 4688, 4688, + 0, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, + 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, + 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4689, 4689, 0, + + 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, + 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, + 4689, 4689, 4689, 4689, 4689, 4689, 4690, 4690, 0, 4690, + 4690, 4690, 4690, 4690, 4690, 4690, 4690, 4690, 4690, 4690, + 4690, 4690, 4690, 4690, 4690, 4690, 4690, 4690, 4690, 4690, + 4690, 4690, 4690, 4690, 4690, 4691, 4691, 0, 4691, 4691, + 4691, 4691, 4691, 4691, 4691, 4691, 4691, 4691, 4691, 4691, + 4691, 4691, 4691, 4691, 4691, 4691, 4691, 4691, 4691, 4691, + 4691, 4691, 4691, 4691, 4692, 4692, 0, 4692, 4692, 4692, + 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4692, + + 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4692, + 4692, 4692, 4692, 4693, 4693, 0, 4693, 4693, 4693, 4693, + 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, + 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, + 4693, 4693, 4694, 0, 0, 4694, 0, 0, 4694, 0, + 4694, 4694, 4694, 4694, 4694, 0, 0, 0, 4694, 0, + 4694, 0, 0, 0, 4694, 4695, 0, 4695, 4695, 4695, + 4695, 4695, 0, 0, 0, 4695, 0, 4695, 4696, 4696, + 0, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, + 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, + + 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4697, 0, 0, + 0, 0, 0, 4697, 0, 4697, 4697, 4697, 4697, 4697, + 0, 0, 4697, 4697, 0, 0, 0, 0, 0, 4697, + 4698, 0, 0, 0, 0, 0, 4698, 0, 4698, 4698, + 4698, 4698, 4698, 0, 0, 4698, 4698, 0, 4698, 0, + 0, 0, 4698, 4699, 0, 0, 0, 0, 0, 4699, + 0, 4699, 4699, 4699, 4699, 4699, 0, 0, 4699, 4699, + 0, 4699, 0, 0, 0, 4699, 4700, 0, 0, 0, + 0, 0, 4700, 0, 4700, 4700, 4700, 4700, 4700, 0, + 0, 4700, 4700, 0, 4700, 0, 0, 0, 4700, 4701, + + 0, 0, 4701, 0, 0, 4701, 0, 4701, 4701, 4701, + 4701, 4701, 0, 0, 4701, 4701, 0, 4701, 0, 0, + 0, 4701, 4702, 4702, 0, 4702, 4702, 4702, 4702, 4702, + 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4702, 0, 4702, + 4702, 0, 4702, 4702, 4702, 4702, 0, 4702, 4702, 4702, + 4702, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, + 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, + 4703, 4703, 4703, 4703, 4703, 0, 4703, 4703, 4703, 4703, + 4705, 4705, 4705, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4705, 4705, 4705, 0, + + 0, 4705, 4706, 4706, 0, 4706, 4706, 4706, 4706, 4706, + 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, + 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, + 4706, 4707, 0, 0, 4707, 4707, 4707, 4707, 4707, 4707, + 4707, 4707, 0, 4707, 4707, 4707, 4707, 0, 4707, 4707, + 4707, 4707, 4707, 4707, 4707, 0, 4707, 4707, 4707, 4707, + 4708, 4708, 0, 4708, 4708, 4708, 4708, 4708, 4708, 4708, + 4708, 4708, 4708, 4708, 4708, 4708, 4708, 4708, 4708, 4708, + 4708, 4708, 4708, 4708, 4708, 4708, 4708, 4708, 4708, 4709, + 4709, 4709, 4709, 4709, 4709, 4709, 4709, 4709, 4709, 4709, + + 4709, 4709, 4709, 4709, 4709, 4709, 0, 4709, 4709, 4709, + 4709, 0, 4709, 4709, 4709, 4709, 4709, 4709, 4710, 0, + 0, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, + 4710, 4710, 4710, 4710, 0, 4710, 4710, 4710, 4710, 4710, + 4710, 4710, 0, 4710, 4710, 4710, 4710, 4711, 0, 0, + 4711, 0, 0, 0, 0, 0, 0, 0, 4711, 4711, + 0, 0, 0, 4711, 0, 0, 0, 0, 0, 4711, + 4712, 4712, 0, 4712, 4712, 4712, 4712, 4712, 4712, 4712, + 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, + 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4713, + + 4713, 0, 4713, 4713, 4713, 4713, 4713, 4713, 4713, 4713, + 4713, 4713, 4713, 4713, 4713, 4713, 4713, 4713, 4713, 4713, + 4713, 4713, 4713, 4713, 4713, 4713, 4713, 4713, 4714, 4714, + 0, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, + 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, + 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4715, 4715, 0, + 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, + 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, + 4715, 4715, 4715, 4715, 4715, 4715, 4716, 4716, 0, 4716, + 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, + + 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, + 4716, 4716, 4716, 4716, 4716, 4717, 4717, 0, 4717, 4717, + 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, + 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, + 4717, 4717, 4717, 4717, 4718, 4718, 0, 4718, 4718, 4718, + 4718, 4718, 4718, 4718, 4718, 4718, 4718, 4718, 4718, 4718, + 4718, 4718, 4718, 4718, 4718, 4718, 4718, 4718, 4718, 4718, + 4718, 4718, 4718, 4719, 4719, 0, 4719, 4719, 4719, 4719, + 4719, 4719, 4719, 4719, 4719, 4719, 4719, 4719, 4719, 4719, + 4719, 4719, 4719, 4719, 4719, 4719, 4719, 4719, 4719, 4719, + + 4719, 4719, 4720, 4720, 0, 4720, 4720, 4720, 4720, 4720, + 4720, 4720, 4720, 4720, 4720, 4720, 4720, 4720, 4720, 4720, + 4720, 4720, 4720, 4720, 4720, 4720, 4720, 4720, 4720, 4720, + 4720, 4721, 4721, 0, 4721, 4721, 4721, 4721, 4721, 4721, + 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, + 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, + 4722, 4722, 0, 4722, 4722, 4722, 4722, 4722, 4722, 4722, + 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, + 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4723, + 4723, 0, 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, + + 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, + 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4724, 4724, + 0, 4724, 4724, 4724, 4724, 4724, 4724, 4724, 4724, 4724, + 4724, 4724, 4724, 4724, 4724, 4724, 4724, 4724, 4724, 4724, + 4724, 4724, 4724, 4724, 4724, 4724, 4724, 4725, 4725, 0, + 4725, 4725, 4725, 4725, 4725, 4725, 4725, 4725, 4725, 4725, + 4725, 4725, 4725, 4725, 4725, 4725, 4725, 4725, 4725, 4725, + 4725, 4725, 4725, 4725, 4725, 4725, 4726, 4726, 0, 4726, + 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, + 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, + + 4726, 4726, 4726, 4726, 4726, 4727, 4727, 0, 4727, 4727, + 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, + 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, + 4727, 4727, 4727, 4727, 4728, 4728, 0, 4728, 4728, 4728, + 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, + 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, + 4728, 4728, 4728, 4729, 4729, 0, 4729, 4729, 4729, 4729, + 4729, 4729, 4729, 4729, 4729, 4729, 4729, 4729, 4729, 4729, + 4729, 4729, 4729, 4729, 4729, 4729, 4729, 4729, 4729, 4729, + 4729, 4729, 4730, 4730, 0, 4730, 4730, 4730, 4730, 4730, + + 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, + 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, + 4730, 4731, 4731, 0, 4731, 4731, 4731, 4731, 4731, 4731, + 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, + 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, + 4732, 4732, 0, 4732, 4732, 4732, 4732, 4732, 4732, 4732, + 4732, 4732, 4732, 4732, 4732, 4732, 4732, 4732, 4732, 4732, + 4732, 4732, 4732, 4732, 4732, 4732, 4732, 4732, 4732, 4733, + 4733, 0, 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, + 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, + + 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4734, 4734, + 0, 4734, 4734, 4734, 4734, 4734, 4734, 4734, 4734, 4734, + 4734, 4734, 4734, 4734, 4734, 4734, 4734, 4734, 4734, 4734, + 4734, 4734, 4734, 4734, 4734, 4734, 4734, 4735, 4735, 0, + 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, + 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, + 4735, 4735, 4735, 4735, 4735, 4735, 4736, 4736, 0, 4736, + 4736, 4736, 4736, 4736, 4736, 4736, 4736, 4736, 4736, 4736, + 4736, 4736, 4736, 4736, 4736, 4736, 4736, 4736, 4736, 4736, + 4736, 4736, 4736, 4736, 4736, 4737, 4737, 0, 4737, 4737, + + 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, + 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, + 4737, 4737, 4737, 4737, 4738, 4738, 0, 4738, 4738, 4738, + 4738, 4738, 4738, 4738, 4738, 4738, 4738, 4738, 4738, 4738, + 4738, 4738, 4738, 4738, 4738, 4738, 4738, 4738, 4738, 4738, + 4738, 4738, 4738, 4739, 4739, 0, 4739, 4739, 4739, 4739, + 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, + 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, + 4739, 4739, 4740, 4740, 0, 4740, 4740, 4740, 4740, 4740, + 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, + + 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, + 4740, 4741, 0, 0, 4741, 0, 0, 4741, 0, 4741, + 4741, 4741, 4741, 4741, 0, 0, 0, 4741, 0, 4741, + 0, 0, 0, 4741, 4742, 0, 4742, 4742, 4742, 4742, + 4742, 0, 0, 0, 4742, 0, 4742, 4743, 4743, 0, + 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, + 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, + 4743, 4743, 4743, 4743, 4743, 4743, 4744, 4744, 0, 4744, + 4744, 4744, 4744, 4744, 4744, 4744, 4744, 4744, 4744, 4744, + 4744, 4744, 4744, 4744, 4744, 4744, 4744, 4744, 4744, 4744, + + 4744, 4744, 4744, 4744, 4744, 4745, 4745, 0, 4745, 4745, + 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, + 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, + 4745, 4745, 4745, 4745, 4746, 0, 0, 0, 0, 0, + 4746, 0, 4746, 4746, 4746, 4746, 4746, 0, 0, 4746, + 4746, 0, 4746, 0, 0, 0, 4746, 4747, 0, 0, + 4747, 0, 0, 4747, 0, 4747, 4747, 4747, 4747, 4747, + 0, 0, 4747, 4747, 0, 4747, 0, 0, 0, 4747, + 4748, 0, 0, 0, 0, 0, 4748, 0, 4748, 4748, + 4748, 4748, 4748, 0, 0, 4748, 4748, 0, 0, 0, + + 0, 0, 4748, 4749, 0, 0, 4749, 0, 0, 4749, + 0, 4749, 4749, 4749, 4749, 4749, 0, 0, 4749, 4749, + 0, 4749, 0, 0, 0, 4749, 4750, 4750, 0, 4750, + 4750, 4750, 4750, 4750, 4750, 4750, 4750, 4750, 4750, 4750, + 4750, 4750, 4750, 4750, 4750, 4750, 4750, 4750, 4750, 4750, + 4750, 4750, 4750, 4750, 4750, 4751, 4751, 0, 4751, 4751, + 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, + 4751, 0, 4751, 4751, 0, 4751, 4751, 4751, 4751, 0, + 4751, 4751, 4751, 4751, 4752, 4752, 4752, 4752, 4752, 4752, + 4752, 4752, 4752, 4752, 4752, 4752, 4752, 4752, 4752, 4752, + + 4752, 4752, 4752, 4752, 4752, 4752, 4752, 4752, 0, 4752, + 4752, 4752, 4752, 4753, 4753, 4753, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4753, + 4753, 4753, 0, 0, 4753, 4754, 4754, 0, 4754, 4754, + 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, + 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, + 4754, 4754, 4754, 4754, 4755, 0, 0, 4755, 4755, 4755, + 4755, 4755, 4755, 4755, 4755, 0, 4755, 4755, 4755, 4755, + 0, 4755, 4755, 4755, 4755, 4755, 4755, 4755, 0, 4755, + 4755, 4755, 4755, 4756, 0, 0, 4756, 4756, 4756, 4756, + + 4756, 4756, 4756, 4756, 4756, 4756, 4756, 4756, 4756, 0, + 4756, 4756, 4756, 4756, 4756, 4756, 4756, 0, 4756, 4756, + 4756, 4756, 4757, 0, 0, 4757, 0, 0, 0, 0, + 0, 0, 0, 4757, 4757, 0, 0, 0, 4757, 0, + 0, 0, 0, 0, 4757, 4758, 4758, 0, 4758, 4758, + 4758, 4758, 4758, 4758, 4758, 4758, 4758, 4758, 4758, 4758, + 4758, 4758, 4758, 4758, 4758, 4758, 4758, 4758, 4758, 4758, + 4758, 4758, 4758, 4758, 4759, 4759, 0, 4759, 4759, 4759, + 4759, 4759, 4759, 4759, 4759, 4759, 4759, 4759, 4759, 4759, + 4759, 4759, 4759, 4759, 4759, 4759, 4759, 4759, 4759, 4759, + + 4759, 4759, 4759, 4760, 4760, 0, 4760, 4760, 4760, 4760, + 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, + 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, + 4760, 4760, 4761, 4761, 0, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4762, 4762, 0, 4762, 4762, 4762, 4762, 4762, 4762, + 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, + 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, + 4763, 4763, 0, 4763, 4763, 4763, 4763, 4763, 4763, 4763, + + 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, + 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4764, + 4764, 0, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, + 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, + 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4765, 4765, + 0, 4765, 4765, 4765, 4765, 4765, 4765, 4765, 4765, 4765, + 4765, 4765, 4765, 4765, 4765, 4765, 4765, 4765, 4765, 4765, + 4765, 4765, 4765, 4765, 4765, 4765, 4765, 4766, 4766, 0, + 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, + 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, + + 4766, 4766, 4766, 4766, 4766, 4766, 4767, 4767, 0, 4767, + 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, + 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, + 4767, 4767, 4767, 4767, 4767, 4768, 4768, 0, 4768, 4768, + 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, + 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, + 4768, 4768, 4768, 4768, 4769, 4769, 0, 4769, 4769, 4769, + 4769, 4769, 4769, 4769, 4769, 4769, 4769, 4769, 4769, 4769, + 4769, 4769, 4769, 4769, 4769, 4769, 4769, 4769, 4769, 4769, + 4769, 4769, 4769, 4770, 4770, 0, 4770, 4770, 4770, 4770, + + 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, + 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, + 4770, 4770, 4771, 4771, 0, 4771, 4771, 4771, 4771, 4771, + 4771, 4771, 4771, 4771, 4771, 4771, 4771, 4771, 4771, 4771, + 4771, 4771, 4771, 4771, 4771, 4771, 4771, 4771, 4771, 4771, + 4771, 4772, 4772, 0, 4772, 4772, 4772, 4772, 4772, 4772, + 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, + 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, + 4773, 4773, 0, 4773, 4773, 4773, 4773, 4773, 4773, 4773, + 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, + + 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4774, + 4774, 0, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, + 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, + 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4775, 0, + 0, 4775, 0, 0, 4775, 0, 4775, 4775, 4775, 4775, + 4775, 0, 0, 0, 4775, 0, 4775, 0, 0, 0, + 4775, 4776, 0, 4776, 4776, 4776, 4776, 4776, 0, 0, + 0, 4776, 0, 4776, 4777, 4777, 0, 4777, 4777, 4777, + 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, + 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, + + 4777, 4777, 4777, 4778, 0, 0, 0, 0, 0, 4778, + 0, 4778, 4778, 4778, 4778, 4778, 0, 0, 4778, 4778, + 0, 0, 0, 0, 0, 4778, 4779, 0, 0, 4779, + 0, 0, 4779, 0, 4779, 4779, 4779, 4779, 4779, 0, + 0, 4779, 4779, 0, 4779, 0, 0, 0, 4779, 4780, + 0, 0, 0, 0, 0, 4780, 0, 4780, 4780, 4780, + 4780, 4780, 0, 0, 4780, 4780, 0, 4780, 0, 0, + 0, 4780, 4781, 0, 0, 4781, 0, 0, 4781, 0, + 4781, 4781, 4781, 4781, 4781, 0, 0, 4781, 4781, 0, + 0, 0, 0, 0, 4781, 4782, 0, 0, 4782, 0, + + 0, 4782, 0, 4782, 4782, 4782, 4782, 4782, 0, 0, + 4782, 4782, 0, 4782, 0, 0, 0, 4782, 4783, 4783, + 0, 4783, 4783, 4783, 4783, 4783, 4783, 4783, 4783, 4783, + 4783, 4783, 4783, 4783, 4783, 4783, 4783, 4783, 4783, 4783, + 4783, 4783, 4783, 4783, 4783, 4783, 4783, 4784, 4784, 0, + 4784, 4784, 4784, 4784, 4784, 4784, 4784, 4784, 4784, 4784, + 4784, 4784, 4784, 0, 4784, 4784, 0, 4784, 4784, 4784, + 4784, 0, 4784, 4784, 4784, 4784, 4785, 4785, 4785, 4785, + 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, + 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, + + 0, 4785, 4785, 4785, 4785, 4787, 4787, 4787, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4787, 4787, 4787, 0, 0, 4787, 4788, 0, 0, + 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 0, 4788, + 4788, 4788, 4788, 0, 4788, 4788, 4788, 4788, 4788, 4788, + 4788, 0, 4788, 4788, 4788, 4788, 4789, 4789, 4789, 4789, + 4789, 4789, 4789, 4789, 4789, 4789, 4789, 4789, 4789, 4789, + 4789, 4789, 4789, 4789, 4789, 4789, 4789, 4789, 4789, 4789, + 4789, 4789, 4789, 4789, 4789, 4790, 0, 0, 4790, 4790, + 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, + + 4790, 0, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 0, + 4790, 4790, 4790, 4790, 4791, 0, 0, 4791, 0, 0, + 0, 0, 0, 0, 0, 4791, 4791, 0, 0, 0, + 4791, 0, 0, 0, 0, 0, 4791, 4792, 4792, 0, + 4792, 4792, 4792, 4792, 4792, 4792, 4792, 4792, 4792, 4792, + 4792, 4792, 4792, 4792, 4792, 4792, 4792, 4792, 4792, 4792, + 4792, 4792, 4792, 4792, 4792, 4792, 4793, 4793, 0, 4793, + 4793, 4793, 4793, 4793, 4793, 4793, 4793, 4793, 4793, 4793, + 4793, 4793, 4793, 4793, 4793, 4793, 4793, 4793, 4793, 4793, + 4793, 4793, 4793, 4793, 4793, 4794, 4794, 0, 4794, 4794, + + 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, + 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, + 4794, 4794, 4794, 4794, 4795, 4795, 0, 4795, 4795, 4795, + 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, + 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, + 4795, 4795, 4795, 4796, 4796, 0, 4796, 4796, 4796, 4796, + 4796, 4796, 4796, 4796, 4796, 4796, 4796, 4796, 4796, 4796, + 4796, 4796, 4796, 4796, 4796, 4796, 4796, 4796, 4796, 4796, + 4796, 4796, 4797, 4797, 0, 4797, 4797, 4797, 4797, 4797, + 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, + + 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, + 4797, 4798, 4798, 0, 4798, 4798, 4798, 4798, 4798, 4798, + 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, + 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, + 4799, 4799, 0, 4799, 4799, 4799, 4799, 4799, 4799, 4799, + 4799, 4799, 4799, 4799, 4799, 4799, 4799, 4799, 4799, 4799, + 4799, 4799, 4799, 4799, 4799, 4799, 4799, 4799, 4799, 4800, + 4800, 0, 4800, 4800, 4800, 4800, 4800, 4800, 4800, 4800, + 4800, 4800, 4800, 4800, 4800, 4800, 4800, 4800, 4800, 4800, + 4800, 4800, 4800, 4800, 4800, 4800, 4800, 4800, 4801, 4801, + + 0, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, + 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, + 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4802, 4802, 0, + 4802, 4802, 4802, 4802, 4802, 4802, 4802, 4802, 4802, 4802, + 4802, 4802, 4802, 4802, 4802, 4802, 4802, 4802, 4802, 4802, + 4802, 4802, 4802, 4802, 4802, 4802, 4804, 4804, 4804, 4804, + 4804, 4804, 4804, 4804, 4804, 4804, 4804, 4804, 4804, 4804, + 4804, 4804, 4804, 0, 4804, 4804, 4804, 4804, 0, 4804, + 4804, 4804, 4804, 4804, 4804, 4805, 4805, 4805, 4805, 4805, + 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, + + 4805, 4805, 0, 4805, 4805, 4805, 4805, 0, 4805, 4805, + 4805, 4805, 4805, 4805, 4806, 0, 0, 4806, 0, 0, + 4806, 0, 4806, 4806, 4806, 4806, 4806, 0, 0, 0, + 4806, 0, 4806, 0, 0, 0, 4806, 4807, 0, 4807, + 4807, 4807, 4807, 4807, 0, 0, 0, 4807, 0, 4807, + 4808, 0, 0, 4808, 0, 0, 4808, 0, 4808, 4808, + 4808, 4808, 4808, 0, 0, 4808, 4808, 0, 4808, 0, + 0, 0, 4808, 4809, 0, 0, 4809, 0, 0, 4809, + 0, 4809, 4809, 4809, 4809, 4809, 0, 0, 4809, 4809, + 0, 0, 0, 0, 0, 4809, 4810, 0, 0, 0, + + 0, 0, 4810, 0, 4810, 4810, 4810, 4810, 4810, 0, + 0, 4810, 4810, 0, 0, 0, 0, 0, 4810, 4811, + 4811, 4811, 4811, 4811, 4811, 4811, 4811, 4811, 4811, 4811, + 4811, 4811, 4811, 4811, 4811, 4811, 4811, 4811, 4811, 4811, + 4811, 4811, 4811, 4811, 4811, 4811, 4811, 4811, 4812, 4812, + 4812, 4812, 4812, 4812, 4812, 4812, 4812, 4812, 4812, 4812, + 4812, 4812, 4812, 4812, 4812, 0, 4812, 4812, 4812, 4812, + 0, 4812, 4812, 4812, 4812, 4812, 4812, 4813, 4813, 4813, + 4813, 4813, 4813, 4813, 4813, 4813, 4813, 4813, 4813, 4813, + 4813, 4813, 4813, 4813, 4813, 4813, 4813, 4813, 4813, 4813, + + 4813, 0, 4813, 4813, 4813, 4813, 4817, 4817, 4817, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4817, 4817, 4817, 0, 0, 4817, 4818, 4818, + 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, + 4818, 4818, 4818, 4818, 4818, 0, 4818, 4818, 4818, 4818, + 0, 4818, 4818, 4818, 4818, 4818, 4818, 4819, 4819, 4819, + 4819, 4819, 4819, 4819, 4819, 4819, 4819, 4819, 4819, 4819, + 4819, 4819, 4819, 4819, 4819, 4819, 4819, 4819, 4819, 4819, + 4819, 4819, 4819, 4819, 4819, 4819, 4820, 0, 0, 4820, + 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, + + 4820, 4820, 0, 4820, 4820, 4820, 4820, 4820, 4820, 4820, + 0, 4820, 4820, 4820, 4820, 4821, 0, 0, 4821, 0, + 0, 0, 0, 0, 0, 0, 4821, 4821, 0, 0, + 0, 4821, 0, 0, 0, 0, 0, 4821, 4822, 4822, + 0, 4822, 4822, 4822, 4822, 4822, 4822, 4822, 4822, 4822, + 4822, 4822, 4822, 4822, 4822, 4822, 4822, 4822, 4822, 4822, + 4822, 4822, 4822, 4822, 4822, 4822, 4822, 4823, 4823, 0, + 4823, 4823, 4823, 4823, 4823, 4823, 4823, 4823, 4823, 4823, + 4823, 4823, 4823, 4823, 4823, 4823, 4823, 4823, 4823, 4823, + 4823, 4823, 4823, 4823, 4823, 4823, 4824, 4824, 0, 4824, + + 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, + 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, + 4824, 4824, 4824, 4824, 4824, 4825, 4825, 0, 4825, 4825, + 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, + 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, + 4825, 4825, 4825, 4825, 4826, 4826, 0, 4826, 4826, 4826, + 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, + 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, + 4826, 4826, 4826, 4827, 4827, 0, 4827, 4827, 4827, 4827, + 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, + + 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, + 4827, 4827, 4829, 4829, 4829, 4829, 4829, 4829, 4829, 4829, + 4829, 4829, 4829, 4829, 4829, 4829, 4829, 4829, 4829, 0, + 4829, 4829, 4829, 4829, 0, 4829, 4829, 4829, 4829, 4829, + 4829, 4831, 4831, 4831, 4831, 4831, 4831, 4831, 4831, 4831, + 4831, 4831, 4831, 4831, 4831, 4831, 4831, 4831, 0, 4831, + 4831, 4831, 4831, 0, 4831, 4831, 4831, 4831, 4831, 4831, + 4832, 0, 0, 4832, 0, 0, 4832, 0, 4832, 4832, + 4832, 4832, 4832, 0, 0, 0, 4832, 0, 4832, 0, + 0, 0, 4832, 4833, 4833, 4833, 0, 0, 0, 0, + + 0, 0, 0, 0, 4833, 0, 4833, 4833, 4833, 4833, + 4833, 0, 0, 0, 4833, 0, 4833, 4834, 0, 4834, + 4834, 4834, 4834, 4834, 0, 0, 0, 4834, 0, 4834, + 4835, 0, 0, 4835, 0, 0, 4835, 0, 4835, 4835, + 4835, 4835, 4835, 0, 0, 4835, 4835, 0, 4835, 0, + 0, 0, 4835, 4836, 0, 0, 0, 0, 0, 4836, + 0, 4836, 4836, 4836, 4836, 4836, 0, 0, 4836, 4836, + 0, 0, 0, 0, 0, 4836, 4837, 4837, 0, 0, + 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 0, + 4837, 0, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, + + 4837, 4837, 4837, 4837, 4837, 4838, 0, 0, 0, 0, + 0, 4838, 0, 0, 4838, 4838, 0, 4838, 0, 0, + 0, 0, 4838, 4838, 4838, 0, 4838, 4839, 4839, 0, + 0, 4839, 4839, 4839, 4839, 4839, 4839, 4839, 4839, 4839, + 0, 4839, 4839, 4839, 4839, 4839, 4839, 4839, 4839, 4839, + 4839, 4839, 4839, 4839, 4839, 4839, 4840, 4840, 0, 0, + 4840, 4840, 4840, 4840, 4840, 4840, 4840, 4840, 4840, 0, + 4840, 4840, 4840, 4840, 4840, 4840, 4840, 4840, 4840, 4840, + 4840, 4840, 4840, 4840, 4840, 4841, 4841, 0, 0, 4841, + 4841, 4841, 4841, 4841, 4841, 4841, 4841, 4841, 0, 4841, + + 4841, 4841, 4841, 4841, 4841, 4841, 4841, 4841, 4841, 4841, + 4841, 4841, 4841, 4841, 4842, 4842, 0, 4842, 4842, 4842, + 4842, 4842, 4842, 4842, 4842, 4842, 4842, 4842, 4842, 4842, + 0, 4842, 4842, 0, 4842, 4842, 4842, 4842, 0, 4842, + 4842, 4842, 4842, 4843, 4843, 4843, 4843, 4843, 4843, 4843, + 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, + 4843, 4843, 4843, 4843, 4843, 4843, 4843, 0, 4843, 4843, + 4843, 4843, 4847, 4847, 4847, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4847, 4847, + 4847, 0, 0, 4847, 4848, 4848, 4848, 4848, 4848, 4848, + + 4848, 4848, 4848, 4848, 4848, 4848, 4848, 4848, 4848, 4848, + 4848, 0, 4848, 4848, 4848, 4848, 0, 4848, 4848, 4848, + 4848, 4848, 4848, 4849, 4849, 0, 4849, 4849, 4849, 4849, + 4849, 4849, 4849, 4849, 4849, 4849, 4849, 4849, 4849, 4849, + 4849, 4849, 4849, 4849, 4849, 4849, 4849, 4849, 4849, 4849, + 4849, 4849, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, + 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 0, + 4850, 4850, 4850, 4850, 0, 4850, 4850, 4850, 4850, 4850, + 4850, 4851, 0, 0, 4851, 4851, 4851, 4851, 4851, 4851, + 4851, 4851, 4851, 4851, 4851, 4851, 4851, 0, 4851, 4851, + + 4851, 4851, 4851, 4851, 4851, 0, 4851, 4851, 4851, 4851, + 4852, 0, 0, 4852, 0, 0, 0, 0, 0, 0, + 0, 4852, 4852, 0, 0, 0, 4852, 0, 0, 0, + 0, 0, 4852, 4853, 4853, 0, 4853, 4853, 4853, 4853, + 4853, 4853, 4853, 4853, 4853, 4853, 4853, 4853, 4853, 4853, + 4853, 4853, 4853, 4853, 4853, 4853, 4853, 4853, 4853, 4853, + 4853, 4853, 4854, 4854, 0, 4854, 4854, 4854, 4854, 4854, + 4854, 4854, 4854, 4854, 4854, 4854, 4854, 4854, 4854, 4854, + 4854, 4854, 4854, 4854, 4854, 4854, 4854, 4854, 4854, 4854, + 4854, 4855, 4855, 0, 4855, 4855, 4855, 4855, 4855, 4855, + + 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, + 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, + 4857, 4857, 4857, 4857, 4857, 4857, 4857, 4857, 4857, 4857, + 4857, 4857, 4857, 4857, 4857, 4857, 4857, 0, 4857, 4857, + 4857, 4857, 0, 4857, 4857, 4857, 4857, 4857, 4857, 4859, + 0, 0, 4859, 0, 0, 4859, 0, 4859, 4859, 4859, + 4859, 4859, 0, 0, 0, 4859, 0, 4859, 0, 0, + 0, 4859, 4860, 0, 4860, 4860, 4860, 4860, 4860, 0, + 0, 0, 4860, 0, 4860, 4861, 0, 4861, 4861, 4861, + 4861, 4861, 0, 0, 0, 4861, 0, 4861, 4862, 0, + + 0, 4862, 0, 0, 4862, 0, 4862, 4862, 4862, 4862, + 4862, 0, 0, 4862, 4862, 0, 4862, 0, 0, 0, + 4862, 4863, 0, 0, 4863, 0, 0, 4863, 0, 4863, + 4863, 4863, 4863, 4863, 0, 0, 4863, 4863, 0, 0, + 0, 0, 0, 4863, 4864, 0, 0, 0, 0, 0, + 4864, 0, 0, 4864, 4864, 0, 4864, 0, 0, 0, + 0, 0, 4864, 4864, 0, 4864, 4865, 0, 0, 0, + 0, 0, 4865, 0, 0, 4865, 4865, 0, 4865, 0, + 0, 0, 0, 4865, 4865, 4865, 0, 4865, 4866, 4866, + 0, 0, 4866, 4866, 4866, 4866, 4866, 4866, 4866, 4866, + + 4866, 0, 4866, 4866, 4866, 4866, 4866, 4866, 4866, 4866, + 4866, 4866, 4866, 4866, 4866, 4866, 4866, 4867, 4867, 4867, + 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, + 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, + 4867, 0, 4867, 4867, 4867, 4867, 4869, 4869, 4869, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4869, 4869, 4869, 0, 0, 4869, 4870, 4870, + 0, 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, + 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, + 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4871, 0, 0, + + 4871, 4871, 4871, 4871, 4871, 4871, 4871, 4871, 4871, 4871, + 4871, 4871, 4871, 0, 4871, 4871, 4871, 4871, 4871, 4871, + 4871, 0, 4871, 4871, 4871, 4871, 4872, 0, 0, 4872, + 0, 0, 0, 0, 0, 0, 0, 4872, 4872, 0, + 0, 0, 4872, 0, 0, 0, 0, 0, 4872, 4873, + 4873, 0, 4873, 4873, 4873, 4873, 4873, 4873, 4873, 4873, + 4873, 4873, 4873, 4873, 4873, 4873, 4873, 4873, 4873, 4873, + 4873, 4873, 4873, 4873, 4873, 4873, 4873, 4873, 4874, 4874, + 0, 0, 4874, 4874, 4874, 4874, 4874, 4874, 4874, 4874, + 4874, 0, 4874, 0, 4874, 4874, 4874, 4874, 4874, 4874, + + 4874, 4874, 4874, 4874, 4874, 4874, 4874, 4875, 0, 0, + 0, 0, 0, 4875, 0, 0, 4875, 4875, 0, 4875, + 0, 0, 0, 0, 0, 4875, 4875, 0, 4875, 4876, + 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, + 4876, 4876, 4876, 4876, 4876, 4876, 0, 4876, 4876, 4876, + 4876, 0, 4876, 4876, 4876, 4876, 4876, 4876, 4877, 4877, + 4877, 4877, 4877, 4877, 4877, 4877, 4877, 4877, 4877, 4877, + 4877, 4877, 4877, 4877, 4877, 0, 4877, 4877, 4877, 4877, + 0, 4877, 4877, 4877, 4877, 4877, 4877, 4878, 4878, 4878, + 4878, 4878, 4878, 4878, 4878, 4878, 4878, 4878, 4878, 4878, + + 4878, 4878, 4878, 4878, 0, 4878, 4878, 4878, 4878, 0, + 4878, 4878, 4878, 4878, 4878, 4878, 4879, 4879, 4879, 4879, + 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, + 4879, 4879, 4879, 0, 4879, 4879, 4879, 4879, 0, 4879, + 4879, 4879, 4879, 4879, 4879, 4880, 4880, 0, 0, 4880, + 4880, 4880, 4880, 4880, 4880, 4880, 4880, 4880, 0, 4880, + 4880, 4880, 4880, 4880, 4880, 4880, 4880, 4880, 4880, 4880, + 4880, 4880, 4880, 4880, 4881, 4881, 0, 0, 4881, 4881, + 4881, 4881, 4881, 4881, 4881, 4881, 4881, 0, 4881, 4881, + 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, + + 4881, 4881, 4881, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091 + } ; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; @@ -9760,7 +9893,7 @@ char *yytext; * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -9833,19 +9966,21 @@ static int lastBriefContext; static int lastVerbState; static int lastStringContext; static int lastCurlyContext; +static int lastRoundContext; static int lastCodeState; static int lastAfterDocContext; static int lastGroupContext; static int lastMemberGroupContext; static int lastFormulaContext; static int lastAnchorContext; +static int lastInitializerContext; static int nextDefContext; static int overloadContext; static Protection protection; static Protection baseProt; -static int bracketCount = 0 ; static int sharpCount = 0 ; static int roundCount = 0 ; +static int curlyCount = 0 ; static int ifCount = 0 ; static Entry* current_root = 0 ; static Entry* global_root = 0 ; @@ -9882,6 +10017,9 @@ static bool inDeprecatedBlock; static bool inVersionBlock; static bool inDateBlock; static bool inBugBlock; +static bool inPreBlock; +static bool inPostBlock; +static bool inInvarBlock; static bool inWarningBlock; static bool inParBlock; static bool firstSeeArg; @@ -9906,10 +10044,15 @@ static int lastCopyArgStringContext; static int lastCopyArgContext; static int currentListIndentLevel; static QCString *copyArgString; +static QCString fullArgString; static ArgumentList *currentArgumentList; static QCString *currentTemplateSpec; static QCString curImageName; +static char lastCopyArgChar; +static QCString *pCopyRoundString; +static QCString *pCopyCurlyString; +static QCString *pCopyQuotedString; //----------------------------------------------------------------------------- @@ -9918,7 +10061,7 @@ static void initParser() insideArgumentList=FALSE; className.resize(0); memberName.resize(0); - refName.resize(0); + refName="<unknown>"; code.resize(0); linkRef.resize(0); linkText.resize(0); @@ -9932,9 +10075,9 @@ static void initParser() formulaText.resize(0); protection = Public; baseProt = Public; - bracketCount = 0; sharpCount = 0; roundCount = 0; + curlyCount = 0; ifCount = 0; memberGroupId = -1; sig = FALSE; @@ -9956,6 +10099,9 @@ static void initParser() inVersionBlock = FALSE; inDateBlock = FALSE; inBugBlock = FALSE; + inPreBlock = FALSE; + inPostBlock = FALSE; + inInvarBlock = FALSE; inWarningBlock = FALSE; inParBlock = FALSE; firstSeeArg = FALSE; @@ -9994,7 +10140,7 @@ TableElem::TableElem(int r,int c) TableElem::~TableElem() { //printf("TableElem::~TableElem(%d,%d)\n",row,col); - delete ol; + delete ol; ol=0; } class Table @@ -10050,7 +10196,7 @@ Table::~Table() } parentDoc->endTable(); } - delete elemList; + delete elemList; elemList=0; outDoc=parentDoc; } @@ -10251,7 +10397,7 @@ static void showLine(OutputList &ol,const char *key) while ( includeFileOffset<includeFileLength && (c=currentIncludeFile[includeFileOffset++])!='\n' && c!=0 ) s+=c; - if (s.stripWhiteSpace().length()>0 || + if (!s.stripWhiteSpace().isEmpty() || includeFileOffset==includeFileLength) found=TRUE; } if (s.find(key)!=-1) @@ -10272,7 +10418,7 @@ static void showUntil(OutputList &ol,const char *key) while ( includeFileOffset<includeFileLength && (c=currentIncludeFile[includeFileOffset++])!='\n' && c!=0 ) s+=c; - if (s.stripWhiteSpace().length()>0) + if (!s.stripWhiteSpace().isEmpty()) { ol.writeString(" "); parseCode(ol,className,s,exampleDoc,exampleName); @@ -10294,11 +10440,97 @@ static void newDocState(); //----------------------------------------------------------------- +static QStack<int> listIndentStack; +static bool insideItemList = FALSE; + +static void addListItemMarker(const char *marker) +{ + // find the actual position at which the bullet was found + int indent=0; + const char *p=marker; + char c; + while ((c=*p++)) + { + if (c=='\t') + { + indent+=Config::tabSize - (indent%Config::tabSize); + } + else + { + indent++; + } + } + //printf("list marker found at column %d\n",indent); + if (!insideItemList) + { + outDoc->startItemList(); + outDoc->writeListItem(); + listIndentStack.push(new int(indent)); + insideItemList=TRUE; + } + else + { + int *pPrevIndent = listIndentStack.top(); + if (*pPrevIndent==indent) // new item at the same indent level + { + outDoc->writeListItem(); + } + else if (*pPrevIndent<indent) // start sub item list + { + outDoc->startItemList(); + outDoc->writeListItem(); + listIndentStack.push(new int(indent)); + } + else // end sub item list + { + listIndentStack.pop(); + delete pPrevIndent; + outDoc->endItemList(); + // safe guard against wrong indenting + if (listIndentStack.isEmpty()) + { + insideItemList=FALSE; + warn("Warning: list item with invalid indent found!\n"); + } + else + { + outDoc->writeListItem(); + } + } + } +} + +static void forceEndItemList() +{ + int *indent; + while ((indent=listIndentStack.pop())!=0) + { + outDoc->endItemList(); + delete indent; + } + insideItemList=FALSE; +} + +#if 0 +static void tryEndItemList() +{ + if (listIndentStack.count()==1) // no subitems => end list + { + outDoc->endItemList(); + delete listIndentStack.pop(); + insideItemList=FALSE; + } +} +#endif + +//----------------------------------------------------------------- + static bool inBlock() { return inParamBlock || inRetValBlock || inSeeBlock || inReturnBlock || inAuthorBlock || inVersionBlock || inDateBlock || inWarningBlock || inBugBlock || - inParBlock || inExceptionBlock || inDeprecatedBlock; + inParBlock || inExceptionBlock || inDeprecatedBlock || inPreBlock || + inPostBlock || inInvarBlock; } static void endBlock() @@ -10311,7 +10543,8 @@ static void endBlock() outDoc->endDescList(); inParamBlock=inRetValBlock=inSeeBlock=inReturnBlock=inAuthorBlock= inVersionBlock=inDateBlock=inBugBlock=inWarningBlock= - inParBlock=inExceptionBlock=inDeprecatedBlock=FALSE; + inParBlock=inExceptionBlock=inDeprecatedBlock=inPreBlock=inPostBlock= + inInvarBlock=FALSE; } static void addSection() @@ -10374,32 +10607,32 @@ static void checkDocs() } } -static bool curLatexState; -static bool curManState; -static bool curHtmlState; - -static void storeOutputListState() -{ - curLatexState = outDoc->isEnabled(OutputGenerator::Latex); - curHtmlState = outDoc->isEnabled(OutputGenerator::Html); - curManState = outDoc->isEnabled(OutputGenerator::Man); -} - -static void restoreOutputListState() -{ - if (curLatexState) - outDoc->enable(OutputGenerator::Latex); - else - outDoc->disable(OutputGenerator::Latex); - if (curHtmlState) - outDoc->enable(OutputGenerator::Html); - else - outDoc->disable(OutputGenerator::Html); - if (curManState) - outDoc->enable(OutputGenerator::Man); - else - outDoc->disable(OutputGenerator::Man); -} +//static bool curLatexState; +//static bool curManState; +//static bool curHtmlState; +// +//static void storeOutputListState() +//{ +// curLatexState = outDoc->isEnabled(OutputGenerator::Latex); +// curHtmlState = outDoc->isEnabled(OutputGenerator::Html); +// curManState = outDoc->isEnabled(OutputGenerator::Man); +//} +// +//static void restoreOutputListState() +//{ +// if (curLatexState) +// outDoc->enable(OutputGenerator::Latex); +// else +// outDoc->disable(OutputGenerator::Latex); +// if (curHtmlState) +// outDoc->enable(OutputGenerator::Html); +// else +// outDoc->disable(OutputGenerator::Html); +// if (curManState) +// outDoc->enable(OutputGenerator::Man); +// else +// outDoc->disable(OutputGenerator::Man); +//} enum ImageTypes { @@ -10417,7 +10650,7 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type) FileDef *fd; if ((fd=findFileDef(&imageNameDict,fileName,ambig))) { - QFile inImage(fd->absFilePath().data()); + QFile inImage(fd->absFilePath()); if (inImage.open(IO_ReadOnly)) { result = fileName; @@ -10760,19 +10993,31 @@ static int yyread(char *buf,int max_size) #define CopyArgSharp 132 -#define ReadFuncArgType 133 +#define CopyArgComment 133 + +#define CopyArgCommentLine 134 + +#define ReadFuncArgType 135 + +#define ReadTempArgs 136 -#define ReadTempArgs 134 +#define Specialization 137 -#define Specialization 135 +#define DocSkipHtmlComment 138 -#define DocSkipHtmlComment 136 +#define ReadFormulaShort 139 -#define ReadFormulaShort 137 +#define ReadFormulaLong 140 -#define ReadFormulaLong 138 +#define AnchorLabel 141 -#define AnchorLabel 139 +#define ReadInitializer 142 + +#define CopyString 143 + +#define CopyRound 144 + +#define CopyCurly 145 /* Macros after this point can all be overridden by user definitions in @@ -10927,7 +11172,7 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 940 "scanner.l" +#line 1046 "scanner.l" @@ -10978,14 +11223,14 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3919 ) + if ( yy_current_state >= 4092 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *yy_state_ptr++ = yy_current_state; ++yy_cp; } - while ( yy_base[yy_current_state] != 34016 ); + while ( yy_base[yy_current_state] != 34204 ); yy_find_action: yy_current_state = *--yy_state_ptr; @@ -11036,7 +11281,7 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 942 "scanner.l" +#line 1048 "scanner.l" { // new file if (memberGroupId!=-1) { @@ -11066,7 +11311,7 @@ YY_RULE_SETUP YY_BREAK case 2: YY_RULE_SETUP -#line 968 "scanner.l" +#line 1074 "scanner.l" YY_BREAK /* @@ -11085,257 +11330,266 @@ YY_RULE_SETUP */ case 3: YY_RULE_SETUP -#line 983 "scanner.l" -{ BEGIN(DocSkipHtmlComment); } +#line 1089 "scanner.l" +{ /* found list item marker */ + addListItemMarker(yytext); + } YY_BREAK case 4: YY_RULE_SETUP -#line 984 "scanner.l" -{ BEGIN(DocScan); } +#line 1092 "scanner.l" +{ BEGIN(DocSkipHtmlComment); } YY_BREAK case 5: YY_RULE_SETUP -#line 985 "scanner.l" - +#line 1093 "scanner.l" +{ BEGIN(DocScan); } YY_BREAK case 6: YY_RULE_SETUP -#line 986 "scanner.l" -{ outDoc->writeCopyright(); } +#line 1094 "scanner.l" + YY_BREAK case 7: YY_RULE_SETUP -#line 987 "scanner.l" -{ outDoc->writeQuote(); } +#line 1095 "scanner.l" +{ outDoc->writeCopyright(); } YY_BREAK case 8: YY_RULE_SETUP -#line 988 "scanner.l" -{ outDoc->writeUmlaut(yytext[1]); } +#line 1096 "scanner.l" +{ outDoc->writeQuote(); } YY_BREAK case 9: YY_RULE_SETUP -#line 989 "scanner.l" -{ outDoc->writeAcute(yytext[1]); } +#line 1097 "scanner.l" +{ outDoc->writeUmlaut(yytext[1]); } YY_BREAK case 10: YY_RULE_SETUP -#line 990 "scanner.l" -{ outDoc->writeGrave(yytext[1]); } +#line 1098 "scanner.l" +{ outDoc->writeAcute(yytext[1]); } YY_BREAK case 11: YY_RULE_SETUP -#line 991 "scanner.l" -{ outDoc->writeCirc(yytext[1]); } +#line 1099 "scanner.l" +{ outDoc->writeGrave(yytext[1]); } YY_BREAK case 12: YY_RULE_SETUP -#line 992 "scanner.l" -{ outDoc->writeTilde(yytext[1]); } +#line 1100 "scanner.l" +{ outDoc->writeCirc(yytext[1]); } YY_BREAK case 13: YY_RULE_SETUP -#line 993 "scanner.l" -{ outDoc->writeSharpS(); } +#line 1101 "scanner.l" +{ outDoc->writeTilde(yytext[1]); } YY_BREAK case 14: YY_RULE_SETUP -#line 994 "scanner.l" -{ outDoc->writeRing(yytext[1]); } +#line 1102 "scanner.l" +{ outDoc->writeSharpS(); } YY_BREAK case 15: YY_RULE_SETUP -#line 995 "scanner.l" +#line 1103 "scanner.l" +{ outDoc->writeRing(yytext[1]); } + YY_BREAK +case 16: +YY_RULE_SETUP +#line 1104 "scanner.l" { QCString envvar=&yytext[2]; envvar=envvar.left(envvar.length()-1); outDoc->docify(getenv(envvar)); } YY_BREAK -case 16: +case 17: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1000 "scanner.l" +#line 1109 "scanner.l" { + outDoc->pushGeneratorState(); /*storeOutputListState();*/ outDoc->disableAllBut(OutputGenerator::Html); BEGIN(DocHtmlScan); } YY_BREAK -case 17: +case 18: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1004 "scanner.l" +#line 1114 "scanner.l" { - outDoc->enableAll(); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); BEGIN(DocScan); } YY_BREAK -case 18: +case 19: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1008 "scanner.l" +#line 1119 "scanner.l" { + /*storeOutputListState();*/ + outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Latex); BEGIN(DocLatexScan); } YY_BREAK -case 19: +case 20: +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ +yy_c_buf_p = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1012 "scanner.l" +#line 1125 "scanner.l" { - outDoc->writeString(yytext); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); + BEGIN(DocScan); } YY_BREAK -case 20: +case 21: YY_RULE_SETUP -#line 1015 "scanner.l" +#line 1130 "scanner.l" { - char c[2]; - c[0]=*yytext;c[1]='\0'; - outDoc->writeString(c); + outDoc->writeString(yytext); } YY_BREAK -case 21: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ +case 22: YY_RULE_SETUP -#line 1020 "scanner.l" +#line 1133 "scanner.l" { - outDoc->enableAll(); - BEGIN(DocScan); + char c[2]; + c[0]=*yytext;c[1]='\0'; + outDoc->writeString(c); } YY_BREAK -case 22: +case 23: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 11; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1024 "scanner.l" +#line 1138 "scanner.l" YY_BREAK -case 23: +case 24: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 14; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1025 "scanner.l" +#line 1139 "scanner.l" { writeMemberList(*outDoc); } YY_BREAK -case 24: +case 25: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 15; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1026 "scanner.l" +#line 1140 "scanner.l" { writeClassHierarchy(*outDoc); } YY_BREAK -case 25: +case 26: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 19; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1027 "scanner.l" +#line 1141 "scanner.l" { writeAnnotatedClassList(*outDoc); } YY_BREAK -case 26: +case 27: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 15; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1028 "scanner.l" +#line 1142 "scanner.l" { /*TODO: fix this writeHeaderFileList(*outDoc); */ } YY_BREAK -case 27: +case 28: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 7; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1029 "scanner.l" +#line 1143 "scanner.l" { BEGIN( DocSkipWord ); } YY_BREAK -case 28: +case 29: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 7; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1030 "scanner.l" +#line 1144 "scanner.l" { BEGIN( DocSkipWord ); } YY_BREAK -case 29: +case 30: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1031 "scanner.l" +#line 1145 "scanner.l" { BEGIN( DocVerbInc ); } YY_BREAK -case 30: +case 31: YY_RULE_SETUP -#line 1032 "scanner.l" +#line 1146 "scanner.l" { verbIncludeFile(*outDoc,stripQuotes(yytext)); BEGIN( DocScan ); } YY_BREAK -case 31: +case 32: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1036 "scanner.l" +#line 1150 "scanner.l" { outDoc->startCodeFragment(); BEGIN(DocVerbatim); } YY_BREAK -case 32: +case 33: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1040 "scanner.l" +#line 1154 "scanner.l" { outDoc->endCodeFragment(); BEGIN(DocScan); } YY_BREAK -case 33: +case 34: YY_RULE_SETUP -#line 1044 "scanner.l" +#line 1158 "scanner.l" { //printf("docifying: %s\n",yytext); outDoc->codify(yytext); } YY_BREAK -case 34: +case 35: YY_RULE_SETUP -#line 1048 "scanner.l" +#line 1162 "scanner.l" { outDoc->codify(yytext); } YY_BREAK -case 35: +case 36: YY_RULE_SETUP -#line 1051 "scanner.l" +#line 1165 "scanner.l" { //printf("char %c\n",*yytext); char c[2];c[0]=*yytext;c[1]='\0'; outDoc->codify(c); } YY_BREAK -case 36: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ +case 37: YY_RULE_SETUP -#line 1056 "scanner.l" +#line 1170 "scanner.l" { if (!Config::internalDocsFlag) { @@ -11346,56 +11600,56 @@ YY_RULE_SETUP } } YY_BREAK -case 37: +case 38: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 6; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1065 "scanner.l" +#line 1179 "scanner.l" { outDoc->newParagraph(); scanString(theTranslator->trReimplementedForInternalReasons()+"\n"); } YY_BREAK -case 38: +case 39: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1069 "scanner.l" +#line 1183 "scanner.l" { BEGIN( DocLink ); } YY_BREAK -case 39: +case 40: YY_RULE_SETUP -#line 1070 "scanner.l" +#line 1184 "scanner.l" { BEGIN( DocScan ); } YY_BREAK -case 40: +case 41: YY_RULE_SETUP -#line 1071 "scanner.l" +#line 1185 "scanner.l" { linkRef = stripKnownExtensions(yytext); linkText = ""; BEGIN( DocLinkText ); } YY_BREAK -case 41: +case 42: YY_RULE_SETUP -#line 1076 "scanner.l" +#line 1190 "scanner.l" { linkText += *yytext; } YY_BREAK -case 42: +case 43: YY_RULE_SETUP -#line 1077 "scanner.l" +#line 1191 "scanner.l" { linkText += " "; } YY_BREAK -case 43: +case 44: YY_RULE_SETUP -#line 1078 "scanner.l" +#line 1192 "scanner.l" { // <- needed for things like \endlink. //printf("GenerateLink className=`%s' linkRef=`%s' linkText=`%s'\n", // className.data(),linkRef.data(),linkText.data()); - generateLink(*outDoc,className,linkRef,inSeeBlock,linkText); + generateLink(*outDoc,className,linkRef,inSeeBlock,linkText.stripWhiteSpace()); BEGIN( DocScan ); } YY_BREAK @@ -11408,29 +11662,29 @@ YY_RULE_SETUP BEGIN( DocScan ); } */ -case 44: +case 45: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1093 "scanner.l" +#line 1207 "scanner.l" { warn("Warning: \\endlink without \\link " "in documentation of %s\n", refName.data()); } YY_BREAK -case 45: +case 46: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1096 "scanner.l" +#line 1210 "scanner.l" { BEGIN(DocIndexWord); } YY_BREAK -case 46: +case 47: YY_RULE_SETUP -#line 1099 "scanner.l" +#line 1213 "scanner.l" { Formula *formula=formulaNameDict[yytext]; if (formula) @@ -11441,18 +11695,18 @@ YY_RULE_SETUP } } YY_BREAK -case 47: +case 48: YY_RULE_SETUP -#line 1108 "scanner.l" +#line 1222 "scanner.l" { //printf("Adding %s to index\n",yytext); outDoc->addToIndex(yytext,0); BEGIN(DocScan); } YY_BREAK -case 48: +case 49: YY_RULE_SETUP -#line 1113 "scanner.l" +#line 1227 "scanner.l" { if (insideArgumentList) { @@ -11466,16 +11720,16 @@ YY_RULE_SETUP } } YY_BREAK -case 49: +case 50: YY_RULE_SETUP -#line 1125 "scanner.l" +#line 1239 "scanner.l" { BEGIN(DocPar); } YY_BREAK -case 50: +case 51: YY_RULE_SETUP -#line 1128 "scanner.l" +#line 1242 "scanner.l" { endArgumentList(); if (inBlock()) endBlock(); @@ -11489,9 +11743,9 @@ YY_RULE_SETUP BEGIN(DocScan); } YY_BREAK -case 51: +case 52: YY_RULE_SETUP -#line 1140 "scanner.l" +#line 1254 "scanner.l" { endArgumentList(); if (!inWarningBlock) @@ -11512,9 +11766,9 @@ YY_RULE_SETUP } } YY_BREAK -case 52: +case 53: YY_RULE_SETUP -#line 1159 "scanner.l" +#line 1273 "scanner.l" { endArgumentList(); if (!inBugBlock) @@ -11534,9 +11788,75 @@ YY_RULE_SETUP } } YY_BREAK -case 53: +case 54: +YY_RULE_SETUP +#line 1291 "scanner.l" +{ + endArgumentList(); + if (!inPreBlock) + { + if (inBlock()) endBlock(); + inPreBlock=TRUE; + outDoc->startDescList(); + outDoc->startBold(); + scanString(theTranslator->trPrecondition()+": "); + outDoc->endBold(); + outDoc->endDescTitle(); + outDoc->writeDescItem(); + } + else + { + outDoc->writeDescItem(); + } + } + YY_BREAK +case 55: YY_RULE_SETUP -#line 1177 "scanner.l" +#line 1309 "scanner.l" +{ + endArgumentList(); + if (!inPostBlock) + { + if (inBlock()) endBlock(); + inPostBlock=TRUE; + outDoc->startDescList(); + outDoc->startBold(); + scanString(theTranslator->trPostcondition()+": "); + outDoc->endBold(); + outDoc->endDescTitle(); + outDoc->writeDescItem(); + } + else + { + outDoc->writeDescItem(); + } + } + YY_BREAK +case 56: +YY_RULE_SETUP +#line 1327 "scanner.l" +{ + endArgumentList(); + if (!inInvarBlock) + { + if (inBlock()) endBlock(); + inInvarBlock=TRUE; + outDoc->startDescList(); + outDoc->startBold(); + scanString(theTranslator->trInvariant()+": "); + outDoc->endBold(); + outDoc->endDescTitle(); + outDoc->writeDescItem(); + } + else + { + outDoc->writeDescItem(); + } + } + YY_BREAK +case 57: +YY_RULE_SETUP +#line 1345 "scanner.l" { endArgumentList(); if (!inVersionBlock) @@ -11544,7 +11864,6 @@ YY_RULE_SETUP if (inBlock()) endBlock(); inVersionBlock=TRUE; outDoc->startDescList(); - //outDoc->writeBoldString("Version: "); outDoc->startBold(); scanString(theTranslator->trVersion()+": "); outDoc->endBold(); @@ -11557,9 +11876,9 @@ YY_RULE_SETUP } } YY_BREAK -case 54: +case 58: YY_RULE_SETUP -#line 1196 "scanner.l" +#line 1363 "scanner.l" { endArgumentList(); if (!inDateBlock) @@ -11567,7 +11886,6 @@ YY_RULE_SETUP if (inBlock()) endBlock(); inDateBlock=TRUE; outDoc->startDescList(); - //outDoc->writeBoldString("Date: "); outDoc->startBold(); scanString(theTranslator->trDate()+": "); outDoc->endBold(); @@ -11580,9 +11898,9 @@ YY_RULE_SETUP } } YY_BREAK -case 55: +case 59: YY_RULE_SETUP -#line 1215 "scanner.l" +#line 1381 "scanner.l" { endArgumentList(); if (!inDeprecatedBlock) @@ -11602,9 +11920,9 @@ YY_RULE_SETUP } } YY_BREAK -case 56: +case 60: YY_RULE_SETUP -#line 1233 "scanner.l" +#line 1399 "scanner.l" { endArgumentList(); if (!inAuthorBlock) @@ -11612,7 +11930,6 @@ YY_RULE_SETUP if (inBlock()) endBlock(); inAuthorBlock=TRUE; outDoc->startDescList(); - //outDoc->writeBoldString("Author(s): "); outDoc->startBold(); scanString(theTranslator->trAuthors()+": "); outDoc->endBold(); @@ -11625,9 +11942,9 @@ YY_RULE_SETUP } } YY_BREAK -case 57: +case 61: YY_RULE_SETUP -#line 1252 "scanner.l" +#line 1417 "scanner.l" { endArgumentList(); if (!inReturnBlock) @@ -11635,7 +11952,6 @@ YY_RULE_SETUP if (inBlock()) endBlock(); inReturnBlock=TRUE; outDoc->startDescList(); - //outDoc->writeBoldString("Returns: "); outDoc->startBold(); scanString(theTranslator->trReturns()+": "); outDoc->endBold(); @@ -11644,18 +11960,16 @@ YY_RULE_SETUP } } YY_BREAK -case 58: +case 62: YY_RULE_SETUP -#line 1267 "scanner.l" +#line 1431 "scanner.l" { endArgumentList(); if (!inSeeBlock) { if (inBlock()) endBlock(); inSeeBlock=TRUE; - //firstSeeArg=TRUE; outDoc->startDescList(); - //outDoc->writeBoldString("See also: "); outDoc->startBold(); scanString(theTranslator->trSeeAlso()+": "); outDoc->endBold(); @@ -11668,9 +11982,9 @@ YY_RULE_SETUP } } YY_BREAK -case 59: +case 63: YY_RULE_SETUP -#line 1287 "scanner.l" +#line 1449 "scanner.l" { endArgumentList(); if (!inParamBlock) @@ -11692,9 +12006,9 @@ YY_RULE_SETUP BEGIN(DocParam); } YY_BREAK -case 60: +case 64: YY_RULE_SETUP -#line 1307 "scanner.l" +#line 1469 "scanner.l" { endArgumentList(); if (!inRetValBlock) @@ -11716,9 +12030,9 @@ YY_RULE_SETUP BEGIN(DocParam); } YY_BREAK -case 61: +case 65: YY_RULE_SETUP -#line 1327 "scanner.l" +#line 1489 "scanner.l" { endArgumentList(); if (!inExceptionBlock) @@ -11740,14 +12054,14 @@ YY_RULE_SETUP BEGIN(DocException); } YY_BREAK -case 62: +case 66: YY_RULE_SETUP -#line 1347 "scanner.l" +#line 1509 "scanner.l" YY_BREAK -case 63: +case 67: YY_RULE_SETUP -#line 1348 "scanner.l" +#line 1510 "scanner.l" { outDoc->startDescTableTitle(); outDoc->startEmphasis(); @@ -11758,9 +12072,9 @@ YY_RULE_SETUP BEGIN(DocScan); } YY_BREAK -case 64: +case 68: YY_RULE_SETUP -#line 1357 "scanner.l" +#line 1519 "scanner.l" { outDoc->startDescTableTitle(); outDoc->startEmphasis(); @@ -11771,9 +12085,9 @@ YY_RULE_SETUP BEGIN(DocScan); } YY_BREAK -case 65: +case 69: YY_RULE_SETUP -#line 1366 "scanner.l" +#line 1528 "scanner.l" { QCString secName=&yytext[9]; // skip "\section " secName=secName.left(secName.length()-1); // remove \n @@ -11787,9 +12101,9 @@ YY_RULE_SETUP } } YY_BREAK -case 66: +case 70: YY_RULE_SETUP -#line 1378 "scanner.l" +#line 1540 "scanner.l" { QCString secName=&yytext[8]; secName=secName.left(secName.length()-1); @@ -11800,23 +12114,23 @@ YY_RULE_SETUP } } YY_BREAK -case 67: +case 71: YY_RULE_SETUP -#line 1387 "scanner.l" +#line 1549 "scanner.l" { BEGIN(DocRefName); } YY_BREAK -case 68: +case 72: YY_RULE_SETUP -#line 1390 "scanner.l" +#line 1552 "scanner.l" { BEGIN(DocRefItem); } YY_BREAK -case 69: +case 73: YY_RULE_SETUP -#line 1393 "scanner.l" +#line 1555 "scanner.l" { QCString ref=yytext; SectionInfo *sec; @@ -11845,24 +12159,24 @@ YY_RULE_SETUP BEGIN(DocScan); } YY_BREAK -case 70: +case 74: YY_RULE_SETUP -#line 1420 "scanner.l" +#line 1582 "scanner.l" { sectionRef=yytext; BEGIN(DocRefArgStart); } YY_BREAK -case 71: +case 75: YY_RULE_SETUP -#line 1424 "scanner.l" +#line 1586 "scanner.l" { BEGIN(DocRefArg); } YY_BREAK -case 72: +case 76: YY_RULE_SETUP -#line 1427 "scanner.l" +#line 1589 "scanner.l" { yytext[yyleng-1]='\0'; QCString text=substitute(yytext,"\\\\","\\"); @@ -11878,7 +12192,7 @@ YY_RULE_SETUP outDoc->writeSectionRef(sec->fileName,sec->label,text); } } - else if (!generateLink(*outDoc,className,yytext,TRUE,text)) + else if (!generateLink(*outDoc,className,sectionRef,TRUE,text)) { warn("Warning: reference to unknown section %s!\n",sectionRef.data()); outDoc->writeBoldString("unknown reference!"); @@ -11886,20 +12200,20 @@ YY_RULE_SETUP BEGIN(DocScan); } YY_BREAK -case 73: +case 77: YY_RULE_SETUP -#line 1449 "scanner.l" +#line 1611 "scanner.l" { sectionRef=yytext; BEGIN(DocRefItemName); } YY_BREAK -case 74: +case 78: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1453 "scanner.l" +#line 1615 "scanner.l" { SectionInfo *sec; QCString text=yytext; @@ -11915,45 +12229,47 @@ YY_RULE_SETUP BEGIN(DocScan); } YY_BREAK -case 75: +case 79: YY_RULE_SETUP -#line 1467 "scanner.l" +#line 1629 "scanner.l" { BEGIN(DocImage); } YY_BREAK -case 76: +case 80: YY_RULE_SETUP -#line 1470 "scanner.l" +#line 1632 "scanner.l" { BEGIN(DocHtmlImageName); } YY_BREAK -case 77: +case 81: YY_RULE_SETUP -#line 1473 "scanner.l" +#line 1635 "scanner.l" { BEGIN(DocLatexImageName); } YY_BREAK -case 78: +case 82: YY_RULE_SETUP -#line 1476 "scanner.l" +#line 1638 "scanner.l" { curImageName = findAndCopyImage(stripQuotes(yytext),IT_Html); if (!curImageName.isEmpty()) { - storeOutputListState(); + /*storeOutputListState();*/ + outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Html); outDoc->writeImage(curImageName,0,0); - restoreOutputListState(); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); } BEGIN(DocScan); } YY_BREAK -case 79: +case 83: YY_RULE_SETUP -#line 1487 "scanner.l" +#line 1651 "scanner.l" { curImageName = findAndCopyImage(stripQuotes(yytext),IT_Latex); if (curImageName.isEmpty()) @@ -11962,130 +12278,136 @@ YY_RULE_SETUP BEGIN(DocLatexImageWidth); } YY_BREAK -case 80: +case 84: YY_RULE_SETUP -#line 1494 "scanner.l" +#line 1658 "scanner.l" { // no width specified - storeOutputListState(); + /*storeOutputListState();*/ + outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Latex); outDoc->writeImage(curImageName,0,0); - restoreOutputListState(); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); BEGIN(DocScan); } YY_BREAK -case 81: +case 85: YY_RULE_SETUP -#line 1501 "scanner.l" +#line 1667 "scanner.l" { - storeOutputListState(); + /*storeOutputListState();*/ + outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Latex); outDoc->writeImage(curImageName,yytext,0); - restoreOutputListState(); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); BEGIN(DocScan); } YY_BREAK -case 82: +case 86: YY_RULE_SETUP -#line 1508 "scanner.l" +#line 1676 "scanner.l" { - storeOutputListState(); + /*storeOutputListState();*/ + outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Latex); outDoc->writeImage(curImageName,0,yytext); - restoreOutputListState(); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); BEGIN(DocScan); } YY_BREAK -case 83: +case 87: YY_RULE_SETUP -#line 1515 "scanner.l" +#line 1685 "scanner.l" { warn("Warning: %s is an unsupported output format for \\image\n",yytext); } YY_BREAK -case 84: +case 88: YY_RULE_SETUP -#line 1518 "scanner.l" +#line 1688 "scanner.l" { warn("Warning: invalid \\image command found!\n"); outDoc->enableAll(); BEGIN(DocScan); } YY_BREAK -case 85: +case 89: YY_RULE_SETUP -#line 1523 "scanner.l" +#line 1693 "scanner.l" { outDoc->startCodeFragment(); codeBlock.resize(0); BEGIN( DocCodeBlock ); } YY_BREAK -case 86: +case 90: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1528 "scanner.l" +#line 1698 "scanner.l" { warn("Warning: \\endcode without <PRE> or \\code " "in the documentation of %s\n",refName.data()); } YY_BREAK -case 87: +case 91: YY_RULE_SETUP -#line 1532 "scanner.l" +#line 1702 "scanner.l" { generateRef(*outDoc,className,yytext,inSeeBlock); } YY_BREAK -case 88: +case 92: YY_RULE_SETUP -#line 1535 "scanner.l" +#line 1705 "scanner.l" { generateRef(*outDoc,className,yytext,inSeeBlock); } YY_BREAK -case 89: +case 93: YY_RULE_SETUP -#line 1538 "scanner.l" +#line 1708 "scanner.l" { QCString oName=yytext; generateRef(*outDoc,className, removeRedundantWhiteSpace(oName),inSeeBlock); } YY_BREAK -case 90: +case 94: YY_RULE_SETUP -#line 1543 "scanner.l" +#line 1713 "scanner.l" { QCString oName=yytext; generateRef(*outDoc,className, removeRedundantWhiteSpace(oName),inSeeBlock); } YY_BREAK -case 91: +case 95: YY_RULE_SETUP -#line 1548 "scanner.l" +#line 1718 "scanner.l" { outDoc->writeHtmlLink(yytext,yytext); } YY_BREAK -case 92: +case 96: YY_RULE_SETUP -#line 1549 "scanner.l" +#line 1719 "scanner.l" { outDoc->writeMailLink(yytext); } YY_BREAK -case 93: +case 97: YY_RULE_SETUP -#line 1550 "scanner.l" +#line 1720 "scanner.l" { generateFileRef(*outDoc,yytext); } YY_BREAK -case 94: +case 98: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1553 "scanner.l" +#line 1723 "scanner.l" { // needed to match things like \endcode. (note the dot) parseCode(*outDoc,className,codeBlock,exampleDoc,exampleName); //printf("Code block\n-------------\n%s\n--------------\n",codeBlock.data()); @@ -12093,9 +12415,9 @@ YY_RULE_SETUP BEGIN( DocScan ); } YY_BREAK -case 95: +case 99: YY_RULE_SETUP -#line 1559 "scanner.l" +#line 1729 "scanner.l" { parseCode(*outDoc,className,codeBlock,exampleDoc,exampleName); //printf("Code block\n-------------\n%s\n--------------\n",codeBlock.data()); @@ -12103,73 +12425,78 @@ YY_RULE_SETUP BEGIN( DocScan ); } YY_BREAK -case 96: +case 100: YY_RULE_SETUP -#line 1565 "scanner.l" +#line 1735 "scanner.l" { BEGIN( DocEmphasis ); } YY_BREAK -case 97: +case 101: YY_RULE_SETUP -#line 1566 "scanner.l" +#line 1736 "scanner.l" { BEGIN( DocEmphasis ); } YY_BREAK -case 98: +case 102: YY_RULE_SETUP -#line 1567 "scanner.l" +#line 1737 "scanner.l" { BEGIN( DocBold ); } YY_BREAK -case 99: +case 103: YY_RULE_SETUP -#line 1568 "scanner.l" +#line 1738 "scanner.l" { BEGIN( DocCode ); } YY_BREAK -case 100: +case 104: YY_RULE_SETUP -#line 1569 "scanner.l" +#line 1739 "scanner.l" YY_BREAK -case 101: +case 105: +YY_RULE_SETUP +#line 1740 "scanner.l" +{ outDoc->lineBreak(); } + YY_BREAK +case 106: YY_RULE_SETUP -#line 1570 "scanner.l" +#line 1741 "scanner.l" { BEGIN( DocInclude ); } YY_BREAK -case 102: +case 107: YY_RULE_SETUP -#line 1571 "scanner.l" +#line 1742 "scanner.l" { BEGIN( DocDontInclude ); } YY_BREAK -case 103: +case 108: YY_RULE_SETUP -#line 1572 "scanner.l" +#line 1743 "scanner.l" { BEGIN( DocSkipKey ); } YY_BREAK -case 104: +case 109: YY_RULE_SETUP -#line 1573 "scanner.l" +#line 1744 "scanner.l" { BEGIN( DocSkiplineKey ); firstLine=TRUE; } YY_BREAK -case 105: +case 110: YY_RULE_SETUP -#line 1574 "scanner.l" +#line 1745 "scanner.l" { BEGIN( DocLineKey ); firstLine=TRUE; } YY_BREAK -case 106: +case 111: YY_RULE_SETUP -#line 1575 "scanner.l" +#line 1746 "scanner.l" { BEGIN( DocUntilKey ); firstLine=TRUE; } YY_BREAK -case 107: +case 112: YY_RULE_SETUP -#line 1576 "scanner.l" +#line 1747 "scanner.l" { if (includeFileLength>0) skipUntil(yytext); BEGIN( DocScan ); } YY_BREAK -case 108: +case 113: YY_RULE_SETUP -#line 1581 "scanner.l" +#line 1752 "scanner.l" { if (includeFileLength>0) { @@ -12184,9 +12511,9 @@ YY_RULE_SETUP } } YY_BREAK -case 109: +case 114: YY_RULE_SETUP -#line 1594 "scanner.l" +#line 1765 "scanner.l" { if (includeFileLength>0) { @@ -12201,9 +12528,9 @@ YY_RULE_SETUP } } YY_BREAK -case 110: +case 115: YY_RULE_SETUP -#line 1607 "scanner.l" +#line 1778 "scanner.l" { if (includeFileLength>0) { @@ -12218,488 +12545,509 @@ YY_RULE_SETUP } } YY_BREAK -case 111: +case 116: YY_RULE_SETUP -#line 1620 "scanner.l" +#line 1791 "scanner.l" { BEGIN(DocLineKey); } YY_BREAK -case 112: +case 117: YY_RULE_SETUP -#line 1621 "scanner.l" +#line 1792 "scanner.l" { BEGIN(DocUntilKey); } YY_BREAK -case 113: +case 118: YY_RULE_SETUP -#line 1622 "scanner.l" +#line 1793 "scanner.l" { BEGIN(DocSkiplineKey); } YY_BREAK -case 114: +case 119: YY_RULE_SETUP -#line 1623 "scanner.l" +#line 1794 "scanner.l" YY_BREAK case YY_STATE_EOF(DocKeyEnd): -#line 1624 "scanner.l" +#line 1795 "scanner.l" { if (!firstLine) outDoc->endCodeFragment(); yyterminate(); } YY_BREAK -case 115: +case 120: YY_RULE_SETUP -#line 1628 "scanner.l" +#line 1799 "scanner.l" { unput(*yytext); if (!firstLine) outDoc->endCodeFragment(); BEGIN( DocScan ); } YY_BREAK -case 116: +case 121: YY_RULE_SETUP -#line 1633 "scanner.l" +#line 1804 "scanner.l" YY_BREAK -case 117: +case 122: YY_RULE_SETUP -#line 1634 "scanner.l" +#line 1805 "scanner.l" YY_BREAK -case 118: +case 123: YY_RULE_SETUP -#line 1635 "scanner.l" +#line 1806 "scanner.l" { outDoc->startBold(); } YY_BREAK -case 119: +case 124: YY_RULE_SETUP -#line 1636 "scanner.l" +#line 1807 "scanner.l" { outDoc->endBold(); } YY_BREAK -case 120: +case 125: YY_RULE_SETUP -#line 1637 "scanner.l" +#line 1808 "scanner.l" { outDoc->startCenter(); } YY_BREAK -case 121: +case 126: YY_RULE_SETUP -#line 1638 "scanner.l" +#line 1809 "scanner.l" { outDoc->endCenter(); } YY_BREAK -case 122: +case 127: YY_RULE_SETUP -#line 1639 "scanner.l" +#line 1810 "scanner.l" { startTable(); /*outDoc->startTable();*/ } YY_BREAK -case 123: +case 128: YY_RULE_SETUP -#line 1642 "scanner.l" +#line 1813 "scanner.l" { endTable(); /*outDoc->endTable();*/ } YY_BREAK -case 124: +case 129: YY_RULE_SETUP -#line 1646 "scanner.l" +#line 1817 "scanner.l" YY_BREAK -case 125: +case 130: YY_RULE_SETUP -#line 1647 "scanner.l" +#line 1818 "scanner.l" { outDoc->startSmall(); } YY_BREAK -case 126: +case 131: YY_RULE_SETUP -#line 1648 "scanner.l" +#line 1819 "scanner.l" { outDoc->endSmall(); } YY_BREAK -case 127: +case 132: YY_RULE_SETUP -#line 1649 "scanner.l" +#line 1820 "scanner.l" YY_BREAK -case 128: +case 133: YY_RULE_SETUP -#line 1650 "scanner.l" +#line 1821 "scanner.l" YY_BREAK -case 129: +case 134: YY_RULE_SETUP -#line 1651 "scanner.l" +#line 1822 "scanner.l" YY_BREAK -case 130: +case 135: YY_RULE_SETUP -#line 1652 "scanner.l" +#line 1823 "scanner.l" YY_BREAK -case 131: +case 136: YY_RULE_SETUP -#line 1653 "scanner.l" +#line 1824 "scanner.l" YY_BREAK -case 132: +case 137: YY_RULE_SETUP -#line 1654 "scanner.l" +#line 1825 "scanner.l" YY_BREAK -case 133: +case 138: YY_RULE_SETUP -#line 1655 "scanner.l" +#line 1826 "scanner.l" YY_BREAK -case 134: +case 139: YY_RULE_SETUP -#line 1656 "scanner.l" +#line 1827 "scanner.l" { outDoc->startTypewriter(); } YY_BREAK -case 135: +case 140: YY_RULE_SETUP -#line 1657 "scanner.l" +#line 1828 "scanner.l" { outDoc->endTypewriter(); } YY_BREAK -case 136: +case 141: YY_RULE_SETUP -#line 1658 "scanner.l" +#line 1829 "scanner.l" { outDoc->startTypewriter(); } YY_BREAK -case 137: +case 142: YY_RULE_SETUP -#line 1659 "scanner.l" +#line 1830 "scanner.l" { outDoc->endTypewriter(); } YY_BREAK -case 138: +case 143: YY_RULE_SETUP -#line 1660 "scanner.l" +#line 1831 "scanner.l" { outDoc->startEmphasis(); } YY_BREAK -case 139: +case 144: YY_RULE_SETUP -#line 1661 "scanner.l" +#line 1832 "scanner.l" { outDoc->endEmphasis(); } YY_BREAK -case 140: +case 145: YY_RULE_SETUP -#line 1662 "scanner.l" +#line 1833 "scanner.l" { - storeOutputListState(); + /*storeOutputListState();*/ + outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Html); outDoc->writeString(yytext); - restoreOutputListState(); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); } YY_BREAK -case 141: +case 146: YY_RULE_SETUP -#line 1668 "scanner.l" +#line 1841 "scanner.l" { outDoc->startCodeFragment(); codeBlock.resize(0); BEGIN( DocCodeBlock ); } YY_BREAK -case 142: +case 147: YY_RULE_SETUP -#line 1673 "scanner.l" +#line 1846 "scanner.l" { warn("Warning: </PRE> without <PRE> or \\code" "in the documentation of %s\n",refName.data()); } YY_BREAK -case 143: +case 148: YY_RULE_SETUP -#line 1677 "scanner.l" +#line 1850 "scanner.l" { outDoc->startSubscript(); } YY_BREAK -case 144: +case 149: YY_RULE_SETUP -#line 1678 "scanner.l" +#line 1851 "scanner.l" { outDoc->endSubscript(); } YY_BREAK -case 145: +case 150: YY_RULE_SETUP -#line 1679 "scanner.l" +#line 1852 "scanner.l" { outDoc->startSuperscript(); } YY_BREAK -case 146: +case 151: YY_RULE_SETUP -#line 1680 "scanner.l" +#line 1853 "scanner.l" { outDoc->endSuperscript(); } YY_BREAK -case 147: +case 152: YY_RULE_SETUP -#line 1681 "scanner.l" +#line 1854 "scanner.l" { if (curTable) curTable->newRow(); } YY_BREAK -case 148: +case 153: YY_RULE_SETUP -#line 1682 "scanner.l" +#line 1855 "scanner.l" YY_BREAK -case 149: +case 154: YY_RULE_SETUP -#line 1683 "scanner.l" +#line 1856 "scanner.l" { if (curTable) curTable->newElem(); } YY_BREAK -case 150: +case 155: YY_RULE_SETUP -#line 1684 "scanner.l" +#line 1857 "scanner.l" YY_BREAK -case 151: +case 156: YY_RULE_SETUP -#line 1685 "scanner.l" +#line 1858 "scanner.l" { outDoc->startEnumList(); currentListIndentLevel++; } YY_BREAK -case 152: +case 157: YY_RULE_SETUP -#line 1688 "scanner.l" +#line 1861 "scanner.l" { outDoc->endEnumList(); currentListIndentLevel--; } YY_BREAK -case 153: +case 158: YY_RULE_SETUP -#line 1691 "scanner.l" +#line 1864 "scanner.l" { outDoc->startItemList(); currentListIndentLevel++; } YY_BREAK -case 154: +case 159: YY_RULE_SETUP -#line 1694 "scanner.l" +#line 1867 "scanner.l" { outDoc->endItemList(); currentListIndentLevel--; } YY_BREAK -case 155: +case 160: YY_RULE_SETUP -#line 1697 "scanner.l" +#line 1870 "scanner.l" { outDoc->writeListItem(); } YY_BREAK -case 156: +case 161: YY_RULE_SETUP -#line 1698 "scanner.l" +#line 1871 "scanner.l" YY_BREAK -case 157: +case 162: YY_RULE_SETUP -#line 1699 "scanner.l" +#line 1872 "scanner.l" { outDoc->startTypewriter(); } YY_BREAK -case 158: +case 163: YY_RULE_SETUP -#line 1700 "scanner.l" +#line 1873 "scanner.l" { outDoc->endTypewriter(); } YY_BREAK -case 159: +case 164: YY_RULE_SETUP -#line 1701 "scanner.l" +#line 1874 "scanner.l" { outDoc->startEmphasis(); } YY_BREAK -case 160: +case 165: YY_RULE_SETUP -#line 1702 "scanner.l" +#line 1875 "scanner.l" { outDoc->endEmphasis(); } YY_BREAK -case 161: +case 166: YY_RULE_SETUP -#line 1703 "scanner.l" +#line 1876 "scanner.l" { outDoc->writeRuler(); } YY_BREAK -case 162: +case 167: YY_RULE_SETUP -#line 1704 "scanner.l" +#line 1877 "scanner.l" { outDoc->startDescription(); currentListIndentLevel++; } YY_BREAK -case 163: +case 168: YY_RULE_SETUP -#line 1707 "scanner.l" +#line 1880 "scanner.l" { outDoc->endDescription(); currentListIndentLevel--; } YY_BREAK -case 164: +case 169: YY_RULE_SETUP -#line 1710 "scanner.l" +#line 1883 "scanner.l" { outDoc->startDescItem(); } YY_BREAK -case 165: +case 170: YY_RULE_SETUP -#line 1711 "scanner.l" +#line 1884 "scanner.l" YY_BREAK -case 166: +case 171: YY_RULE_SETUP -#line 1712 "scanner.l" +#line 1885 "scanner.l" { outDoc->endDescItem(); } YY_BREAK -case 167: +case 172: YY_RULE_SETUP -#line 1713 "scanner.l" +#line 1886 "scanner.l" YY_BREAK -case 168: +case 173: YY_RULE_SETUP -#line 1714 "scanner.l" +#line 1887 "scanner.l" { outDoc->lineBreak(); } YY_BREAK -case 169: +case 174: YY_RULE_SETUP -#line 1715 "scanner.l" +#line 1888 "scanner.l" { outDoc->startEmphasis(); } YY_BREAK -case 170: +case 175: YY_RULE_SETUP -#line 1716 "scanner.l" +#line 1889 "scanner.l" { outDoc->endEmphasis(); } YY_BREAK -case 171: +case 176: YY_RULE_SETUP -#line 1717 "scanner.l" +#line 1890 "scanner.l" YY_BREAK -case 172: +case 177: YY_RULE_SETUP -#line 1718 "scanner.l" +#line 1891 "scanner.l" { BEGIN(DocHtmlLink); } YY_BREAK -case 173: +case 178: YY_RULE_SETUP -#line 1719 "scanner.l" +#line 1892 "scanner.l" { outDoc->startBold(); } YY_BREAK -case 174: +case 179: YY_RULE_SETUP -#line 1720 "scanner.l" +#line 1893 "scanner.l" { outDoc->endBold(); } YY_BREAK -case 175: +case 180: YY_RULE_SETUP -#line 1721 "scanner.l" +#line 1894 "scanner.l" { if (inBlock()) endBlock(); outDoc->newParagraph(); } YY_BREAK -case 176: +case 181: YY_RULE_SETUP -#line 1724 "scanner.l" +#line 1897 "scanner.l" YY_BREAK -case 177: +case 182: YY_RULE_SETUP -#line 1725 "scanner.l" +#line 1898 "scanner.l" { outDoc->startTitle(); } YY_BREAK -case 178: +case 183: YY_RULE_SETUP -#line 1726 "scanner.l" +#line 1899 "scanner.l" { outDoc->endTitle(); } YY_BREAK -case 179: +case 184: YY_RULE_SETUP -#line 1727 "scanner.l" +#line 1900 "scanner.l" { outDoc->startSubsection(); } YY_BREAK -case 180: +case 185: YY_RULE_SETUP -#line 1728 "scanner.l" +#line 1901 "scanner.l" { outDoc->endSubsection(); } YY_BREAK -case 181: +case 186: YY_RULE_SETUP -#line 1729 "scanner.l" +#line 1902 "scanner.l" { outDoc->startSubsubsection(); } YY_BREAK -case 182: +case 187: YY_RULE_SETUP -#line 1730 "scanner.l" +#line 1903 "scanner.l" { outDoc->endSubsubsection(); } YY_BREAK -case 183: +case 188: YY_RULE_SETUP -#line 1731 "scanner.l" +#line 1904 "scanner.l" { BEGIN(DocHtmlAnchor); } YY_BREAK -case 184: +case 189: YY_RULE_SETUP -#line 1732 "scanner.l" +#line 1905 "scanner.l" { outDoc->writeAnchor(yytext); } YY_BREAK -case 185: +case 190: YY_RULE_SETUP -#line 1733 "scanner.l" +#line 1906 "scanner.l" { htmlUrl.resize(0); htmlText.resize(0); BEGIN(DocHtmlHref1); } YY_BREAK -case 186: +case 191: YY_RULE_SETUP -#line 1737 "scanner.l" +#line 1910 "scanner.l" { htmlUrl=yytext; } YY_BREAK -case 187: +case 192: YY_RULE_SETUP -#line 1740 "scanner.l" +#line 1913 "scanner.l" { BEGIN(DocHtmlHref2); } YY_BREAK -case 188: +case 193: YY_RULE_SETUP -#line 1741 "scanner.l" +#line 1914 "scanner.l" { htmlText+=yytext; } YY_BREAK /* <DocHtmlHref2>\n { htmlText+='\n'; } */ -case 189: +case 194: YY_RULE_SETUP -#line 1745 "scanner.l" +#line 1918 "scanner.l" { outDoc->writeHtmlLink(htmlUrl,htmlText); unput(*yytext); BEGIN(DocScan); } YY_BREAK -case 190: +case 195: YY_RULE_SETUP -#line 1750 "scanner.l" +#line 1923 "scanner.l" { BEGIN(DocScan); } YY_BREAK -case 191: +case 196: YY_RULE_SETUP -#line 1751 "scanner.l" +#line 1924 "scanner.l" { outDoc->docify(&yytext[1]); } YY_BREAK -case 192: +case 197: YY_RULE_SETUP -#line 1754 "scanner.l" +#line 1927 "scanner.l" { outDoc->docify(yytext+1); } YY_BREAK -case 193: +case 198: YY_RULE_SETUP -#line 1757 "scanner.l" +#line 1930 "scanner.l" { outDoc->startEmphasis(); + linkifyText(*outDoc,className,0,yytext); + outDoc->endEmphasis(); + BEGIN( DocScan ); + } + YY_BREAK +case 199: +YY_RULE_SETUP +#line 1936 "scanner.l" +{ + outDoc->startEmphasis(); generateRef(*outDoc,className,yytext,inSeeBlock); outDoc->endEmphasis(); BEGIN( DocScan ); - //addToIndex(yytext); + } + YY_BREAK +case 200: +YY_RULE_SETUP +#line 1942 "scanner.l" +{ + outDoc->startBold(); + linkifyText(*outDoc,className,0,yytext); + outDoc->endBold(); + BEGIN( DocScan ); } YY_BREAK -case 194: +case 201: YY_RULE_SETUP -#line 1764 "scanner.l" +#line 1948 "scanner.l" { outDoc->startBold(); generateRef(*outDoc,className,yytext,inSeeBlock); @@ -12707,85 +13055,99 @@ YY_RULE_SETUP BEGIN( DocScan ); } YY_BREAK -case 195: +case 202: YY_RULE_SETUP -#line 1770 "scanner.l" +#line 1954 "scanner.l" { - outDoc->startTypewriter(); - generateRef(*outDoc,className,yytext,inSeeBlock); + outDoc->startTypewriter(); + linkifyText(*outDoc,className,0,yytext); outDoc->endTypewriter(); BEGIN( DocScan ); } YY_BREAK -case 196: +case 203: +YY_RULE_SETUP +#line 1960 "scanner.l" +{ + outDoc->startTypewriter(); + generateRef(*outDoc,className,yytext,inSeeBlock); + outDoc->endTypewriter(); + BEGIN( DocScan ); + } + YY_BREAK +case 204: YY_RULE_SETUP -#line 1776 "scanner.l" +#line 1966 "scanner.l" { includeFile(*outDoc,stripQuotes(yytext),FALSE); BEGIN( DocScan ); } YY_BREAK -case 197: +case 205: YY_RULE_SETUP -#line 1780 "scanner.l" +#line 1970 "scanner.l" { includeFile(*outDoc,stripQuotes(yytext),TRUE); BEGIN( DocScan ); } YY_BREAK -case 198: +case 206: YY_RULE_SETUP -#line 1784 "scanner.l" +#line 1974 "scanner.l" { codeBlock += yytext; } YY_BREAK -case 199: +case 207: YY_RULE_SETUP -#line 1785 "scanner.l" +#line 1975 "scanner.l" { codeBlock += yytext; } YY_BREAK -case 200: +case 208: YY_RULE_SETUP -#line 1786 "scanner.l" +#line 1976 "scanner.l" { codeBlock += '\n'; } YY_BREAK -case 201: +case 209: YY_RULE_SETUP -#line 1787 "scanner.l" +#line 1977 "scanner.l" { codeBlock += yytext; } YY_BREAK -case 202: +case 210: YY_RULE_SETUP -#line 1788 "scanner.l" +#line 1978 "scanner.l" { codeBlock += *yytext; } YY_BREAK -case 203: +case 211: YY_RULE_SETUP -#line 1789 "scanner.l" +#line 1979 "scanner.l" { outDoc->docify(yytext); } YY_BREAK -case 204: +case 212: YY_RULE_SETUP -#line 1792 "scanner.l" +#line 1982 "scanner.l" { outDoc->docify(yytext); } YY_BREAK -case 205: +case 213: YY_RULE_SETUP -#line 1795 "scanner.l" +#line 1985 "scanner.l" { outDoc->writeChar('\n'); } YY_BREAK -case 206: +case 214: YY_RULE_SETUP -#line 1796 "scanner.l" +#line 1986 "scanner.l" { if (insideArgumentList) { insideArgumentList=FALSE; outDoc->endItemList(); } + else if (insideItemList) + { + forceEndItemList(); + } else { outDoc->newParagraph(); @@ -12793,46 +13155,70 @@ YY_RULE_SETUP if (inBlock()) endBlock(); } YY_BREAK -case 207: +case 215: +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ +yy_c_buf_p = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 1808 "scanner.l" +#line 2002 "scanner.l" { outDoc->writeChar(' '); } YY_BREAK -case 208: +case 216: +YY_RULE_SETUP +#line 2005 "scanner.l" +{ + outDoc->writeChar(' '); + } + YY_BREAK +case 217: +YY_RULE_SETUP +#line 2008 "scanner.l" +{ + outDoc->writeChar('\n'); + } + YY_BREAK +case 218: +YY_RULE_SETUP +#line 2011 "scanner.l" +{ + outDoc->docify(yytext); + } + YY_BREAK +case 219: YY_RULE_SETUP -#line 1811 "scanner.l" +#line 2014 "scanner.l" { outDoc->writeChar(*yytext); } YY_BREAK -case 209: +case 220: YY_RULE_SETUP -#line 1814 "scanner.l" +#line 2017 "scanner.l" { - bracketCount=0; + curlyCount=0; BEGIN(SkipCurlyBlock); } YY_BREAK -case 210: +case 221: YY_RULE_SETUP -#line 1818 "scanner.l" +#line 2021 "scanner.l" { roundCount=0; BEGIN(SkipRoundBlock); } YY_BREAK -case 211: +case 222: YY_RULE_SETUP -#line 1822 "scanner.l" +#line 2025 "scanner.l" { ++roundCount; } YY_BREAK -case 212: +case 223: YY_RULE_SETUP -#line 1825 "scanner.l" +#line 2028 "scanner.l" { if (roundCount ) --roundCount ; @@ -12840,57 +13226,59 @@ YY_RULE_SETUP BEGIN( NextSemi ) ; } YY_BREAK -case 213: +case 224: YY_RULE_SETUP -#line 1831 "scanner.l" +#line 2034 "scanner.l" { - ++bracketCount ; + ++curlyCount ; } YY_BREAK -case 214: +case 225: YY_RULE_SETUP -#line 1834 "scanner.l" +#line 2037 "scanner.l" { - if( bracketCount ) - --bracketCount ; + if( curlyCount ) + { + --curlyCount ; + } else BEGIN( NextSemi ) ; } YY_BREAK -case 215: +case 226: YY_RULE_SETUP -#line 1840 "scanner.l" +#line 2045 "scanner.l" YY_BREAK -case 216: +case 227: YY_RULE_SETUP -#line 1841 "scanner.l" +#line 2046 "scanner.l" YY_BREAK -case 217: +case 228: YY_RULE_SETUP -#line 1842 "scanner.l" +#line 2047 "scanner.l" YY_BREAK -case 218: +case 229: YY_RULE_SETUP -#line 1843 "scanner.l" +#line 2048 "scanner.l" { lastStringContext=NextSemi; BEGIN(SkipString); } YY_BREAK -case 219: +case 230: YY_RULE_SETUP -#line 1847 "scanner.l" +#line 2052 "scanner.l" { unput(*yytext); BEGIN( FindMembers ) ; } YY_BREAK -case 220: +case 231: YY_RULE_SETUP -#line 1851 "scanner.l" +#line 2056 "scanner.l" { current->sig = sig = TRUE; current->slot = slot = FALSE; current->protection = protection = Public ; @@ -12901,9 +13289,9 @@ YY_RULE_SETUP lineCount() ; } YY_BREAK -case 221: +case 232: YY_RULE_SETUP -#line 1861 "scanner.l" +#line 2066 "scanner.l" { current->protection = protection = Public ; current->slot = slot = TRUE; @@ -12915,9 +13303,9 @@ YY_RULE_SETUP lineCount(); } YY_BREAK -case 222: +case 233: YY_RULE_SETUP -#line 1872 "scanner.l" +#line 2077 "scanner.l" { current->protection = protection = Protected ; current->slot = slot = TRUE; @@ -12929,9 +13317,9 @@ YY_RULE_SETUP lineCount(); } YY_BREAK -case 223: +case 234: YY_RULE_SETUP -#line 1883 "scanner.l" +#line 2088 "scanner.l" { current->protection = protection = Private ; current->slot = slot = TRUE; @@ -12943,9 +13331,9 @@ YY_RULE_SETUP lineCount(); } YY_BREAK -case 224: +case 235: YY_RULE_SETUP -#line 1894 "scanner.l" +#line 2099 "scanner.l" { current->protection = protection = Public ; current->slot = slot = FALSE; @@ -12957,9 +13345,9 @@ YY_RULE_SETUP lineCount() ; } YY_BREAK -case 225: +case 236: YY_RULE_SETUP -#line 1904 "scanner.l" +#line 2109 "scanner.l" { current->protection = protection = Protected ; current->slot = slot = FALSE; @@ -12971,9 +13359,9 @@ YY_RULE_SETUP lineCount() ; } YY_BREAK -case 226: +case 237: YY_RULE_SETUP -#line 1914 "scanner.l" +#line 2119 "scanner.l" { current->protection = protection = Private ; current->slot = slot = FALSE; @@ -12985,52 +13373,52 @@ YY_RULE_SETUP lineCount() ; } YY_BREAK -case 227: +case 238: YY_RULE_SETUP -#line 1924 "scanner.l" +#line 2129 "scanner.l" { lineCount(); } YY_BREAK -case 228: +case 239: YY_RULE_SETUP -#line 1927 "scanner.l" +#line 2132 "scanner.l" { //current->type += " static "; current->stat = TRUE; lineCount(); } YY_BREAK -case 229: +case 240: YY_RULE_SETUP -#line 1931 "scanner.l" +#line 2136 "scanner.l" { current->stat = FALSE; lineCount(); } YY_BREAK -case 230: +case 241: YY_RULE_SETUP -#line 1935 "scanner.l" +#line 2140 "scanner.l" { current->type += " virtual "; current->virt = Virtual; lineCount(); } YY_BREAK -case 231: +case 242: YY_RULE_SETUP -#line 1939 "scanner.l" +#line 2144 "scanner.l" { current->inLine = TRUE; lineCount(); } YY_BREAK -case 232: +case 243: YY_RULE_SETUP -#line 1942 "scanner.l" +#line 2147 "scanner.l" { lineCount(); } YY_BREAK -case 233: +case 244: YY_RULE_SETUP -#line 1943 "scanner.l" +#line 2148 "scanner.l" { isTypedef=FALSE; current->section = Entry::NAMESPACE_SEC; @@ -13042,9 +13430,9 @@ YY_RULE_SETUP BEGIN( ClassName ); } YY_BREAK -case 234: +case 245: YY_RULE_SETUP -#line 1953 "scanner.l" +#line 2158 "scanner.l" { isTypedef=FALSE; current->section = Entry::NAMESPACE_SEC; @@ -13056,9 +13444,9 @@ YY_RULE_SETUP BEGIN( ClassName ); } YY_BREAK -case 235: +case 246: YY_RULE_SETUP -#line 1963 "scanner.l" +#line 2168 "scanner.l" { isTypedef=FALSE; current->section = Entry::INTERFACE_SEC; @@ -13071,9 +13459,9 @@ YY_RULE_SETUP BEGIN( ClassName ); } YY_BREAK -case 236: +case 247: YY_RULE_SETUP -#line 1974 "scanner.l" +#line 2179 "scanner.l" { isTypedef=((QCString)yytext).find("typedef")!=-1; current->section = Entry::CLASS_SEC; @@ -13086,9 +13474,9 @@ YY_RULE_SETUP BEGIN( ClassName ) ; } YY_BREAK -case 237: +case 248: YY_RULE_SETUP -#line 1985 "scanner.l" +#line 2190 "scanner.l" { isTypedef=((QCString)yytext).find("typedef")!=-1; current->section = Entry::STRUCT_SEC ; @@ -13101,9 +13489,9 @@ YY_RULE_SETUP BEGIN( ClassName ) ; } YY_BREAK -case 238: +case 249: YY_RULE_SETUP -#line 1996 "scanner.l" +#line 2201 "scanner.l" { isTypedef=((QCString)yytext).find("typedef")!=-1; current->section = Entry::UNION_SEC ; @@ -13116,9 +13504,9 @@ YY_RULE_SETUP BEGIN( ClassName ) ; } YY_BREAK -case 239: +case 250: YY_RULE_SETUP -#line 2007 "scanner.l" +#line 2212 "scanner.l" { isTypedef=((QCString)yytext).find("typedef")!=-1; current->section = Entry::ENUM_SEC ; @@ -13131,12 +13519,12 @@ YY_RULE_SETUP BEGIN( ClassName ) ; } YY_BREAK -case 240: +case 251: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 2018 "scanner.l" +#line 2223 "scanner.l" { lineCount(); current->name += yytext ; @@ -13144,30 +13532,30 @@ YY_RULE_SETUP BEGIN( FindMembers ) ; } YY_BREAK -case 241: +case 252: YY_RULE_SETUP -#line 2024 "scanner.l" +#line 2229 "scanner.l" { current->name += *yytext ; } YY_BREAK -case 242: +case 253: YY_RULE_SETUP -#line 2027 "scanner.l" +#line 2232 "scanner.l" { /* skip guided templ specifiers */ } YY_BREAK -case 243: +case 254: YY_RULE_SETUP -#line 2028 "scanner.l" +#line 2233 "scanner.l" { current->name = current->name.simplifyWhiteSpace(); unput(*yytext); BEGIN( FindMembers ) ; } YY_BREAK -case 244: +case 255: YY_RULE_SETUP -#line 2033 "scanner.l" +#line 2238 "scanner.l" { lineCount(); // class template specifier already found => member template specifier @@ -13201,34 +13589,35 @@ YY_RULE_SETUP currentArgumentList = current->tArgList; } templateStr="<"; - copyArgString=&templateStr; + fullArgString = templateStr.copy(); + copyArgString = &templateStr; currentArgumentContext = FindMembers; //printf("Start template list\n"); BEGIN( ReadTempArgs ); } YY_BREAK -case 245: +case 256: YY_RULE_SETUP -#line 2071 "scanner.l" +#line 2277 "scanner.l" { current->startLine=yyLineNr; lineCount(); BEGIN(Using); } YY_BREAK -case 246: +case 257: YY_RULE_SETUP -#line 2076 "scanner.l" +#line 2282 "scanner.l" { lineCount(); BEGIN(UsingDirective); } YY_BREAK -case 247: +case 258: YY_RULE_SETUP -#line 2077 "scanner.l" +#line 2283 "scanner.l" { BEGIN(FindMembers); } YY_BREAK -case 248: +case 259: YY_RULE_SETUP -#line 2078 "scanner.l" +#line 2284 "scanner.l" { current->name=yytext; current->fileName = yyFileName; current->section=Entry::USINGDIR_SEC; @@ -13243,21 +13632,21 @@ YY_RULE_SETUP BEGIN(Using); } YY_BREAK -case 249: +case 260: YY_RULE_SETUP -#line 2091 "scanner.l" +#line 2297 "scanner.l" { // guided template decl QCString n=yytext; addType( current ); current->name=n.left(n.length()-2); } YY_BREAK -case 250: +case 261: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 2096 "scanner.l" +#line 2302 "scanner.l" { sharpCount=0; lineCount(); @@ -13272,12 +13661,12 @@ YY_RULE_SETUP BEGIN( EndTemplate ); } YY_BREAK -case 251: +case 262: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 2109 "scanner.l" +#line 2315 "scanner.l" { sharpCount=0; lineCount(); @@ -13302,18 +13691,18 @@ YY_RULE_SETUP } <SkipTemplate>. */ -case 252: +case 263: YY_RULE_SETUP -#line 2133 "scanner.l" +#line 2339 "scanner.l" { current->name+='<'; *currentTemplateSpec+='<'; sharpCount++; } YY_BREAK -case 253: +case 264: YY_RULE_SETUP -#line 2138 "scanner.l" +#line 2344 "scanner.l" { current->name+='>'; *currentTemplateSpec+='>'; @@ -13324,9 +13713,9 @@ YY_RULE_SETUP } } YY_BREAK -case 254: +case 265: YY_RULE_SETUP -#line 2147 "scanner.l" +#line 2353 "scanner.l" { lineCount(); current->name+='>'; @@ -13335,18 +13724,19 @@ YY_RULE_SETUP { current->args = "("; currentArgumentContext = FuncQual; - copyArgString=¤t->args; + fullArgString = current->args.copy(); + copyArgString = ¤t->args; //printf("Found %s\n",current->name.data()); BEGIN( ReadFuncArgType ) ; } } YY_BREAK -case 255: +case 266: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 2160 "scanner.l" +#line 2367 "scanner.l" { lineCount(); current->name+='>'; @@ -13357,17 +13747,17 @@ YY_RULE_SETUP } } YY_BREAK -case 256: +case 267: YY_RULE_SETUP -#line 2169 "scanner.l" +#line 2376 "scanner.l" { current->name+=*yytext; *currentTemplateSpec+=*yytext; } YY_BREAK -case 257: +case 268: YY_RULE_SETUP -#line 2173 "scanner.l" +#line 2380 "scanner.l" { lineCount(); if (YY_START==FindMembers) @@ -13386,69 +13776,69 @@ YY_RULE_SETUP BEGIN(FindMembers); } YY_BREAK -case 258: +case 269: YY_RULE_SETUP -#line 2190 "scanner.l" +#line 2397 "scanner.l" { lastCPPContext = YY_START; BEGIN( SkipCPP ) ; } YY_BREAK -case 259: +case 270: YY_RULE_SETUP -#line 2193 "scanner.l" +#line 2400 "scanner.l" { current->bodyLine = yyLineNr; BEGIN( Define ); } YY_BREAK -case 260: +case 271: YY_RULE_SETUP -#line 2197 "scanner.l" +#line 2404 "scanner.l" YY_BREAK -case 261: +case 272: YY_RULE_SETUP -#line 2198 "scanner.l" +#line 2405 "scanner.l" { yyLineNr++ ; } YY_BREAK -case 262: +case 273: YY_RULE_SETUP -#line 2199 "scanner.l" +#line 2406 "scanner.l" { yyLineNr++ ; BEGIN( lastCPPContext) ; } YY_BREAK -case 263: +case 274: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 2202 "scanner.l" +#line 2409 "scanner.l" { current->bodyLine = yyLineNr; current->name = yytext; BEGIN( DefineArg ); } YY_BREAK -case 264: +case 275: YY_RULE_SETUP -#line 2207 "scanner.l" +#line 2414 "scanner.l" { //printf("Define with args\n"); current->args += ')'; BEGIN( DefineEnd ); } YY_BREAK -case 265: +case 276: YY_RULE_SETUP -#line 2212 "scanner.l" +#line 2419 "scanner.l" { current->args += *yytext; } YY_BREAK -case 266: +case 277: YY_RULE_SETUP -#line 2215 "scanner.l" +#line 2422 "scanner.l" { //printf("Define `%s' without args\n",yytext); current->bodyLine = yyLineNr; @@ -13456,9 +13846,9 @@ YY_RULE_SETUP BEGIN(DefineEnd); } YY_BREAK -case 267: +case 278: YY_RULE_SETUP -#line 2221 "scanner.l" +#line 2428 "scanner.l" { //printf("End define\n"); yyLineNr++; @@ -13478,34 +13868,34 @@ YY_RULE_SETUP BEGIN(FindMembers); } YY_BREAK -case 268: +case 279: YY_RULE_SETUP -#line 2239 "scanner.l" +#line 2446 "scanner.l" { yyLineNr++; } YY_BREAK -case 269: +case 280: YY_RULE_SETUP -#line 2242 "scanner.l" +#line 2449 "scanner.l" { lastStringContext=DefineEnd; BEGIN(SkipString); } YY_BREAK -case 270: +case 281: YY_RULE_SETUP -#line 2246 "scanner.l" +#line 2453 "scanner.l" YY_BREAK -case 271: +case 282: YY_RULE_SETUP -#line 2248 "scanner.l" +#line 2455 "scanner.l" { current->name += yytext ; } YY_BREAK -case 272: +case 283: YY_RULE_SETUP -#line 2249 "scanner.l" +#line 2456 "scanner.l" { lineCount(); if (current->bodyLine==-1) @@ -13529,9 +13919,9 @@ YY_RULE_SETUP } } YY_BREAK -case 273: +case 284: YY_RULE_SETUP -#line 2271 "scanner.l" +#line 2478 "scanner.l" { lineCount(); lastAfterDocContext = YY_START; @@ -13553,9 +13943,9 @@ YY_RULE_SETUP } } YY_BREAK -case 274: +case 285: YY_RULE_SETUP -#line 2291 "scanner.l" +#line 2498 "scanner.l" { lineCount(); lastAfterDocContext = YY_START; @@ -13580,24 +13970,253 @@ YY_RULE_SETUP } } YY_BREAK -case 275: +case 286: YY_RULE_SETUP -#line 2314 "scanner.l" +#line 2521 "scanner.l" { - current->bodyLine=yyLineNr; - BEGIN(NextSemi); + current->bodyLine = yyLineNr; + lastInitializerContext = YY_START; + BEGIN(ReadInitializer); } YY_BREAK -case 276: +/* Read initializer rules */ +case 287: +YY_RULE_SETUP +#line 2527 "scanner.l" +{ + lastRoundContext=YY_START; + pCopyRoundString=¤t->initializer; + roundCount=0; + current->initializer+=*yytext; + BEGIN(CopyRound); + } + YY_BREAK +case 288: +YY_RULE_SETUP +#line 2534 "scanner.l" +{ + lastCurlyContext=YY_START; + pCopyCurlyString=¤t->initializer; + curlyCount=0; + current->initializer+=*yytext; + BEGIN(CopyCurly); + } + YY_BREAK +case 289: +YY_RULE_SETUP +#line 2541 "scanner.l" +{ + //printf(">> initializer `%s' <<\n",current->initializer.data()); + unput(*yytext); + BEGIN(lastInitializerContext); + } + YY_BREAK +case 290: YY_RULE_SETUP -#line 2318 "scanner.l" +#line 2546 "scanner.l" +{ + lastStringContext=YY_START; + current->initializer+=*yytext; + pCopyQuotedString=¤t->initializer; + BEGIN(CopyString); + } + YY_BREAK +case 291: +YY_RULE_SETUP +#line 2552 "scanner.l" + + YY_BREAK +case 292: +YY_RULE_SETUP +#line 2553 "scanner.l" + + YY_BREAK +case 293: +YY_RULE_SETUP +#line 2554 "scanner.l" + + YY_BREAK +case 294: +YY_RULE_SETUP +#line 2555 "scanner.l" +{ + current->initializer+=*yytext; + yyLineNr++; + } + YY_BREAK +case 295: +YY_RULE_SETUP +#line 2559 "scanner.l" +{ + current->initializer+=*yytext; + } + YY_BREAK +/* generic quoted string copy rules */ +case 296: +YY_RULE_SETUP +#line 2564 "scanner.l" +{ + *pCopyQuotedString+=yytext; + } + YY_BREAK +case 297: +YY_RULE_SETUP +#line 2567 "scanner.l" +{ + *pCopyQuotedString+=*yytext; + BEGIN( lastStringContext ); + } + YY_BREAK +case 298: +YY_RULE_SETUP +#line 2571 "scanner.l" +{ + *pCopyQuotedString+=yytext; + } + YY_BREAK +case 299: +YY_RULE_SETUP +#line 2574 "scanner.l" +{ + *pCopyQuotedString+=*yytext; + yyLineNr++; + } + YY_BREAK +case 300: +YY_RULE_SETUP +#line 2578 "scanner.l" +{ + *pCopyQuotedString+=*yytext; + } + YY_BREAK +/* generic round bracket list copy rules */ +case 301: +YY_RULE_SETUP +#line 2583 "scanner.l" +{ + *pCopyRoundString+=*yytext; + pCopyQuotedString=pCopyRoundString; + lastStringContext=YY_START; + BEGIN(CopyString); + } + YY_BREAK +case 302: +YY_RULE_SETUP +#line 2589 "scanner.l" +{ + *pCopyRoundString+=*yytext; + roundCount++; + } + YY_BREAK +case 303: +YY_RULE_SETUP +#line 2593 "scanner.l" +{ + *pCopyRoundString+=*yytext; + if (--roundCount<0) + BEGIN(lastRoundContext); + } + YY_BREAK +case 304: +YY_RULE_SETUP +#line 2598 "scanner.l" +{ + yyLineNr++; + *pCopyRoundString+=*yytext; + } + YY_BREAK +case 305: +YY_RULE_SETUP +#line 2602 "scanner.l" +{ *pCopyRoundString+=yytext; } + YY_BREAK +case 306: +YY_RULE_SETUP +#line 2603 "scanner.l" +{ *pCopyRoundString+=yytext; } + YY_BREAK +case 307: +YY_RULE_SETUP +#line 2604 "scanner.l" +{ *pCopyRoundString+=yytext; } + YY_BREAK +case 308: +YY_RULE_SETUP +#line 2605 "scanner.l" +{ + *pCopyRoundString+=yytext; + } + YY_BREAK +/* generic curly bracket list copy rules */ +case 309: +YY_RULE_SETUP +#line 2610 "scanner.l" +{ + *pCopyCurlyString+=*yytext; + pCopyQuotedString=pCopyCurlyString; + lastStringContext=YY_START; + BEGIN(CopyString); + } + YY_BREAK +case 310: +YY_RULE_SETUP +#line 2616 "scanner.l" +{ + *pCopyCurlyString+=*yytext; + curlyCount++; + } + YY_BREAK +case 311: +YY_RULE_SETUP +#line 2620 "scanner.l" +{ + *pCopyCurlyString+=*yytext; + if (--curlyCount<0) + BEGIN(lastCurlyContext); + } + YY_BREAK +case 312: +YY_RULE_SETUP +#line 2625 "scanner.l" +{ *pCopyCurlyString+=yytext; } + YY_BREAK +case 313: +YY_RULE_SETUP +#line 2626 "scanner.l" +{ *pCopyCurlyString+=yytext; } + YY_BREAK +case 314: +YY_RULE_SETUP +#line 2627 "scanner.l" +{ *pCopyCurlyString+=yytext; } + YY_BREAK +case 315: +YY_RULE_SETUP +#line 2628 "scanner.l" +{ + *pCopyCurlyString+=yytext; + } + YY_BREAK +case 316: +YY_RULE_SETUP +#line 2631 "scanner.l" +{ + yyLineNr++; + *pCopyCurlyString+=*yytext; + } + YY_BREAK +case 317: +YY_RULE_SETUP +#line 2636 "scanner.l" { QCString oldType = current->type.copy(); QCString oldDocs = current->doc.copy(); if ( *yytext != ':') { if (current->bodyLine==-1) + { current->bodyLine = yyLineNr; + } current->type=current->type.simplifyWhiteSpace(); current->args=current->args.simplifyWhiteSpace(); current->name=current->name.stripWhiteSpace(); @@ -13632,86 +14251,87 @@ YY_RULE_SETUP } } YY_BREAK -case 277: +case 318: YY_RULE_SETUP -#line 2359 "scanner.l" +#line 2679 "scanner.l" { current->args += yytext ; sharpCount=1; BEGIN( Array ) ; } YY_BREAK -case 278: +case 319: YY_RULE_SETUP -#line 2363 "scanner.l" +#line 2683 "scanner.l" { current->args += *yytext ; if (--sharpCount<=0) BEGIN( FindMembers ) ; } YY_BREAK -case 279: +case 320: YY_RULE_SETUP -#line 2367 "scanner.l" +#line 2687 "scanner.l" { current->args += *yytext ; sharpCount++; } YY_BREAK -case 280: +case 321: YY_RULE_SETUP -#line 2370 "scanner.l" +#line 2690 "scanner.l" { current->args += *yytext ; } YY_BREAK -case 281: +case 322: YY_RULE_SETUP -#line 2372 "scanner.l" +#line 2692 "scanner.l" { addType( current ) ; current->type += yytext ; BEGIN( Sharp ) ; } YY_BREAK -case 282: +case 323: YY_RULE_SETUP -#line 2376 "scanner.l" +#line 2696 "scanner.l" { current->type += *yytext ; if (--sharpCount<=0) BEGIN( FindMembers ) ; } YY_BREAK -case 283: +case 324: YY_RULE_SETUP -#line 2380 "scanner.l" +#line 2700 "scanner.l" { current->type += *yytext ; sharpCount++; } YY_BREAK -case 284: +case 325: YY_RULE_SETUP -#line 2383 "scanner.l" +#line 2703 "scanner.l" { lineCount(); } YY_BREAK -case 285: +case 326: YY_RULE_SETUP -#line 2386 "scanner.l" +#line 2706 "scanner.l" { current->type += *yytext ; } YY_BREAK -case 286: +case 327: YY_RULE_SETUP -#line 2387 "scanner.l" +#line 2707 "scanner.l" { current->name = yytext; } YY_BREAK -case 287: +case 328: YY_RULE_SETUP -#line 2390 "scanner.l" +#line 2710 "scanner.l" { - BEGIN(FindFieldArg); + lastInitializerContext = YY_START; + BEGIN(ReadInitializer); } YY_BREAK -case 288: +case 329: YY_RULE_SETUP -#line 2393 "scanner.l" +#line 2714 "scanner.l" { //printf("adding `%s' `%s' `%s' to enum `%s'\n", // current->type.data(), current->name.data(), @@ -13735,72 +14355,71 @@ YY_RULE_SETUP current->slot = slot; } YY_BREAK -case 289: -YY_RULE_SETUP -#line 2415 "scanner.l" -{ unput(*yytext); BEGIN(FindFields); } - YY_BREAK -case 290: +/* +<FindFieldArg>"," { unput(*yytext); BEGIN(FindFields); } + */ +case 330: YY_RULE_SETUP -#line 2416 "scanner.l" +#line 2739 "scanner.l" { current->program += yytext ; } YY_BREAK -case 291: +case 331: YY_RULE_SETUP -#line 2417 "scanner.l" +#line 2740 "scanner.l" { current->program += yytext ; } YY_BREAK -case 292: +case 332: YY_RULE_SETUP -#line 2418 "scanner.l" +#line 2741 "scanner.l" { current->program += yytext ; } YY_BREAK -case 293: +case 333: YY_RULE_SETUP -#line 2419 "scanner.l" +#line 2742 "scanner.l" { current->program += yytext ; lastContext = Curly ; BEGIN( Comment ) ; } YY_BREAK -case 294: +case 334: YY_RULE_SETUP -#line 2423 "scanner.l" +#line 2746 "scanner.l" { current->program += yytext ; ++yyLineNr ; lastContext = Curly ; BEGIN( Comment ) ; } YY_BREAK -case 295: +case 335: YY_RULE_SETUP -#line 2428 "scanner.l" +#line 2751 "scanner.l" { current->program += yytext; } YY_BREAK -case 296: +case 336: YY_RULE_SETUP -#line 2429 "scanner.l" +#line 2752 "scanner.l" { current->program += yytext; } YY_BREAK -case 297: +case 337: YY_RULE_SETUP -#line 2430 "scanner.l" +#line 2753 "scanner.l" { current->program += yytext; } YY_BREAK -case 298: +case 338: YY_RULE_SETUP -#line 2431 "scanner.l" +#line 2754 "scanner.l" { current->program += yytext ; - ++bracketCount ; + ++curlyCount ; } YY_BREAK -case 299: +case 339: YY_RULE_SETUP -#line 2434 "scanner.l" -{ if ( bracketCount ) +#line 2757 "scanner.l" +{ //err("Curly count=%d\n",curlyCount); + if ( curlyCount>0 ) { current->program += yytext ; - --bracketCount ; + --curlyCount ; } else { @@ -13850,9 +14469,9 @@ YY_RULE_SETUP } } YY_BREAK -case 300: +case 340: YY_RULE_SETUP -#line 2486 "scanner.l" +#line 2810 "scanner.l" { if (current->section == Entry::ENUM_SEC) { @@ -13876,9 +14495,9 @@ YY_RULE_SETUP BEGIN(MemberSpecSkip); } YY_BREAK -case 301: +case 341: YY_RULE_SETUP -#line 2508 "scanner.l" +#line 2832 "scanner.l" { // the [] part could be improved. lineCount(); int i=0,l=yyleng,j; @@ -13894,9 +14513,9 @@ YY_RULE_SETUP msType = yytext; msType=msType.left(i); } YY_BREAK -case 302: +case 342: YY_RULE_SETUP -#line 2522 "scanner.l" +#line 2846 "scanner.l" { if (msName.isEmpty() && !current->name.isEmpty()) /* && (current->section & Entry::COMPOUND_MASK)) */ @@ -13936,7 +14555,7 @@ YY_RULE_SETUP varEntry->name = msName.stripWhiteSpace(); varEntry->type = current->type.simplifyWhiteSpace()+" "; varEntry->args = msArgs; //current->args.simplifyWhiteSpace(); - //if (current->name.length()>0 && current->name[0]!='@' && + //if (!current->name.isEmpty() && current->name[0]!='@' && // current->parent->section & Entry::COMPOUND_MASK) // varEntry->type+=current->parent->name+"::"; if (isTypedef) @@ -13966,46 +14585,48 @@ YY_RULE_SETUP } } YY_BREAK -case 303: +case 343: YY_RULE_SETUP -#line 2590 "scanner.l" -{ BEGIN(MemberSpecSkip); } +#line 2914 "scanner.l" +{ + lastInitializerContext=YY_START; + BEGIN(ReadInitializer); + /* BEGIN(MemberSpecSkip); */ + } YY_BREAK -case 304: -YY_RULE_SETUP -#line 2591 "scanner.l" -{ - bracketCount=0; +/* +<MemberSpecSkip>"{" { + curlyCount=0; lastCurlyContext = MemberSpecSkip; previous = current; BEGIN(SkipCurly); } - YY_BREAK -case 305: + */ +case 344: YY_RULE_SETUP -#line 2597 "scanner.l" +#line 2927 "scanner.l" { BEGIN(MemberSpec); } YY_BREAK -case 306: +case 345: YY_RULE_SETUP -#line 2598 "scanner.l" +#line 2928 "scanner.l" { unput(';'); BEGIN(MemberSpec); } YY_BREAK -case 307: +case 346: YY_RULE_SETUP -#line 2599 "scanner.l" +#line 2929 "scanner.l" { current->program += yytext ; lineCount() ; } YY_BREAK -case 308: +case 347: YY_RULE_SETUP -#line 2602 "scanner.l" +#line 2932 "scanner.l" { current->program += yytext ; } YY_BREAK -case 309: +case 348: YY_RULE_SETUP -#line 2604 "scanner.l" +#line 2934 "scanner.l" { current->bodyLine = yyLineNr; lineCount(); @@ -14015,51 +14636,51 @@ YY_RULE_SETUP BEGIN( FuncPtr ); } YY_BREAK -case 310: +case 349: YY_RULE_SETUP -#line 2612 "scanner.l" +#line 2942 "scanner.l" { current->name = yytext; BEGIN( EndFuncPtr ); } YY_BREAK -case 311: +case 350: YY_RULE_SETUP -#line 2616 "scanner.l" +#line 2946 "scanner.l" { //printf("Error: FuncPtr `%c' unexpected at line %d of %s\n",*yytext,yyLineNr,yyFileName); } YY_BREAK -case 312: +case 351: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 2619 "scanner.l" +#line 2949 "scanner.l" { // a variable with extra braces lineCount(); current->type+=funcPtrType.data()+1; BEGIN(FindMembers); } YY_BREAK -case 313: +case 352: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 2624 "scanner.l" +#line 2954 "scanner.l" { // a variable function lineCount(); current->type+=funcPtrType+")"; BEGIN(FindMembers); } YY_BREAK -case 314: +case 353: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 2629 "scanner.l" +#line 2959 "scanner.l" { lineCount(); current->type+=funcPtrType.data(); @@ -14067,113 +14688,114 @@ YY_RULE_SETUP BEGIN(FindMembers); } YY_BREAK -case 315: +case 354: YY_RULE_SETUP -#line 2635 "scanner.l" +#line 2965 "scanner.l" { // a function returning a function current->args += *yytext ; - bracketCount=0; + roundCount=0; BEGIN( FuncFunc ); } YY_BREAK -case 316: +case 355: YY_RULE_SETUP -#line 2640 "scanner.l" +#line 2970 "scanner.l" { BEGIN(FindMembers); } YY_BREAK -case 317: +case 356: YY_RULE_SETUP -#line 2643 "scanner.l" +#line 2973 "scanner.l" { current->args += *yytext ; - ++bracketCount; + ++roundCount; } YY_BREAK -case 318: +case 357: YY_RULE_SETUP -#line 2647 "scanner.l" +#line 2977 "scanner.l" { current->args += *yytext ; - if ( bracketCount ) - --bracketCount; + if ( roundCount ) + --roundCount; else { BEGIN(FuncFuncEnd); } } YY_BREAK -case 319: +case 358: YY_RULE_SETUP -#line 2656 "scanner.l" +#line 2986 "scanner.l" { lineCount(); current->type+=funcPtrType+")("; BEGIN(FuncFuncType); } YY_BREAK -case 320: +case 359: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 2661 "scanner.l" +#line 2991 "scanner.l" { lineCount(); current->type+=funcPtrType.data()+1; BEGIN(Function); } YY_BREAK -case 321: +case 360: YY_RULE_SETUP -#line 2666 "scanner.l" +#line 2996 "scanner.l" { current->args += *yytext; } YY_BREAK -case 322: +case 361: YY_RULE_SETUP -#line 2669 "scanner.l" +#line 2999 "scanner.l" { current->type += *yytext; - bracketCount++; + roundCount++; } YY_BREAK -case 323: +case 362: YY_RULE_SETUP -#line 2673 "scanner.l" +#line 3003 "scanner.l" { current->type += *yytext; - if (bracketCount) - --bracketCount; + if (roundCount) + --roundCount; else BEGIN(Function); } YY_BREAK -case 324: +case 363: YY_RULE_SETUP -#line 2680 "scanner.l" +#line 3010 "scanner.l" { lineCount() ; current->type += ", " ; } YY_BREAK -case 325: +case 364: YY_RULE_SETUP -#line 2681 "scanner.l" +#line 3011 "scanner.l" { lineCount() ; current->type += ' ' ; } YY_BREAK -case 326: +case 365: YY_RULE_SETUP -#line 2682 "scanner.l" +#line 3012 "scanner.l" { current->type += *yytext; } YY_BREAK -case 327: +case 366: YY_RULE_SETUP -#line 2685 "scanner.l" +#line 3015 "scanner.l" { current->args = yytext; current->bodyLine = yyLineNr; currentArgumentContext = FuncQual; + fullArgString=current->args.copy(); copyArgString=¤t->args; BEGIN( ReadFuncArgType ) ; //printf(">>> Read function arguments!\n"); @@ -14187,168 +14809,270 @@ YY_RULE_SETUP } */ /*- Function argument reading rules ---------------------------------------*/ -case 328: +case 367: YY_RULE_SETUP -#line 2702 "scanner.l" -{ *copyArgString+=yytext; } +#line 3033 "scanner.l" +{ *copyArgString+=yytext; + fullArgString+=yytext; + } YY_BREAK -case 329: +case 368: YY_RULE_SETUP -#line 2703 "scanner.l" -{ *copyArgString+=yytext; } +#line 3036 "scanner.l" +{ *copyArgString+=yytext; + fullArgString+=yytext; + } YY_BREAK -case 330: +case 369: YY_RULE_SETUP -#line 2704 "scanner.l" -{ *copyArgString+=yytext; } +#line 3039 "scanner.l" +{ + *copyArgString+=yytext; + fullArgString+=yytext; + } YY_BREAK -case 331: +case 370: YY_RULE_SETUP -#line 2705 "scanner.l" +#line 3043 "scanner.l" { *copyArgString+=" "; + fullArgString+=" "; lineCount(); } YY_BREAK -case 332: +case 371: YY_RULE_SETUP -#line 2709 "scanner.l" +#line 3048 "scanner.l" { *copyArgString+=*yytext; + fullArgString+=*yytext; lastCopyArgStringContext = YY_START; BEGIN( CopyArgString ); } YY_BREAK -case 333: +case 372: YY_RULE_SETUP -#line 2714 "scanner.l" +#line 3054 "scanner.l" { *copyArgString+=*yytext; + fullArgString+=*yytext; argRoundCount=0; lastCopyArgContext = YY_START; BEGIN( CopyArgRound ); } YY_BREAK -case 334: +case 373: YY_RULE_SETUP -#line 2720 "scanner.l" +#line 3061 "scanner.l" { *copyArgString+=*yytext; - stringToArgumentList(*copyArgString,current->argList); + fullArgString+=*yytext; + stringToArgumentList(fullArgString,current->argList); BEGIN( currentArgumentContext ); } YY_BREAK -case 335: +/* a special comment */ +case 374: +YY_RULE_SETUP +#line 3068 "scanner.l" +{ + fullArgString+=yytext; + lastCopyArgChar=0; + if (yytext[1]=='/') + BEGIN( CopyArgCommentLine ); + else + BEGIN( CopyArgComment ); + } + YY_BREAK +/* `)' followed by a special comment */ +case 375: +YY_RULE_SETUP +#line 3077 "scanner.l" +{ + lineCount(); + lastCopyArgChar=*yytext; + QCString text=&yytext[1]; + text=text.stripWhiteSpace(); + fullArgString+=text; + if (text.find("//")!=-1) + BEGIN( CopyArgCommentLine ); + else + BEGIN( CopyArgComment ); + } + YY_BREAK +case 376: +YY_RULE_SETUP +#line 3088 "scanner.l" +{ fullArgString+=yytext; } + YY_BREAK +case 377: +YY_RULE_SETUP +#line 3089 "scanner.l" +{ fullArgString+=yytext; + if (lastCopyArgChar!=0) + unput(lastCopyArgChar); + BEGIN( ReadFuncArgType ); + } + YY_BREAK +case 378: +YY_RULE_SETUP +#line 3094 "scanner.l" +{ fullArgString+=yytext; + if (lastCopyArgChar!=0) + unput(lastCopyArgChar); + BEGIN( ReadFuncArgType ); + } + YY_BREAK +case 379: +YY_RULE_SETUP +#line 3099 "scanner.l" +{ fullArgString+=yytext; } + YY_BREAK +case 380: +YY_RULE_SETUP +#line 3100 "scanner.l" +{ fullArgString+=*yytext; yyLineNr++; } + YY_BREAK +case 381: +YY_RULE_SETUP +#line 3101 "scanner.l" +{ fullArgString+=*yytext; } + YY_BREAK +case 382: YY_RULE_SETUP -#line 2725 "scanner.l" +#line 3102 "scanner.l" { *copyArgString+=*yytext; + fullArgString+=*yytext; argSharpCount=0; BEGIN( CopyArgSharp ); } YY_BREAK -case 336: +case 383: YY_RULE_SETUP -#line 2730 "scanner.l" +#line 3108 "scanner.l" { *copyArgString+=*yytext; + fullArgString+=*yytext; //printf("end template list %s\n",copyArgString->data()); - stringToArgumentList(*copyArgString,currentArgumentList); + stringToArgumentList(fullArgString,currentArgumentList); BEGIN( currentArgumentContext ); } YY_BREAK -case 337: +case 384: YY_RULE_SETUP -#line 2736 "scanner.l" +#line 3115 "scanner.l" { argRoundCount++; *copyArgString+=*yytext; + fullArgString+=*yytext; } YY_BREAK -case 338: +case 385: YY_RULE_SETUP -#line 2740 "scanner.l" +#line 3120 "scanner.l" { *copyArgString+=*yytext; + fullArgString+=*yytext; if (argRoundCount>0) argRoundCount--; else BEGIN( lastCopyArgContext ); } YY_BREAK -case 339: +case 386: YY_RULE_SETUP -#line 2747 "scanner.l" +#line 3128 "scanner.l" { argSharpCount++; *copyArgString+=*yytext; + fullArgString+=*yytext; } YY_BREAK -case 340: +case 387: YY_RULE_SETUP -#line 2751 "scanner.l" +#line 3133 "scanner.l" { *copyArgString+=*yytext; + fullArgString+=*yytext; if (argRoundCount>0) argRoundCount--; else BEGIN( ReadTempArgs ); } YY_BREAK -case 341: +case 388: YY_RULE_SETUP -#line 2758 "scanner.l" +#line 3141 "scanner.l" { *copyArgString+=yytext; + fullArgString+=yytext; } YY_BREAK -case 342: +case 389: YY_RULE_SETUP -#line 2761 "scanner.l" +#line 3145 "scanner.l" { *copyArgString+=*yytext; + fullArgString+=*yytext; BEGIN( lastCopyArgStringContext ); } YY_BREAK -case 343: +case 390: YY_RULE_SETUP -#line 2765 "scanner.l" -{ *copyArgString+=yytext; } +#line 3150 "scanner.l" +{ + *copyArgString+=yytext; + fullArgString+=yytext; + } YY_BREAK -case 344: +case 391: YY_RULE_SETUP -#line 2766 "scanner.l" -{ *copyArgString+=yytext; } +#line 3154 "scanner.l" +{ + *copyArgString+=yytext; + fullArgString+=yytext; + } YY_BREAK -case 345: +case 392: YY_RULE_SETUP -#line 2767 "scanner.l" -{ *copyArgString+=yytext; } +#line 3158 "scanner.l" +{ + *copyArgString+=yytext; + fullArgString+=yytext; + } YY_BREAK -case 346: +case 393: YY_RULE_SETUP -#line 2768 "scanner.l" -{ yyLineNr++; *copyArgString+=*yytext; } +#line 3162 "scanner.l" +{ + yyLineNr++; + *copyArgString+=*yytext; + fullArgString+=*yytext; + } YY_BREAK -case 347: +case 394: YY_RULE_SETUP -#line 2769 "scanner.l" -{ *copyArgString+=*yytext; } +#line 3167 "scanner.l" +{ + *copyArgString+=*yytext; + fullArgString+=*yytext; + } YY_BREAK /*------------------------------------------------------------------------*/ -case 348: +case 395: YY_RULE_SETUP -#line 2776 "scanner.l" +#line 3177 "scanner.l" { current->args += *yytext ; - ++bracketCount ; + ++roundCount ; } YY_BREAK -case 349: +case 396: YY_RULE_SETUP -#line 2779 "scanner.l" +#line 3180 "scanner.l" { current->args += *yytext ; - if ( bracketCount ) - --bracketCount ; + if ( roundCount ) + --roundCount ; else BEGIN( FuncQual ) ; } @@ -14358,32 +15082,32 @@ YY_RULE_SETUP BEGIN(SkipCPP); } */ -case 350: +case 397: YY_RULE_SETUP -#line 2790 "scanner.l" +#line 3191 "scanner.l" { unput(*yytext); BEGIN( Function ); } YY_BREAK -case 351: +case 398: YY_RULE_SETUP -#line 2791 "scanner.l" +#line 3192 "scanner.l" { lineCount() ; current->args += " const "; current->argList->constSpecifier=TRUE; } YY_BREAK -case 352: +case 399: YY_RULE_SETUP -#line 2796 "scanner.l" +#line 3197 "scanner.l" { lineCount() ; current->args += " volatile "; current->argList->volatileSpecifier=TRUE; } YY_BREAK -case 353: +case 400: YY_RULE_SETUP -#line 2801 "scanner.l" +#line 3202 "scanner.l" { lineCount() ; current->args += " = 0"; @@ -14391,88 +15115,88 @@ YY_RULE_SETUP current->argList->pureSpecifier=TRUE; } YY_BREAK -case 354: +case 401: YY_RULE_SETUP -#line 2807 "scanner.l" +#line 3208 "scanner.l" { lineCount() ; current->args += ", " ; } YY_BREAK -case 355: +case 402: YY_RULE_SETUP -#line 2811 "scanner.l" +#line 3212 "scanner.l" { lineCount() ; current->args += ' ' ; } YY_BREAK -case 356: +case 403: YY_RULE_SETUP -#line 2815 "scanner.l" +#line 3216 "scanner.l" { current->args += *yytext; } YY_BREAK -case 357: +case 404: YY_RULE_SETUP -#line 2816 "scanner.l" +#line 3217 "scanner.l" { current->exception = " throw (" ; lineCount() ; BEGIN( ExcpRound ) ; } YY_BREAK -case 358: +case 405: YY_RULE_SETUP -#line 2821 "scanner.l" +#line 3222 "scanner.l" { current->exception = " raises (" ; lineCount() ; BEGIN( ExcpRound ) ; } YY_BREAK -case 359: +case 406: YY_RULE_SETUP -#line 2826 "scanner.l" +#line 3227 "scanner.l" { current->exception += *yytext ; - ++bracketCount ; + ++roundCount ; } YY_BREAK -case 360: +case 407: YY_RULE_SETUP -#line 2829 "scanner.l" +#line 3230 "scanner.l" { current->exception += *yytext ; - if ( bracketCount ) - --bracketCount ; + if ( roundCount ) + --roundCount ; else BEGIN( FuncQual ) ; } YY_BREAK -case 361: +case 408: YY_RULE_SETUP -#line 2835 "scanner.l" +#line 3236 "scanner.l" { current->exception += yytext; } YY_BREAK -case 362: +case 409: YY_RULE_SETUP -#line 2838 "scanner.l" +#line 3239 "scanner.l" { current->type += current->name ; current->name = current->args ; current->args = yytext ; BEGIN( FuncRound ) ; } YY_BREAK -case 363: +case 410: YY_RULE_SETUP -#line 2843 "scanner.l" +#line 3244 "scanner.l" { lastCPPContext = YY_START; BEGIN(SkipCPP); } YY_BREAK -case 364: +case 411: YY_RULE_SETUP -#line 2846 "scanner.l" +#line 3247 "scanner.l" { current->name=current->name.simplifyWhiteSpace(); current->type=current->type.simplifyWhiteSpace(); @@ -14553,6 +15277,7 @@ YY_RULE_SETUP if (current_root->section & Entry::COMPOUND_MASK) previous->inLine = TRUE; //addToBody(yytext); + curlyCount=0; BEGIN( SkipCurly ) ; } else if( *yytext == ':' ) @@ -14568,30 +15293,32 @@ YY_RULE_SETUP } } YY_BREAK -case 365: +case 412: YY_RULE_SETUP -#line 2941 "scanner.l" +#line 3343 "scanner.l" { //addToBody(yytext); lastCurlyContext = FindMembers; BEGIN( SkipCurly ) ; } YY_BREAK -case 366: +case 413: YY_RULE_SETUP -#line 2946 "scanner.l" +#line 3348 "scanner.l" { //addToBody(yytext); - ++bracketCount ; + ++curlyCount ; } YY_BREAK -case 367: +case 414: YY_RULE_SETUP -#line 2950 "scanner.l" +#line 3352 "scanner.l" { //addToBody(yytext); - if( bracketCount ) - --bracketCount ; + if( curlyCount ) + { + --curlyCount ; + } else { previous->endBodyLine=yyLineNr; @@ -14599,14 +15326,14 @@ YY_RULE_SETUP } } YY_BREAK -case 368: +case 415: YY_RULE_SETUP -#line 2960 "scanner.l" +#line 3364 "scanner.l" { - if ( bracketCount ) + if ( curlyCount ) { //addToBody(yytext); - --bracketCount ; + --curlyCount ; } else { @@ -14627,71 +15354,71 @@ YY_RULE_SETUP } } YY_BREAK -case 369: +case 416: YY_RULE_SETUP -#line 2984 "scanner.l" +#line 3388 "scanner.l" { //addToBody("}"); current = tempEntry; BEGIN( lastCurlyContext ); } YY_BREAK -case 370: +case 417: YY_RULE_SETUP -#line 2989 "scanner.l" +#line 3393 "scanner.l" { //addToBody(yytext); } YY_BREAK -case 371: +case 418: YY_RULE_SETUP -#line 2992 "scanner.l" +#line 3396 "scanner.l" { //addToBody(yytext); } YY_BREAK -case 372: +case 419: YY_RULE_SETUP -#line 2995 "scanner.l" +#line 3399 "scanner.l" { //addToBody(yytext); } YY_BREAK -case 373: +case 420: YY_RULE_SETUP -#line 2998 "scanner.l" +#line 3402 "scanner.l" { //addToBody(yytext); lastStringContext=SkipCurly; BEGIN( SkipString ); } YY_BREAK -case 374: +case 421: YY_RULE_SETUP -#line 3003 "scanner.l" +#line 3407 "scanner.l" { //addToBody(yytext); BEGIN( SkipCurlyCpp ); } YY_BREAK -case 375: +case 422: YY_RULE_SETUP -#line 3007 "scanner.l" +#line 3411 "scanner.l" { yyLineNr++; //addToBody(yytext); } YY_BREAK -case 376: +case 423: YY_RULE_SETUP -#line 3011 "scanner.l" +#line 3415 "scanner.l" { //addToBody(yytext); } YY_BREAK -case 377: +case 424: YY_RULE_SETUP -#line 3014 "scanner.l" +#line 3418 "scanner.l" { //addToBody(yytext); yyLineNr++; @@ -14699,82 +15426,79 @@ YY_RULE_SETUP BEGIN( SkipCurly ); } YY_BREAK -case 378: +case 425: YY_RULE_SETUP -#line 3020 "scanner.l" +#line 3424 "scanner.l" { //addToBody(yytext); yyLineNr++; } YY_BREAK -case 379: -YY_RULE_SETUP -#line 3024 "scanner.l" -{ - //addToBody(yytext); - } - YY_BREAK -case 380: +case 426: YY_RULE_SETUP -#line 3027 "scanner.l" +#line 3428 "scanner.l" { //addToBody(yytext); + lastCContext = YY_START; + BEGIN(SkipComment); } YY_BREAK -case 381: +case 427: YY_RULE_SETUP -#line 3030 "scanner.l" +#line 3433 "scanner.l" { //addToBody(yytext); + lastCContext = YY_START; + BEGIN(SkipCxxComment); } YY_BREAK -case 382: +case 428: YY_RULE_SETUP -#line 3033 "scanner.l" +#line 3438 "scanner.l" { //addToBody(yytext); } YY_BREAK -case 383: +case 429: YY_RULE_SETUP -#line 3036 "scanner.l" +#line 3441 "scanner.l" { //addToBodyCond(yytext); } YY_BREAK -case 384: +case 430: YY_RULE_SETUP -#line 3039 "scanner.l" +#line 3444 "scanner.l" { //addToBodyCond(yytext); BEGIN( lastStringContext ); } YY_BREAK -case 385: +case 431: YY_RULE_SETUP -#line 3043 "scanner.l" +#line 3448 "scanner.l" { //addToBodyCond(yytext); } YY_BREAK -case 386: +case 432: YY_RULE_SETUP -#line 3046 "scanner.l" +#line 3451 "scanner.l" { yyLineNr++; //addToBodyCond(yytext); } YY_BREAK -case 387: +case 433: YY_RULE_SETUP -#line 3050 "scanner.l" +#line 3455 "scanner.l" { //addToBodyCond(yytext); } YY_BREAK -case 388: +case 434: YY_RULE_SETUP -#line 3053 "scanner.l" +#line 3458 "scanner.l" { current->section = Entry::EMPTY_SEC ; current->type.resize(0) ; @@ -14784,12 +15508,12 @@ YY_RULE_SETUP BEGIN( FindMembers ) ; } YY_BREAK -case 389: +case 435: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3061 "scanner.l" +#line 3466 "scanner.l" { sharpCount = 0; current->name = yytext ; @@ -14797,9 +15521,9 @@ YY_RULE_SETUP BEGIN( ClassTemplSpec ); } YY_BREAK -case 390: +case 436: YY_RULE_SETUP -#line 3067 "scanner.l" +#line 3472 "scanner.l" { current->name += yytext; if (--sharpCount<=0) @@ -14808,46 +15532,42 @@ YY_RULE_SETUP } } YY_BREAK -case 391: +case 437: YY_RULE_SETUP -#line 3074 "scanner.l" +#line 3479 "scanner.l" { current->name += yytext; sharpCount++; } YY_BREAK -case 392: +case 438: YY_RULE_SETUP -#line 3078 "scanner.l" +#line 3483 "scanner.l" { current->name += yytext; } YY_BREAK -case 393: +case 439: YY_RULE_SETUP -#line 3081 "scanner.l" +#line 3486 "scanner.l" { current->name = yytext ; lineCount(); BEGIN( ClassVar ); } YY_BREAK -/* -<ClassVar>{ID}/{BN}*"{" { // we probably got some M$ extension - current->name = yytext ; - } -<ClassVar>{ID}/{BN}*":" { // we probably got some M$ extension - current->name = yytext ; - } - */ -case 394: +case 440: YY_RULE_SETUP -#line 3094 "scanner.l" +#line 3491 "scanner.l" { if (isTypedef) { - typedefDict.insert(yytext,new QCString(current->name)); - current->type.prepend("typedef "); + // typedefDict.insert(yytext,new QCString(current->name)); + // current->type.prepend("typedef "); + // current->extends + current->extends->append( + new BaseInfo(yytext,Public,Normal) + ); } current->type += ' ' ; current->type += current->name ; @@ -14855,18 +15575,18 @@ YY_RULE_SETUP //BEGIN( FindMembers ); } YY_BREAK -case 395: +case 441: YY_RULE_SETUP -#line 3105 "scanner.l" +#line 3506 "scanner.l" { // probably a function anyway - unput('('); + unput(*yytext); BEGIN( FindMembers ); } YY_BREAK -case 396: +case 442: YY_RULE_SETUP -#line 3110 "scanner.l" +#line 3511 "scanner.l" { current->type.resize(0); if (current->section == Entry::INTERFACE_SEC) @@ -14878,58 +15598,59 @@ YY_RULE_SETUP BEGIN( BasesProt ) ; } YY_BREAK -case 397: +case 443: YY_RULE_SETUP -#line 3120 "scanner.l" +#line 3521 "scanner.l" { unput(*yytext); BEGIN( FindMembers ); } YY_BREAK -case 398: +case 444: YY_RULE_SETUP -#line 3124 "scanner.l" +#line 3525 "scanner.l" { current->fileName = yyFileName ; current->startLine = yyLineNr ; current->name = removeRedundantWhiteSpace(current->name); - if (current->name.length()==0 && !isTypedef) // anonymous compound + if (current->name.isEmpty() && !isTypedef) // anonymous compound current->name.sprintf("@%d",anonCount++); + curlyCount=0; BEGIN( Curly ) ; } YY_BREAK -case 399: +case 445: YY_RULE_SETUP -#line 3131 "scanner.l" +#line 3533 "scanner.l" { baseVirt = Virtual; } YY_BREAK -case 400: +case 446: YY_RULE_SETUP -#line 3132 "scanner.l" +#line 3534 "scanner.l" { baseProt = Public; } YY_BREAK -case 401: +case 447: YY_RULE_SETUP -#line 3133 "scanner.l" +#line 3535 "scanner.l" { baseProt = Protected; } YY_BREAK -case 402: +case 448: YY_RULE_SETUP -#line 3134 "scanner.l" +#line 3536 "scanner.l" { baseProt = Private; } YY_BREAK -case 403: +case 449: YY_RULE_SETUP -#line 3135 "scanner.l" +#line 3537 "scanner.l" {} YY_BREAK -case 404: +case 450: YY_RULE_SETUP -#line 3136 "scanner.l" +#line 3538 "scanner.l" { unput(*yytext); BEGIN(Bases); } YY_BREAK -case 405: +case 451: YY_RULE_SETUP -#line 3137 "scanner.l" +#line 3539 "scanner.l" { //current->extends->append( // new BaseInfo(yytext,baseProt,baseVirt) @@ -14945,9 +15666,9 @@ YY_RULE_SETUP current->args += (yytext+2); } YY_BREAK -case 406: +case 452: YY_RULE_SETUP -#line 3151 "scanner.l" +#line 3553 "scanner.l" { current->name += *yytext; sharpCount=1; lastSkipSharpContext = YY_START; @@ -14955,9 +15676,9 @@ YY_RULE_SETUP BEGIN ( Specialization ); } YY_BREAK -case 407: +case 453: YY_RULE_SETUP -#line 3157 "scanner.l" +#line 3559 "scanner.l" { baseName += *yytext; sharpCount=1; lastSkipSharpContext = YY_START; @@ -14965,64 +15686,64 @@ YY_RULE_SETUP BEGIN ( Specialization ); } YY_BREAK -case 408: +case 454: YY_RULE_SETUP -#line 3163 "scanner.l" +#line 3565 "scanner.l" { *specName += *yytext; sharpCount++; } YY_BREAK -case 409: +case 455: YY_RULE_SETUP -#line 3166 "scanner.l" +#line 3568 "scanner.l" { *specName += *yytext; if (--sharpCount<=0) BEGIN(lastSkipSharpContext); } YY_BREAK -case 410: +case 456: YY_RULE_SETUP -#line 3171 "scanner.l" +#line 3573 "scanner.l" { lineCount(); *specName +=' '; } YY_BREAK -case 411: +case 457: YY_RULE_SETUP -#line 3172 "scanner.l" +#line 3574 "scanner.l" { *specName += *yytext; } YY_BREAK -case 412: +case 458: YY_RULE_SETUP -#line 3175 "scanner.l" +#line 3577 "scanner.l" { ++sharpCount; } YY_BREAK -case 413: +case 459: YY_RULE_SETUP -#line 3176 "scanner.l" +#line 3578 "scanner.l" { if (--sharpCount<=0) BEGIN ( lastSkipSharpContext ); } YY_BREAK -case 414: +case 460: YY_RULE_SETUP -#line 3179 "scanner.l" +#line 3581 "scanner.l" { ++roundCount; } YY_BREAK -case 415: +case 461: YY_RULE_SETUP -#line 3180 "scanner.l" +#line 3582 "scanner.l" { if (--roundCount<=0) BEGIN ( lastSkipRoundContext ); } YY_BREAK -case 416: +case 462: YY_RULE_SETUP -#line 3183 "scanner.l" +#line 3585 "scanner.l" { current->args += ',' ; current->name = removeRedundantWhiteSpace(current->name); - if (baseName.length()>0) + if (!baseName.isEmpty()) current->extends->append( new BaseInfo(baseName,baseProt,baseVirt) ); @@ -15032,56 +15753,57 @@ YY_RULE_SETUP BEGIN(BasesProt); } YY_BREAK -case 417: +case 463: YY_RULE_SETUP -#line 3194 "scanner.l" +#line 3596 "scanner.l" { current->fileName = yyFileName ; current->startLine = yyLineNr ; current->name = removeRedundantWhiteSpace(current->name); - if (baseName.length()>0) + if (!baseName.isEmpty()) current->extends->append( new BaseInfo(baseName,baseProt,baseVirt) ); + curlyCount=0; BEGIN( Curly ) ; } YY_BREAK -case 418: +case 464: YY_RULE_SETUP -#line 3203 "scanner.l" +#line 3606 "scanner.l" { current->program += yytext ; lineCount() ; } YY_BREAK -case 419: +case 465: YY_RULE_SETUP -#line 3206 "scanner.l" +#line 3609 "scanner.l" { current->program += yytext ; } YY_BREAK -case 420: +case 466: YY_RULE_SETUP -#line 3207 "scanner.l" +#line 3610 "scanner.l" { current->program += yytext ; } YY_BREAK -case 421: +case 467: YY_RULE_SETUP -#line 3208 "scanner.l" +#line 3611 "scanner.l" { current->program += yytext ; } YY_BREAK -case 422: +case 468: YY_RULE_SETUP -#line 3209 "scanner.l" +#line 3612 "scanner.l" { current->program += yytext ; - BEGIN( Curly ) ; + BEGIN( lastContext ) ; } YY_BREAK -case 423: +case 469: YY_RULE_SETUP -#line 3212 "scanner.l" +#line 3615 "scanner.l" { current->program += *yytext ; } YY_BREAK -case 424: +case 470: YY_RULE_SETUP -#line 3214 "scanner.l" +#line 3617 "scanner.l" { //printf("Start doc block at %d\n",yyLineNr); removeSlashes=(yytext[1]=='/'); @@ -15096,12 +15818,12 @@ YY_RULE_SETUP BEGIN( Doc ); } YY_BREAK -case 425: +case 471: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3227 "scanner.l" +#line 3630 "scanner.l" { removeSlashes=(yytext[1]=='/'); lastDocContext = YY_START; @@ -15135,9 +15857,9 @@ YY_RULE_SETUP } } YY_BREAK -case 426: +case 472: YY_RULE_SETUP -#line 3259 "scanner.l" +#line 3662 "scanner.l" { current->brief.resize(0); tmpDocType=-1; @@ -15147,12 +15869,12 @@ YY_RULE_SETUP BEGIN( LineDoc ); } YY_BREAK -case 427: +case 473: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 3; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3267 "scanner.l" +#line 3670 "scanner.l" { current->brief.resize(0); tmpDocType=-1; @@ -15162,35 +15884,35 @@ YY_RULE_SETUP BEGIN( LineDoc ); } YY_BREAK -case 428: +case 474: YY_RULE_SETUP -#line 3275 "scanner.l" +#line 3678 "scanner.l" YY_BREAK -case 429: +case 475: YY_RULE_SETUP -#line 3276 "scanner.l" +#line 3679 "scanner.l" { current->type.resize(0); current->name.resize(0); current->args.resize(0); current->argList->clear(); - bracketCount=0; + curlyCount=0; BEGIN( SkipCurlyBlock ); } YY_BREAK -case 430: +case 476: YY_RULE_SETUP -#line 3285 "scanner.l" +#line 3688 "scanner.l" { lastBriefContext=tmpDocType; BEGIN( ClassDocBrief ); } YY_BREAK -case 431: +case 477: YY_RULE_SETUP -#line 3289 "scanner.l" +#line 3692 "scanner.l" { lineCount(); if (!current->brief.stripWhiteSpace().isEmpty()) @@ -15199,20 +15921,20 @@ YY_RULE_SETUP } } YY_BREAK -case 432: +case 478: YY_RULE_SETUP -#line 3296 "scanner.l" +#line 3699 "scanner.l" { unput(*yytext); BEGIN(Doc); } YY_BREAK -case 433: +case 479: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3300 "scanner.l" +#line 3703 "scanner.l" { //printf("---> removing %s\n",yytext); } @@ -15222,42 +15944,42 @@ YY_RULE_SETUP current->brief+=yytext; } */ -case 434: +case 480: YY_RULE_SETUP -#line 3308 "scanner.l" +#line 3711 "scanner.l" { //printf("---> copy %c\n",*yytext); current->brief+=*yytext; } YY_BREAK -case 435: +case 481: YY_RULE_SETUP -#line 3312 "scanner.l" +#line 3715 "scanner.l" { current->brief+=' '; lineCount(); } YY_BREAK -case 436: +case 482: YY_RULE_SETUP -#line 3316 "scanner.l" +#line 3719 "scanner.l" { lineCount(); current->brief+="."; BEGIN( tmpDocType ); } YY_BREAK -case 437: +case 483: YY_RULE_SETUP -#line 3321 "scanner.l" +#line 3724 "scanner.l" { current->doc+=yytext; BEGIN( tmpDocType ); } YY_BREAK -case 438: +case 484: YY_RULE_SETUP -#line 3325 "scanner.l" +#line 3728 "scanner.l" { current->section = Entry::MEMBERDOC_SEC; current->fileName = yyFileName; @@ -15265,9 +15987,9 @@ YY_RULE_SETUP BEGIN( ClassDocFunc ); } YY_BREAK -case 439: +case 485: YY_RULE_SETUP -#line 3331 "scanner.l" +#line 3734 "scanner.l" { nextDefContext = YY_START==LineDoc ? DefLineDoc : ClassDoc; current->section = Entry::DEFINEDOC_SEC; @@ -15276,20 +15998,20 @@ YY_RULE_SETUP BEGIN( ClassDocDefine ); } YY_BREAK -case 440: +case 486: YY_RULE_SETUP -#line 3338 "scanner.l" +#line 3741 "scanner.l" { overloadContext = YY_START; BEGIN( ClassDocOverload ); } YY_BREAK -case 441: +case 487: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3342 "scanner.l" +#line 3745 "scanner.l" { QCString orgDoc = current->doc; current->doc = getOverloadDocs(); @@ -15298,12 +16020,12 @@ YY_RULE_SETUP BEGIN( overloadContext ); } YY_BREAK -case 442: +case 488: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3349 "scanner.l" +#line 3752 "scanner.l" { QCString orgDoc = current->doc; current->doc = getOverloadDocs(); @@ -15312,9 +16034,9 @@ YY_RULE_SETUP BEGIN( overloadContext ); } YY_BREAK -case 443: +case 489: YY_RULE_SETUP -#line 3356 "scanner.l" +#line 3759 "scanner.l" { unput(*yytext); current->section = Entry::OVERLOADDOC_SEC; current->fileName = yyFileName; @@ -15322,9 +16044,9 @@ YY_RULE_SETUP BEGIN( ClassDocFunc ); } YY_BREAK -case 444: +case 490: YY_RULE_SETUP -#line 3362 "scanner.l" +#line 3765 "scanner.l" { current->section = Entry::ENUMDOC_SEC; current->fileName = yyFileName; @@ -15332,9 +16054,9 @@ YY_RULE_SETUP BEGIN( EnumDocArg1 ); } YY_BREAK -case 445: +case 491: YY_RULE_SETUP -#line 3368 "scanner.l" +#line 3771 "scanner.l" { current->section = Entry::GROUPDOC_SEC; current->fileName = yyFileName; @@ -15342,9 +16064,9 @@ YY_RULE_SETUP BEGIN( GroupDocArg1 ); } YY_BREAK -case 446: +case 492: YY_RULE_SETUP -#line 3374 "scanner.l" +#line 3777 "scanner.l" { current->section = Entry::NAMESPACEDOC_SEC; current->fileName = yyFileName; @@ -15352,9 +16074,9 @@ YY_RULE_SETUP BEGIN( NameSpaceDocArg1 ); } YY_BREAK -case 447: +case 493: YY_RULE_SETUP -#line 3380 "scanner.l" +#line 3783 "scanner.l" { current->section = Entry::CLASSDOC_SEC; current->fileName = yyFileName; @@ -15362,9 +16084,9 @@ YY_RULE_SETUP BEGIN( ClassDocArg1 ); } YY_BREAK -case 448: +case 494: YY_RULE_SETUP -#line 3386 "scanner.l" +#line 3789 "scanner.l" { current->section = Entry::UNIONDOC_SEC; current->fileName = yyFileName; @@ -15372,9 +16094,9 @@ YY_RULE_SETUP BEGIN( ClassDocArg1 ); } YY_BREAK -case 449: +case 495: YY_RULE_SETUP -#line 3392 "scanner.l" +#line 3795 "scanner.l" { current->section = Entry::STRUCTDOC_SEC; current->fileName = yyFileName; @@ -15382,9 +16104,9 @@ YY_RULE_SETUP BEGIN( ClassDocArg1 ); } YY_BREAK -case 450: +case 496: YY_RULE_SETUP -#line 3398 "scanner.l" +#line 3801 "scanner.l" { current->section = Entry::INTERFACEDOC_SEC; current->fileName = yyFileName; @@ -15392,9 +16114,9 @@ YY_RULE_SETUP BEGIN( ClassDocArg1 ); } YY_BREAK -case 451: +case 497: YY_RULE_SETUP -#line 3404 "scanner.l" +#line 3807 "scanner.l" { current->section = Entry::PAGEDOC_SEC; current->fileName = yyFileName; @@ -15402,9 +16124,9 @@ YY_RULE_SETUP BEGIN( PageDocArg1 ); } YY_BREAK -case 452: +case 498: YY_RULE_SETUP -#line 3410 "scanner.l" +#line 3813 "scanner.l" { current->section = Entry::MAINPAGEDOC_SEC; current->fileName = yyFileName; @@ -15412,9 +16134,9 @@ YY_RULE_SETUP BEGIN( PageDocArg2 ); } YY_BREAK -case 453: +case 499: YY_RULE_SETUP -#line 3416 "scanner.l" +#line 3819 "scanner.l" { current->section = Entry::FILEDOC_SEC; current->fileName = yyFileName; @@ -15422,9 +16144,9 @@ YY_RULE_SETUP BEGIN( FileDocArg1 ); } YY_BREAK -case 454: +case 500: YY_RULE_SETUP -#line 3422 "scanner.l" +#line 3825 "scanner.l" { current->section = Entry::EXAMPLE_SEC; current->fileName = yyFileName; @@ -15432,50 +16154,50 @@ YY_RULE_SETUP BEGIN( ExampleDocArg1 ); } YY_BREAK -case 455: +case 501: YY_RULE_SETUP -#line 3428 "scanner.l" +#line 3831 "scanner.l" { current->name = stripQuotes(yytext); BEGIN( ExampleDoc ); } YY_BREAK -case 456: +case 502: YY_RULE_SETUP -#line 3432 "scanner.l" +#line 3835 "scanner.l" { lastDocRelContext = YY_START; BEGIN( ClassDocRelates ); } YY_BREAK -case 457: +case 503: YY_RULE_SETUP -#line 3436 "scanner.l" +#line 3839 "scanner.l" { current->relates = yytext; BEGIN( lastDocRelContext ); } YY_BREAK -case 458: +case 504: YY_RULE_SETUP -#line 3440 "scanner.l" +#line 3843 "scanner.l" { current->name = yytext; newDocState(); } YY_BREAK -case 459: +case 505: YY_RULE_SETUP -#line 3444 "scanner.l" +#line 3847 "scanner.l" { warn("Warning: missing argument after " "\\namespace at line %d of %s.\n",yyLineNr,yyFileName); yyLineNr++; } YY_BREAK -case 460: +case 506: YY_RULE_SETUP -#line 3449 "scanner.l" +#line 3852 "scanner.l" { current->name = yytext; // prepend outer scope name @@ -15486,9 +16208,9 @@ YY_RULE_SETUP BEGIN( ClassDocArg2 ); } YY_BREAK -case 461: +case 507: YY_RULE_SETUP -#line 3458 "scanner.l" +#line 3861 "scanner.l" { warn("Warning: missing argument after " "\\class at line %d of %s.\n",yyLineNr,yyFileName); @@ -15496,9 +16218,9 @@ YY_RULE_SETUP } YY_BREAK -case 462: +case 508: YY_RULE_SETUP -#line 3464 "scanner.l" +#line 3867 "scanner.l" { current->name = yytext; if (current->name.right(5)==".html") @@ -15506,9 +16228,9 @@ YY_RULE_SETUP BEGIN(GroupDocArg2); } YY_BREAK -case 463: +case 509: YY_RULE_SETUP -#line 3470 "scanner.l" +#line 3873 "scanner.l" { warn("Warning: missing argument after " "\\defgroup at line %d of %s.\n",yyLineNr,yyFileName); @@ -15516,82 +16238,82 @@ YY_RULE_SETUP BEGIN( Doc ); } YY_BREAK -case 464: +case 510: YY_RULE_SETUP -#line 3476 "scanner.l" +#line 3879 "scanner.l" { current->type = yytext; current->type = current->type.stripWhiteSpace(); newDocState(); } YY_BREAK -case 465: +case 511: YY_RULE_SETUP -#line 3481 "scanner.l" +#line 3884 "scanner.l" { newDocState(); } YY_BREAK -case 466: +case 512: YY_RULE_SETUP -#line 3484 "scanner.l" +#line 3887 "scanner.l" { //printf("ClassDocArg2=%s\n",yytext); current->includeFile = stripQuotes(yytext); BEGIN( ClassDocArg3 ); } YY_BREAK -case 467: +case 513: YY_RULE_SETUP -#line 3489 "scanner.l" +#line 3892 "scanner.l" { yyLineNr++; newDocState(); } YY_BREAK -case 468: +case 514: YY_RULE_SETUP -#line 3492 "scanner.l" +#line 3895 "scanner.l" { //printf("ClassDocArg3=%s\n",yytext); - current->includeName = stripQuotes(yytext); + current->includeName = yytext; newDocState(); } YY_BREAK -case 469: +case 515: YY_RULE_SETUP -#line 3497 "scanner.l" +#line 3900 "scanner.l" { yyLineNr++; newDocState(); } YY_BREAK -case 470: +case 516: YY_RULE_SETUP -#line 3500 "scanner.l" +#line 3903 "scanner.l" { current->name = stripQuotes(yytext); newDocState(); } YY_BREAK -case 471: +case 517: YY_RULE_SETUP -#line 3504 "scanner.l" +#line 3907 "scanner.l" { current->name = yyFileName; yyLineNr++; newDocState(); } YY_BREAK -case 472: +case 518: YY_RULE_SETUP -#line 3509 "scanner.l" +#line 3912 "scanner.l" { current->name = stripQuotes(yytext); BEGIN( PageDocArg2 ); } YY_BREAK -case 473: +case 519: YY_RULE_SETUP -#line 3513 "scanner.l" +#line 3916 "scanner.l" { warn("Warning: missing argument after " "\\page at line %d of %s.\n",yyLineNr,yyFileName); @@ -15599,18 +16321,18 @@ YY_RULE_SETUP BEGIN( Doc ); } YY_BREAK -case 474: +case 520: YY_RULE_SETUP -#line 3519 "scanner.l" +#line 3922 "scanner.l" { yyLineNr++; current->args = yytext; BEGIN( PageDoc ); } YY_BREAK -case 475: +case 521: YY_RULE_SETUP -#line 3524 "scanner.l" +#line 3927 "scanner.l" { current->name = yytext; if (current_root->section & Entry::SCOPE_MASK) @@ -15620,9 +16342,9 @@ YY_RULE_SETUP newDocState(); } YY_BREAK -case 476: +case 522: YY_RULE_SETUP -#line 3532 "scanner.l" +#line 3935 "scanner.l" { warn("Warning: missing argument after " "\\enum at line %d of %s.\n",yyLineNr,yyFileName); @@ -15630,32 +16352,32 @@ YY_RULE_SETUP BEGIN( Doc ); } YY_BREAK -case 477: +case 523: YY_RULE_SETUP -#line 3538 "scanner.l" +#line 3941 "scanner.l" { current->doc+=yytext; } YY_BREAK -case 478: +case 524: YY_RULE_SETUP -#line 3541 "scanner.l" +#line 3944 "scanner.l" { sectionType=SectionInfo::Section; BEGIN(SectionLabel); } YY_BREAK -case 479: +case 525: YY_RULE_SETUP -#line 3545 "scanner.l" +#line 3948 "scanner.l" { sectionType=SectionInfo::Subsection; BEGIN(SectionLabel); } YY_BREAK -case 480: +case 526: YY_RULE_SETUP -#line 3549 "scanner.l" +#line 3952 "scanner.l" { //printf("--> mgroup found!\n"); lastMemberGroupContext = YY_START; @@ -15674,24 +16396,24 @@ YY_RULE_SETUP BEGIN(GroupHeader); } YY_BREAK -case 481: +case 527: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3566 "scanner.l" +#line 3969 "scanner.l" { //printf("--> endmgroup found!\n"); memberGroupId = -1; current->mGrpId = -1; } YY_BREAK -case 482: +case 528: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3571 "scanner.l" +#line 3974 "scanner.l" { QCString header = ((QCString)yytext).stripWhiteSpace(); memberGroupDict.insert(memberGroupId, @@ -15700,96 +16422,96 @@ YY_RULE_SETUP BEGIN(lastMemberGroupContext); } YY_BREAK -case 483: +case 529: YY_RULE_SETUP -#line 3578 "scanner.l" +#line 3981 "scanner.l" { lastAnchorContext = YY_START; sectionType=SectionInfo::Anchor; BEGIN(AnchorLabel); } YY_BREAK -case 484: +case 530: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3583 "scanner.l" +#line 3986 "scanner.l" { current->doc+="\\\\verbatim"; } YY_BREAK -case 485: +case 531: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3586 "scanner.l" +#line 3989 "scanner.l" { lastVerbState=YY_START; current->doc+="\\verbatim"; BEGIN(SkipVerbatim); } YY_BREAK -case 486: +case 532: YY_RULE_SETUP -#line 3591 "scanner.l" +#line 3994 "scanner.l" { current->doc+=yytext; } YY_BREAK -case 487: +case 533: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3594 "scanner.l" +#line 3997 "scanner.l" { current->doc+="\\\\code"; } YY_BREAK -case 488: +case 534: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3597 "scanner.l" +#line 4000 "scanner.l" { lastCodeState=YY_START; current->doc+="\\code"; BEGIN(SkipCode); } YY_BREAK -case 489: +case 535: YY_RULE_SETUP -#line 3602 "scanner.l" +#line 4005 "scanner.l" { lastCodeState=YY_START; current->doc+="<PRE>"; BEGIN(SkipCode); } YY_BREAK -case 490: +case 536: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3607 "scanner.l" +#line 4010 "scanner.l" { current->doc+=yytext; BEGIN(lastVerbState); } YY_BREAK -case 491: +case 537: YY_RULE_SETUP -#line 3611 "scanner.l" +#line 4014 "scanner.l" { current->doc+=yytext; } YY_BREAK -case 492: +case 538: YY_RULE_SETUP -#line 3614 "scanner.l" +#line 4017 "scanner.l" { if (!removeSlashes) current->doc+=yytext; @@ -15802,89 +16524,89 @@ YY_RULE_SETUP } <SkipVerbatim>^{B}*"*"+ */ -case 493: +case 539: YY_RULE_SETUP -#line 3625 "scanner.l" +#line 4028 "scanner.l" { current->doc+=yytext; } YY_BREAK -case 494: +case 540: YY_RULE_SETUP -#line 3628 "scanner.l" +#line 4031 "scanner.l" { yyLineNr++; current->doc+=*yytext; } YY_BREAK -case 495: +case 541: YY_RULE_SETUP -#line 3632 "scanner.l" +#line 4035 "scanner.l" { current->doc+=*yytext; } YY_BREAK -case 496: +case 542: YY_RULE_SETUP -#line 3635 "scanner.l" +#line 4038 "scanner.l" { current->doc+="\\endcode"; BEGIN(lastCodeState); } YY_BREAK -case 497: +case 543: YY_RULE_SETUP -#line 3639 "scanner.l" +#line 4042 "scanner.l" { current->doc+="</PRE>"; BEGIN(lastCodeState); } YY_BREAK -case 498: +case 544: YY_RULE_SETUP -#line 3643 "scanner.l" +#line 4046 "scanner.l" { if (!removeSlashes) current->doc+=yytext; } YY_BREAK -case 499: +case 545: YY_RULE_SETUP -#line 3647 "scanner.l" +#line 4050 "scanner.l" YY_BREAK -case 500: +case 546: YY_RULE_SETUP -#line 3648 "scanner.l" +#line 4051 "scanner.l" { current->doc+=yytext; } YY_BREAK -case 501: +case 547: YY_RULE_SETUP -#line 3651 "scanner.l" +#line 4054 "scanner.l" { current->doc+=yytext; } YY_BREAK -case 502: +case 548: YY_RULE_SETUP -#line 3654 "scanner.l" +#line 4057 "scanner.l" { yyLineNr++; current->doc+=*yytext; } YY_BREAK -case 503: +case 549: YY_RULE_SETUP -#line 3658 "scanner.l" +#line 4061 "scanner.l" { current->doc+=*yytext; } YY_BREAK -case 504: +case 550: YY_RULE_SETUP -#line 3661 "scanner.l" +#line 4064 "scanner.l" { sectionLabel=yytext; addSection(); @@ -15892,21 +16614,21 @@ YY_RULE_SETUP BEGIN(lastAnchorContext); } YY_BREAK -case 505: +case 551: YY_RULE_SETUP -#line 3667 "scanner.l" +#line 4070 "scanner.l" { sectionLabel=yytext; sectionTitle.resize(0); BEGIN(SectionTitle); } YY_BREAK -case 506: +case 552: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3672 "scanner.l" +#line 4075 "scanner.l" { sectionTitle+=yytext; sectionTitle=sectionTitle.stripWhiteSpace(); @@ -15915,66 +16637,66 @@ YY_RULE_SETUP BEGIN(PageDoc); } YY_BREAK -case 507: +case 553: YY_RULE_SETUP -#line 3679 "scanner.l" +#line 4082 "scanner.l" { sectionTitle+=yytext; } YY_BREAK -case 508: +case 554: YY_RULE_SETUP -#line 3682 "scanner.l" +#line 4085 "scanner.l" { yyLineNr++ ; current->doc+=yytext; } YY_BREAK -case 509: +case 555: YY_RULE_SETUP -#line 3683 "scanner.l" +#line 4086 "scanner.l" { current->doc += yytext; } YY_BREAK -case 510: +case 556: YY_RULE_SETUP -#line 3684 "scanner.l" +#line 4087 "scanner.l" { current->doc += yytext; } YY_BREAK -case 511: +case 557: YY_RULE_SETUP -#line 3685 "scanner.l" +#line 4088 "scanner.l" YY_BREAK -case 512: +case 558: YY_RULE_SETUP -#line 3686 "scanner.l" +#line 4089 "scanner.l" { current->doc += yytext; } YY_BREAK -case 513: +case 559: YY_RULE_SETUP -#line 3687 "scanner.l" +#line 4090 "scanner.l" { current->doc += &yytext[1]; } YY_BREAK -case 514: +case 560: YY_RULE_SETUP -#line 3690 "scanner.l" +#line 4093 "scanner.l" { lastFormulaContext = YY_START; formulaText="$"; BEGIN(ReadFormulaShort); } YY_BREAK -case 515: +case 561: YY_RULE_SETUP -#line 3695 "scanner.l" +#line 4098 "scanner.l" { lastFormulaContext = YY_START; formulaText="\\["; BEGIN(ReadFormulaLong); } YY_BREAK -case 516: +case 562: YY_RULE_SETUP -#line 3700 "scanner.l" +#line 4103 "scanner.l" { formulaText+="$"; if (lastFormulaContext==ClassDocBrief || @@ -15987,9 +16709,9 @@ YY_RULE_SETUP BEGIN(lastFormulaContext); } YY_BREAK -case 517: +case 563: YY_RULE_SETUP -#line 3711 "scanner.l" +#line 4114 "scanner.l" { formulaText+="\\]"; if (lastFormulaContext==ClassDocBrief || @@ -16002,14 +16724,14 @@ YY_RULE_SETUP BEGIN(lastFormulaContext); } YY_BREAK -case 518: +case 564: YY_RULE_SETUP -#line 3722 "scanner.l" +#line 4125 "scanner.l" { formulaText+=*yytext; } YY_BREAK -case 519: +case 565: YY_RULE_SETUP -#line 3723 "scanner.l" +#line 4126 "scanner.l" { checkDocs(); if (YY_START==SkipCode) // premature end of code block @@ -16040,71 +16762,71 @@ YY_RULE_SETUP BEGIN( FindMembers ); } YY_BREAK -case 520: +case 566: YY_RULE_SETUP -#line 3752 "scanner.l" +#line 4155 "scanner.l" { current->args.resize(0); current->argList->clear(); BEGIN( PageDocTitle); } YY_BREAK -case 521: +case 567: YY_RULE_SETUP -#line 3757 "scanner.l" +#line 4160 "scanner.l" { yyLineNr++; current->args+=" "; } YY_BREAK -case 522: +case 568: YY_RULE_SETUP -#line 3758 "scanner.l" +#line 4161 "scanner.l" { current->args+=yytext; } YY_BREAK -case 523: +case 569: YY_RULE_SETUP -#line 3759 "scanner.l" +#line 4162 "scanner.l" { BEGIN( PageDoc ); } YY_BREAK -case 524: +case 570: YY_RULE_SETUP -#line 3760 "scanner.l" +#line 4163 "scanner.l" { lastGroupContext = YY_START; lineCount(); BEGIN( GroupName ); } YY_BREAK -case 525: +case 571: YY_RULE_SETUP -#line 3765 "scanner.l" +#line 4168 "scanner.l" { current->groups->append( new QCString(yytext) ); } YY_BREAK -case 526: +case 572: YY_RULE_SETUP -#line 3770 "scanner.l" +#line 4173 "scanner.l" { yyLineNr++; BEGIN( lastGroupContext ); } YY_BREAK -case 527: +case 573: YY_RULE_SETUP -#line 3773 "scanner.l" +#line 4176 "scanner.l" { lastBriefContext=YY_START; BEGIN( ClassDocBrief ); } YY_BREAK -case 528: +case 574: YY_RULE_SETUP -#line 3777 "scanner.l" +#line 4180 "scanner.l" { BEGIN( DocBaseClass ); } YY_BREAK -case 529: +case 575: YY_RULE_SETUP -#line 3778 "scanner.l" +#line 4181 "scanner.l" { //printf("Adding base class %s\n",yytext); current->extends->append( @@ -16112,72 +16834,73 @@ YY_RULE_SETUP ); } YY_BREAK -case 530: +case 576: YY_RULE_SETUP -#line 3784 "scanner.l" +#line 4187 "scanner.l" { yyLineNr++; BEGIN( ClassDoc ); } YY_BREAK -case 531: +case 577: YY_RULE_SETUP -#line 3785 "scanner.l" +#line 4188 "scanner.l" { current->brief=current->brief.stripWhiteSpace(); + if (!current->doc.isEmpty()) current->doc+="<p>"; yyLineNr++; BEGIN( lastBriefContext ); } YY_BREAK -case 532: +case 578: YY_RULE_SETUP -#line 3790 "scanner.l" +#line 4194 "scanner.l" { yyLineNr++ ; current->brief += " "; } YY_BREAK -case 533: +case 579: YY_RULE_SETUP -#line 3791 "scanner.l" +#line 4195 "scanner.l" YY_BREAK -case 534: +case 580: YY_RULE_SETUP -#line 3792 "scanner.l" +#line 4196 "scanner.l" { current->brief=current->brief.stripWhiteSpace(); BEGIN( lastBriefContext ); } YY_BREAK -case 535: +case 581: YY_RULE_SETUP -#line 3796 "scanner.l" +#line 4200 "scanner.l" { BEGIN( lastBriefContext ); } YY_BREAK -case 536: +case 582: YY_RULE_SETUP -#line 3799 "scanner.l" +#line 4203 "scanner.l" { lastBriefContext=YY_START; BEGIN( ClassDocBrief ); } YY_BREAK -case 537: +case 583: YY_RULE_SETUP -#line 3803 "scanner.l" +#line 4207 "scanner.l" { current->brief += *yytext; } YY_BREAK -case 538: +case 584: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3804 "scanner.l" +#line 4208 "scanner.l" { current->name = yytext; BEGIN( ClassDefineArgs ); } YY_BREAK -case 539: +case 585: YY_RULE_SETUP -#line 3808 "scanner.l" +#line 4212 "scanner.l" { current->name = yytext; if (nextDefContext==ClassDoc) @@ -16186,9 +16909,9 @@ YY_RULE_SETUP BEGIN( nextDefContext ); } YY_BREAK -case 540: +case 586: YY_RULE_SETUP -#line 3815 "scanner.l" +#line 4219 "scanner.l" { current->args+=")"; if (nextDefContext==ClassDoc) @@ -16197,190 +16920,191 @@ YY_RULE_SETUP BEGIN( nextDefContext ); } YY_BREAK -case 541: +case 587: YY_RULE_SETUP -#line 3822 "scanner.l" +#line 4226 "scanner.l" { current->args+= yytext; } YY_BREAK -case 542: +case 588: YY_RULE_SETUP -#line 3825 "scanner.l" +#line 4229 "scanner.l" { yyLineNr++; current->name = current->name.stripWhiteSpace(); - if (current->section == Entry::MEMBERDOC_SEC && current->args.length()==0) + if (current->section == Entry::MEMBERDOC_SEC && current->args.isEmpty()) current->section = Entry::VARIABLEDOC_SEC; newDocState(); } YY_BREAK -case 543: +case 589: YY_RULE_SETUP -#line 3832 "scanner.l" +#line 4236 "scanner.l" { current->name+=yytext; } YY_BREAK -case 544: +case 590: YY_RULE_SETUP -#line 3835 "scanner.l" +#line 4239 "scanner.l" { current->args+=*yytext; currentArgumentContext = ClassDocFuncQual; - copyArgString=¤t->args; + fullArgString = current->args.copy(); + copyArgString = ¤t->args; BEGIN( ReadFuncArgType ) ; } YY_BREAK -case 545: +case 591: YY_RULE_SETUP -#line 3841 "scanner.l" +#line 4246 "scanner.l" { current->name+="(*"; BEGIN( ClassDocFuncPtr ); } YY_BREAK -case 546: +case 592: YY_RULE_SETUP -#line 3845 "scanner.l" +#line 4250 "scanner.l" { current->name+=yytext; } YY_BREAK -case 547: +case 593: YY_RULE_SETUP -#line 3848 "scanner.l" +#line 4253 "scanner.l" { current->name+=')'; BEGIN( ClassDocFunc ); } YY_BREAK -case 548: +case 594: YY_RULE_SETUP -#line 3852 "scanner.l" +#line 4257 "scanner.l" { BEGIN( ClassDocFuncSkipLine); } YY_BREAK -case 549: +case 595: YY_RULE_SETUP -#line 3855 "scanner.l" +#line 4260 "scanner.l" { current->args += " const "; current->argList->constSpecifier=TRUE; } YY_BREAK -case 550: +case 596: YY_RULE_SETUP -#line 3859 "scanner.l" +#line 4264 "scanner.l" { current->args += " volatile "; current->argList->volatileSpecifier=TRUE; } YY_BREAK -case 551: +case 597: YY_RULE_SETUP -#line 3863 "scanner.l" +#line 4268 "scanner.l" { current->args += " = 0"; current->virt = Pure; current->argList->pureSpecifier=TRUE; } YY_BREAK -case 552: +case 598: YY_RULE_SETUP -#line 3868 "scanner.l" +#line 4273 "scanner.l" { current->exception = "throw("; BEGIN(ClassDocFuncExc); } YY_BREAK -case 553: +case 599: YY_RULE_SETUP -#line 3872 "scanner.l" +#line 4277 "scanner.l" { current->exception += ')'; BEGIN(ClassDocFuncQual); } YY_BREAK -case 554: +case 600: YY_RULE_SETUP -#line 3876 "scanner.l" +#line 4281 "scanner.l" { current->exception += *yytext; } YY_BREAK -case 555: +case 601: YY_RULE_SETUP -#line 3879 "scanner.l" +#line 4284 "scanner.l" { current->name += *yytext; } YY_BREAK -case 556: +case 602: YY_RULE_SETUP -#line 3882 "scanner.l" +#line 4287 "scanner.l" { yyLineNr++; current->name = current->name.stripWhiteSpace(); newDocState(); } YY_BREAK -case 557: +case 603: YY_RULE_SETUP -#line 3887 "scanner.l" +#line 4292 "scanner.l" { current->doc += yytext; } YY_BREAK -case 558: +case 604: YY_RULE_SETUP -#line 3888 "scanner.l" +#line 4293 "scanner.l" { current->doc += yytext; } YY_BREAK -case 559: +case 605: YY_RULE_SETUP -#line 3889 "scanner.l" +#line 4294 "scanner.l" { current->doc += *yytext; } YY_BREAK -case 560: +case 606: YY_RULE_SETUP -#line 3890 "scanner.l" +#line 4295 "scanner.l" { current->brief += *yytext; } YY_BREAK -case 561: +case 607: YY_RULE_SETUP -#line 3891 "scanner.l" +#line 4296 "scanner.l" { yyLineNr++; current->doc += *yytext; } YY_BREAK -case 562: +case 608: YY_RULE_SETUP -#line 3892 "scanner.l" +#line 4297 "scanner.l" { lineCount(); } YY_BREAK -case 563: +case 609: YY_RULE_SETUP -#line 3893 "scanner.l" +#line 4298 "scanner.l" { yyLineNr++; BEGIN( lastDocContext ); } YY_BREAK -case 564: +case 610: YY_RULE_SETUP -#line 3897 "scanner.l" +#line 4302 "scanner.l" { yyLineNr++; unput('/');unput('*'); BEGIN( ClassDoc ); } YY_BREAK -case 565: +case 611: YY_RULE_SETUP -#line 3903 "scanner.l" +#line 4308 "scanner.l" { current->brief+=yytext; } YY_BREAK -case 566: +case 612: YY_RULE_SETUP -#line 3904 "scanner.l" +#line 4309 "scanner.l" { yyLineNr++; if (afterDocTerminator!=0) @@ -16388,113 +17112,113 @@ YY_RULE_SETUP BEGIN(lastAfterDocContext); } YY_BREAK -case 567: +case 613: YY_RULE_SETUP -#line 3910 "scanner.l" +#line 4315 "scanner.l" { current->brief+=yytext; } YY_BREAK -case 568: +case 614: YY_RULE_SETUP -#line 3911 "scanner.l" +#line 4316 "scanner.l" { current->brief+=yytext; } YY_BREAK -case 569: +case 615: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3912 "scanner.l" +#line 4317 "scanner.l" YY_BREAK -case 570: +case 616: YY_RULE_SETUP -#line 3913 "scanner.l" +#line 4318 "scanner.l" { current->brief+=yytext; yyLineNr++; } YY_BREAK -case 571: +case 617: YY_RULE_SETUP -#line 3914 "scanner.l" +#line 4319 "scanner.l" { current->brief+=*yytext; } YY_BREAK -case 572: +case 618: YY_RULE_SETUP -#line 3915 "scanner.l" +#line 4320 "scanner.l" { yyLineNr++; if (!current->brief.stripWhiteSpace().isEmpty()) BEGIN(AfterDoc); } YY_BREAK -case 573: +case 619: YY_RULE_SETUP -#line 3919 "scanner.l" +#line 4324 "scanner.l" { if (afterDocTerminator!=0) unput(afterDocTerminator); BEGIN(lastAfterDocContext); } YY_BREAK -case 574: +case 620: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3924 "scanner.l" +#line 4329 "scanner.l" { BEGIN(AfterDoc); } YY_BREAK -case 575: +case 621: YY_RULE_SETUP -#line 3925 "scanner.l" +#line 4330 "scanner.l" { current->brief+="\\internal"; } YY_BREAK -case 576: +case 622: YY_RULE_SETUP -#line 3928 "scanner.l" +#line 4333 "scanner.l" { current->doc+="\\internal"; } YY_BREAK -case 577: +case 623: YY_RULE_SETUP -#line 3931 "scanner.l" +#line 4336 "scanner.l" { BEGIN(AfterDocBrief); } YY_BREAK -case 578: +case 624: YY_RULE_SETUP -#line 3932 "scanner.l" +#line 4337 "scanner.l" { current->doc+=yytext; } YY_BREAK -case 579: +case 625: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3933 "scanner.l" +#line 4338 "scanner.l" YY_BREAK -case 580: +case 626: YY_RULE_SETUP -#line 3934 "scanner.l" +#line 4339 "scanner.l" { current->doc+=yytext; yyLineNr++; } YY_BREAK -case 581: +case 627: YY_RULE_SETUP -#line 3935 "scanner.l" +#line 4340 "scanner.l" { current->doc+=*yytext; } YY_BREAK -case 582: +case 628: YY_RULE_SETUP -#line 3936 "scanner.l" +#line 4341 "scanner.l" { if (afterDocTerminator!=0) unput(afterDocTerminator); BEGIN(lastAfterDocContext); } YY_BREAK -case 583: +case 629: YY_RULE_SETUP -#line 3941 "scanner.l" +#line 4346 "scanner.l" { current->doc += "\n\n"; err("Warning: unexpected end of " @@ -16503,9 +17227,9 @@ YY_RULE_SETUP BEGIN( lastDocContext ); } YY_BREAK -case 584: +case 630: YY_RULE_SETUP -#line 3948 "scanner.l" +#line 4353 "scanner.l" { checkDocs(); current->doc += "\n\n"; @@ -16513,77 +17237,94 @@ YY_RULE_SETUP BEGIN( lastDocContext ); } YY_BREAK -case 585: +case 631: YY_RULE_SETUP -#line 3954 "scanner.l" +#line 4359 "scanner.l" { unput('/');unput('*'); BEGIN( tmpDocType ); } YY_BREAK -case 586: +case 632: +YY_RULE_SETUP +#line 4363 "scanner.l" +{ + current->doc += yytext; + } + YY_BREAK +case 633: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3958 "scanner.l" +#line 4366 "scanner.l" YY_BREAK -case 587: +case 634: YY_RULE_SETUP -#line 3959 "scanner.l" +#line 4367 "scanner.l" +{ + current->doc+=' '; + } + YY_BREAK +case 635: +YY_RULE_SETUP +#line 4370 "scanner.l" { current->doc += yytext; } YY_BREAK -case 588: +case 636: +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ +yy_c_buf_p = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 3961 "scanner.l" -{ yyLineNr++ ; +#line 4371 "scanner.l" +{ BEGIN( lastCContext ) ; } YY_BREAK -case 589: +case 637: YY_RULE_SETUP -#line 3964 "scanner.l" +#line 4374 "scanner.l" YY_BREAK -case 590: +case 638: YY_RULE_SETUP -#line 3965 "scanner.l" +#line 4375 "scanner.l" { yyLineNr++ ; } YY_BREAK -case 591: +case 639: YY_RULE_SETUP -#line 3966 "scanner.l" +#line 4376 "scanner.l" YY_BREAK -case 592: +case 640: YY_RULE_SETUP -#line 3967 "scanner.l" +#line 4377 "scanner.l" YY_BREAK -case 593: +case 641: YY_RULE_SETUP -#line 3968 "scanner.l" +#line 4378 "scanner.l" { lastCContext = YY_START ; BEGIN( SkipComment ) ; } YY_BREAK -case 594: +case 642: YY_RULE_SETUP -#line 3971 "scanner.l" +#line 4381 "scanner.l" { BEGIN( lastCContext ) ; } YY_BREAK -case 595: +case 643: YY_RULE_SETUP -#line 3972 "scanner.l" +#line 4382 "scanner.l" { lastCContext = YY_START ; BEGIN( SkipCxxComment ) ; } YY_BREAK -case 596: +case 644: YY_RULE_SETUP -#line 3976 "scanner.l" +#line 4386 "scanner.l" ECHO; YY_BREAK case YY_STATE_EOF(INITIAL): @@ -16718,6 +17459,8 @@ ECHO; case YY_STATE_EOF(CopyArgString): case YY_STATE_EOF(CopyArgRound): case YY_STATE_EOF(CopyArgSharp): + case YY_STATE_EOF(CopyArgComment): + case YY_STATE_EOF(CopyArgCommentLine): case YY_STATE_EOF(ReadFuncArgType): case YY_STATE_EOF(ReadTempArgs): case YY_STATE_EOF(Specialization): @@ -16725,6 +17468,10 @@ ECHO; case YY_STATE_EOF(ReadFormulaShort): case YY_STATE_EOF(ReadFormulaLong): case YY_STATE_EOF(AnchorLabel): + case YY_STATE_EOF(ReadInitializer): + case YY_STATE_EOF(CopyString): + case YY_STATE_EOF(CopyRound): + case YY_STATE_EOF(CopyCurly): yyterminate(); case YY_END_OF_BUFFER: @@ -17013,7 +17760,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3919 ) + if ( yy_current_state >= 4092 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -17043,11 +17790,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3919 ) + if ( yy_current_state >= 4092 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 3918); + yy_is_jam = (yy_current_state == 4091); if ( ! yy_is_jam ) *yy_state_ptr++ = yy_current_state; @@ -17605,7 +18352,7 @@ int main() return 0; } #endif -#line 3976 "scanner.l" +#line 4386 "scanner.l" //---------------------------------------------------------------------------- @@ -17666,7 +18413,7 @@ void parseCompounds(Entry *rt) Entry *ce; for (;(ce=eli.current());++eli) { - if (ce->program.length()>0) + if (!ce->program.isEmpty()) { //printf("-- %s ---------\n%s\n---------------\n", // ce->name.data(),ce->program.data()); @@ -17689,7 +18436,7 @@ void parseCompounds(Entry *rt) current->protection = protection = Private ; else if (ce->section == Entry::ENUM_SEC ) // enum current->protection = protection = ce->protection; - else if (ce->name.length()>0 && ce->name.at(0)=='@') // anonymous union + else if (!ce->name.isEmpty() && ce->name.at(0)=='@') // anonymous union current->protection = protection = ce->protection; else // named struct, union, or interface current->protection = protection = Public ; @@ -17698,7 +18445,7 @@ void parseCompounds(Entry *rt) gstat = FALSE; virt = Normal; scanYYlex() ; - delete current; + delete current; current=0; ce->program.resize(0); } parseCompounds(ce); @@ -17726,7 +18473,7 @@ void parseMain(Entry *rt) BEGIN( FindMembers ); scanYYlex(); rt->program.resize(0); - delete current; + delete current; current=0; parseCompounds(rt); } @@ -17751,6 +18498,7 @@ void parseDocument(OutputList &ol,const QCString &docString) insideArgumentList = FALSE; scanYYlex(); if (insideArgumentList) { insideArgumentList=FALSE; outDoc->endItemList(); } + if (insideItemList) { forceEndItemList(); } if (inBlock()) endBlock(); if (currentListIndentLevel!=0) { @@ -17773,7 +18521,7 @@ void parseDocument(OutputList &ol,const QCString &docString) } } ol+=*outDoc; - delete outDoc; + delete outDoc; outDoc=0; return; } @@ -17782,6 +18530,7 @@ void parseDocument(OutputList &ol,const QCString &docString) void parseDoc(OutputList &ol,const char *clName, const char *memName,const QCString &docString) { + //printf("Doc---------\n%s\n---------\n",docString.data()); initParser(); initParseCodeContext(); exampleDoc=FALSE; // do not cross reference with member docs @@ -17791,10 +18540,14 @@ void parseDoc(OutputList &ol,const char *clName, { refName=className+"::"+memberName; } - else + else if (clName) { refName=className; } + else + { + refName="<unknown>"; + } parseDocument(ol,docString); } @@ -17802,6 +18555,7 @@ void parseDoc(OutputList &ol,const char *clName, void parseText(OutputList &ol,const QCString &txtString) { + if (txtString.isEmpty()) return; inputString = txtString; outDoc = new OutputList(&ol); inputPosition = 0; @@ -17814,7 +18568,7 @@ void parseText(OutputList &ol,const QCString &txtString) memberGroupId=-1; } ol+=*outDoc; - delete outDoc; + delete outDoc; outDoc=0; return; } @@ -17827,6 +18581,7 @@ void parseExample(OutputList &ol,const QCString &docString, initParseCodeContext(); exampleDoc=TRUE; // cross reference with member docs exampleName=fileName; + refName="example "+exampleName; parseDocument(ol,docString); } diff --git a/src/scanner.h b/src/scanner.h index 68ec8d5..d1c8f98 100644 --- a/src/scanner.h +++ b/src/scanner.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/scanner.l b/src/scanner.l index 4f547d6..4756439 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -76,19 +76,21 @@ static int lastBriefContext; static int lastVerbState; static int lastStringContext; static int lastCurlyContext; +static int lastRoundContext; static int lastCodeState; static int lastAfterDocContext; static int lastGroupContext; static int lastMemberGroupContext; static int lastFormulaContext; static int lastAnchorContext; +static int lastInitializerContext; static int nextDefContext; static int overloadContext; static Protection protection; static Protection baseProt; -static int bracketCount = 0 ; static int sharpCount = 0 ; static int roundCount = 0 ; +static int curlyCount = 0 ; static int ifCount = 0 ; static Entry* current_root = 0 ; static Entry* global_root = 0 ; @@ -125,6 +127,9 @@ static bool inDeprecatedBlock; static bool inVersionBlock; static bool inDateBlock; static bool inBugBlock; +static bool inPreBlock; +static bool inPostBlock; +static bool inInvarBlock; static bool inWarningBlock; static bool inParBlock; static bool firstSeeArg; @@ -149,10 +154,15 @@ static int lastCopyArgStringContext; static int lastCopyArgContext; static int currentListIndentLevel; static QCString *copyArgString; +static QCString fullArgString; static ArgumentList *currentArgumentList; static QCString *currentTemplateSpec; static QCString curImageName; +static char lastCopyArgChar; +static QCString *pCopyRoundString; +static QCString *pCopyCurlyString; +static QCString *pCopyQuotedString; //----------------------------------------------------------------------------- @@ -161,7 +171,7 @@ static void initParser() insideArgumentList=FALSE; className.resize(0); memberName.resize(0); - refName.resize(0); + refName="<unknown>"; code.resize(0); linkRef.resize(0); linkText.resize(0); @@ -175,9 +185,9 @@ static void initParser() formulaText.resize(0); protection = Public; baseProt = Public; - bracketCount = 0; sharpCount = 0; roundCount = 0; + curlyCount = 0; ifCount = 0; memberGroupId = -1; sig = FALSE; @@ -199,6 +209,9 @@ static void initParser() inVersionBlock = FALSE; inDateBlock = FALSE; inBugBlock = FALSE; + inPreBlock = FALSE; + inPostBlock = FALSE; + inInvarBlock = FALSE; inWarningBlock = FALSE; inParBlock = FALSE; firstSeeArg = FALSE; @@ -237,7 +250,7 @@ TableElem::TableElem(int r,int c) TableElem::~TableElem() { //printf("TableElem::~TableElem(%d,%d)\n",row,col); - delete ol; + delete ol; ol=0; } class Table @@ -293,7 +306,7 @@ Table::~Table() } parentDoc->endTable(); } - delete elemList; + delete elemList; elemList=0; outDoc=parentDoc; } @@ -494,7 +507,7 @@ static void showLine(OutputList &ol,const char *key) while ( includeFileOffset<includeFileLength && (c=currentIncludeFile[includeFileOffset++])!='\n' && c!=0 ) s+=c; - if (s.stripWhiteSpace().length()>0 || + if (!s.stripWhiteSpace().isEmpty() || includeFileOffset==includeFileLength) found=TRUE; } if (s.find(key)!=-1) @@ -515,7 +528,7 @@ static void showUntil(OutputList &ol,const char *key) while ( includeFileOffset<includeFileLength && (c=currentIncludeFile[includeFileOffset++])!='\n' && c!=0 ) s+=c; - if (s.stripWhiteSpace().length()>0) + if (!s.stripWhiteSpace().isEmpty()) { ol.writeString(" "); parseCode(ol,className,s,exampleDoc,exampleName); @@ -537,11 +550,97 @@ static void newDocState(); //----------------------------------------------------------------- +static QStack<int> listIndentStack; +static bool insideItemList = FALSE; + +static void addListItemMarker(const char *marker) +{ + // find the actual position at which the bullet was found + int indent=0; + const char *p=marker; + char c; + while ((c=*p++)) + { + if (c=='\t') + { + indent+=Config::tabSize - (indent%Config::tabSize); + } + else + { + indent++; + } + } + //printf("list marker found at column %d\n",indent); + if (!insideItemList) + { + outDoc->startItemList(); + outDoc->writeListItem(); + listIndentStack.push(new int(indent)); + insideItemList=TRUE; + } + else + { + int *pPrevIndent = listIndentStack.top(); + if (*pPrevIndent==indent) // new item at the same indent level + { + outDoc->writeListItem(); + } + else if (*pPrevIndent<indent) // start sub item list + { + outDoc->startItemList(); + outDoc->writeListItem(); + listIndentStack.push(new int(indent)); + } + else // end sub item list + { + listIndentStack.pop(); + delete pPrevIndent; + outDoc->endItemList(); + // safe guard against wrong indenting + if (listIndentStack.isEmpty()) + { + insideItemList=FALSE; + warn("Warning: list item with invalid indent found!\n"); + } + else + { + outDoc->writeListItem(); + } + } + } +} + +static void forceEndItemList() +{ + int *indent; + while ((indent=listIndentStack.pop())!=0) + { + outDoc->endItemList(); + delete indent; + } + insideItemList=FALSE; +} + +#if 0 +static void tryEndItemList() +{ + if (listIndentStack.count()==1) // no subitems => end list + { + outDoc->endItemList(); + delete listIndentStack.pop(); + insideItemList=FALSE; + } +} +#endif + +//----------------------------------------------------------------- + static bool inBlock() { return inParamBlock || inRetValBlock || inSeeBlock || inReturnBlock || inAuthorBlock || inVersionBlock || inDateBlock || inWarningBlock || inBugBlock || - inParBlock || inExceptionBlock || inDeprecatedBlock; + inParBlock || inExceptionBlock || inDeprecatedBlock || inPreBlock || + inPostBlock || inInvarBlock; } static void endBlock() @@ -554,7 +653,8 @@ static void endBlock() outDoc->endDescList(); inParamBlock=inRetValBlock=inSeeBlock=inReturnBlock=inAuthorBlock= inVersionBlock=inDateBlock=inBugBlock=inWarningBlock= - inParBlock=inExceptionBlock=inDeprecatedBlock=FALSE; + inParBlock=inExceptionBlock=inDeprecatedBlock=inPreBlock=inPostBlock= + inInvarBlock=FALSE; } static void addSection() @@ -617,32 +717,32 @@ static void checkDocs() } } -static bool curLatexState; -static bool curManState; -static bool curHtmlState; - -static void storeOutputListState() -{ - curLatexState = outDoc->isEnabled(OutputGenerator::Latex); - curHtmlState = outDoc->isEnabled(OutputGenerator::Html); - curManState = outDoc->isEnabled(OutputGenerator::Man); -} - -static void restoreOutputListState() -{ - if (curLatexState) - outDoc->enable(OutputGenerator::Latex); - else - outDoc->disable(OutputGenerator::Latex); - if (curHtmlState) - outDoc->enable(OutputGenerator::Html); - else - outDoc->disable(OutputGenerator::Html); - if (curManState) - outDoc->enable(OutputGenerator::Man); - else - outDoc->disable(OutputGenerator::Man); -} +//static bool curLatexState; +//static bool curManState; +//static bool curHtmlState; +// +//static void storeOutputListState() +//{ +// curLatexState = outDoc->isEnabled(OutputGenerator::Latex); +// curHtmlState = outDoc->isEnabled(OutputGenerator::Html); +// curManState = outDoc->isEnabled(OutputGenerator::Man); +//} +// +//static void restoreOutputListState() +//{ +// if (curLatexState) +// outDoc->enable(OutputGenerator::Latex); +// else +// outDoc->disable(OutputGenerator::Latex); +// if (curHtmlState) +// outDoc->enable(OutputGenerator::Html); +// else +// outDoc->disable(OutputGenerator::Html); +// if (curManState) +// outDoc->enable(OutputGenerator::Man); +// else +// outDoc->disable(OutputGenerator::Man); +//} enum ImageTypes { @@ -660,7 +760,7 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type) FileDef *fd; if ((fd=findFileDef(&imageNameDict,fileName,ambig))) { - QFile inImage(fd->absFilePath().data()); + QFile inImage(fd->absFilePath()); if (inImage.open(IO_ReadOnly)) { result = fileName; @@ -929,6 +1029,8 @@ VAR [vV][aA][rR] %x CopyArgString %x CopyArgRound %x CopyArgSharp +%x CopyArgComment +%x CopyArgCommentLine %x ReadFuncArgType %x ReadTempArgs %x Specialization @@ -936,6 +1038,10 @@ VAR [vV][aA][rR] %x ReadFormulaShort %x ReadFormulaLong %x AnchorLabel +%x ReadInitializer +%x CopyString +%x CopyRound +%x CopyCurly %% @@ -980,6 +1086,9 @@ VAR [vV][aA][rR] if (inBlock()) endBlock(); } */ +<DocScan>^{B}*(("//"{B}*)?)"*"*[ \t]*"-" { /* found list item marker */ + addListItemMarker(yytext); + } <DocScan>"<!--" { BEGIN(DocSkipHtmlComment); } <DocSkipHtmlComment>"--"[!]?">" { BEGIN(DocScan); } <DocSkipHtmlComment>. @@ -998,17 +1107,26 @@ VAR [vV][aA][rR] outDoc->docify(getenv(envvar)); } <DocScan>{CMD}"htmlonly"/[^a-z_A-Z0-9] { + outDoc->pushGeneratorState(); /*storeOutputListState();*/ outDoc->disableAllBut(OutputGenerator::Html); BEGIN(DocHtmlScan); } <DocHtmlScan>{CMD}"endhtmlonly"/[^a-z_A-Z0-9] { - outDoc->enableAll(); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); BEGIN(DocScan); } <DocScan>{CMD}"latexonly"/[^a-z_A-Z0-9] { + /*storeOutputListState();*/ + outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Latex); BEGIN(DocLatexScan); } +<DocLatexScan>{CMD}"endlatexonly"/[^a-z_A-Z0-9] { + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); + BEGIN(DocScan); + } <DocHtmlScan,DocLatexScan>"//"|"/*"|"*/" { outDoc->writeString(yytext); } @@ -1017,10 +1135,6 @@ VAR [vV][aA][rR] c[0]=*yytext;c[1]='\0'; outDoc->writeString(c); } -<DocLatexScan>{CMD}"endlatexonly"/[^a-z_A-Z0-9] { - outDoc->enableAll(); - BEGIN(DocScan); - } <DocScan>"\\postheader"/{BN} <DocScan>"\\functionindex"/{BN} { writeMemberList(*outDoc); } <DocScan>"\\classhierarchy"/{BN} { writeClassHierarchy(*outDoc); } @@ -1053,7 +1167,7 @@ VAR [vV][aA][rR] char c[2];c[0]=*yytext;c[1]='\0'; outDoc->codify(c); } -<DocScan>{CMD}"internal"/{BN} { +<DocScan>{CMD}"internal"{BN}+ { if (!Config::internalDocsFlag) { outDoc->newParagraph(); @@ -1078,7 +1192,7 @@ VAR [vV][aA][rR] <DocLink,DocLinkText>{CMD}"endlink" { // <- needed for things like \endlink. //printf("GenerateLink className=`%s' linkRef=`%s' linkText=`%s'\n", // className.data(),linkRef.data(),linkText.data()); - generateLink(*outDoc,className,linkRef,inSeeBlock,linkText); + generateLink(*outDoc,className,linkRef,inSeeBlock,linkText.stripWhiteSpace()); BEGIN( DocScan ); } /* @@ -1174,6 +1288,60 @@ VAR [vV][aA][rR] outDoc->writeDescItem(); } } +<DocScan>{CMD}"pre"[s]?{BN}+ { + endArgumentList(); + if (!inPreBlock) + { + if (inBlock()) endBlock(); + inPreBlock=TRUE; + outDoc->startDescList(); + outDoc->startBold(); + scanString(theTranslator->trPrecondition()+": "); + outDoc->endBold(); + outDoc->endDescTitle(); + outDoc->writeDescItem(); + } + else + { + outDoc->writeDescItem(); + } + } +<DocScan>{CMD}"post"[s]?{BN}+ { + endArgumentList(); + if (!inPostBlock) + { + if (inBlock()) endBlock(); + inPostBlock=TRUE; + outDoc->startDescList(); + outDoc->startBold(); + scanString(theTranslator->trPostcondition()+": "); + outDoc->endBold(); + outDoc->endDescTitle(); + outDoc->writeDescItem(); + } + else + { + outDoc->writeDescItem(); + } + } +<DocScan>{CMD}"invariant"[s]?{BN}+ { + endArgumentList(); + if (!inInvarBlock) + { + if (inBlock()) endBlock(); + inInvarBlock=TRUE; + outDoc->startDescList(); + outDoc->startBold(); + scanString(theTranslator->trInvariant()+": "); + outDoc->endBold(); + outDoc->endDescTitle(); + outDoc->writeDescItem(); + } + else + { + outDoc->writeDescItem(); + } + } <DocScan>{CMD}"version"{BN}+ { endArgumentList(); if (!inVersionBlock) @@ -1181,7 +1349,6 @@ VAR [vV][aA][rR] if (inBlock()) endBlock(); inVersionBlock=TRUE; outDoc->startDescList(); - //outDoc->writeBoldString("Version: "); outDoc->startBold(); scanString(theTranslator->trVersion()+": "); outDoc->endBold(); @@ -1200,7 +1367,6 @@ VAR [vV][aA][rR] if (inBlock()) endBlock(); inDateBlock=TRUE; outDoc->startDescList(); - //outDoc->writeBoldString("Date: "); outDoc->startBold(); scanString(theTranslator->trDate()+": "); outDoc->endBold(); @@ -1237,7 +1403,6 @@ VAR [vV][aA][rR] if (inBlock()) endBlock(); inAuthorBlock=TRUE; outDoc->startDescList(); - //outDoc->writeBoldString("Author(s): "); outDoc->startBold(); scanString(theTranslator->trAuthors()+": "); outDoc->endBold(); @@ -1256,7 +1421,6 @@ VAR [vV][aA][rR] if (inBlock()) endBlock(); inReturnBlock=TRUE; outDoc->startDescList(); - //outDoc->writeBoldString("Returns: "); outDoc->startBold(); scanString(theTranslator->trReturns()+": "); outDoc->endBold(); @@ -1270,9 +1434,7 @@ VAR [vV][aA][rR] { if (inBlock()) endBlock(); inSeeBlock=TRUE; - //firstSeeArg=TRUE; outDoc->startDescList(); - //outDoc->writeBoldString("See also: "); outDoc->startBold(); scanString(theTranslator->trSeeAlso()+": "); outDoc->endBold(); @@ -1439,7 +1601,7 @@ VAR [vV][aA][rR] outDoc->writeSectionRef(sec->fileName,sec->label,text); } } - else if (!generateLink(*outDoc,className,yytext,TRUE,text)) + else if (!generateLink(*outDoc,className,sectionRef,TRUE,text)) { warn("Warning: reference to unknown section %s!\n",sectionRef.data()); outDoc->writeBoldString("unknown reference!"); @@ -1477,10 +1639,12 @@ VAR [vV][aA][rR] curImageName = findAndCopyImage(stripQuotes(yytext),IT_Html); if (!curImageName.isEmpty()) { - storeOutputListState(); + /*storeOutputListState();*/ + outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Html); outDoc->writeImage(curImageName,0,0); - restoreOutputListState(); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); } BEGIN(DocScan); } @@ -1492,24 +1656,30 @@ VAR [vV][aA][rR] BEGIN(DocLatexImageWidth); } <DocLatexImageWidth>\n { // no width specified - storeOutputListState(); + /*storeOutputListState();*/ + outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Latex); outDoc->writeImage(curImageName,0,0); - restoreOutputListState(); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); BEGIN(DocScan); } <DocLatexImageWidth>"width"{B}*"="{B}*[0-9\.]+({B}*{ID})? { - storeOutputListState(); + /*storeOutputListState();*/ + outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Latex); outDoc->writeImage(curImageName,yytext,0); - restoreOutputListState(); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); BEGIN(DocScan); } <DocLatexImageWidth>"height"{B}*"="{B}*[0-9\.]+({B}*{ID})? { - storeOutputListState(); + /*storeOutputListState();*/ + outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Latex); outDoc->writeImage(curImageName,0,yytext); - restoreOutputListState(); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); BEGIN(DocScan); } <DocImage>[a-z_A-Z0-9\.\-]+ { @@ -1546,7 +1716,7 @@ VAR [vV][aA][rR] removeRedundantWhiteSpace(oName),inSeeBlock); } <DocScan>("http:"|"ftp:"){URLMASK} { outDoc->writeHtmlLink(yytext,yytext); } -<DocScan>[a-zA-Z\.]+"@"[a-zA-Z\.]+ { outDoc->writeMailLink(yytext); } +<DocScan>[a-zA-Z_0-9\.\-]+"@"[0-9a-z_A-Z\.\-]+ { outDoc->writeMailLink(yytext); } <DocScan>{FILEMASK} { generateFileRef(*outDoc,yytext); } @@ -1563,16 +1733,17 @@ VAR [vV][aA][rR] BEGIN( DocScan ); } <DocScan>{CMD}"e"{BN}+ { BEGIN( DocEmphasis ); } -<DocScan>{CMD}"a"{BN}+ { BEGIN( DocEmphasis ); } +<DocScan>{CMD}"a"{BN}+ { BEGIN( DocEmphasis ); } <DocScan>{CMD}"b"{BN}+ { BEGIN( DocBold ); } -<DocScan>{CMD}"c"{BN}+ { BEGIN( DocCode ); } +<DocScan>{CMD}"c"{BN}+ { BEGIN( DocCode ); } <DocScan>{CMD}"l"{BN}+ +<DocScan>{CMD}"n" { outDoc->lineBreak(); } <DocScan>{CMD}"include"{BN}+ { BEGIN( DocInclude ); } -<DocScan>{CMD}"dontinclude"{BN}+ { BEGIN( DocDontInclude ); } -<DocScan>{CMD}"skip"{BN}+ { BEGIN( DocSkipKey ); } +<DocScan>{CMD}"dontinclude"{BN}+ { BEGIN( DocDontInclude ); } +<DocScan>{CMD}"skip"{BN}+ { BEGIN( DocSkipKey ); } <DocScan>{CMD}"skipline"{BN}+ { BEGIN( DocSkiplineKey ); firstLine=TRUE; } -<DocScan>{CMD}"line"{BN}+ { BEGIN( DocLineKey ); firstLine=TRUE; } -<DocScan>{CMD}"until"{BN}+ { BEGIN( DocUntilKey ); firstLine=TRUE; } +<DocScan>{CMD}"line"{BN}+ { BEGIN( DocLineKey ); firstLine=TRUE; } +<DocScan>{CMD}"until"{BN}+ { BEGIN( DocUntilKey ); firstLine=TRUE; } <DocSkipKey>[^ \t\r\n]+ { if (includeFileLength>0) skipUntil(yytext); @@ -1660,10 +1831,12 @@ VAR [vV][aA][rR] <DocScan>"<"{VAR}{ATTR}">" { outDoc->startEmphasis(); } <DocScan>"</"{VAR}{ATTR}">" { outDoc->endEmphasis(); } <DocScan>"<"{IMG}{ATTR}">" { - storeOutputListState(); + /*storeOutputListState();*/ + outDoc->pushGeneratorState(); outDoc->disableAllBut(OutputGenerator::Html); outDoc->writeString(yytext); - restoreOutputListState(); + /*restoreOutputListState();*/ + outDoc->popGeneratorState(); } <DocScan>"<"{PRE}{ATTR}">" { outDoc->startCodeFragment(); @@ -1754,25 +1927,42 @@ VAR [vV][aA][rR] <DocScan>"%"[a-zA-Z_0-9\-]+ { outDoc->docify(yytext+1); } -<DocEmphasis>[^ \t\n\r]+ { +<DocEmphasis>[a-z_A-Z][a-z_A-Z:0-9<>]* { + outDoc->startEmphasis(); + linkifyText(*outDoc,className,0,yytext); + outDoc->endEmphasis(); + BEGIN( DocScan ); + } +<DocEmphasis>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"()" { outDoc->startEmphasis(); generateRef(*outDoc,className,yytext,inSeeBlock); outDoc->endEmphasis(); BEGIN( DocScan ); - //addToIndex(yytext); + } +<DocBold>[a-z_A-Z][a-z_A-Z:0-9<>]* { + outDoc->startBold(); + linkifyText(*outDoc,className,0,yytext); + outDoc->endBold(); + BEGIN( DocScan ); } -<DocBold>[^ \t\n\r]+ { +<DocBold>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"()" { outDoc->startBold(); generateRef(*outDoc,className,yytext,inSeeBlock); outDoc->endBold(); BEGIN( DocScan ); } -<DocCode>[^ \t\n\r]+ { - outDoc->startTypewriter(); - generateRef(*outDoc,className,yytext,inSeeBlock); +<DocCode>[a-z_A-Z][a-z_A-Z:0-9<>]* { + outDoc->startTypewriter(); + linkifyText(*outDoc,className,0,yytext); outDoc->endTypewriter(); BEGIN( DocScan ); } +<DocCode>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"()" { + outDoc->startTypewriter(); + generateRef(*outDoc,className,yytext,inSeeBlock); + outDoc->endTypewriter(); + BEGIN( DocScan ); + } <DocInclude>{FILE} { includeFile(*outDoc,stripQuotes(yytext),FALSE); BEGIN( DocScan ); @@ -1793,26 +1983,39 @@ VAR [vV][aA][rR] outDoc->docify(yytext); } <DocCode,DocEmphasis,DocBold>"\n" { outDoc->writeChar('\n'); } -<DocScan>({B}*"\n"{B}*){2,} { +<DocScan>({B}*"\n"){2,}{B}* { if (insideArgumentList) { insideArgumentList=FALSE; outDoc->endItemList(); } + else if (insideItemList) + { + forceEndItemList(); + } else { outDoc->newParagraph(); } if (inBlock()) endBlock(); } -<DocScan>{BN}+ { +<DocScan>{BN}+/\n { outDoc->writeChar(' '); } +<DocScan>{B}+ { + outDoc->writeChar(' '); + } +<DocScan>\n { + outDoc->writeChar('\n'); + } +<DocCode,DocEmphasis,DocBold,DocScan,Text>[a-z_A-Z0-9]+ { + outDoc->docify(yytext); + } <DocCode,DocEmphasis,DocBold,DocScan,Text>. { outDoc->writeChar(*yytext); } <NextSemi>"{" { - bracketCount=0; + curlyCount=0; BEGIN(SkipCurlyBlock); } <NextSemi>"(" { @@ -1829,11 +2032,13 @@ VAR [vV][aA][rR] BEGIN( NextSemi ) ; } <SkipCurlyBlock>"{" { - ++bracketCount ; + ++curlyCount ; } <SkipCurlyBlock>"}" { - if( bracketCount ) - --bracketCount ; + if( curlyCount ) + { + --curlyCount ; + } else BEGIN( NextSemi ) ; } @@ -2063,7 +2268,8 @@ VAR [vV][aA][rR] currentArgumentList = current->tArgList; } templateStr="<"; - copyArgString=&templateStr; + fullArgString = templateStr.copy(); + copyArgString = &templateStr; currentArgumentContext = FindMembers; //printf("Start template list\n"); BEGIN( ReadTempArgs ); @@ -2152,7 +2358,8 @@ VAR [vV][aA][rR] { current->args = "("; currentArgumentContext = FuncQual; - copyArgString=¤t->args; + fullArgString = current->args.copy(); + copyArgString = ¤t->args; //printf("Found %s\n",current->name.data()); BEGIN( ReadFuncArgType ) ; } @@ -2236,7 +2443,7 @@ VAR [vV][aA][rR] current->slot = slot; BEGIN(FindMembers); } -<DefineEnd>\\\n { +<DefineEnd>\\[\r]?\n { yyLineNr++; } <DefineEnd>\" { @@ -2246,7 +2453,7 @@ VAR [vV][aA][rR] <DefineEnd>. <FindMembers>[*&]+ { current->name += yytext ; } -<FindMembers,MemberSpec,Function,NextSemi>";"{BN}*("/**"|"//!"|"/*!"|"///")"<" { +<FindMembers,MemberSpec,Function,NextSemi,ReadInitializer>";"{BN}*("/**"|"//!"|"/*!"|"///")"<" { lineCount(); if (current->bodyLine==-1) current->bodyLine=yyLineNr; @@ -2268,7 +2475,7 @@ VAR [vV][aA][rR] BEGIN(AfterDoc); } } -<MemberSpec,FindFields,FindMembers,NextSemi>","{BN}*("/**"|"//!"|"/*!"|"///")"<" { +<MemberSpec,FindFields,FindMembers,NextSemi,ReadInitializer>","{BN}*("/**"|"//!"|"/*!"|"///")"<" { lineCount(); lastAfterDocContext = YY_START; afterDocTerminator = ','; @@ -2288,7 +2495,7 @@ VAR [vV][aA][rR] BEGIN(AfterDoc); } } -<DefineEnd,FindFields,FindFieldArg>{BN}*("/**"|"//!"|"/*!"|"///")"<" { +<DefineEnd,FindFields,FindFieldArg,ReadInitializer>{BN}*("/**"|"//!"|"/*!"|"///")"<" { lineCount(); lastAfterDocContext = YY_START; if (YY_START==DefineEnd) @@ -2312,16 +2519,129 @@ VAR [vV][aA][rR] } } <FindMembers>"=" { - current->bodyLine=yyLineNr; - BEGIN(NextSemi); + current->bodyLine = yyLineNr; + lastInitializerContext = YY_START; + BEGIN(ReadInitializer); + } + /* Read initializer rules */ +<ReadInitializer>"(" { + lastRoundContext=YY_START; + pCopyRoundString=¤t->initializer; + roundCount=0; + current->initializer+=*yytext; + BEGIN(CopyRound); + } +<ReadInitializer>"{" { + lastCurlyContext=YY_START; + pCopyCurlyString=¤t->initializer; + curlyCount=0; + current->initializer+=*yytext; + BEGIN(CopyCurly); + } +<ReadInitializer>[;,] { + //printf(">> initializer `%s' <<\n",current->initializer.data()); + unput(*yytext); + BEGIN(lastInitializerContext); + } +<ReadInitializer>\" { + lastStringContext=YY_START; + current->initializer+=*yytext; + pCopyQuotedString=¤t->initializer; + BEGIN(CopyString); + } +<ReadInitializer>"'"\\[0-7]{1,3}"'" +<ReadInitializer>"'"\\."'" +<ReadInitializer>"'"."'" +<ReadInitializer>\n { + current->initializer+=*yytext; + yyLineNr++; + } +<ReadInitializer>. { + current->initializer+=*yytext; + } + + /* generic quoted string copy rules */ +<CopyString>\\. { + *pCopyQuotedString+=yytext; + } +<CopyString>\" { + *pCopyQuotedString+=*yytext; + BEGIN( lastStringContext ); + } +<CopyString>"/*"|"*/"|"//" { + *pCopyQuotedString+=yytext; + } +<CopyString>\n { + *pCopyQuotedString+=*yytext; + yyLineNr++; + } +<CopyString>. { + *pCopyQuotedString+=*yytext; + } + + /* generic round bracket list copy rules */ +<CopyRound>\" { + *pCopyRoundString+=*yytext; + pCopyQuotedString=pCopyRoundString; + lastStringContext=YY_START; + BEGIN(CopyString); + } +<CopyRound>"(" { + *pCopyRoundString+=*yytext; + roundCount++; + } +<CopyRound>")" { + *pCopyRoundString+=*yytext; + if (--roundCount<0) + BEGIN(lastRoundContext); + } +<CopyRound>\n { + yyLineNr++; + *pCopyRoundString+=*yytext; + } +<CopyRound>"'"\\[0-7]{1,3}"'" { *pCopyRoundString+=yytext; } +<CopyRound>"'"\\."'" { *pCopyRoundString+=yytext; } +<CopyRound>"'"."'" { *pCopyRoundString+=yytext; } +<CopyRound>[^"'()\n]+ { + *pCopyRoundString+=yytext; } + + /* generic curly bracket list copy rules */ +<CopyCurly>\" { + *pCopyCurlyString+=*yytext; + pCopyQuotedString=pCopyCurlyString; + lastStringContext=YY_START; + BEGIN(CopyString); + } +<CopyCurly>"{" { + *pCopyCurlyString+=*yytext; + curlyCount++; + } +<CopyCurly>"}" { + *pCopyCurlyString+=*yytext; + if (--curlyCount<0) + BEGIN(lastCurlyContext); + } +<CopyCurly>"'"\\[0-7]{1,3}"'" { *pCopyCurlyString+=yytext; } +<CopyCurly>"'"\\."'" { *pCopyCurlyString+=yytext; } +<CopyCurly>"'"."'" { *pCopyCurlyString+=yytext; } +<CopyCurly>[^"'{}\n]+ { + *pCopyCurlyString+=yytext; + } +<CopyCurly>\n { + yyLineNr++; + *pCopyCurlyString+=*yytext; + } + <FindMembers>[:;,] { QCString oldType = current->type.copy(); QCString oldDocs = current->doc.copy(); if ( *yytext != ':') { if (current->bodyLine==-1) + { current->bodyLine = yyLineNr; + } current->type=current->type.simplifyWhiteSpace(); current->args=current->args.simplifyWhiteSpace(); current->name=current->name.stripWhiteSpace(); @@ -2388,7 +2708,8 @@ VAR [vV][aA][rR] current->name = yytext; } <FindFields>"=" { - BEGIN(FindFieldArg); + lastInitializerContext = YY_START; + BEGIN(ReadInitializer); } <FindFields>"," { //printf("adding `%s' `%s' `%s' to enum `%s'\n", @@ -2412,7 +2733,9 @@ VAR [vV][aA][rR] current->stat = gstat; current->slot = slot; } + /* <FindFieldArg>"," { unput(*yytext); BEGIN(FindFields); } + */ <Curly>[^\r\n{}"'/]* { current->program += yytext ; } <Curly>"//".* { current->program += yytext ; } <Curly>\"[^\r\n"]*\" { current->program += yytext ; } @@ -2429,12 +2752,13 @@ VAR [vV][aA][rR] <Curly>"'"\\."'" { current->program += yytext; } <Curly>"'"."'" { current->program += yytext; } <Curly>"{" { current->program += yytext ; - ++bracketCount ; + ++curlyCount ; } -<Curly>"}" { if ( bracketCount ) +<Curly>"}" { //err("Curly count=%d\n",curlyCount); + if ( curlyCount>0 ) { current->program += yytext ; - --bracketCount ; + --curlyCount ; } else { @@ -2558,7 +2882,7 @@ VAR [vV][aA][rR] varEntry->name = msName.stripWhiteSpace(); varEntry->type = current->type.simplifyWhiteSpace()+" "; varEntry->args = msArgs; //current->args.simplifyWhiteSpace(); - //if (current->name.length()>0 && current->name[0]!='@' && + //if (!current->name.isEmpty() && current->name[0]!='@' && // current->parent->section & Entry::COMPOUND_MASK) // varEntry->type+=current->parent->name+"::"; if (isTypedef) @@ -2587,13 +2911,19 @@ VAR [vV][aA][rR] BEGIN( FindMembers ); } } -<MemberSpec>"=" { BEGIN(MemberSpecSkip); } +<MemberSpec>"=" { + lastInitializerContext=YY_START; + BEGIN(ReadInitializer); + /* BEGIN(MemberSpecSkip); */ + } + /* <MemberSpecSkip>"{" { - bracketCount=0; + curlyCount=0; lastCurlyContext = MemberSpecSkip; previous = current; BEGIN(SkipCurly); } + */ <MemberSpecSkip>"," { BEGIN(MemberSpec); } <MemberSpecSkip>";" { unput(';'); BEGIN(MemberSpec); } <Curly>{BN}+ { current->program += yytext ; @@ -2634,7 +2964,7 @@ VAR [vV][aA][rR] } <EndFuncPtr>"(" { // a function returning a function current->args += *yytext ; - bracketCount=0; + roundCount=0; BEGIN( FuncFunc ); } <EndFuncPtr>")" { @@ -2642,12 +2972,12 @@ VAR [vV][aA][rR] } <FuncFunc>"(" { current->args += *yytext ; - ++bracketCount; + ++roundCount; } <FuncFunc>")" { current->args += *yytext ; - if ( bracketCount ) - --bracketCount; + if ( roundCount ) + --roundCount; else { BEGIN(FuncFuncEnd); @@ -2668,12 +2998,12 @@ VAR [vV][aA][rR] } <FuncFuncType>"(" { current->type += *yytext; - bracketCount++; + roundCount++; } <FuncFuncType>")" { current->type += *yytext; - if (bracketCount) - --bracketCount; + if (roundCount) + --roundCount; else BEGIN(Function); } @@ -2685,6 +3015,7 @@ VAR [vV][aA][rR] <FindMembers>"(" { current->args = yytext; current->bodyLine = yyLineNr; currentArgumentContext = FuncQual; + fullArgString=current->args.copy(); copyArgString=¤t->args; BEGIN( ReadFuncArgType ) ; //printf(">>> Read function arguments!\n"); @@ -2699,46 +3030,96 @@ VAR [vV][aA][rR] /*- Function argument reading rules ---------------------------------------*/ -<ReadFuncArgType>[^ \/\r\t\n\)\(\"\']+ { *copyArgString+=yytext; } -<CopyArgString>[^\n\\\"\']+ { *copyArgString+=yytext; } -<CopyArgRound>[^\/\n\)\(\"\']+ { *copyArgString+=yytext; } +<ReadFuncArgType>[^ \/\r\t\n\)\(\"\']+ { *copyArgString+=yytext; + fullArgString+=yytext; + } +<CopyArgString>[^\n\\\"\']+ { *copyArgString+=yytext; + fullArgString+=yytext; + } +<CopyArgRound>[^\/\n\)\(\"\']+ { + *copyArgString+=yytext; + fullArgString+=yytext; + } <ReadFuncArgType,ReadTempArgs>{BN}* { *copyArgString+=" "; + fullArgString+=" "; lineCount(); } <ReadFuncArgType,CopyArgRound,CopyArgSharp,ReadTempArgs>\" { *copyArgString+=*yytext; + fullArgString+=*yytext; lastCopyArgStringContext = YY_START; BEGIN( CopyArgString ); } <ReadFuncArgType,ReadTempArgs>"(" { *copyArgString+=*yytext; + fullArgString+=*yytext; argRoundCount=0; lastCopyArgContext = YY_START; BEGIN( CopyArgRound ); } <ReadFuncArgType>")" { *copyArgString+=*yytext; - stringToArgumentList(*copyArgString,current->argList); + fullArgString+=*yytext; + stringToArgumentList(fullArgString,current->argList); BEGIN( currentArgumentContext ); } + /* a special comment */ +<ReadFuncArgType>("/*"[*!]|"//"[/!])("<"?) { + fullArgString+=yytext; + lastCopyArgChar=0; + if (yytext[1]=='/') + BEGIN( CopyArgCommentLine ); + else + BEGIN( CopyArgComment ); + } + /* `)' followed by a special comment */ +<ReadFuncArgType>")"{BN}*("/*"[*!]|"//"[/!])"<" { + lineCount(); + lastCopyArgChar=*yytext; + QCString text=&yytext[1]; + text=text.stripWhiteSpace(); + fullArgString+=text; + if (text.find("//")!=-1) + BEGIN( CopyArgCommentLine ); + else + BEGIN( CopyArgComment ); + } +<CopyArgComment>[^\n\*]+ { fullArgString+=yytext; } +<CopyArgComment>"*/" { fullArgString+=yytext; + if (lastCopyArgChar!=0) + unput(lastCopyArgChar); + BEGIN( ReadFuncArgType ); + } +<CopyArgCommentLine>\n { fullArgString+=yytext; + if (lastCopyArgChar!=0) + unput(lastCopyArgChar); + BEGIN( ReadFuncArgType ); + } +<CopyArgCommentLine>[^\n]+ { fullArgString+=yytext; } +<CopyArgComment>\n { fullArgString+=*yytext; yyLineNr++; } +<CopyArgComment>. { fullArgString+=*yytext; } <ReadTempArgs>"<" { *copyArgString+=*yytext; + fullArgString+=*yytext; argSharpCount=0; BEGIN( CopyArgSharp ); } <ReadTempArgs>">" { *copyArgString+=*yytext; + fullArgString+=*yytext; //printf("end template list %s\n",copyArgString->data()); - stringToArgumentList(*copyArgString,currentArgumentList); + stringToArgumentList(fullArgString,currentArgumentList); BEGIN( currentArgumentContext ); } <CopyArgRound>"(" { argRoundCount++; *copyArgString+=*yytext; + fullArgString+=*yytext; } <CopyArgRound>")" { *copyArgString+=*yytext; + fullArgString+=*yytext; if (argRoundCount>0) argRoundCount--; else @@ -2747,9 +3128,11 @@ VAR [vV][aA][rR] <CopyArgSharp>"<" { argSharpCount++; *copyArgString+=*yytext; + fullArgString+=*yytext; } <CopyArgSharp>">" { *copyArgString+=*yytext; + fullArgString+=*yytext; if (argRoundCount>0) argRoundCount--; else @@ -2757,16 +3140,34 @@ VAR [vV][aA][rR] } <CopyArgString>\\. { *copyArgString+=yytext; + fullArgString+=yytext; } <CopyArgString>\" { *copyArgString+=*yytext; + fullArgString+=*yytext; BEGIN( lastCopyArgStringContext ); } -<ReadFuncArgType,ReadTempArgs,CopyArgRound,CopyArgSharp>"'"\\[0-7]{1,3}"'" { *copyArgString+=yytext; } -<ReadFuncArgType,ReadTempArgs,CopyArgRound,CopyArgSharp>"'"\\."'" { *copyArgString+=yytext; } -<ReadFuncArgType,ReadTempArgs,CopyArgRound,CopyArgSharp>"'"."'" { *copyArgString+=yytext; } -<ReadFuncArgType,ReadTempArgs,CopyArgString,CopyArgRound,CopyArgSharp>\n { yyLineNr++; *copyArgString+=*yytext; } -<ReadFuncArgType,ReadTempArgs,CopyArgString,CopyArgRound,CopyArgSharp>. { *copyArgString+=*yytext; } +<ReadFuncArgType,ReadTempArgs,CopyArgRound,CopyArgSharp>"'"\\[0-7]{1,3}"'" { + *copyArgString+=yytext; + fullArgString+=yytext; + } +<ReadFuncArgType,ReadTempArgs,CopyArgRound,CopyArgSharp>"'"\\."'" { + *copyArgString+=yytext; + fullArgString+=yytext; + } +<ReadFuncArgType,ReadTempArgs,CopyArgRound,CopyArgSharp>"'"."'" { + *copyArgString+=yytext; + fullArgString+=yytext; + } +<ReadFuncArgType,ReadTempArgs,CopyArgString,CopyArgRound,CopyArgSharp>\n { + yyLineNr++; + *copyArgString+=*yytext; + fullArgString+=*yytext; + } +<ReadFuncArgType,ReadTempArgs,CopyArgString,CopyArgRound,CopyArgSharp>. { + *copyArgString+=*yytext; + fullArgString+=*yytext; + } @@ -2774,11 +3175,11 @@ VAR [vV][aA][rR] <FuncRound>"(" { current->args += *yytext ; - ++bracketCount ; + ++roundCount ; } <FuncRound>")" { current->args += *yytext ; - if ( bracketCount ) - --bracketCount ; + if ( roundCount ) + --roundCount ; else BEGIN( FuncQual ) ; } @@ -2824,11 +3225,11 @@ VAR [vV][aA][rR] BEGIN( ExcpRound ) ; } <ExcpRound>"(" { current->exception += *yytext ; - ++bracketCount ; + ++roundCount ; } <ExcpRound>")" { current->exception += *yytext ; - if ( bracketCount ) - --bracketCount ; + if ( roundCount ) + --roundCount ; else BEGIN( FuncQual ) ; } @@ -2923,6 +3324,7 @@ VAR [vV][aA][rR] if (current_root->section & Entry::COMPOUND_MASK) previous->inLine = TRUE; //addToBody(yytext); + curlyCount=0; BEGIN( SkipCurly ) ; } else if( *yytext == ':' ) @@ -2945,12 +3347,14 @@ VAR [vV][aA][rR] } <SkipCurly>"{" { //addToBody(yytext); - ++bracketCount ; + ++curlyCount ; } <SkipCurly>"}" { //addToBody(yytext); - if( bracketCount ) - --bracketCount ; + if( curlyCount ) + { + --curlyCount ; + } else { previous->endBodyLine=yyLineNr; @@ -2958,10 +3362,10 @@ VAR [vV][aA][rR] } } <SkipCurly>"}"{BN}*("/*!"|"/**"|"//!"|"///")"<" { - if ( bracketCount ) + if ( curlyCount ) { //addToBody(yytext); - --bracketCount ; + --curlyCount ; } else { @@ -3008,7 +3412,7 @@ VAR [vV][aA][rR] yyLineNr++; //addToBody(yytext); } -<SkipCurly,SkipCurlyCpp>. { +<SkipCurly,SkipCurlyCpp>[^\n"'\\/{}]+ { //addToBody(yytext); } <SkipCurlyCpp>\n { @@ -3021,16 +3425,17 @@ VAR [vV][aA][rR] //addToBody(yytext); yyLineNr++; } -<SkipInits,SkipCurly,SkipCurlyCpp>"/*" { - //addToBody(yytext); - } -<SkipInits,SkipCurly,SkipCurlyCpp>"*/" { +<SkipInits,SkipCurly,SkipCurlyCpp>"/*" { //addToBody(yytext); + lastCContext = YY_START; + BEGIN(SkipComment); } -<SkipInits,SkipCurly,SkipCurlyCpp>"//".* { +<SkipInits,SkipCurly,SkipCurlyCpp>"//" { //addToBody(yytext); + lastCContext = YY_START; + BEGIN(SkipCxxComment); } -<SkipInits,SkipCurly,SkipCurlyCpp>. { +<SkipInits,SkipCurly,SkipCurlyCpp>. { //addToBody(yytext); } <SkipString>\\. { @@ -3083,19 +3488,15 @@ VAR [vV][aA][rR] lineCount(); BEGIN( ClassVar ); } - /* -<ClassVar>{ID}/{BN}*"{" { // we probably got some M$ extension - current->name = yytext ; - } -<ClassVar>{ID}/{BN}*":" { // we probably got some M$ extension - current->name = yytext ; - } - */ <ClassVar>{ID} { if (isTypedef) { - typedefDict.insert(yytext,new QCString(current->name)); - current->type.prepend("typedef "); + // typedefDict.insert(yytext,new QCString(current->name)); + // current->type.prepend("typedef "); + // current->extends + current->extends->append( + new BaseInfo(yytext,Public,Normal) + ); } current->type += ' ' ; current->type += current->name ; @@ -3104,7 +3505,7 @@ VAR [vV][aA][rR] } <ClassVar>[(\[] { // probably a function anyway - unput('('); + unput(*yytext); BEGIN( FindMembers ); } <ClassVar>":" { @@ -3124,8 +3525,9 @@ VAR [vV][aA][rR] <ClassName,ClassVar>{B}*"{"{B}* { current->fileName = yyFileName ; current->startLine = yyLineNr ; current->name = removeRedundantWhiteSpace(current->name); - if (current->name.length()==0 && !isTypedef) // anonymous compound + if (current->name.isEmpty() && !isTypedef) // anonymous compound current->name.sprintf("@%d",anonCount++); + curlyCount=0; BEGIN( Curly ) ; } <BasesProt>"virtual" { baseVirt = Virtual; } @@ -3182,7 +3584,7 @@ VAR [vV][aA][rR] } <Bases>"," { current->args += ',' ; current->name = removeRedundantWhiteSpace(current->name); - if (baseName.length()>0) + if (!baseName.isEmpty()) current->extends->append( new BaseInfo(baseName,baseProt,baseVirt) ); @@ -3194,10 +3596,11 @@ VAR [vV][aA][rR] <Bases>{B}*"{"{B}* { current->fileName = yyFileName ; current->startLine = yyLineNr ; current->name = removeRedundantWhiteSpace(current->name); - if (baseName.length()>0) + if (!baseName.isEmpty()) current->extends->append( new BaseInfo(baseName,baseProt,baseVirt) ); + curlyCount=0; BEGIN( Curly ) ; } <Comment>{BN}+ { current->program += yytext ; @@ -3207,7 +3610,7 @@ VAR [vV][aA][rR] <Comment>"//" { current->program += yytext ; } <Comment>[^\n\*]+ { current->program += yytext ; } <Comment>.*"*/" { current->program += yytext ; - BEGIN( Curly ) ; + BEGIN( lastContext ) ; } <Comment>. { current->program += *yytext ; } @@ -3278,7 +3681,7 @@ VAR [vV][aA][rR] current->name.resize(0); current->args.resize(0); current->argList->clear(); - bracketCount=0; + curlyCount=0; BEGIN( SkipCurlyBlock ); } @@ -3489,9 +3892,9 @@ VAR [vV][aA][rR] <ClassDocArg2>{BL} { yyLineNr++; newDocState(); } -<ClassDocArg3>{FILE} { +<ClassDocArg3>[<]?{FILE}[>]? { //printf("ClassDocArg3=%s\n",yytext); - current->includeName = stripQuotes(yytext); + current->includeName = yytext; newDocState(); } <ClassDocArg3>{BL} { yyLineNr++; @@ -3687,12 +4090,12 @@ VAR [vV][aA][rR] <Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc>("\\\\"|"@@")"f"[$\[\]] { current->doc += &yytext[1]; } -<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc>{CMD}"f$" { +<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc>{CMD}"f$" { lastFormulaContext = YY_START; formulaText="$"; BEGIN(ReadFormulaShort); } -<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc>{CMD}"f[" { +<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc>{CMD}"f[" { lastFormulaContext = YY_START; formulaText="\\["; BEGIN(ReadFormulaLong); @@ -3784,6 +4187,7 @@ VAR [vV][aA][rR] <DocBaseClass>\n { yyLineNr++; BEGIN( ClassDoc ); } <ClassDocBrief>{BS}{BL} { current->brief=current->brief.stripWhiteSpace(); + if (!current->doc.isEmpty()) current->doc+="<p>"; yyLineNr++; BEGIN( lastBriefContext ); } @@ -3825,7 +4229,7 @@ VAR [vV][aA][rR] <ClassDocFunc>"\n" { yyLineNr++; current->name = current->name.stripWhiteSpace(); - if (current->section == Entry::MEMBERDOC_SEC && current->args.length()==0) + if (current->section == Entry::MEMBERDOC_SEC && current->args.isEmpty()) current->section = Entry::VARIABLEDOC_SEC; newDocState(); } @@ -3835,7 +4239,8 @@ VAR [vV][aA][rR] <ClassDocFunc>"(" { current->args+=*yytext; currentArgumentContext = ClassDocFuncQual; - copyArgString=¤t->args; + fullArgString = current->args.copy(); + copyArgString = ¤t->args; BEGIN( ReadFuncArgType ) ; } <ClassDocFunc>"("({B}*"*")+ { @@ -3955,10 +4360,15 @@ VAR [vV][aA][rR] unput('/');unput('*'); BEGIN( tmpDocType ); } +<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"-" { + current->doc += yytext; + } <Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief>^{B}*(("//"{B}*)?)"*"+/[^/] -<DefLineDoc,LineDoc,ClassDoc,Doc>"/*" { current->doc += yytext; } - -<SkipCxxComment>.*\n { yyLineNr++ ; +<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief>^{B}*(("//"{B}*)?)"*"+{B}+ { + current->doc+=' '; + } +<DefLineDoc,LineDoc,ClassDoc,Doc>"/*" { current->doc += yytext; } +<SkipCxxComment>.*/\n { BEGIN( lastCContext ) ; } <SkipComment>[^\*\n]+ @@ -4033,7 +4443,7 @@ void parseCompounds(Entry *rt) Entry *ce; for (;(ce=eli.current());++eli) { - if (ce->program.length()>0) + if (!ce->program.isEmpty()) { //printf("-- %s ---------\n%s\n---------------\n", // ce->name.data(),ce->program.data()); @@ -4056,7 +4466,7 @@ void parseCompounds(Entry *rt) current->protection = protection = Private ; else if (ce->section == Entry::ENUM_SEC ) // enum current->protection = protection = ce->protection; - else if (ce->name.length()>0 && ce->name.at(0)=='@') // anonymous union + else if (!ce->name.isEmpty() && ce->name.at(0)=='@') // anonymous union current->protection = protection = ce->protection; else // named struct, union, or interface current->protection = protection = Public ; @@ -4065,7 +4475,7 @@ void parseCompounds(Entry *rt) gstat = FALSE; virt = Normal; scanYYlex() ; - delete current; + delete current; current=0; ce->program.resize(0); } parseCompounds(ce); @@ -4093,7 +4503,7 @@ void parseMain(Entry *rt) BEGIN( FindMembers ); scanYYlex(); rt->program.resize(0); - delete current; + delete current; current=0; parseCompounds(rt); } @@ -4118,6 +4528,7 @@ void parseDocument(OutputList &ol,const QCString &docString) insideArgumentList = FALSE; scanYYlex(); if (insideArgumentList) { insideArgumentList=FALSE; outDoc->endItemList(); } + if (insideItemList) { forceEndItemList(); } if (inBlock()) endBlock(); if (currentListIndentLevel!=0) { @@ -4140,7 +4551,7 @@ void parseDocument(OutputList &ol,const QCString &docString) } } ol+=*outDoc; - delete outDoc; + delete outDoc; outDoc=0; return; } @@ -4149,6 +4560,7 @@ void parseDocument(OutputList &ol,const QCString &docString) void parseDoc(OutputList &ol,const char *clName, const char *memName,const QCString &docString) { + //printf("Doc---------\n%s\n---------\n",docString.data()); initParser(); initParseCodeContext(); exampleDoc=FALSE; // do not cross reference with member docs @@ -4158,10 +4570,14 @@ void parseDoc(OutputList &ol,const char *clName, { refName=className+"::"+memberName; } - else + else if (clName) { refName=className; } + else + { + refName="<unknown>"; + } parseDocument(ol,docString); } @@ -4169,6 +4585,7 @@ void parseDoc(OutputList &ol,const char *clName, void parseText(OutputList &ol,const QCString &txtString) { + if (txtString.isEmpty()) return; inputString = txtString; outDoc = new OutputList(&ol); inputPosition = 0; @@ -4181,7 +4598,7 @@ void parseText(OutputList &ol,const QCString &txtString) memberGroupId=-1; } ol+=*outDoc; - delete outDoc; + delete outDoc; outDoc=0; return; } @@ -4194,6 +4611,7 @@ void parseExample(OutputList &ol,const QCString &docString, initParseCodeContext(); exampleDoc=TRUE; // cross reference with member docs exampleName=fileName; + refName="example "+exampleName; parseDocument(ol,docString); } diff --git a/src/searchindex.cpp b/src/searchindex.cpp index 50d6556..8aaa7c7 100644 --- a/src/searchindex.cpp +++ b/src/searchindex.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/searchindex.h b/src/searchindex.h index f51afa6..54b9794 100644 --- a/src/searchindex.h +++ b/src/searchindex.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/section.h b/src/section.h index 90f134b..81f5ed5 100644 --- a/src/section.h +++ b/src/section.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/suffixtree.cpp b/src/suffixtree.cpp index 8b8ce88..9bb6be5 100644 --- a/src/suffixtree.cpp +++ b/src/suffixtree.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -201,7 +201,7 @@ void SuffixNode::resolveForwardReferences(int &offset) { if (children->count()>0) { - if (label.length()>0) offset++; // terminator for the previous level + if (!label.isEmpty()) offset++; // terminator for the previous level branchOffset=offset; } else @@ -241,7 +241,7 @@ void SuffixNode::resolveForwardReferences(int &offset) int SuffixNode::size() { int s=0; - if (label.length()>0 && children->count()>0) s++; // for the terminator + if (!label.isEmpty() && children->count()>0) s++; // for the terminator SuffixNode *sn=children->first(); while (sn) { @@ -271,7 +271,7 @@ int SuffixNode::size() bool SuffixNode::write(QFile &f) { bool error=FALSE; - if (children->count()>0 && label.length()>0) error=error || (f.putch(0)==-1); + if (children->count()>0 && !label.isEmpty()) error=error || (f.putch(0)==-1); SuffixNode *sn=children->first(); while (sn) { diff --git a/src/suffixtree.h b/src/suffixtree.h index a93d45e..b0149a7 100644 --- a/src/suffixtree.h +++ b/src/suffixtree.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/tag.cpp b/src/tag.cpp index 403815e..40c82f5 100644 --- a/src/tag.cpp +++ b/src/tag.cpp @@ -438,7 +438,7 @@ char *yytext; * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/translator.h b/src/translator.h index 7d626c0..391b4e3 100644 --- a/src/translator.h +++ b/src/translator.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -430,7 +430,7 @@ class Translator /*! this text is put before a class diagram */ virtual QCString trClassDiagram(const char *clName) { - return (QCString)"Class diagram for "+clName; + return (QCString)"Inheritance diagram for "+clName; } /*! this text is generated when the \internal command is used. */ @@ -742,6 +742,77 @@ class Translator { return "Deprecated"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.0 +////////////////////////////////////////////////////////////////////////// + + /*! this text is put before a collaboration diagram */ + virtual QCString trCollaborationDiagram(const char *clName) + { + return (QCString)"Collaboration diagram for "+clName+":"; + } + /*! this text is put before an include dependency graph */ + virtual QCString trInclDepGraph(const char *fName) + { + return (QCString)"Include dependency graph for "+fName+":"; + } + /*! header that is put before the list of constructor/destructors. */ + virtual QCString trConstructorDocumentation() + { + return "Constructor & Destructor Documentation"; + } + /*! Used in the file documentation to point to the corresponding sources. */ + virtual QCString trGotoSourceCode() + { + return "Go to the source code of this file."; + } + /*! Used in the file sources to point to the corresponding documentation. */ + virtual QCString trGotoDocumentation() + { + return "Go to the documentation of this file."; + } + /*! Text for the \pre command */ + virtual QCString trPrecondition() + { + return "Precondition"; + } + /*! Text for the \post command */ + virtual QCString trPostcondition() + { + return "Postcondition"; + } + /*! Text for the \invariant command */ + virtual QCString trInvariant() + { + return "Invariant"; + } + /*! Text shown before a multi-line variable/enum initialization */ + virtual QCString trInitialValue() + { + return "Initial value:"; + } + /*! Text used the source code in the file index */ + virtual QCString trCode() + { + return "code"; + } + virtual QCString trGraphicalHierarchy() + { + return "Graphical Class Hierarchy"; + } + virtual QCString trGotoGraphicalHierarchy() + { + return "Go to the graphical class hierarchy"; + } + virtual QCString trGotoTextualHierarchy() + { + return "Go to the textual class hierarchy"; + } + virtual QCString trPageIndex() + { + return "Page Index"; + } }; #endif diff --git a/src/translator_cz.h b/src/translator_cz.h index a3fcb5a..ff2da1b 100644 --- a/src/translator_cz.h +++ b/src/translator_cz.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/translator_de.h b/src/translator_de.h index d247dad..8bab763 100644 --- a/src/translator_de.h +++ b/src/translator_de.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/translator_es.h b/src/translator_es.h index 3c5d25f..0863eec 100644 --- a/src/translator_es.h +++ b/src/translator_es.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/translator_fi.h b/src/translator_fi.h index 03f3a1f..189240f 100644 --- a/src/translator_fi.h +++ b/src/translator_fi.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/translator_fr.h b/src/translator_fr.h index 62f22da..426d93a 100644 --- a/src/translator_fr.h +++ b/src/translator_fr.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/translator_it.h b/src/translator_it.h index d76cf35..b15d17b 100644 --- a/src/translator_it.h +++ b/src/translator_it.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Initial Italian Translation by Ahmed Aldo Faisal * Revised and completed by Alessandro Falappa (June 1999) diff --git a/src/translator_jp.h b/src/translator_jp.h index a2e2bfd..e014ab8 100644 --- a/src/translator_jp.h +++ b/src/translator_jp.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/translator_nl.h b/src/translator_nl.h index 1923712..7181ddf 100644 --- a/src/translator_nl.h +++ b/src/translator_nl.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/translator_se.h b/src/translator_se.h index bf54926..5bfbf57 100644 --- a/src/translator_se.h +++ b/src/translator_se.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/src/util.cpp b/src/util.cpp index 952445a..5621824 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -20,6 +20,7 @@ #include "qtbc.h" #include <qregexp.h> #include <qfileinfo.h> + #include "util.h" #include "message.h" #include "classdef.h" @@ -79,14 +80,24 @@ QCString stripAnnonymousNamespaceScope(const QCString &s) void writePageRef(OutputList &ol,const char *cn,const char *mn) { - bool htmlOn = ol.isEnabled(OutputGenerator::Html); - bool manOn = ol.isEnabled(OutputGenerator::Man); + //bool htmlOn = ol.isEnabled(OutputGenerator::Html); + //bool manOn = ol.isEnabled(OutputGenerator::Man); + + ol.pushGeneratorState(); + + ol.enableAll(); + ol.disable(OutputGenerator::Html); + ol.disable(OutputGenerator::Man); + if (Config::pdfHyperFlag) ol.disable(OutputGenerator::Latex); + if (Config::rtfHyperFlag) ol.disable(OutputGenerator::RTF); ol.startPageRef(); - ol.disableAllBut(OutputGenerator::Latex); ol.docify(theTranslator->trPageAbbreviation()); ol.endPageRef(cn,mn); - if (htmlOn) ol.enable(OutputGenerator::Html); - if (manOn) ol.enable(OutputGenerator::Man); + + //if (htmlOn) ol.enable(OutputGenerator::Html); + //if (manOn) ol.enable(OutputGenerator::Man); + + ol.popGeneratorState(); } QCString generateMarker(int id) @@ -151,33 +162,32 @@ int guessSection(const char *name) // return 0; //} -QCString resolveTypedefs(const QCString &n) -{ - QCString *subst=typedefDict[n]; - if (subst && !subst->isEmpty()) - { - return *subst; - } - else - { - return n; - } -} +//QCString resolveTypedefs(const QCString &n) +//{ +// QCString *subst=typedefDict[n]; +// if (subst && !subst->isEmpty()) +// { +// return *subst; +// } +// else +// { +// return n; +// } +//} ClassDef *getClass(const char *name) { - if (!name) return 0; - //QCString key=resolveTypedefs(resolveDefines(name)); - //Define *def=defineDict[key]; - //if (def && def->nargs==0 && def->definition.length()>0) // normal define - // key=def->definition; // use substitution - - return classDict[resolveTypedefs(name)]; + if (name==0 || name[0]=='\0') return 0; +// QCString *subst = typedefDict[name]; +// if (subst) +// return classDict[subst->data()]; +// else + return classDict[name]; } QCString removeRedundantWhiteSpace(const QCString &s) { - if (s.length()==0) return s; + if (s.isEmpty()) return s; QCString result; uint i; for (i=0;i<s.length();i++) @@ -188,7 +198,7 @@ QCString removeRedundantWhiteSpace(const QCString &s) ) { if ((c=='*' || c=='&') && - result.length()>0 && isId(result.at(result.length()-1)) + !result.isEmpty() && isId(result.at(result.length()-1)) ) result+=' '; result+=c; } @@ -217,7 +227,7 @@ bool leftScopeMatch(const QCString &scope, const QCString &name) void linkifyText(OutputList &ol,const char *scName,const char *name,const char *text) { //printf("scope=`%s' name=`%s' Text: `%s'\n",scName,name,text); - QRegExp regExp("[a-z_A-Z0-9:<>]+"); + static QRegExp regExp("[a-z_A-Z0-9:]+"); QCString txtStr=text; OutputList result(&ol); int matchLen; @@ -242,7 +252,7 @@ void linkifyText(OutputList &ol,const char *scName,const char *name,const char * // word.data(),scopeName.data(),searchName.data() // ); // check if `word' is a documented class name - if (word.length()>0 && + if (!word.isEmpty() && !rightScopeMatch(word,searchName) && !rightScopeMatch(scopeName,word) ) @@ -320,9 +330,9 @@ void writeExample(OutputList &ol,ExampleList *el) { QCString exampleLine=theTranslator->trWriteList(el->count()); - bool latexEnabled = ol.isEnabled(OutputGenerator::Latex); - bool manEnabled = ol.isEnabled(OutputGenerator::Man); - bool htmlEnabled = ol.isEnabled(OutputGenerator::Html); + //bool latexEnabled = ol.isEnabled(OutputGenerator::Latex); + //bool manEnabled = ol.isEnabled(OutputGenerator::Man); + //bool htmlEnabled = ol.isEnabled(OutputGenerator::Html); QRegExp marker("@[0-9]+"); int index=0,newIndex,matchLen; // now replace all markers in inheritLine with links to the classes @@ -334,17 +344,24 @@ void writeExample(OutputList &ol,ExampleList *el) Example *e=el->at(entryIndex); if (ok && e) { - if (latexEnabled) ol.disable(OutputGenerator::Latex); + ol.pushGeneratorState(); + //if (latexEnabled) ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::RTF); // link for Html / man ol.writeObjectLink(0,e->file,e->anchor,e->name); - if (latexEnabled) ol.enable(OutputGenerator::Latex); - if (manEnabled) ol.disable(OutputGenerator::Man); - if (htmlEnabled) ol.disable(OutputGenerator::Html); + ol.popGeneratorState(); + + ol.pushGeneratorState(); + //if (latexEnabled) ol.enable(OutputGenerator::Latex); + ol.disable(OutputGenerator::Man); + ol.disable(OutputGenerator::Html); // link for Latex / pdf with anchor because the sources // are not hyperlinked (not possible with a verbatim environment). ol.writeObjectLink(0,e->file,0,e->name); - if (manEnabled) ol.enable(OutputGenerator::Man); - if (htmlEnabled) ol.enable(OutputGenerator::Html); + //if (manEnabled) ol.enable(OutputGenerator::Man); + //if (htmlEnabled) ol.enable(OutputGenerator::Html); + ol.popGeneratorState(); } index=newIndex+matchLen; } @@ -362,7 +379,7 @@ QCString argListToString(ArgumentList *al) result+="("; while (a) { - result+= a->type+" "+a->name; + result+= a->type+" "+a->name+a->array; a = al->next(); if (a) result+=","; } @@ -400,7 +417,7 @@ QCString tempArgListToString(ArgumentList *al) Argument *a=al->first(); while (a) { - if (a->name.length()>0) // add template argument name + if (!a->name.isEmpty()) // add template argument name { result+=a->name; } @@ -437,12 +454,14 @@ void endTitle(OutputList &ol,const char *fileName,const char *name) void writeQuickLinks(OutputList &ol,bool compact,bool ext) { - bool manEnabled = ol.isEnabled(OutputGenerator::Man); - bool texEnabled = ol.isEnabled(OutputGenerator::Latex); + ol.pushGeneratorState(); + //bool manEnabled = ol.isEnabled(OutputGenerator::Man); + //bool texEnabled = ol.isEnabled(OutputGenerator::Latex); + ol.disableAllBut(OutputGenerator::Html); QCString extLink,absPath; if (ext) { extLink="_doc:"; absPath="/"; } - if (manEnabled) ol.disable(OutputGenerator::Man); - if (texEnabled) ol.disable(OutputGenerator::Latex); + //if (manEnabled) ol.disable(OutputGenerator::Man); + //if (texEnabled) ol.disable(OutputGenerator::Latex); if (compact) ol.startCenter(); else ol.startItemList(); if (!compact) ol.writeListItem(); @@ -492,20 +511,20 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext) parseText(ol,theTranslator->trFileList()); ol.endQuickIndexItem(); } - if (documentedIncludeFiles>0 && Config::verbatimHeaderFlag) - { - if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"headers.html"); - parseText(ol,theTranslator->trHeaderFiles()); - ol.endQuickIndexItem(); - } - if (Config::sourceBrowseFlag) - { - if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"sources.html"); - parseText(ol,theTranslator->trSources()); - ol.endQuickIndexItem(); - } + //if (documentedIncludeFiles>0 && Config::verbatimHeaderFlag) + //{ + // if (!compact) ol.writeListItem(); + // ol.startQuickIndexItem(extLink,absPath+"headers.html"); + // parseText(ol,theTranslator->trHeaderFiles()); + // ol.endQuickIndexItem(); + //} + //if (Config::sourceBrowseFlag) + //{ + // if (!compact) ol.writeListItem(); + // ol.startQuickIndexItem(extLink,absPath+"sources.html"); + // parseText(ol,theTranslator->trSources()); + // ol.endQuickIndexItem(); + //} if (documentedNamespaceMembers>0) { if (!compact) ol.writeListItem(); @@ -544,7 +563,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext) if (Config::searchEngineFlag) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem("_cgi:",""); + ol.startQuickIndexItem("_cgi",""); parseText(ol,theTranslator->trSearch()); ol.endQuickIndexItem(); } @@ -557,8 +576,9 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext) { ol.endItemList(); } - if (manEnabled) ol.enable(OutputGenerator::Man); - if (texEnabled) ol.enable(OutputGenerator::Latex); + //if (manEnabled) ol.enable(OutputGenerator::Man); + //if (texEnabled) ol.enable(OutputGenerator::Latex); + ol.popGeneratorState(); } void startFile(OutputList &ol,const char *name,const char *title,bool external) @@ -569,12 +589,14 @@ void startFile(OutputList &ol,const char *name,const char *title,bool external) void endFile(OutputList &ol,bool external) { - bool latexEnabled = ol.isEnabled(OutputGenerator::Latex); - bool manEnabled = ol.isEnabled(OutputGenerator::Man); - if (latexEnabled) ol.disable(OutputGenerator::Latex); - if (manEnabled) ol.disable(OutputGenerator::Man); + //bool latexEnabled = ol.isEnabled(OutputGenerator::Latex); + //bool manEnabled = ol.isEnabled(OutputGenerator::Man); + //if (latexEnabled) ol.disable(OutputGenerator::Latex); + //if (manEnabled) ol.disable(OutputGenerator::Man); + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); ol.writeFooter(0,external); // write the footer - if (Config::footerFile.length()==0) + if (Config::footerFile.isEmpty()) { parseText(ol,theTranslator->trGeneratedAt( dateToString(TRUE), @@ -582,13 +604,14 @@ void endFile(OutputList &ol,bool external) )); } ol.writeFooter(1,external); // write the link to the picture - if (Config::footerFile.length()==0) + if (Config::footerFile.isEmpty()) { parseText(ol,theTranslator->trWrittenBy()); } ol.writeFooter(2,external); // end the footer - if (latexEnabled) ol.enable(OutputGenerator::Latex); - if (manEnabled) ol.enable(OutputGenerator::Man); + //if (latexEnabled) ol.enable(OutputGenerator::Latex); + //if (manEnabled) ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); ol.endFile(); } @@ -697,7 +720,7 @@ static int minClassDistance(ClassDef *cd,ClassDef *bcd,int level=0) // printf("("); // for (;(a=ali.current());++ali) // { -// printf("t=`%s' n=`%s' v=`%s' ",a->type.data(),a->name.length()>0?a->name.data():"",a->defval.length()>0?a->defval.data():""); +// printf("t=`%s' n=`%s' v=`%s' ",a->type.data(),!a->name.isEmpty()>0?a->name.data():"",!a->defval.isEmpty()>0?a->defval.data():""); // } // printf(")"); //} @@ -775,8 +798,9 @@ static QCString trimScope(const QCString &name,const QCString &s) return result; } -static QCString trimBaseClassScope(BaseClassList *bcl,const QCString &s) +static QCString trimBaseClassScope(BaseClassList *bcl,const QCString &s,int level=0) { + //printf("trimBaseClassScope level=%d `%s'\n",level,s.data()); BaseClassListIterator bcli(*bcl); BaseClassDef *bcd; for (;(bcd=bcli.current());++bcli) @@ -789,8 +813,9 @@ static QCString trimBaseClassScope(BaseClassList *bcl,const QCString &s) s.length()-spos-cd->name().length()-2 ); } + //printf("base class `%s'\n",cd->name().data()); if (cd->baseClasses()->count()>0) - trimBaseClassScope(cd->baseClasses(),s); + trimBaseClassScope(cd->baseClasses(),s,level+1); } return s; } @@ -866,7 +891,7 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl, QCString dstAType=trimTemplateSpecifiers(className,dstA->type); if (srcAType.left(6)=="class ") srcAType=srcAType.right(srcAType.length()-6); if (dstAType.left(6)=="class ") dstAType=dstAType.right(dstAType.length()-6); - + if (srcAType!=dstAType) // check if the argument only differs on name { //printf("scope=`%s': `%s' <=> `%s'\n",className.data(),srcAType.data(),dstAType.data()); @@ -919,7 +944,7 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl, if (isId(srcAType.at(srcPos)) && isId(dstAType.at(dstPos))) { // check if a name if already found -> if no then there is no match - if (srcA->name.length()>0 || dstA->name.length()>0) return FALSE; + if (!srcA->name.isEmpty() || !dstA->name.isEmpty()) return FALSE; while (srcPos<srcAType.length() && isId(srcAType.at(srcPos))) srcPos++; while (dstPos<dstAType.length() && isId(dstAType.at(dstPos))) dstPos++; if (srcPos<srcAType.length() || dstPos<dstAType.length()) return FALSE; @@ -1059,12 +1084,12 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl) Argument *srcA,*dstA; for (;(srcA=srcAli.current(),dstA=dstAli.current());++srcAli,++dstAli) { - if (srcA->defval.length()==0 && dstA->defval.length()>0) + if (srcA->defval.isEmpty() && !dstA->defval.isEmpty()) { //printf("Defval changing `%s'->`%s'\n",srcA->defval.data(),dstA->defval.data()); srcA->defval=dstA->defval.copy(); } - else if (srcA->defval.length()>0 && dstA->defval.length()==0) + else if (!srcA->defval.isEmpty() && dstA->defval.isEmpty()) { //printf("Defval changing `%s'->`%s'\n",dstA->defval.data(),srcA->defval.data()); dstA->defval=srcA->defval.copy(); @@ -1137,7 +1162,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, MemberDef *&md, ClassDef *&cd, FileDef *&fd,NamespaceDef *&nd) { fd=0, md=0, cd=0, nd=0; - if (memberName.length()==0) return FALSE; /* empty name => nothing to link */ + if (memberName.isEmpty()) return FALSE; /* empty name => nothing to link */ QCString scopeName=scName.copy(); //printf("Search for name=%s args=%s in scope=%s\n", @@ -1170,7 +1195,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, //printf("mScope=`%s' mName=`%s'\n",mScope.data(),mName.data()); MemberName *mn = memberNameDict[mName]; - if (mn && scopeName.length()+mScope.length()>0) + if (mn && !(scopeName.isEmpty() && mScope.isEmpty())) { //printf(" >member name found\n"); int scopeOffset=scopeName.length(); @@ -1195,23 +1220,17 @@ bool getDefs(const QCString &scName,const QCString &memberName, //printf(" Found fcd=%p\n",fcd); MemberDef *mmd=mn->first(); int mdist=maxInheritanceDepth; + ArgumentList *argList=0; + if (args) + { + argList=new ArgumentList; + stringToArgumentList(args,argList); + } while (mmd) { - if (//(mmd->protection()!=Private || Config::extractPrivateFlag) && - //mmd->hasDocumentation() - mmd->isLinkable() - /*mmd->detailsAreVisible()*/ - /* && (args==0 || matchArgumentsOld(mmd->argsString(),args)) */ - ) + if (mmd->isLinkable()) { - bool match=TRUE; - ArgumentList *argList=0; - if (args) - { - argList=new ArgumentList; - stringToArgumentList(args,argList); - match=matchArguments(mmd->argumentList(),argList); - } + bool match=args==0 || matchArguments(mmd->argumentList(),argList); if (match) { ClassDef *mcd=mmd->memberClass(); @@ -1223,13 +1242,13 @@ bool getDefs(const QCString &scName,const QCString &memberName, md=mmd; } } - if (argList) - { - delete argList; - } } mmd=mn->next(); } + if (argList) + { + delete argList; argList=0; + } if (mdist==maxInheritanceDepth && !strcmp(args,"()")) // no exact match found, but if args="()" an arbitrary member will do { @@ -1297,7 +1316,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, { namespaceName=mScope.copy(); } - if (namespaceName.length()>0 && + if (!namespaceName.isEmpty() && (fnd=namespaceDict[namespaceName]) && fnd->isLinkable() ) @@ -1330,7 +1349,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, } if (args) { - delete argList; + delete argList; argList=0; } } mmd=mn->next(); @@ -1377,7 +1396,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, argList=new ArgumentList; stringToArgumentList(args,argList); match=matchArguments(md->argumentList(),argList); - delete argList; + delete argList; argList=0; } if (match) return TRUE; } @@ -1443,7 +1462,7 @@ bool getScopeDefs(const char *docScope,const char *scope, QCString scopeName=scope; //printf("getScopeDefs: docScope=`%s' scope=`%s'\n",docScope,scope); - if (scopeName.length()==0) return FALSE; + if (scopeName.isEmpty()) return FALSE; QCString docScopeName=docScope; int scopeOffset=docScopeName.length(); @@ -1513,7 +1532,7 @@ bool generateRef(OutputList &ol,const char *scName, { ol.writeObjectLink(cd->getReference(), cd->getOutputFileBase(),0,linkText); - if (!cd->isReference() && !Config::pdfHyperFlag) + if (!cd->isReference() /*&& !Config::pdfHyperFlag*/) { writePageRef(ol,cd->name(),0); } @@ -1522,7 +1541,7 @@ bool generateRef(OutputList &ol,const char *scName, { ol.writeObjectLink(nd->getReference(), nd->getOutputFileBase(),0,linkText); - if (!nd->getReference() && !Config::pdfHyperFlag) + if (!nd->getReference() /*&& !Config::pdfHyperFlag*/) { writePageRef(ol,nd->name(),0); } @@ -1615,14 +1634,14 @@ bool generateRef(OutputList &ol,const char *scName, // for functions we add the arguments if explicitly specified or else "()" if (!rt && (md->isFunction() || md->isPrototype() || md->isSignal() || md->isSlot() || md->isDefine())) { - if (argsStr.isEmpty()) + if (argsStr.isEmpty() && (!md->isDefine() || md->argsString()!=0)) ol.writeString("()"); else ol.docify(argsStr); } // generate the page reference (for LaTeX) - if (!Config::pdfHyperFlag && (cName.length()>0 || aName.length()>0)) + if (/*!Config::pdfHyperFlag && */(!cName.isEmpty() || !aName.isEmpty())) { if ( (cd && cd->isLinkableInProject()) || @@ -1676,7 +1695,7 @@ bool generateLink(OutputList &ol,const char *clName, FileDef *fd; GroupDef *gd; bool ambig; - if (linkRef.length()==0) // no reference name! + if (linkRef.isEmpty()) // no reference name! { ol.docify(lt); return FALSE; @@ -1781,6 +1800,7 @@ QCString convertSlashes(const QCString &s,bool dots) QCString substitute(const char *s,const char *src,const char *dst) { + // TODO: optimize by using strstr() instead of find QCString input=s; QCString output; int i=0,p; @@ -1881,14 +1901,17 @@ void setFileNameForSections(QList<QCString> *anchorList,const char *fileName) //---------------------------------------------------------------------- -QCString substituteKeywords(QCString &s,const char *title) +QCString substituteKeywords(const QCString &s,const char *title) { - if (title) s = substitute(s,"$title",title); - s = substitute(s,"$datetime",dateToString(TRUE)); - s = substitute(s,"$date",dateToString(FALSE)); - s = substitute(s,"$doxygenversion",versionString); - s = substitute(s,"$projectname",Config::projectName); - s = substitute(s,"$projectnumber",Config::projectNumber); - return s; + QCString result = s.copy(); + if (title) result = substitute(result,"$title",title); + result = substitute(result,"$datetime",dateToString(TRUE)); + result = substitute(result,"$date",dateToString(FALSE)); + result = substitute(result,"$doxygenversion",versionString); + result = substitute(result,"$projectname",Config::projectName); + result = substitute(result,"$projectnumber",Config::projectNumber); + return result; } +//---------------------------------------------------------------------- + @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -77,6 +77,8 @@ QCString stripFromPath(const QCString &path); bool rightScopeMatch(const QCString &scope, const QCString &name); bool leftScopeMatch(const QCString &scope, const QCString &name); void writePageRef(OutputList &ol,const char *cn,const char *mn); -QCString substituteKeywords(QCString &s,const char *title); +QCString substituteKeywords(const QCString &s,const char *title); +//void pushGeneratorState(OutputList &ol); +//void popGeneratorState(OutputList &ol); #endif diff --git a/src/version.h b/src/version.h index c148ab7..ac91f98 100644 --- a/src/version.h +++ b/src/version.h @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 1997-1999 by Dimitri van Heesch. + * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby |