Changeset f51aefb


Ignore:
Timestamp:
Nov 1, 2016, 3:18:59 PM (8 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
84118d8
Parents:
40744af8 (diff), 0afffee (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Files:
10 added
41 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r40744af8 rf51aefb  
    1212libcfa/Makefile
    1313src/Makefile
     14version
    1415
    1516# genereted by premake
  • config.h.in

    r40744af8 rf51aefb  
    1818/* Location of cfa install. */
    1919#undef CFA_PREFIX
     20
     21/* Major.Minor */
     22#undef CFA_VERSION
     23
     24/* Build version number. */
     25#undef CFA_VERSION_BUILD
     26
     27/* Major.Minor.Patch.Build */
     28#undef CFA_VERSION_FULL
     29
     30/* Major.Minor.Patch */
     31#undef CFA_VERSION_LONG
     32
     33/* Major version number. */
     34#undef CFA_VERSION_MAJOR
     35
     36/* Minor version number. */
     37#undef CFA_VERSION_MINOR
     38
     39/* Patch version number. */
     40#undef CFA_VERSION_PATCH
     41
     42/* Major */
     43#undef CFA_VERSION_SHORT
    2044
    2145/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
  • configure

    r40744af8 rf51aefb  
    11#! /bin/sh
    22# Guess values for system-dependent variables and create Makefiles.
    3 # Generated by GNU Autoconf 2.68 for cfa-cc 1.0.0.
     3# Generated by GNU Autoconf 2.68 for cfa-cc 1.0.0.0.
    44#
    55# Report bugs to <cforall@plg.uwaterloo.ca>.
     
    561561PACKAGE_NAME='cfa-cc'
    562562PACKAGE_TARNAME='cfa-cc'
    563 PACKAGE_VERSION='1.0.0'
    564 PACKAGE_STRING='cfa-cc 1.0.0'
     563PACKAGE_VERSION='1.0.0.0'
     564PACKAGE_STRING='cfa-cc 1.0.0.0'
    565565PACKAGE_BUGREPORT='cforall@plg.uwaterloo.ca'
    566566PACKAGE_URL=''
     
    12781278  # This message is too long to be a string in the A/UX 3.1 sh.
    12791279  cat <<_ACEOF
    1280 \`configure' configures cfa-cc 1.0.0 to adapt to many kinds of systems.
     1280\`configure' configures cfa-cc 1.0.0.0 to adapt to many kinds of systems.
    12811281
    12821282Usage: $0 [OPTION]... [VAR=VALUE]...
     
    13441344if test -n "$ac_init_help"; then
    13451345  case $ac_init_help in
    1346      short | recursive ) echo "Configuration of cfa-cc 1.0.0:";;
     1346     short | recursive ) echo "Configuration of cfa-cc 1.0.0.0:";;
    13471347   esac
    13481348  cat <<\_ACEOF
     
    14481448if $ac_init_version; then
    14491449  cat <<\_ACEOF
    1450 cfa-cc configure 1.0.0
     1450cfa-cc configure 1.0.0.0
    14511451generated by GNU Autoconf 2.68
    14521452
     
    20362036running configure, to aid debugging if configure makes a mistake.
    20372037
    2038 It was created by cfa-cc $as_me 1.0.0, which was
     2038It was created by cfa-cc $as_me 1.0.0.0, which was
    20392039generated by GNU Autoconf 2.68.  Invocation command line was
    20402040
     
    29002900# Define the identity of the package.
    29012901 PACKAGE='cfa-cc'
    2902  VERSION='1.0.0'
     2902 VERSION='1.0.0.0'
    29032903
    29042904
     
    29632963
    29642964                        # may require auto* software to be installed
     2965
     2966rm -f version
     2967echo ${PACKAGE_VERSION} > version               # file containing version number for other tools
     2968chmod ugo-w version
     2969ver_major=`cut -d '.' -f1 version`              # subdivide version number into components at periods
     2970ver_minor=`cut -d '.' -f2 version`
     2971ver_patch=`cut -d '.' -f3 version`
     2972ver_build=`cut -d '.' -f4 version`
     2973
     2974# AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version'])
     2975
     2976cat >>confdefs.h <<_ACEOF
     2977#define CFA_VERSION_MAJOR ${ver_major}
     2978_ACEOF
     2979
     2980
     2981cat >>confdefs.h <<_ACEOF
     2982#define CFA_VERSION_MINOR ${ver_minor}
     2983_ACEOF
     2984
     2985
     2986cat >>confdefs.h <<_ACEOF
     2987#define CFA_VERSION_PATCH ${ver_patch}
     2988_ACEOF
     2989
     2990
     2991cat >>confdefs.h <<_ACEOF
     2992#define CFA_VERSION_BUILD ${ver_build}
     2993_ACEOF
     2994
     2995
     2996cat >>confdefs.h <<_ACEOF
     2997#define CFA_VERSION_SHORT "${ver_major}"
     2998_ACEOF
     2999
     3000
     3001cat >>confdefs.h <<_ACEOF
     3002#define CFA_VERSION "${ver_major}.${ver_minor}"
     3003_ACEOF
     3004
     3005
     3006cat >>confdefs.h <<_ACEOF
     3007#define CFA_VERSION_LONG "${ver_major}.${ver_minor}.${ver_patch}"
     3008_ACEOF
     3009
     3010
     3011cat >>confdefs.h <<_ACEOF
     3012#define CFA_VERSION_FULL "${ver_major}.${ver_minor}.${ver_patch}.${ver_build}"
     3013_ACEOF
     3014
    29653015
    29663016# Installation paths
     
    63516401# values after options handling.
    63526402ac_log="
    6353 This file was extended by cfa-cc $as_me 1.0.0, which was
     6403This file was extended by cfa-cc $as_me 1.0.0.0, which was
    63546404generated by GNU Autoconf 2.68.  Invocation command line was
    63556405
     
    64176467ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
    64186468ac_cs_version="\\
    6419 cfa-cc config.status 1.0.0
     6469cfa-cc config.status 1.0.0.0
    64206470configured by $0, generated by GNU Autoconf 2.68,
    64216471  with options \\"\$ac_cs_config\\"
  • configure.ac

    r40744af8 rf51aefb  
    33
    44AC_PREREQ([2.68])
    5 AC_INIT([cfa-cc],[1.0.0],[cforall@plg.uwaterloo.ca])
     5AC_INIT([cfa-cc],[1.0.0.0],[cforall@plg.uwaterloo.ca])
    66AC_CONFIG_AUX_DIR([automake])
    77#AC_CONFIG_SRCDIR([src/main.cc])
     
    1717AM_INIT_AUTOMAKE
    1818AM_MAINTAINER_MODE(enable)                      # may require auto* software to be installed
     19
     20rm -f version
     21echo ${PACKAGE_VERSION} > version               # file containing version number for other tools
     22chmod ugo-w version
     23ver_major=`cut -d '.' -f1 version`              # subdivide version number into components at periods
     24ver_minor=`cut -d '.' -f2 version`
     25ver_patch=`cut -d '.' -f3 version`
     26ver_build=`cut -d '.' -f4 version`
     27
     28# AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version'])
     29AC_DEFINE_UNQUOTED(CFA_VERSION_MAJOR, ${ver_major}, [Major version number.])
     30AC_DEFINE_UNQUOTED(CFA_VERSION_MINOR, ${ver_minor}, [Minor version number.])
     31AC_DEFINE_UNQUOTED(CFA_VERSION_PATCH, ${ver_patch}, [Patch version number.])
     32AC_DEFINE_UNQUOTED(CFA_VERSION_BUILD, ${ver_build}, [Build version number.])
     33AC_DEFINE_UNQUOTED(CFA_VERSION_SHORT, ["${ver_major}"], [Major])
     34AC_DEFINE_UNQUOTED(CFA_VERSION, ["${ver_major}.${ver_minor}"], [Major.Minor])
     35AC_DEFINE_UNQUOTED(CFA_VERSION_LONG, ["${ver_major}.${ver_minor}.${ver_patch}"], [Major.Minor.Patch])
     36AC_DEFINE_UNQUOTED(CFA_VERSION_FULL, ["${ver_major}.${ver_minor}.${ver_patch}.${ver_build}"], [Major.Minor.Patch.Build])
    1937
    2038# Installation paths
  • doc/LaTeXmacros/common.tex

    r40744af8 rf51aefb  
    11%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2 %% 
     2%%
    33%% Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
    44%%
    55%% The contents of this file are covered under the licence agreement in the
    66%% file "LICENCE" distributed with Cforall.
    7 %% 
    8 %% common.tex -- 
    9 %% 
     7%%
     8%% common.tex --
     9%%
    1010%% Author           : Peter A. Buhr
    1111%% Created On       : Sat Apr  9 10:06:17 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Sun Aug 14 08:27:29 2016
    14 %% Update Count     : 231
     13%% Last Modified On : Tue Oct 25 22:04:19 2016
     14%% Update Count     : 234
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    4141\newcommand{\CCeleven}{\rm C\kern-.1em\hbox{+\kern-.25em+}11\xspace} % C++11 symbolic name
    4242\newcommand{\Celeven}{C11\xspace}               % C11 symbolic name
     43\newcommand{\Csharp}{C\raisebox{0.4ex}{\#}\xspace}      % C# symbolic name
    4344
    4445%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    226227
    227228% CFA programming language, based on ANSI C (with some gcc additions)
     229\lstdefinelanguage{Pseudo}{
     230        morekeywords={string,uint,int,bool,float},%
     231        sensitive=true,%
     232        morecomment=[l]{//},%
     233        morecomment=[s]{/*}{*/},%
     234        morestring=[b]',%
     235        morestring=[b]",%
     236        morestring=[s]{`}{`},%
     237}%
     238
     239\lstset{
     240language=Pseudo,
     241columns=fullflexible,
     242basicstyle=\linespread{0.9}\tt\small,           % reduce line spacing and use typewriter font
     243stringstyle=\sf\color{Mahogany},                        % use sanserif font
     244commentstyle=\itshape\color{OliveGreen},                % green and italic comments
     245tabsize=4,                                                      % 4 space tabbing
     246xleftmargin=\parindentlnth,                             % indent code to paragraph indentation
     247extendedchars=true,                                     % allow ASCII characters in the range 128-255
     248escapechar=§,                                           % escape to latex in CFA code
     249mathescape=true,                                                % allow $...$ LaTeX math escapes in code
     250%keepspaces=true,                                               %
     251showstringspaces=false,                                 % do not show spaces with cup
     252showlines=true,                                         % show blank lines at end of code
     253aboveskip=4pt,                                          % spacing above/below code block
     254belowskip=3pt,
     255moredelim=**[is][\color{red}]{®}{®},    % red highlighting
     256moredelim=**[is][\color{blue}]{ß}{ß},   % blue highlighting
     257moredelim=**[is][\color{OliveGreen}]{¢}{¢}, % green highlighting
     258moredelim=[is][\lstset{keywords={}}]{¶}{¶}, % temporarily turn off keywords
     259% replace/adjust listing characters that look bad in sanserif
     260literate={-}{\raisebox{-0.15ex}{\texttt{-}}}1 {^}{\raisebox{0.6ex}{$\scriptscriptstyle\land\,$}}1 {©}{{\"u}}1
     261        {~}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}}1 {_}{\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}1 {`}{\ttfamily\upshape\hspace*{-0.1ex}`}1
     262        {<-}{$\leftarrow$}2 {=>}{$\Rightarrow$}2,
     263}%
     264
     265% CFA programming language, based on ANSI C (with some gcc additions)
    228266\lstdefinelanguage{CFA}[ANSI]{C}{
    229267        morekeywords={_Alignas,_Alignof,__alignof,__alignof__,asm,__asm,__asm__,_At,_Atomic,__attribute,__attribute__,auto,
     
    260298\lstMakeShortInline©    % single-character for \lstinline
    261299
     300
    262301\let\Oldthebibliography\thebibliography
    263302\renewcommand\thebibliography[1]{
  • doc/bibliography/cfa.bib

    r40744af8 rf51aefb  
    2121%  tcs: Theoretical Computer Science
    2222@string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
     23% @string{ieeepds="IEEE Trans. Parallel Distrib. Syst."}
    2324@string{ieeese="IEEE Transactions on Software Engineering"}
     25% @string{ieeese="IEEE Trans. Softw. Eng."}
    2426@string{spe="Software---\-Practice and Experience"}
     27% @string{spe="Softw. Pract. Exp."}
     28@string{ccpe="Concurrency and Computation: Practice and Experience"}
     29% @string{ccpe="Concurrency Comput. Pract. Exp."}
    2530@string{sigplan="SIGPLAN Notices"}
     31% @string{sigplan="SIGPLAN Not."}
    2632@string{joop="Journal of Object-Oriented Programming"}
     33% @string{joop="J. of Object-Oriented Program."}
    2734@string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"}
    2835@string{osr="Operating Systems Review"}
    2936@string{pldi="Programming Language Design and Implementation"}
     37@string{mathann="Mathematische Annalen"}
     38% @string{mathann="Math. Ann."}
    3039
    3140% A
     
    3948    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    4049    publisher   = {MIT Press},
     50    address     = {New York},
    4151    series      = {Scientific and Engineering Computation Series},
    4252    year        = 1996,
     
    120130    year        = 1996,
    121131    pages       = {483-499},
    122     publisher   = {Addison-Wesley Longman Publishing Co., Inc.},
    123     address     = {Boston, MA, USA},
     132    publisher   = {Addison-Wesley Longman Publishing},
     133    address     = {Boston},
    124134}
    125135
     
    161171    author      = {Gul A. Agha},
    162172    title       = {Actors: A Model of Concurrent Computation in Distributed Systems},
    163     publisher   = {MIT Press, Cambridge, Mass.},
     173    publisher   = {MIT Press, Cambridge},
    164174    year        = 1986
    165175}
     
    311321    publisher   = {Microsoft Press},
    312322    year        = 1997,
    313     edition     = {third},
     323    edition     = {3rd},
    314324}
    315325
     
    325335    year        = 1977,
    326336    pages       = {604-605},
     337}
     338
     339@manual{Akka,
     340    keywords    = {Akka actor model},
     341    contributer = {pabuhr@plg},
     342    title       = {{A}kka {S}cala Documentation, Release 2.4.11},
     343    organization= {Lightbend Inc.},
     344    month       = sep,
     345    year        = 2016,
     346    note        = {\href{http://doc.akka.io/docs/akka/2.4/AkkaScala.pdf}{http://\-doc.akka.io/\-docs/\-akka/\-2.4/\-AkkaScala.pdf}},
    327347}
    328348
     
    378398    author      = {M. Raynal},
    379399    title       = {Algorithms for Mutual Exclusion},
    380     publisher   = {The MIT Press},
    381     address     = {Cambridge, Massachusetts},
     400    publisher   = {MIT Press},
     401    address     = {Cambridge},
    382402    series      = {Scientific Computation Series},
    383403    year        = 1986,
     
    394414    pages       = {329-342},
    395415    publisher   = {Springer},
     416    address     = {New York},
    396417    year        = 2005,
    397418    volume      = 3669,
     
    404425    editor      = {Richard L. Sites},
    405426    title       = {Alpha Architecture Reference Manual},
    406     publisher   = {Digital Press, One Burlington Woods Drive, Burlington, MA, U. S. A., 01803},
     427    publisher   = {Digital Press, Burlington},
    407428    year        = 1992,
    408429}
     
    413434    editor      = {Mary Shaw},
    414435    title       = {{ALPHARD}: Form and Content},
    415     publisher   = {Springer-Verlag},
     436    publisher   = {Springer},
     437    address     = {New York},
    416438    year        = 1981,
    417439    comment     = {Collection of papers about Alphard.}
     
    470492    editor      = {Gul Agha and Peter Wegner and Akinori Yonezawa},
    471493    publisher   = {MIT Press},
     494    address     = {New York},
    472495    year        = 1993,
    473496    pages       = {107-150},
     
    495518    location    = {Toulouse, France},
    496519    doi         = {http://doi.acm.org/10.1145/318773.319251},
    497     publisher   = {Springer-Verlag},
     520    publisher   = {Springer},
    498521    address     = {London, UK},
    499522}
     
    504527    title       = {The Annotated {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Reference Manual},
    505528    publisher   = {Addison-Wesley},
     529    address     = {Boston},
    506530    year        = 1990,
    507     edition     = {first},
     531    edition     = {1st},
    508532}
    509533
     
    567591    year        = 2008,
    568592    isbn        = {0123705916, 9780123705914},
    569     publisher   = {Morgan Kaufmann Publishers Inc.},
    570     address     = {San Francisco, CA, USA},
     593    publisher   = {Morgan Kaufmann Publishers},
     594    address     = {San Francisco},
    571595}
    572596
     
    747771}
    748772
     773@misc{BoostCoroutines15,
     774    keywords    = {Boost Coroutine Library},
     775    contributer = {pabuhr@plg},
     776    author      = {Oliver Kowalke},
     777    title       = {Boost Coroutine Library},
     778    year        = 2015,
     779    note        = {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html}
     780                  {{http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}} [Accessed September 2016]},
     781}
     782
    749783@mastersthesis{Krischer02,
    750784    author      = {Roy Krischer },
     
    779813    editor      = {C. Dony and J. L. Knudsen and A. Romanovsky and A. Tripathi},
    780814    booktitle   = {Advanced Topics in Exception Handling Techniques},
    781     publisher   = {Springer-Verlag},
     815    publisher   = {Springer},
    782816    series      = {Lecture Notes in Computer Science},
    783817    volume      = 4119,
     
    793827    author      = {Brian W. Kernighan and Dennis M. Ritchie},
    794828    title       = {The {C} Programming Language},
    795     publisher   = {Prentice Hall},
     829    publisher   = {Prentice-Hall},
     830    address     = {Englewood Cliffs},
    796831    year        = 1988,
    797     edition     = {second},
    798     series      = {Prentice Hall Software Series},
     832    edition     = {2nd},
     833    series      = {Prentice-Hall Software Series},
    799834    comment     = {
    800835         based on draft-proposed ANSI C
     
    807842    author      = {Brian W. Kernighan and Dennis M. Ritchie},
    808843    title       = {The {C} Programming Language},
    809     publisher   = {Prentice Hall},
     844    publisher   = {Prentice-Hall},
     845    address     = {Englewood Cliffs},
    810846    year        = 1978,
    811     edition     = {first},
     847    edition     = {1st},
    812848}
    813849
     
    835871
    836872@manual{C++Concepts,
    837         keywords = {ISO/IEC TS 19217:2015},
    838         contributer = {a3moss@uwaterloo.ca},
    839         key = {C++ Concepts},
    840         title = {Information technology -- Programming languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Extensions for concepts},
    841         organization = {International Standard ISO/IEC TS 19217:2015},
    842         publisher = {International Standard Organization},
    843         address = {http://www.iso.org},
    844         year = 2015
     873    keywords    = {ISO/IEC TS 19217:2015},
     874    contributer = {a3moss@uwaterloo.ca},
     875    key         = {C++ Concepts},
     876    title       = {Information technology -- Programming languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Extensions for concepts},
     877    organization= {International Standard ISO/IEC TS 19217:2015},
     878    publisher   = {International Standard Organization},
     879    address     = {http://www.iso.org},
     880    year        = 2015
    845881}
    846882
     
    914950    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Primer},
    915951    publisher   = {Addison-Wesley},
     952    address     = {Boston},
    916953    year        = 1991,
    917     edition     = {second},
     954    edition     = {2nd},
    918955    note        = {QA76.73.C15L57},
    919956}
     
    925962    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
    926963    publisher   = {Addison-Wesley},
     964    address     = {Boston},
    927965    year        = 1986,
    928     edition     = {first},
     966    edition     = {1st},
    929967    series      = {Addison-Wesley Series in Computer Science}
    930968}
     
    936974    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
    937975    publisher   = {Addison-Wesley},
     976    address     = {Boston},
    938977    year        = 1991,
    939     edition     = {second},
     978    edition     = {2nd},
    940979}
    941980
     
    945984    author      = {Bjarne Stroustrup},
    946985    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
    947     publisher   = {Addison-Wesley},
     986    publisher   = {Addison Wesley Longman},
    948987    year        = 1997,
    949     edition     = {third},
     988    edition     = {3rd},
    950989}
    951990
     
    10021041    title       = {Classics in Software Engineering},
    10031042    publisher   = {Yourdon Press},
     1043    address     = {New York},
    10041044    year        = 1979,
    10051045}
     
    10421082                Moss and J. Craig Schaffert and Robert Scheifler and Alan Snyder},
    10431083    title       = {CLU Reference Manual},
    1044     publisher   = {Springer-Verlag},
     1084    publisher   = {Springer},
     1085    address     = {New York},
    10451086    year        = 1981,
    10461087    volume      = 114,
     
    10531094    key         = {Cobol14},
    10541095    title       = {Programming Languages -- {Cobol}},
    1055     edition     = {second},
     1096    edition     = {2nd},
    10561097    organization= {International Standard ISO/IEC 1989:2014},
    10571098    publisher   = {International Standard Organization},
     
    11061147    title       = {Commentary on Standard {ML}},
    11071148    publisher   = {MIT Press},
    1108     address     = {Cambridge, Massachusetts, U.S.A.},
     1149    address     = {Cambridge},
    11091150    year        = 1991
    11101151}
     
    11321173    year        = 1987,
    11331174    pages       = {151-170},
    1134     publisher   = {Springer-Verlag}
     1175    publisher   = {Springer}
    11351176}
    11361177
     
    11381179    keywords    = {common lisp},
    11391180    contributer = {pabuhr@plg},
    1140     author      = {G. Steele},
     1181    author      = {Guy Steele},
    11411182    title       = {COMMON LISP: The Language},
    11421183    publisher   = {Digital Press},
     1184    address     = {New York},
    11431185    year        = 1984
    11441186}
     
    11831225    year        = 1985,
    11841226    isbn        = {0-13-153271-5},
    1185     publisher   = {Prentice-Hall, Inc.},
     1227    publisher   = {Prentice-Hall},
    11861228    address     = {Upper Saddle River, NJ, USA},
    11871229    note        = {\href{http://www.usingcsp.com/cspbook.pdf}{http://\-www.usingcsp.com/\-cspbook.pdf}},
     
    12021244    author      = {Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman},
    12031245    title       = {Compilers: Principles, Techniques, and Tools},
    1204     edition     = {second},
     1246    edition     = {2nd},
    12051247    year        = {2006},
    1206     publisher   = {Addison-Wesley Longman Publishing Co., Inc.},
     1248    publisher   = {Addison-Wesley Longman Publishing},
    12071249    address     = {Boston, MA, USA},
    12081250}
     
    12121254    contributer = {pabuhr@plg},
    12131255    author      = {David F. Bacon and Susan L. Graham and Oliver J. Sharp},
    1214     title       = {Compiler Transformations for High-Performance Computing},
     1256    title       = {Compiler Transformations for High-Performance Com\-puting},
    12151257    journal     = acmcs,
    12161258    volume      = 26,
     
    12501292    month       = sep,
    12511293    address     = {Waterloo, Ontario, Canada, N2L 3G1},
    1252     note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-MokThesis.ps.gz}}},
     1294    note        = {\href{http://plg.uwaterloo.ca/theses/MokThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-MokThesis.pdf}},
    12531295}
    12541296
     
    13281370    editor      = {P. E. Lauer},
    13291371    pages       = {165-198},
    1330     publisher   = {Springer-Verlag},
     1372    publisher   = {Springer},
    13311373    address     = {Berlin, DE},
    13321374    year        = 1993,
     
    13931435    month       = jul,
    13941436    year        = 2015,
    1395     note        = {\href{http://plg.uwaterloo.ca/~usystem/pub/uSystem/u++-6.1.0.sh}{\textsf{http://plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/\-u++-6.1.0.sh}}},
     1437    note        = {\href{http://plg.uwaterloo.ca/~usystem/pub/uSystem/u++-6.1.0.sh}{\textsf{http://\-plg.\-uwaterloo.\-ca/\-$\sim$usystem/\-pub/\-uSystem/\-u++-6.1.0.sh}}},
    13961438}
    13971439
     
    14011443    author      = {Alan Burns and Geoff Davies},
    14021444    title       = {Concurrent Programming},
    1403     publisher   = {Addison-Wesley},
     1445    publisher   = {Addison Wesley Longman},
    14041446    year        = 1993,
    14051447}
     
    14241466    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
    14251467    publisher   = {Addison-Wesley},
     1468    address     = {Boston},
    14261469    year        = 1997,
    1427     edition     = {first},
     1470    edition     = {1st},
    14281471}
    14291472
     
    14351478    publisher   = {Oxford University Press},
    14361479    year        = 1998,
    1437     edition     = {first},
     1480    edition     = {1st},
    14381481}
    14391482
     
    14441487    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
    14451488    publisher   = {Addison-Wesley},
     1489    address     = {Boston},
    14461490    year        = 2000,
    1447     edition     = {second},
     1491    edition     = {2nd},
    14481492}
    14491493
     
    14531497    author      = {N. H. Gehani and W. D. Roome},
    14541498    title       = {The {Concurrent C} Programming Language},
    1455     publisher   = {Silicon Press, NJ},
     1499    publisher   = {Silicon Press},
     1500    address     = {Summit},
    14561501    year        = 1989,
    14571502}
     
    14621507    author      = {Gregory R. Andrews},
    14631508    title       = {Concurrent Programming: Principles and Practice},
    1464     publisher   = {Benjamin/Cummings Publishing Company, Inc., Redwood City, California},
     1509    publisher   = {Benjamin/Cummings Publish\-ing},
     1510    address     = {Redwood City},
    14651511    year        = 1991,
    14661512}
     
    14711517    author      = {Peter A. Buhr and Ashif S. Harji},
    14721518    title       = {Concurrent Urban Legends},
    1473     journal     = {Concurrency and Computation: Practice and Experience},
     1519    journal     = ccpe,
    14741520    month       = aug,
    14751521    year        = 2005,
     
    14971543    publisher   = {Cambridge University Press},
    14981544    year        = 1998,
    1499     edition     = {second},
     1545    edition     = {2nd},
    15001546}
    15011547
     
    15141560    title       = {Condition Handling in the Lisp Language Family},
    15151561    booktitle   = {Exception Handling},
    1516     publisher   = {Springer-Verlag},
     1562    publisher   = {Springer},
    15171563    volume      = 2022,
    15181564    series      = {LNCS},
     
    15271573    title       = {Conformace, Genericity, Inheritance and Enhancement},
    15281574    pages       = {223-233},
    1529     publisher   = {Springer-Verlag},
     1575    publisher   = {Springer},
    15301576    year        = 1987,
    15311577    volume      = 276,
     
    16361682
    16371683@unpublished{Ditchfield:conversions,
    1638         contributer = {a3moss@uwaterloo.ca},
    1639         author = {Glen Ditchfield},
    1640         title = {Conversions for {Cforall}},
    1641         note = {\href{http://plg.uwaterloo.ca/~cforall/Conversions/index.html}{http://\-plg.uwaterloo.ca/\-\textasciitilde cforall/\-Conversions/\-index.html}},
    1642         month = {Nov},
    1643         year = {2002},
    1644         urldate = {28 July 2016},
    1645 }
    1646 
     1684    contributer = {a3moss@uwaterloo.ca},
     1685    author      = {Glen Ditchfield},
     1686    title       = {Conversions for {Cforall}},
     1687    note        = {\href{http://plg.uwaterloo.ca/~cforall/Conversions/index.html}{http://\-plg.uwaterloo.ca/\-\textasciitilde cforall/\-Conversions/\-index.html}},
     1688    month       = {Nov},
     1689    year        = {2002},
     1690    urldate     = {28 July 2016},
     1691}
    16471692
    16481693@techreport{Dijkstra65,
     
    16621707    author      = {Christopher D. Marlin},
    16631708    title       = {Coroutines: A Programming Methodology, a Language Design and an Implementation},
    1664     publisher   = {Springer-Verlag},
     1709    publisher   = {Springer},
     1710    address     = {New York},
    16651711    year        = 1980,
    16661712    volume      = 95,
     
    16991745    publisher   = {Benjamin Cummings},
    17001746    year        = 1991,
     1747}
     1748
     1749@article{Moore75,
     1750    keywords    = {approximation methods, integrated circuits},
     1751    contributer = {pabuhr@plg},
     1752    author      = {Gordon E. Moore},
     1753    title       = {Progress in Digital Integrated Electronics},
     1754    journal     = {Technical Digest, International Electron Devices Meeting, IEEE},
     1755    year        = 1975,
     1756    pages       = {11-13},
    17011757}
    17021758
     
    18401896    title       = {The Definition of Standard {ML}},
    18411897    publisher   = {MIT Press},
    1842     address     = {Cambridge, Massachusetts, U.S.A.},
     1898    address     = {Cambridge},
    18431899    year        = 1990
    18441900}
     
    18701926    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
    18711927    title       = {Dekker's Mutual Exclusion Algorithm Made RW-Safe},
    1872     journal     = {Concurrency and Computation: Practice and Experience},
     1928    journal     = ccpe,
    18731929    volume      = 28,
    18741930    number      = 1,
     
    19201976    title       = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    19211977    publisher   = {Addison-Wesley},
     1978    address     = {Boston},
    19221979    year        = 1994
    19231980}
     
    19772034    author      = {G. Motet and A. Mapinard and J. C. Geoffroy},
    19782035    title       = {Design of Dependable {A}da Software},
    1979     publisher   = {Prentice Hall},
     2036    publisher   = {Prentice-Hall},
     2037    address     = {Englewood Cliffs},
    19802038    year        = 1996,
    19812039}
     
    20122070    title       = {Design Patterns: Elements of Reusable Object-Oriented Software},
    20132071    publisher   = {Addison-Wesley},
     2072    address     = {Boston},
    20142073    year        = 1995,
    20152074    series      = {Professional Computing Series},
     
    20542113    author      = {Ralph E. Johnson and Brian Foote},
    20552114    title       = {Designing Reusable Classes},
    2056     journal     = {Journal of Object-Oriented Programming},
     2115    journal     = joop,
    20572116    year        = 1988,
    20582117    volume      = 1, number = 2, pages = {22-35},
     
    21092168    title       = {A Discipline of Programming},
    21102169    publisher   = {Prentice-Hall},
     2170    address     = {Englewood Cliffs},
    21112171    year        = 1976,
    21122172}
     
    21252185    title       = {Distributed Systems: Principles and Paradigms},
    21262186    publisher   = {Prentice-Hall},
     2187    address     = {Englewood Cliffs},
    21272188    year        = 2002,
    21282189}
     
    22532314    title       = {Eiffel: The Language},
    22542315    publisher   = {Prentice-Hall},
     2316    address     = {Englewood Cliffs},
    22552317    year        = 1992,
    2256     series      = {Prentice Hall Object-Oriented Series},
     2318    series      = {Prentice-Hall Object-Oriented Series},
    22572319}
    22582320
     
    23882450    month       = jun,
    23892451    year        = 2015,
    2390     note        = {\href{http://www.erlang.org/doc/pdf/otp-system-documentation.pdf}{\textsf{http://www.erlang.org/\-doc/\-pdf/\-otp-system-documentation.pdf}}},
     2452    note        = {\href{http://www.erlang.org/doc/pdf/otp-system-documentation.pdf}{\textsf{http://www.erlang.org/\-doc/\-pdf/\-otp-system-\-documentation.pdf}}},
    23912453}
    23922454
     
    24672529    booktitle   = {Advances in COMPUTERS},
    24682530    publisher   = {Academic Press},
     2531    address     = {London},
    24692532    volume      = 56,
    24702533    year        = 2002,
     
    25612624    title       = {Exception Handling in Parallel Computations},
    25622625    journal     = sigplan,
     2626    publisher   = {ACM},
     2627    address     = {New York, NY, USA},
    25632628    volume      = 20,
    25642629    number      = 10,
    25652630    month       = oct,
    25662631    year        = 1985,
    2567     issn        = {0362-1340},
    25682632    pages       = {95-104},
    2569     url         = {http://doi.acm.org/10.1145/382286.382385},
    2570     doi         = {http://doi.acm.org/10.1145/382286.382385},
    2571     acmid       = {382385},
    2572     publisher   = {ACM},
    2573     address     = {New York, NY, USA},
    25742633}
    25752634
     
    26802739    title       = {Fault Tolerance and Exception Handling in {BETA}},
    26812740    booktitle   = {Exception Handling},
    2682     publisher   = {Springer-Verlag},
     2741    publisher   = {Springer},
    26832742    volume      = 2022,
    26842743    series      = {Lecture Notes in Computer Science},
     
    28392898    title       = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
    28402899    booktitle   = {Exception Handling},
    2841     publisher   = {Springer-Verlag},
     2900    publisher   = {Springer},
    28422901    volume      = 2022,
    28432902    series      = {Lecture Notes in Computer Science},
     
    28592918    series      = {The Art of Computer Programming},
    28602919    publisher   = {Addison-Wesley},
     2920    address     = {Boston},
    28612921    year        = 1973,
    28622922    volume      = 1,
    2863     edition     = {second},
     2923    edition     = {2nd},
    28642924}
    28652925
     
    29122972    author      = {Richard M. Stallman},
    29132973    organization= {Free Software Foundation},
    2914     address     = {Cambridge, MA}
     2974    address     = {Cambridge}
    29152975}
    29162976
     
    29523012}
    29533013
    2954 
    29553014@article{Haskell,
    29563015    keywords    = {lazy evaluation, type class},
     
    29733032    organization= {Google},
    29743033    year        = 2009,
    2975     note        = {\href{http://golang.org/ref/spec}{http://golang.org/\-ref/\-spec}},
     3034    note        = {\href{http://golang.org/ref/spec}{http://\-golang.org/\-ref/\-spec}},
    29763035}
    29773036
     
    30903149    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini},
    30913150    title       = {Hermes: A Language for Distributed Computing},
    3092     publisher   = {Prentice Hall},
     3151    publisher   = {Prentice-Hall},
     3152    address     = {Englewood Cliffs},
    30933153    series      = {Innovative Technology},
    30943154    year        = 1991,
     
    31343194    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
    31353195    title       = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
    3136     journal     = {Concurrency and Computation: Practice and Experience},
     3196    journal     = ccpe,
    31373197    volume      = 27,
    31383198    number      = 3,
     
    31483208    title       = {Zum Hilbertschen Aufbau der reellen Zahlen},
    31493209    publisher   = {Springer},
    3150     journal     = {Mathematische Annalen},
     3210    journal     = mathann,
    31513211    number      = 1,
    31523212    volume      = 99,
     
    31873247    title       = {The Icon Programming Language},
    31883248    publisher   = {Prentice-Hall},
     3249    address     = {Englewood Cliffs},
    31893250    year        = 1983,
    31903251}
     
    32623323    issn        = {0164-0925},
    32633324    pages       = {1270--1343},
    3264     doi         = {http://doi.acm.org/10.1145/1108970.1108975},
    32653325    publisher   = {ACM Press},
    32663326    address     = {New York, NY, USA},
     
    32773337    pages       = {55-59},
    32783338    issn        = {0163-5719},
    3279     doi         = {http://doi.acm.org/10.1145/872736.806932},
    3280  }
     3339}
    32813340
    32823341@book{Algol68,
     
    33613420    title       = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
    33623421    publisher   = {Addison-Wesley},
     3422    address     = {Boston},
    33633423    series      = {ACM Press Books},
    33643424    year        = 1996,
     
    34343494    title       = {Introduction to Algorithms},
    34353495    publisher   = {MIT Press/McGraw-Hill},
     3496    address     = {Cambridge},
    34363497    series      = {Electrical Engineering and Computer Science Series},
    34373498    year        = 1992,
     
    34443505    title       = {Introduction to Automata Theory, Languages and Computation},
    34453506    publisher   = {Addison-Wesley},
     3507    address     = {Boston},
    34463508    year        = 1979,
    34473509}
     
    34763538    title       = {An Introduction to Operating Systems},
    34773539    publisher   = {Addison-Wesley},
     3540    address     = {Boston},
    34783541    year        = 1990,
    3479     edition     = {second},
     3542    edition     = {2nd},
    34803543}
    34813544
     
    35253588    title       = {Issues with Exception Hnadling in Object-Oriented Systems},
    35263589    booktitle   = {ECOOP'97},
    3527     publisher   = {Springer-Verlag},
     3590    publisher   = {Springer},
    35283591    volume      = 1241,
    35293592    series      = {Lecture Notes in Computer Science},
     
    35533616    title       = {The {Java} Language Specification},
    35543617    publisher   = {Addison-Wesley},
     3618    address     = {Reading},
    35553619    year        = 2000,
    3556     edition     = {second},
     3620    edition     = {2nd},
    35573621}
    35583622
     
    35973661    title       = {Konstruktion nichtrekursiver Funktionen},
    35983662    publisher   = {Springer},
    3599     journal     = {Mathematische Annalen},
     3663    journal     = mathann,
    36003664    number      = 111,
    36013665    volume      = 1,
     
    37403804    title       = {Lisp 1.5 Primer},
    37413805    publisher   = {Dickenson Publishing},
     3806    address     = {Belmont},
    37423807    year        = 1967,
    37433808}
     
    39374002    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
    39384003    organization= {ECOOP'88},
    3939     publisher   = {Springer-Verlag},
     4004    publisher   = {Springer},
    39404005    volume      = 322,
    39414006    editor      = {S. Gjessing and K. Nygaard},
     
    39794044    title       = {Modern C++ Design: Generic Programming and Design Patterns Applied},
    39804045    publisher   = {Addison-Wesley Professional},
     4046    address     = {Boston},
    39814047    month       = feb,
    39824048    year        = 2001,
     
    39904056    title       = {Modern Operating Systems},
    39914057    publisher   = {Prentice-Hall},
     4058    address     = {Englewood Cliffs},
    39924059    year        = 1992,
    39934060}
     
    43104377    title       = {Nesting in an Object Oriented Language is NOT for the Birds},
    43114378    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
    4312     publisher   = {Springer-Verlag},
     4379    publisher   = {Springer},
    43134380    volume      = 322,
    43144381    editor      = {S. Gjessing and K. Nygaard},
     
    44374504    editor      = {S. Gjessing and K. Nygaard},
    44384505    organization= {DND, The Norwegian Computer Society},
    4439     publisher   = {Springer-Verlag},
     4506    publisher   = {Springer},
    44404507    comment     = {
    44414508           Objectives:
     
    44724539    title       = {Object-oriented programming; an evolutionary approach},
    44734540    publisher   = {Addison-Wesley},
     4541    address     = {Boston},
    44744542    year        = 1986
    44754543}
     
    44814549    title       = {Object-oriented Programming in the {BETA} Programming Language},
    44824550    publisher   = {Addison-Wesley},
     4551    address     = {Boston},
    44834552    year        = 1993,
    44844553}
     
    45124581    author      = {Bertrand Meyer},
    45134582    title       = {Object-oriented Software Construction},
    4514     publisher   = {Prentice Hall},
     4583    publisher   = {Prentice-Hall},
     4584    address     = {Englewood Cliffs},
    45154585    year        = {1988},
    4516     series      = {Prentice Hall International Series in Computer Science},
     4586    series      = {Prentice-Hall International Series in Computer Science},
    45174587}
    45184588
     
    45414611    author      = {John Galletly},
    45424612    title       = {{OCCAM} 2: Including {OCCAM} 2.1},
    4543     publisher   = {{UCL} (University College London) Press Ltd.},
    4544     edition     = {second},
     4613    publisher   = {{UCL} (University College London) Press},
     4614    address     = {London},
     4615    edition     = {2nd},
    45454616    year        = 1996,
    45464617}
     
    46024673    month       = jul,
    46034674    year        = 2013,
    4604     note        = {\href{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}{\textsf{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}}},
     4675    note        = {\href{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}{\textsf{http://\-www.openmp.org/\-mp-documents/\-OpenMP4.0.0.pdf}}},
    46054676}
    46064677
     
    46114682    title       = {Operating Systems},
    46124683    publisher   = {Pearson Prentice-Hall},
     4684    address     = {Englewood Cliffs},
    46134685    year        = 2004,
    4614     edition     = {third},
     4686    edition     = {3rd},
    46154687}
    46164688
     
    46214693    title       = {Operating Systems: Internals and Design Principles},
    46224694    publisher   = {Prentice-Hall},
     4695    address     = {Englewood Cliffs},
    46234696    year        = 1998,
    4624     edition     = {third},
     4697    edition     = {3rd},
    46254698}
    46264699
     
    46314704    title       = {Operating Systems: Internals and Design Principles},
    46324705    publisher   = {Prentice-Hall},
     4706    address     = {Englewood Cliffs},
    46334707    year        = 2001,
    4634     edition     = {fourth},
     4708    edition     = {4th},
    46354709}
    46364710
     
    46414715    title       = {Operating System Concepts},
    46424716    publisher   = {Addision-Wesley},
     4717    address     = {Boston},
    46434718    year        = 1991,
    4644     edition     = {third},
     4719    edition     = {3rd},
    46454720}
    46464721
     
    46514726    title       = {Operating Systems : Design and Implementation},
    46524727    publisher   = {Prentice-Hall},
     4728    address     = {Englewood Cliffs},
    46534729    series      = {Software Series},
    46544730    year        = 1987,
     
    46614737    title       = {Operating System Principles},
    46624738    publisher   = {Prentice-Hall},
     4739    address     = {Englewood Cliffs},
    46634740    year        = 1973,
    46644741}
     
    46704747    title       = {Operating System Principles},
    46714748    publisher   = {Prentice-Hall},
     4749    address     = {Englewood Cliffs},
    46724750    year        = 2003,
    46734751}
     
    46864764
    46874765@article{Ganzinger80,
    4688         contributer = {a3moss@uwaterloo.ca},
    4689         author = {Ganzinger, Harald and Ripken, Knut},
    4690         title = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
    4691         journal = {SIGPLAN Notices},
    4692         issue_date = {February 1980},
    4693         volume = {15},
    4694         number = {2},
    4695         month = feb,
    4696         year = {1980},
    4697         issn = {0362-1340},
    4698         pages = {30--42},
    4699         numpages = {13},
    4700         url = {http://doi.acm.org/10.1145/947586.947589},
    4701         doi = {10.1145/947586.947589},
    4702         publisher = {ACM},
    4703         address = {New York, NY, USA}
     4766    contributer = {a3moss@uwaterloo.ca},
     4767    author      = {Ganzinger, Harald and Ripken, Knut},
     4768    title       = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
     4769    journal     = {SIGPLAN Notices},
     4770    issue_date  = {February 1980},
     4771    volume      = {15},
     4772    number      = {2},
     4773    month       = feb,
     4774    year        = {1980},
     4775    issn        = {0362-1340},
     4776    pages       = {30--42},
     4777    numpages    = {13},
     4778    url         = {http://doi.acm.org/10.1145/947586.947589},
     4779    doi         = {10.1145/947586.947589},
     4780    publisher   = {ACM},
     4781    address     = {New York, NY, USA}
    47044782}
    47054783
     
    47234801    title       = {{OS} and {DOS} {PL/I} Reference Manual},
    47244802    organization= {International Business Machines},
    4725     edition     = {first},
     4803    edition     = {1st},
    47264804    month       = sep,
    47274805    year        = 1981,
     
    48434921    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    48444922    publisher   = {MIT Press},
    4845     address     = {Cambridge, MA, USA},
     4923    address     = {Cambridge},
    48464924    series      = {Scientific and Engineering Computation Series},
    48474925    pages       = {507-546},
     
    49225000    publisher   = {Springer--Verlag},
    49235001    year        = 1985,
    4924     edition     = {third},
     5002    edition     = {3rd},
    49255003    note        = {Revised by Andrew B. Mickel and James F. Miner, ISO Pascal Standard}
    49265004}
     
    49335011    publisher   = {Springer--Verlag},
    49345012    year        = 1975,
    4935     edition     = {first},
     5013    edition     = {1st},
    49365014}
    49375015
     
    49555033    title       = {{P}ascal/{VS} Language Reference Manual},
    49565034    organization= {International Business Machines},
    4957     edition     = {first},
     5035    edition     = {1st},
    49585036    year        = 1981,
    49595037    note        = {Manual SH20-6168-1},
     
    51075185    title       = {Principles of Concurrent Programming},
    51085186    publisher   = {Prentice-Hall International},
     5187    address     = {Englewood Cliffs},
    51095188    year        = 1982,
    51105189}
     
    51145193    title       = {Principles of Programming Languages},
    51155194    publisher   = {Prentice-Hall International},
     5195    address     = {Englewood Cliffs},
    51165196    year        = 1981,
    51175197    series      = {Series in Computer Science}
     
    51855265    title       = {Programming with {POSIX} Threads},
    51865266    publisher   = {Addison-Wesley},
     5267    address     = {Boston},
    51875268    series      = {Professional Computing},
    51885269    year        = 1997,
     
    51945275    author      = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
    51955276    title       = {Programming with Sets: An Introduction to {SETL}},
    5196     publisher   = {Springer-Verlag},
     5277    publisher   = {Springer},
    51975278    year        = 1986,
    51985279}
     
    52355316    key         = {C++14},
    52365317    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    5237     edition     = {fourth},
     5318    edition     = {4th},
    52385319    organization= {International Standard ISO/IEC 14882:2014 (E)},
    52395320    publisher   = {International Standard Organization},
     
    53295410    author      = {Niklaus Wirth},
    53305411    title       = {Programming in Modula-2},
    5331     publisher   = {Springer-Verlag},
     5412    publisher   = {Springer},
     5413    address     = {New York},
    53325414    year        = 1988,
    5333     edition     = {fourth},
     5415    edition     = {4th},
    53345416    series      = {Texts and Monographs in Computer Science},
    53355417}
     
    53435425    month       = feb,
    53445426    year        = 1983,
    5345     note        = {Published by Springer-Verlag}
     5427    note        = {Springer, New York},
    53465428}
    53475429
     
    53515433    title       = {The Programming Language {Ada}: Reference Manual},
    53525434    organization= {United States Department of Defense},
    5353     publisher   = {Springer-Verlag},
     5435    publisher   = {Springer},
    53545436    year        = 1981
    53555437}
     
    55055587
    55065588@article{Grossman06,
    5507  keywords = {Cyclone, existential types, polymorphism, type variables},
    5508  contributer = {a3moss@plg},
    5509  author = {Grossman, Dan},
    5510  title = {Quantified Types in an Imperative Language},
    5511  journal = toplas,
    5512  issue_date = {May 2006},
    5513  volume = {28},
    5514  number = {3},
    5515  month = may,
    5516  year = {2006},
    5517  issn = {0164-0925},
    5518  pages = {429--475},
    5519  numpages = {47},
    5520  url = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
    5521  doi = {10.1145/1133651.1133653},
    5522  acmid = {1133653},
    5523  publisher = {ACM},
    5524  address = {New York, NY, USA},
     5589    keywords    = {Cyclone, existential types, polymorphism, type variables},
     5590    contributer = {a3moss@plg},
     5591    author      = {Grossman, Dan},
     5592    title       = {Quantified Types in an Imperative Language},
     5593    journal     = toplas,
     5594    issue_date  = {May 2006},
     5595    volume      = {28},
     5596    number      = {3},
     5597    month       = may,
     5598    year        = {2006},
     5599    issn        = {0164-0925},
     5600    pages       = {429--475},
     5601    numpages    = {47},
     5602    url         = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
     5603    doi         = {10.1145/1133651.1133653},
     5604    acmid       = {1133653},
     5605    publisher   = {ACM},
     5606    address     = {New York, NY, USA},
    55255607}
    55265608
     
    55695651    title       = {{A}da Reference Manual},
    55705652    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
    5571     organization = {Intermetrics, Inc.},
     5653    organization= {Intermetrics, Inc.},
    55725654    month       = dec,
    55735655    year        = 1995,
     
    55795661    contributer = {pabuhr@plg},
    55805662    title       = {Programming languages -- {Ada}},
    5581     edition     = {third},
     5663    edition     = {3rd},
    55825664    organization= {International Standard ISO/IEC 1989:2014},
    55835665    publisher   = {International Standard Organization},
     
    56045686    series      = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
    56055687    publisher   = {Addison-Wesley},
     5688    address     = {Boston},
    56065689    year        = 2000,
    56075690}
     
    57555838% S
    57565839
     5840@manual{Scala,
     5841    keywords    = {Scala programming language},
     5842    contributer = {pabuhr@plg},
     5843    title       = {{Scala} Language Specification, Version 2.11},
     5844    organization= {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
     5845    year        = 2016,
     5846    note        = {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}},
     5847}
     5848
    57575849@inproceedings{Michael04,
    57585850    keywords    = {lock free, dynamic memory allocation},
     
    58025894    pages       = {51-67},
    58035895    editor      = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
    5804     publisher   = {Springer-Verlag},
     5896    publisher   = {Springer},
    58055897    note        = {Lecture Notes in Computer Science v. 173},
    58065898}
     
    58525944    month       = may,
    58535945    year        = 2001,
    5854     note        = {{\small\textsf{http://www.python.org/peps/pep-0255.html}}},
     5946    note        = {\href{http://www.python.org/peps/pep-0255.html}{http://\-www.python.org/\-peps/\-pep-0255.html}},
    58555947}
    58565948
     
    58715963
    58725964@article{Pennello80,
    5873         contributer = {a3moss@uwaterloo.ca},
    5874         author = {Pennello, Tom and DeRemer, Frank and Meyers, Richard},
    5875         title = {A Simplified Operator Identification Scheme for {Ada}},
    5876         journal = {SIGPLAN Notices},
    5877         issue_date = {July-August 1980},
    5878         volume = {15},
    5879         number = {7 and 8},
    5880         month = jul,
    5881         year = {1980},
    5882         issn = {0362-1340},
    5883         pages = {82--87},
    5884         numpages = {6},
    5885         url = {http://doi.acm.org/10.1145/947680.947688},
    5886         doi = {10.1145/947680.947688},
    5887         publisher = {ACM},
    5888         address = {New York, NY, USA},
     5965    contributer = {a3moss@uwaterloo.ca},
     5966    author      = {Pennello, Tom and DeRemer, Frank and Meyers, Richard},
     5967    title       = {A Simplified Operator Identification Scheme for {Ada}},
     5968    journal     = {SIGPLAN Notices},
     5969    issue_date  = {July-August 1980},
     5970    volume      = {15},
     5971    number      = {7 and 8},
     5972    month       = jul,
     5973    year        = {1980},
     5974    issn        = {0362-1340},
     5975    pages       = {82--87},
     5976    numpages    = {6},
     5977    url         = {http://doi.acm.org/10.1145/947680.947688},
     5978    doi         = {10.1145/947680.947688},
     5979    publisher   = {ACM},
     5980    address     = {New York, NY, USA},
    58895981}
    58905982
     
    59276019    year        = {1980},
    59286020    address     = {Lund, Sweden},
    5929     edition     = {second},
     6021    edition     = {2nd},
    59306022}
    59316023
    59326024@book{Simula67,
    5933     author      = "O-J Dahl and B. Myhrhaug and K. Nygaard",
    5934     address     = "Oslo Norway",
     6025    author      = {O-J Dahl and B. Myhrhaug and K. Nygaard},
     6026    title       = {Simula67 Common Base Language},
    59356027    month       = oct,
    59366028    year        = 1970,
    5937     publisher   = "Norwegian Computing Center",
    5938     title       = "Simula67 Common Base Language"
     6029    publisher   = {Norwegian Com\-puting Center},
     6030    address     = {Oslo Norway},
    59396031}
    59406032
     
    59456037    title       = {Smalltalk-80: The Language and its Implementation},
    59466038    publisher   = {Addison-Wesley},
     6039    address     = {Reading},
    59476040    year        = 1983
    59486041}
     
    59666059    author      = {R. E. Griswold and J. F. Poage and I. P. Polonsky},
    59676060    title       = {The SNOBOL4 Programming Language},
    5968     edition     = {second},
     6061    edition     = {2nd},
    59696062    publisher   = {Prentice-Hall},
     6063    address     = {Englewood Cliffs},
    59706064    year        = 1971,
    59716065}
     
    60736167    author      = {R. H. Campbell and A. N. Habermann},
    60746168    title       = {The Specification of Process Synchronization by Path Expressions},
    6075     publisher   = {Springer-Verlag},
     6169    publisher   = {Springer},
    60766170    year        = 1974,
    60776171    volume      = 16,
     
    61176211    title       = {A Standard {ML} Compiler},
    61186212    booktitle   = {Functional Programming Languages and Computer Architecture},
    6119     publisher   = {Springer-Verlag},
     6213    publisher   = {Springer},
    61206214    series      = {Lecture Notes in Computer Science},
    61216215    volume      = 274,
     
    61726266    title       = {Structured Concurrent Programming with Operating System Applications},
    61736267    publisher   = {Addison-Wesley},
     6268    address     = {Boston},
    61746269    year        = 1978,
    61756270}
     
    63206415    author      = {Gadi Taubenfeld},
    63216416    title       = {Synchronization Algorithms and Concurrent Programming},
    6322     publisher   = {Pearson/Prentice Hall},
     6417    publisher   = {Pearson/Prentice-Hall},
     6418    address     = {Harlow, England},
    63236419    year        = 2006,
    63246420}
     
    63806476    author      = {Andrew Birrell and Mark R. Brown and Luca Cardelli and Jim Donahue and Lucille Glassman and John Gutag and Jim Harning and Bill Kalsow and Roy Levin and Greg Nelson},
    63816477    title       = {Systems Programming with Modula-3},
    6382     publisher   = {Prentice-Hall, Inc.},
     6478    publisher   = {Prentice-Hall},
     6479    address     = {Englewood Cliffs},
    63836480    year        = 1991,
    6384     series      = {Prentice Hall Series in Innovative Technology}
     6481    series      = {Prentice-Hall Series in Innovative Technology}
    63856482}
    63866483
     
    64646561    pages       = {408-423},
    64656562    editor      = {B. Robinet},
    6466     publisher   = {Springer-Verlag},
     6563    publisher   = {Springer},
    64676564    note        = {Lecture Notes in Computer Science, v. 19},
    64686565    abstract    = {
     
    65466643    publisher   = {Holt Software Associates Inc.},
    65476644    year        = 1992,
    6548     edition     = {third},
     6645    edition     = {3rd},
    65496646}
    65506647
     
    65666663    title       = {Tutorial: Programming Language Design},
    65676664    publisher   = {Computer Society Press},
     6665    address     = {Los Alamitos},
    65686666    year        = 1980
    65696667}
     
    66356733% U
    66366734
    6637 @unpublished{uC++book,
    6638     keywords    = {control structure, concurrency},
     6735@book{uC++book,
     6736    keywords    = {control structure, concurrency, uC++},
    66396737    contributer = {pabuhr@plg},
    66406738    author      = {Peter A. Buhr},
    6641     title       = {Understanding Control Flow with Concurrent Programming using $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    6642     year        = 1999,
    6643     note        = {Textbook in preparation}
     6739    title       = {Understanding Control Flow: Concurrent Programming using $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     6740    publisher   = {Springer},
     6741    address     = {Switzerland},
     6742    year        = 2016,
    66446743}
    66456744
     
    66646763    booktitle   = {Proceedings of the International Workshop on Memory Management},
    66656764    location    = {St. Malo, France},
    6666     publisher   = {Springer-Verlag},
     6765    publisher   = {Springer},
    66676766    series      = {Lecture Notes in Computer Science},
    66686767    volume      = 637,
     
    67886887    title       = {VAX-11 Architecture Reference Manual},
    67896888    publisher   = {Digital Press},
     6889    address     = {Bedford},
    67906890    month       = may,
    67916891    year        = 1982,
     
    67966896    title       = {{VAX/VMS} Internals and Data Structures Version 4.4},
    67976897    publisher   = {Digital Press},
     6898    address     = {Bedford},
    67986899    year        = 1988,
    67996900}
     
    68056906    title       = {Verifying a Simplification of Mutual Exclusion by {L}ycklama--{H}adzilacos},
    68066907    journal     = {Acta Informatica},
    6807     publisher   = {Springer-Verlag},
     6908    publisher   = {Springer},
     6909    address     = {New York},
    68086910    year        = {2013},
    68096911    volume      = {50},
     
    68716973    month       = jun,
    68726974    year        = 1985,
    6873     note        = {\textsf{http://www.hpl.hp.com/\-techreports/\-tandem/\-TR-85.7.pdf}},
     6975    note        = {\href{http://www.hpl.hp.com/techreports/tandem/TR-85.7.pdf}{http://www.hpl.hp.com/\-techreports/\-tandem/\-TR-85.7.pdf}},
    68746976}
    68756977
  • doc/user/user.tex

    r40744af8 rf51aefb  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Sun Aug 14 08:23:06 2016
    14 %% Update Count     : 1323
     13%% Last Modified On : Tue Oct 25 23:03:59 2016
     14%% Update Count     : 1357
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    3333\usepackage{textcomp}
    3434\usepackage[latin1]{inputenc}
     35
    3536\usepackage{fullpage,times,comment}
    3637\usepackage{epic,eepic}
     
    325326\begin{description}
    326327\item
    327 \Indexc{__CFA__}\index{preprocessor variables!__CFA__@{©__CFA__©}}
    328 is always available during preprocessing and its value is the current major \Index{version number} of \CFA.\footnote{
     328\Indexc{__CFA_MAJOR__}\index{preprocessor variables!__CFA__@{©__CFA__©}}
     329is available during preprocessing and its value is the major \Index{version number} of \CFA.\footnote{
    329330The C preprocessor allows only integer values in a preprocessor variable so a value like ``\Version'' is not allowed.
    330331Hence, the need to have three variables for the major, minor and patch version number.}
     
    332333\item
    333334\Indexc{__CFA_MINOR__}\index{preprocessor variables!__CFA_MINOR__@{©__CFA_MINOR__©}}
    334 is always available during preprocessing and its value is the current minor \Index{version number} of \CFA.
     335is available during preprocessing and its value is the minor \Index{version number} of \CFA.
    335336
    336337\item
    337338\Indexc{__CFA_PATCH__}\index{preprocessor variables!__CFA_PATCH__@©__CFA_PATCH__©}
    338 is always available during preprocessing and its value is the current patch \Index{version number} of \CFA.
    339 
    340 \item
     339is available during preprocessing and its value is the patch \Index{level number} of \CFA.
     340
     341\item
     342\Indexc{__CFA__}\index{preprocessor variables!__CFA__@©__CFA__©} and
    341343\Indexc{__CFORALL__}\index{preprocessor variables!__CFORALL__@©__CFORALL__©}
    342 is always available during preprocessing and has no value.
     344are always available during preprocessing and have no value.
    343345\end{description}
    344346These preprocessor variables allow conditional compilation of programs that must work differently in these situations.
     
    18531855case 1:  case 2:  case 3: ...
    18541856\end{lstlisting}
    1855 still work.
     1857still works.
    18561858Nevertheless, reversing the default action would have a non-trivial effect on case actions that compound, such as the above example of processing shell arguments.
    1857 <<<<<<< HEAD
    1858 Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthru©, \eg:
    1859 =======
    18601859Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthrough©/©fallthru©, e.g.:
    1861 >>>>>>> 080615890f586cb9954c252b55cab47f52c25758
    18621860\begin{lstlisting}
    18631861®choose® ( i ) {
  • src/ControlStruct/LabelFixer.h

    r40744af8 rf51aefb  
    2626namespace ControlStruct {
    2727        /// normalizes label definitions and generates multi-level exit labels
    28         class LabelFixer : public Visitor {
     28        class LabelFixer final : public Visitor {
    2929                typedef Visitor Parent;
    3030          public:
     
    3333                std::map < Label, Statement * > *resolveJumps() throw ( SemanticError );
    3434
     35                using Visitor::visit;
     36
    3537                // Declarations
    36                 virtual void visit( FunctionDecl *functionDecl );
     38                virtual void visit( FunctionDecl *functionDecl ) override;
    3739
    3840                // Statements
    3941                void visit( Statement *stmt );
    4042
    41                 virtual void visit( CompoundStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    42                 virtual void visit( NullStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    43                 virtual void visit( ExprStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    44                 virtual void visit( IfStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    45                 virtual void visit( WhileStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    46                 virtual void visit( ForStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    47                 virtual void visit( SwitchStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    48                 virtual void visit( CaseStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    49                 virtual void visit( ReturnStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    50                 virtual void visit( TryStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    51                 virtual void visit( CatchStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    52                 virtual void visit( DeclStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    53                 virtual void visit( BranchStmt *branchStmt );
    54                 virtual void visit( UntypedExpr *untyped );
     43                virtual void visit( CompoundStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     44                virtual void visit( NullStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     45                virtual void visit( ExprStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     46                virtual void visit( IfStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     47                virtual void visit( WhileStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     48                virtual void visit( ForStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     49                virtual void visit( SwitchStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     50                virtual void visit( CaseStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     51                virtual void visit( ReturnStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     52                virtual void visit( TryStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     53                virtual void visit( CatchStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     54                virtual void visit( DeclStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     55                virtual void visit( BranchStmt *branchStmt ) override;
     56                virtual void visit( UntypedExpr *untyped ) override;
    5557
    5658                Label setLabelsDef( std::list< Label > &, Statement *definition );
  • src/ControlStruct/LabelTypeChecker.cc

    r40744af8 rf51aefb  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // LabelTypeChecker.cc -- 
     7// LabelTypeChecker.cc --
    88//
    99// Author           : Rodolfo G. Esteves
     
    2828                assert( untypedExpr != 0 );
    2929                NameExpr *fname;
    30                 if ( ((fname = dynamic_cast<NameExpr *>(untypedExpr->get_function())) != 0) 
     30                if ( ((fname = dynamic_cast<NameExpr *>(untypedExpr->get_function())) != 0)
    3131                         && fname->get_name() == std::string("&&") )
    3232                        std::cerr << "Taking the label of an address." << std::endl;
     
    5858
    5959                NameExpr *name;
    60                 if ( ((name = dynamic_cast<NameExpr *>(target)) == 0) )
     60                if ( (name = dynamic_cast<NameExpr *>(target)) == 0 )
    6161                        return; // Not a name expression
    62        
     62
    6363                std::list< DeclarationWithType * > interps;
    6464                index.lookupId(name->get_name(), interps);
  • src/GenPoly/Box.cc

    r40744af8 rf51aefb  
    6464
    6565                /// Adds layout-generation functions to polymorphic types
    66                 class LayoutFunctionBuilder : public DeclMutator {
     66                class LayoutFunctionBuilder final : public DeclMutator {
    6767                        unsigned int functionNesting;  // current level of nested functions
    6868                public:
    6969                        LayoutFunctionBuilder() : functionNesting( 0 ) {}
    7070
    71                         virtual DeclarationWithType *mutate( FunctionDecl *functionDecl );
    72                         virtual Declaration *mutate( StructDecl *structDecl );
    73                         virtual Declaration *mutate( UnionDecl *unionDecl );
     71                        using DeclMutator::mutate;
     72                        virtual DeclarationWithType *mutate( FunctionDecl *functionDecl ) override;
     73                        virtual Declaration *mutate( StructDecl *structDecl ) override;
     74                        virtual Declaration *mutate( UnionDecl *unionDecl ) override;
    7475                };
    7576
    7677                /// Replaces polymorphic return types with out-parameters, replaces calls to polymorphic functions with adapter calls as needed, and adds appropriate type variables to the function call
    77                 class Pass1 : public PolyMutator {
     78                class Pass1 final : public PolyMutator {
    7879                  public:
    7980                        Pass1();
    80                         virtual Expression *mutate( ApplicationExpr *appExpr );
    81                         virtual Expression *mutate( AddressExpr *addrExpr );
    82                         virtual Expression *mutate( UntypedExpr *expr );
    83                         virtual DeclarationWithType* mutate( FunctionDecl *functionDecl );
    84                         virtual TypeDecl *mutate( TypeDecl *typeDecl );
    85                         virtual Expression *mutate( CommaExpr *commaExpr );
    86                         virtual Expression *mutate( ConditionalExpr *condExpr );
    87                         virtual Statement * mutate( ReturnStmt *returnStmt );
    88                         virtual Type *mutate( PointerType *pointerType );
    89                         virtual Type * mutate( FunctionType *functionType );
    90 
    91                         virtual void doBeginScope();
    92                         virtual void doEndScope();
     81
     82                        using PolyMutator::mutate;
     83                        virtual Expression *mutate( ApplicationExpr *appExpr ) override;
     84                        virtual Expression *mutate( AddressExpr *addrExpr ) override;
     85                        virtual Expression *mutate( UntypedExpr *expr ) override;
     86                        virtual DeclarationWithType* mutate( FunctionDecl *functionDecl ) override;
     87                        virtual TypeDecl *mutate( TypeDecl *typeDecl ) override;
     88                        virtual Expression *mutate( CommaExpr *commaExpr ) override;
     89                        virtual Expression *mutate( ConditionalExpr *condExpr ) override;
     90                        virtual Statement * mutate( ReturnStmt *returnStmt ) override;
     91                        virtual Type *mutate( PointerType *pointerType ) override;
     92                        virtual Type * mutate( FunctionType *functionType ) override;
     93
     94                        virtual void doBeginScope() override;
     95                        virtual void doEndScope() override;
    9396                  private:
    9497                        /// Pass the extra type parameters from polymorphic generic arguments or return types into a function application
     
    135138                /// * Moves polymorphic returns in function types to pointer-type parameters
    136139                /// * adds type size and assertion parameters to parameter lists
    137                 class Pass2 : public PolyMutator {
     140                class Pass2 final : public PolyMutator {
    138141                  public:
    139142                        template< typename DeclClass >
    140143                        DeclClass *handleDecl( DeclClass *decl, Type *type );
    141                         virtual DeclarationWithType *mutate( FunctionDecl *functionDecl );
    142                         virtual ObjectDecl *mutate( ObjectDecl *objectDecl );
    143                         virtual TypeDecl *mutate( TypeDecl *typeDecl );
    144                         virtual TypedefDecl *mutate( TypedefDecl *typedefDecl );
    145                         virtual Type *mutate( PointerType *pointerType );
    146                         virtual Type *mutate( FunctionType *funcType );
     144
     145                        using PolyMutator::mutate;
     146                        virtual DeclarationWithType *mutate( FunctionDecl *functionDecl ) override;
     147                        virtual ObjectDecl *mutate( ObjectDecl *objectDecl ) override;
     148                        virtual TypeDecl *mutate( TypeDecl *typeDecl ) override;
     149                        virtual TypedefDecl *mutate( TypedefDecl *typedefDecl ) override;
     150                        virtual Type *mutate( PointerType *pointerType ) override;
     151                        virtual Type *mutate( FunctionType *funcType ) override;
    147152
    148153                  private:
     
    156161                /// * Calculates polymorphic offsetof expressions from offset array
    157162                /// * Inserts dynamic calculation of polymorphic type layouts where needed
    158                 class PolyGenericCalculator : public PolyMutator {
     163                class PolyGenericCalculator final : public PolyMutator {
    159164                public:
    160165                        typedef PolyMutator Parent;
     
    163168                        template< typename DeclClass >
    164169                        DeclClass *handleDecl( DeclClass *decl, Type *type );
    165                         virtual DeclarationWithType *mutate( FunctionDecl *functionDecl );
    166                         virtual ObjectDecl *mutate( ObjectDecl *objectDecl );
    167                         virtual TypedefDecl *mutate( TypedefDecl *objectDecl );
    168                         virtual TypeDecl *mutate( TypeDecl *objectDecl );
    169                         virtual Statement *mutate( DeclStmt *declStmt );
    170                         virtual Type *mutate( PointerType *pointerType );
    171                         virtual Type *mutate( FunctionType *funcType );
    172                         virtual Expression *mutate( MemberExpr *memberExpr );
    173                         virtual Expression *mutate( SizeofExpr *sizeofExpr );
    174                         virtual Expression *mutate( AlignofExpr *alignofExpr );
    175                         virtual Expression *mutate( OffsetofExpr *offsetofExpr );
    176                         virtual Expression *mutate( OffsetPackExpr *offsetPackExpr );
    177 
    178                         virtual void doBeginScope();
    179                         virtual void doEndScope();
     170                        virtual DeclarationWithType *mutate( FunctionDecl *functionDecl ) override;
     171                        virtual ObjectDecl *mutate( ObjectDecl *objectDecl ) override;
     172                        virtual TypedefDecl *mutate( TypedefDecl *objectDecl ) override;
     173                        virtual TypeDecl *mutate( TypeDecl *objectDecl ) override;
     174                        virtual Statement *mutate( DeclStmt *declStmt ) override;
     175                        virtual Type *mutate( PointerType *pointerType ) override;
     176                        virtual Type *mutate( FunctionType *funcType ) override;
     177                        virtual Expression *mutate( MemberExpr *memberExpr ) override;
     178                        virtual Expression *mutate( SizeofExpr *sizeofExpr ) override;
     179                        virtual Expression *mutate( AlignofExpr *alignofExpr ) override;
     180                        virtual Expression *mutate( OffsetofExpr *offsetofExpr ) override;
     181                        virtual Expression *mutate( OffsetPackExpr *offsetPackExpr ) override;
     182
     183                        virtual void doBeginScope() override;
     184                        virtual void doEndScope() override;
    180185
    181186                private:
     
    197202
    198203                /// Replaces initialization of polymorphic values with alloca, declaration of dtype/ftype with appropriate void expression, and sizeof expressions of polymorphic types with the proper variable
    199                 class Pass3 : public PolyMutator {
     204                class Pass3 final : public PolyMutator {
    200205                  public:
    201206                        template< typename DeclClass >
    202207                        DeclClass *handleDecl( DeclClass *decl, Type *type );
    203                         virtual DeclarationWithType *mutate( FunctionDecl *functionDecl );
    204                         virtual ObjectDecl *mutate( ObjectDecl *objectDecl );
    205                         virtual TypedefDecl *mutate( TypedefDecl *objectDecl );
    206                         virtual TypeDecl *mutate( TypeDecl *objectDecl );
    207                         virtual Type *mutate( PointerType *pointerType );
    208                         virtual Type *mutate( FunctionType *funcType );
     208
     209                        using PolyMutator::mutate;
     210                        virtual DeclarationWithType *mutate( FunctionDecl *functionDecl ) override;
     211                        virtual ObjectDecl *mutate( ObjectDecl *objectDecl ) override;
     212                        virtual TypedefDecl *mutate( TypedefDecl *objectDecl ) override;
     213                        virtual TypeDecl *mutate( TypeDecl *objectDecl ) override;
     214                        virtual Type *mutate( PointerType *pointerType ) override;
     215                        virtual Type *mutate( FunctionType *funcType ) override;
    209216                  private:
    210217                };
  • src/GenPoly/InstantiateGeneric.cc

    r40744af8 rf51aefb  
    147147
    148148        /// Mutator pass that replaces concrete instantiations of generic types with actual struct declarations, scoped appropriately
    149         class GenericInstantiator : public DeclMutator {
     149        class GenericInstantiator final : public DeclMutator {
    150150                /// Map of (generic type, parameter list) pairs to concrete type instantiations
    151151                InstantiationMap< AggregateDecl, AggregateDecl > instantiations;
     
    158158                GenericInstantiator() : DeclMutator(), instantiations(), dtypeStatics(), typeNamer("_conc_") {}
    159159
    160                 virtual Type* mutate( StructInstType *inst );
    161                 virtual Type* mutate( UnionInstType *inst );
    162 
    163                 virtual void doBeginScope();
    164                 virtual void doEndScope();
     160                using DeclMutator::mutate;
     161                virtual Type* mutate( StructInstType *inst ) override;
     162                virtual Type* mutate( UnionInstType *inst ) override;
     163
     164                virtual void doBeginScope() override;
     165                virtual void doEndScope() override;
    165166        private:
    166167                /// Wrap instantiation lookup for structs
  • src/GenPoly/Specialize.cc

    r40744af8 rf51aefb  
    3636        const std::list<Label> noLabels;
    3737
    38         class Specialize : public PolyMutator {
     38        class Specialize final : public PolyMutator {
    3939          public:
    4040                Specialize( std::string paramPrefix = "_p" );
    4141
    42                 virtual Expression * mutate( ApplicationExpr *applicationExpr );
    43                 virtual Expression * mutate( AddressExpr *castExpr );
    44                 virtual Expression * mutate( CastExpr *castExpr );
     42                using PolyMutator::mutate;
     43                virtual Expression * mutate( ApplicationExpr *applicationExpr ) override;
     44                virtual Expression * mutate( AddressExpr *castExpr ) override;
     45                virtual Expression * mutate( CastExpr *castExpr ) override;
    4546                // virtual Expression * mutate( LogicalExpr *logicalExpr );
    4647                // virtual Expression * mutate( ConditionalExpr *conditionalExpr );
  • src/InitTweak/FixInit.cc

    r40744af8 rf51aefb  
    5050                const std::list<Expression*> noDesignators;
    5151
    52                 class InsertImplicitCalls : public GenPoly::PolyMutator {
     52                class InsertImplicitCalls final : public GenPoly::PolyMutator {
    5353                public:
    5454                        /// wrap function application expressions as ImplicitCopyCtorExpr nodes so that it is easy to identify which
     
    5656                        static void insert( std::list< Declaration * > & translationUnit );
    5757
    58                         virtual Expression * mutate( ApplicationExpr * appExpr );
    59                 };
    60 
    61                 class ResolveCopyCtors : public SymTab::Indexer {
     58                        using GenPoly::PolyMutator::mutate;
     59                        virtual Expression * mutate( ApplicationExpr * appExpr ) override;
     60                };
     61
     62                class ResolveCopyCtors final : public SymTab::Indexer {
    6263                public:
    6364                        /// generate temporary ObjectDecls for each argument and return value of each ImplicitCopyCtorExpr,
     
    6667                        static void resolveImplicitCalls( std::list< Declaration * > & translationUnit );
    6768
    68                         virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr );
     69                        using SymTab::Indexer::visit;
     70                        virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr ) override;
    6971
    7072                        /// create and resolve ctor/dtor expression: fname(var, [cpArg])
     
    8284                        using Parent::visit;
    8385                        typedef std::set< ObjectDecl * > ObjectSet;
    84                         virtual void visit( CompoundStmt *compoundStmt );
    85                         virtual void visit( DeclStmt *stmt );
     86                        virtual void visit( CompoundStmt *compoundStmt ) override;
     87                        virtual void visit( DeclStmt *stmt ) override;
    8688                  protected:
    8789                        ObjectSet curVars;
     
    103105                }
    104106
    105                 class LabelFinder : public ObjDeclCollector {
     107                class LabelFinder final : public ObjDeclCollector {
    106108                  public:
    107109                        typedef ObjDeclCollector Parent;
     
    117119                        // subclasses are added, there is only one place that the code has to be updated, rather than ensure that
    118120                        // every specialized class knows about every new kind of statement that might be added.
    119                         virtual void visit( CompoundStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    120                         virtual void visit( ExprStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    121                         virtual void visit( AsmStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    122                         virtual void visit( IfStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    123                         virtual void visit( WhileStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    124                         virtual void visit( ForStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    125                         virtual void visit( SwitchStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    126                         virtual void visit( CaseStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    127                         virtual void visit( BranchStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    128                         virtual void visit( ReturnStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    129                         virtual void visit( TryStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    130                         virtual void visit( CatchStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    131                         virtual void visit( FinallyStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    132                         virtual void visit( NullStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    133                         virtual void visit( DeclStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    134                         virtual void visit( ImplicitCtorDtorStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    135                 };
    136 
    137                 class InsertDtors : public ObjDeclCollector {
     121                        using Parent::visit;
     122                        virtual void visit( CompoundStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     123                        virtual void visit( ExprStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     124                        virtual void visit( AsmStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     125                        virtual void visit( IfStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     126                        virtual void visit( WhileStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     127                        virtual void visit( ForStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     128                        virtual void visit( SwitchStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     129                        virtual void visit( CaseStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     130                        virtual void visit( BranchStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     131                        virtual void visit( ReturnStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     132                        virtual void visit( TryStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     133                        virtual void visit( CatchStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     134                        virtual void visit( FinallyStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     135                        virtual void visit( NullStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     136                        virtual void visit( DeclStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     137                        virtual void visit( ImplicitCtorDtorStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     138                };
     139
     140                class InsertDtors final : public ObjDeclCollector {
    138141                public:
    139142                        /// insert destructor calls at the appropriate places.  must happen before CtorInit nodes are removed
     
    147150                        InsertDtors( LabelFinder & finder ) : labelVars( finder.vars ) {}
    148151
    149                         virtual void visit( ObjectDecl * objDecl );
    150 
    151                         virtual void visit( CompoundStmt * compoundStmt );
    152                         virtual void visit( ReturnStmt * returnStmt );
    153                         virtual void visit( BranchStmt * stmt );
     152                        using Parent::visit;
     153
     154                        virtual void visit( ObjectDecl * objDecl ) override;
     155
     156                        virtual void visit( CompoundStmt * compoundStmt ) override;
     157                        virtual void visit( ReturnStmt * returnStmt ) override;
     158                        virtual void visit( BranchStmt * stmt ) override;
    154159                private:
    155160                        void handleGoto( BranchStmt * stmt );
     
    159164                };
    160165
    161                 class FixInit : public GenPoly::PolyMutator {
     166                class FixInit final : public GenPoly::PolyMutator {
    162167                  public:
    163168                        /// expand each object declaration to use its constructor after it is declared.
    164169                        static void fixInitializers( std::list< Declaration * > &translationUnit );
    165170
    166                         virtual DeclarationWithType * mutate( ObjectDecl *objDecl );
     171                        using GenPoly::PolyMutator::mutate;
     172                        virtual DeclarationWithType * mutate( ObjectDecl *objDecl ) override;
    167173
    168174                        std::list< Declaration * > staticDtorDecls;
    169175                };
    170176
    171                 class FixCopyCtors : public GenPoly::PolyMutator {
     177                class FixCopyCtors final : public GenPoly::PolyMutator {
    172178                  public:
    173179                        /// expand ImplicitCopyCtorExpr nodes into the temporary declarations, copy constructors, call expression,
     
    175181                        static void fixCopyCtors( std::list< Declaration * > &translationUnit );
    176182
    177                         virtual Expression * mutate( ImplicitCopyCtorExpr * impCpCtorExpr );
    178                 };
    179 
    180                 class GenStructMemberCalls : public SymTab::Indexer {
     183                        using GenPoly::PolyMutator::mutate;
     184                        virtual Expression * mutate( ImplicitCopyCtorExpr * impCpCtorExpr ) override;
     185                };
     186
     187                class GenStructMemberCalls final : public SymTab::Indexer {
    181188                  public:
    182189                        typedef Indexer Parent;
     
    186193                        static void generate( std::list< Declaration * > & translationUnit );
    187194
    188                         virtual void visit( FunctionDecl * funcDecl );
    189 
    190                         virtual void visit( MemberExpr * memberExpr );
    191                         virtual void visit( ApplicationExpr * appExpr );
     195                        using Parent::visit;
     196
     197                        virtual void visit( FunctionDecl * funcDecl ) override;
     198
     199                        virtual void visit( MemberExpr * memberExpr ) override;
     200                        virtual void visit( ApplicationExpr * appExpr ) override;
    192201
    193202                        SemanticError errors;
     
    207216                // resolve UntypedExprs that are found within newly
    208217                // generated constructor/destructor calls
    209                 class MutatingResolver : public Mutator {
     218                class MutatingResolver final : public Mutator {
    210219                  public:
    211220                        MutatingResolver( SymTab::Indexer & indexer ) : indexer( indexer ) {}
    212221
    213                         virtual DeclarationWithType* mutate( ObjectDecl *objectDecl );
    214 
    215                         virtual Expression* mutate( UntypedExpr *untypedExpr );
    216                         private:
     222                        using Mutator::mutate;
     223                        virtual DeclarationWithType* mutate( ObjectDecl *objectDecl ) override;
     224                        virtual Expression* mutate( UntypedExpr *untypedExpr ) override;
     225
     226                  private:
    217227                        SymTab::Indexer & indexer;
    218228                };
    219229
    220                 class FixCtorExprs : public GenPoly::DeclMutator {
     230                class FixCtorExprs final : public GenPoly::DeclMutator {
    221231                  public:
    222232                        /// expands ConstructorExpr nodes into comma expressions, using a temporary for the first argument
    223233                        static void fix( std::list< Declaration * > & translationUnit );
    224234
    225                         virtual Expression * mutate( ConstructorExpr * ctorExpr );
     235                        using GenPoly::DeclMutator::mutate;
     236                        virtual Expression * mutate( ConstructorExpr * ctorExpr ) override;
    226237                };
    227238        } // namespace
  • src/InitTweak/GenInit.cc

    r40744af8 rf51aefb  
    3636        }
    3737
    38         class ReturnFixer : public GenPoly::PolyMutator {
     38        class ReturnFixer final : public GenPoly::PolyMutator {
    3939          public:
    4040                /// consistently allocates a temporary variable for the return value
     
    4545                ReturnFixer();
    4646
    47                 virtual DeclarationWithType * mutate( FunctionDecl *functionDecl );
    48 
    49                 virtual Statement * mutate( ReturnStmt * returnStmt );
     47                using GenPoly::PolyMutator::mutate;
     48                virtual DeclarationWithType * mutate( FunctionDecl *functionDecl ) override;
     49                virtual Statement * mutate( ReturnStmt * returnStmt ) override;
    5050
    5151          protected:
     
    5555        };
    5656
    57         class CtorDtor : public GenPoly::PolyMutator {
     57        class CtorDtor final : public GenPoly::PolyMutator {
    5858          public:
    5959                typedef GenPoly::PolyMutator Parent;
     
    6565                static void generateCtorDtor( std::list< Declaration * > &translationUnit );
    6666
    67                 virtual DeclarationWithType * mutate( ObjectDecl * );
    68                 virtual DeclarationWithType * mutate( FunctionDecl *functionDecl );
     67                virtual DeclarationWithType * mutate( ObjectDecl * ) override;
     68                virtual DeclarationWithType * mutate( FunctionDecl *functionDecl ) override;
    6969                // should not traverse into any of these declarations to find objects
    7070                // that need to be constructed or destructed
    71                 virtual Declaration* mutate( StructDecl *aggregateDecl );
    72                 virtual Declaration* mutate( UnionDecl *aggregateDecl ) { return aggregateDecl; }
    73                 virtual Declaration* mutate( EnumDecl *aggregateDecl ) { return aggregateDecl; }
    74                 virtual Declaration* mutate( TraitDecl *aggregateDecl ) { return aggregateDecl; }
    75                 virtual TypeDecl* mutate( TypeDecl *typeDecl ) { return typeDecl; }
    76                 virtual Declaration* mutate( TypedefDecl *typeDecl ) { return typeDecl; }
    77 
    78                 virtual Type * mutate( FunctionType *funcType ) { return funcType; }
    79 
    80                 virtual CompoundStmt * mutate( CompoundStmt * compoundStmt );
     71                virtual Declaration* mutate( StructDecl *aggregateDecl ) override;
     72                virtual Declaration* mutate( UnionDecl *aggregateDecl ) override { return aggregateDecl; }
     73                virtual Declaration* mutate( EnumDecl *aggregateDecl ) override { return aggregateDecl; }
     74                virtual Declaration* mutate( TraitDecl *aggregateDecl ) override { return aggregateDecl; }
     75                virtual TypeDecl* mutate( TypeDecl *typeDecl ) override { return typeDecl; }
     76                virtual Declaration* mutate( TypedefDecl *typeDecl ) override { return typeDecl; }
     77
     78                virtual Type * mutate( FunctionType *funcType ) override { return funcType; }
     79
     80                virtual CompoundStmt * mutate( CompoundStmt * compoundStmt ) override;
    8181
    8282          private:
     
    9191        };
    9292
    93         class HoistArrayDimension : public GenPoly::DeclMutator {
     93        class HoistArrayDimension final : public GenPoly::DeclMutator {
    9494          public:
    9595                typedef GenPoly::DeclMutator Parent;
     
    101101
    102102          private:
    103                 virtual DeclarationWithType * mutate( ObjectDecl * objectDecl );
    104                 virtual DeclarationWithType * mutate( FunctionDecl *functionDecl );
     103                using Parent::mutate;
     104
     105                virtual DeclarationWithType * mutate( ObjectDecl * objectDecl ) override;
     106                virtual DeclarationWithType * mutate( FunctionDecl *functionDecl ) override;
    105107                // should not traverse into any of these declarations to find objects
    106108                // that need to be constructed or destructed
    107                 virtual Declaration* mutate( StructDecl *aggregateDecl ) { return aggregateDecl; }
    108                 virtual Declaration* mutate( UnionDecl *aggregateDecl ) { return aggregateDecl; }
    109                 virtual Declaration* mutate( EnumDecl *aggregateDecl ) { return aggregateDecl; }
    110                 virtual Declaration* mutate( TraitDecl *aggregateDecl ) { return aggregateDecl; }
    111                 virtual TypeDecl* mutate( TypeDecl *typeDecl ) { return typeDecl; }
    112                 virtual Declaration* mutate( TypedefDecl *typeDecl ) { return typeDecl; }
    113 
    114                 virtual Type* mutate( FunctionType *funcType ) { return funcType; }
     109                virtual Declaration* mutate( StructDecl *aggregateDecl ) override { return aggregateDecl; }
     110                virtual Declaration* mutate( UnionDecl *aggregateDecl ) override { return aggregateDecl; }
     111                virtual Declaration* mutate( EnumDecl *aggregateDecl ) override { return aggregateDecl; }
     112                virtual Declaration* mutate( TraitDecl *aggregateDecl ) override { return aggregateDecl; }
     113                virtual TypeDecl* mutate( TypeDecl *typeDecl ) override { return typeDecl; }
     114                virtual Declaration* mutate( TypedefDecl *typeDecl ) override { return typeDecl; }
     115
     116                virtual Type* mutate( FunctionType *funcType ) override { return funcType; }
    115117
    116118                void hoist( Type * type );
  • src/InitTweak/InitTweak.h

    r40744af8 rf51aefb  
    100100
    101101                class ExpanderImpl;
     102                typedef std::list< Expression * > IndexList;
    102103        private:
    103104                std::shared_ptr< ExpanderImpl > expander;
     
    105106
    106107                // invariant: list of size 2N (elements come in pairs [index, dimension])
    107                 typedef std::list< Expression * > IndexList;
    108108                IndexList indices;
    109109        };
  • src/Makefile.am

    r40744af8 rf51aefb  
    66## file "LICENCE" distributed with Cforall.
    77##
    8 ## Makefile.am -- 
     8## Makefile.am --
    99##
    1010## Author           : Peter A. Buhr
    1111## Created On       : Sun May 31 08:51:46 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Sat Sep 24 15:03:52 2016
    14 ## Update Count     : 73
     13## Last Modified On : Thu Oct 27 20:41:25 2016
     14## Update Count     : 75
    1515###############################################################################
    1616
     
    4141driver_cfa_cpp_SOURCES = ${SRC}
    4242driver_cfa_cpp_LDADD = ${LEXLIB} -ldl                   # yywrap
    43 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -rdynamic -I${abs_top_srcdir}/src/include
     43driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT
     44driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic
    4445
    4546MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}}
  • src/Makefile.in

    r40744af8 rf51aefb  
    197197driver_cfa_cpp_DEPENDENCIES = $(am__DEPENDENCIES_1)
    198198driver_cfa_cpp_LINK = $(CXXLD) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) \
    199         $(AM_LDFLAGS) $(LDFLAGS) -o $@
     199        $(driver_cfa_cpp_LDFLAGS) $(LDFLAGS) -o $@
    200200DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    201201depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
     
    417417driver_cfa_cpp_SOURCES = ${SRC}
    418418driver_cfa_cpp_LDADD = ${LEXLIB} -ldl                   # yywrap
    419 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -rdynamic -I${abs_top_srcdir}/src/include
     419driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT
     420driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic
    420421all: $(BUILT_SOURCES)
    421422        $(MAKE) $(AM_MAKEFLAGS) all-am
  • src/Parser/DeclarationNode.cc

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Sep 26 22:18:40 2016
    13 // Update Count     : 640
     12// Last Modified On : Mon Oct  3 18:03:08 2016
     13// Update Count     : 651
    1414//
    1515
     
    5656                extension( false ) {
    5757
    58         variable.name = nullptr;
    59         variable.tyClass = DeclarationNode::Otype;
     58//      variable.name = nullptr;
     59        variable.tyClass = NoTypeClass;
    6060        variable.assertions = nullptr;
    6161
    62         attr.name = nullptr;
     62//      attr.name = nullptr;
    6363        attr.expr = nullptr;
    6464        attr.type = nullptr;
     
    6666
    6767DeclarationNode::~DeclarationNode() {
    68         delete attr.name;
     68//      delete attr.name;
    6969        delete attr.expr;
    7070        delete attr.type;
    7171
    72         delete variable.name;
     72//      delete variable.name;
    7373        delete variable.assertions;
    7474
     
    9191        newnode->linkage = linkage;
    9292
    93         newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
     93//      newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
    9494        newnode->variable.tyClass = variable.tyClass;
    9595        newnode->variable.assertions = maybeClone( variable.assertions );
    9696
    97         newnode->attr.name = attr.name ? new string( *attr.name ) : nullptr;
     97//      newnode->attr.name = attr.name ? new string( *attr.name ) : nullptr;
    9898        newnode->attr.expr = maybeClone( attr.expr );
    9999        newnode->attr.type = maybeClone( attr.type );
     
    114114
    115115        if ( linkage != LinkageSpec::Cforall ) {
    116                 os << LinkageSpec::toString( linkage ) << " ";
     116                os << LinkageSpec::linkageName( linkage ) << " ";
    117117        } // if
    118118
     
    283283        DeclarationNode * newnode = new DeclarationNode;
    284284        newnode->type = nullptr;
     285        assert( ! newnode->name );
     286//      newnode->variable.name = name;
     287        newnode->name = name;
    285288        newnode->variable.tyClass = tc;
    286         newnode->variable.name = name;
     289        newnode->variable.assertions = nullptr;
    287290        return newnode;
    288291} // DeclarationNode::newTypeParam
     
    375378        DeclarationNode * newnode = new DeclarationNode;
    376379        newnode->type = nullptr;
    377         newnode->attr.name = name;
     380//      newnode->attr.name = name;
     381        newnode->name = name;
    378382        newnode->attr.expr = expr;
    379383        return newnode;
     
    383387        DeclarationNode * newnode = new DeclarationNode;
    384388        newnode->type = nullptr;
    385         newnode->attr.name = name;
     389//      newnode->attr.name = name;
     390        newnode->name = name;
    386391        newnode->attr.type = type;
    387392        return newnode;
     
    604609
    605610DeclarationNode * DeclarationNode::addAssertions( DeclarationNode * assertions ) {
    606         if ( variable.name ) {
     611        if ( variable.tyClass != NoTypeClass ) {
    607612                if ( variable.assertions ) {
    608613                        variable.assertions->appendList( assertions );
     
    622627                } // if
    623628                break;
    624           // case TypeData::Variable:
    625           //    if ( variable.assertions ) {
    626           //            variable.assertions->appendList( assertions );
    627           //    } else {
    628           //            variable.assertions = assertions;
    629           //    } // if
    630           //    break;
    631629          default:
    632630                assert( false );
     
    938936        if ( ! error.empty() ) throw SemanticError( error + " in declaration of ", this );
    939937
    940         if ( variable.name ) {
     938//      if ( variable.name ) {
     939        if ( variable.tyClass != NoTypeClass ) {
    941940                static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
    942                 TypeDecl * ret = new TypeDecl( *variable.name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
     941//              TypeDecl * ret = new TypeDecl( *variable.name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
     942                TypeDecl * ret = new TypeDecl( *name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
    943943                buildList( variable.assertions, ret->get_assertions() );
    944944                return ret;
     
    960960        assert( type );
    961961
    962         if ( attr.name ) {
    963                 AttrType * ret;
    964                 if ( attr.expr ) {
    965                         ret = new AttrType( buildQualifiers( type ), *attr.name, attr.expr->build() );
    966                 } else {
    967                         assert( attr.type );
    968                         ret = new AttrType( buildQualifiers( type ), *attr.name, attr.type->buildType() );
    969                 } // if
    970                 return ret;
     962        if ( attr.expr ) {
     963//              return new AttrType( buildQualifiers( type ), *attr.name, attr.expr->build() );
     964                return new AttrType( buildQualifiers( type ), *name, attr.expr->build() );
     965        } else if ( attr.type ) {
     966//              return new AttrType( buildQualifiers( type ), *attr.name, attr.type->buildType() );
     967                return new AttrType( buildQualifiers( type ), *name, attr.type->buildType() );
    971968        } // if
    972969
  • src/Parser/InitializerNode.cc

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 13:20:24 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 18:27:02 2016
    13 // Update Count     : 20
     12// Last Modified On : Sat Oct  1 23:09:51 2016
     13// Update Count     : 21
    1414//
    1515
     
    2323
    2424InitializerNode::InitializerNode( ExpressionNode *_expr, bool aggrp, ExpressionNode *des )
    25         : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
     25                : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    2626        if ( aggrp )
    2727                kids = dynamic_cast< InitializerNode * >( get_next() );
     
    3232
    3333InitializerNode::InitializerNode( InitializerNode *init, bool aggrp, ExpressionNode *des )
    34         : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
     34                : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    3535        if ( init != 0 )
    3636                set_last( init );
     
    7979
    8080Initializer *InitializerNode::build() const {
    81         // if ( get_expression() == 0 ) return 0;  // XXX (?)
    82 
    8381        if ( aggregate ) {
    84                 //assert( next_init() != 0 );
    85 
    8682                std::list< Initializer * > initlist;
    8783                buildList< Initializer, InitializerNode >( next_init(), initlist );
  • src/Parser/LinkageSpec.cc

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 13:22:09 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug 21 12:32:53 2016
    13 // Update Count     : 17
     12// Last Modified On : Sun Oct  2 23:16:21 2016
     13// Update Count     : 23
    1414//
    1515
     
    1717#include <string>
    1818#include <cassert>
     19using namespace std;
    1920
    2021#include "LinkageSpec.h"
    2122#include "Common/SemanticError.h"
    2223
    23 LinkageSpec::Spec LinkageSpec::fromString( const std::string &spec ) {
    24         std::unique_ptr<const std::string> guard(&spec);                // allocated by lexer
    25         if ( spec == "\"Cforall\"" ) {
     24LinkageSpec::Spec LinkageSpec::linkageCheck( const string * spec ) {
     25        unique_ptr<const string> guard( spec ); // allocated by lexer
     26        if ( *spec == "\"Cforall\"" ) {
    2627                return Cforall;
    27         } else if ( spec == "\"C\"" ) {
     28        } else if ( *spec == "\"C\"" ) {
    2829                return C;
    2930        } else {
    30                 throw SemanticError( "Invalid linkage specifier " + spec );
     31                throw SemanticError( "Invalid linkage specifier " + *spec );
    3132        } // if
    3233}
    3334
    34 std::string LinkageSpec::toString( LinkageSpec::Spec linkage ) {
    35         assert( linkage >= 0 && linkage < LinkageSpec::NoOfSpecs );
     35string LinkageSpec::linkageName( LinkageSpec::Spec linkage ) {
     36        assert( 0 <= linkage && linkage < LinkageSpec::NoOfSpecs );
    3637        static const char *linkageKinds[LinkageSpec::NoOfSpecs] = {
    3738                "intrinsic", "Cforall", "C", "automatically generated", "compiler built-in",
     
    4142
    4243bool LinkageSpec::isDecoratable( Spec spec ) {
    43         assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs );
     44        assert( 0 <= spec && spec < LinkageSpec::NoOfSpecs );
    4445        static bool decoratable[LinkageSpec::NoOfSpecs] = {
    4546                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     
    5051
    5152bool LinkageSpec::isGeneratable( Spec spec ) {
    52         assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs );
     53        assert( 0 <= spec && spec < LinkageSpec::NoOfSpecs );
    5354        static bool generatable[LinkageSpec::NoOfSpecs] = {
    5455                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
  • src/Parser/LinkageSpec.h

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 13:24:28 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 20 19:22:23 2016
    13 // Update Count     : 8
     12// Last Modified On : Sat Oct  1 23:03:17 2016
     13// Update Count     : 11
    1414//
    1515
     
    2929        };
    3030 
    31         static Spec fromString( const std::string & );
    32         static std::string toString( Spec );
     31        static Spec linkageCheck( const std::string * );
     32        static std::string linkageName( Spec );
    3333 
    3434        static bool isDecoratable( Spec );
  • src/Parser/ParseNode.cc

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Aug 17 23:14:16 2016
    13 // Update Count     : 126
     12// Last Modified On : Sat Oct  1 23:10:43 2016
     13// Update Count     : 127
    1414//
    1515
     
    2020
    2121std::ostream & operator<<( std::ostream & out, const ParseNode * node ) {
    22   node->print( out );
    23   return out;
     22        node->print( out );
     23        return out;
    2424}
    2525
  • src/Parser/ParseNode.h

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Sep 24 11:12:04 2016
    13 // Update Count     : 633
     12// Last Modified On : Mon Oct  3 18:03:08 2016
     13// Update Count     : 636
    1414//
    1515
     
    109109        ExpressionNode * set_extension( bool exten ) { extension = exten; return this; }
    110110
    111         void print( std::ostream &os, int indent = 0 ) const {}
     111        virtual void print( std::ostream &os, int indent = 0 ) const override {}
    112112        void printOneLine( std::ostream &os, int indent = 0 ) const {}
    113113
     
    187187//##############################################################################
    188188
    189 class TypeData;
     189struct TypeData;
    190190
    191191class DeclarationNode : public ParseNode {
     
    198198        enum Signedness { Signed, Unsigned, NoSignedness };
    199199        enum Length { Short, Long, LongLong, NoLength };
    200         enum Aggregate { Struct, Union, Trait };
    201         enum TypeClass { Otype, Dtype, Ftype };
     200        enum Aggregate { Struct, Union, Trait, NoAggregate };
     201        enum TypeClass { Otype, Dtype, Ftype, NoTypeClass };
    202202        enum BuiltinType { Valist };
    203203
     
    271271        }
    272272
    273         void print( std::ostream &os, int indent = 0 ) const;
    274         void printList( std::ostream &os, int indent = 0 ) const;
     273        virtual void print( std::ostream &os, int indent = 0 ) const override;
     274        virtual void printList( std::ostream &os, int indent = 0 ) const override;
    275275
    276276        Declaration * build() const;
     
    287287  public:
    288288        struct Variable_t {
    289                 const std::string * name;
     289//              const std::string * name;
    290290                DeclarationNode::TypeClass tyClass;
    291291                DeclarationNode * assertions;
     
    294294
    295295        struct Attr_t {
    296                 const std::string * name;
     296//              const std::string * name;
    297297                ExpressionNode * expr;
    298298                DeclarationNode * type;
     
    345345        virtual StatementNode * append_last_case( StatementNode * );
    346346
    347         virtual void print( std::ostream &os, int indent = 0 ) {}
    348         virtual void printList( std::ostream &os, int indent = 0 ) {}
     347        virtual void print( std::ostream &os, int indent = 0 ) const override {}
     348        virtual void printList( std::ostream &os, int indent = 0 ) const override {}
    349349  private:
    350350        std::unique_ptr<Statement> stmt;
  • src/Parser/TypeData.h

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Sep 24 11:10:38 2016
    13 // Update Count     : 141
     12// Last Modified On : Mon Oct  3 12:34:08 2016
     13// Update Count     : 142
    1414//
    1515
     
    2323
    2424struct TypeData {
    25         enum Kind { Unknown, Basic, Pointer, Array, Function, Aggregate, AggregateInst,
    26                                 Enum, EnumConstant, Symbolic, SymbolicInst, Tuple, Typeof, Builtin };
     25        enum Kind { Basic, Pointer, Array, Function, Aggregate, AggregateInst, Enum, EnumConstant, Symbolic,
     26                                SymbolicInst, Tuple, Typeof, Builtin, Unknown };
    2727
    2828        struct Aggregate_t {
  • src/Parser/lex.cc

    r40744af8 rf51aefb  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 181
    385 #define YY_END_OF_BUFFER 182
     384#define YY_NUM_RULES 183
     385#define YY_END_OF_BUFFER 184
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[892] =
     393static yyconst flex_int16_t yy_accept[895] =
    394394    {   0,
    395         0,    0,    0,    0,    0,    0,  116,  116,  119,  119,
    396       182,  180,    7,    9,    8,  139,  118,  103,  144,  147,
    397       115,  126,  127,  142,  140,  130,  141,  133,  143,  108,
    398       109,  110,  131,  132,  149,  151,  150,  152,  180,  103,
    399       124,  180,  125,  145,  103,  105,  103,  103,  103,  103,
     395        0,    0,    0,    0,    0,    0,  118,  118,  121,  121,
     396      184,  182,    7,    9,    8,  141,  120,  103,  146,  149,
     397      117,  128,  129,  144,  142,  132,  143,  135,  145,  108,
     398      109,  110,  133,  134,  151,  153,  152,  154,  182,  103,
     399      126,  182,  127,  147,  103,  105,  103,  103,  103,  103,
    400400      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    401       103,  103,  128,  148,  129,  146,    7,  180,    4,    4,
    402       181,  106,  181,  107,  116,  117,  123,  119,  120,    7,
    403         9,    0,    8,  156,  175,  103,    0,  168,  138,  161,
    404       169,  166,  153,  164,  154,  165,  163,    0,  113,    3,
    405 
    406         0,  167,  113,  111,    0,    0,  111,  111,    0,    0,
    407       111,  110,  110,  110,    0,  110,  136,  137,  135,  157,
    408       159,  155,  160,  158,    0,    0,    0,    0,    0,    0,
     401      103,  103,  130,  150,  131,  148,    7,  182,    4,    4,
     402      183,  106,  183,  107,  118,  119,  125,  121,  122,    7,
     403        9,    0,    8,  158,  177,  103,    0,  170,  140,  163,
     404      171,  168,  155,  166,  156,  167,  165,    0,  114,    3,
     405
     406        0,  169,  113,  111,    0,    0,  111,  111,    0,    0,
     407      111,  110,  110,  110,    0,  110,  138,  139,  137,  159,
     408      161,  157,  162,  160,    0,    0,    0,    0,    0,    0,
    409409        0,    0,    0,    0,    0,    0,    0,    0,    0,  104,
    410       174,    0,  118,  115,  103,    0,    0,  171,    0,  103,
     410      176,    0,  120,  117,  103,    0,    0,  173,    0,  103,
    411411      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    412412      103,  103,  103,  103,  103,  103,   38,  103,  103,  103,
    413413      103,  103,  103,  103,  103,  103,  103,   57,  103,  103,
    414414      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    415       103,  103,  103,  103,  170,  162,    7,    0,    0,    0,
    416 
    417         2,    0,    5,  106,    0,    0,    0,  116,    0,  122,
    418       121,  121,    0,    0,    0,  119,    0,    0,    0,    0,
     415      103,  103,  103,  103,  172,  164,    7,    0,    0,    0,
     416
     417        2,    0,    5,  106,    0,    0,    0,  118,    0,  124,
     418      123,  123,    0,    0,    0,  121,    0,    0,    0,    0,
    419419        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    420         0,  134,  113,  113,    0,  113,  113,    0,    0,    6,
    421         0,  111,    0,    0,    0,  113,    0,  111,  111,  111,
     420        0,  136,  114,  115,    0,  115,  115,    0,    0,    6,
     421      115,  111,    0,    0,    0,  115,    0,  111,  111,  111,
    422422      111,    0,  112,    0,    0,  110,  110,  110,  110,    0,
    423       172,  173,    0,  178,  176,    0,    0,    0,  104,    0,
     423      174,  175,    0,  180,  178,    0,    0,    0,  104,    0,
    424424        0,    0,    0,    0,    0,    0,    0,  103,   17,  103,
    425425      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     
    431431      103,  103,  103,  103,  103,   90,  103,  103,  103,  103,
    432432      103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
    433         0,  121,    0,    0,    0,    0,    0,  121,    0,    0,
    434       179,    0,    0,    0,    0,    0,    0,    0,  113,    0,
    435       113,    0,  113,    0,    0,  113,    0,  111,  111,    0,
    436         0,  112,  112,    0,  112,    0,  112,  110,  110,    0,
    437         0,    0,    0,    0,    0,    0,    0,    0,    0,  177,
    438 
     433        0,  123,    0,    0,    0,    0,    0,  123,    0,    0,
     434      181,    0,    0,    0,    0,    0,    0,    0,  115,    0,
     435      115,    0,  115,    0,  115,    0,    0,  115,    0,  111,
     436      111,    0,    0,  112,  112,    0,  112,    0,  112,  110,
     437      110,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     438
     439        0,  179,  103,  103,  103,  103,  103,  103,  103,  103,
    439440      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     441      103,  103,  103,  103,  103,   21,  103,   24,  103,   27,
     442      103,  103,  103,  103,  103,  103,  103,   41,  103,   43,
     443      103,  103,  103,  103,  103,  103,  103,   56,  103,   67,
    440444      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    441       103,  103,  103,   21,  103,   24,  103,   27,  103,  103,
    442       103,  103,  103,  103,  103,   41,  103,   43,  103,  103,
    443       103,  103,  103,  103,  103,   56,  103,   67,  103,  103,
     445      103,  103,  103,  103,  103,  103,   98,  103,  103,    0,
     446        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     447        0,    0,    0,  123,    0,    0,    0,    0,    0,  115,
     448        0,    0,    0,    0,    0,    0,    0,  112,  112,    0,
     449
     450      116,    0,  112,  112,    0,    0,    0,    0,    0,    0,
     451        0,    0,    0,    0,    0,    0,    0,  103,  103,   22,
     452      103,  103,  103,  103,  103,  103,  103,   15,  103,  103,
    444453      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    445       103,  103,  103,  103,   98,  103,  103,    0,    0,    0,
     454      103,  103,   23,   25,  103,   32,  103,  103,  103,  103,
     455       40,  103,  103,  103,  103,   49,  103,  103,   54,  103,
     456      103,   71,  103,  103,  103,   77,  103,  103,  103,  103,
     457      103,   87,   89,  103,  103,   95,  103,  103,  102,    0,
    446458        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    447         0,  121,    0,    0,    0,    0,    0,  113,    0,    0,
    448         0,    0,    0,    0,  112,  112,    0,  114,    0,  112,
    449 
    450       112,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    451         0,    0,    0,    0,  103,  103,   22,  103,  103,  103,
    452       103,  103,  103,  103,   15,  103,  103,  103,  103,  103,
    453       103,  103,  103,  103,  103,  103,  103,  103,  103,   23,
    454        25,  103,   32,  103,  103,  103,  103,   40,  103,  103,
    455       103,  103,   49,  103,  103,   54,  103,  103,   71,  103,
    456       103,  103,   77,  103,  103,  103,  103,  103,   87,   89,
    457       103,  103,   95,  103,  103,  102,    0,    0,    0,    0,
     459        0,    0,    0,    0,    0,    0,    0,    0,  116,    0,
     460
     461        0,  112,  116,  116,  116,  116,    0,  112,    0,    0,
     462        0,    0,    0,    0,    0,    0,    0,    0,  103,    0,
     463      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     464      103,  103,  103,  103,  103,  103,   59,  103,  103,  103,
     465      103,  103,  103,  103,  103,   28,  103,  103,  103,   39,
     466       42,   45,  103,  103,   52,  103,   61,   68,  103,  103,
     467       76,   78,   81,   82,   84,   85,  103,  103,   92,  103,
     468      103,    0,    1,    0,    0,    0,    0,    0,    0,  106,
     469        0,    0,    0,  123,    0,    0,    0,    0,  116,    0,
     470      116,  116,    0,    0,    0,    0,    0,    0,    0,    0,
     471
     472        0,  103,  103,   18,  103,  103,  103,  103,  103,  103,
     473      103,   16,  103,  103,  103,   33,  103,  103,  103,  103,
     474      103,  103,  103,  103,  103,  103,  103,  103,   36,   37,
     475      103,   48,   53,  103,  103,  103,   91,  103,  103,    0,
    458476        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    459         0,    0,    0,    0,    0,  114,    0,    0,  112,  114,
    460 
    461       114,  114,  114,    0,  112,    0,    0,    0,    0,    0,
    462         0,    0,    0,    0,    0,  103,    0,  103,  103,  103,
    463       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    464       103,  103,  103,   59,  103,  103,  103,  103,  103,  103,
    465       103,  103,   28,  103,  103,  103,   39,   42,   45,  103,
    466       103,   52,  103,   61,   68,  103,  103,   76,   78,   81,
    467        82,   84,   85,  103,  103,   92,  103,  103,    0,    1,
    468         0,    0,    0,    0,    0,    0,  106,    0,    0,    0,
    469       121,    0,    0,    0,    0,  114,    0,  114,  114,    0,
    470         0,    0,    0,    0,    0,    0,    0,    0,  103,  103,
    471 
    472        18,  103,  103,  103,  103,  103,  103,  103,   16,  103,
    473       103,  103,   33,  103,  103,  103,  103,  103,  103,  103,
    474       103,  103,  103,  103,  103,   36,   37,  103,   48,   53,
    475       103,  103,  103,   91,  103,  103,    0,    0,    0,    0,
    476         0,    0,    0,    0,    0,    0,    0,    0,    0,   10,
    477        11,   29,   55,  103,  103,  103,  103,  103,  103,  103,
    478       103,  103,  103,  103,   60,   62,   65,  103,  103,   79,
    479        93,  103,  103,   35,  103,   47,   72,   73,  103,   96,
    480        99,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    481         0,    0,    0,  103,   69,  103,  103,   12,  103,  103,
    482 
    483        30,   34,  103,  103,  103,   66,  103,  103,  103,  103,
    484       103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
    485         0,    0,    0,    0,    0,    0,   58,  103,  103,  103,
    486       103,  103,  103,  103,   50,   63,   74,   80,   94,  100,
    487       103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
    488         0,  103,  103,   13,   19,  103,  103,   31,  103,  103,
    489       103,   26,   46,   88,    0,    0,  103,  103,  103,  103,
    490       103,  103,   75,  101,  103,   86,   20,  103,  103,   44,
    491        83,  103,  103,  103,  103,  103,  103,  103,   97,   70,
    492         0
     477        0,    0,   10,   11,   29,   55,  103,  103,  103,  103,
     478      103,  103,  103,  103,  103,  103,  103,   60,   62,   65,
     479      103,  103,   79,   93,  103,  103,   35,  103,   47,   72,
     480       73,  103,   96,   99,    0,    0,    0,    0,    0,    0,
     481        0,    0,    0,    0,    0,    0,  103,   69,  103,  103,
     482
     483       12,  103,  103,   30,   34,  103,  103,  103,   66,  103,
     484      103,  103,  103,  103,  103,  103,    0,    0,    0,    0,
     485        0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
     486      103,  103,  103,  103,  103,  103,  103,   50,   63,   74,
     487       80,   94,  100,  103,  103,  103,    0,    0,    0,    0,
     488        0,    0,    0,    0,  103,  103,   13,   19,  103,  103,
     489       31,  103,  103,  103,   26,   46,   88,    0,    0,  103,
     490      103,  103,  103,  103,  103,   75,  101,  103,   86,   20,
     491      103,  103,   44,   83,  103,  103,  103,  103,  103,  103,
     492      103,   97,   70,    0
    493493
    494494    } ;
     
    539539    } ;
    540540
    541 static yyconst flex_int16_t yy_base[1066] =
     541static yyconst flex_int16_t yy_base[1069] =
    542542    {   0,
    543         0,   84, 2285, 2282,   94,    0,  177,  178,  179,  180,
    544      2298, 2825,  191, 2825,  197,   55, 2825, 2244,   60,  173,
    545      2825, 2825, 2825,   56,  188, 2825,  191,  189,  204,  216,
    546       275,    0, 2262, 2825,  216, 2260,  152,  344,  155,  220,
    547      2825,  159, 2825,  217,  226, 2825,  185,  154,  212,  251,
     543        0,   84, 2307, 2305,   94,    0,  177,  178,  179,  180,
     544     2319, 2845,  191, 2845,  197,   55, 2845, 2265,   60,  173,
     545     2845, 2845, 2845,   56,  188, 2845,  191,  189,  204,  216,
     546      275,    0, 2284, 2845,  216, 2283,  152,  344,  155,  220,
     547     2845,  159, 2845,  217,  226, 2845,  185,  154,  212,  251,
    548548      237,  270,  235,  257,  241,  205,  193,  305,  314,  333,
    549       238,  228, 2825,  225, 2825, 2255,  402,  390, 2825, 2266,
    550      2825, 2234,  235, 2825,    0, 2825,  426,    0, 2825,  417,
    551      2825,  439,  451, 2825,  498, 2232,  264, 2825, 2825, 2825,
    552      2825, 2825, 2248, 2825, 2245, 2825, 2825, 2257,  559, 2825,
    553 
    554      2274, 2825,  438,  444,  511,  534,  289,  253,  197,  380,
    555       305,    0,  319,  280,  198,  322, 2825, 2825, 2825, 2243,
    556      2825, 2825, 2825, 2240, 2237,  218,  255, 2252,  298,  350,
    557       368,  312,  440,  398,  405, 2233,  441, 2181,  446, 2209,
    558      2825,  335, 2825, 2825,  468, 2203, 2202, 2825, 2175,  439,
     549      238,  228, 2845,  225, 2845, 2278,  402,  390, 2845, 2287,
     550     2845, 2255,  235, 2845,    0, 2845,  426,    0, 2845,  417,
     551     2845,  439,  451, 2845,  498, 2254,  264, 2845, 2845, 2845,
     552     2845, 2845, 2271, 2845, 2268, 2845, 2845, 2278,  559, 2845,
     553
     554     2295, 2845,  438,  444,  511,  534,  289,  253,  197,  380,
     555      305,    0,  319,  280,  198,  322, 2845, 2845, 2845, 2265,
     556     2845, 2845, 2845, 2263, 2260,  218,  255, 2273,  298,  350,
     557      368,  312,  440,  398,  405, 2254,  441, 2203,  446, 2232,
     558     2845,  335, 2845, 2845,  468, 2226, 2223, 2845, 2196,  439,
    559559      282,  433,  372,  281,  437,  434,  428,  570,  444,  466,
    560560      464,  469,  475,  321,  492,  438,  471,  445,  474,  512,
    561       489,  503,  496,  521,  276,  515,  516, 2202,  526,  510,
     561      489,  503,  496,  521,  276,  515,  516, 2224,  526,  510,
    562562      519,  525,  543,  522,  560,  553,  523,  561,  551,  544,
    563       599,  582,  593,  584, 2825, 2825,  660,  651, 2249,  666,
    564 
    565      2825,  678, 2825, 2196,  607, 2192, 2191,    0,  693, 2825,
    566      2825,  684, 2189, 2186, 2183,    0, 2206,  578,  608,  617,
    567       654,  679,  650,  683,  684,  687, 2203,  690,  691, 2179,
    568      2159, 2825,    0,  683,  710,  686,  700, 2157, 2209, 2825,
    569       714,    0,  427,  746,  764,  786,  808,  621, 2825, 2165,
    570      2138,    0,  794, 2184,  795,  709, 2825, 2160, 2134,  832,
    571      2825, 2825, 2165, 2825, 2825,  711,  714, 2142, 2142,  717,
    572      2138, 2136, 2133,    0, 2130,    0, 2101,  694,  679,  712,
    573       709,  711,  698,  566,  726,  743,  771,  741,  790,  784,
    574       800,  795,  742,  744,  814,  816,  818, 2131,  819,  745,
    575 
    576       820,  821,  822,  823,  824,  746,  825,  748,  659,  831,
    577       826,  833,  838,  839,  848,  850,  851,  844,  834,  857,
    578      2129,  858,  859,  860,  862,  861,  864,  865,  867,  868,
    579       866,  871,  876,  872,  878, 2126,  880,  689,  881,  882,
    580       892,  896,  893,  953,  954, 2120, 2119, 2118,    0, 2116,
    581         0,  941,  945, 2113,    0, 2112,    0, 2111,    0, 2131,
    582      2825,  940,  941, 2108, 2105,    0, 2104,    0, 2825,  953,
    583       975,  964, 2825,  981,  997, 1021, 2102, 2825, 2825,  939,
    584       940, 1006,  982, 1041,  310, 1039, 1004, 2825, 2825, 2099,
    585      2095, 2091,    0, 2089,    0, 2087,    0, 2084,    0, 2825,
    586 
    587       886,  941,  960,  962,  977,  976,  980,  982, 1017, 1010,
    588      1002,  998, 1022, 1031, 1028, 1033, 1034, 1037, 1040, 1043,
    589      1038, 1041, 1053, 2085, 1055, 2083, 1045, 2080, 1056, 1061,
    590      1063, 1065, 1066, 1067, 1070, 2077, 1071, 2076, 1073, 1074,
    591      1075, 1078, 1080, 1081, 1085, 2075, 1087, 2073, 1084, 1089,
    592      1091, 1097, 1099, 1092, 1102, 1103, 1105, 1106, 1108,  905,
    593      1109, 1116, 1110, 1122, 2070, 1120, 1123, 1179, 2064,    0,
    594      2063,    0, 2062,    0, 2060,    0, 1166, 2057,    0, 2054,
    595         0, 2053, 2052, 2050,    0, 2047,    0, 1173, 2044, 1179,
    596      1137, 1195, 1181, 1178, 1176, 2825, 1219, 1231, 1253, 2055,
    597 
    598      2030, 2040, 2037,    0, 2034,    0, 2033,    0, 2032,    0,
    599      2030,    0, 2027,    0, 1141, 1172, 2027, 1180, 1155, 1196,
    600      1157, 1216, 1207, 1231, 1125, 1210, 1232, 1214, 1187, 1236,
    601      1235, 1237, 1238, 1272, 1249, 1252, 1250, 1253, 1254, 2026,
    602      1261, 1256, 2025, 1260, 1263, 1264, 1257, 2023, 1271, 1268,
    603      1269, 1273, 2020, 1275, 1282, 2017, 1283, 1284, 2016, 1276,
    604      1286, 1289, 2015, 1294, 1291, 1296, 1295, 1297, 1310, 2013,
    605      1305, 1308, 2010, 1307, 1300, 2009, 2058, 2003,    0, 2000,
    606         0, 1999,    0, 1998,    0, 1996,    0, 1963,    0, 1961,
    607         0, 1960,    0, 1355, 1361, 1389, 1372, 1957, 2825, 1378,
    608 
    609      1325, 1365, 1379, 1954, 2825, 1953,    0, 1952,    0, 1950,
    610         0, 1947,    0,    0,    0, 1947,    0, 1366, 1312, 1311,
    611      1341, 1323, 1368, 1369, 1374, 1356, 1383, 1372, 1388, 1390,
    612      1393, 1395, 1396, 1398, 1400, 1431, 1406, 1407, 1411, 1408,
    613      1413, 1414, 1946, 1409, 1416, 1419, 1945, 1943, 1940, 1422,
    614      1424, 1939, 1429, 1938, 1936, 1425, 1430, 1933, 1932, 1931,
    615      1929, 1926, 1922, 1436, 1433, 1918, 1439, 1440, 1964, 2825,
    616      1895,    0, 1894,    0,    0,    0, 1896,    0,    0,    0,
    617      2825,    0,    0,    0,    0, 1486, 1891, 2825, 2825, 1492,
    618      1888,    0, 1887,    0,    0,    0,    0, 1886, 1447, 1444,
    619 
    620      1887, 1449, 1471, 1479, 1450, 1480, 1482, 1469, 1884, 1486,
    621      1490, 1488, 1502, 1452, 1510, 1504, 1491, 1519, 1506, 1498,
    622      1508, 1512, 1513, 1514, 1515, 1883, 1882, 1518, 1880, 1877,
    623      1517, 1520, 1523, 1876, 1521, 1525,    0,    0,    0, 1872,
    624      1870, 1867, 1575,    0, 1866, 1865, 1863, 1860, 1859, 1861,
    625      1859, 1856, 1855, 1531, 1538, 1527, 1528, 1530, 1533, 1552,
    626      1539, 1554, 1553, 1586, 1854, 1559, 1852, 1560, 1561, 1564,
    627      1570, 1572, 1571, 1849, 1574, 1848, 1847, 1845, 1575, 1842,
    628      1841, 1837, 1835, 1828, 1826, 1825, 1822, 1821, 1820, 1818,
    629      1801, 1792, 1791, 1576, 1791, 1579, 1577, 1580, 1582, 1581,
    630 
    631      1585, 1784, 1589, 1616, 1593, 1781, 1591, 1599, 1605, 1592,
    632      1606, 1609, 1610, 1771, 1769, 1768, 1747, 1746, 1745, 1738,
    633      1736, 1735, 1693, 1689, 1688, 1687, 1689, 1611, 1612, 1614,
    634      1615, 1618, 1625, 1621, 1686, 1683, 1627, 1682, 1681, 1631,
    635      1635, 1441, 1637, 1677, 1674, 1354, 1319, 1318, 1267, 1212,
    636      1210, 1639, 1640, 1211, 1647, 1623, 1649, 1178, 1652, 1653,
    637      1657, 1177, 1126,  964,  937,  903, 1641, 1643, 1659, 1663,
    638      1664, 1665,  788,  752, 1629,  607,  487, 1666, 1669,  394,
    639       357, 1670, 1672, 1671, 1674, 1676, 1675, 1678,  233,  137,
    640      2825, 1750, 1763, 1776, 1786, 1796, 1809, 1819, 1832, 1845,
    641 
    642      1858, 1866, 1876, 1883, 1890, 1897, 1904, 1911, 1918, 1925,
    643      1932, 1939, 1952, 1959, 1963, 1971, 1974, 1981, 1988, 1995,
    644      1998, 2005, 2011, 2024, 2037, 2044, 2051, 2058, 2065, 2068,
    645      2075, 2078, 2085, 2088, 2095, 2098, 2105, 2108, 2115, 2118,
    646      2125, 2128, 2135, 2143, 2150, 2157, 2164, 2171, 2174, 2181,
    647      2184, 2191, 2194, 2201, 2207, 2220, 2227, 2234, 2237, 2244,
    648      2247, 2254, 2257, 2264, 2267, 2274, 2277, 2284, 2287, 2294,
    649      2301, 2304, 2311, 2314, 2321, 2328, 2335, 2338, 2345, 2348,
    650      2355, 2358, 2365, 2368, 2375, 2378, 2385, 2391, 2404, 2411,
    651      2418, 2421, 2428, 2431, 2438, 2441, 2448, 2451, 2458, 2461,
    652 
    653      2468, 2471, 2478, 2481, 2488, 2491, 2498, 2505, 2508, 2515,
    654      2518, 2525, 2528, 2535, 2538, 2541, 2547, 2554, 2563, 2570,
    655      2577, 2580, 2587, 2590, 2593, 2599, 2606, 2609, 2612, 2615,
    656      2618, 2621, 2624, 2627, 2634, 2637, 2644, 2647, 2650, 2653,
    657      2656, 2666, 2673, 2676, 2679, 2682, 2689, 2696, 2703, 2706,
    658      2713, 2720, 2727, 2734, 2741, 2748, 2755, 2762, 2769, 2776,
    659      2783, 2790, 2797, 2804, 2811
     563      599,  582,  593,  584, 2845, 2845,  660,  651, 2272,  666,
     564
     565     2845,  678, 2845, 2219,  607, 2213, 2212,    0,  693, 2845,
     566     2845,  684, 2211, 2209, 2206,    0, 2227,  578,  608,  617,
     567      654,  679,  650,  683,  684,  687, 2224,  690,  691, 2201,
     568     2199, 2845,    0,  683,  710,  686,  700, 2179, 2230, 2845,
     569      730,  722,  427,  747,  756,  787,  770,  621, 2845, 2188,
     570     2161,    0,  795, 2205,  796,  700, 2845, 2181, 2156,  809,
     571     2845, 2845, 2188, 2845, 2845,  728,  733, 2165, 2163,  701,
     572     2159, 2158, 2156,    0, 2153,    0, 2122,  736,  746,  747,
     573      716,  689,  748,  566,  789,  659,  801,  751,  754,  785,
     574      776,  787,  808,  796,  739,  711,  806, 2152,  807,  815,
     575
     576      817,  821,  809,  819,  827,  830,  831,  832,  833,  834,
     577      839,  840,  841,  842,  846,  853,  854,  844,  847,  855,
     578     2151,  860,  862,  861,  866,  864,  867,  869,  870,  872,
     579      873,  874,  878,  875,  883, 2149,  882,  928,  885,  888,
     580      894,  899,  892,  956,  958, 2143, 2140, 2139,    0, 2138,
     581        0,  945,  949, 2136,    0, 2133,    0, 2132,    0, 2153,
     582     2845,  930,  944, 2131, 2126,    0, 2125,    0, 2845,  959,
     583      979,  970, 2845,  985, 1025, 2124, 1001, 1047, 2122, 2845,
     584     2845,  943,  987, 1033,  986, 1072,  310, 1064,  987, 2845,
     585     2845, 2119, 2115, 2111,    0, 2109,    0, 2107,    0, 2104,
     586
     587        0, 2845,  913,  947,  964,  966, 1005,  927, 1049,  939,
     588     1051,  968,  991,  986, 1041, 1053, 1003, 1059, 1063, 1066,
     589     1023, 1064, 1062, 1065,  978, 2105, 1072, 2103, 1078, 2100,
     590     1071, 1074, 1076, 1080, 1091, 1093, 1095, 2097, 1094, 2096,
     591     1082, 1098, 1099, 1100, 1101, 1105, 1106, 2095, 1107, 2093,
     592     1110, 1112, 1111, 1117, 1118, 1113, 1119, 1123, 1126, 1127,
     593     1129, 1130, 1131, 1140, 1142, 1143, 2090, 1144, 1147, 1195,
     594     2084,    0, 2083,    0, 2082,    0, 2080,    0, 1190, 2077,
     595        0, 2074,    0, 2073, 2072, 2070,    0, 2067,    0, 1197,
     596     2064, 1203, 1219, 1205, 1244, 1210, 1202, 1200, 2845, 1260,
     597
     598     1278, 1271, 2075, 2050, 2060, 2057,    0, 2054,    0, 2053,
     599        0, 2052,    0, 2050,    0, 2047,    0, 1164, 1152, 2047,
     600     1184, 1182, 1226, 1157, 1227, 1196, 1254, 1146, 1237, 1255,
     601     1256, 1204, 1258, 1271, 1261, 1260, 1292, 1274, 1262, 1277,
     602     1278, 1280, 2046, 1186, 1289, 2045, 1279, 1282, 1290, 1295,
     603     2043, 1299, 1300, 1301, 1303, 2040, 1306, 1302, 2037, 1310,
     604     1311, 2036, 1309, 1312, 1315, 2035, 1220, 1314, 1316, 1322,
     605     1326, 1333, 2033, 1328, 1329, 2030, 1330, 1335, 2029, 2078,
     606     2023,    0, 2020,    0, 2019,    0, 2018,    0, 2016,    0,
     607     1983,    0, 1981,    0, 1980,    0, 1379, 1385, 1413, 1396,
     608
     609     1977, 2845, 1402, 1351, 1389, 1403, 1974, 2845, 1973,    0,
     610     1972,    0, 1970,    0, 1967,    0,    0,    0, 1967,    0,
     611     1390, 1336, 1397, 1365, 1345, 1392, 1393, 1409, 1381, 1407,
     612     1412, 1414, 1419, 1420, 1422, 1424, 1427, 1431,  926, 1429,
     613     1432, 1438, 1433, 1435, 1440, 1966, 1437, 1441, 1445, 1965,
     614     1963, 1960, 1450, 1453, 1959, 1455, 1958, 1956, 1456, 1459,
     615     1953, 1952, 1951, 1949, 1942, 1940, 1458, 1461, 1939, 1464,
     616     1462, 1986, 2845, 1929,    0, 1925,    0,    0,    0, 1924,
     617        0,    0,    0, 2845,    0,    0,    0,    0, 1511, 1918,
     618     2845, 2845, 1517, 1917,    0, 1916,    0,    0,    0,    0,
     619
     620     1914, 1474, 1468, 1914, 1443, 1493, 1498, 1476, 1504, 1505,
     621     1494, 1913, 1334, 1509, 1506, 1510, 1511, 1545, 1525, 1518,
     622     1543, 1530, 1523, 1529, 1531, 1534, 1535, 1539, 1912, 1910,
     623     1540, 1907, 1906, 1542, 1538, 1544, 1905, 1546, 1550,    0,
     624        0,    0, 1900, 1897, 1896, 1596,    0, 1895, 1893, 1890,
     625     1889, 1888, 1889, 1886, 1885, 1884, 1552, 1557, 1573, 1549,
     626     1551, 1553, 1575, 1555, 1577, 1582, 1607, 1882, 1583, 1879,
     627     1584, 1589, 1585, 1590, 1591, 1594, 1878, 1597, 1877, 1875,
     628     1872, 1598, 1871, 1870, 1865, 1862, 1861, 1860, 1858, 1851,
     629     1849, 1848, 1845, 1844, 1843, 1841, 1600, 1827, 1601, 1605,
     630
     631     1608, 1602, 1609, 1610, 1818, 1614, 1629, 1615, 1817, 1604,
     632     1616, 1625, 1630, 1380, 1631, 1633, 1811, 1804, 1801, 1794,
     633     1792, 1791, 1770, 1769, 1768, 1761, 1759, 1758, 1716, 1716,
     634     1634, 1636, 1635, 1637, 1640, 1641, 1645, 1715, 1713, 1647,
     635     1712, 1711, 1648, 1652, 1653, 1654, 1703, 1701, 1700, 1698,
     636     1696, 1476, 1472, 1343, 1657, 1667, 1259, 1656, 1660, 1668,
     637     1150, 1671, 1675, 1676, 1031, 1027,  793,  752,  675, 1669,
     638     1677, 1680, 1681, 1682, 1684,  645,  607, 1686,  487,  441,
     639     1688, 1690,  394,  357, 1693, 1694, 1695, 1697, 1696, 1698,
     640     1700,  233,  137, 2845, 1773, 1786, 1799, 1809, 1819, 1832,
     641
     642     1842, 1855, 1868, 1881, 1889, 1899, 1906, 1913, 1920, 1927,
     643     1934, 1941, 1948, 1955, 1962, 1969, 1973, 1981, 1987, 1994,
     644     2001, 2008, 2015, 2018, 2025, 2031, 2044, 2057, 2064, 2071,
     645     2078, 2085, 2088, 2095, 2098, 2105, 2108, 2115, 2118, 2125,
     646     2128, 2135, 2138, 2145, 2148, 2155, 2163, 2170, 2177, 2184,
     647     2191, 2194, 2201, 2204, 2211, 2214, 2221, 2227, 2240, 2247,
     648     2254, 2257, 2264, 2267, 2274, 2277, 2284, 2287, 2294, 2297,
     649     2304, 2307, 2314, 2321, 2324, 2331, 2334, 2341, 2348, 2355,
     650     2358, 2365, 2368, 2375, 2378, 2385, 2388, 2395, 2398, 2405,
     651     2411, 2424, 2431, 2438, 2441, 2448, 2451, 2458, 2461, 2468,
     652
     653     2471, 2478, 2481, 2488, 2491, 2498, 2501, 2508, 2511, 2518,
     654     2525, 2528, 2535, 2538, 2545, 2548, 2555, 2558, 2561, 2567,
     655     2574, 2583, 2590, 2597, 2600, 2607, 2610, 2613, 2619, 2626,
     656     2629, 2632, 2635, 2638, 2641, 2644, 2647, 2654, 2657, 2664,
     657     2667, 2670, 2673, 2676, 2686, 2693, 2696, 2699, 2702, 2709,
     658     2716, 2723, 2726, 2733, 2740, 2747, 2754, 2761, 2768, 2775,
     659     2782, 2789, 2796, 2803, 2810, 2817, 2824, 2831
    660660    } ;
    661661
    662 static yyconst flex_int16_t yy_def[1066] =
     662static yyconst flex_int16_t yy_def[1069] =
    663663    {   0,
    664       891,    1,  892,  892,  891,    5,  893,  893,  894,  894,
    665       891,  891,  891,  891,  891,  891,  891,  895,  891,  891,
    666       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    667       891,   31,  891,  891,  891,  891,  891,  891,  896,  895,
    668       891,  891,  891,  891,  895,  891,  895,  895,  895,  895,
    669       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    670       895,  895,  891,  891,  891,  891,  891,  897,  891,  891,
    671       891,  898,  891,  891,  899,  891,  891,  900,  891,  891,
    672       891,  891,  891,  891,  891,  895,  891,  891,  891,  891,
    673       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    674 
    675       901,  891,   99,   30,  891,  891,  891,  891,  902,   30,
    676       891,   31,  891,  891,   31,  891,  891,  891,  891,  891,
    677       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    678       891,  891,  891,  891,  891,  891,  891,  891,  891,  903,
    679       891,  891,  891,  891,  895,  904,  905,  891,  891,  895,
    680       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    681       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    682       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    683       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    684       895,  895,  895,  895,  891,  891,  891,  897,  897,  897,
    685 
    686       891,  897,  891,  898,  891,  906,  907,  899,  891,  891,
    687       891,  891,  908,  909,  910,  900,  891,  891,  891,  891,
    688       891,  891,  891,  891,  891,  891,  891,  891,  891,  911,
    689       912,  891,   99,  891,  891,  891,  891,   99,  913,  891,
    690       891,  104,  104,  891,  891,  891,  891,  891,  891,  891,
    691       891,  914,  915,  916,  891,  891,  891,  891,  891,  891,
    692       891,  891,  891,  891,  891,  891,  891,  891,  903,  891,
    693       917,  918,  919,  920,  921,  922,  891,  923,  923,  923,
    694       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    695       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    696 
    697       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    698       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    699       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    700       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    701       923,  923,  923,  924,  925,  926,  927,  928,  929,  930,
    702       931,  891,  891,  932,  933,  934,  935,  936,  937,  891,
    703       891,  891,  891,  891,  938,  939,  940,  941,  891,  891,
    704       891,  891,  891,  891,  891,  371,  376,  891,  891,  942,
    705       943,  944,  891,  891,  891,  944,  891,  891,  891,  945,
    706       946,  947,  948,  949,  950,  951,  952,  953,  954,  891,
    707 
    708       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    709       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    710       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    711       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    712       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    713       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    714       955,  955,  955,  955,  955,  955,  955,  956,  957,  958,
    715       959,  960,  961,  962,  963,  964,  891,  965,  966,  967,
    716       968,  969,  969,  970,  971,  972,  973,  891,  488,  891,
    717       974,  891,  974,  891,  891,  891,  891,  891,  891,  891,
    718 
    719       891,  975,  976,  977,  978,  979,  980,  981,  982,  983,
    720       984,  985,  986,  987,  988,  988,  988,  988,  988,  988,
    721       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    722       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    723       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    724       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    725       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    726       988,  988,  988,  988,  988,  988,  989,  990,  991,  992,
     664      894,    1,  895,  895,  894,    5,  896,  896,  897,  897,
     665      894,  894,  894,  894,  894,  894,  894,  898,  894,  894,
     666      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     667      894,   31,  894,  894,  894,  894,  894,  894,  899,  898,
     668      894,  894,  894,  894,  898,  894,  898,  898,  898,  898,
     669      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     670      898,  898,  894,  894,  894,  894,  894,  900,  894,  894,
     671      894,  901,  894,  894,  902,  894,  894,  903,  894,  894,
     672      894,  894,  894,  894,  894,  898,  894,  894,  894,  894,
     673      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     674
     675      904,  894,  894,   30,  894,  894,  894,  894,  905,   30,
     676      894,   31,  894,  894,   31,  894,  894,  894,  894,  894,
     677      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     678      894,  894,  894,  894,  894,  894,  894,  894,  894,  906,
     679      894,  894,  894,  894,  898,  907,  908,  894,  894,  898,
     680      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     681      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     682      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     683      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     684      898,  898,  898,  898,  894,  894,  894,  900,  900,  900,
     685
     686      894,  900,  894,  901,  894,  909,  910,  902,  894,  894,
     687      894,  894,  911,  912,  913,  903,  894,  894,  894,  894,
     688      894,  894,  894,  894,  894,  894,  894,  894,  894,  914,
     689      915,  894,   99,  894,  894,  894,  894,   99,  904,  894,
     690       99,  110,  242,  894,  894,  894,  894,  894,  894,  894,
     691      894,  916,  917,  918,  894,  894,  894,  894,  894,  894,
     692      894,  894,  894,  894,  894,  894,  894,  894,  919,  894,
     693      920,  921,  922,  923,  924,  925,  894,  926,  926,  926,
     694      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     695      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     696
     697      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     698      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     699      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     700      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     701      926,  926,  926,  927,  928,  929,  930,  931,  932,  933,
     702      934,  894,  894,  935,  936,  937,  938,  939,  940,  894,
     703      894,  894,  894,  894,  941,  942,  943,  944,  894,  894,
     704      894,  894,  894,  894,  894,  375,  894,  371,  378,  894,
     705      894,  945,  946,  947,  894,  894,  894,  947,  894,  894,
     706      894,  948,  949,  950,  951,  952,  953,  954,  955,  956,
     707
     708      957,  894,  958,  958,  958,  958,  958,  958,  958,  958,
     709      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     710      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     711      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     712      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     713      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     714      958,  958,  958,  958,  958,  958,  958,  958,  958,  959,
     715      960,  961,  962,  963,  964,  965,  966,  967,  894,  968,
     716      969,  970,  971,  972,  972,  973,  974,  975,  976,  894,
     717      490,  894,  894,  977,  894,  977,  894,  894,  894,  894,
     718
     719      894,  894,  894,  894,  978,  979,  980,  981,  982,  983,
     720      984,  985,  986,  987,  988,  989,  990,  991,  991,  991,
     721      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     722      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     723      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     724      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     725      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     726      991,  991,  991,  991,  991,  991,  991,  991,  991,  992,
    727727      993,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
    728      1003, 1004, 1005,  891,  891,  891,  891, 1006,  891,  596,
    729 
    730       891,  891,  891,  600,  891, 1007, 1008, 1009, 1010, 1011,
    731      1012, 1013, 1014, 1015, 1016, 1017, 1018, 1017, 1017, 1017,
    732      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
    733      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
    734      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
    735      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
    736      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1019,  891,
    737      1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
    738       891, 1030, 1031, 1032, 1033,  891,  686,  891,  891,  891,
    739      1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1042,
    740 
    741      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    742      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    743      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    744      1042, 1042, 1042, 1042, 1042, 1042, 1043, 1044, 1045, 1046,
    745      1047, 1048,  891, 1049, 1034, 1036, 1050, 1051, 1041, 1042,
    746      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    747      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    748      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    749      1042, 1052, 1053, 1046, 1054, 1047, 1055, 1048, 1056, 1057,
    750      1050, 1058, 1051, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    751 
    752      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    753      1042, 1042, 1042, 1059, 1052, 1060, 1053, 1061, 1054, 1062,
    754      1055, 1063, 1056, 1064, 1057, 1058, 1042, 1042, 1042, 1042,
    755      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    756      1042, 1042, 1042, 1065, 1059, 1060, 1061, 1062, 1036, 1063,
    757      1064, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    758      1042, 1042, 1042, 1042, 1065, 1036, 1042, 1042, 1042, 1042,
    759      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    760      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    761         0,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    762 
    763       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    764       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    765       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    766       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    767       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    768       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    769       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    770       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    771       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    772       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    773 
    774       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    775       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    776       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    777       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    778       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    779       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    780       891,  891,  891,  891,  891
     728     1003, 1004, 1005, 1006, 1007, 1008,  894,  894,  894,  894,
     729
     730     1009,  894,  599,  894,  894,  894,  603,  894, 1010, 1011,
     731     1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
     732     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     733     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     734     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     735     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     736     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     737     1020, 1022,  894, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
     738     1030, 1031, 1032,  894, 1033, 1034, 1035, 1036,  894,  689,
     739      894,  894,  894, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
     740
     741     1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     742     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     743     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     744     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1046,
     745     1047, 1048, 1049, 1050, 1051,  894, 1052, 1037, 1039, 1053,
     746     1054, 1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     747     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     748     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     749     1045, 1045, 1045, 1045, 1055, 1056, 1049, 1057, 1050, 1058,
     750     1051, 1059, 1060, 1053, 1061, 1054, 1045, 1045, 1045, 1045,
     751
     752     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     753     1045, 1045, 1045, 1045, 1045, 1045, 1062, 1055, 1063, 1056,
     754     1064, 1057, 1065, 1058, 1066, 1059, 1067, 1060, 1061, 1045,
     755     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     756     1045, 1045, 1045, 1045, 1045, 1045, 1068, 1062, 1063, 1064,
     757     1065, 1039, 1066, 1067, 1045, 1045, 1045, 1045, 1045, 1045,
     758     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1068, 1039, 1045,
     759     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     760     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     761     1045, 1045, 1045,    0,  894,  894,  894,  894,  894,  894,
     762
     763      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     764      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     765      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     766      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     767      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     768      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     769      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     770      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     771      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     772      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     773
     774      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     775      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     776      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     777      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     778      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     779      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     780      894,  894,  894,  894,  894,  894,  894,  894
    781781    } ;
    782782
    783 static yyconst flex_int16_t yy_nxt[2911] =
     783static yyconst flex_int16_t yy_nxt[2931] =
    784784    {   0,
    785785       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    806806
    807807       83,   83,   83,   82,   91,   93,   87,  142,  146,   98,
    808        95,   99,   99,   99,   99,   99,   99,  252,  891,   94,
     808       95,   99,   99,   99,   99,   99,   99,  252,  894,   94,
    809809      100,   85,   96,   97,   85,  101,  161,  118,  143,   77,
    810810       77,   77,   77,  144,  147,  102,  103,   87,  104,  104,
     
    821821      115,  264,  248,   87,   87,  173,  106,  174,  249,  231,
    822822      175,  143,  116,  263,  176,  264,  144,  259,  317,  283,
    823       114,  125,  280,  500,  249,  126,  127,   87,  128,  191,
     823      114,  125,  280,  503,  249,  126,  127,   87,  128,  191,
    824824      129,  130,  256,  131,  249,  132,   87,  265,  257,  184,
    825       185,  257,  248,   87,  133,  134,  135,  501,  188,  186,
     825      185,  257,  248,   87,  133,  134,  135,  504,  188,  186,
    826826      249,  263,  187,  264,  271,   87,  189,  265,  145,  256,
    827827      305,  200,  201,  190,  257,  136,  200,  257,  137,  263,
    828828
    829       891,  264,  192,  197,   81,   82,   82,   82,  197,   87,
     829      894,  264,  192,  197,   81,   82,   82,   82,  197,   87,
    830830      272,  198,  202,  202,  202,  202,  202,  202,   80,   81,
    831831       82,   82,   82,   80,   87,  138,  139,  209,  210,  263,
    832       891,  264,  209,  282,  211,  255,  263,  267,  264,  211,
    833        82,   81,   82,   82,   82,   82,   87,  891,  212,  212,
    834       212,  212,   82,   81,   83,   83,   83,   82,  891,  211,
    835        99,   99,   99,   99,   99,   99,  242,  242,  242,  242,
     832      894,  264,  209,  282,  211,  255,  263,  267,  264,  211,
     833       82,   81,   82,   82,   82,   82,   87,  894,  212,  212,
     834      212,  212,   82,   81,   83,   83,   83,   82,  894,  211,
     835      241,  241,  241,  241,  241,  241,  242,  242,  242,  242,
    836836      266,  263,  263,  264,  264,  213,  143,  263,  211,  264,
    837        87,  144,  375,  211,  211,   87,   87,  211,  211,   87,
    838        87,   87,  286,  241,  891,  211,   87,   87,  211,  243,
     837       87,  144,  377,  211,  211,   87,   87,  211,  211,   87,
     838       87,   87,  286,   87,  894,  211,   87,   87,  211,  243,
    839839
    840840      211,  214,  211,  281,  215,  217,  278,  284,  285,  218,
    841841      219,  307,  298,  279,  220,  221,   87,  222,   87,  223,
    842        87,   87,  891,   87,  309,  300,   87,   87,  224,  225,
     842       87,   87,  894,   87,  309,  300,   87,   87,  224,  225,
    843843      226,  103,  303,  105,  105,  105,  105,  105,  105,   87,
    844844      299,   87,  301,  302,   87,  304,  308,  310,   87,  227,
     
    852852      331,  361,   87,   87,  238,  337,  326,  327,   87,  236,
    853853      235,  236,   87,  329,  237,  332,  236,  287,  288,  289,
    854       336,  290,  291,  334,   87,  292,   87,  293,  407,  360,
     854      336,  290,  291,  334,   87,  292,   87,  293,  409,  360,
    855855      330,  361,  294,  295,  296,   87,  297,  339,  360,  343,
    856856      361,   87,  200,  201,  338,  340,  346,  200,  341,   87,
    857857      342,  197,   81,   82,   82,   82,  197,  200,  201,  198,
    858       378,  361,  200,  202,  202,  202,  202,  202,  202,  344,
     858      380,  361,  200,  202,  202,  202,  202,  202,  202,  344,
    859859      201,  360,  347,  361,  344,  360,  345,  361,  202,  202,
    860       202,  202,  202,  202,  209,  210,  378,  143,  361,  209,
     860      202,  202,  202,  202,  209,  210,  380,   87,  361,  209,
    861861
    862862      202,  202,  202,  202,  202,  202,  352,  352,  352,  352,
    863863      360,   87,  361,  362,  360,  360,  361,  361,  360,  363,
    864864      361,  360,  360,  361,  361,  369,  369,  370,  369,  370,
    865       435,   87,  371,  371,  371,  371,  371,  371,  373,  353,
    866       373,   87,  263,  373,  264,  263,   87,  264,  369,  402,
    867        87,  369,  234,  235,  236,  406,  237,  236,  388,  401,
    868       373,   87,  373,   87,   87,  372,  390,  373,  105,  105,
    869       105,  105,  105,  105,  236,  235,  236,  404,   87,  237,
    870       405,  236,  403,  408,  388,  106,  246,  246,  246,  246,
    871       246,  246,  391,   87,   87,   87,   87,   87,   87,  419,
    872 
    873        87,  255,  425,  432,   87,  420,  434,  106,  376,  376,
    874       376,  376,  376,  376,  381,  409,  413,  105,  105,  105,
    875       105,  105,  105,   87,  234,  245,  236,  245,  237,  236,
    876       246,  246,  246,  246,  246,  246,   87,  383,  410,  384,
    877        87,  377,   87,  385,  411,  412,  236,   87,  236,  386,
    878       255,  237,   87,  236,  112,  112,  112,  112,  112,  112,
    879       414,  387,  415,  417,  418,  384,   87,  416,   87,  385,
    880        87,   87,   87,   87,   87,   87,   87,   87,   87,  421,
    881       427,  426,  433,   87,  437,   87,   87,  260,  423,  424,
    882        87,   87,  436,  429,  428,  422,   87,  430,  431,  439,
    883 
    884        87,  438,   87,   87,  446,  441,  440,  442,  443,   87,
    885        87,   87,   87,   87,   87,  445,   87,   87,   87,   87,
    886        87,  448,  447,   87,   87,  444,  449,  451,   87,  456,
    887        87,  450,   87,   87,   87,  452,  455,  454,   87,  453,
    888       457,  462,  460,  461,   87,   87,  458,  464,   87,  515,
    889       459,  463,  465,  466,  344,  201,  201,   87,  891,  344,
    890       467,  345,  199,  211,  211,  211,  211,  352,  352,  352,
    891       352,  360,  360,  361,  361,  371,  371,  371,  371,  371,
    892       371,  370,  569,  370,  492,  492,  371,  371,  371,  371,
    893       371,  371,  891,   87,  493,  494,  477,  488,  488,  488,
    894 
    895       488,  488,  488,  233,  233,  233,  233,  233,  233,  516,
    896       492,  492,   87,  234,   87,  236,   87,  237,  236,  242,
    897       242,  242,  242,  105,  105,  495,  381,  517,   87,   87,
    898       489,  496,   87,  518,   87,  236,  374,  236,  519,  520,
    899       237,  521,  236,  376,  376,  376,  376,  376,  376,  383,
    900        87,  384,  375,  496,   87,  385,  522,  496,  497,  891,
    901       497,  386,   87,  498,  498,  498,  498,  498,  498,   87,
    902       525,  495,  526,  387,   87,  524,  377,  384,  523,  496,
    903        87,  385,  383,   87,  384,   87,   87,  527,  385,   87,
    904        87,  532,   87,   87,  502,   87,  499,   87,  535,  528,
    905 
    906       529,  537,  530,  531,  533,   87,  387,   87,   87,  541,
    907       384,  534,  538,   87,  385,   87,  536,   87,   87,   87,
    908       539,  540,   87,   87,  546,   87,   87,   87,  544,  542,
    909        87,  548,   87,   87,  547,  543,   87,   87,  549,   87,
    910       545,   87,  552,   87,   87,  550,  556,  554,  551,   87,
    911       559,   87,  553,  555,   87,   87,  557,   87,   87,  558,
    912        87,   87,   87,  564,  560,  567,  563,  568,   87,  561,
    913       566,  562,   87,  565,   87,   87,  571,   87,   87,  573,
    914       627,  201,  492,  570,  576,  574,  572,  577,  211,  211,
    915       211,  211,  493,   87,  575,  488,  488,  488,  488,  488,
    916 
    917       488,  376,  376,  376,  376,  376,  376,   87,  492,   87,
    918       618,  234,  595,  236,  595,  237,  236,  596,  596,  596,
    919       596,  596,  596,  492,   87,  599,  492,  621,  489,   87,
    920        87,  623,   87,  236,  490,  236,  598,  619,  237,   87,
    921       236,  498,  498,  498,  498,  498,  498,  620,   87,  492,
    922       597,  599,  492,  600,  600,  600,  600,  600,  600,   87,
    923       631,  622,   87,   87,  625,  891,   87,  891,   87,  601,
    924       497,  602,  497,  603,  602,  498,  498,  498,  498,  498,
    925       498,  624,  628,   87,   87,  630,  604,   87,   87,   87,
    926        87,  602,  633,  602,  626,  636,  603,  632,  602,  629,
    927 
    928       634,   87,   87,  635,   87,   87,   87,  642,   87,   87,
    929       637,  641,   87,   87,  640,   87,   87,  643,  647,  639,
    930        87,   87,  866,   87,   87,   87,  638,   87,   87,  644,
    931       645,  646,  648,  650,   87,   87,   87,  649,   87,  653,
    932       651,   87,  652,   87,  654,  655,   87,   87,   87,   87,
    933       656,  657,   87,  660,  659,  661,  664,   87,  658,   87,
    934        87,  663,   87,   87,   87,  668,  665,  688,  688,  662,
    935       666,  701,  702,  891,  891,   87,  667,  488,  488,  488,
    936       488,  488,  488,  596,  596,  596,  596,  596,  596,  595,
    937       688,  595,  704,   87,  596,  596,  596,  596,  596,  596,
    938 
    939       600,  600,  600,  600,  600,  600,  703,  688,   87,  891,
    940       594,  686,  686,  686,  686,  686,  686,  689,   87,  689,
    941        87,   87,  689,  699,   87,  708,   87,  601,  706,  602,
    942       688,  603,  602,  604,  707,   87,  700,  710,  709,  689,
    943        87,  689,   87,  705,  687,   87,  689,   87,   87,  602,
    944        87,  602,   87,  716,  603,  718,  602,  712,   87,   87,
    945        87,   87,  711,   87,  714,   87,   87,  713,   87,  717,
    946       715,   87,  721,  719,   87,  724,   87,   87,  722,  720,
    947       727,   87,   87,   87,  725,   87,  731,  723,   87,  732,
    948       726,   87,   87,   87,  728,  734,   87,  733,  730,   87,
    949 
    950       735,   87,   87,  729,   87,  863,  751,  736,  686,  686,
    951       686,  686,  686,  686,  600,  600,  600,  600,  600,  600,
    952       750,   87,  755,   87,  601,  763,  602,  752,  603,  602,
    953       753,   87,   87,  764,   87,  756,  754,  757,   87,  758,
    954        87,  687,   87,   87,  759,  767,  602,  690,  602,  761,
    955        87,  603,  766,  602,   87,  760,   87,  762,   87,  765,
    956        87,  768,   87,  769,   87,   87,   87,   87,  770,   87,
    957        87,   87,   87,   87,  771,   87,  774,   87,  772,   87,
    958        87,  780,   87,   87,  796,   87,  781,  773,  775,  777,
    959        87,   87,  798,  776,  778,  797,  779,  686,  686,  686,
    960 
    961       686,  686,  686,  794,   87,   87,   87,  795,  799,  802,
    962       804,   87,   87,   87,  805,  806,   87,  801,  803,  808,
    963       807,  800,   87,   87,   87,  809,   87,   87,   87,   87,
    964       743,   87,   87,   87,   87,  830,  832,   87,   87,  810,
    965       833,   87,  835,   87,   87,   87,  811,  829,  836,  812,
    966       813,   87,  828,  840,  838,  827,  831,   87,   87,  834,
    967       839,   87,   87,   87,   87,  837,   87,   87,   87,  854,
    968        87,  853,  842,   87,  841,   87,  855,   87,  843,   87,
    969       858,   87,  860,   87,  852,  870,  861,   87,  856,   87,
    970       859,   87,   87,   87,  857,   87,  862,  868,  864,   87,
    971 
    972       867,   87,  869,  881,   87,   87,  871,  872,  873,   87,
    973       876,   87,  874,  875,  877,   87,   87,   87,   87,  879,
    974       880,   87,   87,   87,   87,  878,   87,   87,   87,  891,
    975        87,  884,  865,   87,   87,   87,  883,  885,   87,  882,
    976       890,   87,  891,  891,  851,  886,  888,  887,  891,  889,
    977        69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
    978        69,   69,   69,   75,   75,   75,   75,   75,   75,   75,
    979        75,   75,   75,   75,   75,   75,   78,   78,   78,   78,
    980        78,   78,   78,   78,   78,   78,   78,   78,   78,   86,
    981       850,  891,   86,  848,   86,   86,   86,   86,   86,  140,
    982 
    983       891,  847,  891,  140,  140,  140,  140,  140,  140,  199,
    984       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
    985       199,  199,  204,  846,  891,  204,  845,  204,  204,  204,
    986       204,  204,  208,   87,  208,  208,   87,  208,  208,  208,
    987       208,  208,  208,   87,  208,  216,  891,  826,  216,  216,
    988       216,  216,  216,  216,  216,  216,  891,  216,  239,  239,
    989       239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
    990       239,  253,  253,  825,  253,  823,  891,  821,  253,  269,
    991       891,  819,  269,  891,  269,  269,  269,  269,  269,  273,
    992       817,  273,  815,   87,   87,  273,  275,   87,  275,   87,
    993 
    994        87,   87,  275,  348,   87,  348,   87,   87,   87,  348,
    995       350,   87,  350,   87,  891,  793,  350,  354,  791,  354,
    996       891,  891,  788,  354,  356,  786,  356,  784,   87,   87,
    997       356,  358,   87,  358,   87,   87,   87,  358,  365,   87,
    998       365,  749,  746,  745,  365,  367,  743,  367,  205,  739,
    999       738,  367,  239,  239,  239,  239,  239,  239,  239,  239,
    1000       239,  239,  239,  239,  239,  380,  670,  380,  382,  382,
    1001        87,  382,  382,  382,   87,  382,  253,  253,   87,  253,
    1002       392,   87,  392,   87,   87,   87,  392,  394,   87,  394,
    1003        87,   87,   87,  394,  396,   87,  396,   87,   87,   87,
    1004 
    1005       396,  273,  697,  273,  398,  696,  398,  694,  692,  690,
    1006       398,  275,  598,  275,   86,  685,  684,   86,  682,   86,
     865      894,  411,  371,  371,  371,  371,  371,  371,  373,  353,
     866      373,   87,  103,  373,  242,  242,  242,  242,  369,  390,
     867      392,  369,  375,  375,  375,  375,  375,  375,  407,  263,
     868      373,  264,  373,   87,  263,  372,  264,  373,   87,  105,
     869      105,  105,  105,  105,  105,  390,  393,  243,  246,  246,
     870      246,  246,  246,  246,  406,  376,  106,  245,   87,  245,
     871      424,   87,  246,  246,  246,  246,  246,  246,   87,   87,
     872
     873       87,  403,  255,   87,  423,  408,   87,  894,  106,  378,
     874      378,  378,  378,  378,  378,  383,  404,  405,  105,  105,
     875      105,  105,  105,  105,  416,  234,  415,  236,   87,  237,
     876      236,  112,  112,  112,  112,  112,  112,   87,  385,   87,
     877      386,   87,  379,  418,  387,   87,  410,  236,   87,  236,
     878      388,  255,  237,   87,  236,  419,  420,  422,   87,   87,
     879       87,   87,  389,  417,  260,  421,  386,   87,  412,   87,
     880      387,   87,  427,   87,  413,  414,  425,  426,  428,   87,
     881      429,  430,   87,   87,   87,   87,   87,  434,  435,  431,
     882      436,   87,   87,   87,   87,  438,   87,  439,   87,   87,
     883
     884      432,  433,  441,  443,  437,   87,   87,   87,  440,  442,
     885      444,  445,   87,   87,   87,  447,   87,  448,   87,   87,
     886      449,   87,   87,  450,   87,   87,   87,   87,  446,  451,
     887       87,  453,  452,  458,   87,   87,  143,   87,  454,  457,
     888       87,  456,  455,  464,   87,  462,   87,  459,  463,  460,
     889      721,   87,  461,  466,  467,  465,  468,  344,  201,  469,
     890      201,  360,  344,  361,  345,   87,  199,  211,  211,  211,
     891      211,  352,  352,  352,  352,  360,  518,  361,   87,   87,
     892       87,  371,  371,  371,  371,  371,  371,  370,  495,  370,
     893      523,   87,  371,  371,  371,  371,  371,  371,  496,   87,
     894
     895      479,  490,  490,  490,  490,  490,  490,  233,  233,  233,
     896      233,  233,  233,  525,  495,  519,   87,  234,   87,  236,
     897       87,  237,  236,  242,  242,  242,  242,  105,  105,  498,
     898       87,  520,  495,  527,  491,  499,  499,  521,   87,  236,
     899      374,  236,  497,   87,  237,  542,  236,  375,  375,  375,
     900      375,  375,  375,  383,  498,   87,  377,   87,  495,  528,
     901      529,  499,  499,  234,  235,  236,  522,  237,  236,  378,
     902      378,  378,  378,  378,  378,   87,  385,  533,  386,   87,
     903      376,  538,  387,   87,  894,  236,  235,  236,  388,  500,
     904      237,  500,  236,   87,  501,  501,  501,  501,  501,  501,
     905
     906      389,   87,  379,   87,  386,   87,  530,  385,  387,  386,
     907      524,   87,  526,  387,   87,   87,   87,   87,   87,  505,
     908      535,  531,  532,   87,   87,  540,   87,  502,   87,  534,
     909       87,  389,   87,  536,   87,  386,  541,  539,  543,  387,
     910      537,  547,  544,   87,  545,   87,   87,   87,  546,  549,
     911       87,   87,   87,   87,  553,  548,  551,   87,   87,   87,
     912      550,  552,   87,   87,   87,   87,  555,  559,  557,   87,
     913       87,   87,  554,  562,  556,   87,  560,  558,   87,   87,
     914      567,   87,   87,   87,  563,  561,  570,  566,  571,  564,
     915      565,  569,   87,  568,   87,   87,   87,  201,   87,   87,
     916
     917      574,  630,   87,  580,   87,  573,  577,  572,  579,   87,
     918      575,  576,  211,  211,  211,  211,   87,  622,  578,  490,
     919      490,  490,  490,  490,  490,  375,  375,  375,  375,  375,
     920      375,  626,  645,  621,   87,  234,   87,  236,   87,  237,
     921      236,  378,  378,  378,  378,  378,  378,  495,   87,  602,
     922      495,  623,  491,  628,  624,  495,   87,  236,  492,  236,
     923      496,  598,  237,  598,  236,  601,  599,  599,  599,  599,
     924      599,  599,   87,  495,  493,  602,  495,  634,   87,   87,
     925      662,  495,  501,  501,  501,  501,  501,  501,  500,   87,
     926      500,  625,  627,  501,  501,  501,  501,  501,  501,  600,
     927
     928      603,  603,  603,  603,  603,  603,   87,   87,   87,  631,
     929       87,   87,   87,   87,   87,  639,  604,  629,  605,  635,
     930      606,  605,  632,   87,  637,  638,   87,  633,  636,   87,
     931       87,   87,   87,  607,   87,  640,  641,  644,  605,  643,
     932      605,   87,   87,  606,   87,  605,  642,   87,  647,  648,
     933      646,   87,   87,   87,   87,   87,  650,  649,   87,  656,
     934      651,   87,   87,   87,   87,  653,   87,   87,   87,  652,
     935      654,  657,  658,  655,   87,  664,  663,  660,   87,  667,
     936       87,   87,   87,  659,  661,   87,   87,   87,   87,  668,
     937      666,  669,  762,  691,  691,  704,  665,   87,  894,  670,
     938
     939      671,  490,  490,  490,  490,  490,  490,  599,  599,  599,
     940      599,  599,  599,  598,  707,  598,  691,   87,  599,  599,
     941      599,  599,  599,  599,  603,  603,  603,  603,  603,  603,
     942      706,  691,   87,   87,  597,  689,  689,  689,  689,  689,
     943      689,  692,   87,  692,   87,   87,  692,  702,  844,   87,
     944      711,  604,  709,  605,  691,  606,  605,  607,  705,   87,
     945      703,   87,  712,  692,   87,  692,   87,  708,  690,  710,
     946      692,   87,   87,  605,   87,  605,   87,  713,  606,   87,
     947      605,   87,  719,   87,   87,   87,  715,   87,  714,   87,
     948       87,  717,   87,   87,  716,   87,  722,   87,  718,  724,
     949
     950      720,  727,   87,  725,  723,   87,  730,   87,   87,  726,
     951       87,   87,  728,   87,   87,  729,   87,  734,  735,  736,
     952       87,  755,  731,  737,  733,  738,   87,  894,   87,  739,
     953      754,  869,  732,  689,  689,  689,  689,  689,  689,  603,
     954      603,  603,  603,  603,  603,   87,   87,  753,  758,  604,
     955       87,  605,  756,  606,  605,  757,   87,   87,   87,  759,
     956      760,   87,   87,   87,  761,  765,  690,  764,  767,  770,
     957       87,  605,  693,  605,  763,   87,  606,   87,  605,  769,
     958      768,   87,   87,   87,  766,  771,   87,   87,  772,  773,
     959       87,   87,   87,  774,   87,   87,   87,   87,   87,  775,
     960
     961      777,   87,   87,   87,   87,   87,  783,   87,  776,   87,
     962      778,  784,  781,  801,  780,  779,  800,  782,  689,  689,
     963      689,  689,  689,  689,  797,   87,  798,   87,  802,   87,
     964      799,  807,  805,  804,   87,   87,   87,   87,  808,  809,
     965      811,   87,   87,   87,  803,  812,   87,  806,  810,   87,
     966       87,  746,   87,   87,   87,  838,   87,   87,  813,   87,
     967       87,   87,   87,  833,  835,  836,   87,   87,   87,  814,
     968      839,  841,  815,  816,  831,  832,  834,   87,  840,  830,
     969      842,   87,   87,   87,  837,   87,   87,   87,   87,   87,
     970      857,  843,   87,   87,  845,  856,  861,   87,  858,   87,
     971
     972       87,  846,  863,  864,   87,   87,   87,  855,   87,   87,
     973      859,  872,   87,  865,  862,  867,  860,  866,  870,   87,
     974       87,   87,  873,   87,  871,  874,  875,   87,   87,   87,
     975      876,  877,   87,   87,   87,  880,   87,  882,   87,  883,
     976       87,  878,   87,  881,  879,   87,   87,   87,   87,   87,
     977       87,  894,   87,  894,  887,  894,  894,  886,  868,  888,
     978      884,  885,  893,   87,   87,   87,  891,   87,   87,  889,
     979      890,  894,  892,   69,   69,   69,   69,   69,   69,   69,
     980       69,   69,   69,   69,   69,   69,   75,   75,   75,   75,
     981       75,   75,   75,   75,   75,   75,   75,   75,   75,   78,
     982
     983       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
     984       78,   78,   86,  894,  854,   86,  894,   86,   86,   86,
     985       86,   86,  140,  853,  894,  851,  140,  140,  140,  140,
     986      140,  140,  199,  199,  199,  199,  199,  199,  199,  199,
     987      199,  199,  199,  199,  199,  204,  894,  850,  204,  894,
     988      204,  204,  204,  204,  204,  208,  849,  208,  208,  894,
     989      208,  208,  208,  208,  208,  208,  848,  208,  216,   87,
     990       87,  216,  216,  216,  216,  216,  216,  216,  216,   87,
     991      216,  239,  239,  239,  239,  239,  239,  239,  239,  239,
     992      239,  239,  239,  239,  253,  253,  894,  253,  829,  894,
     993
     994      828,  253,  269,  826,  894,  269,  824,  269,  269,  269,
     995      269,  269,  273,  894,  273,  822,  894,  820,  273,  275,
     996      818,  275,   87,   87,   87,  275,  348,   87,  348,   87,
     997       87,   87,  348,  350,   87,  350,   87,   87,   87,  350,
     998      354,   87,  354,  894,  796,  794,  354,  356,  894,  356,
     999      894,  791,  789,  356,  358,  787,  358,   87,   87,   87,
     1000      358,  365,   87,  365,   87,   87,   87,  365,  367,  752,
     1001      367,  749,  748,  746,  367,  382,  205,  382,  384,  384,
     1002      742,  384,  384,  384,  741,  384,  253,  253,  673,  253,
     1003      269,   87,   87,  269,   87,  269,  269,  269,  269,  269,
     1004
     1005      394,   87,  394,   87,   87,   87,  394,  396,   87,  396,
     1006       87,   87,   87,  396,  398,   87,  398,   87,   87,   87,
     1007      398,  273,  700,  273,  400,  699,  400,  697,  695,  693,
     1008      400,  275,  601,  275,   86,  688,  687,   86,  685,   86,
    10071009       86,   86,   86,   86,  199,  199,  199,  199,  199,  199,
    1008       199,  199,  199,  199,  199,  199,  199,  468,  468,  468,
    1009       468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
    1010       469,  680,  469,  678,  676,  674,  469,  471,  672,  471,
    1011       670,   87,   87,  471,  473,   87,  473,   87,   87,   87,
    1012       473,  348,   87,  348,  475,   87,  475,   87,   87,   87,
    1013       475,  350,  617,  350,  478,  615,  478,  613,  611,  609,
    1014       478,  354,  607,  354,  480,  502,  480,  605,  605,  594,
    1015 
    1016       480,  356,  593,  356,  482,  591,  482,  483,  483,  589,
    1017       482,  358,  587,  358,  484,  585,  484,  583,  581,  579,
    1018       484,  365,   87,  365,  486,   87,  486,   87,   87,   87,
    1019       486,  367,   87,  367,  491,   87,  491,   87,  491,  514,
    1020       491,  380,  512,  380,  510,  380,  508,  380,  382,  382,
    1021       506,  382,  382,  382,  504,  382,  503,  490,  503,  487,
    1022       485,  361,  503,  505,  361,  505,  483,  481,  479,  505,
    1023       507,  476,  507,  474,  472,  470,  507,  392,   87,  392,
    1024       509,   87,  509,   87,  400,  399,  509,  394,  397,  394,
    1025       511,  395,  511,  393,  270,  265,  511,  396,  264,  396,
    1026 
    1027       513,  389,  513,  389,  252,  379,  513,  398,  379,  398,
    1028        86,  240,  374,   86,  368,   86,   86,   86,   86,   86,
    1029       468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
    1030       468,  468,  468,  578,  366,  578,  364,  360,  359,  578,
    1031       469,  357,  469,  580,  355,  580,  351,  349,  205,  580,
    1032       471,  201,  471,  582,   87,  582,  277,  276,  274,  582,
    1033       473,  270,  473,  584,  265,  584,  268,  265,  263,  584,
    1034       475,  262,  475,  586,  261,  586,  240,  232,   85,  586,
    1035       478,   85,  478,  588,   87,  588,  205,  203,   85,  588,
    1036       480,  122,  480,  482,  117,  482,   87,  891,   70,  482,
    1037 
    1038       590,   70,  590,  891,  891,  891,  590,  484,  891,  484,
    1039       592,  891,  592,  891,  891,  891,  592,  486,  891,  486,
    1040       491,  891,  491,  891,  491,  891,  491,  382,  891,  382,
    1041       891,  891,  891,  382,  606,  891,  606,  891,  891,  891,
    1042       606,  503,  891,  503,  608,  891,  608,  891,  891,  891,
    1043       608,  505,  891,  505,  610,  891,  610,  891,  891,  891,
    1044       610,  507,  891,  507,  612,  891,  612,  891,  891,  891,
    1045       612,  509,  891,  509,  614,  891,  614,  891,  891,  891,
    1046       614,  511,  891,  511,  616,  891,  616,  891,  891,  891,
    1047       616,  513,  891,  513,   86,  891,  891,   86,  891,   86,
    1048 
    1049        86,   86,   86,   86,  669,  669,  669,  669,  669,  669,
    1050       669,  669,  669,  669,  669,  669,  669,  671,  891,  671,
    1051       891,  891,  891,  671,  578,  891,  578,  673,  891,  673,
    1052       891,  891,  891,  673,  580,  891,  580,  675,  891,  675,
    1053       891,  891,  891,  675,  582,  891,  582,  677,  891,  677,
    1054       891,  891,  891,  677,  584,  891,  584,  679,  891,  679,
    1055       891,  891,  891,  679,  586,  891,  586,  681,  891,  681,
    1056       891,  891,  891,  681,  588,  891,  588,  683,  891,  683,
    1057       891,  891,  891,  683,  590,  891,  590,   86,  891,   86,
    1058       891,  891,  891,   86,  592,  891,  592,  491,  891,  491,
    1059 
    1060       891,  891,  891,  491,  691,  891,  691,  891,  891,  891,
    1061       691,  606,  891,  606,  693,  891,  693,  891,  891,  891,
    1062       693,  608,  891,  608,  695,  891,  695,  891,  891,  891,
    1063       695,  610,  891,  610,  140,  891,  140,  891,  891,  891,
    1064       140,  612,  891,  612,  698,  891,  698,  614,  891,  614,
    1065        86,  891,  891,   86,  891,   86,   86,   86,   86,   86,
    1066       616,  891,  616,  669,  669,  669,  669,  669,  669,  669,
    1067       669,  669,  669,  669,  669,  669,  737,  891,  737,  891,
    1068       891,  891,  737,  671,  891,  671,  204,  891,  204,  891,
    1069       891,  891,  204,  673,  891,  673,  740,  891,  740,  675,
    1070 
    1071       891,  675,  204,  891,  891,  204,  891,  204,  204,  204,
    1072       204,  204,  677,  891,  677,  741,  891,  741,  679,  891,
    1073       679,  681,  891,  681,  742,  891,  742,  683,  891,  683,
    1074        86,  891,   86,  744,  891,  744,  891,  891,  891,  744,
    1075       691,  891,  691,  269,  891,  269,  891,  891,  891,  269,
    1076       693,  891,  693,  747,  891,  747,  695,  891,  695,  140,
    1077       891,  140,  748,  891,  748,  891,  891,  891,  748,   86,
    1078       891,  891,   86,  891,   86,   86,   86,   86,   86,  782,
    1079       891,  782,  737,  891,  737,  204,  891,  204,  783,  891,
    1080       783,  891,  891,  891,  783,  785,  891,  785,  891,  891,
    1081 
    1082       891,  785,  787,  891,  787,  891,  891,  891,  787,  789,
    1083       891,  789,  790,  891,  790,  891,  891,  891,  790,  792,
    1084       891,  792,  891,  891,  891,  792,  814,  891,  814,  891,
    1085       891,  891,  814,  816,  891,  816,  891,  891,  891,  816,
    1086       818,  891,  818,  891,  891,  891,  818,  820,  891,  820,
    1087       891,  891,  891,  820,  822,  891,  822,  891,  891,  891,
    1088       822,  824,  891,  824,  891,  891,  891,  824,  616,  891,
    1089       616,  891,  891,  891,  616,  844,  891,  844,  891,  891,
    1090       891,  844,  677,  891,  677,  891,  891,  891,  677,  681,
    1091       891,  681,  891,  891,  891,  681,   86,  891,   86,  891,
    1092 
    1093       891,  891,   86,  849,  891,  849,  891,  891,  891,  849,
    1094       140,  891,  140,  891,  891,  891,  140,  204,  891,  204,
    1095       891,  891,  891,  204,   11,  891,  891,  891,  891,  891,
    1096       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1097       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1098       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1099       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1100       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1101       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1102       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1103 
    1104       891,  891,  891,  891,  891,  891,  891,  891,  891,  891
     1010      199,  199,  199,  199,  199,  199,  199,  470,  470,  470,
     1011      470,  470,  470,  470,  470,  470,  470,  470,  470,  470,
     1012      471,  683,  471,  681,  679,  677,  471,  473,  675,  473,
     1013      673,   87,   87,  473,  475,   87,  475,   87,   87,   87,
     1014      475,  348,   87,  348,  477,   87,  477,   87,   87,   87,
     1015
     1016      477,  350,  620,  350,  480,  618,  480,  616,  614,  612,
     1017      480,  354,  610,  354,  482,  505,  482,  608,  608,  597,
     1018      482,  356,  596,  356,  484,  594,  484,  485,  485,  592,
     1019      484,  358,  590,  358,  486,  588,  486,  586,  584,  582,
     1020      486,  365,   87,  365,  488,   87,  488,   87,   87,   87,
     1021      488,  367,   87,  367,  494,   87,  494,   87,  494,  517,
     1022      494,  382,  515,  382,  513,  382,  511,  382,  384,  384,
     1023      509,  384,  384,  384,  507,  384,  506,  493,  506,  492,
     1024      489,  487,  506,  508,  361,  508,  361,  485,  483,  508,
     1025      510,  481,  510,  478,  476,  474,  510,  394,  472,  394,
     1026
     1027      512,   87,  512,   87,   87,  402,  512,  396,  401,  396,
     1028      514,  399,  514,  397,  395,  270,  514,  398,  265,  398,
     1029      516,  264,  516,  391,  391,  252,  516,  400,  381,  400,
     1030       86,  381,  240,   86,  374,   86,   86,   86,   86,   86,
     1031      470,  470,  470,  470,  470,  470,  470,  470,  470,  470,
     1032      470,  470,  470,  581,  368,  581,  366,  364,  360,  581,
     1033      471,  359,  471,  583,  357,  583,  355,  351,  349,  583,
     1034      473,  205,  473,  585,  201,  585,   87,  277,  276,  585,
     1035      475,  274,  475,  587,  270,  587,  265,  268,  265,  587,
     1036      477,  263,  477,  589,  262,  589,  261,  240,  232,  589,
     1037
     1038      480,   85,  480,  591,   85,  591,   87,  205,  203,  591,
     1039      482,   85,  482,  484,  122,  484,  117,   87,  894,  484,
     1040      593,   70,  593,   70,  894,  894,  593,  486,  894,  486,
     1041      595,  894,  595,  894,  894,  894,  595,  488,  894,  488,
     1042      494,  894,  494,  894,  494,  894,  494,  384,  894,  384,
     1043      894,  894,  894,  384,  609,  894,  609,  894,  894,  894,
     1044      609,  506,  894,  506,  611,  894,  611,  894,  894,  894,
     1045      611,  508,  894,  508,  613,  894,  613,  894,  894,  894,
     1046      613,  510,  894,  510,  615,  894,  615,  894,  894,  894,
     1047      615,  512,  894,  512,  617,  894,  617,  894,  894,  894,
     1048
     1049      617,  514,  894,  514,  619,  894,  619,  894,  894,  894,
     1050      619,  516,  894,  516,   86,  894,  894,   86,  894,   86,
     1051       86,   86,   86,   86,  672,  672,  672,  672,  672,  672,
     1052      672,  672,  672,  672,  672,  672,  672,  674,  894,  674,
     1053      894,  894,  894,  674,  581,  894,  581,  676,  894,  676,
     1054      894,  894,  894,  676,  583,  894,  583,  678,  894,  678,
     1055      894,  894,  894,  678,  585,  894,  585,  680,  894,  680,
     1056      894,  894,  894,  680,  587,  894,  587,  682,  894,  682,
     1057      894,  894,  894,  682,  589,  894,  589,  684,  894,  684,
     1058      894,  894,  894,  684,  591,  894,  591,  686,  894,  686,
     1059
     1060      894,  894,  894,  686,  593,  894,  593,   86,  894,   86,
     1061      894,  894,  894,   86,  595,  894,  595,  494,  894,  494,
     1062      894,  894,  894,  494,  694,  894,  694,  894,  894,  894,
     1063      694,  609,  894,  609,  696,  894,  696,  894,  894,  894,
     1064      696,  611,  894,  611,  698,  894,  698,  894,  894,  894,
     1065      698,  613,  894,  613,  140,  894,  140,  894,  894,  894,
     1066      140,  615,  894,  615,  701,  894,  701,  617,  894,  617,
     1067       86,  894,  894,   86,  894,   86,   86,   86,   86,   86,
     1068      619,  894,  619,  672,  672,  672,  672,  672,  672,  672,
     1069      672,  672,  672,  672,  672,  672,  740,  894,  740,  894,
     1070
     1071      894,  894,  740,  674,  894,  674,  204,  894,  204,  894,
     1072      894,  894,  204,  676,  894,  676,  743,  894,  743,  678,
     1073      894,  678,  204,  894,  894,  204,  894,  204,  204,  204,
     1074      204,  204,  680,  894,  680,  744,  894,  744,  682,  894,
     1075      682,  684,  894,  684,  745,  894,  745,  686,  894,  686,
     1076       86,  894,   86,  747,  894,  747,  894,  894,  894,  747,
     1077      694,  894,  694,  269,  894,  269,  894,  894,  894,  269,
     1078      696,  894,  696,  750,  894,  750,  698,  894,  698,  140,
     1079      894,  140,  751,  894,  751,  894,  894,  894,  751,   86,
     1080      894,  894,   86,  894,   86,   86,   86,   86,   86,  785,
     1081
     1082      894,  785,  740,  894,  740,  204,  894,  204,  786,  894,
     1083      786,  894,  894,  894,  786,  788,  894,  788,  894,  894,
     1084      894,  788,  790,  894,  790,  894,  894,  894,  790,  792,
     1085      894,  792,  793,  894,  793,  894,  894,  894,  793,  795,
     1086      894,  795,  894,  894,  894,  795,  817,  894,  817,  894,
     1087      894,  894,  817,  819,  894,  819,  894,  894,  894,  819,
     1088      821,  894,  821,  894,  894,  894,  821,  823,  894,  823,
     1089      894,  894,  894,  823,  825,  894,  825,  894,  894,  894,
     1090      825,  827,  894,  827,  894,  894,  894,  827,  619,  894,
     1091      619,  894,  894,  894,  619,  847,  894,  847,  894,  894,
     1092
     1093      894,  847,  680,  894,  680,  894,  894,  894,  680,  684,
     1094      894,  684,  894,  894,  894,  684,   86,  894,   86,  894,
     1095      894,  894,   86,  852,  894,  852,  894,  894,  894,  852,
     1096      140,  894,  140,  894,  894,  894,  140,  204,  894,  204,
     1097      894,  894,  894,  204,   11,  894,  894,  894,  894,  894,
     1098      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1099      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1100      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1101      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1102      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1103
     1104      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1105      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1106      894,  894,  894,  894,  894,  894,  894,  894,  894,  894
    11051107    } ;
    11061108
    1107 static yyconst flex_int16_t yy_chk[2911] =
     1109static yyconst flex_int16_t yy_chk[2931] =
    11081110    {   0,
    11091111        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11261128        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11271129        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
    1128         8,    9,   10,   37,   37,   20,   39,    9,   10,  890,
     1130        8,    9,   10,   37,   37,   20,   39,    9,   10,  893,
    11291131        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
    11301132
     
    11371139       47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
    11381140       45,   30,   40,   45,   45,   40,   49,   30,   45,   56,
    1139        62,   45,   49,   30,   73,  889,  127,   53,  127,   51,
     1141       62,   45,   49,   30,   73,  892,  127,   53,  127,   51,
    11401142       61,   30,   62,   55,   30,   31,  108,   31,   31,   31,
    11411143
     
    11451147       31,  129,  107,  154,  151,   52,   31,   52,  107,   87,
    11461148       52,   60,   31,  132,   52,  132,   60,  114,  175,  154,
    1147        31,   38,  151,  385,  111,   38,   38,   58,   38,   60,
     1149       31,   38,  151,  387,  111,   38,   38,   58,   38,   60,
    11481150       38,   38,  113,   38,  107,   38,   59,  130,  113,   58,
    1149        58,  116,  111,  164,   38,   38,   38,  385,   59,   58,
     1151       58,  116,  111,  164,   38,   38,   38,  387,   59,   58,
    11501152      111,  130,   58,  130,  142,   60,   59,  131,   60,  116,
    11511153      164,   68,   68,   59,  113,   38,   68,  116,   38,  131,
    11521154
    1153       110,  131,   60,   67,   67,   67,   67,   67,   67,  881,
     1155      110,  131,   60,   67,   67,   67,   67,   67,   67,  884,
    11541156      142,   67,   68,   68,   68,   68,   68,   68,   80,   80,
    11551157       80,   80,   80,   80,  153,   38,   38,   77,   77,  134,
    11561158      110,  134,   77,  153,   77,  110,  135,  135,  135,   77,
    1157        82,   82,   82,   82,   82,   82,  880,  243,   77,   77,
     1159       82,   82,   82,   82,   82,   82,  883,  243,   77,   77,
    11581160       77,   77,   83,   83,   83,   83,   83,   83,  110,   77,
    11591161      103,  103,  103,  103,  103,  103,  104,  104,  104,  104,
    11601162      133,  133,  137,  133,  137,   77,  145,  139,   77,  139,
    11611163      157,  145,  243,   77,   77,  152,  156,   77,   77,  155,
    1162       166,  150,  157,  103,  104,   77,  159,  168,   77,  104,
     1164      166,  150,  157,  880,  104,   77,  159,  168,   77,  104,
    11631165
    11641166       77,   77,   77,  152,   77,   85,  150,  155,  156,   85,
    11651167       85,  166,  159,  150,   85,   85,  161,   85,  160,   85,
    11661168      145,  162,  104,  167,  168,  161,  169,  163,   85,   85,
    1167        85,  105,  163,  105,  105,  105,  105,  105,  105,  877,
     1169       85,  105,  163,  105,  105,  105,  105,  105,  105,  879,
    11681170      160,  171,  162,  162,  165,  163,  167,  169,  173,   85,
    11691171      105,  106,   85,  106,  165,  172,  106,  106,  106,  106,
     
    11781180      189,  158,  158,  188,  192,  158,  194,  158,  284,  219,
    11791181      185,  219,  158,  158,  158,  193,  158,  192,  220,  194,
    1180       220,  191,  198,  198,  191,  192,  205,  198,  193,  876,
     1182      220,  191,  198,  198,  191,  192,  205,  198,  193,  877,
    11811183      193,  197,  197,  197,  197,  197,  197,  200,  200,  197,
    11821184      248,  221,  200,  198,  198,  198,  198,  198,  198,  202,
    11831185      202,  223,  205,  223,  202,  221,  202,  221,  200,  200,
    1184       200,  200,  200,  200,  209,  209,  248,  338,  222,  209,
     1186      200,  200,  200,  200,  209,  209,  248,  876,  222,  209,
    11851187
    11861188      202,  202,  202,  202,  202,  202,  212,  212,  212,  212,
    1187       222,  309,  222,  224,  224,  225,  224,  225,  226,  226,
     1189      222,  286,  222,  224,  224,  225,  224,  225,  226,  226,
    11881190      226,  228,  229,  228,  229,  234,  234,  235,  236,  235,
    1189       309,  279,  235,  235,  235,  235,  235,  235,  237,  212,
    1190       237,  338,  266,  237,  266,  267,  278,  267,  234,  279,
    1191       283,  236,  241,  241,  241,  283,  241,  241,  256,  278,
    1192       237,  281,  237,  282,  280,  235,  270,  237,  244,  244,
    1193       244,  244,  244,  244,  241,  241,  241,  281,  285,  241,
    1194       282,  241,  280,  285,  256,  244,  245,  245,  245,  245,
    1195       245,  245,  270,  288,  293,  286,  294,  300,  306,  293,
    1196 
    1197       308,  244,  300,  306,  874,  294,  308,  244,  246,  246,
    1198       246,  246,  246,  246,  253,  286,  288,  255,  255,  255,
    1199       255,  255,  255,  287,  246,  247,  246,  247,  246,  246,
    1200       247,  247,  247,  247,  247,  247,  290,  253,  287,  253,
    1201       873,  246,  289,  253,  287,  287,  246,  292,  246,  253,
    1202       255,  246,  291,  246,  260,  260,  260,  260,  260,  260,
    1203       289,  253,  290,  292,  292,  253,  295,  291,  296,  253,
    1204       297,  299,  301,  302,  303,  304,  305,  307,  311,  295,
    1205       302,  301,  307,  310,  311,  312,  319,  260,  297,  299,
    1206       313,  314,  310,  304,  303,  296,  318,  305,  305,  313,
    1207 
    1208       315,  312,  316,  317,  319,  315,  314,  316,  317,  320,
    1209       322,  323,  324,  326,  325,  318,  327,  328,  331,  329,
    1210       330,  322,  320,  332,  334,  317,  323,  325,  333,  330,
    1211       335,  324,  337,  339,  340,  326,  329,  328,  401,  327,
    1212       331,  337,  334,  335,  341,  343,  332,  340,  342,  401,
    1213       333,  339,  341,  342,  344,  344,  345,  460,  866,  344,
    1214       343,  344,  345,  352,  352,  352,  352,  353,  353,  353,
    1215       353,  362,  363,  362,  363,  370,  370,  370,  370,  370,
    1216       370,  372,  460,  372,  380,  381,  372,  372,  372,  372,
    1217       372,  372,  865,  402,  380,  381,  352,  371,  371,  371,
    1218 
    1219       371,  371,  371,  374,  374,  374,  374,  374,  374,  402,
    1220       380,  381,  403,  371,  404,  371,  864,  371,  371,  375,
    1221       375,  375,  375,  375,  375,  383,  382,  403,  406,  405,
    1222       371,  383,  407,  404,  408,  371,  374,  371,  405,  406,
    1223       371,  407,  371,  376,  376,  376,  376,  376,  376,  382,
    1224       412,  382,  375,  387,  411,  382,  408,  383,  384,  386,
    1225       384,  382,  410,  384,  384,  384,  384,  384,  384,  409,
    1226       411,  387,  412,  382,  413,  410,  376,  382,  409,  387,
    1227       415,  382,  386,  414,  386,  416,  417,  413,  386,  418,
    1228       421,  417,  419,  422,  386,  420,  384,  427,  419,  414,
    1229 
    1230       414,  421,  415,  416,  418,  423,  386,  425,  429,  427,
    1231       386,  418,  422,  430,  386,  431,  420,  432,  433,  434,
    1232       423,  425,  435,  437,  433,  439,  440,  441,  431,  429,
    1233       442,  435,  443,  444,  434,  430,  449,  445,  437,  447,
    1234       432,  450,  441,  451,  454,  439,  445,  443,  440,  452,
    1235       450,  453,  442,  444,  455,  456,  447,  457,  458,  449,
    1236       459,  461,  463,  455,  451,  458,  454,  459,  462,  452,
    1237       457,  453,  466,  456,  464,  467,  462,  525,  863,  463,
    1238       525,  468,  491,  461,  467,  464,  462,  468,  477,  477,
    1239       477,  477,  491,  515,  466,  488,  488,  488,  488,  488,
    1240 
    1241       488,  490,  490,  490,  490,  490,  490,  519,  491,  521,
    1242       515,  488,  492,  488,  492,  488,  488,  492,  492,  492,
    1243       492,  492,  492,  494,  516,  495,  493,  519,  488,  862,
    1244       858,  521,  518,  488,  490,  488,  493,  516,  488,  529,
    1245       488,  497,  497,  497,  497,  497,  497,  518,  520,  494,
    1246       492,  495,  493,  498,  498,  498,  498,  498,  498,  523,
    1247       529,  520,  526,  854,  523,  851,  528,  850,  522,  498,
    1248       499,  498,  499,  498,  498,  499,  499,  499,  499,  499,
    1249       499,  522,  526,  524,  527,  528,  498,  531,  530,  532,
    1250       533,  498,  531,  498,  524,  534,  498,  530,  498,  527,
    1251 
    1252       532,  535,  537,  533,  536,  538,  539,  541,  542,  547,
    1253       535,  539,  544,  541,  538,  545,  546,  542,  547,  537,
    1254       550,  551,  849,  549,  534,  552,  536,  554,  560,  544,
    1255       545,  546,  549,  551,  555,  557,  558,  550,  561,  555,
    1256       552,  562,  554,  565,  557,  558,  564,  567,  566,  568,
    1257       560,  561,  575,  565,  564,  566,  569,  571,  562,  574,
    1258       572,  568,  569,  620,  619,  575,  571,  601,  601,  567,
    1259       572,  619,  620,  848,  847,  622,  574,  594,  594,  594,
    1260       594,  594,  594,  595,  595,  595,  595,  595,  595,  597,
    1261       601,  597,  622,  621,  597,  597,  597,  597,  597,  597,
    1262 
    1263       600,  600,  600,  600,  600,  600,  621,  602,  626,  846,
    1264       594,  596,  596,  596,  596,  596,  596,  603,  618,  603,
    1265       623,  624,  603,  618,  628,  626,  625,  596,  624,  596,
    1266       602,  596,  596,  600,  625,  627,  618,  628,  627,  603,
    1267       629,  603,  630,  623,  596,  631,  603,  632,  633,  596,
    1268       634,  596,  635,  634,  596,  636,  596,  630,  637,  638,
    1269       640,  644,  629,  639,  632,  641,  642,  631,  645,  635,
    1270       633,  646,  639,  637,  650,  642,  651,  656,  640,  638,
    1271       646,  653,  657,  636,  644,  665,  656,  641,  664,  657,
    1272       645,  667,  668,  842,  650,  665,  700,  664,  653,  699,
    1273 
    1274       667,  702,  705,  651,  714,  842,  700,  668,  686,  686,
    1275       686,  686,  686,  686,  690,  690,  690,  690,  690,  690,
    1276       699,  708,  705,  703,  686,  714,  686,  702,  686,  686,
    1277       703,  704,  706,  715,  707,  706,  704,  707,  710,  708,
    1278       712,  686,  711,  717,  710,  718,  686,  690,  686,  712,
    1279       720,  686,  717,  686,  713,  711,  716,  713,  719,  716,
    1280       721,  719,  715,  720,  722,  723,  724,  725,  721,  731,
    1281       728,  718,  732,  735,  722,  733,  725,  736,  723,  756,
    1282       757,  735,  758,  754,  756,  759,  736,  724,  728,  731,
    1283       755,  761,  758,  728,  732,  757,  733,  743,  743,  743,
    1284 
    1285       743,  743,  743,  754,  760,  763,  762,  755,  759,  762,
    1286       764,  766,  768,  769,  766,  768,  770,  761,  763,  770,
    1287       769,  760,  771,  773,  772,  771,  775,  779,  794,  797,
    1288       743,  796,  798,  800,  799,  798,  800,  801,  764,  772,
    1289       801,  803,  804,  807,  810,  805,  773,  797,  805,  775,
    1290       779,  808,  796,  810,  808,  794,  799,  809,  811,  803,
    1291       809,  812,  813,  828,  829,  807,  830,  831,  804,  830,
    1292       832,  829,  812,  834,  811,  856,  831,  833,  813,  837,
    1293       833,  875,  837,  840,  828,  856,  840,  841,  832,  843,
    1294       834,  852,  853,  867,  832,  868,  841,  853,  843,  855,
    1295 
    1296       852,  857,  855,  875,  859,  860,  857,  859,  860,  861,
    1297       868,  869,  861,  867,  869,  870,  871,  872,  878,  871,
    1298       872,  879,  882,  884,  883,  870,  885,  887,  886,  845,
    1299       888,  882,  844,  839,  838,  836,  879,  883,  835,  878,
    1300       888,  827,  826,  825,  824,  884,  886,  885,  823,  887,
    1301       892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
    1302       892,  892,  892,  893,  893,  893,  893,  893,  893,  893,
    1303       893,  893,  893,  893,  893,  893,  894,  894,  894,  894,
    1304       894,  894,  894,  894,  894,  894,  894,  894,  894,  895,
    1305       822,  821,  895,  820,  895,  895,  895,  895,  895,  896,
    1306 
    1307       819,  818,  817,  896,  896,  896,  896,  896,  896,  897,
     1191      869,  286,  235,  235,  235,  235,  235,  235,  237,  212,
     1192      237,  282,  242,  237,  242,  242,  242,  242,  234,  256,
     1193      270,  236,  241,  241,  241,  241,  241,  241,  282,  266,
     1194      237,  266,  237,  296,  267,  235,  267,  237,  281,  244,
     1195      244,  244,  244,  244,  244,  256,  270,  242,  245,  245,
     1196      245,  245,  245,  245,  281,  241,  244,  247,  278,  247,
     1197      296,  295,  247,  247,  247,  247,  247,  247,  279,  280,
     1198
     1199      283,  278,  244,  288,  295,  283,  289,  868,  244,  246,
     1200      246,  246,  246,  246,  246,  253,  279,  280,  255,  255,
     1201      255,  255,  255,  255,  289,  246,  288,  246,  291,  246,
     1202      246,  260,  260,  260,  260,  260,  260,  290,  253,  292,
     1203      253,  285,  246,  291,  253,  867,  285,  246,  294,  246,
     1204      253,  255,  246,  287,  246,  292,  292,  294,  297,  299,
     1205      293,  303,  253,  290,  260,  293,  253,  300,  287,  301,
     1206      253,  304,  300,  302,  287,  287,  297,  299,  301,  305,
     1207      302,  303,  306,  307,  308,  309,  310,  306,  307,  304,
     1208      308,  311,  312,  313,  314,  310,  318,  311,  315,  319,
     1209
     1210      305,  305,  313,  315,  309,  316,  317,  320,  312,  314,
     1211      316,  317,  322,  324,  323,  318,  326,  319,  325,  327,
     1212      320,  328,  329,  322,  330,  331,  332,  334,  317,  323,
     1213      333,  325,  324,  330,  337,  335,  338,  339,  326,  329,
     1214      340,  328,  327,  337,  343,  334,  341,  331,  335,  332,
     1215      639,  342,  333,  340,  341,  339,  342,  344,  344,  343,
     1216      345,  362,  344,  362,  344,  403,  345,  352,  352,  352,
     1217      352,  353,  353,  353,  353,  363,  403,  363,  639,  408,
     1218      338,  370,  370,  370,  370,  370,  370,  372,  382,  372,
     1219      408,  410,  372,  372,  372,  372,  372,  372,  382,  404,
     1220
     1221      352,  371,  371,  371,  371,  371,  371,  374,  374,  374,
     1222      374,  374,  374,  410,  382,  404,  405,  371,  406,  371,
     1223      412,  371,  371,  377,  377,  377,  377,  377,  377,  385,
     1224      425,  405,  383,  412,  371,  385,  389,  406,  414,  371,
     1225      374,  371,  383,  413,  371,  425,  371,  375,  375,  375,
     1226      375,  375,  375,  384,  389,  417,  377,  407,  383,  413,
     1227      414,  385,  389,  375,  375,  375,  407,  375,  375,  378,
     1228      378,  378,  378,  378,  378,  421,  384,  417,  384,  866,
     1229      375,  421,  384,  865,  388,  375,  375,  375,  384,  386,
     1230      375,  386,  375,  415,  386,  386,  386,  386,  386,  386,
     1231
     1232      384,  409,  378,  411,  384,  416,  415,  388,  384,  388,
     1233      409,  418,  411,  388,  423,  419,  422,  424,  420,  388,
     1234      419,  416,  416,  431,  427,  423,  432,  386,  433,  418,
     1235      429,  388,  434,  420,  441,  388,  424,  422,  427,  388,
     1236      420,  433,  429,  435,  431,  436,  439,  437,  432,  435,
     1237      442,  443,  444,  445,  441,  434,  437,  446,  447,  449,
     1238      436,  439,  451,  453,  452,  456,  443,  447,  445,  454,
     1239      455,  457,  442,  452,  444,  458,  449,  446,  459,  460,
     1240      457,  461,  462,  463,  453,  451,  460,  456,  461,  454,
     1241      455,  459,  464,  458,  465,  466,  468,  470,  528,  469,
     1242
     1243      464,  528,  861,  470,  519,  463,  466,  462,  469,  524,
     1244      464,  465,  479,  479,  479,  479,  518,  519,  468,  490,
     1245      490,  490,  490,  490,  490,  492,  492,  492,  492,  492,
     1246      492,  524,  544,  518,  522,  490,  521,  490,  544,  490,
     1247      490,  493,  493,  493,  493,  493,  493,  497,  526,  498,
     1248      494,  521,  490,  526,  522,  496,  532,  490,  492,  490,
     1249      494,  495,  490,  495,  490,  496,  495,  495,  495,  495,
     1250      495,  495,  567,  497,  493,  498,  494,  532,  523,  525,
     1251      567,  496,  500,  500,  500,  500,  500,  500,  502,  529,
     1252      502,  523,  525,  502,  502,  502,  502,  502,  502,  495,
     1253
     1254      501,  501,  501,  501,  501,  501,  527,  530,  531,  529,
     1255      533,  857,  536,  535,  539,  537,  501,  527,  501,  533,
     1256      501,  501,  530,  534,  535,  536,  538,  531,  534,  540,
     1257      541,  547,  542,  501,  548,  538,  539,  542,  501,  541,
     1258      501,  545,  549,  501,  537,  501,  540,  550,  547,  548,
     1259      545,  552,  553,  554,  558,  555,  550,  549,  557,  558,
     1260      552,  563,  560,  561,  564,  554,  568,  565,  569,  553,
     1261      555,  560,  561,  557,  570,  569,  568,  564,  571,  572,
     1262      574,  575,  577,  563,  565,  572,  713,  578,  622,  574,
     1263      571,  575,  713,  604,  604,  622,  570,  625,  854,  577,
     1264
     1265      578,  597,  597,  597,  597,  597,  597,  598,  598,  598,
     1266      598,  598,  598,  600,  625,  600,  604,  624,  600,  600,
     1267      600,  600,  600,  600,  603,  603,  603,  603,  603,  603,
     1268      624,  605,  814,  629,  597,  599,  599,  599,  599,  599,
     1269      599,  606,  621,  606,  626,  627,  606,  621,  814,  623,
     1270      629,  599,  627,  599,  605,  599,  599,  603,  623,  630,
     1271      621,  628,  630,  606,  631,  606,  632,  626,  599,  628,
     1272      606,  633,  634,  599,  635,  599,  636,  631,  599,  637,
     1273      599,  640,  637,  638,  641,  643,  633,  644,  632,  647,
     1274      642,  635,  645,  648,  634,  705,  640,  649,  636,  642,
     1275
     1276      638,  645,  653,  643,  641,  654,  649,  656,  659,  644,
     1277      667,  660,  647,  668,  671,  648,  670,  659,  660,  667,
     1278      703,  705,  653,  668,  656,  670,  702,  853,  708,  671,
     1279      703,  852,  654,  689,  689,  689,  689,  689,  689,  693,
     1280      693,  693,  693,  693,  693,  706,  711,  702,  708,  689,
     1281      707,  689,  706,  689,  689,  707,  709,  710,  715,  709,
     1282      710,  714,  716,  717,  711,  716,  689,  715,  718,  721,
     1283      720,  689,  693,  689,  714,  723,  689,  719,  689,  720,
     1284      719,  724,  722,  725,  717,  722,  726,  727,  723,  724,
     1285      735,  728,  731,  725,  734,  721,  736,  718,  738,  726,
     1286
     1287      728,  760,  739,  761,  757,  762,  738,  764,  727,  758,
     1288      731,  739,  735,  761,  734,  731,  760,  736,  746,  746,
     1289      746,  746,  746,  746,  757,  759,  758,  763,  762,  765,
     1290      759,  767,  765,  764,  766,  769,  771,  773,  769,  771,
     1291      773,  772,  774,  775,  763,  774,  776,  766,  772,  778,
     1292      782,  746,  797,  799,  802,  807,  810,  800,  775,  767,
     1293      801,  803,  804,  801,  803,  804,  806,  808,  811,  776,
     1294      808,  811,  778,  782,  799,  800,  802,  812,  810,  797,
     1295      812,  807,  813,  815,  806,  816,  831,  833,  832,  834,
     1296      833,  813,  835,  836,  815,  832,  836,  837,  834,  840,
     1297
     1298      843,  816,  840,  843,  844,  845,  846,  831,  858,  855,
     1299      835,  858,  859,  844,  837,  846,  835,  845,  855,  856,
     1300      860,  870,  859,  862,  856,  860,  862,  863,  864,  871,
     1301      863,  864,  872,  873,  874,  872,  875,  874,  878,  875,
     1302      881,  870,  882,  873,  871,  885,  886,  887,  889,  888,
     1303      890,  851,  891,  850,  885,  849,  848,  882,  847,  886,
     1304      878,  881,  891,  842,  841,  839,  889,  838,  830,  887,
     1305      888,  829,  890,  895,  895,  895,  895,  895,  895,  895,
     1306      895,  895,  895,  895,  895,  895,  896,  896,  896,  896,
     1307      896,  896,  896,  896,  896,  896,  896,  896,  896,  897,
     1308
    13081309      897,  897,  897,  897,  897,  897,  897,  897,  897,  897,
    1309       897,  897,  898,  816,  815,  898,  814,  898,  898,  898,
    1310       898,  898,  899,  806,  899,  899,  802,  899,  899,  899,
    1311       899,  899,  899,  795,  899,  900,  793,  792,  900,  900,
    1312       900,  900,  900,  900,  900,  900,  791,  900,  901,  901,
    1313       901,  901,  901,  901,  901,  901,  901,  901,  901,  901,
    1314       901,  902,  902,  790,  902,  789,  788,  787,  902,  903,
    1315       786,  785,  903,  784,  903,  903,  903,  903,  903,  904,
    1316       783,  904,  782,  781,  780,  904,  905,  778,  905,  777,
    1317 
    1318       776,  774,  905,  906,  767,  906,  765,  753,  752,  906,
    1319       907,  751,  907,  750,  749,  748,  907,  908,  747,  908,
    1320       746,  745,  742,  908,  909,  741,  909,  740,  734,  730,
    1321       909,  910,  729,  910,  727,  726,  709,  910,  911,  701,
    1322       911,  698,  693,  691,  911,  912,  687,  912,  677,  673,
    1323       671,  912,  913,  913,  913,  913,  913,  913,  913,  913,
    1324       913,  913,  913,  913,  913,  914,  669,  914,  915,  915,
    1325       666,  915,  915,  915,  663,  915,  916,  916,  662,  916,
    1326       917,  661,  917,  660,  659,  658,  917,  918,  655,  918,
    1327       654,  652,  649,  918,  919,  648,  919,  647,  643,  616,
    1328 
    1329       919,  920,  612,  920,  921,  610,  921,  608,  606,  604,
    1330       921,  922,  598,  922,  923,  592,  590,  923,  588,  923,
    1331       923,  923,  923,  923,  924,  924,  924,  924,  924,  924,
    1332       924,  924,  924,  924,  924,  924,  924,  925,  925,  925,
    1333       925,  925,  925,  925,  925,  925,  925,  925,  925,  925,
    1334       926,  586,  926,  584,  582,  580,  926,  927,  578,  927,
    1335       577,  576,  573,  927,  928,  570,  928,  563,  559,  556,
    1336       928,  929,  553,  929,  930,  548,  930,  543,  540,  517,
    1337       930,  931,  513,  931,  932,  511,  932,  509,  507,  505,
    1338       932,  933,  503,  933,  934,  502,  934,  501,  500,  489,
    1339 
    1340       934,  935,  486,  935,  936,  484,  936,  483,  482,  480,
    1341       936,  937,  478,  937,  938,  475,  938,  473,  471,  469,
    1342       938,  939,  465,  939,  940,  448,  940,  446,  438,  436,
    1343       940,  941,  428,  941,  942,  426,  942,  424,  942,  398,
    1344       942,  943,  396,  943,  394,  943,  392,  943,  944,  944,
    1345       391,  944,  944,  944,  390,  944,  945,  377,  945,  367,
    1346       365,  364,  945,  946,  360,  946,  358,  356,  354,  946,
    1347       947,  350,  947,  348,  347,  346,  947,  948,  336,  948,
    1348       949,  321,  949,  298,  277,  275,  949,  950,  273,  950,
    1349       951,  272,  951,  271,  269,  268,  951,  952,  263,  952,
    1350 
    1351       953,  259,  953,  258,  254,  251,  953,  954,  250,  954,
    1352       955,  239,  238,  955,  231,  955,  955,  955,  955,  955,
    1353       956,  956,  956,  956,  956,  956,  956,  956,  956,  956,
    1354       956,  956,  956,  957,  230,  957,  227,  217,  215,  957,
    1355       958,  214,  958,  959,  213,  959,  207,  206,  204,  959,
    1356       960,  199,  960,  961,  178,  961,  149,  147,  146,  961,
    1357       962,  140,  962,  963,  138,  963,  136,  128,  125,  963,
    1358       964,  124,  964,  965,  120,  965,  101,   98,   95,  965,
    1359       966,   93,  966,  967,   86,  967,   72,   70,   66,  967,
    1360       968,   36,  968,  969,   33,  969,   18,   11,    4,  969,
    1361 
    1362       970,    3,  970,    0,    0,    0,  970,  971,    0,  971,
    1363       972,    0,  972,    0,    0,    0,  972,  973,    0,  973,
    1364       974,    0,  974,    0,  974,    0,  974,  975,    0,  975,
    1365         0,    0,    0,  975,  976,    0,  976,    0,    0,    0,
    1366       976,  977,    0,  977,  978,    0,  978,    0,    0,    0,
    1367       978,  979,    0,  979,  980,    0,  980,    0,    0,    0,
    1368       980,  981,    0,  981,  982,    0,  982,    0,    0,    0,
    1369       982,  983,    0,  983,  984,    0,  984,    0,    0,    0,
    1370       984,  985,    0,  985,  986,    0,  986,    0,    0,    0,
    1371       986,  987,    0,  987,  988,    0,    0,  988,    0,  988,
    1372 
    1373       988,  988,  988,  988,  989,  989,  989,  989,  989,  989,
    1374       989,  989,  989,  989,  989,  989,  989,  990,    0,  990,
    1375         0,    0,    0,  990,  991,    0,  991,  992,    0,  992,
    1376         0,    0,    0,  992,  993,    0,  993,  994,    0,  994,
    1377         0,    0,    0,  994,  995,    0,  995,  996,    0,  996,
    1378         0,    0,    0,  996,  997,    0,  997,  998,    0,  998,
    1379         0,    0,    0,  998,  999,    0,  999, 1000,    0, 1000,
    1380         0,    0,    0, 1000, 1001,    0, 1001, 1002,    0, 1002,
    1381         0,    0,    0, 1002, 1003,    0, 1003, 1004,    0, 1004,
    1382         0,    0,    0, 1004, 1005,    0, 1005, 1006,    0, 1006,
    1383 
    1384         0,    0,    0, 1006, 1007,    0, 1007,    0,    0,    0,
    1385      1007, 1008,    0, 1008, 1009,    0, 1009,    0,    0,    0,
    1386      1009, 1010,    0, 1010, 1011,    0, 1011,    0,    0,    0,
    1387      1011, 1012,    0, 1012, 1013,    0, 1013,    0,    0,    0,
    1388      1013, 1014,    0, 1014, 1015,    0, 1015, 1016,    0, 1016,
    1389      1017,    0,    0, 1017,    0, 1017, 1017, 1017, 1017, 1017,
    1390      1018,    0, 1018, 1019, 1019, 1019, 1019, 1019, 1019, 1019,
    1391      1019, 1019, 1019, 1019, 1019, 1019, 1020,    0, 1020,    0,
    1392         0,    0, 1020, 1021,    0, 1021, 1022,    0, 1022,    0,
    1393         0,    0, 1022, 1023,    0, 1023, 1024,    0, 1024, 1025,
    1394 
    1395         0, 1025, 1026,    0,    0, 1026,    0, 1026, 1026, 1026,
    1396      1026, 1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0,
    1397      1029, 1030,    0, 1030, 1031,    0, 1031, 1032,    0, 1032,
    1398      1033,    0, 1033, 1034,    0, 1034,    0,    0,    0, 1034,
    1399      1035,    0, 1035, 1036,    0, 1036,    0,    0,    0, 1036,
    1400      1037,    0, 1037, 1038,    0, 1038, 1039,    0, 1039, 1040,
    1401         0, 1040, 1041,    0, 1041,    0,    0,    0, 1041, 1042,
    1402         0,    0, 1042,    0, 1042, 1042, 1042, 1042, 1042, 1043,
    1403         0, 1043, 1044,    0, 1044, 1045,    0, 1045, 1046,    0,
    1404      1046,    0,    0,    0, 1046, 1047,    0, 1047,    0,    0,
    1405 
    1406         0, 1047, 1048,    0, 1048,    0,    0,    0, 1048, 1049,
    1407         0, 1049, 1050,    0, 1050,    0,    0,    0, 1050, 1051,
    1408         0, 1051,    0,    0,    0, 1051, 1052,    0, 1052,    0,
    1409         0,    0, 1052, 1053,    0, 1053,    0,    0,    0, 1053,
    1410      1054,    0, 1054,    0,    0,    0, 1054, 1055,    0, 1055,
    1411         0,    0,    0, 1055, 1056,    0, 1056,    0,    0,    0,
    1412      1056, 1057,    0, 1057,    0,    0,    0, 1057, 1058,    0,
    1413      1058,    0,    0,    0, 1058, 1059,    0, 1059,    0,    0,
    1414         0, 1059, 1060,    0, 1060,    0,    0,    0, 1060, 1061,
    1415         0, 1061,    0,    0,    0, 1061, 1062,    0, 1062,    0,
    1416 
    1417         0,    0, 1062, 1063,    0, 1063,    0,    0,    0, 1063,
    1418      1064,    0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,
    1419         0,    0,    0, 1065,  891,  891,  891,  891,  891,  891,
    1420       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1421       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1422       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1423       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1424       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1425       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1426       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1427 
    1428       891,  891,  891,  891,  891,  891,  891,  891,  891,  891
     1310      897,  897,  898,  828,  827,  898,  826,  898,  898,  898,
     1311      898,  898,  899,  825,  824,  823,  899,  899,  899,  899,
     1312      899,  899,  900,  900,  900,  900,  900,  900,  900,  900,
     1313      900,  900,  900,  900,  900,  901,  822,  821,  901,  820,
     1314      901,  901,  901,  901,  901,  902,  819,  902,  902,  818,
     1315      902,  902,  902,  902,  902,  902,  817,  902,  903,  809,
     1316      805,  903,  903,  903,  903,  903,  903,  903,  903,  798,
     1317      903,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1318      904,  904,  904,  904,  905,  905,  796,  905,  795,  794,
     1319
     1320      793,  905,  906,  792,  791,  906,  790,  906,  906,  906,
     1321      906,  906,  907,  789,  907,  788,  787,  786,  907,  908,
     1322      785,  908,  784,  783,  781,  908,  909,  780,  909,  779,
     1323      777,  770,  909,  910,  768,  910,  756,  755,  754,  910,
     1324      911,  753,  911,  752,  751,  750,  911,  912,  749,  912,
     1325      748,  745,  744,  912,  913,  743,  913,  737,  733,  732,
     1326      913,  914,  730,  914,  729,  712,  704,  914,  915,  701,
     1327      915,  696,  694,  690,  915,  916,  680,  916,  917,  917,
     1328      676,  917,  917,  917,  674,  917,  918,  918,  672,  918,
     1329      919,  669,  666,  919,  665,  919,  919,  919,  919,  919,
     1330
     1331      920,  664,  920,  663,  662,  661,  920,  921,  658,  921,
     1332      657,  655,  652,  921,  922,  651,  922,  650,  646,  619,
     1333      922,  923,  615,  923,  924,  613,  924,  611,  609,  607,
     1334      924,  925,  601,  925,  926,  595,  593,  926,  591,  926,
     1335      926,  926,  926,  926,  927,  927,  927,  927,  927,  927,
     1336      927,  927,  927,  927,  927,  927,  927,  928,  928,  928,
     1337      928,  928,  928,  928,  928,  928,  928,  928,  928,  928,
     1338      929,  589,  929,  587,  585,  583,  929,  930,  581,  930,
     1339      580,  579,  576,  930,  931,  573,  931,  566,  562,  559,
     1340      931,  932,  556,  932,  933,  551,  933,  546,  543,  520,
     1341
     1342      933,  934,  516,  934,  935,  514,  935,  512,  510,  508,
     1343      935,  936,  506,  936,  937,  505,  937,  504,  503,  491,
     1344      937,  938,  488,  938,  939,  486,  939,  485,  484,  482,
     1345      939,  940,  480,  940,  941,  477,  941,  475,  473,  471,
     1346      941,  942,  467,  942,  943,  450,  943,  448,  440,  438,
     1347      943,  944,  430,  944,  945,  428,  945,  426,  945,  400,
     1348      945,  946,  398,  946,  396,  946,  394,  946,  947,  947,
     1349      393,  947,  947,  947,  392,  947,  948,  379,  948,  376,
     1350      367,  365,  948,  949,  364,  949,  360,  358,  356,  949,
     1351      950,  354,  950,  350,  348,  347,  950,  951,  346,  951,
     1352
     1353      952,  336,  952,  321,  298,  277,  952,  953,  275,  953,
     1354      954,  273,  954,  272,  271,  269,  954,  955,  268,  955,
     1355      956,  263,  956,  259,  258,  254,  956,  957,  251,  957,
     1356      958,  250,  239,  958,  238,  958,  958,  958,  958,  958,
     1357      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
     1358      959,  959,  959,  960,  231,  960,  230,  227,  217,  960,
     1359      961,  215,  961,  962,  214,  962,  213,  207,  206,  962,
     1360      963,  204,  963,  964,  199,  964,  178,  149,  147,  964,
     1361      965,  146,  965,  966,  140,  966,  138,  136,  128,  966,
     1362      967,  125,  967,  968,  124,  968,  120,  101,   98,  968,
     1363
     1364      969,   95,  969,  970,   93,  970,   86,   72,   70,  970,
     1365      971,   66,  971,  972,   36,  972,   33,   18,   11,  972,
     1366      973,    4,  973,    3,    0,    0,  973,  974,    0,  974,
     1367      975,    0,  975,    0,    0,    0,  975,  976,    0,  976,
     1368      977,    0,  977,    0,  977,    0,  977,  978,    0,  978,
     1369        0,    0,    0,  978,  979,    0,  979,    0,    0,    0,
     1370      979,  980,    0,  980,  981,    0,  981,    0,    0,    0,
     1371      981,  982,    0,  982,  983,    0,  983,    0,    0,    0,
     1372      983,  984,    0,  984,  985,    0,  985,    0,    0,    0,
     1373      985,  986,    0,  986,  987,    0,  987,    0,    0,    0,
     1374
     1375      987,  988,    0,  988,  989,    0,  989,    0,    0,    0,
     1376      989,  990,    0,  990,  991,    0,    0,  991,    0,  991,
     1377      991,  991,  991,  991,  992,  992,  992,  992,  992,  992,
     1378      992,  992,  992,  992,  992,  992,  992,  993,    0,  993,
     1379        0,    0,    0,  993,  994,    0,  994,  995,    0,  995,
     1380        0,    0,    0,  995,  996,    0,  996,  997,    0,  997,
     1381        0,    0,    0,  997,  998,    0,  998,  999,    0,  999,
     1382        0,    0,    0,  999, 1000,    0, 1000, 1001,    0, 1001,
     1383        0,    0,    0, 1001, 1002,    0, 1002, 1003,    0, 1003,
     1384        0,    0,    0, 1003, 1004,    0, 1004, 1005,    0, 1005,
     1385
     1386        0,    0,    0, 1005, 1006,    0, 1006, 1007,    0, 1007,
     1387        0,    0,    0, 1007, 1008,    0, 1008, 1009,    0, 1009,
     1388        0,    0,    0, 1009, 1010,    0, 1010,    0,    0,    0,
     1389     1010, 1011,    0, 1011, 1012,    0, 1012,    0,    0,    0,
     1390     1012, 1013,    0, 1013, 1014,    0, 1014,    0,    0,    0,
     1391     1014, 1015,    0, 1015, 1016,    0, 1016,    0,    0,    0,
     1392     1016, 1017,    0, 1017, 1018,    0, 1018, 1019,    0, 1019,
     1393     1020,    0,    0, 1020,    0, 1020, 1020, 1020, 1020, 1020,
     1394     1021,    0, 1021, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
     1395     1022, 1022, 1022, 1022, 1022, 1022, 1023,    0, 1023,    0,
     1396
     1397        0,    0, 1023, 1024,    0, 1024, 1025,    0, 1025,    0,
     1398        0,    0, 1025, 1026,    0, 1026, 1027,    0, 1027, 1028,
     1399        0, 1028, 1029,    0,    0, 1029,    0, 1029, 1029, 1029,
     1400     1029, 1029, 1030,    0, 1030, 1031,    0, 1031, 1032,    0,
     1401     1032, 1033,    0, 1033, 1034,    0, 1034, 1035,    0, 1035,
     1402     1036,    0, 1036, 1037,    0, 1037,    0,    0,    0, 1037,
     1403     1038,    0, 1038, 1039,    0, 1039,    0,    0,    0, 1039,
     1404     1040,    0, 1040, 1041,    0, 1041, 1042,    0, 1042, 1043,
     1405        0, 1043, 1044,    0, 1044,    0,    0,    0, 1044, 1045,
     1406        0,    0, 1045,    0, 1045, 1045, 1045, 1045, 1045, 1046,
     1407
     1408        0, 1046, 1047,    0, 1047, 1048,    0, 1048, 1049,    0,
     1409     1049,    0,    0,    0, 1049, 1050,    0, 1050,    0,    0,
     1410        0, 1050, 1051,    0, 1051,    0,    0,    0, 1051, 1052,
     1411        0, 1052, 1053,    0, 1053,    0,    0,    0, 1053, 1054,
     1412        0, 1054,    0,    0,    0, 1054, 1055,    0, 1055,    0,
     1413        0,    0, 1055, 1056,    0, 1056,    0,    0,    0, 1056,
     1414     1057,    0, 1057,    0,    0,    0, 1057, 1058,    0, 1058,
     1415        0,    0,    0, 1058, 1059,    0, 1059,    0,    0,    0,
     1416     1059, 1060,    0, 1060,    0,    0,    0, 1060, 1061,    0,
     1417     1061,    0,    0,    0, 1061, 1062,    0, 1062,    0,    0,
     1418
     1419        0, 1062, 1063,    0, 1063,    0,    0,    0, 1063, 1064,
     1420        0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,    0,
     1421        0,    0, 1065, 1066,    0, 1066,    0,    0,    0, 1066,
     1422     1067,    0, 1067,    0,    0,    0, 1067, 1068,    0, 1068,
     1423        0,    0,    0, 1068,  894,  894,  894,  894,  894,  894,
     1424      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1425      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1426      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1427      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1428      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1429
     1430      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1431      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1432      894,  894,  894,  894,  894,  894,  894,  894,  894,  894
    14291433    } ;
    14301434
    14311435/* Table of booleans, true if rule could match eol. */
    1432 static yyconst flex_int32_t yy_rule_can_match_eol[182] =
     1436static yyconst flex_int32_t yy_rule_can_match_eol[184] =
    14331437    {   0,
    143414381, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    14371441    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14381442    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1439     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
    1440     1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1443    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
     1444    0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14411445    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14421446    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1443     0, 0,     };
     1447    0, 0, 0, 0,     };
    14441448
    14451449static yy_state_type yy_last_accepting_state;
     
    14691473 * Created On       : Sat Sep 22 08:58:10 2001
    14701474 * Last Modified By : Peter A. Buhr
    1471  * Last Modified On : Wed Aug 24 13:27:04 2016
    1472  * Update Count     : 487
     1475 * Last Modified On : Wed Oct 26 17:32:30 2016
     1476 * Update Count     : 499
    14731477 */
    14741478#line 20 "lex.ll"
     
    15171521
    15181522// identifier, GCC: $ in identifier
    1519 // quoted identifier
    15201523// attribute identifier, GCC: $ in identifier
    15211524// numeric constants, CFA: '_' in constant
     
    15321535
    15331536
    1534 #line 1535 "Parser/lex.cc"
     1537#line 1538 "Parser/lex.cc"
    15351538
    15361539#define INITIAL 0
     
    17241727        register int yy_act;
    17251728   
    1726 #line 139 "lex.ll"
     1729#line 138 "lex.ll"
    17271730
    17281731                                   /* line directives */
    1729 #line 1730 "Parser/lex.cc"
     1732#line 1733 "Parser/lex.cc"
    17301733
    17311734        if ( !(yy_init) )
     
    17811784                                {
    17821785                                yy_current_state = (int) yy_def[yy_current_state];
    1783                                 if ( yy_current_state >= 892 )
     1786                                if ( yy_current_state >= 895 )
    17841787                                        yy_c = yy_meta[(unsigned int) yy_c];
    17851788                                }
     
    17871790                        ++yy_cp;
    17881791                        }
    1789                 while ( yy_base[yy_current_state] != 2825 );
     1792                while ( yy_base[yy_current_state] != 2845 );
    17901793
    17911794yy_find_action:
     
    18241827/* rule 1 can match eol */
    18251828YY_RULE_SETUP
    1826 #line 141 "lex.ll"
     1829#line 140 "lex.ll"
    18271830{
    18281831        /* " stop highlighting */
     
    18501853/* rule 2 can match eol */
    18511854YY_RULE_SETUP
    1852 #line 163 "lex.ll"
     1855#line 162 "lex.ll"
    18531856;
    18541857        YY_BREAK
     
    18561859case 3:
    18571860YY_RULE_SETUP
    1858 #line 166 "lex.ll"
     1861#line 165 "lex.ll"
    18591862{ BEGIN COMMENT; }
    18601863        YY_BREAK
     
    18621865/* rule 4 can match eol */
    18631866YY_RULE_SETUP
     1867#line 166 "lex.ll"
     1868;
     1869        YY_BREAK
     1870case 5:
     1871YY_RULE_SETUP
    18641872#line 167 "lex.ll"
    1865 ;
    1866         YY_BREAK
    1867 case 5:
    1868 YY_RULE_SETUP
    1869 #line 168 "lex.ll"
    18701873{ BEGIN 0; }
    18711874        YY_BREAK
     
    18741877/* rule 6 can match eol */
    18751878YY_RULE_SETUP
    1876 #line 171 "lex.ll"
     1879#line 170 "lex.ll"
    18771880;
    18781881        YY_BREAK
     
    18801883case 7:
    18811884YY_RULE_SETUP
     1885#line 173 "lex.ll"
     1886{ WHITE_RETURN(' '); }
     1887        YY_BREAK
     1888case 8:
     1889YY_RULE_SETUP
    18821890#line 174 "lex.ll"
    18831891{ WHITE_RETURN(' '); }
    18841892        YY_BREAK
    1885 case 8:
    1886 YY_RULE_SETUP
    1887 #line 175 "lex.ll"
    1888 { WHITE_RETURN(' '); }
    1889         YY_BREAK
    18901893case 9:
    18911894/* rule 9 can match eol */
    18921895YY_RULE_SETUP
    1893 #line 176 "lex.ll"
     1896#line 175 "lex.ll"
    18941897{ NEWLINE_RETURN(); }
    18951898        YY_BREAK
     
    18971900case 10:
    18981901YY_RULE_SETUP
     1902#line 178 "lex.ll"
     1903{ KEYWORD_RETURN(ALIGNAS); }                    // C11
     1904        YY_BREAK
     1905case 11:
     1906YY_RULE_SETUP
    18991907#line 179 "lex.ll"
    1900 { KEYWORD_RETURN(ALIGNAS); }                    // C11
    1901         YY_BREAK
    1902 case 11:
     1908{ KEYWORD_RETURN(ALIGNOF); }                    // C11
     1909        YY_BREAK
     1910case 12:
    19031911YY_RULE_SETUP
    19041912#line 180 "lex.ll"
    1905 { KEYWORD_RETURN(ALIGNOF); }                    // C11
    1906         YY_BREAK
    1907 case 12:
     1913{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
     1914        YY_BREAK
     1915case 13:
    19081916YY_RULE_SETUP
    19091917#line 181 "lex.ll"
    19101918{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
    19111919        YY_BREAK
    1912 case 13:
     1920case 14:
    19131921YY_RULE_SETUP
    19141922#line 182 "lex.ll"
    1915 { KEYWORD_RETURN(ALIGNOF); }                    // GCC
    1916         YY_BREAK
    1917 case 14:
     1923{ KEYWORD_RETURN(ASM); }
     1924        YY_BREAK
     1925case 15:
    19181926YY_RULE_SETUP
    19191927#line 183 "lex.ll"
    1920 { KEYWORD_RETURN(ASM); }
    1921         YY_BREAK
    1922 case 15:
     1928{ KEYWORD_RETURN(ASM); }                                // GCC
     1929        YY_BREAK
     1930case 16:
    19231931YY_RULE_SETUP
    19241932#line 184 "lex.ll"
    19251933{ KEYWORD_RETURN(ASM); }                                // GCC
    19261934        YY_BREAK
    1927 case 16:
     1935case 17:
    19281936YY_RULE_SETUP
    19291937#line 185 "lex.ll"
    1930 { KEYWORD_RETURN(ASM); }                                // GCC
    1931         YY_BREAK
    1932 case 17:
     1938{ KEYWORD_RETURN(AT); }                                 // CFA
     1939        YY_BREAK
     1940case 18:
    19331941YY_RULE_SETUP
    19341942#line 186 "lex.ll"
    1935 { KEYWORD_RETURN(AT); }                                 // CFA
    1936         YY_BREAK
    1937 case 18:
     1943{ KEYWORD_RETURN(ATOMIC); }                             // C11
     1944        YY_BREAK
     1945case 19:
    19381946YY_RULE_SETUP
    19391947#line 187 "lex.ll"
    1940 { KEYWORD_RETURN(ATOMIC); }                             // C11
    1941         YY_BREAK
    1942 case 19:
     1948{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     1949        YY_BREAK
     1950case 20:
    19431951YY_RULE_SETUP
    19441952#line 188 "lex.ll"
    19451953{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    19461954        YY_BREAK
    1947 case 20:
     1955case 21:
    19481956YY_RULE_SETUP
    19491957#line 189 "lex.ll"
    1950 { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    1951         YY_BREAK
    1952 case 21:
     1958{ KEYWORD_RETURN(AUTO); }
     1959        YY_BREAK
     1960case 22:
    19531961YY_RULE_SETUP
    19541962#line 190 "lex.ll"
    1955 { KEYWORD_RETURN(AUTO); }
    1956         YY_BREAK
    1957 case 22:
     1963{ KEYWORD_RETURN(BOOL); }                               // C99
     1964        YY_BREAK
     1965case 23:
    19581966YY_RULE_SETUP
    19591967#line 191 "lex.ll"
    1960 { KEYWORD_RETURN(BOOL); }                               // C99
    1961         YY_BREAK
    1962 case 23:
     1968{ KEYWORD_RETURN(BREAK); }
     1969        YY_BREAK
     1970case 24:
    19631971YY_RULE_SETUP
    19641972#line 192 "lex.ll"
    1965 { KEYWORD_RETURN(BREAK); }
    1966         YY_BREAK
    1967 case 24:
     1973{ KEYWORD_RETURN(CASE); }
     1974        YY_BREAK
     1975case 25:
    19681976YY_RULE_SETUP
    19691977#line 193 "lex.ll"
    1970 { KEYWORD_RETURN(CASE); }
    1971         YY_BREAK
    1972 case 25:
     1978{ KEYWORD_RETURN(CATCH); }                              // CFA
     1979        YY_BREAK
     1980case 26:
    19731981YY_RULE_SETUP
    19741982#line 194 "lex.ll"
    1975 { KEYWORD_RETURN(CATCH); }                              // CFA
    1976         YY_BREAK
    1977 case 26:
     1983{ KEYWORD_RETURN(CATCHRESUME); }                // CFA
     1984        YY_BREAK
     1985case 27:
    19781986YY_RULE_SETUP
    19791987#line 195 "lex.ll"
    1980 { KEYWORD_RETURN(CATCHRESUME); }                // CFA
    1981         YY_BREAK
    1982 case 27:
     1988{ KEYWORD_RETURN(CHAR); }
     1989        YY_BREAK
     1990case 28:
    19831991YY_RULE_SETUP
    19841992#line 196 "lex.ll"
    1985 { KEYWORD_RETURN(CHAR); }
    1986         YY_BREAK
    1987 case 28:
     1993{ KEYWORD_RETURN(CHOOSE); }                             // CFA
     1994        YY_BREAK
     1995case 29:
    19881996YY_RULE_SETUP
    19891997#line 197 "lex.ll"
    1990 { KEYWORD_RETURN(CHOOSE); }                             // CFA
    1991         YY_BREAK
    1992 case 29:
     1998{ KEYWORD_RETURN(COMPLEX); }                    // C99
     1999        YY_BREAK
     2000case 30:
    19932001YY_RULE_SETUP
    19942002#line 198 "lex.ll"
    1995 { KEYWORD_RETURN(COMPLEX); }                    // C99
    1996         YY_BREAK
    1997 case 30:
     2003{ KEYWORD_RETURN(COMPLEX); }                    // GCC
     2004        YY_BREAK
     2005case 31:
    19982006YY_RULE_SETUP
    19992007#line 199 "lex.ll"
    20002008{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    20012009        YY_BREAK
    2002 case 31:
     2010case 32:
    20032011YY_RULE_SETUP
    20042012#line 200 "lex.ll"
    2005 { KEYWORD_RETURN(COMPLEX); }                    // GCC
    2006         YY_BREAK
    2007 case 32:
     2013{ KEYWORD_RETURN(CONST); }
     2014        YY_BREAK
     2015case 33:
    20082016YY_RULE_SETUP
    20092017#line 201 "lex.ll"
    2010 { KEYWORD_RETURN(CONST); }
    2011         YY_BREAK
    2012 case 33:
     2018{ KEYWORD_RETURN(CONST); }                              // GCC
     2019        YY_BREAK
     2020case 34:
    20132021YY_RULE_SETUP
    20142022#line 202 "lex.ll"
    20152023{ KEYWORD_RETURN(CONST); }                              // GCC
    20162024        YY_BREAK
    2017 case 34:
     2025case 35:
    20182026YY_RULE_SETUP
    20192027#line 203 "lex.ll"
    2020 { KEYWORD_RETURN(CONST); }                              // GCC
    2021         YY_BREAK
    2022 case 35:
     2028{ KEYWORD_RETURN(CONTINUE); }
     2029        YY_BREAK
     2030case 36:
    20232031YY_RULE_SETUP
    20242032#line 204 "lex.ll"
    2025 { KEYWORD_RETURN(CONTINUE); }
    2026         YY_BREAK
    2027 case 36:
     2033{ KEYWORD_RETURN(DEFAULT); }
     2034        YY_BREAK
     2035case 37:
    20282036YY_RULE_SETUP
    20292037#line 205 "lex.ll"
    2030 { KEYWORD_RETURN(DEFAULT); }
    2031         YY_BREAK
    2032 case 37:
     2038{ KEYWORD_RETURN(DISABLE); }                    // CFA
     2039        YY_BREAK
     2040case 38:
    20332041YY_RULE_SETUP
    20342042#line 206 "lex.ll"
    2035 { KEYWORD_RETURN(DISABLE); }                    // CFA
    2036         YY_BREAK
    2037 case 38:
     2043{ KEYWORD_RETURN(DO); }
     2044        YY_BREAK
     2045case 39:
    20382046YY_RULE_SETUP
    20392047#line 207 "lex.ll"
    2040 { KEYWORD_RETURN(DO); }
    2041         YY_BREAK
    2042 case 39:
     2048{ KEYWORD_RETURN(DOUBLE); }
     2049        YY_BREAK
     2050case 40:
    20432051YY_RULE_SETUP
    20442052#line 208 "lex.ll"
    2045 { KEYWORD_RETURN(DOUBLE); }
    2046         YY_BREAK
    2047 case 40:
     2053{ KEYWORD_RETURN(DTYPE); }                              // CFA
     2054        YY_BREAK
     2055case 41:
    20482056YY_RULE_SETUP
    20492057#line 209 "lex.ll"
    2050 { KEYWORD_RETURN(DTYPE); }                              // CFA
    2051         YY_BREAK
    2052 case 41:
     2058{ KEYWORD_RETURN(ELSE); }
     2059        YY_BREAK
     2060case 42:
    20532061YY_RULE_SETUP
    20542062#line 210 "lex.ll"
    2055 { KEYWORD_RETURN(ELSE); }
    2056         YY_BREAK
    2057 case 42:
     2063{ KEYWORD_RETURN(ENABLE); }                             // CFA
     2064        YY_BREAK
     2065case 43:
    20582066YY_RULE_SETUP
    20592067#line 211 "lex.ll"
    2060 { KEYWORD_RETURN(ENABLE); }                             // CFA
    2061         YY_BREAK
    2062 case 43:
     2068{ KEYWORD_RETURN(ENUM); }
     2069        YY_BREAK
     2070case 44:
    20632071YY_RULE_SETUP
    20642072#line 212 "lex.ll"
    2065 { KEYWORD_RETURN(ENUM); }
    2066         YY_BREAK
    2067 case 44:
     2073{ KEYWORD_RETURN(EXTENSION); }                  // GCC
     2074        YY_BREAK
     2075case 45:
    20682076YY_RULE_SETUP
    20692077#line 213 "lex.ll"
    2070 { KEYWORD_RETURN(EXTENSION); }                  // GCC
    2071         YY_BREAK
    2072 case 45:
     2078{ KEYWORD_RETURN(EXTERN); }
     2079        YY_BREAK
     2080case 46:
    20732081YY_RULE_SETUP
    20742082#line 214 "lex.ll"
    2075 { KEYWORD_RETURN(EXTERN); }
    2076         YY_BREAK
    2077 case 46:
     2083{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
     2084        YY_BREAK
     2085case 47:
    20782086YY_RULE_SETUP
    20792087#line 215 "lex.ll"
    20802088{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
    20812089        YY_BREAK
    2082 case 47:
     2090case 48:
    20832091YY_RULE_SETUP
    20842092#line 216 "lex.ll"
    2085 { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    2086         YY_BREAK
    2087 case 48:
     2093{ KEYWORD_RETURN(FINALLY); }                    // CFA
     2094        YY_BREAK
     2095case 49:
    20882096YY_RULE_SETUP
    20892097#line 217 "lex.ll"
    2090 { KEYWORD_RETURN(FINALLY); }                    // CFA
    2091         YY_BREAK
    2092 case 49:
     2098{ KEYWORD_RETURN(FLOAT); }
     2099        YY_BREAK
     2100case 50:
    20932101YY_RULE_SETUP
    20942102#line 218 "lex.ll"
    2095 { KEYWORD_RETURN(FLOAT); }
    2096         YY_BREAK
    2097 case 50:
     2103{ KEYWORD_RETURN(FLOAT); }                              // GCC
     2104        YY_BREAK
     2105case 51:
    20982106YY_RULE_SETUP
    20992107#line 219 "lex.ll"
    2100 { KEYWORD_RETURN(FLOAT); }                              // GCC
    2101         YY_BREAK
    2102 case 51:
     2108{ KEYWORD_RETURN(FOR); }
     2109        YY_BREAK
     2110case 52:
    21032111YY_RULE_SETUP
    21042112#line 220 "lex.ll"
    2105 { KEYWORD_RETURN(FOR); }
    2106         YY_BREAK
    2107 case 52:
     2113{ KEYWORD_RETURN(FORALL); }                             // CFA
     2114        YY_BREAK
     2115case 53:
    21082116YY_RULE_SETUP
    21092117#line 221 "lex.ll"
    2110 { KEYWORD_RETURN(FORALL); }                             // CFA
    2111         YY_BREAK
    2112 case 53:
     2118{ KEYWORD_RETURN(FORTRAN); }
     2119        YY_BREAK
     2120case 54:
    21132121YY_RULE_SETUP
    21142122#line 222 "lex.ll"
    2115 { KEYWORD_RETURN(FORTRAN); }
    2116         YY_BREAK
    2117 case 54:
     2123{ KEYWORD_RETURN(FTYPE); }                              // CFA
     2124        YY_BREAK
     2125case 55:
    21182126YY_RULE_SETUP
    21192127#line 223 "lex.ll"
    2120 { KEYWORD_RETURN(FTYPE); }                              // CFA
    2121         YY_BREAK
    2122 case 55:
     2128{ KEYWORD_RETURN(GENERIC); }                    // C11
     2129        YY_BREAK
     2130case 56:
    21232131YY_RULE_SETUP
    21242132#line 224 "lex.ll"
    2125 { KEYWORD_RETURN(GENERIC); }                    // C11
    2126         YY_BREAK
    2127 case 56:
     2133{ KEYWORD_RETURN(GOTO); }
     2134        YY_BREAK
     2135case 57:
    21282136YY_RULE_SETUP
    21292137#line 225 "lex.ll"
    2130 { KEYWORD_RETURN(GOTO); }
    2131         YY_BREAK
    2132 case 57:
     2138{ KEYWORD_RETURN(IF); }
     2139        YY_BREAK
     2140case 58:
    21332141YY_RULE_SETUP
    21342142#line 226 "lex.ll"
    2135 { KEYWORD_RETURN(IF); }
    2136         YY_BREAK
    2137 case 58:
     2143{ KEYWORD_RETURN(IMAGINARY); }                  // C99
     2144        YY_BREAK
     2145case 59:
    21382146YY_RULE_SETUP
    21392147#line 227 "lex.ll"
    2140 { KEYWORD_RETURN(IMAGINARY); }                  // C99
    2141         YY_BREAK
    2142 case 59:
     2148{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2149        YY_BREAK
     2150case 60:
    21432151YY_RULE_SETUP
    21442152#line 228 "lex.ll"
    21452153{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    21462154        YY_BREAK
    2147 case 60:
     2155case 61:
    21482156YY_RULE_SETUP
    21492157#line 229 "lex.ll"
    2150 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
    2151         YY_BREAK
    2152 case 61:
     2158{ KEYWORD_RETURN(INLINE); }                             // C99
     2159        YY_BREAK
     2160case 62:
    21532161YY_RULE_SETUP
    21542162#line 230 "lex.ll"
    2155 { KEYWORD_RETURN(INLINE); }                             // C99
    2156         YY_BREAK
    2157 case 62:
     2163{ KEYWORD_RETURN(INLINE); }                             // GCC
     2164        YY_BREAK
     2165case 63:
    21582166YY_RULE_SETUP
    21592167#line 231 "lex.ll"
    21602168{ KEYWORD_RETURN(INLINE); }                             // GCC
    21612169        YY_BREAK
    2162 case 63:
     2170case 64:
    21632171YY_RULE_SETUP
    21642172#line 232 "lex.ll"
    2165 { KEYWORD_RETURN(INLINE); }                             // GCC
    2166         YY_BREAK
    2167 case 64:
     2173{ KEYWORD_RETURN(INT); }
     2174        YY_BREAK
     2175case 65:
    21682176YY_RULE_SETUP
    21692177#line 233 "lex.ll"
    2170 { KEYWORD_RETURN(INT); }
    2171         YY_BREAK
    2172 case 65:
     2178{ KEYWORD_RETURN(INT); }                                // GCC
     2179        YY_BREAK
     2180case 66:
    21732181YY_RULE_SETUP
    21742182#line 234 "lex.ll"
    2175 { KEYWORD_RETURN(INT); }                                // GCC
    2176         YY_BREAK
    2177 case 66:
     2183{ KEYWORD_RETURN(LABEL); }                              // GCC
     2184        YY_BREAK
     2185case 67:
    21782186YY_RULE_SETUP
    21792187#line 235 "lex.ll"
    2180 { KEYWORD_RETURN(LABEL); }                              // GCC
    2181         YY_BREAK
    2182 case 67:
     2188{ KEYWORD_RETURN(LONG); }
     2189        YY_BREAK
     2190case 68:
    21832191YY_RULE_SETUP
    21842192#line 236 "lex.ll"
    2185 { KEYWORD_RETURN(LONG); }
    2186         YY_BREAK
    2187 case 68:
     2193{ KEYWORD_RETURN(LVALUE); }                             // CFA
     2194        YY_BREAK
     2195case 69:
    21882196YY_RULE_SETUP
    21892197#line 237 "lex.ll"
    2190 { KEYWORD_RETURN(LVALUE); }                             // CFA
    2191         YY_BREAK
    2192 case 69:
     2198{ KEYWORD_RETURN(NORETURN); }                   // C11
     2199        YY_BREAK
     2200case 70:
    21932201YY_RULE_SETUP
    21942202#line 238 "lex.ll"
    2195 { KEYWORD_RETURN(NORETURN); }                   // C11
    2196         YY_BREAK
    2197 case 70:
     2203{ KEYWORD_RETURN(OFFSETOF); }           // GCC
     2204        YY_BREAK
     2205case 71:
    21982206YY_RULE_SETUP
    21992207#line 239 "lex.ll"
    2200 { KEYWORD_RETURN(OFFSETOF); }           // GCC
    2201         YY_BREAK
    2202 case 71:
     2208{ KEYWORD_RETURN(OTYPE); }                              // CFA
     2209        YY_BREAK
     2210case 72:
    22032211YY_RULE_SETUP
    22042212#line 240 "lex.ll"
    2205 { KEYWORD_RETURN(OTYPE); }                              // CFA
    2206         YY_BREAK
    2207 case 72:
     2213{ KEYWORD_RETURN(REGISTER); }
     2214        YY_BREAK
     2215case 73:
    22082216YY_RULE_SETUP
    22092217#line 241 "lex.ll"
    2210 { KEYWORD_RETURN(REGISTER); }
    2211         YY_BREAK
    2212 case 73:
     2218{ KEYWORD_RETURN(RESTRICT); }                   // C99
     2219        YY_BREAK
     2220case 74:
    22132221YY_RULE_SETUP
    22142222#line 242 "lex.ll"
    2215 { KEYWORD_RETURN(RESTRICT); }                   // C99
    2216         YY_BREAK
    2217 case 74:
     2223{ KEYWORD_RETURN(RESTRICT); }                   // GCC
     2224        YY_BREAK
     2225case 75:
    22182226YY_RULE_SETUP
    22192227#line 243 "lex.ll"
    22202228{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    22212229        YY_BREAK
    2222 case 75:
     2230case 76:
    22232231YY_RULE_SETUP
    22242232#line 244 "lex.ll"
    2225 { KEYWORD_RETURN(RESTRICT); }                   // GCC
    2226         YY_BREAK
    2227 case 76:
     2233{ KEYWORD_RETURN(RETURN); }
     2234        YY_BREAK
     2235case 77:
    22282236YY_RULE_SETUP
    22292237#line 245 "lex.ll"
    2230 { KEYWORD_RETURN(RETURN); }
    2231         YY_BREAK
    2232 case 77:
     2238{ KEYWORD_RETURN(SHORT); }
     2239        YY_BREAK
     2240case 78:
    22332241YY_RULE_SETUP
    22342242#line 246 "lex.ll"
    2235 { KEYWORD_RETURN(SHORT); }
    2236         YY_BREAK
    2237 case 78:
     2243{ KEYWORD_RETURN(SIGNED); }
     2244        YY_BREAK
     2245case 79:
    22382246YY_RULE_SETUP
    22392247#line 247 "lex.ll"
    2240 { KEYWORD_RETURN(SIGNED); }
    2241         YY_BREAK
    2242 case 79:
     2248{ KEYWORD_RETURN(SIGNED); }                             // GCC
     2249        YY_BREAK
     2250case 80:
    22432251YY_RULE_SETUP
    22442252#line 248 "lex.ll"
    22452253{ KEYWORD_RETURN(SIGNED); }                             // GCC
    22462254        YY_BREAK
    2247 case 80:
     2255case 81:
    22482256YY_RULE_SETUP
    22492257#line 249 "lex.ll"
    2250 { KEYWORD_RETURN(SIGNED); }                             // GCC
    2251         YY_BREAK
    2252 case 81:
     2258{ KEYWORD_RETURN(SIZEOF); }
     2259        YY_BREAK
     2260case 82:
    22532261YY_RULE_SETUP
    22542262#line 250 "lex.ll"
    2255 { KEYWORD_RETURN(SIZEOF); }
    2256         YY_BREAK
    2257 case 82:
     2263{ KEYWORD_RETURN(STATIC); }
     2264        YY_BREAK
     2265case 83:
    22582266YY_RULE_SETUP
    22592267#line 251 "lex.ll"
    2260 { KEYWORD_RETURN(STATIC); }
    2261         YY_BREAK
    2262 case 83:
     2268{ KEYWORD_RETURN(STATICASSERT); }               // C11
     2269        YY_BREAK
     2270case 84:
    22632271YY_RULE_SETUP
    22642272#line 252 "lex.ll"
    2265 { KEYWORD_RETURN(STATICASSERT); }               // C11
    2266         YY_BREAK
    2267 case 84:
     2273{ KEYWORD_RETURN(STRUCT); }
     2274        YY_BREAK
     2275case 85:
    22682276YY_RULE_SETUP
    22692277#line 253 "lex.ll"
    2270 { KEYWORD_RETURN(STRUCT); }
    2271         YY_BREAK
    2272 case 85:
     2278{ KEYWORD_RETURN(SWITCH); }
     2279        YY_BREAK
     2280case 86:
    22732281YY_RULE_SETUP
    22742282#line 254 "lex.ll"
    2275 { KEYWORD_RETURN(SWITCH); }
    2276         YY_BREAK
    2277 case 86:
     2283{ KEYWORD_RETURN(THREADLOCAL); }                // C11
     2284        YY_BREAK
     2285case 87:
    22782286YY_RULE_SETUP
    22792287#line 255 "lex.ll"
    2280 { KEYWORD_RETURN(THREADLOCAL); }                // C11
    2281         YY_BREAK
    2282 case 87:
     2288{ KEYWORD_RETURN(THROW); }                              // CFA
     2289        YY_BREAK
     2290case 88:
    22832291YY_RULE_SETUP
    22842292#line 256 "lex.ll"
    2285 { KEYWORD_RETURN(THROW); }                              // CFA
    2286         YY_BREAK
    2287 case 88:
     2293{ KEYWORD_RETURN(THROWRESUME); }                // CFA
     2294        YY_BREAK
     2295case 89:
    22882296YY_RULE_SETUP
    22892297#line 257 "lex.ll"
    2290 { KEYWORD_RETURN(THROWRESUME); }                // CFA
    2291         YY_BREAK
    2292 case 89:
     2298{ KEYWORD_RETURN(TRAIT); }                              // CFA
     2299        YY_BREAK
     2300case 90:
    22932301YY_RULE_SETUP
    22942302#line 258 "lex.ll"
    2295 { KEYWORD_RETURN(TRAIT); }                              // CFA
    2296         YY_BREAK
    2297 case 90:
     2303{ KEYWORD_RETURN(TRY); }                                // CFA
     2304        YY_BREAK
     2305case 91:
    22982306YY_RULE_SETUP
    22992307#line 259 "lex.ll"
    2300 { KEYWORD_RETURN(TRY); }                                // CFA
    2301         YY_BREAK
    2302 case 91:
     2308{ KEYWORD_RETURN(TYPEDEF); }
     2309        YY_BREAK
     2310case 92:
    23032311YY_RULE_SETUP
    23042312#line 260 "lex.ll"
    2305 { KEYWORD_RETURN(TYPEDEF); }
    2306         YY_BREAK
    2307 case 92:
     2313{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2314        YY_BREAK
     2315case 93:
    23082316YY_RULE_SETUP
    23092317#line 261 "lex.ll"
    23102318{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23112319        YY_BREAK
    2312 case 93:
     2320case 94:
    23132321YY_RULE_SETUP
    23142322#line 262 "lex.ll"
    23152323{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23162324        YY_BREAK
    2317 case 94:
     2325case 95:
    23182326YY_RULE_SETUP
    23192327#line 263 "lex.ll"
    2320 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2321         YY_BREAK
    2322 case 95:
     2328{ KEYWORD_RETURN(UNION); }
     2329        YY_BREAK
     2330case 96:
    23232331YY_RULE_SETUP
    23242332#line 264 "lex.ll"
    2325 { KEYWORD_RETURN(UNION); }
    2326         YY_BREAK
    2327 case 96:
     2333{ KEYWORD_RETURN(UNSIGNED); }
     2334        YY_BREAK
     2335case 97:
    23282336YY_RULE_SETUP
    23292337#line 265 "lex.ll"
    2330 { KEYWORD_RETURN(UNSIGNED); }
    2331         YY_BREAK
    2332 case 97:
     2338{ KEYWORD_RETURN(VALIST); }                     // GCC
     2339        YY_BREAK
     2340case 98:
    23332341YY_RULE_SETUP
    23342342#line 266 "lex.ll"
    2335 { KEYWORD_RETURN(VALIST); }                     // GCC
    2336         YY_BREAK
    2337 case 98:
     2343{ KEYWORD_RETURN(VOID); }
     2344        YY_BREAK
     2345case 99:
    23382346YY_RULE_SETUP
    23392347#line 267 "lex.ll"
    2340 { KEYWORD_RETURN(VOID); }
    2341         YY_BREAK
    2342 case 99:
     2348{ KEYWORD_RETURN(VOLATILE); }
     2349        YY_BREAK
     2350case 100:
    23432351YY_RULE_SETUP
    23442352#line 268 "lex.ll"
    2345 { KEYWORD_RETURN(VOLATILE); }
    2346         YY_BREAK
    2347 case 100:
     2353{ KEYWORD_RETURN(VOLATILE); }                   // GCC
     2354        YY_BREAK
     2355case 101:
    23482356YY_RULE_SETUP
    23492357#line 269 "lex.ll"
    23502358{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    23512359        YY_BREAK
    2352 case 101:
     2360case 102:
    23532361YY_RULE_SETUP
    23542362#line 270 "lex.ll"
    2355 { KEYWORD_RETURN(VOLATILE); }                   // GCC
    2356         YY_BREAK
    2357 case 102:
    2358 YY_RULE_SETUP
    2359 #line 271 "lex.ll"
    23602363{ KEYWORD_RETURN(WHILE); }
    23612364        YY_BREAK
     
    23632366case 103:
    23642367YY_RULE_SETUP
     2368#line 273 "lex.ll"
     2369{ IDENTIFIER_RETURN(); }
     2370        YY_BREAK
     2371case 104:
     2372YY_RULE_SETUP
    23652373#line 274 "lex.ll"
     2374{ ATTRIBUTE_RETURN(); }
     2375        YY_BREAK
     2376case 105:
     2377YY_RULE_SETUP
     2378#line 275 "lex.ll"
     2379{ BEGIN BKQUOTE; }
     2380        YY_BREAK
     2381case 106:
     2382YY_RULE_SETUP
     2383#line 276 "lex.ll"
    23662384{ IDENTIFIER_RETURN(); }
    23672385        YY_BREAK
    2368 case 104:
    2369 YY_RULE_SETUP
    2370 #line 275 "lex.ll"
    2371 { ATTRIBUTE_RETURN(); }
    2372         YY_BREAK
    2373 case 105:
    2374 YY_RULE_SETUP
    2375 #line 276 "lex.ll"
    2376 { BEGIN BKQUOTE; }
    2377         YY_BREAK
    2378 case 106:
     2386case 107:
    23792387YY_RULE_SETUP
    23802388#line 277 "lex.ll"
    2381 { IDENTIFIER_RETURN(); }
    2382         YY_BREAK
    2383 case 107:
    2384 YY_RULE_SETUP
    2385 #line 278 "lex.ll"
    23862389{ BEGIN 0; }
    23872390        YY_BREAK
     
    23892392case 108:
    23902393YY_RULE_SETUP
     2394#line 280 "lex.ll"
     2395{ NUMERIC_RETURN(ZERO); }                               // CFA
     2396        YY_BREAK
     2397case 109:
     2398YY_RULE_SETUP
    23912399#line 281 "lex.ll"
    2392 { NUMERIC_RETURN(ZERO); }                               // CFA
    2393         YY_BREAK
    2394 case 109:
     2400{ NUMERIC_RETURN(ONE); }                                // CFA
     2401        YY_BREAK
     2402case 110:
    23952403YY_RULE_SETUP
    23962404#line 282 "lex.ll"
    2397 { NUMERIC_RETURN(ONE); }                                // CFA
    2398         YY_BREAK
    2399 case 110:
     2405{ NUMERIC_RETURN(INTEGERconstant); }
     2406        YY_BREAK
     2407case 111:
    24002408YY_RULE_SETUP
    24012409#line 283 "lex.ll"
    24022410{ NUMERIC_RETURN(INTEGERconstant); }
    24032411        YY_BREAK
    2404 case 111:
     2412case 112:
    24052413YY_RULE_SETUP
    24062414#line 284 "lex.ll"
    24072415{ NUMERIC_RETURN(INTEGERconstant); }
    24082416        YY_BREAK
    2409 case 112:
     2417case 113:
    24102418YY_RULE_SETUP
    24112419#line 285 "lex.ll"
    2412 { NUMERIC_RETURN(INTEGERconstant); }
    2413         YY_BREAK
    2414 case 113:
     2420{ NUMERIC_RETURN(REALDECIMALconstant); } // must appear before floating_constant
     2421        YY_BREAK
     2422case 114:
    24152423YY_RULE_SETUP
    24162424#line 286 "lex.ll"
    2417 { NUMERIC_RETURN(FLOATINGconstant); }
    2418         YY_BREAK
    2419 case 114:
     2425{ NUMERIC_RETURN(REALFRACTIONconstant); } // must appear before floating_constant
     2426        YY_BREAK
     2427case 115:
    24202428YY_RULE_SETUP
    24212429#line 287 "lex.ll"
    24222430{ NUMERIC_RETURN(FLOATINGconstant); }
    24232431        YY_BREAK
     2432case 116:
     2433YY_RULE_SETUP
     2434#line 288 "lex.ll"
     2435{ NUMERIC_RETURN(FLOATINGconstant); }
     2436        YY_BREAK
    24242437/* character constant, allows empty value */
    2425 case 115:
    2426 YY_RULE_SETUP
    2427 #line 290 "lex.ll"
     2438case 117:
     2439YY_RULE_SETUP
     2440#line 291 "lex.ll"
    24282441{ BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24292442        YY_BREAK
    2430 case 116:
    2431 YY_RULE_SETUP
    2432 #line 291 "lex.ll"
     2443case 118:
     2444YY_RULE_SETUP
     2445#line 292 "lex.ll"
    24332446{ strtext->append( yytext, yyleng ); }
    24342447        YY_BREAK
    2435 case 117:
    2436 /* rule 117 can match eol */
    2437 YY_RULE_SETUP
    2438 #line 292 "lex.ll"
     2448case 119:
     2449/* rule 119 can match eol */
     2450YY_RULE_SETUP
     2451#line 293 "lex.ll"
    24392452{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); }
    24402453        YY_BREAK
    24412454/* ' stop highlighting */
    24422455/* string constant */
    2443 case 118:
    2444 YY_RULE_SETUP
    2445 #line 296 "lex.ll"
     2456case 120:
     2457YY_RULE_SETUP
     2458#line 297 "lex.ll"
    24462459{ BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24472460        YY_BREAK
    2448 case 119:
    2449 YY_RULE_SETUP
    2450 #line 297 "lex.ll"
     2461case 121:
     2462YY_RULE_SETUP
     2463#line 298 "lex.ll"
    24512464{ strtext->append( yytext, yyleng ); }
    24522465        YY_BREAK
    2453 case 120:
    2454 /* rule 120 can match eol */
    2455 YY_RULE_SETUP
    2456 #line 298 "lex.ll"
     2466case 122:
     2467/* rule 122 can match eol */
     2468YY_RULE_SETUP
     2469#line 299 "lex.ll"
    24572470{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
    24582471        YY_BREAK
    24592472/* " stop highlighting */
    24602473/* common character/string constant */
    2461 case 121:
    2462 YY_RULE_SETUP
    2463 #line 302 "lex.ll"
     2474case 123:
     2475YY_RULE_SETUP
     2476#line 303 "lex.ll"
    24642477{ rm_underscore(); strtext->append( yytext, yyleng ); }
    24652478        YY_BREAK
    2466 case 122:
    2467 /* rule 122 can match eol */
    2468 YY_RULE_SETUP
    2469 #line 303 "lex.ll"
     2479case 124:
     2480/* rule 124 can match eol */
     2481YY_RULE_SETUP
     2482#line 304 "lex.ll"
    24702483{}                                              // continuation (ALSO HANDLED BY CPP)
    24712484        YY_BREAK
    2472 case 123:
    2473 YY_RULE_SETUP
    2474 #line 304 "lex.ll"
     2485case 125:
     2486YY_RULE_SETUP
     2487#line 305 "lex.ll"
    24752488{ strtext->append( yytext, yyleng ); } // unknown escape character
    24762489        YY_BREAK
    24772490/* punctuation */
    2478 case 124:
    2479 YY_RULE_SETUP
    2480 #line 307 "lex.ll"
    2481 { ASCIIOP_RETURN(); }
    2482         YY_BREAK
    2483 case 125:
     2491case 126:
    24842492YY_RULE_SETUP
    24852493#line 308 "lex.ll"
    24862494{ ASCIIOP_RETURN(); }
    24872495        YY_BREAK
    2488 case 126:
     2496case 127:
    24892497YY_RULE_SETUP
    24902498#line 309 "lex.ll"
    24912499{ ASCIIOP_RETURN(); }
    24922500        YY_BREAK
    2493 case 127:
     2501case 128:
    24942502YY_RULE_SETUP
    24952503#line 310 "lex.ll"
    24962504{ ASCIIOP_RETURN(); }
    24972505        YY_BREAK
    2498 case 128:
     2506case 129:
    24992507YY_RULE_SETUP
    25002508#line 311 "lex.ll"
    25012509{ ASCIIOP_RETURN(); }
    25022510        YY_BREAK
    2503 case 129:
     2511case 130:
    25042512YY_RULE_SETUP
    25052513#line 312 "lex.ll"
    25062514{ ASCIIOP_RETURN(); }
    25072515        YY_BREAK
    2508 case 130:
     2516case 131:
    25092517YY_RULE_SETUP
    25102518#line 313 "lex.ll"
     2519{ ASCIIOP_RETURN(); }
     2520        YY_BREAK
     2521case 132:
     2522YY_RULE_SETUP
     2523#line 314 "lex.ll"
    25112524{ ASCIIOP_RETURN(); }                                   // also operator
    25122525        YY_BREAK
    2513 case 131:
    2514 YY_RULE_SETUP
    2515 #line 314 "lex.ll"
    2516 { ASCIIOP_RETURN(); }
    2517         YY_BREAK
    2518 case 132:
     2526case 133:
    25192527YY_RULE_SETUP
    25202528#line 315 "lex.ll"
    25212529{ ASCIIOP_RETURN(); }
    25222530        YY_BREAK
    2523 case 133:
     2531case 134:
    25242532YY_RULE_SETUP
    25252533#line 316 "lex.ll"
     2534{ ASCIIOP_RETURN(); }
     2535        YY_BREAK
     2536case 135:
     2537YY_RULE_SETUP
     2538#line 317 "lex.ll"
    25262539{ ASCIIOP_RETURN(); }                                   // also operator
    25272540        YY_BREAK
    2528 case 134:
    2529 YY_RULE_SETUP
    2530 #line 317 "lex.ll"
     2541case 136:
     2542YY_RULE_SETUP
     2543#line 318 "lex.ll"
    25312544{ NAMEDOP_RETURN(ELLIPSIS); }
    25322545        YY_BREAK
    25332546/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
    2534 case 135:
    2535 YY_RULE_SETUP
    2536 #line 320 "lex.ll"
     2547case 137:
     2548YY_RULE_SETUP
     2549#line 321 "lex.ll"
    25372550{ RETURN_VAL('['); }
    25382551        YY_BREAK
    2539 case 136:
    2540 YY_RULE_SETUP
    2541 #line 321 "lex.ll"
     2552case 138:
     2553YY_RULE_SETUP
     2554#line 322 "lex.ll"
    25422555{ RETURN_VAL(']'); }
    25432556        YY_BREAK
    2544 case 137:
    2545 YY_RULE_SETUP
    2546 #line 322 "lex.ll"
     2557case 139:
     2558YY_RULE_SETUP
     2559#line 323 "lex.ll"
    25472560{ RETURN_VAL('{'); }
    25482561        YY_BREAK
    2549 case 138:
    2550 YY_RULE_SETUP
    2551 #line 323 "lex.ll"
     2562case 140:
     2563YY_RULE_SETUP
     2564#line 324 "lex.ll"
    25522565{ RETURN_VAL('}'); }
    25532566        YY_BREAK
    25542567/* operators */
    2555 case 139:
    2556 YY_RULE_SETUP
    2557 #line 326 "lex.ll"
    2558 { ASCIIOP_RETURN(); }
    2559         YY_BREAK
    2560 case 140:
     2568case 141:
    25612569YY_RULE_SETUP
    25622570#line 327 "lex.ll"
    25632571{ ASCIIOP_RETURN(); }
    25642572        YY_BREAK
    2565 case 141:
     2573case 142:
    25662574YY_RULE_SETUP
    25672575#line 328 "lex.ll"
    25682576{ ASCIIOP_RETURN(); }
    25692577        YY_BREAK
    2570 case 142:
     2578case 143:
    25712579YY_RULE_SETUP
    25722580#line 329 "lex.ll"
    25732581{ ASCIIOP_RETURN(); }
    25742582        YY_BREAK
    2575 case 143:
     2583case 144:
    25762584YY_RULE_SETUP
    25772585#line 330 "lex.ll"
    25782586{ ASCIIOP_RETURN(); }
    25792587        YY_BREAK
    2580 case 144:
     2588case 145:
    25812589YY_RULE_SETUP
    25822590#line 331 "lex.ll"
    25832591{ ASCIIOP_RETURN(); }
    25842592        YY_BREAK
    2585 case 145:
     2593case 146:
    25862594YY_RULE_SETUP
    25872595#line 332 "lex.ll"
    25882596{ ASCIIOP_RETURN(); }
    25892597        YY_BREAK
    2590 case 146:
     2598case 147:
    25912599YY_RULE_SETUP
    25922600#line 333 "lex.ll"
    25932601{ ASCIIOP_RETURN(); }
    25942602        YY_BREAK
    2595 case 147:
     2603case 148:
    25962604YY_RULE_SETUP
    25972605#line 334 "lex.ll"
    25982606{ ASCIIOP_RETURN(); }
    25992607        YY_BREAK
    2600 case 148:
     2608case 149:
    26012609YY_RULE_SETUP
    26022610#line 335 "lex.ll"
    26032611{ ASCIIOP_RETURN(); }
    26042612        YY_BREAK
    2605 case 149:
     2613case 150:
    26062614YY_RULE_SETUP
    26072615#line 336 "lex.ll"
    26082616{ ASCIIOP_RETURN(); }
    26092617        YY_BREAK
    2610 case 150:
     2618case 151:
    26112619YY_RULE_SETUP
    26122620#line 337 "lex.ll"
    26132621{ ASCIIOP_RETURN(); }
    26142622        YY_BREAK
    2615 case 151:
     2623case 152:
    26162624YY_RULE_SETUP
    26172625#line 338 "lex.ll"
    26182626{ ASCIIOP_RETURN(); }
    26192627        YY_BREAK
    2620 case 152:
     2628case 153:
    26212629YY_RULE_SETUP
    26222630#line 339 "lex.ll"
    26232631{ ASCIIOP_RETURN(); }
    26242632        YY_BREAK
    2625 case 153:
    2626 YY_RULE_SETUP
    2627 #line 341 "lex.ll"
     2633case 154:
     2634YY_RULE_SETUP
     2635#line 340 "lex.ll"
     2636{ ASCIIOP_RETURN(); }
     2637        YY_BREAK
     2638case 155:
     2639YY_RULE_SETUP
     2640#line 342 "lex.ll"
    26282641{ NAMEDOP_RETURN(ICR); }
    26292642        YY_BREAK
    2630 case 154:
    2631 YY_RULE_SETUP
    2632 #line 342 "lex.ll"
     2643case 156:
     2644YY_RULE_SETUP
     2645#line 343 "lex.ll"
    26332646{ NAMEDOP_RETURN(DECR); }
    26342647        YY_BREAK
    2635 case 155:
    2636 YY_RULE_SETUP
    2637 #line 343 "lex.ll"
     2648case 157:
     2649YY_RULE_SETUP
     2650#line 344 "lex.ll"
    26382651{ NAMEDOP_RETURN(EQ); }
    26392652        YY_BREAK
    2640 case 156:
    2641 YY_RULE_SETUP
    2642 #line 344 "lex.ll"
     2653case 158:
     2654YY_RULE_SETUP
     2655#line 345 "lex.ll"
    26432656{ NAMEDOP_RETURN(NE); }
    26442657        YY_BREAK
    2645 case 157:
    2646 YY_RULE_SETUP
    2647 #line 345 "lex.ll"
     2658case 159:
     2659YY_RULE_SETUP
     2660#line 346 "lex.ll"
    26482661{ NAMEDOP_RETURN(LS); }
    26492662        YY_BREAK
    2650 case 158:
    2651 YY_RULE_SETUP
    2652 #line 346 "lex.ll"
     2663case 160:
     2664YY_RULE_SETUP
     2665#line 347 "lex.ll"
    26532666{ NAMEDOP_RETURN(RS); }
    26542667        YY_BREAK
    2655 case 159:
    2656 YY_RULE_SETUP
    2657 #line 347 "lex.ll"
     2668case 161:
     2669YY_RULE_SETUP
     2670#line 348 "lex.ll"
    26582671{ NAMEDOP_RETURN(LE); }
    26592672        YY_BREAK
    2660 case 160:
    2661 YY_RULE_SETUP
    2662 #line 348 "lex.ll"
     2673case 162:
     2674YY_RULE_SETUP
     2675#line 349 "lex.ll"
    26632676{ NAMEDOP_RETURN(GE); }
    26642677        YY_BREAK
    2665 case 161:
    2666 YY_RULE_SETUP
    2667 #line 349 "lex.ll"
     2678case 163:
     2679YY_RULE_SETUP
     2680#line 350 "lex.ll"
    26682681{ NAMEDOP_RETURN(ANDAND); }
    26692682        YY_BREAK
    2670 case 162:
    2671 YY_RULE_SETUP
    2672 #line 350 "lex.ll"
     2683case 164:
     2684YY_RULE_SETUP
     2685#line 351 "lex.ll"
    26732686{ NAMEDOP_RETURN(OROR); }
    26742687        YY_BREAK
    2675 case 163:
    2676 YY_RULE_SETUP
    2677 #line 351 "lex.ll"
     2688case 165:
     2689YY_RULE_SETUP
     2690#line 352 "lex.ll"
    26782691{ NAMEDOP_RETURN(ARROW); }
    26792692        YY_BREAK
    2680 case 164:
    2681 YY_RULE_SETUP
    2682 #line 352 "lex.ll"
     2693case 166:
     2694YY_RULE_SETUP
     2695#line 353 "lex.ll"
    26832696{ NAMEDOP_RETURN(PLUSassign); }
    26842697        YY_BREAK
    2685 case 165:
    2686 YY_RULE_SETUP
    2687 #line 353 "lex.ll"
     2698case 167:
     2699YY_RULE_SETUP
     2700#line 354 "lex.ll"
    26882701{ NAMEDOP_RETURN(MINUSassign); }
    26892702        YY_BREAK
    2690 case 166:
    2691 YY_RULE_SETUP
    2692 #line 354 "lex.ll"
     2703case 168:
     2704YY_RULE_SETUP
     2705#line 355 "lex.ll"
    26932706{ NAMEDOP_RETURN(MULTassign); }
    26942707        YY_BREAK
    2695 case 167:
    2696 YY_RULE_SETUP
    2697 #line 355 "lex.ll"
     2708case 169:
     2709YY_RULE_SETUP
     2710#line 356 "lex.ll"
    26982711{ NAMEDOP_RETURN(DIVassign); }
    26992712        YY_BREAK
    2700 case 168:
    2701 YY_RULE_SETUP
    2702 #line 356 "lex.ll"
     2713case 170:
     2714YY_RULE_SETUP
     2715#line 357 "lex.ll"
    27032716{ NAMEDOP_RETURN(MODassign); }
    27042717        YY_BREAK
    2705 case 169:
    2706 YY_RULE_SETUP
    2707 #line 357 "lex.ll"
     2718case 171:
     2719YY_RULE_SETUP
     2720#line 358 "lex.ll"
    27082721{ NAMEDOP_RETURN(ANDassign); }
    27092722        YY_BREAK
    2710 case 170:
    2711 YY_RULE_SETUP
    2712 #line 358 "lex.ll"
     2723case 172:
     2724YY_RULE_SETUP
     2725#line 359 "lex.ll"
    27132726{ NAMEDOP_RETURN(ORassign); }
    27142727        YY_BREAK
    2715 case 171:
    2716 YY_RULE_SETUP
    2717 #line 359 "lex.ll"
     2728case 173:
     2729YY_RULE_SETUP
     2730#line 360 "lex.ll"
    27182731{ NAMEDOP_RETURN(ERassign); }
    27192732        YY_BREAK
    2720 case 172:
    2721 YY_RULE_SETUP
    2722 #line 360 "lex.ll"
     2733case 174:
     2734YY_RULE_SETUP
     2735#line 361 "lex.ll"
    27232736{ NAMEDOP_RETURN(LSassign); }
    27242737        YY_BREAK
    2725 case 173:
    2726 YY_RULE_SETUP
    2727 #line 361 "lex.ll"
     2738case 175:
     2739YY_RULE_SETUP
     2740#line 362 "lex.ll"
    27282741{ NAMEDOP_RETURN(RSassign); }
    27292742        YY_BREAK
    2730 case 174:
    2731 YY_RULE_SETUP
    2732 #line 363 "lex.ll"
     2743case 176:
     2744YY_RULE_SETUP
     2745#line 364 "lex.ll"
    27332746{ NAMEDOP_RETURN(ATassign); }                   // CFA
    27342747        YY_BREAK
    27352748/* CFA, operator identifier */
    2736 case 175:
    2737 YY_RULE_SETUP
    2738 #line 366 "lex.ll"
     2749case 177:
     2750YY_RULE_SETUP
     2751#line 367 "lex.ll"
    27392752{ IDENTIFIER_RETURN(); }                                // unary
    27402753        YY_BREAK
    2741 case 176:
    2742 YY_RULE_SETUP
    2743 #line 367 "lex.ll"
    2744 { IDENTIFIER_RETURN(); }
    2745         YY_BREAK
    2746 case 177:
     2754case 178:
    27472755YY_RULE_SETUP
    27482756#line 368 "lex.ll"
    27492757{ IDENTIFIER_RETURN(); }
    27502758        YY_BREAK
    2751 case 178:
     2759case 179:
    27522760YY_RULE_SETUP
    27532761#line 369 "lex.ll"
     2762{ IDENTIFIER_RETURN(); }
     2763        YY_BREAK
     2764case 180:
     2765YY_RULE_SETUP
     2766#line 370 "lex.ll"
    27542767{ IDENTIFIER_RETURN(); }                // binary
    27552768        YY_BREAK
     
    27802793          an argument list.
    27812794        */
    2782 case 179:
    2783 YY_RULE_SETUP
    2784 #line 396 "lex.ll"
     2795case 181:
     2796YY_RULE_SETUP
     2797#line 397 "lex.ll"
    27852798{
    27862799        // 1 or 2 character unary operator ?
     
    27952808        YY_BREAK
    27962809/* unknown characters */
    2797 case 180:
    2798 YY_RULE_SETUP
    2799 #line 408 "lex.ll"
     2810case 182:
     2811YY_RULE_SETUP
     2812#line 409 "lex.ll"
    28002813{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    28012814        YY_BREAK
    2802 case 181:
    2803 YY_RULE_SETUP
    2804 #line 410 "lex.ll"
     2815case 183:
     2816YY_RULE_SETUP
     2817#line 411 "lex.ll"
    28052818ECHO;
    28062819        YY_BREAK
    2807 #line 2808 "Parser/lex.cc"
     2820#line 2821 "Parser/lex.cc"
    28082821case YY_STATE_EOF(INITIAL):
    28092822case YY_STATE_EOF(COMMENT):
     
    31023115                        {
    31033116                        yy_current_state = (int) yy_def[yy_current_state];
    3104                         if ( yy_current_state >= 892 )
     3117                        if ( yy_current_state >= 895 )
    31053118                                yy_c = yy_meta[(unsigned int) yy_c];
    31063119                        }
     
    31303143                {
    31313144                yy_current_state = (int) yy_def[yy_current_state];
    3132                 if ( yy_current_state >= 892 )
     3145                if ( yy_current_state >= 895 )
    31333146                        yy_c = yy_meta[(unsigned int) yy_c];
    31343147                }
    31353148        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3136         yy_is_jam = (yy_current_state == 891);
     3149        yy_is_jam = (yy_current_state == 894);
    31373150
    31383151        return yy_is_jam ? 0 : yy_current_state;
     
    37803793#define YYTABLES_NAME "yytables"
    37813794
    3782 #line 410 "lex.ll"
     3795#line 411 "lex.ll"
    37833796
    37843797
  • src/Parser/lex.ll

    r40744af8 rf51aefb  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Wed Aug 24 13:27:04 2016
    13  * Update Count     : 487
     12 * Last Modified On : Wed Oct 26 17:32:30 2016
     13 * Update Count     : 499
    1414 */
    1515
     
    7272identifier ([a-zA-Z_$]|{universal_char})([0-9a-zA-Z_$]|{universal_char})*
    7373
    74                                 // quoted identifier
    75 quoted_identifier "`"{identifier}"`"
    76 
    7774                                // attribute identifier, GCC: $ in identifier
    7875attr_identifier "@"{identifier}
     
    9491
    9592decimal_digits ({decimal})|({decimal}({decimal}|"_")*{decimal})
    96 fractional_constant ({decimal_digits}?"."{decimal_digits})|({decimal_digits}".")
     93real_decimal {decimal_digits}"."
     94real_fraction "."{decimal_digits}
     95real_constant {decimal_digits}?{real_fraction}
    9796exponent "_"?[eE]"_"?[+-]?{decimal_digits}
    9897                                // GCC: D (double), DL (long double) and iI (imaginary) suffixes
    9998floating_suffix "_"?([fFdDlL][iI]?|"DL"|[iI][lLfFdD]?)
    10099                                //floating_suffix "_"?([fFdD]|[lL]|[D][L])|([iI][lLfFdD])|([lLfFdD][iI]))
    101 floating_constant (({fractional_constant}{exponent}?)|({decimal_digits}{exponent})){floating_suffix}?
     100floating_constant (({real_constant}{exponent}?)|({decimal_digits}{exponent})){floating_suffix}?
    102101
    103102binary_exponent "_"?[pP]"_"?[+-]?{decimal_digits}
     
    284283{octal_constant} { NUMERIC_RETURN(INTEGERconstant); }
    285284{hex_constant}  { NUMERIC_RETURN(INTEGERconstant); }
     285{real_decimal}  { NUMERIC_RETURN(REALDECIMALconstant); } // must appear before floating_constant
     286{real_fraction} { NUMERIC_RETURN(REALFRACTIONconstant); } // must appear before floating_constant
    286287{floating_constant}     { NUMERIC_RETURN(FLOATINGconstant); }
    287288{hex_floating_constant} { NUMERIC_RETURN(FLOATINGconstant); }
  • src/Parser/parser.cc

    r40744af8 rf51aefb  
    201201     ATTR_TYPEGENname = 333,
    202202     INTEGERconstant = 334,
    203      FLOATINGconstant = 335,
    204      CHARACTERconstant = 336,
    205      STRINGliteral = 337,
    206      ZERO = 338,
    207      ONE = 339,
    208      ARROW = 340,
    209      ICR = 341,
    210      DECR = 342,
    211      LS = 343,
    212      RS = 344,
    213      LE = 345,
    214      GE = 346,
    215      EQ = 347,
    216      NE = 348,
    217      ANDAND = 349,
    218      OROR = 350,
    219      ELLIPSIS = 351,
    220      MULTassign = 352,
    221      DIVassign = 353,
    222      MODassign = 354,
    223      PLUSassign = 355,
    224      MINUSassign = 356,
    225      LSassign = 357,
    226      RSassign = 358,
    227      ANDassign = 359,
    228      ERassign = 360,
    229      ORassign = 361,
    230      ATassign = 362,
    231      THEN = 363
     203     CHARACTERconstant = 335,
     204     STRINGliteral = 336,
     205     REALDECIMALconstant = 337,
     206     REALFRACTIONconstant = 338,
     207     FLOATINGconstant = 339,
     208     ZERO = 340,
     209     ONE = 341,
     210     ARROW = 342,
     211     ICR = 343,
     212     DECR = 344,
     213     LS = 345,
     214     RS = 346,
     215     LE = 347,
     216     GE = 348,
     217     EQ = 349,
     218     NE = 350,
     219     ANDAND = 351,
     220     OROR = 352,
     221     ELLIPSIS = 353,
     222     MULTassign = 354,
     223     DIVassign = 355,
     224     MODassign = 356,
     225     PLUSassign = 357,
     226     MINUSassign = 358,
     227     LSassign = 359,
     228     RSassign = 360,
     229     ANDassign = 361,
     230     ERassign = 362,
     231     ORassign = 363,
     232     ATassign = 364,
     233     THEN = 365
    232234   };
    233235#endif
     
    310312#define ATTR_TYPEGENname 333
    311313#define INTEGERconstant 334
    312 #define FLOATINGconstant 335
    313 #define CHARACTERconstant 336
    314 #define STRINGliteral 337
    315 #define ZERO 338
    316 #define ONE 339
    317 #define ARROW 340
    318 #define ICR 341
    319 #define DECR 342
    320 #define LS 343
    321 #define RS 344
    322 #define LE 345
    323 #define GE 346
    324 #define EQ 347
    325 #define NE 348
    326 #define ANDAND 349
    327 #define OROR 350
    328 #define ELLIPSIS 351
    329 #define MULTassign 352
    330 #define DIVassign 353
    331 #define MODassign 354
    332 #define PLUSassign 355
    333 #define MINUSassign 356
    334 #define LSassign 357
    335 #define RSassign 358
    336 #define ANDassign 359
    337 #define ERassign 360
    338 #define ORassign 361
    339 #define ATassign 362
    340 #define THEN 363
     314#define CHARACTERconstant 335
     315#define STRINGliteral 336
     316#define REALDECIMALconstant 337
     317#define REALFRACTIONconstant 338
     318#define FLOATINGconstant 339
     319#define ZERO 340
     320#define ONE 341
     321#define ARROW 342
     322#define ICR 343
     323#define DECR 344
     324#define LS 345
     325#define RS 346
     326#define LE 347
     327#define GE 348
     328#define EQ 349
     329#define NE 350
     330#define ANDAND 351
     331#define OROR 352
     332#define ELLIPSIS 353
     333#define MULTassign 354
     334#define DIVassign 355
     335#define MODassign 356
     336#define PLUSassign 357
     337#define MINUSassign 358
     338#define LSassign 359
     339#define RSassign 360
     340#define ANDassign 361
     341#define ERassign 362
     342#define ORassign 363
     343#define ATassign 364
     344#define THEN 365
    341345
    342346
     
    348352
    349353/* Line 293 of yacc.c  */
    350 #line 116 "parser.yy"
     354#line 120 "parser.yy"
    351355
    352356        Token tok;
     
    368372
    369373/* Line 293 of yacc.c  */
    370 #line 371 "Parser/parser.cc"
     374#line 375 "Parser/parser.cc"
    371375} YYSTYPE;
    372376# define YYSTYPE_IS_TRIVIAL 1
     
    380384
    381385/* Line 343 of yacc.c  */
    382 #line 383 "Parser/parser.cc"
     386#line 387 "Parser/parser.cc"
    383387
    384388#ifdef short
     
    597601
    598602/* YYFINAL -- State number of the termination state.  */
    599 #define YYFINAL  250
     603#define YYFINAL  249
    600604/* YYLAST -- Last index in YYTABLE.  */
    601 #define YYLAST   10863
     605#define YYLAST   10266
    602606
    603607/* YYNTOKENS -- Number of terminals.  */
    604 #define YYNTOKENS  133
     608#define YYNTOKENS  135
    605609/* YYNNTS -- Number of nonterminals.  */
    606 #define YYNNTS  241
     610#define YYNNTS  243
    607611/* YYNRULES -- Number of rules.  */
    608 #define YYNRULES  751
     612#define YYNRULES  755
    609613/* YYNRULES -- Number of states.  */
    610 #define YYNSTATES  1555
     614#define YYNSTATES  1538
    611615
    612616/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    613617#define YYUNDEFTOK  2
    614 #define YYMAXUTOK   363
     618#define YYMAXUTOK   365
    615619
    616620#define YYTRANSLATE(YYX)                                                \
     
    623627       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    624628       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    625        2,     2,     2,   121,     2,     2,     2,   124,   118,     2,
    626      109,   110,   117,   119,   116,   120,   113,   123,     2,     2,
    627        2,     2,     2,     2,     2,     2,     2,     2,   130,   132,
    628      125,   131,   126,   129,     2,     2,     2,     2,     2,     2,
     629       2,     2,     2,   123,     2,     2,     2,   126,   120,     2,
     630     111,   112,   119,   121,   118,   122,   115,   125,     2,     2,
     631       2,     2,     2,     2,     2,     2,     2,     2,   132,   134,
     632     127,   133,   128,   131,     2,     2,     2,     2,     2,     2,
    629633       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    630634       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    631        2,   111,     2,   112,   127,     2,     2,     2,     2,     2,
     635       2,   113,     2,   114,   129,     2,     2,     2,     2,     2,
    632636       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    633637       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    634        2,     2,     2,   114,   128,   115,   122,     2,     2,     2,
     638       2,     2,     2,   116,   130,   117,   124,     2,     2,     2,
    635639       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    636640       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    656660      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    657661      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
    658      105,   106,   107,   108
     662     105,   106,   107,   108,   109,   110
    659663};
    660664
     
    665669{
    666670       0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
    667       17,    19,    21,    23,    25,    27,    29,    31,    33,    36,
    668       38,    40,    44,    48,    50,    57,    62,    66,    74,    78,
    669       86,    89,    92,   100,   105,   107,   111,   112,   114,   116,
    670      120,   122,   126,   134,   138,   146,   148,   150,   152,   155,
    671      158,   161,   164,   167,   170,   175,   178,   183,   190,   192,
    672      197,   202,   204,   206,   208,   210,   212,   214,   216,   221,
    673      226,   228,   232,   236,   240,   242,   246,   250,   252,   256,
    674      260,   262,   266,   270,   274,   278,   280,   284,   288,   290,
    675      294,   296,   300,   302,   306,   308,   312,   314,   318,   320,
    676      326,   331,   337,   339,   341,   345,   348,   349,   351,   353,
    677      355,   357,   359,   361,   363,   365,   367,   369,   371,   373,
    678      375,   378,   384,   391,   399,   401,   405,   407,   411,   412,
    679      414,   416,   418,   420,   422,   424,   426,   428,   430,   437,
    680      442,   445,   453,   455,   459,   461,   464,   466,   469,   471,
    681      474,   477,   483,   491,   497,   507,   513,   523,   525,   529,
    682      531,   533,   537,   541,   544,   546,   549,   552,   553,   555,
    683      558,   562,   563,   565,   568,   572,   576,   581,   582,   584,
    684      586,   589,   595,   603,   610,   617,   622,   626,   631,   634,
    685      638,   641,   645,   649,   653,   657,   663,   667,   671,   676,
    686      678,   684,   691,   697,   704,   714,   725,   735,   746,   749,
    687      751,   754,   757,   760,   762,   769,   778,   789,   802,   817,
    688      818,   820,   821,   823,   825,   829,   834,   842,   843,   845,
    689      849,   851,   855,   857,   859,   861,   865,   867,   869,   871,
    690      875,   876,   878,   882,   887,   889,   893,   895,   897,   901,
    691      905,   909,   913,   917,   920,   924,   931,   935,   939,   944,
    692      946,   949,   952,   956,   962,   971,   979,   987,   993,  1003,
    693     1006,  1009,  1015,  1019,  1025,  1030,  1034,  1039,  1044,  1052,
    694     1056,  1060,  1064,  1068,  1073,  1080,  1082,  1084,  1086,  1088,
    695     1090,  1092,  1094,  1096,  1097,  1099,  1101,  1104,  1106,  1108,
    696     1110,  1112,  1114,  1116,  1118,  1119,  1125,  1127,  1130,  1134,
    697     1136,  1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,
    698     1157,  1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
    699     1177,  1179,  1181,  1183,  1186,  1189,  1193,  1197,  1199,  1203,
    700     1205,  1208,  1211,  1214,  1219,  1224,  1229,  1234,  1236,  1239,
    701     1242,  1246,  1248,  1251,  1254,  1256,  1259,  1262,  1266,  1268,
    702     1271,  1274,  1276,  1278,  1283,  1286,  1287,  1294,  1302,  1305,
    703     1308,  1311,  1312,  1315,  1318,  1322,  1325,  1329,  1331,  1334,
    704     1338,  1341,  1344,  1349,  1350,  1352,  1355,  1358,  1360,  1361,
    705     1363,  1366,  1369,  1375,  1378,  1379,  1387,  1390,  1395,  1396,
    706     1399,  1400,  1402,  1404,  1406,  1412,  1418,  1424,  1426,  1432,
    707     1438,  1448,  1450,  1456,  1457,  1459,  1461,  1467,  1469,  1471,
    708     1477,  1483,  1485,  1489,  1493,  1498,  1500,  1502,  1504,  1506,
    709     1509,  1511,  1515,  1519,  1521,  1524,  1526,  1530,  1532,  1534,
    710     1536,  1538,  1540,  1542,  1544,  1546,  1548,  1550,  1552,  1555,
    711     1557,  1559,  1561,  1564,  1565,  1568,  1571,  1573,  1578,  1579,
    712     1581,  1584,  1588,  1593,  1596,  1599,  1601,  1604,  1607,  1613,
    713     1619,  1627,  1634,  1636,  1639,  1642,  1646,  1648,  1651,  1654,
    714     1659,  1662,  1667,  1668,  1673,  1676,  1678,  1680,  1682,  1683,
    715     1686,  1692,  1698,  1712,  1714,  1716,  1720,  1724,  1727,  1731,
    716     1735,  1738,  1743,  1745,  1752,  1762,  1763,  1775,  1777,  1781,
    717     1785,  1789,  1791,  1793,  1799,  1802,  1808,  1809,  1811,  1813,
    718     1817,  1818,  1820,  1822,  1824,  1826,  1827,  1834,  1837,  1839,
    719     1842,  1847,  1850,  1854,  1858,  1862,  1867,  1873,  1879,  1885,
    720     1892,  1894,  1896,  1898,  1902,  1903,  1909,  1910,  1912,  1914,
    721     1917,  1924,  1926,  1930,  1931,  1933,  1938,  1940,  1942,  1944,
    722     1946,  1949,  1951,  1954,  1957,  1959,  1963,  1966,  1970,  1974,
    723     1977,  1982,  1987,  1991,  2000,  2004,  2007,  2009,  2012,  2019,
    724     2028,  2032,  2035,  2039,  2043,  2048,  2053,  2057,  2059,  2061,
    725     2063,  2068,  2075,  2079,  2082,  2086,  2090,  2095,  2100,  2104,
    726     2107,  2109,  2112,  2115,  2117,  2121,  2124,  2128,  2132,  2135,
    727     2140,  2145,  2149,  2156,  2165,  2169,  2172,  2174,  2177,  2180,
    728     2183,  2187,  2191,  2194,  2199,  2204,  2208,  2215,  2224,  2228,
    729     2231,  2233,  2236,  2239,  2241,  2243,  2246,  2250,  2254,  2257,
    730     2262,  2269,  2278,  2280,  2283,  2286,  2288,  2291,  2294,  2298,
    731     2302,  2304,  2309,  2314,  2318,  2324,  2333,  2337,  2340,  2344,
    732     2346,  2352,  2358,  2365,  2372,  2374,  2377,  2380,  2382,  2385,
    733     2388,  2392,  2396,  2398,  2403,  2408,  2412,  2418,  2427,  2431,
    734     2433,  2436,  2438,  2441,  2448,  2454,  2461,  2469,  2477,  2479,
    735     2482,  2485,  2487,  2490,  2493,  2497,  2501,  2503,  2508,  2513,
    736     2517,  2526,  2530,  2532,  2534,  2537,  2539,  2541,  2544,  2548,
    737     2551,  2555,  2558,  2562,  2566,  2569,  2574,  2578,  2581,  2585,
    738     2588,  2593,  2597,  2600,  2607,  2614,  2621,  2629,  2631,  2634,
    739     2636,  2638,  2640,  2643,  2647,  2650,  2654,  2657,  2661,  2665,
    740     2670,  2673,  2677,  2682,  2685,  2691,  2697,  2704,  2711,  2712,
    741     2714,  2715
     671      17,    19,    21,    23,    25,    27,    29,    31,    33,    35,
     672      37,    40,    42,    44,    46,    50,    54,    56,    63,    68,
     673      72,    80,    83,    87,    95,    98,   101,   109,   114,   116,
     674     120,   121,   123,   125,   129,   131,   134,   141,   145,   153,
     675     157,   165,   168,   171,   174,   175,   178,   180,   182,   184,
     676     187,   190,   193,   196,   199,   202,   207,   210,   215,   222,
     677     224,   229,   234,   236,   238,   240,   242,   244,   246,   248,
     678     253,   255,   259,   263,   267,   269,   273,   277,   279,   283,
     679     287,   289,   293,   297,   301,   305,   307,   311,   315,   317,
     680     321,   323,   327,   329,   333,   335,   339,   341,   345,   347,
     681     353,   358,   360,   362,   366,   367,   369,   371,   373,   375,
     682     377,   379,   381,   383,   385,   387,   389,   391,   393,   400,
     683     408,   410,   414,   416,   420,   421,   423,   425,   427,   429,
     684     431,   433,   435,   437,   439,   446,   451,   454,   462,   464,
     685     468,   470,   473,   475,   478,   480,   483,   486,   492,   500,
     686     506,   516,   522,   532,   534,   538,   540,   542,   546,   550,
     687     553,   555,   558,   561,   562,   564,   567,   571,   572,   574,
     688     577,   581,   585,   590,   591,   593,   595,   598,   604,   612,
     689     619,   626,   631,   635,   640,   643,   647,   650,   654,   658,
     690     662,   666,   672,   676,   680,   685,   687,   693,   700,   706,
     691     713,   723,   734,   744,   755,   758,   760,   763,   766,   769,
     692     771,   778,   787,   798,   811,   826,   827,   829,   830,   832,
     693     834,   838,   843,   851,   852,   854,   858,   860,   864,   866,
     694     868,   870,   874,   876,   878,   880,   884,   885,   887,   891,
     695     896,   898,   902,   904,   906,   910,   914,   918,   922,   926,
     696     929,   933,   940,   944,   948,   953,   955,   958,   961,   965,
     697     971,   979,   987,   993,  1003,  1006,  1009,  1015,  1019,  1025,
     698    1030,  1034,  1039,  1044,  1052,  1056,  1060,  1064,  1068,  1073,
     699    1080,  1082,  1084,  1086,  1088,  1090,  1092,  1094,  1096,  1097,
     700    1099,  1101,  1104,  1106,  1108,  1110,  1112,  1114,  1116,  1118,
     701    1119,  1125,  1127,  1130,  1134,  1136,  1139,  1141,  1143,  1145,
     702    1147,  1149,  1151,  1153,  1155,  1157,  1159,  1161,  1163,  1165,
     703    1167,  1169,  1171,  1173,  1175,  1177,  1179,  1181,  1183,  1186,
     704    1189,  1193,  1197,  1199,  1203,  1205,  1208,  1211,  1214,  1219,
     705    1224,  1229,  1234,  1236,  1239,  1242,  1246,  1248,  1251,  1254,
     706    1256,  1259,  1262,  1266,  1268,  1271,  1274,  1276,  1278,  1283,
     707    1286,  1287,  1294,  1302,  1305,  1308,  1311,  1312,  1315,  1318,
     708    1322,  1325,  1329,  1331,  1334,  1338,  1341,  1344,  1349,  1350,
     709    1352,  1355,  1358,  1360,  1361,  1363,  1366,  1369,  1375,  1378,
     710    1379,  1387,  1390,  1395,  1396,  1399,  1400,  1402,  1404,  1406,
     711    1412,  1418,  1424,  1426,  1432,  1438,  1448,  1450,  1456,  1457,
     712    1459,  1461,  1467,  1469,  1471,  1477,  1483,  1485,  1489,  1493,
     713    1498,  1500,  1502,  1504,  1506,  1509,  1511,  1515,  1519,  1521,
     714    1524,  1526,  1530,  1532,  1534,  1536,  1538,  1540,  1542,  1544,
     715    1546,  1548,  1550,  1552,  1555,  1557,  1559,  1561,  1564,  1565,
     716    1568,  1571,  1573,  1578,  1579,  1581,  1584,  1588,  1593,  1596,
     717    1599,  1601,  1604,  1607,  1613,  1619,  1627,  1634,  1636,  1639,
     718    1642,  1646,  1648,  1651,  1654,  1659,  1662,  1667,  1668,  1673,
     719    1676,  1678,  1680,  1682,  1683,  1686,  1692,  1698,  1712,  1714,
     720    1716,  1720,  1724,  1727,  1731,  1735,  1738,  1743,  1745,  1752,
     721    1762,  1763,  1775,  1777,  1781,  1785,  1789,  1791,  1793,  1799,
     722    1802,  1808,  1809,  1811,  1813,  1817,  1818,  1820,  1822,  1824,
     723    1826,  1827,  1834,  1837,  1839,  1842,  1847,  1850,  1854,  1858,
     724    1862,  1867,  1873,  1879,  1885,  1892,  1894,  1896,  1898,  1902,
     725    1903,  1909,  1910,  1912,  1914,  1917,  1924,  1926,  1930,  1931,
     726    1933,  1938,  1940,  1942,  1944,  1946,  1949,  1951,  1954,  1957,
     727    1959,  1963,  1966,  1970,  1974,  1977,  1982,  1987,  1991,  2000,
     728    2004,  2007,  2009,  2012,  2019,  2028,  2032,  2035,  2039,  2043,
     729    2048,  2053,  2057,  2059,  2061,  2063,  2068,  2075,  2079,  2082,
     730    2086,  2090,  2095,  2100,  2104,  2107,  2109,  2112,  2115,  2117,
     731    2121,  2124,  2128,  2132,  2135,  2140,  2145,  2149,  2156,  2165,
     732    2169,  2172,  2174,  2177,  2180,  2183,  2187,  2191,  2194,  2199,
     733    2204,  2208,  2215,  2224,  2228,  2231,  2233,  2236,  2239,  2241,
     734    2243,  2246,  2250,  2254,  2257,  2262,  2269,  2278,  2280,  2283,
     735    2286,  2288,  2291,  2294,  2298,  2302,  2304,  2309,  2314,  2318,
     736    2324,  2333,  2337,  2340,  2344,  2346,  2352,  2358,  2365,  2372,
     737    2374,  2377,  2380,  2382,  2385,  2388,  2392,  2396,  2398,  2403,
     738    2408,  2412,  2418,  2427,  2431,  2433,  2436,  2438,  2441,  2448,
     739    2454,  2461,  2469,  2477,  2479,  2482,  2485,  2487,  2490,  2493,
     740    2497,  2501,  2503,  2508,  2513,  2517,  2526,  2530,  2532,  2534,
     741    2537,  2539,  2541,  2544,  2548,  2551,  2555,  2558,  2562,  2566,
     742    2569,  2574,  2578,  2581,  2585,  2588,  2593,  2597,  2600,  2607,
     743    2614,  2621,  2629,  2631,  2634,  2636,  2638,  2640,  2643,  2647,
     744    2650,  2654,  2657,  2661,  2665,  2670,  2673,  2677,  2682,  2685,
     745    2691,  2698,  2705,  2706,  2708,  2709
    742746};
    743747
     
    745749static const yytype_int16 yyrhs[] =
    746750{
    747      302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
    748       -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
    749       -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,   142,
    750       -1,    82,    -1,   142,    82,    -1,    72,    -1,   140,    -1,
    751      109,   170,   110,    -1,   109,   174,   110,    -1,   143,    -1,
    752      144,   111,   134,   165,   135,   112,    -1,   144,   109,   145,
    753      110,    -1,   144,   113,   139,    -1,   144,   113,   111,   134,
    754      147,   135,   112,    -1,   144,    85,   139,    -1,   144,    85,
    755      111,   134,   147,   135,   112,    -1,   144,    86,    -1,   144,
    756       87,    -1,   109,   275,   110,   114,   279,   372,   115,    -1,
    757      144,   114,   145,   115,    -1,   146,    -1,   145,   116,   146,
    758       -1,    -1,   165,    -1,   148,    -1,   147,   116,   148,    -1,
    759      139,    -1,   139,   113,   148,    -1,   139,   113,   111,   134,
    760      147,   135,   112,    -1,   139,    85,   148,    -1,   139,    85,
    761      111,   134,   147,   135,   112,    -1,   144,    -1,   136,    -1,
    762      141,    -1,    40,   152,    -1,   150,   152,    -1,   151,   152,
    763       -1,    86,   149,    -1,    87,   149,    -1,    37,   149,    -1,
    764       37,   109,   275,   110,    -1,    66,   149,    -1,    66,   109,
    765      275,   110,    -1,    38,   109,   275,   116,   139,   110,    -1,
    766       76,    -1,    76,   109,   146,   110,    -1,    76,   109,   276,
    767      110,    -1,   117,    -1,   118,    -1,   119,    -1,   120,    -1,
    768      121,    -1,   122,    -1,   149,    -1,   109,   275,   110,   152,
    769       -1,   109,   275,   110,   168,    -1,   152,    -1,   153,   117,
    770      152,    -1,   153,   123,   152,    -1,   153,   124,   152,    -1,
    771      153,    -1,   154,   119,   153,    -1,   154,   120,   153,    -1,
    772      154,    -1,   155,    88,   154,    -1,   155,    89,   154,    -1,
    773      155,    -1,   156,   125,   155,    -1,   156,   126,   155,    -1,
    774      156,    90,   155,    -1,   156,    91,   155,    -1,   156,    -1,
    775      157,    92,   156,    -1,   157,    93,   156,    -1,   157,    -1,
    776      158,   118,   157,    -1,   158,    -1,   159,   127,   158,    -1,
    777      159,    -1,   160,   128,   159,    -1,   160,    -1,   161,    94,
    778      160,    -1,   161,    -1,   162,    95,   161,    -1,   162,    -1,
    779      162,   129,   170,   130,   163,    -1,   162,   129,   130,   163,
    780       -1,   162,   129,   170,   130,   168,    -1,   163,    -1,   163,
    781       -1,   149,   167,   165,    -1,   168,   373,    -1,    -1,   165,
    782       -1,   131,    -1,   107,    -1,    97,    -1,    98,    -1,    99,
    783       -1,   100,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
    784       -1,   105,    -1,   106,    -1,   111,   112,    -1,   111,   134,
    785      165,   135,   112,    -1,   111,   134,   116,   169,   135,   112,
    786       -1,   111,   134,   165,   116,   169,   135,   112,    -1,   166,
    787       -1,   169,   116,   166,    -1,   165,    -1,   170,   116,   165,
    788       -1,    -1,   170,    -1,   173,    -1,   174,    -1,   178,    -1,
    789      179,    -1,   191,    -1,   193,    -1,   194,    -1,   199,    -1,
    790      127,   144,   114,   145,   115,   132,    -1,    72,   130,   312,
    791      172,    -1,   114,   115,    -1,   114,   134,   134,   210,   175,
    792      135,   115,    -1,   176,    -1,   175,   134,   176,    -1,   213,
    793       -1,    40,   213,    -1,   308,    -1,   172,   135,    -1,   172,
    794       -1,   177,   172,    -1,   171,   132,    -1,    41,   109,   170,
    795      110,   172,    -1,    41,   109,   170,   110,   172,    42,   172,
    796       -1,    43,   109,   170,   110,   184,    -1,    43,   109,   170,
    797      110,   114,   134,   206,   185,   115,    -1,    53,   109,   170,
    798      110,   184,    -1,    53,   109,   170,   110,   114,   134,   206,
    799      187,   115,    -1,   164,    -1,   164,    96,   164,    -1,   310,
    800       -1,   180,    -1,   181,   116,   180,    -1,    44,   181,   130,
    801       -1,    45,   130,    -1,   182,    -1,   183,   182,    -1,   183,
    802      172,    -1,    -1,   186,    -1,   183,   177,    -1,   186,   183,
    803      177,    -1,    -1,   188,    -1,   183,   190,    -1,   183,   177,
    804      189,    -1,   188,   183,   190,    -1,   188,   183,   177,   189,
    805       -1,    -1,   190,    -1,    56,    -1,    56,   132,    -1,    47,
    806      109,   170,   110,   172,    -1,    46,   172,    47,   109,   170,
    807      110,   132,    -1,    48,   109,   134,   192,   110,   172,    -1,
    808      171,   135,   132,   171,   132,   171,    -1,   213,   171,   132,
    809      171,    -1,    51,    72,   132,    -1,    51,   117,   170,   132,
    810       -1,    50,   132,    -1,    50,    72,   132,    -1,    49,   132,
    811       -1,    49,    72,   132,    -1,    52,   171,   132,    -1,    61,
    812      166,   132,    -1,    62,   166,   132,    -1,    62,   166,    63,
    813      165,   132,    -1,    57,   174,   195,    -1,    57,   174,   197,
    814       -1,    57,   174,   195,   197,    -1,   196,    -1,    58,   109,
    815       96,   110,   174,    -1,   196,    58,   109,    96,   110,   174,
    816       -1,    59,   109,    96,   110,   174,    -1,   196,    59,   109,
    817       96,   110,   174,    -1,    58,   109,   134,   134,   198,   135,
    818      110,   174,   135,    -1,   196,    58,   109,   134,   134,   198,
    819      135,   110,   174,   135,    -1,    59,   109,   134,   134,   198,
    820      135,   110,   174,   135,    -1,   196,    59,   109,   134,   134,
    821      198,   135,   110,   174,   135,    -1,    60,   174,    -1,   226,
    822       -1,   226,   309,    -1,   226,   357,    -1,   366,   139,    -1,
    823      366,    -1,    64,   200,   109,   141,   110,   132,    -1,    64,
    824      200,   109,   141,   130,   201,   110,   132,    -1,    64,   200,
    825      109,   141,   130,   201,   130,   201,   110,   132,    -1,    64,
    826      200,   109,   141,   130,   201,   130,   201,   130,   204,   110,
    827      132,    -1,    64,   200,    51,   109,   141,   130,   130,   201,
    828      130,   204,   130,   205,   110,   132,    -1,    -1,    11,    -1,
    829       -1,   202,    -1,   203,    -1,   202,   116,   203,    -1,   141,
    830      109,   164,   110,    -1,   111,   164,   112,   141,   109,   164,
    831      110,    -1,    -1,   141,    -1,   204,   116,   141,    -1,   139,
    832       -1,   205,   116,   139,    -1,   135,    -1,   207,    -1,   213,
    833       -1,   207,   134,   213,    -1,   135,    -1,   209,    -1,   223,
    834       -1,   209,   134,   223,    -1,    -1,   211,    -1,    29,   212,
    835      132,    -1,   211,    29,   212,   132,    -1,   274,    -1,   212,
    836      116,   274,    -1,   214,    -1,   223,    -1,   215,   135,   132,
    837       -1,   220,   135,   132,    -1,   217,   135,   132,    -1,   293,
    838      135,   132,    -1,   296,   135,   132,    -1,   216,   277,    -1,
    839      232,   216,   277,    -1,   215,   135,   116,   134,   272,   277,
    840       -1,   367,   272,   311,    -1,   370,   272,   311,    -1,   228,
    841      370,   272,   311,    -1,   218,    -1,   228,   218,    -1,   232,
    842      218,    -1,   232,   228,   218,    -1,   217,   135,   116,   134,
    843      272,    -1,   111,   112,   272,   109,   134,   260,   135,   110,
    844       -1,   370,   272,   109,   134,   260,   135,   110,    -1,   219,
    845      272,   109,   134,   260,   135,   110,    -1,   111,   134,   262,
    846      135,   112,    -1,   111,   134,   262,   135,   116,   134,   263,
    847      135,   112,    -1,     3,   216,    -1,     3,   218,    -1,   220,
    848      135,   116,   134,   139,    -1,     3,   226,   309,    -1,   221,
    849      135,   116,   134,   309,    -1,   228,     3,   226,   309,    -1,
    850      226,     3,   309,    -1,   226,     3,   228,   309,    -1,     3,
    851      139,   131,   165,    -1,   222,   135,   116,   134,   139,   131,
    852      165,    -1,   224,   135,   132,    -1,   221,   135,   132,    -1,
    853      222,   135,   132,    -1,   240,   135,   132,    -1,   225,   309,
    854      311,   277,    -1,   224,   116,   312,   309,   311,   277,    -1,
    855      236,    -1,   240,    -1,   242,    -1,   283,    -1,   237,    -1,
    856      241,    -1,   243,    -1,   284,    -1,    -1,   228,    -1,   229,
    857       -1,   228,   229,    -1,   230,    -1,   314,    -1,    10,    -1,
     751     306,     0,    -1,    -1,    -1,    79,    -1,    82,    -1,    83,
     752      -1,    84,    -1,    80,    -1,    72,    -1,    76,    -1,   142,
     753      -1,    72,    -1,    76,    -1,    72,    -1,   142,    -1,    85,
     754      -1,    86,    -1,   144,    -1,    81,    -1,   144,    81,    -1,
     755      72,    -1,   142,    -1,   172,    -1,   111,   174,   112,    -1,
     756     111,   178,   112,    -1,   145,    -1,   146,   113,   136,   169,
     757     137,   114,    -1,   146,   111,   147,   112,    -1,   146,   115,
     758     141,    -1,   146,   115,   113,   136,   149,   137,   114,    -1,
     759     146,    83,    -1,   146,    87,   141,    -1,   146,    87,   113,
     760     136,   149,   137,   114,    -1,   146,    88,    -1,   146,    89,
     761      -1,   111,   279,   112,   116,   283,   376,   117,    -1,   146,
     762     116,   147,   117,    -1,   148,    -1,   147,   118,   148,    -1,
     763      -1,   169,    -1,   150,    -1,   149,   118,   150,    -1,   151,
     764      -1,    82,   150,    -1,    82,   113,   136,   149,   137,   114,
     765      -1,   151,   115,   150,    -1,   151,   115,   113,   136,   149,
     766     137,   114,    -1,   151,    87,   150,    -1,   151,    87,   113,
     767     136,   149,   137,   114,    -1,    79,   152,    -1,    84,   152,
     768      -1,   141,   152,    -1,    -1,   152,    83,    -1,   146,    -1,
     769     138,    -1,   143,    -1,    40,   156,    -1,   154,   156,    -1,
     770     155,   156,    -1,    88,   153,    -1,    89,   153,    -1,    37,
     771     153,    -1,    37,   111,   279,   112,    -1,    66,   153,    -1,
     772      66,   111,   279,   112,    -1,    38,   111,   279,   118,   141,
     773     112,    -1,    76,    -1,    76,   111,   148,   112,    -1,    76,
     774     111,   280,   112,    -1,   119,    -1,   120,    -1,   121,    -1,
     775     122,    -1,   123,    -1,   124,    -1,   153,    -1,   111,   279,
     776     112,   156,    -1,   156,    -1,   157,   119,   156,    -1,   157,
     777     125,   156,    -1,   157,   126,   156,    -1,   157,    -1,   158,
     778     121,   157,    -1,   158,   122,   157,    -1,   158,    -1,   159,
     779      90,   158,    -1,   159,    91,   158,    -1,   159,    -1,   160,
     780     127,   159,    -1,   160,   128,   159,    -1,   160,    92,   159,
     781      -1,   160,    93,   159,    -1,   160,    -1,   161,    94,   160,
     782      -1,   161,    95,   160,    -1,   161,    -1,   162,   120,   161,
     783      -1,   162,    -1,   163,   129,   162,    -1,   163,    -1,   164,
     784     130,   163,    -1,   164,    -1,   165,    96,   164,    -1,   165,
     785      -1,   166,    97,   165,    -1,   166,    -1,   166,   131,   174,
     786     132,   167,    -1,   166,   131,   132,   167,    -1,   167,    -1,
     787     167,    -1,   153,   171,   169,    -1,    -1,   169,    -1,   133,
     788      -1,   109,    -1,    99,    -1,   100,    -1,   101,    -1,   102,
     789      -1,   103,    -1,   104,    -1,   105,    -1,   106,    -1,   107,
     790      -1,   108,    -1,   113,   136,   118,   173,   137,   114,    -1,
     791     113,   136,   169,   118,   173,   137,   114,    -1,   170,    -1,
     792     173,   118,   170,    -1,   169,    -1,   174,   118,   169,    -1,
     793      -1,   174,    -1,   177,    -1,   178,    -1,   182,    -1,   183,
     794      -1,   195,    -1,   197,    -1,   198,    -1,   203,    -1,   129,
     795     146,   116,   147,   117,   134,    -1,    72,   132,   316,   176,
     796      -1,   116,   117,    -1,   116,   136,   136,   214,   179,   137,
     797     117,    -1,   180,    -1,   179,   136,   180,    -1,   217,    -1,
     798      40,   217,    -1,   312,    -1,   176,   137,    -1,   176,    -1,
     799     181,   176,    -1,   175,   134,    -1,    41,   111,   174,   112,
     800     176,    -1,    41,   111,   174,   112,   176,    42,   176,    -1,
     801      43,   111,   174,   112,   188,    -1,    43,   111,   174,   112,
     802     116,   136,   210,   189,   117,    -1,    53,   111,   174,   112,
     803     188,    -1,    53,   111,   174,   112,   116,   136,   210,   191,
     804     117,    -1,   168,    -1,   168,    98,   168,    -1,   314,    -1,
     805     184,    -1,   185,   118,   184,    -1,    44,   185,   132,    -1,
     806      45,   132,    -1,   186,    -1,   187,   186,    -1,   187,   176,
     807      -1,    -1,   190,    -1,   187,   181,    -1,   190,   187,   181,
     808      -1,    -1,   192,    -1,   187,   194,    -1,   187,   181,   193,
     809      -1,   192,   187,   194,    -1,   192,   187,   181,   193,    -1,
     810      -1,   194,    -1,    56,    -1,    56,   134,    -1,    47,   111,
     811     174,   112,   176,    -1,    46,   176,    47,   111,   174,   112,
     812     134,    -1,    48,   111,   136,   196,   112,   176,    -1,   175,
     813     137,   134,   175,   134,   175,    -1,   217,   175,   134,   175,
     814      -1,    51,    72,   134,    -1,    51,   119,   174,   134,    -1,
     815      50,   134,    -1,    50,    72,   134,    -1,    49,   134,    -1,
     816      49,    72,   134,    -1,    52,   175,   134,    -1,    61,   170,
     817     134,    -1,    62,   170,   134,    -1,    62,   170,    63,   169,
     818     134,    -1,    57,   178,   199,    -1,    57,   178,   201,    -1,
     819      57,   178,   199,   201,    -1,   200,    -1,    58,   111,    98,
     820     112,   178,    -1,   200,    58,   111,    98,   112,   178,    -1,
     821      59,   111,    98,   112,   178,    -1,   200,    59,   111,    98,
     822     112,   178,    -1,    58,   111,   136,   136,   202,   137,   112,
     823     178,   137,    -1,   200,    58,   111,   136,   136,   202,   137,
     824     112,   178,   137,    -1,    59,   111,   136,   136,   202,   137,
     825     112,   178,   137,    -1,   200,    59,   111,   136,   136,   202,
     826     137,   112,   178,   137,    -1,    60,   178,    -1,   230,    -1,
     827     230,   313,    -1,   230,   361,    -1,   370,   141,    -1,   370,
     828      -1,    64,   204,   111,   143,   112,   134,    -1,    64,   204,
     829     111,   143,   132,   205,   112,   134,    -1,    64,   204,   111,
     830     143,   132,   205,   132,   205,   112,   134,    -1,    64,   204,
     831     111,   143,   132,   205,   132,   205,   132,   208,   112,   134,
     832      -1,    64,   204,    51,   111,   143,   132,   132,   205,   132,
     833     208,   132,   209,   112,   134,    -1,    -1,    11,    -1,    -1,
     834     206,    -1,   207,    -1,   206,   118,   207,    -1,   143,   111,
     835     168,   112,    -1,   113,   168,   114,   143,   111,   168,   112,
     836      -1,    -1,   143,    -1,   208,   118,   143,    -1,   141,    -1,
     837     209,   118,   141,    -1,   137,    -1,   211,    -1,   217,    -1,
     838     211,   136,   217,    -1,   137,    -1,   213,    -1,   227,    -1,
     839     213,   136,   227,    -1,    -1,   215,    -1,    29,   216,   134,
     840      -1,   215,    29,   216,   134,    -1,   278,    -1,   216,   118,
     841     278,    -1,   218,    -1,   227,    -1,   219,   137,   134,    -1,
     842     224,   137,   134,    -1,   221,   137,   134,    -1,   297,   137,
     843     134,    -1,   300,   137,   134,    -1,   220,   281,    -1,   236,
     844     220,   281,    -1,   219,   137,   118,   136,   276,   281,    -1,
     845     371,   276,   315,    -1,   374,   276,   315,    -1,   232,   374,
     846     276,   315,    -1,   222,    -1,   232,   222,    -1,   236,   222,
     847      -1,   236,   232,   222,    -1,   221,   137,   118,   136,   276,
     848      -1,   374,   276,   111,   136,   264,   137,   112,    -1,   223,
     849     276,   111,   136,   264,   137,   112,    -1,   113,   136,   266,
     850     137,   114,    -1,   113,   136,   266,   137,   118,   136,   267,
     851     137,   114,    -1,     3,   220,    -1,     3,   222,    -1,   224,
     852     137,   118,   136,   141,    -1,     3,   230,   313,    -1,   225,
     853     137,   118,   136,   313,    -1,   232,     3,   230,   313,    -1,
     854     230,     3,   313,    -1,   230,     3,   232,   313,    -1,     3,
     855     141,   133,   169,    -1,   226,   137,   118,   136,   141,   133,
     856     169,    -1,   228,   137,   134,    -1,   225,   137,   134,    -1,
     857     226,   137,   134,    -1,   244,   137,   134,    -1,   229,   313,
     858     315,   281,    -1,   228,   118,   316,   313,   315,   281,    -1,
     859     240,    -1,   244,    -1,   246,    -1,   287,    -1,   241,    -1,
     860     245,    -1,   247,    -1,   288,    -1,    -1,   232,    -1,   233,
     861      -1,   232,   233,    -1,   234,    -1,   318,    -1,    10,    -1,
    858862      12,    -1,    11,    -1,    14,    -1,    67,    -1,    -1,    13,
    859      109,   231,   286,   110,    -1,   233,    -1,   228,   233,    -1,
    860      232,   228,   233,    -1,   234,    -1,   233,   234,    -1,     5,
     863     111,   235,   290,   112,    -1,   237,    -1,   232,   237,    -1,
     864     236,   232,   237,    -1,   238,    -1,   237,   238,    -1,     5,
    861865      -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
    862866      -1,    69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,
    863867      -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
    864868      -1,    15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,
    865       -1,   237,    -1,   232,   237,    -1,   236,   234,    -1,   236,
    866      234,   228,    -1,   236,   234,   237,    -1,   238,    -1,   227,
    867      239,   227,    -1,   235,    -1,   228,   235,    -1,   238,   229,
    868       -1,   238,   235,    -1,    28,   109,   276,   110,    -1,    28,
    869      109,   170,   110,    -1,    78,   109,   276,   110,    -1,    78,
    870      109,   170,   110,    -1,   241,    -1,   232,   241,    -1,   240,
    871      234,    -1,   240,   234,   228,    -1,   244,    -1,   228,   244,
    872       -1,   241,   229,    -1,   243,    -1,   232,   243,    -1,   242,
    873      234,    -1,   242,   234,   228,    -1,    74,    -1,   228,    74,
    874       -1,   243,   229,    -1,   245,    -1,   256,    -1,   247,   114,
    875      248,   115,    -1,   247,   274,    -1,    -1,   247,   274,   246,
    876      114,   248,   115,    -1,   247,   109,   292,   110,   114,   248,
    877      115,    -1,   247,   285,    -1,    31,   312,    -1,    32,   312,
    878       -1,    -1,   248,   249,    -1,   250,   132,    -1,    40,   250,
    879      132,    -1,   251,   132,    -1,    40,   251,   132,    -1,   366,
    880       -1,   366,   274,    -1,   250,   116,   274,    -1,   250,   116,
    881       -1,   226,   252,    -1,   251,   116,   312,   252,    -1,    -1,
    882      254,    -1,   318,   253,    -1,   331,   253,    -1,   357,    -1,
    883       -1,   254,    -1,   130,   164,    -1,    30,   312,    -1,   255,
    884      114,   258,   372,   115,    -1,   255,   274,    -1,    -1,   255,
    885      274,   257,   114,   258,   372,   115,    -1,   274,   259,    -1,
    886      258,   116,   274,   259,    -1,    -1,   131,   164,    -1,    -1,
    887      261,    -1,   263,    -1,   262,    -1,   262,   135,   116,   134,
    888      263,    -1,   263,   135,   116,   134,    96,    -1,   262,   135,
    889      116,   134,    96,    -1,   267,    -1,   263,   135,   116,   134,
    890      267,    -1,   262,   135,   116,   134,   267,    -1,   262,   135,
    891      116,   134,   263,   135,   116,   134,   267,    -1,   268,    -1,
    892      263,   135,   116,   134,   268,    -1,    -1,   265,    -1,   266,
    893       -1,   266,   135,   116,   134,    96,    -1,   270,    -1,   269,
    894       -1,   266,   135,   116,   134,   270,    -1,   266,   135,   116,
    895      134,   269,    -1,   269,    -1,   362,   272,   373,    -1,   370,
    896      272,   373,    -1,   228,   370,   272,   373,    -1,   218,    -1,
    897      270,    -1,   362,    -1,   370,    -1,   228,   370,    -1,   371,
    898       -1,   225,   336,   373,    -1,   225,   340,   373,    -1,   225,
    899       -1,   225,   351,    -1,   139,    -1,   271,   116,   139,    -1,
    900      137,    -1,    74,    -1,    75,    -1,   138,    -1,    74,    -1,
    901       75,    -1,   139,    -1,    74,    -1,    75,    -1,   366,    -1,
    902      226,    -1,   226,   357,    -1,   366,    -1,   371,    -1,   226,
    903       -1,   226,   345,    -1,    -1,   131,   278,    -1,   107,   278,
    904       -1,   165,    -1,   114,   279,   372,   115,    -1,    -1,   278,
    905       -1,   280,   278,    -1,   279,   116,   278,    -1,   279,   116,
    906      280,   278,    -1,   281,   130,    -1,   274,   130,    -1,   282,
    907       -1,   281,   282,    -1,   113,   274,    -1,   111,   134,   165,
    908      135,   112,    -1,   111,   134,   310,   135,   112,    -1,   111,
    909      134,   164,    96,   164,   135,   112,    -1,   113,   111,   134,
    910      147,   135,   112,    -1,   284,    -1,   232,   284,    -1,   283,
    911      234,    -1,   283,   234,   228,    -1,   285,    -1,   228,   285,
    912       -1,   284,   229,    -1,    75,   109,   292,   110,    -1,   287,
    913      373,    -1,   286,   116,   287,   373,    -1,    -1,   289,   274,
    914      288,   290,    -1,   226,   336,    -1,    33,    -1,    35,    -1,
    915       34,    -1,    -1,   290,   291,    -1,   128,   274,   109,   292,
    916      110,    -1,   128,   114,   134,   298,   115,    -1,   128,   109,
    917      134,   286,   135,   110,   114,   134,   298,   115,   109,   292,
    918      110,    -1,   276,    -1,   165,    -1,   292,   116,   276,    -1,
    919      292,   116,   165,    -1,    33,   294,    -1,   233,    33,   294,
    920       -1,   293,   116,   294,    -1,   295,   290,    -1,   295,   290,
    921      131,   276,    -1,   274,    -1,   273,   109,   134,   286,   135,
    922      110,    -1,    36,   274,   109,   134,   286,   135,   110,   114,
    923      115,    -1,    -1,    36,   274,   109,   134,   286,   135,   110,
    924      114,   297,   298,   115,    -1,   299,    -1,   298,   134,   299,
    925       -1,   300,   135,   132,    -1,   301,   135,   132,    -1,   216,
    926       -1,   218,    -1,   300,   135,   116,   134,   272,    -1,   226,
    927      309,    -1,   301,   135,   116,   134,   309,    -1,    -1,   303,
    928       -1,   305,    -1,   303,   134,   305,    -1,    -1,   303,    -1,
    929      213,    -1,   307,    -1,   199,    -1,    -1,     5,    82,   306,
    930      114,   304,   115,    -1,    40,   305,    -1,   308,    -1,   323,
    931      174,    -1,   327,   134,   208,   174,    -1,   217,   174,    -1,
    932      225,   323,   174,    -1,   228,   323,   174,    -1,   232,   323,
    933      174,    -1,   232,   228,   323,   174,    -1,   225,   327,   134,
    934      208,   174,    -1,   228,   327,   134,   208,   174,    -1,   232,
    935      327,   134,   208,   174,    -1,   232,   228,   327,   134,   208,
    936      174,    -1,   318,    -1,   331,    -1,   323,    -1,   164,   122,
    937      164,    -1,    -1,    64,   109,   142,   110,   312,    -1,    -1,
    938      313,    -1,   314,    -1,   313,   314,    -1,    39,   109,   109,
    939      315,   110,   110,    -1,   316,    -1,   315,   116,   316,    -1,
    940       -1,   317,    -1,   317,   109,   171,   110,    -1,   272,    -1,
    941      234,    -1,   235,    -1,   229,    -1,   319,   312,    -1,   320,
    942       -1,   321,   312,    -1,   322,   312,    -1,   137,    -1,   109,
    943      319,   110,    -1,   150,   318,    -1,   150,   228,   318,    -1,
    944      109,   320,   110,    -1,   319,   349,    -1,   109,   320,   110,
    945      349,    -1,   109,   321,   110,   350,    -1,   109,   321,   110,
    946       -1,   109,   320,   110,   109,   134,   264,   135,   110,    -1,
    947      109,   322,   110,    -1,   324,   312,    -1,   325,    -1,   326,
    948      312,    -1,   319,   109,   134,   264,   135,   110,    -1,   109,
    949      325,   110,   109,   134,   264,   135,   110,    -1,   109,   324,
    950      110,    -1,   150,   323,    -1,   150,   228,   323,    -1,   109,
    951      325,   110,    -1,   109,   325,   110,   349,    -1,   109,   326,
    952      110,   350,    -1,   109,   326,   110,    -1,   328,    -1,   329,
    953       -1,   330,    -1,   319,   109,   271,   110,    -1,   109,   329,
    954      110,   109,   271,   110,    -1,   109,   328,   110,    -1,   150,
    955      327,    -1,   150,   228,   327,    -1,   109,   329,   110,    -1,
    956      109,   329,   110,   349,    -1,   109,   330,   110,   350,    -1,
    957      109,   330,   110,    -1,   332,   312,    -1,   333,    -1,   334,
    958      312,    -1,   335,   312,    -1,   341,    -1,   109,   332,   110,
    959       -1,   150,   331,    -1,   150,   228,   331,    -1,   109,   333,
    960      110,    -1,   332,   349,    -1,   109,   333,   110,   349,    -1,
    961      109,   334,   110,   350,    -1,   109,   334,   110,    -1,   332,
    962      109,   134,   264,   135,   110,    -1,   109,   333,   110,   109,
    963      134,   264,   135,   110,    -1,   109,   335,   110,    -1,   319,
    964      312,    -1,   337,    -1,   338,   312,    -1,   339,   312,    -1,
    965      150,   336,    -1,   150,   228,   336,    -1,   109,   337,   110,
    966       -1,   319,   355,    -1,   109,   337,   110,   349,    -1,   109,
    967      338,   110,   350,    -1,   109,   338,   110,    -1,   319,   109,
    968      134,   264,   135,   110,    -1,   109,   337,   110,   109,   134,
    969      264,   135,   110,    -1,   109,   339,   110,    -1,   341,   312,
    970       -1,   342,    -1,   343,   312,    -1,   344,   312,    -1,    74,
    971       -1,    75,    -1,   150,   340,    -1,   150,   228,   340,    -1,
    972      109,   342,   110,    -1,   341,   355,    -1,   109,   342,   110,
    973      355,    -1,   341,   109,   134,   264,   135,   110,    -1,   109,
    974      342,   110,   109,   134,   264,   135,   110,    -1,   346,    -1,
    975      347,   312,    -1,   348,   312,    -1,   150,    -1,   150,   228,
    976       -1,   150,   345,    -1,   150,   228,   345,    -1,   109,   346,
    977      110,    -1,   349,    -1,   109,   346,   110,   349,    -1,   109,
    978      347,   110,   350,    -1,   109,   347,   110,    -1,   109,   134,
    979      264,   135,   110,    -1,   109,   346,   110,   109,   134,   264,
    980      135,   110,    -1,   109,   348,   110,    -1,   111,   112,    -1,
    981      111,   112,   350,    -1,   350,    -1,   111,   134,   165,   135,
    982      112,    -1,   111,   134,   117,   135,   112,    -1,   350,   111,
    983      134,   165,   135,   112,    -1,   350,   111,   134,   117,   135,
    984      112,    -1,   352,    -1,   353,   312,    -1,   354,   312,    -1,
    985      150,    -1,   150,   228,    -1,   150,   351,    -1,   150,   228,
    986      351,    -1,   109,   352,   110,    -1,   355,    -1,   109,   352,
    987      110,   355,    -1,   109,   353,   110,   350,    -1,   109,   353,
    988      110,    -1,   109,   134,   264,   135,   110,    -1,   109,   352,
    989      110,   109,   134,   264,   135,   110,    -1,   109,   354,   110,
    990       -1,   356,    -1,   356,   350,    -1,   350,    -1,   111,   112,
    991       -1,   111,   134,   228,   117,   135,   112,    -1,   111,   134,
    992      228,   135,   112,    -1,   111,   134,   228,   165,   135,   112,
    993       -1,   111,   134,     7,   227,   165,   135,   112,    -1,   111,
    994      134,   228,     7,   165,   135,   112,    -1,   358,    -1,   359,
    995      312,    -1,   360,   312,    -1,   150,    -1,   150,   228,    -1,
    996      150,   357,    -1,   150,   228,   357,    -1,   109,   358,   110,
    997       -1,   349,    -1,   109,   358,   110,   349,    -1,   109,   359,
    998      110,   350,    -1,   109,   359,   110,    -1,   109,   358,   110,
    999      109,   134,   264,   135,   110,    -1,   109,   360,   110,    -1,
    1000      362,    -1,   370,    -1,   228,   370,    -1,   363,    -1,   364,
    1001       -1,   150,   226,    -1,   228,   150,   226,    -1,   150,   371,
    1002       -1,   228,   150,   371,    -1,   150,   361,    -1,   228,   150,
    1003      361,    -1,   111,   112,   226,    -1,   365,   226,    -1,   111,
    1004      112,   350,   226,    -1,   365,   350,   226,    -1,   350,   226,
    1005       -1,   111,   112,   363,    -1,   365,   363,    -1,   111,   112,
    1006      350,   363,    -1,   365,   350,   363,    -1,   350,   363,    -1,
    1007      111,   134,   228,   117,   135,   112,    -1,   111,   134,   228,
    1008      165,   135,   112,    -1,   111,   134,   232,   165,   135,   112,
    1009       -1,   111,   134,   232,   228,   165,   135,   112,    -1,   370,
    1010       -1,   228,   370,    -1,   367,    -1,   368,    -1,   369,    -1,
    1011      150,   226,    -1,   228,   150,   226,    -1,   150,   371,    -1,
    1012      228,   150,   371,    -1,   150,   366,    -1,   228,   150,   366,
    1013       -1,   111,   112,   226,    -1,   111,   112,   350,   226,    -1,
    1014      350,   226,    -1,   111,   112,   368,    -1,   111,   112,   350,
    1015      368,    -1,   350,   368,    -1,   111,   134,   263,   135,   112,
    1016       -1,   111,   112,   109,   260,   110,    -1,   370,   109,   134,
    1017      260,   135,   110,    -1,   219,   109,   134,   260,   135,   110,
    1018       -1,    -1,   116,    -1,    -1,   131,   165,    -1
     869      -1,   241,    -1,   236,   241,    -1,   240,   238,    -1,   240,
     870     238,   232,    -1,   240,   238,   241,    -1,   242,    -1,   231,
     871     243,   231,    -1,   239,    -1,   232,   239,    -1,   242,   233,
     872      -1,   242,   239,    -1,    28,   111,   280,   112,    -1,    28,
     873     111,   174,   112,    -1,    78,   111,   280,   112,    -1,    78,
     874     111,   174,   112,    -1,   245,    -1,   236,   245,    -1,   244,
     875     238,    -1,   244,   238,   232,    -1,   248,    -1,   232,   248,
     876      -1,   245,   233,    -1,   247,    -1,   236,   247,    -1,   246,
     877     238,    -1,   246,   238,   232,    -1,    74,    -1,   232,    74,
     878      -1,   247,   233,    -1,   249,    -1,   260,    -1,   251,   116,
     879     252,   117,    -1,   251,   278,    -1,    -1,   251,   278,   250,
     880     116,   252,   117,    -1,   251,   111,   296,   112,   116,   252,
     881     117,    -1,   251,   289,    -1,    31,   316,    -1,    32,   316,
     882      -1,    -1,   252,   253,    -1,   254,   134,    -1,    40,   254,
     883     134,    -1,   255,   134,    -1,    40,   255,   134,    -1,   370,
     884      -1,   370,   278,    -1,   254,   118,   278,    -1,   254,   118,
     885      -1,   230,   256,    -1,   255,   118,   316,   256,    -1,    -1,
     886     258,    -1,   322,   257,    -1,   335,   257,    -1,   361,    -1,
     887      -1,   258,    -1,   132,   168,    -1,    30,   316,    -1,   259,
     888     116,   262,   376,   117,    -1,   259,   278,    -1,    -1,   259,
     889     278,   261,   116,   262,   376,   117,    -1,   278,   263,    -1,
     890     262,   118,   278,   263,    -1,    -1,   133,   168,    -1,    -1,
     891     265,    -1,   267,    -1,   266,    -1,   266,   137,   118,   136,
     892     267,    -1,   267,   137,   118,   136,    98,    -1,   266,   137,
     893     118,   136,    98,    -1,   271,    -1,   267,   137,   118,   136,
     894     271,    -1,   266,   137,   118,   136,   271,    -1,   266,   137,
     895     118,   136,   267,   137,   118,   136,   271,    -1,   272,    -1,
     896     267,   137,   118,   136,   272,    -1,    -1,   269,    -1,   270,
     897      -1,   270,   137,   118,   136,    98,    -1,   274,    -1,   273,
     898      -1,   270,   137,   118,   136,   274,    -1,   270,   137,   118,
     899     136,   273,    -1,   273,    -1,   366,   276,   377,    -1,   374,
     900     276,   377,    -1,   232,   374,   276,   377,    -1,   222,    -1,
     901     274,    -1,   366,    -1,   374,    -1,   232,   374,    -1,   375,
     902      -1,   229,   340,   377,    -1,   229,   344,   377,    -1,   229,
     903      -1,   229,   355,    -1,   141,    -1,   275,   118,   141,    -1,
     904     139,    -1,    74,    -1,    75,    -1,   140,    -1,    74,    -1,
     905      75,    -1,   141,    -1,    74,    -1,    75,    -1,   370,    -1,
     906     230,    -1,   230,   361,    -1,   370,    -1,   375,    -1,   230,
     907      -1,   230,   349,    -1,    -1,   133,   282,    -1,   109,   282,
     908      -1,   169,    -1,   116,   283,   376,   117,    -1,    -1,   282,
     909      -1,   284,   282,    -1,   283,   118,   282,    -1,   283,   118,
     910     284,   282,    -1,   285,   132,    -1,   278,   132,    -1,   286,
     911      -1,   285,   286,    -1,   115,   278,    -1,   113,   136,   169,
     912     137,   114,    -1,   113,   136,   314,   137,   114,    -1,   113,
     913     136,   168,    98,   168,   137,   114,    -1,   115,   113,   136,
     914     149,   137,   114,    -1,   288,    -1,   236,   288,    -1,   287,
     915     238,    -1,   287,   238,   232,    -1,   289,    -1,   232,   289,
     916      -1,   288,   233,    -1,    75,   111,   296,   112,    -1,   291,
     917     377,    -1,   290,   118,   291,   377,    -1,    -1,   293,   278,
     918     292,   294,    -1,   230,   340,    -1,    33,    -1,    35,    -1,
     919      34,    -1,    -1,   294,   295,    -1,   130,   278,   111,   296,
     920     112,    -1,   130,   116,   136,   302,   117,    -1,   130,   111,
     921     136,   290,   137,   112,   116,   136,   302,   117,   111,   296,
     922     112,    -1,   280,    -1,   169,    -1,   296,   118,   280,    -1,
     923     296,   118,   169,    -1,    33,   298,    -1,   237,    33,   298,
     924      -1,   297,   118,   298,    -1,   299,   294,    -1,   299,   294,
     925     133,   280,    -1,   278,    -1,   277,   111,   136,   290,   137,
     926     112,    -1,    36,   278,   111,   136,   290,   137,   112,   116,
     927     117,    -1,    -1,    36,   278,   111,   136,   290,   137,   112,
     928     116,   301,   302,   117,    -1,   303,    -1,   302,   136,   303,
     929      -1,   304,   137,   134,    -1,   305,   137,   134,    -1,   220,
     930      -1,   222,    -1,   304,   137,   118,   136,   276,    -1,   230,
     931     313,    -1,   305,   137,   118,   136,   313,    -1,    -1,   307,
     932      -1,   309,    -1,   307,   136,   309,    -1,    -1,   307,    -1,
     933     217,    -1,   311,    -1,   203,    -1,    -1,     5,    81,   310,
     934     116,   308,   117,    -1,    40,   309,    -1,   312,    -1,   327,
     935     178,    -1,   331,   136,   212,   178,    -1,   221,   178,    -1,
     936     229,   327,   178,    -1,   232,   327,   178,    -1,   236,   327,
     937     178,    -1,   236,   232,   327,   178,    -1,   229,   331,   136,
     938     212,   178,    -1,   232,   331,   136,   212,   178,    -1,   236,
     939     331,   136,   212,   178,    -1,   236,   232,   331,   136,   212,
     940     178,    -1,   322,    -1,   335,    -1,   327,    -1,   168,   124,
     941     168,    -1,    -1,    64,   111,   144,   112,   316,    -1,    -1,
     942     317,    -1,   318,    -1,   317,   318,    -1,    39,   111,   111,
     943     319,   112,   112,    -1,   320,    -1,   319,   118,   320,    -1,
     944      -1,   321,    -1,   321,   111,   175,   112,    -1,   276,    -1,
     945     238,    -1,   239,    -1,   233,    -1,   323,   316,    -1,   324,
     946      -1,   325,   316,    -1,   326,   316,    -1,   139,    -1,   111,
     947     323,   112,    -1,   154,   322,    -1,   154,   232,   322,    -1,
     948     111,   324,   112,    -1,   323,   353,    -1,   111,   324,   112,
     949     353,    -1,   111,   325,   112,   354,    -1,   111,   325,   112,
     950      -1,   111,   324,   112,   111,   136,   268,   137,   112,    -1,
     951     111,   326,   112,    -1,   328,   316,    -1,   329,    -1,   330,
     952     316,    -1,   323,   111,   136,   268,   137,   112,    -1,   111,
     953     329,   112,   111,   136,   268,   137,   112,    -1,   111,   328,
     954     112,    -1,   154,   327,    -1,   154,   232,   327,    -1,   111,
     955     329,   112,    -1,   111,   329,   112,   353,    -1,   111,   330,
     956     112,   354,    -1,   111,   330,   112,    -1,   332,    -1,   333,
     957      -1,   334,    -1,   323,   111,   275,   112,    -1,   111,   333,
     958     112,   111,   275,   112,    -1,   111,   332,   112,    -1,   154,
     959     331,    -1,   154,   232,   331,    -1,   111,   333,   112,    -1,
     960     111,   333,   112,   353,    -1,   111,   334,   112,   354,    -1,
     961     111,   334,   112,    -1,   336,   316,    -1,   337,    -1,   338,
     962     316,    -1,   339,   316,    -1,   345,    -1,   111,   336,   112,
     963      -1,   154,   335,    -1,   154,   232,   335,    -1,   111,   337,
     964     112,    -1,   336,   353,    -1,   111,   337,   112,   353,    -1,
     965     111,   338,   112,   354,    -1,   111,   338,   112,    -1,   336,
     966     111,   136,   268,   137,   112,    -1,   111,   337,   112,   111,
     967     136,   268,   137,   112,    -1,   111,   339,   112,    -1,   323,
     968     316,    -1,   341,    -1,   342,   316,    -1,   343,   316,    -1,
     969     154,   340,    -1,   154,   232,   340,    -1,   111,   341,   112,
     970      -1,   323,   359,    -1,   111,   341,   112,   353,    -1,   111,
     971     342,   112,   354,    -1,   111,   342,   112,    -1,   323,   111,
     972     136,   268,   137,   112,    -1,   111,   341,   112,   111,   136,
     973     268,   137,   112,    -1,   111,   343,   112,    -1,   345,   316,
     974      -1,   346,    -1,   347,   316,    -1,   348,   316,    -1,    74,
     975      -1,    75,    -1,   154,   344,    -1,   154,   232,   344,    -1,
     976     111,   346,   112,    -1,   345,   359,    -1,   111,   346,   112,
     977     359,    -1,   345,   111,   136,   268,   137,   112,    -1,   111,
     978     346,   112,   111,   136,   268,   137,   112,    -1,   350,    -1,
     979     351,   316,    -1,   352,   316,    -1,   154,    -1,   154,   232,
     980      -1,   154,   349,    -1,   154,   232,   349,    -1,   111,   350,
     981     112,    -1,   353,    -1,   111,   350,   112,   353,    -1,   111,
     982     351,   112,   354,    -1,   111,   351,   112,    -1,   111,   136,
     983     268,   137,   112,    -1,   111,   350,   112,   111,   136,   268,
     984     137,   112,    -1,   111,   352,   112,    -1,   113,   114,    -1,
     985     113,   114,   354,    -1,   354,    -1,   113,   136,   169,   137,
     986     114,    -1,   113,   136,   119,   137,   114,    -1,   354,   113,
     987     136,   169,   137,   114,    -1,   354,   113,   136,   119,   137,
     988     114,    -1,   356,    -1,   357,   316,    -1,   358,   316,    -1,
     989     154,    -1,   154,   232,    -1,   154,   355,    -1,   154,   232,
     990     355,    -1,   111,   356,   112,    -1,   359,    -1,   111,   356,
     991     112,   359,    -1,   111,   357,   112,   354,    -1,   111,   357,
     992     112,    -1,   111,   136,   268,   137,   112,    -1,   111,   356,
     993     112,   111,   136,   268,   137,   112,    -1,   111,   358,   112,
     994      -1,   360,    -1,   360,   354,    -1,   354,    -1,   113,   114,
     995      -1,   113,   136,   232,   119,   137,   114,    -1,   113,   136,
     996     232,   137,   114,    -1,   113,   136,   232,   169,   137,   114,
     997      -1,   113,   136,     7,   231,   169,   137,   114,    -1,   113,
     998     136,   232,     7,   169,   137,   114,    -1,   362,    -1,   363,
     999     316,    -1,   364,   316,    -1,   154,    -1,   154,   232,    -1,
     1000     154,   361,    -1,   154,   232,   361,    -1,   111,   362,   112,
     1001      -1,   353,    -1,   111,   362,   112,   353,    -1,   111,   363,
     1002     112,   354,    -1,   111,   363,   112,    -1,   111,   362,   112,
     1003     111,   136,   268,   137,   112,    -1,   111,   364,   112,    -1,
     1004     366,    -1,   374,    -1,   232,   374,    -1,   367,    -1,   368,
     1005      -1,   154,   230,    -1,   232,   154,   230,    -1,   154,   375,
     1006      -1,   232,   154,   375,    -1,   154,   365,    -1,   232,   154,
     1007     365,    -1,   113,   114,   230,    -1,   369,   230,    -1,   113,
     1008     114,   354,   230,    -1,   369,   354,   230,    -1,   354,   230,
     1009      -1,   113,   114,   367,    -1,   369,   367,    -1,   113,   114,
     1010     354,   367,    -1,   369,   354,   367,    -1,   354,   367,    -1,
     1011     113,   136,   232,   119,   137,   114,    -1,   113,   136,   232,
     1012     169,   137,   114,    -1,   113,   136,   236,   169,   137,   114,
     1013      -1,   113,   136,   236,   232,   169,   137,   114,    -1,   374,
     1014      -1,   232,   374,    -1,   371,    -1,   372,    -1,   373,    -1,
     1015     154,   230,    -1,   232,   154,   230,    -1,   154,   375,    -1,
     1016     232,   154,   375,    -1,   154,   370,    -1,   232,   154,   370,
     1017      -1,   113,   114,   230,    -1,   113,   114,   354,   230,    -1,
     1018     354,   230,    -1,   113,   114,   372,    -1,   113,   114,   354,
     1019     372,    -1,   354,   372,    -1,   113,   136,   267,   137,   114,
     1020      -1,   374,   111,   136,   264,   137,   112,    -1,   223,   111,
     1021     136,   264,   137,   112,    -1,    -1,   118,    -1,    -1,   133,
     1022     169,    -1
    10191023};
    10201024
     
    10221026static const yytype_uint16 yyrline[] =
    10231027{
    1024        0,   301,   301,   305,   312,   313,   314,   318,   319,   320,
    1025      324,   325,   329,   330,   334,   335,   339,   343,   344,   355,
    1026      357,   359,   361,   366,   367,   373,   377,   379,   380,   382,
    1027      383,   385,   387,   389,   398,   399,   405,   406,   410,   411,
    1028      415,   419,   421,   423,   425,   430,   433,   435,   437,   442,
    1029      455,   457,   459,   461,   463,   465,   467,   469,   471,   473,
    1030      475,   482,   483,   489,   490,   491,   492,   496,   497,   499,
    1031      504,   505,   507,   509,   514,   515,   517,   522,   523,   525,
    1032      530,   531,   533,   535,   537,   542,   543,   545,   550,   551,
    1033      556,   557,   562,   563,   568,   569,   574,   575,   580,   581,
    1034      584,   586,   591,   596,   597,   599,   605,   606,   610,   611,
    1035      612,   613,   614,   615,   616,   617,   618,   619,   620,   621,
    1036      627,   629,   631,   633,   638,   639,   644,   645,   651,   652,
    1037      658,   659,   660,   661,   662,   663,   664,   665,   666,   676,
    1038      683,   685,   695,   696,   701,   703,   709,   711,   715,   716,
    1039      721,   726,   729,   731,   733,   743,   745,   756,   757,   759,
    1040      763,   765,   769,   770,   775,   776,   780,   785,   786,   790,
    1041      792,   798,   799,   803,   805,   807,   809,   815,   816,   820,
    1042      822,   827,   829,   831,   836,   838,   843,   845,   849,   852,
    1043      856,   859,   863,   865,   867,   869,   874,   876,   878,   883,
    1044      885,   887,   889,   891,   896,   898,   900,   902,   907,   919,
    1045      920,   925,   927,   932,   936,   938,   940,   942,   944,   950,
    1046      951,   957,   958,   962,   963,   968,   970,   976,   977,   979,
    1047      984,   989,   999,  1001,  1005,  1006,  1011,  1013,  1017,  1018,
    1048     1022,  1024,  1028,  1029,  1033,  1034,  1038,  1039,  1054,  1055,
    1049     1056,  1057,  1058,  1062,  1067,  1074,  1084,  1089,  1094,  1102,
    1050     1107,  1112,  1117,  1122,  1130,  1152,  1157,  1164,  1166,  1173,
    1051     1178,  1183,  1194,  1199,  1204,  1209,  1214,  1223,  1228,  1236,
    1052     1237,  1238,  1239,  1245,  1250,  1258,  1259,  1260,  1261,  1265,
    1053     1266,  1267,  1268,  1273,  1274,  1283,  1284,  1289,  1290,  1295,
    1054     1297,  1299,  1301,  1303,  1306,  1305,  1317,  1318,  1320,  1330,
    1055     1331,  1336,  1338,  1340,  1342,  1344,  1347,  1349,  1352,  1357,
    1056     1359,  1361,  1363,  1365,  1367,  1369,  1371,  1373,  1375,  1377,
    1057     1379,  1381,  1387,  1388,  1390,  1392,  1394,  1399,  1400,  1406,
    1058     1407,  1409,  1411,  1416,  1418,  1420,  1422,  1427,  1428,  1430,
    1059     1432,  1437,  1438,  1440,  1445,  1446,  1448,  1450,  1455,  1457,
    1060     1459,  1464,  1465,  1469,  1471,  1477,  1476,  1480,  1482,  1487,
    1061     1489,  1495,  1496,  1501,  1502,  1504,  1505,  1514,  1515,  1517,
    1062     1519,  1524,  1526,  1532,  1533,  1535,  1538,  1541,  1546,  1547,
    1063     1552,  1557,  1561,  1563,  1569,  1568,  1575,  1577,  1583,  1584,
    1064     1592,  1593,  1597,  1598,  1599,  1601,  1603,  1610,  1611,  1613,
    1065     1615,  1620,  1621,  1627,  1628,  1632,  1633,  1638,  1639,  1640,
    1066     1642,  1650,  1651,  1653,  1656,  1658,  1662,  1663,  1664,  1666,
    1067     1668,  1672,  1677,  1685,  1686,  1695,  1697,  1702,  1703,  1704,
    1068     1708,  1709,  1710,  1714,  1715,  1716,  1720,  1721,  1722,  1727,
    1069     1728,  1729,  1730,  1736,  1737,  1739,  1744,  1745,  1750,  1751,
    1070     1752,  1753,  1754,  1769,  1770,  1775,  1776,  1782,  1784,  1787,
    1071     1789,  1791,  1814,  1815,  1817,  1819,  1824,  1825,  1827,  1832,
    1072     1837,  1838,  1844,  1843,  1847,  1851,  1853,  1855,  1861,  1862,
    1073     1867,  1872,  1874,  1879,  1881,  1882,  1884,  1889,  1891,  1893,
    1074     1898,  1900,  1905,  1910,  1918,  1924,  1923,  1937,  1938,  1943,
    1075     1944,  1948,  1953,  1958,  1966,  1971,  1982,  1983,  1988,  1989,
    1076     1995,  1996,  2000,  2001,  2002,  2005,  2004,  2015,  2024,  2030,
    1077     2036,  2045,  2051,  2057,  2063,  2069,  2077,  2083,  2091,  2097,
    1078     2106,  2107,  2108,  2112,  2116,  2118,  2123,  2124,  2128,  2129,
    1079     2134,  2140,  2141,  2144,  2146,  2147,  2151,  2152,  2153,  2154,
    1080     2188,  2190,  2191,  2193,  2198,  2203,  2208,  2210,  2212,  2217,
    1081     2219,  2221,  2223,  2228,  2230,  2239,  2241,  2242,  2247,  2249,
    1082     2251,  2256,  2258,  2260,  2265,  2267,  2269,  2278,  2279,  2280,
    1083     2284,  2286,  2288,  2293,  2295,  2297,  2302,  2304,  2306,  2321,
    1084     2323,  2324,  2326,  2331,  2332,  2337,  2339,  2341,  2346,  2348,
    1085     2350,  2352,  2357,  2359,  2361,  2371,  2373,  2374,  2376,  2381,
    1086     2383,  2385,  2390,  2392,  2394,  2396,  2401,  2403,  2405,  2436,
    1087     2438,  2439,  2441,  2446,  2451,  2459,  2461,  2463,  2468,  2470,
    1088     2475,  2477,  2491,  2492,  2494,  2499,  2501,  2503,  2505,  2507,
    1089     2512,  2513,  2515,  2517,  2522,  2524,  2526,  2532,  2534,  2536,
    1090     2540,  2542,  2544,  2546,  2560,  2561,  2563,  2568,  2570,  2572,
    1091     2574,  2576,  2581,  2582,  2584,  2586,  2591,  2593,  2595,  2601,
    1092     2602,  2604,  2613,  2616,  2618,  2621,  2623,  2625,  2638,  2639,
    1093     2641,  2646,  2648,  2650,  2652,  2654,  2659,  2660,  2662,  2664,
    1094     2669,  2671,  2679,  2680,  2681,  2686,  2687,  2691,  2693,  2695,
    1095     2697,  2699,  2701,  2708,  2710,  2712,  2714,  2716,  2718,  2720,
    1096     2722,  2724,  2726,  2731,  2733,  2735,  2740,  2766,  2767,  2769,
    1097     2773,  2774,  2778,  2780,  2782,  2784,  2786,  2788,  2795,  2797,
    1098     2799,  2801,  2803,  2805,  2810,  2815,  2817,  2819,  2837,  2839,
    1099     2844,  2845
     1028       0,   306,   306,   310,   317,   318,   319,   320,   321,   325,
     1029     326,   327,   331,   332,   336,   337,   341,   342,   346,   350,
     1030     351,   362,   364,   366,   367,   369,   374,   375,   381,   383,
     1031     385,   386,   387,   389,   390,   392,   394,   396,   405,   406,
     1032     412,   413,   417,   418,   422,   424,   426,   428,   430,   432,
     1033     434,   439,   441,   443,   447,   449,   453,   456,   458,   460,
     1034     465,   478,   480,   482,   484,   486,   488,   490,   492,   494,
     1035     496,   498,   505,   506,   512,   513,   514,   515,   519,   520,
     1036     527,   528,   530,   532,   537,   538,   540,   545,   546,   548,
     1037     553,   554,   556,   558,   560,   565,   566,   568,   573,   574,
     1038     579,   580,   585,   586,   591,   592,   597,   598,   603,   604,
     1039     607,   614,   619,   620,   628,   629,   633,   634,   635,   636,
     1040     637,   638,   639,   640,   641,   642,   643,   644,   654,   656,
     1041     661,   662,   667,   668,   674,   675,   681,   682,   683,   684,
     1042     685,   686,   687,   688,   689,   699,   706,   708,   718,   719,
     1043     724,   726,   732,   734,   738,   739,   744,   749,   752,   754,
     1044     756,   766,   768,   779,   780,   782,   786,   788,   792,   793,
     1045     798,   799,   803,   808,   809,   813,   815,   821,   822,   826,
     1046     828,   830,   832,   838,   839,   843,   845,   850,   852,   854,
     1047     859,   861,   866,   868,   872,   875,   879,   882,   886,   888,
     1048     890,   892,   897,   899,   901,   906,   908,   910,   912,   914,
     1049     919,   921,   923,   925,   930,   942,   943,   948,   950,   955,
     1050     959,   961,   963,   965,   967,   973,   974,   980,   981,   985,
     1051     986,   991,   993,   999,  1000,  1002,  1007,  1012,  1022,  1024,
     1052    1028,  1029,  1034,  1036,  1040,  1041,  1045,  1047,  1051,  1052,
     1053    1056,  1057,  1061,  1062,  1077,  1078,  1079,  1080,  1081,  1085,
     1054    1090,  1097,  1107,  1112,  1117,  1125,  1130,  1135,  1140,  1145,
     1055    1175,  1180,  1187,  1189,  1196,  1201,  1206,  1217,  1222,  1227,
     1056    1232,  1237,  1246,  1251,  1259,  1260,  1261,  1262,  1268,  1273,
     1057    1281,  1282,  1283,  1284,  1288,  1289,  1290,  1291,  1296,  1297,
     1058    1306,  1307,  1312,  1313,  1318,  1320,  1322,  1324,  1326,  1329,
     1059    1328,  1340,  1341,  1343,  1353,  1354,  1359,  1361,  1363,  1365,
     1060    1367,  1370,  1372,  1375,  1380,  1382,  1384,  1386,  1388,  1390,
     1061    1392,  1394,  1396,  1398,  1400,  1402,  1404,  1410,  1411,  1413,
     1062    1415,  1417,  1422,  1423,  1429,  1430,  1432,  1434,  1439,  1441,
     1063    1443,  1445,  1450,  1451,  1453,  1455,  1460,  1461,  1463,  1468,
     1064    1469,  1471,  1473,  1478,  1480,  1482,  1487,  1488,  1492,  1494,
     1065    1500,  1499,  1503,  1505,  1510,  1512,  1518,  1519,  1524,  1525,
     1066    1527,  1528,  1537,  1538,  1540,  1542,  1547,  1549,  1555,  1556,
     1067    1558,  1561,  1564,  1569,  1570,  1575,  1580,  1584,  1586,  1592,
     1068    1591,  1598,  1600,  1606,  1607,  1615,  1616,  1620,  1621,  1622,
     1069    1624,  1626,  1633,  1634,  1636,  1638,  1643,  1644,  1650,  1651,
     1070    1655,  1656,  1661,  1662,  1663,  1665,  1673,  1674,  1676,  1679,
     1071    1681,  1685,  1686,  1687,  1689,  1691,  1695,  1700,  1708,  1709,
     1072    1718,  1720,  1725,  1726,  1727,  1731,  1732,  1733,  1737,  1738,
     1073    1739,  1743,  1744,  1745,  1750,  1751,  1752,  1753,  1759,  1760,
     1074    1762,  1767,  1768,  1773,  1774,  1775,  1776,  1777,  1792,  1793,
     1075    1798,  1799,  1805,  1807,  1810,  1812,  1814,  1837,  1838,  1840,
     1076    1842,  1847,  1848,  1850,  1855,  1860,  1861,  1867,  1866,  1870,
     1077    1874,  1876,  1878,  1884,  1885,  1890,  1895,  1897,  1902,  1904,
     1078    1905,  1907,  1912,  1914,  1916,  1921,  1923,  1928,  1933,  1941,
     1079    1947,  1946,  1960,  1961,  1966,  1967,  1971,  1976,  1981,  1989,
     1080    1994,  2005,  2006,  2011,  2012,  2018,  2019,  2023,  2024,  2025,
     1081    2028,  2027,  2038,  2047,  2053,  2059,  2068,  2074,  2080,  2086,
     1082    2092,  2100,  2106,  2114,  2120,  2129,  2130,  2131,  2135,  2139,
     1083    2141,  2146,  2147,  2151,  2152,  2157,  2163,  2164,  2167,  2169,
     1084    2170,  2174,  2175,  2176,  2177,  2211,  2213,  2214,  2216,  2221,
     1085    2226,  2231,  2233,  2235,  2240,  2242,  2244,  2246,  2251,  2253,
     1086    2262,  2264,  2265,  2270,  2272,  2274,  2279,  2281,  2283,  2288,
     1087    2290,  2292,  2301,  2302,  2303,  2307,  2309,  2311,  2316,  2318,
     1088    2320,  2325,  2327,  2329,  2344,  2346,  2347,  2349,  2354,  2355,
     1089    2360,  2362,  2364,  2369,  2371,  2373,  2375,  2380,  2382,  2384,
     1090    2394,  2396,  2397,  2399,  2404,  2406,  2408,  2413,  2415,  2417,
     1091    2419,  2424,  2426,  2428,  2459,  2461,  2462,  2464,  2469,  2474,
     1092    2482,  2484,  2486,  2491,  2493,  2498,  2500,  2514,  2515,  2517,
     1093    2522,  2524,  2526,  2528,  2530,  2535,  2536,  2538,  2540,  2545,
     1094    2547,  2549,  2555,  2557,  2559,  2563,  2565,  2567,  2569,  2583,
     1095    2584,  2586,  2591,  2593,  2595,  2597,  2599,  2604,  2605,  2607,
     1096    2609,  2614,  2616,  2618,  2624,  2625,  2627,  2636,  2639,  2641,
     1097    2644,  2646,  2648,  2661,  2662,  2664,  2669,  2671,  2673,  2675,
     1098    2677,  2682,  2683,  2685,  2687,  2692,  2694,  2702,  2703,  2704,
     1099    2709,  2710,  2714,  2716,  2718,  2720,  2722,  2724,  2731,  2733,
     1100    2735,  2737,  2739,  2742,  2744,  2746,  2748,  2750,  2755,  2757,
     1101    2759,  2764,  2790,  2791,  2793,  2797,  2798,  2802,  2804,  2806,
     1102    2808,  2810,  2812,  2819,  2821,  2823,  2825,  2827,  2829,  2834,
     1103    2841,  2843,  2861,  2863,  2868,  2869
    11001104};
    11011105#endif
     
    11181122  "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",
    11191123  "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
    1120   "INTEGERconstant", "FLOATINGconstant", "CHARACTERconstant",
    1121   "STRINGliteral", "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE",
    1122   "GE", "EQ", "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign",
    1123   "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
    1124   "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN",
    1125   "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "'*'", "'&'",
    1126   "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'",
    1127   "'?'", "':'", "'='", "';'", "$accept", "push", "pop", "constant",
    1128   "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
    1129   "string_literal", "string_literal_list", "primary_expression",
    1130   "postfix_expression", "argument_expression_list", "argument_expression",
    1131   "field_list", "field", "unary_expression", "ptrref_operator",
    1132   "unary_operator", "cast_expression", "multiplicative_expression",
    1133   "additive_expression", "shift_expression", "relational_expression",
    1134   "equality_expression", "AND_expression", "exclusive_OR_expression",
    1135   "inclusive_OR_expression", "logical_AND_expression",
    1136   "logical_OR_expression", "conditional_expression", "constant_expression",
    1137   "assignment_expression", "assignment_expression_opt",
    1138   "assignment_operator", "tuple", "tuple_expression_list",
    1139   "comma_expression", "comma_expression_opt", "statement",
    1140   "labeled_statement", "compound_statement", "block_item_list",
    1141   "block_item", "statement_list", "expression_statement",
    1142   "selection_statement", "case_value", "case_value_list", "case_label",
    1143   "case_label_list", "case_clause", "switch_clause_list_opt",
    1144   "switch_clause_list", "choose_clause_list_opt", "choose_clause_list",
    1145   "fall_through_opt", "fall_through", "iteration_statement",
    1146   "for_control_expression", "jump_statement", "exception_statement",
    1147   "handler_list", "handler_clause", "finally_clause",
    1148   "exception_declaration", "asm_statement", "asm_volatile_opt",
    1149   "asm_operands_opt", "asm_operands_list", "asm_operand",
    1150   "asm_clobbers_list_opt", "label_list", "declaration_list_opt",
    1151   "declaration_list", "old_declaration_list_opt", "old_declaration_list",
    1152   "local_label_declaration_opt", "local_label_declaration_list",
    1153   "local_label_list", "declaration", "new_declaration",
    1154   "new_variable_declaration", "new_variable_specifier",
     1124  "INTEGERconstant", "CHARACTERconstant", "STRINGliteral",
     1125  "REALDECIMALconstant", "REALFRACTIONconstant", "FLOATINGconstant",
     1126  "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE", "GE", "EQ",
     1127  "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign", "DIVassign",
     1128  "MODassign", "PLUSassign", "MINUSassign", "LSassign", "RSassign",
     1129  "ANDassign", "ERassign", "ORassign", "ATassign", "THEN", "'('", "')'",
     1130  "'['", "']'", "'.'", "'{'", "'}'", "','", "'*'", "'&'", "'+'", "'-'",
     1131  "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'", "':'",
     1132  "'='", "';'", "$accept", "push", "pop", "constant", "identifier",
     1133  "no_01_identifier", "no_attr_identifier", "zero_one", "string_literal",
     1134  "string_literal_list", "primary_expression", "postfix_expression",
     1135  "argument_expression_list", "argument_expression", "field_list", "field",
     1136  "field_name", "fraction_constants", "unary_expression",
     1137  "ptrref_operator", "unary_operator", "cast_expression",
     1138  "multiplicative_expression", "additive_expression", "shift_expression",
     1139  "relational_expression", "equality_expression", "AND_expression",
     1140  "exclusive_OR_expression", "inclusive_OR_expression",
     1141  "logical_AND_expression", "logical_OR_expression",
     1142  "conditional_expression", "constant_expression", "assignment_expression",
     1143  "assignment_expression_opt", "assignment_operator", "tuple",
     1144  "tuple_expression_list", "comma_expression", "comma_expression_opt",
     1145  "statement", "labeled_statement", "compound_statement",
     1146  "block_item_list", "block_item", "statement_list",
     1147  "expression_statement", "selection_statement", "case_value",
     1148  "case_value_list", "case_label", "case_label_list", "case_clause",
     1149  "switch_clause_list_opt", "switch_clause_list", "choose_clause_list_opt",
     1150  "choose_clause_list", "fall_through_opt", "fall_through",
     1151  "iteration_statement", "for_control_expression", "jump_statement",
     1152  "exception_statement", "handler_list", "handler_clause",
     1153  "finally_clause", "exception_declaration", "asm_statement",
     1154  "asm_volatile_opt", "asm_operands_opt", "asm_operands_list",
     1155  "asm_operand", "asm_clobbers_list_opt", "label_list",
     1156  "declaration_list_opt", "declaration_list", "old_declaration_list_opt",
     1157  "old_declaration_list", "local_label_declaration_opt",
     1158  "local_label_declaration_list", "local_label_list", "declaration",
     1159  "new_declaration", "new_variable_declaration", "new_variable_specifier",
    11551160  "new_function_declaration", "new_function_specifier",
    11561161  "new_function_return", "new_typedef_declaration", "typedef_declaration",
     
    12291234     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
    12301235     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    1231      355,   356,   357,   358,   359,   360,   361,   362,   363,    40,
    1232       41,    91,    93,    46,   123,   125,    44,    42,    38,    43,
    1233       45,    33,   126,    47,    37,    60,    62,    94,   124,    63,
    1234       58,    61,    59
     1236     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     1237     365,    40,    41,    91,    93,    46,   123,   125,    44,    42,
     1238      38,    43,    45,    33,   126,    47,    37,    60,    62,    94,
     1239     124,    63,    58,    61,    59
    12351240};
    12361241# endif
     
    12391244static const yytype_uint16 yyr1[] =
    12401245{
    1241        0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
    1242      138,   138,   139,   139,   140,   140,   141,   142,   142,   143,
    1243      143,   143,   143,   144,   144,   144,   144,   144,   144,   144,
    1244      144,   144,   144,   144,   145,   145,   146,   146,   147,   147,
    1245      148,   148,   148,   148,   148,   149,   149,   149,   149,   149,
    1246      149,   149,   149,   149,   149,   149,   149,   149,   149,   149,
    1247      149,   150,   150,   151,   151,   151,   151,   152,   152,   152,
    1248      153,   153,   153,   153,   154,   154,   154,   155,   155,   155,
    1249      156,   156,   156,   156,   156,   157,   157,   157,   158,   158,
    1250      159,   159,   160,   160,   161,   161,   162,   162,   163,   163,
    1251      163,   163,   164,   165,   165,   165,   166,   166,   167,   167,
    1252      167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
    1253      168,   168,   168,   168,   169,   169,   170,   170,   171,   171,
    1254      172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
    1255      174,   174,   175,   175,   176,   176,   176,   176,   177,   177,
    1256      178,   179,   179,   179,   179,   179,   179,   180,   180,   180,
    1257      181,   181,   182,   182,   183,   183,   184,   185,   185,   186,
    1258      186,   187,   187,   188,   188,   188,   188,   189,   189,   190,
    1259      190,   191,   191,   191,   192,   192,   193,   193,   193,   193,
    1260      193,   193,   193,   193,   193,   193,   194,   194,   194,   195,
    1261      195,   195,   195,   195,   196,   196,   196,   196,   197,   198,
    1262      198,   198,   198,   198,   199,   199,   199,   199,   199,   200,
    1263      200,   201,   201,   202,   202,   203,   203,   204,   204,   204,
    1264      205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
    1265      210,   210,   211,   211,   212,   212,   213,   213,   214,   214,
    1266      214,   214,   214,   215,   215,   215,   216,   216,   216,   217,
    1267      217,   217,   217,   217,   218,   218,   218,   219,   219,   220,
    1268      220,   220,   221,   221,   221,   221,   221,   222,   222,   223,
    1269      223,   223,   223,   224,   224,   225,   225,   225,   225,   226,
    1270      226,   226,   226,   227,   227,   228,   228,   229,   229,   230,
    1271      230,   230,   230,   230,   231,   230,   232,   232,   232,   233,
    1272      233,   234,   234,   234,   234,   234,   234,   234,   234,   235,
    1273      235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
    1274      235,   235,   236,   236,   236,   236,   236,   237,   237,   238,
    1275      238,   238,   238,   239,   239,   239,   239,   240,   240,   240,
    1276      240,   241,   241,   241,   242,   242,   242,   242,   243,   243,
    1277      243,   244,   244,   245,   245,   246,   245,   245,   245,   247,
    1278      247,   248,   248,   249,   249,   249,   249,   250,   250,   250,
    1279      250,   251,   251,   252,   252,   252,   252,   252,   253,   253,
    1280      254,   255,   256,   256,   257,   256,   258,   258,   259,   259,
    1281      260,   260,   261,   261,   261,   261,   261,   262,   262,   262,
    1282      262,   263,   263,   264,   264,   265,   265,   266,   266,   266,
    1283      266,   267,   267,   267,   267,   267,   268,   268,   268,   268,
    1284      268,   269,   269,   270,   270,   271,   271,   272,   272,   272,
    1285      273,   273,   273,   274,   274,   274,   275,   275,   275,   276,
    1286      276,   276,   276,   277,   277,   277,   278,   278,   279,   279,
    1287      279,   279,   279,   280,   280,   281,   281,   282,   282,   282,
    1288      282,   282,   283,   283,   283,   283,   284,   284,   284,   285,
    1289      286,   286,   288,   287,   287,   289,   289,   289,   290,   290,
    1290      291,   291,   291,   292,   292,   292,   292,   293,   293,   293,
    1291      294,   294,   295,   295,   296,   297,   296,   298,   298,   299,
    1292      299,   300,   300,   300,   301,   301,   302,   302,   303,   303,
    1293      304,   304,   305,   305,   305,   306,   305,   305,   307,   307,
    1294      307,   308,   308,   308,   308,   308,   308,   308,   308,   308,
    1295      309,   309,   309,   310,   311,   311,   312,   312,   313,   313,
    1296      314,   315,   315,   316,   316,   316,   317,   317,   317,   317,
    1297      318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
    1298      321,   321,   321,   322,   322,   323,   323,   323,   324,   324,
    1299      324,   325,   325,   325,   326,   326,   326,   327,   327,   327,
    1300      328,   328,   328,   329,   329,   329,   330,   330,   330,   331,
    1301      331,   331,   331,   332,   332,   333,   333,   333,   334,   334,
    1302      334,   334,   335,   335,   335,   336,   336,   336,   336,   337,
    1303      337,   337,   338,   338,   338,   338,   339,   339,   339,   340,
    1304      340,   340,   340,   341,   341,   342,   342,   342,   343,   343,
    1305      344,   344,   345,   345,   345,   346,   346,   346,   346,   346,
    1306      347,   347,   347,   347,   348,   348,   348,   349,   349,   349,
    1307      350,   350,   350,   350,   351,   351,   351,   352,   352,   352,
    1308      352,   352,   353,   353,   353,   353,   354,   354,   354,   355,
    1309      355,   355,   356,   356,   356,   356,   356,   356,   357,   357,
    1310      357,   358,   358,   358,   358,   358,   359,   359,   359,   359,
    1311      360,   360,   361,   361,   361,   362,   362,   363,   363,   363,
    1312      363,   363,   363,   364,   364,   364,   364,   364,   364,   364,
    1313      364,   364,   364,   365,   365,   365,   365,   366,   366,   366,
    1314      367,   367,   368,   368,   368,   368,   368,   368,   369,   369,
    1315      369,   369,   369,   369,   370,   371,   371,   371,   372,   372,
    1316      373,   373
     1246       0,   135,   136,   137,   138,   138,   138,   138,   138,   139,
     1247     139,   139,   140,   140,   141,   141,   142,   142,   143,   144,
     1248     144,   145,   145,   145,   145,   145,   146,   146,   146,   146,
     1249     146,   146,   146,   146,   146,   146,   146,   146,   147,   147,
     1250     148,   148,   149,   149,   150,   150,   150,   150,   150,   150,
     1251     150,   151,   151,   151,   152,   152,   153,   153,   153,   153,
     1252     153,   153,   153,   153,   153,   153,   153,   153,   153,   153,
     1253     153,   153,   154,   154,   155,   155,   155,   155,   156,   156,
     1254     157,   157,   157,   157,   158,   158,   158,   159,   159,   159,
     1255     160,   160,   160,   160,   160,   161,   161,   161,   162,   162,
     1256     163,   163,   164,   164,   165,   165,   166,   166,   167,   167,
     1257     167,   168,   169,   169,   170,   170,   171,   171,   171,   171,
     1258     171,   171,   171,   171,   171,   171,   171,   171,   172,   172,
     1259     173,   173,   174,   174,   175,   175,   176,   176,   176,   176,
     1260     176,   176,   176,   176,   176,   177,   178,   178,   179,   179,
     1261     180,   180,   180,   180,   181,   181,   182,   183,   183,   183,
     1262     183,   183,   183,   184,   184,   184,   185,   185,   186,   186,
     1263     187,   187,   188,   189,   189,   190,   190,   191,   191,   192,
     1264     192,   192,   192,   193,   193,   194,   194,   195,   195,   195,
     1265     196,   196,   197,   197,   197,   197,   197,   197,   197,   197,
     1266     197,   197,   198,   198,   198,   199,   199,   199,   199,   199,
     1267     200,   200,   200,   200,   201,   202,   202,   202,   202,   202,
     1268     203,   203,   203,   203,   203,   204,   204,   205,   205,   206,
     1269     206,   207,   207,   208,   208,   208,   209,   209,   210,   210,
     1270     211,   211,   212,   212,   213,   213,   214,   214,   215,   215,
     1271     216,   216,   217,   217,   218,   218,   218,   218,   218,   219,
     1272     219,   219,   220,   220,   220,   221,   221,   221,   221,   221,
     1273     222,   222,   223,   223,   224,   224,   224,   225,   225,   225,
     1274     225,   225,   226,   226,   227,   227,   227,   227,   228,   228,
     1275     229,   229,   229,   229,   230,   230,   230,   230,   231,   231,
     1276     232,   232,   233,   233,   234,   234,   234,   234,   234,   235,
     1277     234,   236,   236,   236,   237,   237,   238,   238,   238,   238,
     1278     238,   238,   238,   238,   239,   239,   239,   239,   239,   239,
     1279     239,   239,   239,   239,   239,   239,   239,   240,   240,   240,
     1280     240,   240,   241,   241,   242,   242,   242,   242,   243,   243,
     1281     243,   243,   244,   244,   244,   244,   245,   245,   245,   246,
     1282     246,   246,   246,   247,   247,   247,   248,   248,   249,   249,
     1283     250,   249,   249,   249,   251,   251,   252,   252,   253,   253,
     1284     253,   253,   254,   254,   254,   254,   255,   255,   256,   256,
     1285     256,   256,   256,   257,   257,   258,   259,   260,   260,   261,
     1286     260,   262,   262,   263,   263,   264,   264,   265,   265,   265,
     1287     265,   265,   266,   266,   266,   266,   267,   267,   268,   268,
     1288     269,   269,   270,   270,   270,   270,   271,   271,   271,   271,
     1289     271,   272,   272,   272,   272,   272,   273,   273,   274,   274,
     1290     275,   275,   276,   276,   276,   277,   277,   277,   278,   278,
     1291     278,   279,   279,   279,   280,   280,   280,   280,   281,   281,
     1292     281,   282,   282,   283,   283,   283,   283,   283,   284,   284,
     1293     285,   285,   286,   286,   286,   286,   286,   287,   287,   287,
     1294     287,   288,   288,   288,   289,   290,   290,   292,   291,   291,
     1295     293,   293,   293,   294,   294,   295,   295,   295,   296,   296,
     1296     296,   296,   297,   297,   297,   298,   298,   299,   299,   300,
     1297     301,   300,   302,   302,   303,   303,   304,   304,   304,   305,
     1298     305,   306,   306,   307,   307,   308,   308,   309,   309,   309,
     1299     310,   309,   309,   311,   311,   311,   312,   312,   312,   312,
     1300     312,   312,   312,   312,   312,   313,   313,   313,   314,   315,
     1301     315,   316,   316,   317,   317,   318,   319,   319,   320,   320,
     1302     320,   321,   321,   321,   321,   322,   322,   322,   322,   323,
     1303     323,   324,   324,   324,   325,   325,   325,   325,   326,   326,
     1304     327,   327,   327,   328,   328,   328,   329,   329,   329,   330,
     1305     330,   330,   331,   331,   331,   332,   332,   332,   333,   333,
     1306     333,   334,   334,   334,   335,   335,   335,   335,   336,   336,
     1307     337,   337,   337,   338,   338,   338,   338,   339,   339,   339,
     1308     340,   340,   340,   340,   341,   341,   341,   342,   342,   342,
     1309     342,   343,   343,   343,   344,   344,   344,   344,   345,   345,
     1310     346,   346,   346,   347,   347,   348,   348,   349,   349,   349,
     1311     350,   350,   350,   350,   350,   351,   351,   351,   351,   352,
     1312     352,   352,   353,   353,   353,   354,   354,   354,   354,   355,
     1313     355,   355,   356,   356,   356,   356,   356,   357,   357,   357,
     1314     357,   358,   358,   358,   359,   359,   359,   360,   360,   360,
     1315     360,   360,   360,   361,   361,   361,   362,   362,   362,   362,
     1316     362,   363,   363,   363,   363,   364,   364,   365,   365,   365,
     1317     366,   366,   367,   367,   367,   367,   367,   367,   368,   368,
     1318     368,   368,   368,   368,   368,   368,   368,   368,   369,   369,
     1319     369,   369,   370,   370,   370,   371,   371,   372,   372,   372,
     1320     372,   372,   372,   373,   373,   373,   373,   373,   373,   374,
     1321     375,   375,   376,   376,   377,   377
    13171322};
    13181323
     
    13211326{
    13221327       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
    1323        1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
    1324        1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
    1325        2,     2,     7,     4,     1,     3,     0,     1,     1,     3,
    1326        1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
    1327        2,     2,     2,     2,     4,     2,     4,     6,     1,     4,
    1328        4,     1,     1,     1,     1,     1,     1,     1,     4,     4,
     1328       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1329       2,     1,     1,     1,     3,     3,     1,     6,     4,     3,
     1330       7,     2,     3,     7,     2,     2,     7,     4,     1,     3,
     1331       0,     1,     1,     3,     1,     2,     6,     3,     7,     3,
     1332       7,     2,     2,     2,     0,     2,     1,     1,     1,     2,
     1333       2,     2,     2,     2,     2,     4,     2,     4,     6,     1,
     1334       4,     4,     1,     1,     1,     1,     1,     1,     1,     4,
    13291335       1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
    13301336       1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
    13311337       1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
    1332        4,     5,     1,     1,     3,     2,     0,     1,     1,     1,
     1338       4,     1,     1,     3,     0,     1,     1,     1,     1,     1,
     1339       1,     1,     1,     1,     1,     1,     1,     1,     6,     7,
     1340       1,     3,     1,     3,     0,     1,     1,     1,     1,     1,
     1341       1,     1,     1,     1,     6,     4,     2,     7,     1,     3,
     1342       1,     2,     1,     2,     1,     2,     2,     5,     7,     5,
     1343       9,     5,     9,     1,     3,     1,     1,     3,     3,     2,
     1344       1,     2,     2,     0,     1,     2,     3,     0,     1,     2,
     1345       3,     3,     4,     0,     1,     1,     2,     5,     7,     6,
     1346       6,     4,     3,     4,     2,     3,     2,     3,     3,     3,
     1347       3,     5,     3,     3,     4,     1,     5,     6,     5,     6,
     1348       9,    10,     9,    10,     2,     1,     2,     2,     2,     1,
     1349       6,     8,    10,    12,    14,     0,     1,     0,     1,     1,
     1350       3,     4,     7,     0,     1,     3,     1,     3,     1,     1,
     1351       1,     3,     1,     1,     1,     3,     0,     1,     3,     4,
     1352       1,     3,     1,     1,     3,     3,     3,     3,     3,     2,
     1353       3,     6,     3,     3,     4,     1,     2,     2,     3,     5,
     1354       7,     7,     5,     9,     2,     2,     5,     3,     5,     4,
     1355       3,     4,     4,     7,     3,     3,     3,     3,     4,     6,
     1356       1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
     1357       1,     2,     1,     1,     1,     1,     1,     1,     1,     0,
     1358       5,     1,     2,     3,     1,     2,     1,     1,     1,     1,
    13331359       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1334        2,     5,     6,     7,     1,     3,     1,     3,     0,     1,
    1335        1,     1,     1,     1,     1,     1,     1,     1,     6,     4,
    1336        2,     7,     1,     3,     1,     2,     1,     2,     1,     2,
    1337        2,     5,     7,     5,     9,     5,     9,     1,     3,     1,
    1338        1,     3,     3,     2,     1,     2,     2,     0,     1,     2,
    1339        3,     0,     1,     2,     3,     3,     4,     0,     1,     1,
    1340        2,     5,     7,     6,     6,     4,     3,     4,     2,     3,
    1341        2,     3,     3,     3,     3,     5,     3,     3,     4,     1,
    1342        5,     6,     5,     6,     9,    10,     9,    10,     2,     1,
    1343        2,     2,     2,     1,     6,     8,    10,    12,    14,     0,
    1344        1,     0,     1,     1,     3,     4,     7,     0,     1,     3,
    1345        1,     3,     1,     1,     1,     3,     1,     1,     1,     3,
    1346        0,     1,     3,     4,     1,     3,     1,     1,     3,     3,
    1347        3,     3,     3,     2,     3,     6,     3,     3,     4,     1,
    1348        2,     2,     3,     5,     8,     7,     7,     5,     9,     2,
    1349        2,     5,     3,     5,     4,     3,     4,     4,     7,     3,
    1350        3,     3,     3,     4,     6,     1,     1,     1,     1,     1,
    1351        1,     1,     1,     0,     1,     1,     2,     1,     1,     1,
    1352        1,     1,     1,     1,     0,     5,     1,     2,     3,     1,
    1353        2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1354        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1355        1,     1,     1,     2,     2,     3,     3,     1,     3,     1,
    1356        2,     2,     2,     4,     4,     4,     4,     1,     2,     2,
    1357        3,     1,     2,     2,     1,     2,     2,     3,     1,     2,
    1358        2,     1,     1,     4,     2,     0,     6,     7,     2,     2,
    1359        2,     0,     2,     2,     3,     2,     3,     1,     2,     3,
    1360        2,     2,     4,     0,     1,     2,     2,     1,     0,     1,
    1361        2,     2,     5,     2,     0,     7,     2,     4,     0,     2,
    1362        0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
    1363        9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
    1364        5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
    1365        1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
    1366        1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
    1367        1,     1,     2,     0,     2,     2,     1,     4,     0,     1,
    1368        2,     3,     4,     2,     2,     1,     2,     2,     5,     5,
    1369        7,     6,     1,     2,     2,     3,     1,     2,     2,     4,
    1370        2,     4,     0,     4,     2,     1,     1,     1,     0,     2,
    1371        5,     5,    13,     1,     1,     3,     3,     2,     3,     3,
    1372        2,     4,     1,     6,     9,     0,    11,     1,     3,     3,
    1373        3,     1,     1,     5,     2,     5,     0,     1,     1,     3,
    1374        0,     1,     1,     1,     1,     0,     6,     2,     1,     2,
    1375        4,     2,     3,     3,     3,     4,     5,     5,     5,     6,
    1376        1,     1,     1,     3,     0,     5,     0,     1,     1,     2,
    1377        6,     1,     3,     0,     1,     4,     1,     1,     1,     1,
    1378        2,     1,     2,     2,     1,     3,     2,     3,     3,     2,
    1379        4,     4,     3,     8,     3,     2,     1,     2,     6,     8,
    1380        3,     2,     3,     3,     4,     4,     3,     1,     1,     1,
    1381        4,     6,     3,     2,     3,     3,     4,     4,     3,     2,
    1382        1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
    1383        4,     3,     6,     8,     3,     2,     1,     2,     2,     2,
    1384        3,     3,     2,     4,     4,     3,     6,     8,     3,     2,
    1385        1,     2,     2,     1,     1,     2,     3,     3,     2,     4,
    1386        6,     8,     1,     2,     2,     1,     2,     2,     3,     3,
    1387        1,     4,     4,     3,     5,     8,     3,     2,     3,     1,
    1388        5,     5,     6,     6,     1,     2,     2,     1,     2,     2,
    1389        3,     3,     1,     4,     4,     3,     5,     8,     3,     1,
    1390        2,     1,     2,     6,     5,     6,     7,     7,     1,     2,
    1391        2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
    1392        8,     3,     1,     1,     2,     1,     1,     2,     3,     2,
    1393        3,     2,     3,     3,     2,     4,     3,     2,     3,     2,
    1394        4,     3,     2,     6,     6,     6,     7,     1,     2,     1,
    1395        1,     1,     2,     3,     2,     3,     2,     3,     3,     4,
    1396        2,     3,     4,     2,     5,     5,     6,     6,     0,     1,
    1397        0,     2
     1360       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
     1361       3,     3,     1,     3,     1,     2,     2,     2,     4,     4,
     1362       4,     4,     1,     2,     2,     3,     1,     2,     2,     1,
     1363       2,     2,     3,     1,     2,     2,     1,     1,     4,     2,
     1364       0,     6,     7,     2,     2,     2,     0,     2,     2,     3,
     1365       2,     3,     1,     2,     3,     2,     2,     4,     0,     1,
     1366       2,     2,     1,     0,     1,     2,     2,     5,     2,     0,
     1367       7,     2,     4,     0,     2,     0,     1,     1,     1,     5,
     1368       5,     5,     1,     5,     5,     9,     1,     5,     0,     1,
     1369       1,     5,     1,     1,     5,     5,     1,     3,     3,     4,
     1370       1,     1,     1,     1,     2,     1,     3,     3,     1,     2,
     1371       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
     1372       1,     1,     1,     2,     1,     1,     1,     2,     0,     2,
     1373       2,     1,     4,     0,     1,     2,     3,     4,     2,     2,
     1374       1,     2,     2,     5,     5,     7,     6,     1,     2,     2,
     1375       3,     1,     2,     2,     4,     2,     4,     0,     4,     2,
     1376       1,     1,     1,     0,     2,     5,     5,    13,     1,     1,
     1377       3,     3,     2,     3,     3,     2,     4,     1,     6,     9,
     1378       0,    11,     1,     3,     3,     3,     1,     1,     5,     2,
     1379       5,     0,     1,     1,     3,     0,     1,     1,     1,     1,
     1380       0,     6,     2,     1,     2,     4,     2,     3,     3,     3,
     1381       4,     5,     5,     5,     6,     1,     1,     1,     3,     0,
     1382       5,     0,     1,     1,     2,     6,     1,     3,     0,     1,
     1383       4,     1,     1,     1,     1,     2,     1,     2,     2,     1,
     1384       3,     2,     3,     3,     2,     4,     4,     3,     8,     3,
     1385       2,     1,     2,     6,     8,     3,     2,     3,     3,     4,
     1386       4,     3,     1,     1,     1,     4,     6,     3,     2,     3,
     1387       3,     4,     4,     3,     2,     1,     2,     2,     1,     3,
     1388       2,     3,     3,     2,     4,     4,     3,     6,     8,     3,
     1389       2,     1,     2,     2,     2,     3,     3,     2,     4,     4,
     1390       3,     6,     8,     3,     2,     1,     2,     2,     1,     1,
     1391       2,     3,     3,     2,     4,     6,     8,     1,     2,     2,
     1392       1,     2,     2,     3,     3,     1,     4,     4,     3,     5,
     1393       8,     3,     2,     3,     1,     5,     5,     6,     6,     1,
     1394       2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
     1395       3,     5,     8,     3,     1,     2,     1,     2,     6,     5,
     1396       6,     7,     7,     1,     2,     2,     1,     2,     2,     3,
     1397       3,     1,     4,     4,     3,     8,     3,     1,     1,     2,
     1398       1,     1,     2,     3,     2,     3,     2,     3,     3,     2,
     1399       4,     3,     2,     3,     2,     4,     3,     2,     6,     6,
     1400       6,     7,     1,     2,     1,     1,     1,     2,     3,     2,
     1401       3,     2,     3,     3,     4,     2,     3,     4,     2,     5,
     1402       6,     6,     0,     1,     0,     2
    13981403};
    13991404
     
    14031408static const yytype_uint16 yydefact[] =
    14041409{
    1405      293,   293,   313,   311,   314,   312,   315,   316,   299,   301,
    1406      300,     0,   302,   327,   319,   324,   322,   323,   321,   320,
    1407      325,   326,   331,   328,   329,   330,   546,   546,   546,     0,
    1408        0,     0,   293,   219,   303,   317,   318,     7,   358,     0,
    1409        8,    14,    15,     0,     2,    61,    62,   564,     9,   293,
    1410      524,   522,   246,     3,   453,     3,   259,     0,     3,     3,
    1411        3,   247,     3,     0,     0,     0,   294,   295,   297,   293,
    1412      306,   309,   339,   285,   332,   337,   286,   347,   287,   354,
    1413      351,   361,     0,     0,   362,   288,   472,   476,     3,     3,
    1414        0,     2,   518,   523,   528,   298,     0,     0,   546,   576,
    1415      546,     2,   587,   588,   589,   293,     0,   730,   731,     0,
    1416       12,     0,    13,   293,   269,   270,     0,   294,   289,   290,
    1417      291,   292,   525,   304,   391,   547,   548,   369,   370,    12,
    1418      444,   445,    11,   440,   443,     0,   502,   497,   488,   444,
    1419      445,     0,     0,   527,   220,     0,   293,     0,     0,     0,
    1420        0,     0,     0,     0,     0,   293,   293,     2,     0,   732,
    1421      294,   581,   593,   736,   729,   727,   734,     0,     0,     0,
    1422      253,     2,     0,   531,   438,   439,   437,     0,     0,     0,
    1423        0,   546,     0,   633,   634,     0,     0,   544,   540,   546,
    1424      561,   546,   546,   542,     2,   541,   546,   600,   546,   546,
    1425      603,     0,     0,     0,   293,   293,   311,   359,     2,   293,
    1426      260,   296,   307,   340,   352,   477,     0,     2,     0,   453,
    1427      261,   294,   333,   348,   355,   473,     0,     2,     0,   310,
    1428      334,   341,   342,     0,   349,   353,   356,   360,   445,   293,
    1429      371,   364,   368,     0,   393,   474,   478,     0,     0,     0,
    1430        1,   293,     2,   529,   575,   577,   293,     2,   740,   294,
    1431      743,   544,   544,     0,   294,     0,     0,   272,   546,   542,
    1432        2,   293,     0,     0,   293,   549,     2,   500,     2,   553,
    1433        0,     0,     0,     0,     0,     0,    19,    58,     4,     5,
    1434        6,    17,     0,     0,   293,     2,    63,    64,    65,    66,
    1435       46,    20,    47,    16,    23,    45,    67,   293,     0,    70,
    1436       74,    77,    80,    85,    88,    90,    92,    94,    96,    98,
    1437      103,   494,   750,   451,   493,     0,   449,   450,     0,   565,
    1438      580,   583,   586,   592,   595,   598,   358,     0,     2,   738,
    1439        0,   293,   741,     2,    61,   293,     3,   425,     0,   433,
    1440      294,   293,   306,   332,   286,   347,   354,     3,     3,   407,
    1441      411,   421,   426,   472,   293,   427,   705,   706,   293,   428,
    1442      430,   293,     2,   582,   594,   728,     2,     2,   248,     2,
    1443      458,     0,   456,   455,   454,   140,     2,     2,   250,     2,
    1444        2,   249,     2,   280,     2,   281,     0,   279,     0,     0,
    1445        0,     0,     0,     0,     0,     0,     0,   566,   605,     0,
    1446      453,     2,   560,   569,   659,   562,   563,   532,   293,     2,
    1447      599,   608,   601,   602,     0,   275,   293,   293,   338,   294,
    1448        0,   294,     0,   293,   733,   737,   735,   533,   293,   544,
    1449      254,   262,   308,     0,     2,   534,   293,   498,   335,   336,
    1450      282,   350,   357,     0,   293,     0,   748,   398,     0,   475,
    1451      499,   251,   252,   519,   293,   435,     0,   293,   236,     0,
    1452        2,   238,     0,   294,     0,   256,     2,   257,   277,     0,
    1453        0,     2,   293,   544,   293,   485,   487,   486,     0,     0,
    1454      750,     0,   293,     0,   293,   489,   293,   559,   557,   558,
    1455      556,     0,   551,   554,     0,     0,   293,    53,   293,    67,
    1456       48,   293,    55,   293,   293,    51,    52,     2,   126,     0,
    1457        0,   447,     0,   446,   727,   120,   293,    18,     0,    30,
    1458       31,    36,     2,     0,    36,   110,   111,   112,   113,   114,
    1459      115,   116,   117,   118,   119,   109,   108,     0,    49,    50,
     1410     298,   298,   318,   316,   319,   317,   320,   321,   304,   306,
     1411     305,     0,   307,   332,   324,   329,   327,   328,   326,   325,
     1412     330,   331,   336,   333,   334,   335,   551,   551,   551,     0,
     1413       0,     0,   298,   225,   308,   322,   323,     9,   363,     0,
     1414      10,    16,    17,     0,     2,    72,    73,   569,    11,   298,
     1415     529,   527,   252,     3,   458,     3,   265,     0,     3,     3,
     1416       3,   253,     3,     0,     0,     0,   299,   300,   302,   298,
     1417     311,   314,   344,   290,   337,   342,   291,   352,   292,   359,
     1418     356,   366,     0,     0,   367,   293,   477,   481,     3,     3,
     1419       0,     2,   523,   528,   533,   303,     0,     0,   551,   581,
     1420     551,     2,   592,   593,   594,   298,     0,   735,   736,     0,
     1421      14,     0,    15,   298,   274,   275,     0,   299,   294,   295,
     1422     296,   297,   530,   309,   396,   552,   553,   374,   375,    14,
     1423     449,   450,    13,   445,   448,     0,   507,   502,   493,   449,
     1424     450,     0,     0,   532,   226,     0,   298,     0,     0,     0,
     1425       0,     0,     0,     0,     0,   298,   298,     0,   737,   299,
     1426     586,   598,   741,   734,   732,   739,     0,     0,     0,   259,
     1427       2,     0,   536,   443,   444,   442,     0,     0,     0,     0,
     1428     551,     0,   638,   639,     0,     0,   549,   545,   551,   566,
     1429     551,   551,   547,     2,   546,   551,   605,   551,   551,   608,
     1430       0,     0,     0,   298,   298,   316,   364,     2,   298,   266,
     1431     301,   312,   345,   357,   482,     0,     2,     0,   458,   267,
     1432     299,   338,   353,   360,   478,     0,     2,     0,   315,   339,
     1433     346,   347,     0,   354,   358,   361,   365,   450,   298,   376,
     1434     369,   373,     0,   398,   479,   483,     0,     0,     0,     1,
     1435     298,     2,   534,   580,   582,   298,     2,   745,   299,   748,
     1436     549,   549,     0,   299,     0,     0,   277,   551,   547,     2,
     1437     298,     0,     0,   298,   554,     2,   505,     2,   558,     0,
     1438       0,     0,     0,     0,     0,    21,    69,     4,     8,    19,
     1439       5,     6,     7,     0,     0,   298,     2,    74,    75,    76,
     1440      77,    57,    22,    58,    18,    26,    56,    78,   298,     0,
     1441      80,    84,    87,    90,    95,    98,   100,   102,   104,   106,
     1442     108,   112,   499,    23,   456,   498,     0,   454,   455,     0,
     1443     570,   585,   588,   591,   597,   600,   603,     2,   743,   298,
     1444     746,     2,    72,   298,     3,   430,     0,   438,   299,   298,
     1445     311,   337,   291,   352,   359,     3,     3,   412,   416,   426,
     1446     431,   477,   298,   432,   710,   711,   298,   433,   435,     2,
     1447     587,   599,   733,     2,     2,   254,     2,   463,     0,   461,
     1448     460,   459,   146,     2,     2,   256,     2,     2,   255,     2,
     1449     285,     2,   286,     0,   284,     0,     0,     0,     0,     0,
     1450       0,     0,     0,     0,   571,   610,     0,   458,     2,   565,
     1451     574,   664,   567,   568,   537,   298,     2,   604,   613,   606,
     1452     607,     0,   280,   298,   298,   343,   299,     0,   299,   298,
     1453     738,   742,   740,   538,   298,   549,   260,   268,   313,     0,
     1454       2,   539,   298,   503,   340,   341,   287,   355,   362,     0,
     1455     298,     0,   752,   403,     0,   480,   504,   257,   258,   524,
     1456     298,   440,     0,   298,   242,     0,     2,   244,     0,   299,
     1457       0,   262,     2,   263,   282,     0,     0,     2,   298,   549,
     1458     298,   490,   492,   491,     0,     0,   754,     0,   298,     0,
     1459     298,   494,   298,   564,   562,   563,   561,     0,   556,   559,
     1460       0,     0,   298,    64,   298,    78,    59,   298,    66,   298,
     1461     298,    62,    63,     2,   132,     0,     0,   452,     0,   451,
     1462     732,   298,    20,    31,     0,    34,    35,    40,     2,     0,
     1463      40,   118,   119,   120,   121,   122,   123,   124,   125,   126,
     1464     127,   117,   116,     0,    60,    61,     0,     0,     0,     0,
    14601465       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1461        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1462      105,     2,   645,   452,   642,   546,   546,   650,   479,   293,
    1463        2,   584,   585,     0,   596,   597,     0,     2,   739,   742,
    1464      120,   293,     0,     2,   707,   294,   711,   702,   703,   709,
    1465        0,     2,     2,   667,   546,   750,   616,   546,   546,   750,
    1466      546,   630,   546,   546,   681,   434,   664,   546,   546,   672,
    1467      679,   293,   429,   294,     0,     0,   293,   717,   294,   722,
    1468      750,   714,   293,   719,   750,   293,   293,   293,     0,   120,
    1469        0,    19,     2,     0,    20,     0,   459,   748,     0,     0,
    1470      465,   240,     0,   293,     0,     0,     0,   544,   568,   572,
    1471      574,   604,   607,   611,   614,   567,   606,     0,   283,   657,
    1472        0,   293,   276,     0,     0,     0,     0,   274,     2,     0,
    1473      258,   535,   293,     0,     0,   293,     2,   363,   383,   372,
    1474        0,     0,   377,   371,   749,     0,     0,   396,     0,   294,
    1475        3,   414,     3,   418,   417,   590,     0,   530,   293,    61,
    1476        3,   293,   433,   294,     3,   427,   428,     2,     0,     0,
    1477        0,   484,   305,   293,   480,   482,     3,     2,     2,     0,
    1478      501,     3,     0,   553,   128,     0,     0,   221,     0,     0,
    1479        0,     0,    37,     0,     0,   120,   293,    21,     0,    22,
    1480        0,   691,   696,   448,   688,   546,   546,     0,   106,     3,
    1481        2,    28,     0,    34,     0,     2,    26,     0,   104,    71,
    1482       72,    73,    75,    76,    78,    79,    83,    84,    81,    82,
    1483       86,    87,    89,    91,    93,    95,    97,     0,     0,   751,
    1484      293,     0,     0,     0,   646,   647,   643,   644,   496,   495,
    1485      293,     0,   293,   713,   293,   718,   294,   293,   661,   293,
    1486      293,   704,   660,     2,   293,     0,     0,     0,     0,     0,
    1487        0,     0,     0,   682,     0,   668,   619,   635,   669,     2,
    1488      615,   622,   431,   617,   618,   432,     2,   629,   638,   631,
    1489      632,   665,   666,   680,   708,   712,   710,   750,   267,     2,
    1490      744,     2,   422,   716,   721,   423,     0,   401,     3,     3,
    1491        3,     3,   453,     3,     0,     2,   467,   464,   749,     0,
    1492      460,     2,   463,   466,     0,   293,   241,   263,     3,   271,
    1493      273,     0,   453,     2,   570,   571,     2,   609,   610,     0,
    1494      658,   536,     3,   344,   343,   346,   345,   293,   537,     0,
    1495      538,   371,     0,     0,   293,   293,     0,     0,   691,   381,
    1496      384,   388,   546,   388,   387,   380,   373,   546,   375,   378,
    1497      293,   398,   392,   102,   399,   748,     0,     0,   436,   239,
    1498        0,     0,     3,     2,   667,   429,     0,   526,     0,   750,
    1499      488,     0,   293,   293,   293,     0,   550,   552,   129,     0,
    1500        0,   214,     0,     0,     0,   222,   223,    54,     0,    56,
    1501       59,    60,     0,     2,   127,     0,     0,     0,   692,   693,
    1502      689,   690,   458,    68,    69,   107,   124,     3,   106,     0,
    1503        0,    25,    36,     3,     0,    33,   100,     0,     3,   649,
    1504      653,   656,   648,     3,   591,     3,   715,   720,     2,    61,
    1505      293,     3,     3,   294,     0,     3,   621,   625,   628,   637,
    1506      671,   675,   678,   293,     3,   620,   636,   670,   293,   293,
    1507      424,   293,   293,   745,     0,     0,     0,     0,   255,     0,
    1508      102,     0,     3,     3,     0,   461,     0,   457,     0,     0,
    1509      244,   293,     0,     0,   128,     0,     0,     0,     0,     0,
    1510      128,     0,     0,   106,   106,    19,     2,     0,     0,     3,
    1511      130,   131,     2,   142,   132,   133,   134,   135,   136,   137,
    1512      144,   146,     0,     0,     0,   284,   293,   293,   546,     0,
    1513      539,   293,   374,   376,     0,   390,   692,   385,   389,   386,
    1514      379,   383,   366,   397,     0,   578,     2,   663,   662,     0,
    1515      668,     2,   481,   483,   503,     3,   511,   512,     0,     2,
    1516      507,     3,     3,     0,     0,   555,   221,     0,     0,     0,
    1517      221,     0,     0,   120,   695,   699,   701,   694,   748,   106,
    1518        0,     3,   660,    40,     3,    38,    35,     0,     3,    99,
    1519      101,     0,     2,   651,   652,     0,     0,   293,     0,     0,
    1520        0,     3,   637,     0,     2,   623,   624,     2,   639,     2,
    1521      673,   674,     0,     0,    61,     0,     3,     3,     3,     3,
    1522      409,   408,   412,     2,     2,   747,   746,   121,     0,     0,
    1523        0,     0,     3,   462,     3,     0,   242,   145,     3,   294,
    1524      293,     0,     0,     0,     0,     2,     0,   190,     0,   188,
    1525        0,     0,     0,     0,     0,     0,     0,   546,   120,     0,
    1526      150,   147,   293,     0,     0,   266,   278,     3,     3,   545,
    1527      612,   367,   382,   395,   293,   265,   293,     0,   514,   491,
    1528      293,     0,     0,   490,   505,     0,     0,     0,   215,     0,
    1529      224,    57,     2,   697,   698,     0,   125,   122,     0,     0,
    1530        0,     0,     0,    24,     0,   654,   293,   579,   264,   723,
    1531      724,   725,     0,   676,   293,   293,   293,     3,     3,     0,
    1532      684,     0,     0,     0,     0,   293,   293,     3,   543,   121,
    1533      469,     0,     0,   245,   294,     0,     0,     0,     0,   293,
    1534      191,   189,   186,     0,   192,     0,     0,     0,     0,   196,
    1535      199,   197,   193,     0,   194,   128,    36,   143,   141,   243,
    1536        0,     0,   416,   420,   419,     0,   508,     2,   509,     2,
    1537      510,   504,   293,   227,     0,   225,     0,   227,   293,    32,
    1538      123,     2,    43,     2,    41,    39,    29,    27,     3,   726,
    1539        3,     3,     3,     0,     0,   683,   685,   626,   640,   268,
    1540        2,   406,     3,   405,     0,   471,   468,   128,     0,     0,
    1541      128,     3,     0,   128,   187,     0,     2,     2,   208,   198,
    1542        0,     0,     0,   139,     0,   573,   613,     2,     0,     0,
    1543        2,   228,     0,     0,   216,     0,     3,     0,     0,     0,
    1544        0,     0,     0,   686,   687,   293,     0,   470,   151,     0,
    1545        0,     2,   164,   128,   153,     0,   181,     0,   128,     0,
    1546        2,   155,     0,     2,     0,     2,     2,     2,   195,    33,
    1547      293,   513,   515,   506,     0,     0,     0,     0,     0,     3,
    1548        3,   655,   627,   641,   677,   410,   128,   157,   160,     0,
    1549      159,   163,     3,   166,   165,     0,   128,   183,   128,     3,
    1550        0,   293,     0,   293,     0,     2,     0,     2,   138,     2,
    1551      229,   230,     0,   226,   217,   700,     0,     0,   152,     0,
    1552        0,   162,   232,   167,     2,   234,   182,     0,   185,   171,
    1553      200,     3,   209,   213,   202,     3,     0,   293,     0,   293,
    1554        0,     0,     0,    44,    42,   158,   161,   128,     0,   168,
    1555      293,   128,   128,     0,   172,     0,     0,   691,   210,   211,
    1556      212,     0,   201,     3,   203,     3,   293,   218,   231,   148,
    1557      169,   154,   128,   235,   184,   179,   177,   173,   156,   128,
    1558        0,   692,     0,     0,     0,     0,   149,   170,   180,   174,
    1559      178,   177,   175,     3,     3,     0,     0,   492,   176,   204,
    1560      206,     3,     3,   205,   207
     1466       0,     0,     0,     0,     0,     2,   650,   457,   647,   551,
     1467     551,   655,   484,   298,     2,   589,   590,     0,   601,   602,
     1468       0,   744,   747,   298,   298,     0,   712,   299,   716,   707,
     1469     708,   714,     0,     2,     2,   672,   551,   754,   621,   551,
     1470     551,   754,   551,   635,   551,   551,   686,   439,   669,   551,
     1471     551,   677,   684,   298,   434,   299,     0,     0,   298,   722,
     1472     299,   727,   754,   719,   298,   724,   754,   298,   298,     0,
     1473       0,    21,     2,     0,    22,     0,   464,   752,     0,     0,
     1474     470,   246,     0,   298,     0,     0,     0,   549,   573,   577,
     1475     579,   609,   612,   616,   619,   572,   611,     0,   288,   662,
     1476       0,   298,   281,     0,     0,     0,     0,   279,     2,     0,
     1477     264,   540,   298,     0,     0,   298,     2,   368,   388,   377,
     1478       0,     0,   382,   376,   753,     0,     0,   401,     0,   299,
     1479       3,   419,     3,   423,   422,   595,     0,   535,   298,    72,
     1480       3,   298,   438,   299,     3,   432,   433,     2,     0,     0,
     1481       0,   489,   310,   298,     0,   485,   487,     3,     2,     2,
     1482       0,   506,     3,     0,   558,   134,     0,     0,   227,     0,
     1483       0,     0,     0,    41,     0,     0,   298,    24,     0,    25,
     1484       0,   696,   701,   453,   693,   551,   551,     0,   114,     3,
     1485       2,    32,     0,    38,     0,     2,    29,     0,   113,    81,
     1486      82,    83,    85,    86,    88,    89,    93,    94,    91,    92,
     1487      96,    97,    99,   101,   103,   105,   107,     0,     0,   298,
     1488       0,     0,     0,   651,   652,   648,   649,   501,   500,   298,
     1489       0,   718,   298,   723,   299,   298,   666,   709,   665,     2,
     1490     298,     0,     0,     0,     0,     0,     0,     0,     0,   687,
     1491       0,   673,   624,   640,   674,     2,   620,   627,   436,   622,
     1492     623,   437,     2,   634,   643,   636,   637,   670,   671,   685,
     1493     713,   717,   715,   754,   272,     2,   749,     2,   427,   721,
     1494     726,   428,     3,   406,     3,     3,     3,   458,     0,     0,
     1495       2,   472,   469,   753,     0,   465,     2,   468,   471,     0,
     1496     298,   247,   269,     3,   276,   278,     0,   458,     2,   575,
     1497     576,     2,   614,   615,     0,   663,   541,     3,   349,   348,
     1498     351,   350,   298,   542,     0,   543,   376,     0,     0,   298,
     1499       0,     0,   696,   386,   389,   393,   551,   393,   392,   385,
     1500     378,   551,   380,   383,   298,   403,   397,   111,   404,   752,
     1501       0,     0,   441,   245,     0,     0,     3,     2,   672,   434,
     1502       0,   531,     0,   754,   755,   493,     0,   298,   298,   298,
     1503       0,   555,   557,   135,     0,     0,   220,     0,     0,     0,
     1504     228,   229,    65,     0,    67,    70,    71,     0,   133,     0,
     1505       0,     0,   697,   698,   694,   695,   463,    79,   115,   130,
     1506       3,   114,     0,    28,    40,     3,     0,    37,   110,     0,
     1507       3,   654,   658,   661,   653,     3,   596,   720,   725,     2,
     1508      72,   298,     3,     3,   299,     0,     3,   626,   630,   633,
     1509     642,   676,   680,   683,   298,     3,   625,   641,   675,   298,
     1510     298,   429,   298,   298,     0,     0,     0,     0,   261,   111,
     1511       0,     3,     3,     0,   466,     0,   462,     0,     0,   250,
     1512     298,     0,     0,   134,     0,     0,     0,     0,     0,   134,
     1513       0,     0,   114,   114,    21,     0,     0,     3,   136,   137,
     1514       2,   148,   138,   139,   140,   141,   142,   143,   150,   152,
     1515       0,     0,     0,   289,   298,   298,   551,     0,   544,   298,
     1516     379,   381,     0,   395,   697,   390,   394,   391,   384,   388,
     1517     371,   402,     0,   583,     2,   668,   667,     0,   673,     2,
     1518     486,   488,   508,     3,   516,   517,     0,     2,   512,     3,
     1519       3,     0,     0,   560,   227,     0,     0,     0,   227,     0,
     1520       0,   700,   704,   706,   699,   752,   114,     0,     3,    54,
     1521       0,    54,    54,     3,    42,    44,    39,     0,     3,   109,
     1522       0,     2,   656,   657,     0,   298,     0,     0,     0,     3,
     1523     642,     0,     2,   628,   629,     2,   644,     2,   678,   679,
     1524       0,     0,    72,     0,     3,     3,     3,     3,   414,   413,
     1525     417,   751,     2,     2,   750,     0,     0,     0,     0,     3,
     1526     467,     3,     0,   248,   151,     3,   299,   298,     0,     0,
     1527       0,     0,     2,     0,   196,     0,   194,     0,     0,     0,
     1528       0,     0,     0,     0,   551,     0,   156,   153,   298,     0,
     1529       0,   271,   283,     3,     3,   550,   617,   372,   387,   400,
     1530     298,   270,   298,     0,   519,   496,   298,     0,     0,   495,
     1531     510,     0,     0,     0,   221,     0,   230,    68,     2,   702,
     1532     703,     0,   131,   128,     0,    51,     2,    45,    52,    53,
     1533       0,     0,     0,     0,    27,     0,   659,   298,   584,   728,
     1534     729,   730,     0,   681,   298,   298,   298,     3,     3,     0,
     1535     689,     0,     0,     0,     0,   298,   298,     3,   548,   473,
     1536     474,     0,   251,   299,     0,     0,     0,     0,   298,   197,
     1537     195,   192,     0,   198,     0,     0,     0,     0,   202,   205,
     1538     203,   199,     0,   200,   134,    40,   149,   147,   249,     0,
     1539       0,   421,   425,   424,     0,   513,     2,   514,     2,   515,
     1540     509,   298,   233,     0,   231,     0,   233,   298,    36,   129,
     1541      55,     0,    43,    33,     2,    49,     2,    47,    30,     3,
     1542     731,     3,     3,     3,     0,     0,   688,   690,   631,   645,
     1543     273,     2,   411,     3,   410,     0,   476,   134,     0,     0,
     1544     134,     3,     0,   134,   193,     0,     2,     2,   214,   204,
     1545       0,     0,     0,   145,     0,   578,   618,     2,     0,     0,
     1546       2,   234,     0,     0,   222,     0,     3,     3,     0,     0,
     1547       0,     0,     0,     0,   691,   692,   298,     0,   475,   157,
     1548       0,     0,     2,   170,   134,   159,     0,   187,     0,   134,
     1549       0,     2,   161,     0,     2,     0,     2,     2,     2,   201,
     1550      37,   298,   518,   520,   511,     0,     0,     0,     0,     0,
     1551       0,     3,     3,   660,   632,   646,   682,   415,   134,   163,
     1552     166,     0,   165,   169,     3,   172,   171,     0,   134,   189,
     1553     134,     3,     0,   298,     0,   298,     0,     2,     0,     2,
     1554     144,     2,   235,   236,     0,   232,   223,   705,    46,     0,
     1555       0,   158,     0,     0,   168,   238,   173,     2,   240,   188,
     1556       0,   191,   177,   206,     3,   215,   219,   208,     3,     0,
     1557     298,     0,   298,     0,     0,     0,    50,    48,   164,   167,
     1558     134,     0,   174,   298,   134,   134,     0,   178,     0,     0,
     1559     696,   216,   217,   218,     0,   207,     3,   209,     3,   298,
     1560     224,   237,   154,   175,   160,   134,   241,   190,   185,   183,
     1561     179,   162,   134,     0,   697,     0,     0,     0,     0,   155,
     1562     176,   186,   180,   184,   183,   181,     3,     3,     0,     0,
     1563     497,   182,   210,   212,     3,     3,   211,   213
    15611564};
    15621565
     
    15641567static const yytype_int16 yydefgoto[] =
    15651568{
    1566       -1,   814,   468,   300,    47,   133,   134,   301,   302,   303,
    1567      304,   305,   762,   763,  1134,  1135,   306,   381,   308,   309,
    1568      310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
    1569      320,  1031,   518,   976,   547,   322,   977,   948,  1058,  1519,
    1570     1060,  1061,  1062,  1063,  1520,  1064,  1065,  1438,  1439,  1402,
    1571     1403,  1404,  1498,  1499,  1503,  1504,  1539,  1540,  1066,  1362,
    1572     1067,  1068,  1299,  1300,  1301,  1481,  1069,   145,   954,   955,
    1573      956,  1382,  1462,  1473,  1474,   469,   470,   875,   876,  1039,
    1574       51,    52,    53,    54,    55,   347,   158,    58,    59,    60,
    1575       61,    62,   349,    64,    65,   264,    67,    68,   274,   351,
    1576      352,    71,    72,    73,   118,    75,   204,   354,   119,    78,
    1577      120,    80,    81,   455,    82,   454,   689,   690,   691,   909,
    1578     1087,   910,    83,    84,   458,   456,   697,   856,   857,   858,
    1579      859,   700,   701,   702,   359,   360,   361,   362,   466,   340,
    1580      135,   136,   522,   324,   170,   646,   647,   648,   649,   650,
    1581       85,   121,    87,   489,   490,   940,   491,   277,   495,   325,
    1582       88,   137,   138,    89,  1322,  1109,  1110,  1111,  1112,    90,
    1583       91,   718,    92,   273,    93,    94,   187,  1033,   680,   412,
    1584      125,    95,   501,   502,   503,   188,   268,   190,   191,   192,
    1585      269,    98,    99,   100,   101,   102,   103,   104,   195,   196,
    1586      197,   198,   199,   826,   606,   607,   608,   609,   200,   611,
    1587      612,   613,   573,   574,   575,   576,   752,   105,   615,   616,
    1588      617,   618,   619,   620,   969,   754,   755,   756,   596,   365,
    1589      366,   367,   368,   326,   164,   107,   108,   109,   370,   695,
    1590      570
     1569      -1,   800,   464,   301,    47,   133,   134,   302,   303,   304,
     1570     305,   306,   752,   753,  1113,  1114,  1115,  1225,   307,   378,
     1571     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     1572     319,   320,   321,  1010,   514,   959,   543,   323,   960,   933,
     1573    1036,  1502,  1038,  1039,  1040,  1041,  1503,  1042,  1043,  1420,
     1574    1421,  1383,  1384,  1385,  1481,  1482,  1486,  1487,  1522,  1523,
     1575    1044,  1342,  1045,  1046,  1278,  1279,  1280,  1464,  1047,   145,
     1576     939,   940,   941,  1362,  1444,  1456,  1457,   465,   466,   860,
     1577     861,  1018,    51,    52,    53,    54,    55,   345,   157,    58,
     1578      59,    60,    61,    62,   347,    64,    65,   263,    67,    68,
     1579     273,   349,   350,    71,    72,    73,   118,    75,   203,   352,
     1580     119,    78,   120,    80,    81,   451,    82,   450,   679,   680,
     1581     681,   893,  1065,   894,    83,    84,   454,   452,   687,   842,
     1582     843,   355,   356,   690,   691,   692,   357,   358,   359,   360,
     1583     462,   176,   135,   136,   518,   325,   169,   636,   637,   638,
     1584     639,   640,    85,   121,    87,   485,   486,   925,   487,   276,
     1585     491,   326,    88,   137,   138,    89,  1301,  1087,  1088,  1089,
     1586    1090,    90,    91,   708,    92,   272,    93,    94,   186,  1012,
     1587     670,   409,   125,    95,   497,   498,   499,   187,   267,   189,
     1588     190,   191,   268,    98,    99,   100,   101,   102,   103,   104,
     1589     194,   195,   196,   197,   198,   812,   598,   599,   600,   601,
     1590     199,   603,   604,   605,   567,   568,   569,   570,   742,   105,
     1591     607,   608,   609,   610,   611,   612,   953,   744,   745,   746,
     1592     588,   363,   364,   365,   366,   327,   163,   107,   108,   109,
     1593     368,   685,   715
    15911594};
    15921595
    15931596/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15941597   STATE-NUM.  */
    1595 #define YYPACT_NINF -1323
     1598#define YYPACT_NINF -1333
    15961599static const yytype_int16 yypact[] =
    15971600{
    1598     7329,  8828, -1323,    37, -1323, -1323, -1323, -1323, -1323, -1323,
    1599    -1323,   109, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1600    -1323, -1323, -1323, -1323, -1323, -1323,    85,    85,    85,   873,
    1601      733,   178,  7561,   370, -1323, -1323, -1323, -1323, -1323,   191,
    1602    -1323, -1323, -1323,   614,   225, -1323, -1323, -1323, -1323,  4615,
    1603    -1323, -1323, -1323, -1323,   229,   285, -1323,   934, -1323, -1323,
    1604    -1323, -1323,   435,  1196,   579,   110,  7677, -1323, -1323,  4858,
    1605     1038, -1323, -1323,   580,   596,  6761,  1021,   875,   580,  1103,
    1606    -1323, -1323,  1317,   308, -1323,   580,  1224, -1323,   495, -1323,
    1607      616,   623, -1323, -1323, -1323, -1323,   547,   285,    85, -1323,
    1608       85, -1323, -1323, -1323, -1323,  9174,   934, -1323, -1323,   934,
    1609    -1323,   551, -1323,  9403, -1323, -1323,  1899,  9436, -1323,   844,
    1610      844,   844, -1323, -1323, -1323,    85, -1323, -1323, -1323,   584,
    1611      608,   632, -1323, -1323, -1323,   646, -1323, -1323, -1323, -1323,
    1612    -1323,   664,   687, -1323, -1323,   -28,  8797,  2908,   117,   701,
    1613      717,   726,   771,   786,   799,  8715,  6849,   731,   757, -1323,
    1614     5600, -1323, -1323, -1323, -1323,   804, -1323,   223,  5225,  5225,
    1615    -1323,   802,   365, -1323, -1323, -1323, -1323,   816,   443,   480,
    1616      534,    85,   827, -1323, -1323,  1196,  4341,   868, -1323,    50,
    1617    -1323,    85,    85,   285, -1323, -1323,    61, -1323,    85,    85,
    1618    -1323,  4647,   857,   864,   844,  6523, -1323, -1323,   869,  4615,
    1619    -1323, -1323,   580, -1323, -1323, -1323,   285, -1323,   934,   229,
    1620    -1323,  7868, -1323,   844,   844,   844,   285, -1323,   873, -1323,
    1621     5676, -1323, -1323,   852,   844, -1323,   844, -1323,   191,  8797,
    1622    -1323,   884, -1323,   733,   890,   844, -1323,   873,   888,   892,
    1623    -1323,  7561,   631, -1323, -1323, -1323,  9256, -1323, -1323,  9621,
    1624    -1323,   868,   151, 10214,  9436,  1899,  4647, -1323,    88, -1323,
    1625    -1323,  9403,   934,   891,  7708, -1323, -1323,   347, -1323, 10561,
    1626      922,   956, 10347,   945, 10366, 10423, -1323,   954, -1323, -1323,
    1627    -1323, -1323, 10442, 10442,  8571,   952, -1323, -1323, -1323, -1323,
    1628    -1323, -1323, -1323,   988, -1323,   966,  1946,  8910, 10366, -1323,
    1629      756,   338,   485,   411,   635,   955,   947,   957,   984,   237,
    1630    -1323, -1323,   962,   647, -1323,   302, -1323, -1323,  2908, -1323,
    1631    -1323,   235,   985, -1323,   312,   985,   989,   191, -1323, -1323,
    1632      990,  9174, -1323,   999,  1006,  9023, -1323, -1323,  1335,  2030,
    1633     8286,  6523,   580, -1323,   580,   844,   844, -1323, -1323, -1323,
    1634    -1323, -1323, -1323,   844,  9174,   934, -1323, -1323,  9474,  1575,
    1635    -1323,  8017, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,
    1636     5958, 10366, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1637    -1323, -1323, -1323, -1323, -1323, -1323,  1899, -1323,   973,   991,
    1638      992,  1012,   978,  1017,  1018,  1020,  4341, -1323, -1323,  1029,
    1639      229,  1031, -1323, -1323,  1033, -1323, -1323, -1323,  9256, -1323,
    1640    -1323, -1323, -1323, -1323,  4647, -1323,  8797,  8797, -1323,   844,
    1641     1899,  6642,   934,  8359, -1323, -1323, -1323, -1323,  9256,   151,
    1642    -1323, -1323,   580,   285, -1323, -1323,  9256, -1323,  5770, -1323,
    1643    -1323,   844,   844,   337,  8204,  1032,  1036,  1023,  1042,   844,
    1644    -1323, -1323, -1323, -1323,  9660, -1323,   367,  6404, -1323,   285,
    1645     1044, -1323,  1899, 10643, 10271, -1323, -1323, -1323, -1323,  1015,
    1646     4647, -1323,  8432,   868,  7445, -1323, -1323, -1323,   843,   436,
    1647      962,   733,  7708,  1341,  9403, -1323,  7708, -1323, -1323, -1323,
    1648    -1323,   508, -1323,  1051,   956,   248,  8571, -1323,  9512, -1323,
    1649    -1323,  8571, -1323,  8684,  8571, -1323, -1323,  1049, -1323,   606,
    1650     1057,   682,  1059, -1323, -1323,  3527,  6492, -1323,   362, -1323,
    1651    -1323, 10214, -1323,   368, 10214, -1323, -1323, -1323, -1323, -1323,
    1652    -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10214, -1323, -1323,
    1653    10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,
    1654    10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,  3593, 10214,
    1655    -1323,   647,  1677, -1323, -1323,    85,    85, -1323, -1323,  8797,
    1656    -1323, -1323,  1033,   631, -1323,  1033, 10290, -1323, -1323, -1323,
    1657     5046,  6492,  1060,  1063, -1323,  9436, -1323, -1323,   804, -1323,
    1658     1067,   750,  1068,  2627,   125,   962, -1323,    85,    85,   962,
    1659      132, -1323,    85,    85,  1033, -1323, -1323,    85,    85, -1323,
    1660      985,  9545,   934, 10788,   532,   656,  9545, -1323,  9621, -1323,
    1661      962, -1323,  9174, -1323,   238,  7983,  7983,  7983,   934, -1323,
    1662     5791,  1047,  1008,   493,  1058,  1061, -1323,  1076,  5225,   528,
    1663    -1323,  1165,   934,  7983,   631,  1899,   631,   868,   430,   985,
    1664    -1323, -1323,   536,   985, -1323, -1323, -1323,   956, -1323,   985,
    1665      285,  9660, -1323,   619,  1086,   633,  1088, -1323,  1087,   285,
    1666    -1323, -1323,  9256,   285,  1089,  9512,  1092, -1323,  1065, -1323,
    1667      538,   552,   733, -1323,   733,  1085, 10366, -1323,   733, 10788,
    1668    -1323, -1323,  1096, -1323, -1323, -1323,   631, -1323, 10716,  1006,
    1669    -1323,  7983,   703,  8286, -1323, -1323,   804,  1095,  1098,   843,
    1670     5016, -1323, -1323,  7708, -1323, -1323,  1091, -1323, -1323,  1102,
    1671    -1323,  1091,  1104, 10561, 10214,  1090,  1093,    94,  1109,  1107,
    1672     1111,  1114, -1323,  1118,  1129,  9365,  6611, -1323, 10214, -1323,
    1673      682,  1717, -1323, -1323, -1323,    85,    85, 10157, 10214,  1125,
    1674    -1323, -1323,   653, -1323, 10214, -1323, -1323,   736, -1323, -1323,
    1675    -1323, -1323,   756,   756,   338,   338,   485,   485,   485,   485,
    1676      411,   411,   635,   955,   947,   957,   984, 10366,   260, -1323,
    1677     9660,  1132,  1136,  1137,  1677, -1323, -1323, -1323, -1323, -1323,
    1678     9660,   708,  7983, -1323,  9174, -1323,  6968,  9136, -1323,  8017,
    1679     6849, -1323, -1323,   750,  9660,  1022,  1140,  1141,  1142,  1143,
    1680     1146,  1149,  1154, -1323,  3715,  2627, -1323, -1323, -1323, -1323,
    1681    -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1682    -1323, -1323, -1323,  1033, -1323, -1323, -1323,   962, -1323, -1323,
    1683    -1323, -1323, -1323, -1323, -1323, -1323,  1155, -1323,  1157,  1159,
    1684    -1323, -1323,   229,  1125,  5791, -1323, -1323, -1323,  5958,  1158,
    1685    -1323, -1323, -1323, -1323,   733,  6174,  1248, -1323, -1323, -1323,
    1686    -1323,  1151,   229, -1323, -1323,  1033, -1323, -1323,  1033,    84,
    1687     1033, -1323, -1323, -1323, -1323, -1323, -1323,  9327, -1323,   285,
    1688    -1323, -1323,   559,   562,  9474,  7087,  2137, 10366,  3114, -1323,
    1689    -1323,  1156,    51,  1156, -1323,   733, -1323,    85, -1323, -1323,
    1690     8941,  1023, -1323, -1323, -1323,  1036,  1175,  1171, -1323, -1323,
    1691     1178,  1181, -1323,   703,  1901, -1323,   672, -1323,  5016,   962,
    1692    -1323,  1184,  7708,  9583,  8797,  1185, -1323, -1323,  1180,  1187,
    1693     1170, -1323, 10366,  1197,   326,  1194, -1323,  1202,   631,  1202,
    1694    -1323, -1323,  1202,  1199, -1323,  1208,  1210,  1211,  1717, -1323,
    1695    -1323, -1323,  5958, -1323, -1323, -1323, -1323,  1209, 10214,  1212,
    1696      631, -1323, 10214, -1323,   631, -1323, -1323, 10214, -1323,   558,
    1697      985, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,  1006,
    1698     9023, -1323, -1323,  7206,  1218, -1323,   674,   985, -1323,   813,
    1699      861,   985, -1323,   844,  4029, -1323, -1323, -1323,  9660,  9660,
    1700    -1323,  8359,  8359, -1323,  1215,  1216,  1225,  1230, -1323,  1232,
    1701      685,    82,  1125, -1323,   631, -1323,  5225, -1323, 10214,   564,
    1702    -1323,  6373,  1236,  1240, 10100,  1242,  1243,    70,    79,    96,
    1703    10214,  1244,   285, 10214, 10214,  1227,  1249,   522,  1222, -1323,
    1704    -1323, -1323,  1250, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1705    -1323, -1323,   733,  1254, 10214, -1323,  9660,  9660,    85,  1257,
    1706    -1323,  9054, -1323, -1323,   752, -1323,  3114, -1323, -1323, -1323,
    1707    -1323,  1065, -1323, -1323,  1255, -1323, -1323, -1323, -1323,  1258,
    1708     1901, -1323, -1323,  1245, -1323,  1091, -1323, -1323,  1899,  1260,
    1709    -1323, -1323, -1323,   713,  1264, -1323,    94,  1269, 10366,  1252,
    1710       94,    94,  1262,  3527,   879,   985, -1323, -1323,  1076, 10214,
    1711     1273,  1209,   358,   204,  1270, -1323, -1323,  1275,  1270, -1323,
    1712    -1323,  1278, -1323, -1323,  1033,  1280,  1284,  6730,  1285,  1290,
    1713     1291, -1323, -1323,  1286, -1323, -1323,  1033, -1323, -1323, -1323,
    1714    -1323,  1033, 10214, 10214,  1006,  1294, -1323, -1323, -1323, -1323,
    1715    -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10366, 10366,
    1716     1300,  1302,  1270, -1323, -1323,   733, -1323, -1323, -1323,  5213,
    1717     9583, 10214, 10214,  1374, 10214, -1323,  1295, -1323,  1296, -1323,
    1718     1297, 10214,  1301, 10214,  1105,  1304,    12,    85,  9289,  1625,
    1719    -1323, -1323,  6174,  1322,   573, -1323, -1323, -1323, -1323, -1323,
    1720    -1323, -1323, -1323, -1323,  9920, -1323,  8432,  1330, -1323, -1323,
    1721     9583,   576,   602, -1323,  1331,  1315,   956,  1337, -1323,   329,
    1722    -1323, -1323, -1323, -1323,  1033,  1339, -1323, -1323,  1320,   486,
    1723      509,   631,  1340, -1323,  1344, -1323,  9660, -1323, -1323, -1323,
    1724    -1323, -1323,  1347, -1323,  9660,  9660,  9660, -1323, -1323,  1348,
    1725    -1323,  1351,  1354,  1355,   716,  8056,  8171, -1323, -1323,   529,
    1726    -1323,  1357,  1362, -1323,  8505,   721,   730,  1358,   761,  3837,
    1727    -1323, -1323, -1323,   605, -1323,   766,  1366,  1367,   285,  1419,
    1728      834, -1323, -1323, 10214, -1323, 10100, 10214, -1323, -1323, -1323,
    1729     1370,  1375, -1323, -1323, -1323,  1372, -1323, -1323, -1323, -1323,
    1730    -1323, -1323,  9583,   956,  1379, -1323,  1352,   956,  9660, -1323,
    1731    -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1732    -1323, -1323, -1323,  1378,  1382, -1323, -1323, -1323, -1323, -1323,
    1733    -1323, -1323,  1387, -1323,  1386, -1323, -1323, 10100,   289, 10214,
    1734    10100, -1323,  1389, 10214, -1323,   318,  1405,  1406, -1323, -1323,
    1735     1399,  1400,  1380, -1323,   821, -1323, -1323, -1323,   934,  1899,
    1736     1396, -1323,   402, 10366, -1323,   785, -1323,   631,   631,  1407,
    1737     1408,  1413,  1415, -1323, -1323,  8359,  1414, -1323,  1490, 10366,
    1738     1385, -1323, -1323, 10012, -1323,   800, -1323,  1402, 10100,  1403,
    1739    -1323, -1323,  1426, -1323,  1427, -1323,  1445,  1446, -1323,  1411,
    1740     9583, -1323, -1323, -1323,   956,   631,  1434,  1417,  1435,  1270,
    1741     1270, -1323, -1323, -1323, -1323, -1323, 10100,   107, -1323,   433,
    1742    -1323, -1323,  7793, -1323, -1323,  1418, 10214, -1323, 10214,  7793,
    1743      285,  9512,   285,  9512,  1436, -1323,  1442, -1323, -1323,  1440,
    1744    -1323, -1323,   825, -1323, -1323, -1323,  1444,  1449, -1323, 10366,
    1745    10366, -1323, -1323,   909,   211, -1323, -1323,  1425, -1323,   909,
    1746    -1323, -1323,  2166,   631, -1323, -1323,   285,  9512,   285,  9512,
    1747     1453,  1431,   631, -1323, -1323, -1323, -1323, 10012,  1443,   909,
    1748     6091, 10214,  9924,  1452,   909,  1454,  2166,  3344, -1323, -1323,
    1749    -1323,  1458, -1323, -1323, -1323, -1323,  8797, -1323, -1323, -1323,
    1750     9791, -1323, 10012, -1323, -1323,  1438,  9703, -1323, -1323,  9924,
    1751      285,  3344,   285,  1464,  1466,   853, -1323,  9791, -1323, -1323,
    1752    -1323,  9703, -1323, -1323, -1323,   285,   285, -1323, -1323, -1323,
    1753    -1323, -1323, -1323, -1323, -1323
     1601    6694,  7975, -1333,   -14, -1333, -1333, -1333, -1333, -1333, -1333,
     1602   -1333,    26, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1603   -1333, -1333, -1333, -1333, -1333, -1333,   109,   109,   109,   759,
     1604     860,    66,  6930,   241, -1333, -1333, -1333, -1333, -1333,   199,
     1605   -1333, -1333, -1333,  1264,   207, -1333, -1333, -1333, -1333,  8320,
     1606   -1333, -1333, -1333, -1333,     3,   216, -1333,  1096, -1333, -1333,
     1607   -1333, -1333,   265,  1996,   389,    54,  5394, -1333, -1333,  8320,
     1608     780, -1333, -1333,   554,   416,  3688,   749,   995,   554,  1130,
     1609   -1333, -1333,   768,   826, -1333,   554,  1144, -1333,   313, -1333,
     1610     443,   462, -1333, -1333, -1333, -1333,   358,   216,   109, -1333,
     1611     109, -1333, -1333, -1333, -1333,  8461,  1096, -1333, -1333,  1096,
     1612   -1333,   414, -1333,  8545, -1333, -1333,  2376,  8575, -1333,  1138,
     1613    1138,  1138, -1333, -1333, -1333,   109, -1333, -1333, -1333,   370,
     1614     444,   488, -1333, -1333, -1333,   518, -1333, -1333, -1333, -1333,
     1615   -1333,   525,   576, -1333, -1333,    50,  8059,  1902,   238,   538,
     1616     578,   604,   613,   618,   635,  8659,  6327,   649, -1333,  8431,
     1617   -1333, -1333, -1333, -1333,   661, -1333,   -10,  9338,  9338, -1333,
     1618     662,   181, -1333, -1333, -1333, -1333,   680,   348,   393,   400,
     1619     109,   685, -1333, -1333,  1996,  2098,   801, -1333,    51, -1333,
     1620     109,   109,   216, -1333, -1333,   180, -1333,   109,   109, -1333,
     1621    2242,   712,   751,  1138,  6116, -1333, -1333, -1333,  8320, -1333,
     1622   -1333,   554, -1333, -1333, -1333,   216, -1333,  1096,     3, -1333,
     1623    7196, -1333,  1138,  1138,  1138,   216, -1333,   759, -1333,  4572,
     1624   -1333, -1333,   739,  1138, -1333,  1138, -1333,   199,  8059, -1333,
     1625     775, -1333,   860,   777,  1138, -1333,   759,   771,   804, -1333,
     1626    6930,   594, -1333, -1333, -1333,  4461, -1333, -1333,  5315, -1333,
     1627     801,   101,  9515,  8575,  2376,  2242, -1333,   187, -1333, -1333,
     1628    8545,  1096,   786, 10191, -1333, -1333,   434, -1333,  9931,   803,
     1629     866,  9574,   842,  9515,  9633, -1333,   845, -1333, -1333, -1333,
     1630   -1333, -1333, -1333,  9692,  9692,  7829,   207, -1333, -1333, -1333,
     1631   -1333, -1333, -1333, -1333,   885, -1333,  1691,  2462,  8059,  9515,
     1632   -1333,   558,   367,   614,   669,   742,   852,   846,   858,   883,
     1633     -13, -1333, -1333, -1333,   737, -1333,   269, -1333, -1333,  1902,
     1634   -1333, -1333,   465,   880, -1333,   586,   880, -1333, -1333,  8461,
     1635   -1333,   890,   897,  8174, -1333, -1333,  1514,  1088,  7619,  6116,
     1636     554, -1333,   554,  1138,  1138, -1333, -1333, -1333, -1333, -1333,
     1637   -1333,  1138,  8461,  1096, -1333, -1333,  8659,  1872, -1333, -1333,
     1638   -1333, -1333, -1333, -1333, -1333, -1333, -1333,  9279,  9515, -1333,
     1639   -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1640   -1333, -1333, -1333,  2376, -1333,   105,   903,   926,   928,   796,
     1641     931,   941,   943,  2098, -1333, -1333,   952,     3,   954, -1333,
     1642   -1333,   961, -1333, -1333, -1333,  4461, -1333, -1333, -1333, -1333,
     1643   -1333,  2242, -1333,  8059,  8059, -1333,  1138,  2376,  6237,  7691,
     1644   -1333, -1333, -1333, -1333,  4461,   101, -1333, -1333,   554,   216,
     1645   -1333, -1333,  4461, -1333,  5995, -1333, -1333,  1138,  1138,   394,
     1646    7535,   966,   959,   955,   974,  1138, -1333, -1333, -1333, -1333,
     1647    5606, -1333,   424,  5852, -1333,   216,   977, -1333,  2376, 10015,
     1648    9751, -1333, -1333, -1333, -1333,   884,  2242, -1333,  7691,   801,
     1649    6812, -1333, -1333, -1333,  1296,   456,   986,   860, 10191,  1468,
     1650    8545, -1333, 10191, -1333, -1333, -1333, -1333,   473, -1333,   988,
     1651     866,   242,  7829, -1333,  8689, -1333, -1333,  7829, -1333,  7944,
     1652    7829, -1333, -1333,   207, -1333,   485,  1009,   881,  1014, -1333,
     1653   -1333,  6085, -1333, -1333,   360, -1333, -1333,  9515, -1333,   362,
     1654    9515, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1655   -1333, -1333, -1333,  9515, -1333, -1333,  9515,  9515,  9515,  9515,
     1656    9515,  9515,  9515,  9515,  9515,  9515,  9515,  9515,  9515,  9515,
     1657    9515,  9515,  9515,  9515,  3091,   737,  1207, -1333, -1333,   109,
     1658     109, -1333, -1333,  8059, -1333, -1333,   961,   594, -1333,   961,
     1659    9810, -1333, -1333,  8659,  6085,   993, -1333,  8575, -1333, -1333,
     1660     661, -1333,  1039,   587,  1045,  2359,   209,   986, -1333,   109,
     1661     109,   986,   212, -1333,   109,   109,   961, -1333, -1333,   109,
     1662     109, -1333,   880,  8773,  1096, 10160,   415,   496,  8773, -1333,
     1663    5315, -1333,   986, -1333,  8461, -1333,   126,  7313,  7313,  1096,
     1664    9397,  1029, -1333,  1354,  1033,  1043, -1333,  1060,  9338,   407,
     1665   -1333,  1151,  1096,  7313,   594,  2376,   594,   801,   631,   880,
     1666   -1333, -1333,   692,   880, -1333, -1333, -1333,   866, -1333,   880,
     1667     216,  5606, -1333,   494,  1073,   520,  1074, -1333,   890,   216,
     1668   -1333, -1333,  4461,   216,  1071,  8689,   207, -1333,   972, -1333,
     1669     401,   438,   860, -1333,   860,  1075,  9515, -1333,   860, 10160,
     1670   -1333, -1333,  1079, -1333, -1333, -1333,   594, -1333, 10088,   897,
     1671   -1333,  7313,   960,  7619, -1333, -1333,   661,  1076,  1081,  1296,
     1672    2130, -1333, -1333, 10191,  9515, -1333, -1333,  1085, -1333, -1333,
     1673    1093, -1333,  1085,  1098,  9931,  9515,  1097,  1094,    38,  1119,
     1674    1115,  1124,  1125, -1333,  1126,  1127,  6085, -1333,  9515, -1333,
     1675     881,  1631, -1333, -1333, -1333,   109,   109,  9456,  9515,  1132,
     1676   -1333, -1333,   577, -1333,  9515, -1333, -1333,   843, -1333, -1333,
     1677   -1333, -1333,   558,   558,   367,   367,   614,   614,   614,   614,
     1678     669,   669,   742,   852,   846,   858,   883,  9515,   296,  5606,
     1679    1131,  1133,  1136,  1207, -1333, -1333, -1333, -1333, -1333,  5606,
     1680     616, -1333,  8461, -1333,  6448,  8289, -1333, -1333, -1333,   587,
     1681    5606,   990,  1140,  1141,  1142,  1145,  1146,  1147,  1149, -1333,
     1682    2845,  2359, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1683   -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   961,
     1684   -1333, -1333, -1333,   986, -1333, -1333, -1333, -1333, -1333, -1333,
     1685   -1333, -1333, -1333, -1333,  1150,  1152, -1333,     3,  1132,  9397,
     1686   -1333, -1333, -1333,  9279,  1154, -1333, -1333, -1333, -1333,   860,
     1687    5689,  1243, -1333, -1333, -1333, -1333,  1143,     3, -1333, -1333,
     1688     961, -1333, -1333,   961,    14,   961, -1333, -1333, -1333, -1333,
     1689   -1333, -1333,  6327, -1333,   216, -1333, -1333,   452,   487,  6327,
     1690    1790,  9515,  2983, -1333, -1333,  1153,    20,  1153, -1333,   860,
     1691   -1333,   109, -1333, -1333,  8090,   955, -1333, -1333, -1333,   959,
     1692    1161,  1157, -1333, -1333,  1163,  1164, -1333,   960,  1700, -1333,
     1693     539, -1333,  2130,   986, -1333, -1333,  1167, 10191,  8545,  8059,
     1694    1169, -1333, -1333,  1165,  1170,  1171, -1333,  9515,  1173,   310,
     1695    1177, -1333,  1180,   594,  1180, -1333, -1333,  1180, -1333,  1195,
     1696    1197,  1201,  1631, -1333, -1333, -1333,  9279, -1333, -1333, -1333,
     1697    1196,  9515,   730, -1333,  9515, -1333,   730, -1333, -1333,  9515,
     1698   -1333,   748,   880, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1699     897,  8174, -1333, -1333,  6569,  1203, -1333,   758,   880, -1333,
     1700     763,   830,   880, -1333,  1138,  4995, -1333, -1333, -1333,  5606,
     1701    5606, -1333,  7691,  7691,  1205,  1210,  1223,  1209, -1333,   551,
     1702     162,  1132, -1333,   730, -1333,  9338, -1333,  9515,   513, -1333,
     1703    5964,  1214,  1227,  9220,  1234,  1235,    42,   160,   163,  9515,
     1704    1237,   216,  9515,  9515,  1226,   304,  1229, -1333, -1333, -1333,
     1705    1244, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1706     860,  1248,  9515, -1333,  5606,  5606,   109,  1254, -1333,  8205,
     1707   -1333, -1333,   773, -1333,  2983, -1333, -1333, -1333, -1333,   972,
     1708   -1333, -1333,  1250, -1333, -1333, -1333, -1333,  1257,  1700, -1333,
     1709   -1333,  1241, -1333,  1085, -1333, -1333,  2376,  1256, -1333, -1333,
     1710   -1333,   617,  1258, -1333,    38,  1266,  9515,  1245,    38,    38,
     1711    1274,   878,   880, -1333, -1333,  1060,  9515,  1276,  1196, -1333,
     1712     841, -1333, -1333,  1270, -1333,   215, -1333,  1279,  1270, -1333,
     1713    1282, -1333, -1333,   961,  1283,  6206,  1284,  1285,  1286, -1333,
     1714   -1333,  1290, -1333, -1333,   961, -1333, -1333, -1333, -1333,   961,
     1715    9515,  9515,   897,  1291, -1333, -1333, -1333, -1333, -1333, -1333,
     1716   -1333, -1333, -1333, -1333, -1333,  9515,  9515,  1295,  1297,  1270,
     1717   -1333, -1333,   860, -1333, -1333, -1333,  7124,  8545,  9515,  9515,
     1718    1350,  9515, -1333,  1278, -1333,  1280, -1333,  1288,  9515,  1293,
     1719    9515,  1056,  1298,    72,   109,  2402, -1333, -1333,  5689,  1287,
     1720     521, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1721    9036, -1333,  7691,  1305, -1333, -1333,  8545,   522,   524, -1333,
     1722    1308,  1302,   866,  1318, -1333,   325, -1333, -1333, -1333, -1333,
     1723     961,  1324, -1333, -1333,  1328,  1363, -1333, -1333,  1363,  1363,
     1724     730,  1333,  1026,  1220, -1333,  1339, -1333,  5606, -1333, -1333,
     1725   -1333, -1333,  1340, -1333,  5606,  5606,  5606, -1333, -1333,  1341,
     1726   -1333,  1342,  1345,  1347,   600,  7385,  7502, -1333, -1333, -1333,
     1727   -1333,  1352, -1333,  7763,   633,   634,  1353,   658,  5821, -1333,
     1728   -1333, -1333,   528, -1333,   659,  1362,  1364,   216,  1401,   965,
     1729   -1333, -1333,  9515, -1333,  9220,  9515, -1333, -1333, -1333,  1365,
     1730    1367, -1333, -1333, -1333,  1358, -1333, -1333, -1333, -1333, -1333,
     1731   -1333,  8545,   866,  1373, -1333,  1368,   866,  5606, -1333, -1333,
     1732   -1333,   730, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1733   -1333, -1333, -1333, -1333,  1384,  1391, -1333, -1333, -1333, -1333,
     1734   -1333, -1333, -1333,  1404, -1333,  1408, -1333,  9220,   198,  9515,
     1735    9220, -1333,  1406,  9515, -1333,   323,  1378,  1427, -1333, -1333,
     1736    1416,  1417,  1395, -1333,   910, -1333, -1333, -1333,  1096,  2376,
     1737    1413, -1333,   326,  9515, -1333,   663, -1333,  1270,   730,   730,
     1738    1420,  1424,  1425,  1434, -1333, -1333,  7691,  1429, -1333,  1489,
     1739    9515,  1426, -1333, -1333,  9130, -1333,   689, -1333,  1414,  9220,
     1740    1418, -1333, -1333,  1445, -1333,  1449, -1333,  1467,  1469, -1333,
     1741    1435,  8545, -1333, -1333, -1333,   866,   594,  1456,  1436,  1460,
     1742    1466,  1270,  1270, -1333, -1333, -1333, -1333, -1333,  9220,   194,
     1743   -1333,   376, -1333, -1333,  7048, -1333, -1333,  1447,  9515, -1333,
     1744    9515,  7048,   216,  8689,   216,  8689,  1470, -1333,  1471, -1333,
     1745   -1333,  1477, -1333, -1333,   720, -1333, -1333, -1333, -1333,  1473,
     1746    1481, -1333,  9515,  9515, -1333, -1333,   991,    94, -1333, -1333,
     1747    1462, -1333,   991, -1333, -1333,  2158,   594, -1333, -1333,   216,
     1748    8689,   216,  8689,  1487,  1463,   594, -1333, -1333, -1333, -1333,
     1749    9130,  1484,   991,  5522,  9515,  9040,  1485,   991,  1493,  2158,
     1750    3005, -1333, -1333, -1333,  1494, -1333, -1333, -1333, -1333,  8059,
     1751   -1333, -1333, -1333,  8905, -1333,  9130, -1333, -1333,  1474,  8815,
     1752   -1333, -1333,  9040,   216,  3005,   216,  1498,  1500,   729, -1333,
     1753    8905, -1333, -1333, -1333,  8815, -1333, -1333, -1333,   216,   216,
     1754   -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333
    17541755};
    17551756
     
    17571758static const yytype_int16 yypgoto[] =
    17581759{
    1759    -1323,  4572,  3263, -1323,   197, -1323,   601,   950,  -251,   910,
    1760    -1323,   521,  -520,  -467,  -853,   -64,  3183,     0, -1323,  -150,
    1761      423,   446,   477,   450,  1016,  1025,  1019,  1026,  1028, -1323,
    1762     -622,  -408,  5012,  -745, -1323,  -735,   604,   472,  -656,   413,
    1763    -1323,  1279, -1323,   374, -1058, -1323, -1323,   126, -1323,  -823,
    1764    -1106,   222, -1323, -1323, -1323, -1323,    58, -1209, -1323, -1323,
    1765    -1323, -1323, -1323, -1323,   301, -1149,    35, -1323,  -933, -1323,
    1766      482,   274, -1323,   159, -1323,  -303, -1323, -1323, -1323,   535,
    1767     -827, -1323, -1323,    15, -1007,    71,    28, -1323, -1323, -1323,
    1768      -21, -1323,   357,  1253,  -198,  1636,  4113, -1323, -1323,    80,
    1769       54,   422,  1473, -1323,  1886, -1323, -1323,   192,  2183, -1323,
    1770     2495,   898, -1323, -1323, -1323,  -638, -1323,   924,   925,   524,
    1771      699,    83, -1323, -1323, -1323,   915,   695,  -339, -1323,  -106,
    1772       34,  1281, -1323, -1323,  -847,  -986,  1046,  1127,  1039,     5,
    1773    -1323,  1536,   481,  -165,  -210,  -124,   651,   758, -1323,   979,
    1774    -1323,  2789,  1548,  -413,   904, -1323, -1323,   689, -1323,  -235,
    1775    -1323,   158, -1323, -1323, -1323, -1257,   401, -1323, -1323, -1323,
    1776     1148, -1323,    21, -1323, -1323,  -858,  -105, -1322,  -129,  2267,
    1777    -1323,  2391, -1323,   906, -1323,  -184,    59,  -180,  -173,  -170,
    1778        7,   -40,   -35,   -33,    60,    -6,    25,    93,  -168,  -164,
    1779     -158,  -147,  -144,  -292,  -471,  -462,  -452,  -551,  -302,  -537,
    1780    -1323, -1323,  -511,  1069,  1072,  1074,  2608,  4844,  -578,  -514,
    1781     -502,  -495,  -500, -1323,  -508,  -724,  -717,  -708,  -590,  -305,
    1782     -195, -1323, -1323,   246,    19,    36, -1323,  3865,   104,  -623,
    1783     -397
     1760   -1333,  3826,  2645, -1333,   849, -1333,   762,   867,  -112,   956,
     1761   -1333,   580,  -517,  -490,  -904,  -999, -1333,   -62,  4003,     0,
     1762   -1333,   676,   547,   572,   581,   571,  1057,  1058,  1059,  1055,
     1763    1061, -1333,   963,  -485,  4467,  -910, -1333, -1333,   665,   184,
     1764    -691,   319, -1333,   356, -1333,   440, -1283, -1333, -1333,   176,
     1765   -1333, -1072, -1062,   285, -1333, -1333, -1333, -1333,   107, -1332,
     1766   -1333, -1333, -1333, -1333, -1333, -1333,   359, -1109,    16, -1333,
     1767    -288, -1333,   535,   330, -1333,   208, -1333,  -237, -1333, -1333,
     1768   -1333,   596,  -693, -1333, -1333,     9,  -933,   372,  2238, -1333,
     1769   -1333, -1333,   -57, -1333,   110,    36,  -194,  1419,  3198, -1333,
     1770   -1333,    12,    61,  1486,  1572, -1333,  1265, -1333, -1333,    21,
     1771    1950, -1333,  2034,  1735, -1333, -1333, -1333,  -611, -1333,   975,
     1772     976,   584,   761,   136, -1333, -1333, -1333,   967,   755,  -456,
     1773   -1333,  -528,  -433,   832, -1333, -1333,  -922,  -915,  -420,  1560,
     1774    1084,    19, -1333,   388,   467,  -359,  -203,  -145,   706,   811,
     1775   -1333,  1028, -1333,  2348,   798,  -442,   958, -1333, -1333,   740,
     1776   -1333,  -233, -1333,   118, -1333, -1333, -1333, -1243,   466, -1333,
     1777   -1333, -1333,  1188, -1333,    -1, -1333, -1333,  -832,  -108, -1152,
     1778    -131,  3669, -1333,  4255, -1333,   951, -1333,  -125,   120,  -178,
     1779    -173,  -170,     7,   -41,   -40,   -39,   619,    -5,    25,    46,
     1780      -4,  -167,  -166,  -158,  -157,  -296,  -519,  -516,  -510,  -538,
     1781    -311,  -552, -1333, -1333,  -514,  1111,  1112,  1114,  1610,  4174,
     1782    -565,  -560,  -546,  -522,  -389, -1333,  -475,  -720,  -716,  -715,
     1783    -584,  -222,  -287, -1333, -1333,    47,   102,   -51, -1333,  3453,
     1784     108,  -602,  -196
    17841785};
    17851786
     
    17871788   positive, shift that token.  If negative, reduce the rule which
    17881789   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1789 #define YYTABLE_NINF -522
     1790#define YYTABLE_NINF -527
    17901791static const yytype_int16 yytable[] =
    17911792{
    1792       49,   113,   407,   149,   453,   399,   428,    97,   150,   440,
    1793      151,   267,   400,   753,   767,   401,   114,  1071,   408,   106,
    1794      106,   402,   974,   280,   869,   828,   965,   403,    57,    57,
    1795      505,   845,    49,   966,  1188,    50,  1172,   152,   404,    97,
    1796      597,   405,   967,   147,   383,   384,   741,   610,  1070,    49,
    1797      357,   106,   827,   143,    70,   920,   161,   605,   410,    96,
    1798       57,   795,   177,   186,   819,  1380,   209,    50,   153,    49,
    1799      193,    56,   115,   216,   923,  1303,   226,  1440,   949,   726,
    1800       69,   281,   407,   731,   219,   399,    70,   820,   106,    31,
    1801       31,    96,   400,   724,    57,   401,   425,    57,   408,   821,
    1802       31,   402,   148,    56,   831,   113,   822,   403,    96,   162,
    1803      838,   261,    69,   113,   262,   670,   266,   271,   404,   122,
    1804      212,   405,   189,   194,    31,    96,   217,    31,    96,   227,
    1805      816,  1138,   475,   477,   510,   679,   154,   210,   202,   817,
    1806      220,   260,  1196,   683,  1304,   149,   307,   147,  1440,   818,
    1807      150,  1198,   151,   166,   161,   113,   345,   548,   549,   252,
    1808      209,   411,   411,  1459,    31,   986,   527,   373,  1200,   629,
    1809      419,    31,   411,   633,  1170,  1171,   291,   715,  1178,   152,
    1810      914,  1182,   965,  1235,   348,   186,   186,  1239,   203,   966,
    1811      358,   342,    76,   161,  1078,   548,   721,   481,   967,   411,
    1812      668,   266,  1197,  1469,  1179,   952,    96,   162,   832,    49,
    1813      153,  1199,   835,  1201,  1187,   409,   161,   166,   123,    96,
    1814      374,   209,   665,   439,    76,   149,   252,   329,   443,  1179,
    1815      150,   548,   151,   852,   829,   471,   602,   855,   666,   307,
    1816     1172,   836,  1030,   602,   398,   189,   162,  1017,   816,    57,
    1817      327,    49,  1140,   735,   176,  -233,  -233,   817,    97,   271,
    1818      476,   674,   676,  1081,   271,   266,   266,   818,    96,   162,
    1819      106,   113,   463,   161,  1016,   442,  1004,   483,   154,    57,
    1820       96,   444,  1188,   992,   500,   923,    50,   142,   924,  1249,
    1821     1172,   657,   441,  1527,   307,   163,   665,   860,   861,   820,
    1822      146,   610,  1094,   176,  1485,    70,   176,   307,  1205,  1206,
    1823       96,   821,   666,   436,   878,   831,   597,  1250,   822,   672,
    1824     1542,   597,    56,   572,   479,   677,  -233,   357,   147,   730,
    1825      923,    69,   567,  1399,  1400,   373,   168,   155,  1513,   377,
    1826     1515,   113,   816,   327,   580,   345,   411,   476,   743,   603,
    1827      621,   817,   176,   177,  1071,   378,   828,    63,   736,   163,
    1828      169,   818,  1399,  1400,   626,  1139,   568,  1497,   626,   569,
    1829      630,   113,   932,  1502,   634,   436,   748,   589,   737,   899,
    1830      110,   144,   139,   140,  1246,  1070,   447,    96,   374,    63,
    1831      987,    41,    42,  1522,  1202,   805,   266,   471,  1529,   171,
    1832      769,   770,   771,  1401,   212,   460,   186,   342,   604,  1172,
    1833      845,   166,   578,   373,   799,   176,  1030,   471,   579,   820,
    1834      357,   583,   243,   411,   266,   471,   307,   307,  1170,  1171,
    1835      266,   821,  1410,   626,   110,  1188,  1119,   854,   822,  1326,
    1836      110,   715,  1188,    76,  1526,    41,    42,   684,    76,   599,
    1837     1020,    41,    42,   579,   113,   435,  1120,   553,   554,  1327,
    1838     1127,   348,  1363,   995,  1537,   189,   374,   358,  -121,   176,
    1839     -121,  1541,   266,   760,  -121,   493,   176,   705,   494,   765,
    1840      266,   387,   626,   706,    49,   357,   953,   373,   720,  -121,
    1841     -121,    97,   229,  1188,   113,   230,   923,   388,   234,  1085,
    1842      236,   557,   558,   106,   911,  1245,   307,   245,   113,  1158,
    1843     1160,   307,    57,   307,   307,  1136,   714,   435,  1424,    50,
    1844      913,   751,  1017,   610,   870,   113,   345,   212,   882,  1105,
    1845      327,   327,  1425,  1015,  1429,  1430,   559,   560,    70,   883,
    1846      523,   411,  1102,    96,  1117,   176,   722,   604,  1435,  1470,
    1847      880,   181,   723,   163,   348,    56,   923,   923,   110,   390,
    1848      358,   342,   176,  1471,    69,   110,   176,   139,   140,    41,
    1849       42,   572,   572,   555,   556,   391,    41,    42,  1127,   307,
    1850     1444,   110,   201,   914,     2,   206,     4,     5,     6,     7,
    1851      626,   345,    41,    42,   286,   621,   392,  1331,   327,  -289,
    1852      715,   603,   111,   603,   865,    41,    42,   973,    63,   997,
    1853       76,   247,   393,   472,   805,  1475,   250,   327,   732,   348,
    1854     1333,   626,  1475,  -517,   733,   358,   626,   847,   621,   176,
    1855       76,   514,   626,  1361,   229,   626,   626,   626,    76,   871,
    1856     -468,   643,  -468,   862,   848,   886,  1015,   411,   849,    35,
    1857      394,    36,  1028,   626,   915,   266,   252,   877,   872,  -468,
    1858      815,   471,   604,   348,   348,   348,   395,  1142,   917,   411,
    1859      916,   807,  1075,  1523,  1444,   915,    76,   442,   917,  1444,
    1860     1185,   348,   263,   327,   918,   113,    37,   929,   908,  1185,
    1861       40,  1082,  1317,   -10,  1083,   597,  1186,    41,    42,  1444,
    1862      692,   498,   805,   110,   357,  1309,  1444,  1409,  1318,  1113,
    1863     1237,   626,   934,   621,    41,    42,   747,  -441,  1319,   720,
    1864      720,   748,   748,    43,   407,   846,   399,   561,   562,   893,
    1865      599,    45,    46,   400,  1320,   748,   401,  1364,   500,   348,
    1866      408,  -442,   402,   895,  1035,   113,   345,   912,   403,   748,
    1867      751,   751,   523,   212,   523,   276,   571,   523,   411,   404,
    1868      523,   923,   405,   981,    45,    46,   519,   212,   850,   982,
    1869     1277,  1278,   851,   278,   229,   472,   234,   923,   815,   604,
    1870      714,   342,   965,  1154,   850,   411,  1374,   176,  1101,   966,
    1871     1477,   750,  1478,   411,   572,   472,   279,  -103,   967,    45,
    1872       46,  -103,   626,   472,   626,   110,  1000,   139,   140,   626,
    1873      345,   330,   933,   603,   602,  1162,    41,    42,   994,   176,
    1874       45,    46,    37,  1233,   706,   603,    40,   331,  1349,   579,
    1875      348,  1357,  1350,    41,    42,   176,   332,   748,   348,   712,
    1876     1358,    63,   715,   371,   358,  1524,   748,   923,   923,   176,
    1877      548,   985,   982,   465,     8,     9,    10,    11,    12,   813,
    1878      212,   602,   329,   411,   229,   953,   372,    45,    46,   953,
    1879      953,  1360,   815,   550,    76,   307,  1365,   748,  -290,   551,
    1880      552,   333,   748,    31,   604,     8,     9,    10,    11,    12,
    1881      807,   510,  1370,  1371,   106,  1427,   334,   626,   673,   675,
    1882       76,  1424,   665,    57,   113,   345,   908,   911,   908,   335,
    1883     1445,    34,  1183,   376,    31,    37,   748,   385,   666,    40,
    1884      113,   715,  1157,   913,   602,   389,    41,    42,   805,    70,
    1885      176,   692,   409,   934,   934,  1491,  1419,   982,   720,   714,
    1886      342,  1492,    34,   113,   307,   129,    56,   130,   131,   132,
    1887       48,   112,   719,  1399,  1400,    69,    41,    42,  1106,   397,
    1888       45,    46,   106,  1547,   214,  1084,   426,   912,   751,   579,
    1889     1159,    57,   602,   427,  1509,  1426,   772,   773,   519,   112,
    1890      112,   432,    48,   519,   450,  1324,   519,   738,  1242,   739,
    1891      411,  1437,   740,    48,  1088,   744,  1088,   604,  -365,    48,
    1892      345,   774,   775,  1228,  -394,   484,    37,    48,   174,   175,
    1893       40,   780,   781,    48,  1107,   214,    48,    41,    42,    48,
    1894      461,   626,   626,  1127,   462,     2,   206,     4,     5,     6,
    1895        7,   504,   112,   112,   776,   777,   778,   779,   291,   472,
    1896      788,   307,     2,   206,     4,     5,     6,     7,   327,   348,
    1897      348,   528,   529,   530,   508,  1169,    48,   442,   214,    48,
    1898      106,  1495,  1437,   513,   525,   472,    48,    76,   111,    57,
    1899      527,   228,  1381,   563,   564,   531,  1381,   532,   566,   533,
    1900      534,   113,   252,   329,   411,   565,   908,   419,   661,   411,
    1901       35,   908,    36,   569,   176,    70,   338,    48,  -438,   587,
    1902      934,   658,   659,   712,   846,    48,  -291,    35,   266,    36,
    1903       48,   590,    56,     8,     9,    10,    11,    12,    -3,   214,
    1904      639,  1190,   660,   626,   481,   329,   411,   662,   663,   761,
    1905      664,   829,   329,   602,   766,    48,    48,    37,   667,   183,
    1906      184,    40,    31,   669,   257,   912,   693,   345,    41,    42,
    1907      912,    48,   694,    -3,   696,   498,   698,   214,  -237,    48,
    1908      734,   745,   214,  1296,  1297,  1298,   692,   749,    48,   757,
    1909       34,    48,   808,  1460,   906,   809,   411,   -12,   112,   812,
    1910      823,   714,    45,    46,   465,  1332,  1334,  1335,   -13,   271,
    1911      113,   867,   868,   112,   874,   907,   894,   112,   896,   897,
    1912      922,    48,   112,   901,   904,   219,  -415,   723,   113,   106,
    1913     -521,   944,   307,   937,   946,    48,    48,    57,    57,   957,
    1914      950,   959,    48,   958,   960,   951,   626,  -292,   961,    48,
    1915      113,   106,    63,    76,     8,     9,    10,    11,    12,   962,
    1916       57,   978,   989,   212,   342,  1106,   990,   991,   214,   106,
    1917     1006,  1007,  1008,  1009,   116,   879,  1010,   881,    57,  1011,
    1918      210,   220,   712,    31,  1012,  1023,    70,  -403,    37,  -402,
    1919      183,   184,    40,  1037,  1422,   626,   626,  1072,    48,    41,
    1920       42,  1535,  1074,    56,   271,  1095,   907,  1096,  1059,   307,
    1921     1097,    34,    69,  1098,  1104,  1114,   748,  1115,    48,    48,
    1922     1116,  1107,   159,   348,   348,   185,  1118,   928,   106,  1352,
    1923     1121,  1123,    57,    45,    46,    48,   972,    57,  1124,    48,
    1924     1125,  1126,   113,   407,  1132,  1129,   399,   692,  1152,   214,
    1925      644,  1173,  1174,   400,   173,  1175,   401,  1106,   442,   408,
    1926     1176,   106,   402,    70,  1177,  1191,    48,   665,   403,  1192,
    1927       57,  1194,  1195,  1203,  1210,   441,    48,  1207,   258,   404,
    1928       56,  1208,   405,   666,  1215,    -3,   159,  1220,  1225,  1190,
    1929     1223,   214,  1241,   493,    48,  1229,   253,  1508,  1234,   266,
    1930       48,  1236,    48,  1421,  1238,  1247,  1251,  1253,  1255,   110,
    1931     1257,   139,   238,  1107,  1258,   626,  1263,  1259,   472,   323,
    1932       41,    42,  1260,  1261,    76,   176,  1270,    37,   339,   174,
    1933      175,    40,  1279,   110,  1280,   139,   140,   112,    41,    42,
    1934      113,  1287,    48,   348,    41,    42,   239,  1290,  1291,  1292,
    1935       48,   240,  1330,  1294,    48,  1106,  1302,  1308,    48,   106,
    1936     1315,   112,   113,   112,   372,  1323,  1321,  1325,    57,   113,
    1937      727,   113,  1336,   113,  1329,   728,  1337,  1193,   430,  1339,
    1938     1345,   106,   434,  1346,  1347,  1348,   149,  1359,   106,  1355,
    1939       57,   150,   417,   151,  1356,  1366,  1367,    57,   112,  1298,
    1940     1375,    76,  1507,   112,  1384,  1376,  1377,   113,  1383,   113,
    1941     1393,  1107,   323,   214,  1394,   437,    70,  -404,  1397,  1408,
    1942      113,  1412,  1414,    70,   712,   445,  1507,  1507,  1416,  1417,
    1943      703,  1423,  1418,    56,   161,  1441,   307,  1431,  1432,   106,
    1944       56,   214,  1190,  1433,   434,  1434,   214,   488,    57,  1190,
    1945     1350,  1507,  1436,   112,  1446,  1448,  1450,  1452,   373,   213,
    1946       48,  1454,  1456,  1458,  1463,  1465,  1486,   521,   232,  1464,
    1947     1476,    48,  1488,    48,    70,  1490,  1493,  1501,  1521,  1122,
    1948      159,  1494,  1516,  1517,  1530,   479,   141,  1528,  1532,    63,
    1949     1538,    56,    48,   520,  1545,   176,  1546,   889,  1209,   782,
    1950     1190,  1133,  1131,   712,   784,  1133,  1307,  1411,    48,   783,
    1951      213,   704,   785,   112,   588,   786,  1496,   214,   594,  1548,
    1952     1369,  1385,    48,  1240,   112,    48,   112,  1214,  1479,   902,
    1953      903,   214,  1089,   925,   215,  1222,  1093,   627,   241,   244,
    1954      327,   631,   801,  1128,   339,  1059,  1036,   939,   873,  1103,
    1955      242,  1316,   717,   213,    76,  1133,    66,   117,    48,   947,
    1956      791,    76,   112,   792,   112,   793,   472,    37,   112,   174,
    1957      175,    40,     0,     0,     0,     0,   112,     0,    41,    42,
    1958        0,     0,     0,  1285,  1286,   215,  1288,     0,    66,    48,
    1959       48,     0,     0,  1293,     0,  1295,     0,     0,     0,   323,
    1960      323,     0,     0,    48,   376,   160,     0,     8,     9,    10,
    1961       11,    12,    76,     0,   213,     0,     0,  1483,     0,  1483,
    1962        0,     0,     0,     0,   214,   221,     0,   688,   215,     0,
    1963      528,   529,   530,     0,     0,     0,    31,   703,  1373,     0,
    1964      116,     0,   681,     0,     0,     0,     0,     8,     9,    10,
    1965       11,    12,   213,  1483,   531,  1483,   532,   213,   533,  1306,
    1966        0,   259,     0,     0,    34,   488,     0,   323,   707,   488,
    1967        0,     0,   499,     0,     0,     0,    31,     0,     0,   521,
    1968        0,   521,     0,    48,   521,     0,   323,   521,     0,   215,
    1969     1398,     0,     0,  1406,     0,    48,     0,     0,   339,   457,
    1970        0,     0,     0,   328,    34,   520,   571,     0,   411,     0,
    1971      520,   259,   350,   520,    45,    46,     0,     0,   704,   472,
    1972        0,     0,     0,     0,     0,     0,   472,   215,     0,     0,
    1973        0,     0,   215,     0,     0,     0,  1443,     0,   644,     0,
    1974        0,  1447,   406,   213,   112,     0,   750,     0,   411,     0,
    1975        0,  1405,   323,     0,    45,    46,   703,   424,     0,     0,
    1976      429,   431,     0,   803,     0,   160,   703,    48,     0,  1468,
    1977     1133,  1133,  1133,     0,     0,     0,    48,   472,    48,     0,
    1978      703,     0,     0,     0,     0,   112,   448,     0,     0,     0,
    1979      451,     0,   452,     0,   844,     0,     0,     0,     0,   594,
    1980        0,   459,     0,     0,     0,   853,    74,    66,    48,     0,
    1981        0,     0,   473,     0,     0,     0,     0,     0,   215,     0,
    1982        0,   214,   480,     0,   213,     0,     0,     0,   112,     0,
    1983      431,     8,     9,    10,    11,    12,   645,   704,    74,     0,
    1984        0,   213,   644,     0,     0,     0,     0,   704,     0,     0,
    1985      112,     0,     0,  1536,   112,     0,     0,     0,   688,  1536,
    1986       31,   704,     0,     0,     0,     0,   213,     0,     0,   891,
    1987     1536,     0,   892,     0,  1536,   222,     0,     0,   898,     0,
    1988        0,     0,   900,     0,     0,     0,     0,     0,    34,     0,
    1989        0,    37,     0,   183,   184,    40,   488,   259,     0,   215,
    1990        0,   595,    41,    42,   112,     0,     0,   623,  1133,  1133,
    1991        0,     0,     0,     0,     0,     0,     0,     0,   339,     0,
    1992      628,     0,     0,     0,   628,     0,     0,   259,   265,     0,
    1993      933,     0,   602,     0,     0,     0,    45,    46,    45,    46,
    1994        0,   215,   112,     0,     0,     0,  1461,   725,     0,   729,
    1995        0,     0,     0,     0,     0,     0,    48,     0,     0,     0,
    1996        0,    48,   353,   535,   536,   537,   538,   539,   540,   541,
    1997      542,   543,   544,   545,   473,     0,     0,   996,    48,     0,
    1998        0,     0,   803,     0,   703,   703,     0,     0,   213,   350,
    1999        0,   988,     0,     0,   473,     0,     0,   546,     0,     0,
    2000        0,   993,   473,     0,  1510,     0,     0,   214,     0,     0,
    2001        0,     0,     0,  1518,     0,  1005,   213,     0,     0,     0,
    2002      699,   213,    37,   431,   183,   184,    40,     0,     0,     0,
    2003        0,     0,     0,    41,    42,     0,   449,     0,   713,     0,
    2004       66,     0,   703,   703,     0,     0,     0,     0,   431,     0,
    2005        0,     0,   431,     0,     0,   112,     0,    74,     0,   601,
    2006        0,   602,    74,   215,     0,   704,   704,    45,    46,     0,
    2007      803,     0,     0,     0,     0,     0,     0,   339,    48,     0,
    2008        0,   259,   350,     0,     0,     0,     0,     0,     0,     0,
    2009        0,   215,   213,   688,     0,     0,   215,     0,  1080,   866,
    2010        0,     0,   214,    77,     0,     0,   213,     0,     0,     0,
    2011        0,     0,     0,     0,     0,   488,  1108,   323,     0,   112,
    2012      112,   112,     0,   704,   704,     0,   499,     0,   794,    37,
    2013        0,   183,   184,    40,     0,    77,     0,     0,     0,     0,
    2014       41,    42,     0,     0,     0,     0,   628,   806,   919,     0,
    2015      921,     0,     0,     0,   457,     0,     0,   222,    37,   825,
    2016      183,   184,    40,     0,     0,     0,   906,   215,   411,    41,
    2017       42,     0,   223,   844,    45,    46,     0,   595,     0,     0,
    2018        0,   215,   595,     0,     0,     0,     0,     0,   628,     0,
    2019     1313,   350,   350,   350,     0,  1506,     0,   411,     0,   213,
    2020        0,     0,     0,    45,    46,     0,     0,     0,     0,   350,
    2021        0,     0,     0,   124,   127,   128,     0,     0,     0,  1167,
    2022     1168,     0,   703,     0,    74,     0,     0,   699,     0,     0,
    2023      703,   703,   703,     0,     0,     0,     0,     0,   473,   353,
    2024        0,     0,     0,     0,    74,     0,     0,     0,    48,    48,
    2025        0,  1204,    74,     0,   688,     0,     0,   112,   112,   355,
    2026        0,     0,     0,     0,   473,     0,     0,   350,     0,     0,
    2027      353,  1314,     0,     0,   215,     0,   938,  1217,  1218,   431,
    2028        0,     0,     0,     0,     0,   254,     0,   255,   353,     0,
    2029       74,     0,     0,     0,   703,   112,   803,     0,     0,     0,
    2030        0,   259,   713,   704,     0,     0,     0,   968,     0,     0,
    2031        0,   704,   704,   704,     0,     0,     0,     0,     0,     0,
    2032        0,     0,     0,     0,   645,     0,     0,     0,     0,     0,
    2033     1040,     0,   353,     0,     0,     0,     0,   126,   126,   126,
    2034        0,     0,     0,     0,     0,     0,   699,     0,     0,     0,
    2035        0,     0,    48,   112,    77,     0,   699,     0,   350,    77,
    2036      628,     0,   112,  1003,     0,   628,   806,     0,   396,     0,
    2037      699,  1090,     0,     0,     0,   704,    48,    48,   415,   416,
    2038     1014,   339,     0,   420,     0,   422,   423,     0,     0,     0,
    2039        0,     0,     0,     0,     0,     0,   213,   353,     0,     0,
    2040        0,    48,     0,  1108,     0,     0,     0,     0,     0,   126,
    2041        0,   126,     0,     0,     0,    79,     0,     0,     0,     0,
    2042        0,     0,     0,     0,     0,     0,     0,     0,   645,     0,
    2043        0,    66,     0,     0,     0,     0,   275,     0,     0,     0,
    2044        0,   353,   353,   353,     0,     0,     0,    79,     0,     0,
    2045        0,     0,     0,   628,   223,     0,     0,  1338,     0,   353,
    2046      259,   713,     0,     0,  1086,  1340,  1341,  1342,     0,     0,
    2047        0,   215,     0,     0,     0,     0,     0,   353,     0,     0,
    2048        0,     0,     0,     0,   224,     0,     0,     0,    74,     0,
    2049     1100,     0,   126,     0,     0,  1108,     0,  1368,   431,   117,
    2050      126,     0,   126,   126,     0,     0,     0,   126,     0,   126,
    2051      126,     0,     0,     0,    74,     0,     0,   353,     0,     0,
    2052        0,    77,     0,     0,     0,     0,     0,     0,  1040,  1386,
    2053        0,     0,     0,     0,     0,     0,   355,     0,     0,     0,
    2054        0,    77,     0,     0,     0,     0,     0,     0,     0,    77,
    2055        0,     0,   353,     0,     0,     0,   595,     8,     9,    10,
    2056       11,    12,     0,     0,     0,     0,     0,   355,     0,   429,
    2057        0,   356,     0,     0,   699,   699,     0,   350,   350,   126,
    2058        0,     0,   213,     0,     0,   355,    31,    77,     0,     0,
    2059        0,     0,     0,  1108,     0,     0,   353,  1189,     0,     0,
    2060        0,     0,     0,     0,     0,     0,   353,     0,   353,     0,
    2061        0,     0,     0,   222,    34,     0,   353,     0,     0,    37,
    2062      353,   183,   184,    40,  1482,     0,  1482,     0,     0,   355,
    2063       41,    42,   699,   699,     0,     0,     0,     0,     0,     0,
    2064        0,  1283,     0,     0,     0,     0,     0,     0,     0,  1480,
    2065        0,  1484,     0,     0,     0,     0,   601,   215,   602,     0,
    2066     1482,     0,  1482,     0,    45,    46,    79,     0,     0,     0,
    2067        0,    79,     0,     0,     0,     0,     0,   213,     0,   628,
    2068        0,    74,     0,     0,     0,  1512,     0,  1514,     0,   323,
    2069        0,     0,     0,     0,   355,     0,     0,     0,     0,     0,
    2070        0,     0,     0,   713,     0,     0,     0,     0,     0,    86,
    2071        0,   353,     0,     0,     0,     0,     0,   413,     0,     0,
    2072        0,     0,     0,     0,   421,     0,     0,     0,     0,  1543,
    2073        0,  1544,     0,     0,     0,     0,     0,     0,   355,   355,
    2074      355,    86,     0,     0,  1551,  1552,  1284,     0,     0,     0,
    2075        0,     0,   215,     0,     0,     0,   355,     0,     0,     0,
    2076        0,     0,   796,   797,   259,     0,   224,     0,    66,     0,
    2077        0,     0,     0,     0,   355,     0,     0,     0,   225,     0,
    2078      699,     0,   713,     0,     0,    77,   117,     0,     0,     0,
    2079        0,   830,     0,     0,   833,   834,   413,   837,     0,   839,
    2080      840,     0,     0,     0,   841,   842,     0,     0,     0,     0,
    2081        0,    77,   699,     0,   355,     0,     0,     0,     0,     0,
    2082      699,   699,   699,     0,   353,   353,     0,   353,   353,     0,
    2083        0,   350,   350,    79,     0,     0,     0,     0,     8,     9,
    2084       10,    11,    12,     0,     0,  1189,     0,    74,   356,   355,
    2085        0,   577,     0,    79,     0,     0,     0,     0,     0,   581,
    2086        0,    79,   584,     0,     0,   363,     0,    31,     0,     0,
    2087        0,     0,     0,     0,     0,     0,     0,     0,   117,   356,
    2088        0,     0,   353,   353,   699,     0,   126,   126,     0,     0,
    2089        0,     0,     0,   355,     0,    34,     0,   356,     0,    79,
    2090       37,     0,     0,   355,    40,   355,     0,     0,     0,     0,
    2091      223,    41,    42,   355,     0,   126,     0,   355,   126,   126,
    2092        0,   126,     0,   126,   126,     0,   413,     0,   126,   126,
    2093      421,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2094        0,   356,   970,   971,     0,    45,    46,     0,     0,     0,
    2095        0,   350,     0,   353,     0,     0,     0,     0,     0,     0,
    2096       86,     0,     0,     0,     0,    86,     0,     0,     0,     0,
    2097        0,     0,     0,     0,     0,     0,   117,     0,    77,     0,
     1793      49,   113,   149,   150,   151,   449,   396,    97,   266,   425,
     1794     114,   397,    69,   757,   398,   436,    50,   399,   400,   732,
     1795     949,    76,   380,   381,   950,   951,   401,   402,  1049,   831,
     1796     814,   143,    49,   806,   934,   854,   602,   116,   152,    97,
     1797     693,   805,   743,   147,    69,   704,   717,   807,    50,    49,
     1798     722,   597,   784,    76,   259,   407,   160,   813,  1360,    31,
     1799     404,    70,  1118,   185,   664,   666,   208,   122,   153,    49,
     1800     192,   808,   904,   215,   802,   621,   225,   803,   218,   625,
     1801    1148,  1149,   201,   804,   563,   158,   396,  1165,  1150,   154,
     1802      31,   397,   422,    70,   398,   522,   162,   399,   400,   844,
     1803     844,   279,   106,   106,   340,   113,   401,   402,   374,  1159,
     1804      63,  1227,   167,   113,  1173,   844,   265,   270,   564,   289,
     1805      96,   589,  1182,  1183,   375,   260,  1056,   211,   261,   471,
     1806     473,   721,   202,   408,   106,  1282,   168,   123,  -239,  -239,
     1807     404,   257,    63,   149,   150,   151,   308,   147,    31,   158,
     1808     734,   937,    96,  1510,   160,   113,   343,   165,  1441,   208,
     1809     162,   280,   251,   148,   408,   406,   370,  1048,   501,    96,
     1810     949,   106,   846,   844,   950,   951,  1174,   142,   660,   152,
     1811    1525,   405,   324,   188,   185,   185,    96,   863,   711,    96,
     1812     802,   338,   160,   803,   845,   845,  1222,   669,   467,   804,
     1813     265,   908,  1509,   898,   658,   673,  1283,   817,    49,   153,
     1814     845,  -239,   472,   824,   788,   160,   251,   330,   408,    31,
     1815     208,   165,  1520,   149,   150,   151,    31,   439,  1422,  1524,
     1816     154,  1312,  1175,  1315,  1317,  1177,   435,   472,   308,   806,
     1817     427,   693,  1380,  1381,   430,   916,   998,   985,    31,   459,
     1818      49,    31,   144,   807,   328,   431,   705,    97,   270,   714,
     1819    1155,   405,    69,   270,   265,   265,    50,    96,   845,   974,
     1820     113,    76,   160,   997,   324,  1059,    76,   808,   655,    96,
     1821     802,   438,  1178,   803,   602,   647,  1156,  1150,   582,   804,
     1822     479,   416,  1452,   408,  1176,   308,   793,   496,   477,   384,
     1823     408,  1422,  1232,   704,   395,   188,   430,  1072,   308,   484,
     1824     146,    70,  1426,   662,  1382,   385,   432,   431,  1156,   667,
     1825     815,   155,   594,   822,   566,   594,  1468,  1164,    96,   147,
     1826    1233,   517,   170,  1148,  1149,  1165,   370,   840,  1179,   113,
     1827      96,  1150,   519,   343,   158,   443,   328,   595,   613,   251,
     1828     330,   655,   106,   814,   727,   162,  1049,   806,   467,   693,
     1829      63,  1496,   618,  1498,   456,   468,   618,  1380,  1381,   693,
     1830      96,   807,    56,   115,   728,   581,   285,   467,   432,   586,
     1831     693,   572,   622,   180,   475,   467,   626,   573,   726,    41,
     1832      42,   589,   200,   265,  1480,   808,   589,   831,   619,   656,
     1833    1485,   818,   623,   185,    56,   821,  1063,  1367,  1426,   211,
     1834     370,   172,   817,  1426,   738,   510,   165,   376,   141,  -294,
     1835    1505,   265,  1097,   308,   308,  1512,   838,   265,   969,   618,
     1836     841,   246,   110,  1426,   110,   884,    76,  1305,   209,  1391,
     1837    1426,   219,  1098,   249,  1405,    41,    42,    41,    42,    96,
     1838     113,   591,  1095,   252,  1417,    76,   704,  1306,  1406,   324,
     1839     324,  1150,  -522,    76,  1411,  1412,   387,   596,   265,   251,
     1840     240,   243,   656,   750,  1116,   755,   265,  1104,   618,   515,
     1841      49,   -12,   388,   370,   710,  1083,   678,    97,   549,   550,
     1842     113,  1165,    69,   855,  1453,  1048,    50,   682,  1165,   116,
     1843     602,    76,   308,  1221,   113,   978,   674,   308,  1454,   308,
     1844     308,   389,   573,   998,   705,   996,   867,   741,   391,   899,
     1845     856,   343,   633,   188,   484,   468,   324,   390,   484,   834,
     1846     211,   328,   328,   835,   392,   900,   695,   865,   517,   857,
     1847     517,    70,   696,   517,   468,   324,   517,   262,   414,   519,
     1848    1165,   519,   468,   895,   519,  -446,   901,   519,     2,   205,
     1849       4,     5,     6,     7,   489,   566,   566,   490,   712,  1147,
     1850     899,   433,   902,   308,   713,  1343,   574,  1341,   408,   693,
     1851     693,   441,   106,   618,   343,   723,  1060,   613,   702,  1104,
     1852      63,   724,   437,   595,   898,   595,   795,   737,   328,  -447,
     1853      96,  1136,  1138,   738,   596,   901,   878,   663,   665,   324,
     1854     836,  1213,   738,   618,   837,   467,   938,   328,   618,   791,
     1855     613,  1061,    56,    35,   618,    36,   996,   618,   618,   275,
     1856     453,  1162,   880,   833,   693,   693,   277,  1001,   738,  1162,
     1857    1296,   913,  1298,   618,  1008,   265,   738,  1163,   847,   830,
     1858     331,   516,  1390,   836,   586,  1288,  1297,  1079,  1299,    37,
     1859     839,   862,  1344,    40,  1053,  -112,   110,   705,   161,  -112,
     1860    1257,  1258,    41,    42,   897,   113,   438,   546,   892,    41,
     1861      42,   328,   193,   547,   548,   216,   515,   278,   226,   963,
     1862     332,   515,   704,    76,   515,   964,  1091,   577,   799,   408,
     1863     594,   618,   918,   613,   551,   552,    45,    46,  1014,   710,
     1864     710,   678,   396,   801,  1330,   596,   333,   397,  1331,    76,
     1865     398,   832,   682,   399,   400,   334,   591,  1080,   976,  1209,
     1866     335,  1458,   401,   402,   696,   573,   343,  1460,  1458,  1461,
     1867     741,   741,   868,   496,   408,  1337,  1338,   336,   778,   484,
     1868     211,   738,   738,     2,   205,     4,     5,     6,     7,   589,
     1869     369,   553,   554,   111,   211,   635,   161,   404,  1354,   949,
     1870    1340,  1345,   373,   950,   951,  1408,   738,   738,   371,   382,
     1871    1292,  1405,   468,   566,     2,   205,     4,     5,     6,     7,
     1872    1506,   386,   618,  1507,   981,   671,   555,   556,   896,   595,
     1873    1140,  1427,   110,   871,   161,   408,  1211,   738,   468,  1109,
     1874    1215,   595,  1110,   227,  1111,    41,    42,   693,    35,   394,
     1875      36,   697,  1333,   423,   693,   693,   693,   161,   977,   801,
     1876     596,   129,  1474,   130,   131,   132,   557,   558,  1475,   440,
     1877     110,  1530,   139,   237,    41,    42,   702,   573,   565,    35,
     1878     408,    36,    56,    41,    42,   211,    45,    46,   516,  1121,
     1879     308,   408,   424,   516,   214,   406,   516,    48,   112,  1132,
     1880    1160,   408,    69,   446,  1135,   716,   594,   720,  1407,   238,
     1881     241,    76,   343,    -3,   239,   330,   408,   693,   405,   343,
     1882     892,  -370,   892,  -399,   795,  1419,   112,   112,   110,    48,
     1883     139,   140,   480,   705,   113,   457,   175,   416,   651,   408,
     1884      48,    41,    42,   110,   500,   214,    48,   918,   918,   801,
     1885    1109,    70,   710,  1110,    48,  1111,    41,    42,   113,   308,
     1886      48,   596,   110,    48,   139,   140,    48,  1084,   458,   655,
     1887     678,  1137,   242,   594,   895,    41,    42,   289,   371,   112,
     1888     112,   682,   741,   504,  1226,   175,   509,   214,   175,   506,
     1889     967,   964,   106,   484,  1086,   324,   522,  1478,  1419,   729,
     1890      63,   730,   559,    48,   731,   560,    48,   735,  1204,   562,
     1891     705,   343,   938,    48,   544,   545,   938,   938,   561,  1218,
     1892    1492,   408,   740,   337,   408,   477,   330,   408,  -295,   702,
     1893      45,    46,   618,   618,   583,     8,     9,    10,    11,    12,
     1894    1062,    -3,   896,   461,    48,   648,   876,   830,   214,   544,
     1895     308,   851,   371,  1350,  1351,   883,    48,  1400,   964,   885,
     1896     106,  1066,  1167,  1066,    31,  1380,  1381,   328,   649,  1104,
     1897     650,    76,   596,   652,    37,   438,   182,   183,    40,  1228,
     1898    1229,    48,    48,   653,   544,   654,   214,    41,    42,   113,
     1899     656,   214,    34,   657,   892,   897,   175,    48,   659,   892,
     1900     903,   917,   905,   594,   256,    48,   453,   684,   918,    45,
     1901      46,    70,   683,   890,    48,   408,   265,    48,   686,   832,
     1902     688,    45,    46,  -243,   112,   678,   762,   763,   110,   725,
     1903    1303,   815,   330,   594,   891,  1109,   682,   796,  1110,   112,
     1904    1111,    41,    42,   112,  1275,  1276,  1277,    48,   112,   714,
     1905     175,   739,   106,   764,   765,   343,   747,   175,   770,   771,
     1906     468,    48,    48,  -296,   766,   767,   768,   769,    48,  1314,
     1907       8,     9,    10,    11,    12,    48,   214,  -297,     8,     9,
     1908      10,    11,    12,   798,     8,     9,    10,    11,    12,   809,
     1909      37,   -14,   182,   183,    40,   -15,   270,   113,    37,    31,
     1910     173,   174,    40,    41,    42,   852,   218,    31,   853,  1037,
     1911     859,    41,    42,    31,   896,   879,   881,   886,   308,   896,
     1912    1361,  -420,   906,  -526,  1361,   175,    48,    34,   921,   593,
     1913      69,   594,   618,   713,   929,    34,   113,    45,    46,    76,
     1914     931,    34,   175,    48,    48,  1084,   175,     8,     9,    10,
     1915      11,    12,   759,   760,   761,   111,   214,   211,   936,   935,
     1916      48,   942,    56,   943,    48,   702,   944,   945,   946,   947,
     1917    1058,   635,  1086,   971,   634,   972,    31,  1019,   973,    70,
     1918     961,  1403,   987,   988,   989,   618,   618,   990,   991,   992,
     1919      48,   993,  -408,   270,  -407,    74,  1518,   214,   308,   106,
     1920      48,  1016,  1050,  1073,    34,  1074,  1052,  1075,  1076,  1082,
     1921    1167,  1092,  1093,   738,  1096,   891,   751,  1068,    48,    76,
     1922     106,   756,   110,  1442,    48,  1099,   956,    74,    63,  1109,
     1923    1085,   113,  1110,  1094,  1111,    41,    42,  1101,   106,  1102,
     1924    1084,   396,   702,  1103,  1106,  1130,   397,  1151,   565,   398,
     1925     408,  1154,   399,   400,   438,  1168,    45,    46,  1152,    70,
     1926     112,   401,   402,  1316,   221,    48,    37,  1086,  1169,   461,
     1927      40,  1153,  1170,    48,   635,  1171,  1172,    48,  1180,    41,
     1928      42,    48,  1264,  1265,   112,  1267,   112,  1491,  1184,   265,
     1929    1191,    -3,  1272,  1186,  1274,   404,  1196,  1199,    37,  1201,
     1930     106,   489,    40,  1205,  1210,    43,   618,  1402,   468,  1214,
     1931    1212,    41,    42,    45,    46,   214,  1217,  1181,  1230,   655,
     1932    1223,   112,    56,  1234,  1236,  1238,   112,  1266,  1239,  1240,
     1933    1241,   113,  1243,   106,  1287,  1250,   864,   709,   866,  1259,
     1934    1084,  1260,  1269,   214,  1270,    45,    46,  1294,   214,    66,
     1935     117,   351,  1271,   957,   113,  1300,   110,  1273,   139,   140,
     1936    1304,   113,  1281,   113,  1302,   113,  1167,  1086,  1019,    41,
     1937      42,  1308,  1309,  1167,   112,    76,  1310,  1313,   149,   150,
     1938     151,    66,    76,  1318,  1320,  1326,  1327,  1328,   912,  1329,
     1939      48,  1277,    48,   175,  1339,  1490,  1336,   850,   159,  1465,
     1940     113,  1465,   113,  1346,  1357,  1347,  1393,  1355,   175,  1356,
     1941    1466,    48,  1466,   113,  1363,    70,   405,   214,   220,  1490,
     1942    1490,   175,    70,   877,   445,  1167,    48,   160,  1374,   308,
     1943     112,   214,  1364,   106,    76,  1375,  1465,  1037,  1465,    48,
     1944     656,   112,    48,   112,  1490,    74,  -409,  1466,  1389,  1466,
     1945      74,   370,  1378,  1386,   258,  1395,   106,  1397,  1398,  1399,
     1946    1404,  1418,  1413,   106,   468,   324,  1414,  1415,   209,   219,
     1947     110,   468,   139,   140,    70,    48,  1416,  1331,  1428,   112,
     1948    1262,   112,  1430,    41,    42,   112,   228,  1432,  1423,   229,
     1949      56,  1434,   233,   112,   235,  1436,   329,  1438,  1445,  1440,
     1950    1446,   244,  1447,   175,   258,   348,    48,    48,  1085,   718,
     1951    1448,  1459,  1469,  1471,   719,   106,    37,  1476,   173,   174,
     1952      40,    48,   214,   468,  1473,  1477,  1484,  1500,  1499,    41,
     1953      42,  1504,  1511,  1353,   403,  1513,  1515,   328,  1521,   475,
     1954    1528,   970,  1529,   874,   221,  1185,   772,   775,   773,   421,
     1955     774,   975,   426,   428,   776,   369,  1108,   159,  1286,  1479,
     1956    1392,  1531,   986,  1348,  1216,   437,  1365,  1349,   212,  1462,
     1957      56,     8,     9,    10,    11,    12,  1190,   231,   444,   907,
     1958     887,   888,   447,  1198,   448,   909,  1379,   544,  1067,  1387,
     1959    1071,   790,  1105,   455,  1015,  1081,    48,   858,   707,    66,
     1960      31,   923,  1295,  1085,   469,   932,   780,   781,    48,   782,
     1961      74,     0,     0,     0,   476,     0,     0,     0,     0,   212,
     1962       0,     0,   428,     0,   351,     0,   506,   228,    34,    74,
     1963       0,     0,     0,  1425,     0,  1100,     0,    74,  1429,     0,
     1964       8,     9,    10,    11,    12,     0,     0,     0,     0,     0,
     1965     634,     0,     0,     0,  1112,   351,   112,     0,  1112,     0,
     1966       0,   212,     0,     0,     0,     0,     0,  1451,     0,    31,
     1967     968,     0,   740,   351,   408,    74,     0,     0,     0,     0,
     1968      45,    46,     0,     0,     0,     0,     0,    48,   258,    48,
     1969       0,     0,   587,     0,   494,     0,   112,    34,   615,     0,
     1970       0,     0,     0,  1085,   523,  1112,     0,     0,   524,   525,
     1971     526,   620,   214,     0,     0,   620,   351,     0,  1463,    48,
     1972    1467,     0,   212,     0,     0,     0,    56,     0,   410,     0,
     1973       0,   213,   527,    56,   528,   418,   529,   530,     0,     0,
     1974     112,   917,  1009,   594,     0,     0,     0,     0,     0,    45,
     1975      46,     0,  1519,   634,     0,  1495,     0,  1497,  1519,   112,
     1976     212,  1145,  1146,   112,   469,   212,   228,     0,   233,  1519,
     1977       0,     0,     0,  1519,     0,     0,     0,     0,   348,   351,
     1978     495,     0,   213,   469,   907,    56,     0,     0,     0,     0,
     1979       0,   469,    37,     0,   182,   183,    40,     0,     0,  1526,
     1980       0,  1527,  1112,     0,     0,    41,    42,   410,     0,   689,
     1981     112,     0,   428,     0,  1534,  1535,  1193,  1194,     0,     0,
     1982       0,     0,   351,   351,   213,     0,     0,   703,     0,    66,
     1983     907,   890,     0,   408,     0,     0,     0,   428,   351,    45,
     1984      46,   428,     8,     9,    10,    11,    12,   112,     0,     0,
     1985     212,     0,     0,     0,   228,     0,   351,     0,     0,     0,
     1986       0,    48,  1119,     0,   571,     0,    48,    74,     0,     0,
     1987     348,    31,   575,     0,    37,   578,   173,   174,    40,     0,
     1988      77,     0,     0,    48,     0,   213,     0,    41,    42,     0,
     1989       0,     0,     0,    74,   214,     0,   351,     0,     0,    34,
     1990       0,     0,     0,     0,    37,     0,     0,   112,    40,     0,
     1991    1009,     0,    77,   373,     0,   783,     0,    41,    42,     0,
     1992       0,     0,  1112,   213,  1112,  1112,     0,     0,   213,     0,
     1993     212,   351,   620,   794,     0,   410,     0,     0,     0,   418,
     1994       0,     0,     0,    43,   811,     0,   212,     0,     0,   222,
     1995     694,    45,    46,     0,     0,     0,     0,     0,     0,   112,
     1996       0,     0,   587,     0,    79,     0,     0,   587,     0,     0,
     1997       0,   212,     0,   620,   351,     0,   348,   348,     0,     0,
     1998       0,     0,     0,     0,   351,     0,     0,     0,     0,   907,
     1999     221,   214,   348,     0,     0,   351,    79,     0,    37,  1319,
     2000     182,   183,    40,  1112,     0,     0,  1321,  1322,  1323,     0,
     2001     689,    41,    42,   213,     0,   410,     0,     0,     0,     0,
     2002       0,   469,     0,     0,     0,     0,     0,   112,     0,   112,
     2003     112,     0,     0,   223,     0,     0,   353,   184,     8,     9,
     2004      10,    11,    12,     0,     0,    45,    46,   469,   907,   907,
     2005     348,     0,     0,     0,     0,    74,     0,     0,     0,   922,
     2006    1112,  1112,   428,     0,     0,     0,     0,    31,     0,  1366,
     2007       8,     9,    10,    11,    12,     0,     0,   351,     0,     0,
     2008       0,     0,     0,     0,   351,   703,     0,     0,     0,   212,
     2009     952,     0,     0,   213,     0,    34,     0,     0,  1443,    31,
     2010      37,     0,   182,   183,    40,   571,   571,     0,   112,     0,
     2011       0,     0,     0,    41,    42,     0,     0,   212,     0,     0,
     2012     354,     0,   212,     0,     0,     0,     0,    34,   689,     0,
     2013      77,     0,    37,     0,   213,    77,    40,   175,   689,   184,
     2014     494,   620,     0,     0,   984,    41,    42,    45,    46,   689,
     2015       0,   694,     0,     0,     0,    48,    48,     0,  1493,   995,
     2016      37,     0,   182,   183,    40,   112,   112,  1501,    57,    57,
     2017       0,   709,     0,    41,    42,     0,     0,     0,     0,    45,
     2018      46,     0,     8,     9,    10,    11,    12,     0,   869,     0,
     2019       0,   212,   872,     0,   351,   351,     0,   351,   351,  1489,
     2020      57,   408,     0,   112,     0,   212,     0,    45,    46,    66,
     2021       0,    31,     0,     0,    79,    74,     0,     0,     0,    79,
     2022       0,     0,     0,     0,     0,     0,   495,     0,     0,   222,
     2023       0,   794,     0,     0,    57,     0,     0,    57,   703,    34,
     2024       0,  1064,     0,     0,    37,     0,   182,   183,    40,   351,
     2025     351,     0,   213,     0,     0,     0,   907,    41,    42,     0,
     2026       0,     0,    48,   112,     0,     0,     0,  1078,     0,   694,
     2027       0,     0,   112,   907,     0,     0,   428,   117,    86,   694,
     2028     213,     0,     0,   264,     0,   213,    48,    48,     0,     0,
     2029     694,    45,    46,     0,     0,    77,   212,     0,     0,     8,
     2030       9,    10,    11,    12,     0,     0,     0,     0,     0,   353,
     2031      86,    48,     0,   223,    77,     0,     0,     0,     0,     0,
     2032     351,     0,    77,   571,   346,     0,     0,     0,    31,     0,
     2033     587,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2034     353,     0,     0,   426,     0,   907,   907,   224,   689,   689,
     2035       0,   348,   348,     0,   213,     0,    34,     0,   353,     0,
     2036      77,    37,   221,   182,   183,    40,     0,     0,   213,  1166,
     2037       0,     0,     0,     0,    41,    42,     0,     0,    37,    79,
     2038     182,   183,    40,    74,     0,     0,     0,     0,    57,     0,
     2039       0,    41,    42,   354,     0,   351,     0,   351,    79,     0,
     2040     593,   353,   594,   689,   689,     0,    79,     0,    45,    46,
     2041       0,     0,     0,     0,     0,   523,     0,   264,    57,   524,
     2042     525,   526,     0,     0,   354,    45,    46,     0,     0,     0,
     2043       0,     0,   351,     0,   361,     0,   410,     0,     0,   351,
     2044     351,   351,   354,   527,    79,   528,     0,   529,  1285,     0,
     2045     351,   351,     0,     0,     0,     0,     0,     0,     0,   213,
     2046       0,     0,     0,    74,   353,     0,     0,     0,     0,     0,
     2047       0,     0,     0,     0,   703,     0,     0,     0,     0,     0,
     2048       0,     0,     0,     0,     0,   354,   212,     0,     0,   694,
     2049     694,   531,   532,   533,   534,   535,   536,   537,   538,   539,
     2050     540,   541,   351,     0,     0,     0,     0,   353,   353,     0,
     2051       0,  1122,     0,     0,     0,     0,  1263,     0,     0,     0,
     2052       0,     0,     0,   353,     0,   542,     0,  1133,    86,     0,
     2053       0,     0,     0,    86,     0,     0,     0,    66,     0,     0,
     2054       0,   353,     0,     0,   694,   694,     0,     0,   354,   689,
     2055       0,   703,    77,     0,     0,   117,     0,     0,     0,     0,
    20982056       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2099        0,     0,     0,     0,     0,     0,   222,     0,  1189,     0,
    2100        0,     0,     0,     0,     0,  1189,   356,   413,   355,     0,
    2101        0,     0,     0,     0,     0,     0,     0,     0,    74,     0,
     2057       0,   351,     0,     0,     0,     0,     0,     0,    77,     0,
     2058       0,   353,     0,     0,     0,     0,   689,     0,     0,     0,
     2059       0,   354,   354,   689,   689,   689,     0,   346,     0,     0,
     2060       0,     0,   410,     0,   348,   348,     0,   354,     0,     0,
     2061       0,     0,     0,     0,     0,     0,   353,  1166,     0,    74,
     2062       0,     0,     0,     0,     0,   354,    74,   224,   166,     0,
     2063     171,     0,     0,   177,   178,   179,    79,   181,     0,     0,
     2064       0,  1219,     0,     0,     0,     0,     0,     0,    57,   213,
     2065     117,   232,     0,     0,     0,     0,   689,     0,     0,   353,
     2066       0,     0,    79,   247,   248,   354,     0,     0,   212,   353,
     2067       0,     0,     0,     0,     0,   222,     0,     0,    74,     0,
     2068     353,     0,     0,     0,     0,     0,     0,     0,     0,   346,
     2069    1293,     0,     0,    86,     0,     0,     0,     0,     0,     0,
     2070     354,     0,     0,     0,     0,     0,     0,   361,     0,     0,
     2071       0,     0,    86,     0,     0,     0,     0,     0,     0,     0,
     2072      86,     0,     0,     0,     0,   348,     0,   694,     0,     0,
     2073       0,     0,     0,     0,   694,   694,   694,     0,   361,     0,
     2074      77,     0,     0,   354,     0,     0,     0,     0,     0,     0,
     2075     117,     0,   346,   354,     0,     0,   361,     0,    86,   223,
     2076       0,     0,   353,     0,   354,   212,     0,     0,     0,   353,
     2077       0,     0,     0,  1166,     0,     0,     0,     0,     0,     0,
     2078    1166,     0,   994,     0,     0,     8,     9,    10,    11,    12,
     2079       0,     0,     0,     0,     0,   346,   346,   694,     0,   361,
    21022080       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2103      353,     0,   353,     0,     0,     0,     0,     0,     0,     0,
    2104        0,     0,     0,     0,     8,     9,    10,    11,    12,     0,
    2105      356,   356,   356,     0,     0,     0,  1189,     0,     0,     0,
    2106      225,     0,   353,  1531,     0,     0,   126,   126,   356,     0,
    2107      353,   353,   353,    31,     0,     0,     0,     0,     0,     0,
    2108        0,   353,   353,     0,     0,     0,   356,     0,     0,     0,
    2109        0,     0,     0,     0,     0,    74,     0,    79,     0,   577,
    2110      577,    34,     0,     0,  1091,     0,    37,     0,   183,   184,
    2111       40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
    2112        0,   355,   355,    79,   355,   355,   356,    86,     0,     0,
    2113        0,     0,     0,     0,   353,     0,     0,     0,     0,     0,
    2114        0,     0,   363,   906,    77,   411,     0,    86,     0,     0,
    2115        0,    45,    46,     0,     0,    86,     0,     0,     0,     0,
    2116        0,   356,     0,     0,     0,     0,     0,     0,     0,     0,
    2117        0,     0,     0,   363,     0,     0,     0,     0,     0,   355,
    2118      355,     0,     0,     0,     0,     0,   884,     0,     0,     0,
    2119      887,   363,     0,    86,     0,     0,     0,     0,     0,     0,
    2120        0,   353,     0,     0,     0,   356,     0,     0,     0,     0,
    2121        0,     0,     0,     0,     0,   356,     0,   356,     0,     0,
    2122        0,     0,   224,   126,     0,   356,     0,     0,   126,   356,
    2123        0,     0,     0,     0,     0,   363,   167,     0,   172,     0,
    2124        0,   178,   179,   180,     0,   182,     0,     0,    74,     0,
    2125      355,     0,     0,     0,     0,    74,     0,     0,     0,   233,
    2126        0,     0,     0,     0,     0,  1219,     0,     0,     0,     0,
    2127        0,   248,   249,     0,     8,     9,    10,    11,    12,     0,
     2081       0,   346,   281,   282,    31,   283,     0,     0,     0,     0,
     2082       0,     0,     0,     0,    79,     0,     0,     0,     0,     0,
     2083       0,   213,  1166,     0,     0,     0,     0,     0,     0,  1514,
     2084       0,   284,    34,     0,     0,     0,   354,   285,     0,     0,
     2085       0,   286,     0,   354,   287,   288,   289,   290,   291,   292,
     2086      41,    42,   361,   293,   294,     0,     0,     0,     0,   346,
     2087       0,     0,     0,     0,     0,     0,     0,     0,     0,   353,
     2088     353,     0,   353,   353,     0,     0,   295,     0,   376,     0,
     2089       0,     0,     0,     0,   342,    46,   297,   298,   299,   300,
     2090      77,     0,     0,     0,     0,   361,   361,     0,     0,     0,
     2091       0,     0,     0,     0,     0,     0,     0,   585,     0,   592,
     2092       0,   361,     0,     8,     9,    10,    11,    12,   213,     0,
     2093     616,   617,     0,     0,   353,   353,     0,     0,     0,   361,
     2094       0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
     2095      86,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2096       0,     0,     0,   354,   354,     0,   354,   354,     0,     0,
     2097       0,     0,     0,     0,    31,     0,    86,     0,     0,   361,
     2098      34,     0,     0,     0,    79,    37,     0,   182,   183,    40,
     2099       0,     0,     0,     0,     0,     0,     0,     0,    41,    42,
     2100       0,     0,    34,     0,     0,   353,     0,    37,     0,   182,
     2101     183,    40,     0,     0,   361,     0,     0,     0,   354,   354,
     2102      41,    42,     0,     0,   890,     0,   408,     0,    57,     0,
     2103       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
     2104       0,     0,     0,     0,     0,     0,  1489,   222,   408,     0,
     2105     346,     0,     0,     0,    45,    46,     0,   361,   281,   282,
     2106       0,   283,     0,     0,     0,     0,     0,   361,    77,     0,
     2107       0,     0,     0,   224,     0,     0,     0,     0,   361,     0,
     2108     353,     0,   353,     0,     0,     0,     0,   284,     0,   354,
     2109       0,     0,     0,   285,     0,     0,    57,   286,     0,     0,
     2110     287,   288,   289,   290,   291,   292,    41,    42,     0,   293,
     2111     294,     0,     0,     0,     0,     0,     0,   353,     0,     0,
     2112       0,     0,     0,     0,   353,   353,   353,     0,     0,     0,
     2113       0,   223,   295,     0,   376,   353,   353,     0,    86,     0,
     2114      45,    46,   297,   298,   299,   300,     0,     0,    77,     0,
     2115       0,     0,    79,   777,     0,     0,     0,     0,     0,     0,
     2116     361,     0,     0,     0,   354,     0,   354,   361,     0,     0,
     2117     346,   346,     0,     0,     0,     0,     0,     0,     0,     0,
     2118       0,     0,     0,     0,     0,     0,     0,   353,    57,     0,
     2119       0,     0,     0,     0,   210,     0,     0,     0,     0,     0,
     2120       0,   354,     0,   230,     0,   234,     0,   236,   354,   354,
     2121     354,     0,     0,     0,   245,     0,     0,     0,     0,   354,
     2122     354,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2123       0,     0,    79,     0,     0,     0,     0,     0,     0,     0,
     2124       0,     0,     0,     0,     0,   210,     0,   234,   236,   245,
     2125       0,     0,     0,     0,     0,     0,   353,     0,     0,     0,
     2126       0,     0,     0,     0,     0,   910,     0,   911,     0,     0,
     2127       0,   354,     0,     0,   914,   915,     0,   361,   361,   920,
     2128     361,   361,     0,     0,     0,     0,     0,   210,     0,     0,
     2129       0,     0,   926,     0,     0,     0,     0,   930,    86,     0,
     2130       0,     0,     0,     0,    77,     0,     0,     0,     0,     0,
     2131       0,    77,     0,     0,     0,     0,     0,     0,     0,     0,
     2132       0,     0,     0,     0,   592,     0,     0,     0,     0,     0,
     2133       0,     0,   361,   361,    57,    57,     0,     0,     0,     0,
     2134     354,     0,     0,     0,     0,     0,     0,     0,   210,     0,
     2135     234,   236,   245,     0,     0,     0,    57,     0,     0,     0,
     2136       0,     0,     0,    77,     0,     0,     0,     0,     0,     0,
     2137       0,     0,     0,     0,    57,     0,     0,     0,     0,     0,
     2138       0,     0,     0,     0,     0,     0,   210,     0,    79,     0,
     2139       0,   210,     0,     0,     0,    79,     0,     0,     0,     0,
     2140       0,     0,     0,   361,     0,     0,   493,     0,     0,     0,
     2141       0,     0,     0,     0,     0,     0,     0,  1004,     0,  1005,
     2142    1006,  1007,     0,   346,   346,     0,     0,     0,     0,     0,
     2143       0,    57,   164,     0,     0,     0,    57,     0,  1051,     0,
     2144       0,     0,     0,     0,     0,   224,     0,    79,     0,   217,
     2145       0,     0,  1057,     0,     0,     0,     0,   210,     0,     0,
     2146       0,     0,     0,     0,     0,     0,    86,     0,     0,    57,
     2147       0,     0,     0,     0,     0,     0,   210,     0,   361,     0,
     2148     361,   234,   236,     0,     0,     0,     0,     0,     0,   245,
     2149       0,  1077,     0,     0,     0,     0,   164,     0,     0,     0,
     2150     271,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2151       0,     0,     0,     0,     0,   361,     0,     0,     0,     0,
     2152       0,     0,   361,   361,   361,     0,     0,     0,     0,   164,
     2153       0,   210,     0,   361,   361,  1107,     0,     0,     0,   367,
     2154    1117,     0,   372,     0,   346,  1120,    86,     0,     0,   210,
     2155    1124,     0,     0,     0,   210,  1126,   210,  1127,  1128,     0,
     2156       0,  1131,     0,     0,     0,     0,     0,     0,     0,    57,
     2157    1143,     0,   210,     0,     0,   210,   210,     0,     0,     0,
     2158       0,     0,     0,   210,     0,   361,  1157,  1158,     0,     0,
     2159       0,   164,    57,     0,     0,     0,     0,   210,     0,    57,
     2160       0,     0,     0,   217,   210,     0,     0,     0,     0,     0,
     2161       0,     0,  1187,     0,     0,  1189,     0,     0,     0,     0,
     2162       0,   164,     0,     0,     0,   124,   127,   128,     8,     9,
     2163      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2164      20,    21,    22,    23,    24,    25,   372,     0,     0,     0,
     2165       0,    57,     0,   164,   361,     0,     0,    31,  1203,     0,
     2166       0,     0,     0,     0,  1207,  1208,     0,     0,     0,     0,
     2167       0,     0,     0,     0,     0,     0,     0,     0,   520,     0,
     2168       0,     0,     0,  1224,     0,    34,     0,     0,  1231,     0,
     2169       0,   164,     0,  1235,     0,     0,     0,   253,     0,   254,
     2170       0,     0,    86,     0,  1242,     0,     0,     0,     0,    86,
     2171       0,     0,     0,     0,     0,   210,     0,  1249,     0,  1251,
     2172    1252,  1253,  1254,     0,     0,     0,   590,     0,     0,     0,
     2173       0,   614,     0,     0,  1261,     0,  1157,     0,     0,     0,
     2174     171,     0,     0,   210,     0,     0,     0,     0,   210,     0,
    21282175       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2129       79,     0,     0,   223,     0,     0,     0,     0,     0,     0,
    2130      363,     0,     0,    31,     0,     0,    74,     0,     0,     0,
    2131        0,     0,     0,     0,     0,    77,     0,     0,     0,     0,
    2132      356,     0,   577,     0,     0,     0,     0,   355,     0,   355,
    2133        0,    34,     0,     0,     0,     0,    37,     0,   183,   184,
    2134       40,     0,     0,     0,   363,   363,   363,    41,    42,     0,
    2135        0,     0,     0,     0,     0,     0,     0,     0,     0,   355,
    2136        0,     0,   363,     0,     0,     0,     0,   355,   355,   355,
    2137        0,     0,     0,  1506,     0,   411,     0,     0,   355,   355,
    2138      363,    45,    46,     0,     0,   507,     0,   509,   512,   126,
    2139        0,    86,    77,     0,  1305,   515,   516,     0,     0,     0,
     2176       0,    86,     0,     0,     0,     0,     0,     0,  1289,  1290,
     2177       0,     0,     0,     0,     0,     0,     0,     0,     0,   393,
     2178       0,     0,     0,     0,     0,     0,     0,     0,     0,   412,
     2179     413,     0,     0,     0,   417,     0,   419,   420,     0,     0,
     2180     156,     0,     0,     0,     0,     0,   164,   164,     0,     0,
     2181       0,     0,   367,     0,     0,     0,     0,   210,     0,     0,
     2182       0,     0,  1324,  1325,     0,     0,     0,     0,     0,     0,
     2183       0,   210,  1335,   520,     0,     0,     0,     0,     0,     0,
     2184       0,     0,     0,     0,     0,     0,     0,   250,     0,     0,
     2185       0,     0,   493,     0,     0,     0,     0,   255,     0,     0,
     2186       0,   706,     0,     0,     0,     0,     0,     0,     0,     0,
     2187       0,     0,     0,   164,     0,     0,     0,     0,     0,     0,
     2188       0,     0,     0,     0,     0,   520,     0,   520,     0,     0,
     2189     520,     0,   164,   520,  1370,     0,  1371,  1372,  1373,     0,
     2190       0,     0,     0,     0,   367,     0,     0,     0,  1377,     0,
     2191       0,   210,     0,     0,     0,     0,  1388,     0,     0,     0,
     2192       0,     0,   210,     0,     0,     0,   383,     0,     0,     0,
     2193       0,     0,     0,     0,     0,     0,     0,     0,     0,   210,
     2194       0,  1409,  1410,     0,     0,     0,     0,     0,     0,   415,
     2195       0,     0,     0,     0,     0,     0,   164,     0,     0,     0,
     2196       0,     0,     0,   429,     0,     0,     0,   367,     0,     0,
     2197     797,     0,   434,     0,     0,     0,     0,     0,     0,     0,
     2198       0,     0,   442,     0,     0,     0,  1449,  1450,     0,     0,
     2199       0,     0,     0,     0,     0,     0,   590,     0,     0,  1455,
     2200       0,   590,     0,     0,     0,     0,  1455,   460,     0,     0,
     2201     367,   367,   470,     0,     0,     0,     0,     0,     0,     0,
     2202       0,     0,     0,     0,     0,   478,   367,     0,     0,     0,
     2203       0,   488,     0,   492,     0,     0,     0,     0,     0,  1488,
     2204       0,     0,     0,  1494,     0,     0,     0,     0,     0,     0,
     2205     210,     0,   521,     0,     0,     0,     0,     0,   520,     0,
    21402206       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2141      509,   509,     0,     0,     0,     0,     0,    86,     0,     0,
    2142      363,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2143        0,   355,     0,   356,   356,     0,   356,   356,     0,     0,
    2144      413,     0,     0,     0,     0,     0,     0,     0,   509,     0,
    2145        0,     0,     0,     0,     0,   363,    79,     8,     9,    10,
     2207       0,  1516,     0,  1517,     0,     0,     0,     0,     0,     0,
     2208     210,     0,     0,     0,   367,     0,   919,     0,     0,     0,
     2209       0,     0,     0,   580,     0,     0,     0,   584,     0,     0,
     2210       0,  1532,  1533,     0,     0,     0,     0,     0,     0,  1536,
     2211    1537,     0,   210,     0,     0,     0,     0,     0,     0,   706,
     2212       0,     0,     0,   210,     0,   627,     0,     0,     0,   628,
     2213     629,     0,   630,     0,     0,     0,     0,     0,     0,   641,
     2214     642,     0,   643,   644,     0,   645,     0,   646,     0,     0,
     2215       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2216       0,     0,     0,     0,   580,     0,     0,     0,   785,   786,
     2217       0,     0,   661,     0,     0,     0,     0,   614,     0,     0,
     2218       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2219       0,     0,   210,     0,     0,   816,   672,     0,   819,   820,
     2220       0,   823,     0,   825,   826,     0,   210,     0,   827,   828,
     2221       0,   126,   126,   126,   503,     0,   505,   508,     0,     0,
     2222       0,     0,   698,     0,     0,     0,   511,   512,   701,     0,
     2223       0,     0,     0,   460,     0,     0,     0,     0,     0,     0,
     2224       0,   505,   505,     0,     0,     0,     0,     0,     0,     0,
     2225       0,     0,     0,     0,     0,     0,     0,     0,     0,   339,
     2226     362,     0,     0,     0,     0,   367,     0,     0,     0,   736,
     2227       0,     0,   706,     0,     0,     0,   505,     0,     0,     0,
     2228       0,     0,     0,   126,   754,   126,     0,   520,     0,     0,
     2229       0,     0,   411,     0,   210,     0,     0,     0,     0,   411,
     2230       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2231     274,   505,   164,     0,     0,     0,     0,     0,     0,     0,
     2232       0,   779,     0,     0,     0,     0,     0,     0,     0,     0,
     2233     789,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2234       0,     0,     0,     0,   954,   955,     0,     0,     0,     0,
     2235     810,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2236       0,     0,     0,     0,   590,   126,     0,     0,     0,     0,
     2237       0,   411,     0,   126,     0,   126,   126,     0,     0,     0,
     2238     126,     0,   126,   126,     0,   367,   367,     0,   849,     0,
     2239       0,   210,     0,     0,   463,     2,   205,     4,     5,     6,
     2240       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2241      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2242       0,    26,    27,    28,   882,     0,     0,     0,   411,     0,
     2243      31,     0,   889,     0,     0,     0,   411,   576,     0,   411,
     2244     579,     0,   520,     0,     0,     0,     0,   362,     0,     0,
     2245       0,   606,   126,     0,     0,     0,     0,     0,    34,     0,
     2246      35,     0,    36,   250,     0,    38,    39,     0,     0,     0,
     2247     624,     0,     0,     0,   927,   928,     0,     0,     0,   505,
     2248     505,   505,   505,   505,   505,   505,   505,   505,   505,   505,
     2249     505,   505,   505,   505,   505,   505,   505,     0,     0,   411,
     2250    1069,     0,     0,   411,     0,     0,   962,    -3,   706,     0,
     2251       0,   966,     8,     9,    10,    11,    12,    13,    14,    15,
     2252      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2253    -298,     0,     0,   362,     0,     0,     0,     0,     0,     0,
     2254       0,    31,     0,   322,     0,     0,     0,     0,     0,   217,
     2255       0,     0,     0,   344,     0,     0,     0,     0,     0,     0,
     2256       0,     0,     0,     0,   379,   379,     0,     0,     0,    34,
     2257       0,   999,     0,     0,     0,     0,     0,     0,  1000,   411,
     2258    -298,     0,   362,     0,     0,   706,     0,     0,     0,     0,
     2259       0,  1002,     0,  1003,     0,     0,     0,     0,     0,     0,
     2260       0,     0,     0,     0,     0,     0,  1013,     0,     0,     0,
     2261       0,     0,  1017,     0,     0,     0,     0,     0,     0,   505,
     2262       0,   411,     0,     0,  1054,   362,     0,  1055,     0,     0,
     2263       0,     0,     0,     0,     0,   322,     0,     0,   367,   367,
     2264       0,     0,   210,     0,     0,     0,   217,     0,     0,     0,
     2265       0,     0,     0,     0,     0,  1195,     0,     0,     0,   474,
     2266       0,     0,     0,     0,     0,     0,     0,     0,     0,   411,
     2267     411,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2268     505,     0,     0,     0,     0,     0,     0,   792,   362,     0,
     2269       0,     0,     0,     0,     0,     0,     0,   606,     0,   606,
     2270     606,     0,     0,     0,     0,     0,   606,     0,     0,     0,
     2271     505,     0,     0,     0,     0,     0,   829,   362,     0,     0,
     2272       0,     0,   362,     0,     0,     0,     0,     0,     0,     0,
     2273       0,   362,   362,     0,     0,  1125,     0,     0,     0,     0,
     2274       0,     0,     0,     0,     0,     0,     0,   362,     0,     0,
     2275       0,     0,   411,   870,   126,   126,   411,   873,     0,   367,
     2276       0,     0,     0,   875,     0,     0,     0,     0,     0,     0,
     2277       0,     0,     0,     0,   379,     0,     0,     0,     0,     0,
     2278       0,   126,   411,  1284,   126,   126,     0,   126,     0,   126,
     2279     126,     0,     0,     0,   126,   126,  1188,     0,     0,     0,
     2280       0,     0,     0,     0,     0,   362,   606,     0,     0,     0,
     2281       0,     0,     0,     0,     0,     0,   520,     0,   520,     0,
     2282       0,     0,     0,     0,   505,     0,     0,     0,     0,     0,
     2283    1200,     0,     0,     0,     0,  1202,     0,     0,     0,     0,
     2284     362,     0,     0,  1206,   411,   411,     0,     0,     0,     0,
     2285       0,     0,     0,   520,     0,   520,     0,     0,     0,     0,
     2286       0,     0,     0,     0,     0,     0,     0,   700,     0,     0,
     2287     505,     0,     0,     0,     0,     0,     0,  1237,     0,     0,
     2288       0,     0,   164,     0,     0,     0,     0,   411,  1244,     0,
     2289       0,  1245,     0,  1246,     0,     0,     0,     0,     0,     0,
     2290       0,     0,   505,   606,     0,   606,   733,     0,  1255,  1256,
     2291       0,     0,     0,     0,   505,   606,     0,     0,   749,     0,
     2292       0,     0,     0,     0,   733,     0,     0,   733,  1268,     0,
     2293     126,   126,  1141,     0,     0,     8,     9,    10,    11,    12,
     2294     758,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2295       0,     0,     0,   505,     0,     0,     0,     0,     0,     0,
     2296       0,     0,   281,   282,    31,   283,     0,     0,     0,     0,
     2297     787,     0,     0,     0,  1307,     0,     0,   344,     0,     0,
     2298       0,   749,  1311,     0,     0,     0,   362,     0,     0,     0,
     2299       0,   284,    34,   362,   411,     0,   411,   285,     0,     0,
     2300     411,   286,     0,     0,   287,   288,   289,   290,   291,   292,
     2301      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
     2302       0,   606,   606,     0,     0,     0,     0,   848,     0,   505,
     2303       0,     0,     0,     0,     0,   379,   295,     0,   376,     0,
     2304       0,     0,     0,     0,  1142,    46,   297,   298,   299,   300,
     2305       0,     0,  1358,     0,  1359,     0,   411,     0,     0,     0,
     2306       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2307    1368,     0,  1369,     0,     0,   411,  1123,     0,     0,     0,
     2308       0,   126,     0,     0,     0,   362,   126,  1376,   505,   505,
     2309       0,   411,  1134,     0,   606,   606,  1139,     0,     0,     0,
     2310       0,     0,  1394,  1396,     0,     0,   362,   362,     0,     0,
     2311       0,   924,     0,  1401,     0,     0,  1206,     0,     0,     0,
     2312       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2313       0,     0,     0,   749,     0,   948,     0,     0,  1424,     0,
     2314       0,     0,     0,     0,     0,   958,     0,  1431,     0,     0,
     2315    1433,   965,  1435,  1437,  1439,     0,     0,     0,     0,     0,
     2316       0,     0,     0,     0,     0,     0,   411,     0,   411,     0,
     2317       0,     0,     0,   411,     0,     0,     0,     0,     0,     0,
     2318       0,     0,   606,     0,     0,     0,     0,     0,     0,     0,
     2319       0,   982,   983,  1470,     0,  1472,     0,  1206,     0,     0,
     2320       0,     0,     0,     0,     0,   411,  1220,   344,     0,     0,
     2321       0,     0,     0,  1483,     0,     0,     0,     0,     0,     0,
     2322       0,     0,     0,     0,     0,     0,     0,     0,     0,   362,
     2323       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2324       0,   126,     0,     0,     0,     0,  1011,     0,     0,     0,
     2325     379,     0,     0,     0,     0,     8,     9,    10,    11,    12,
     2326      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2327      23,    24,    25,     0,     0,    26,    27,    28,     0,   344,
     2328       0,     0,     0,     0,    31,     0,   344,     0,     0,     0,
     2329       0,     0,     0,     0,     0,     0,   505,     0,     0,     0,
     2330       0,     0,     0,     0,     0,     0,   362,     0,     0,     0,
     2331       0,     0,    34,   505,     0,     0,     0,     0,     0,   206,
     2332      39,     0,     0,     0,     0,     0,   322,   204,     2,   205,
     2333       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2334      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2335      24,    25,     0,   379,    26,    27,    28,     0,   958,   362,
     2336     362,   733,     0,    31,    45,    46,     0,     0,     0,   126,
     2337       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2338       0,  1129,     0,     0,     0,   505,   505,     0,     0,     0,
     2339       0,    34,  1144,    35,     0,    36,    37,     0,   206,    39,
     2340      40,     0,     0,     0,     0,     0,     0,     0,     0,    41,
     2341      42,     0,   379,     0,  1161,     0,     0,     0,     0,     0,
     2342       0,     0,     0,     0,     0,     0,     0,     0,     0,   958,
     2343     958,     0,     0,     0,     0,    43,     0,   207,     0,     0,
     2344       0,     0,     0,    45,    46,     0,     0,     0,     0,  1192,
     2345       0,     0,     0,     0,     0,     1,     2,   205,     4,     5,
     2346       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2347      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2348     362,     0,    26,    27,    28,    29,     0,     0,    30,     0,
     2349       0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
     2350       0,     0,     0,   958,     0,     0,     0,     0,     0,     0,
     2351       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2352       0,    35,   848,    36,     0,     0,    38,    39,     0,     0,
     2353       0,     0,     0,     0,     0,     0,     0,  1247,  1248,     0,
     2354       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
     2355      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2356      22,    23,    24,    25,     0,    44,    26,    27,    28,   411,
     2357       0,    45,    46,     0,     0,    31,     0,     0,     0,     0,
     2358       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2359       0,     0,     0,   411,   411,     0,     0,     0,     0,     0,
     2360       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2361      38,    39,     0,     0,     0,     0,     0,     0,   411,     0,
     2362       0,     0,     1,     2,   205,     4,     5,     6,     7,     8,
     2363       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2364      19,    20,    21,    22,    23,    24,    25,     0,  -418,    26,
     2365      27,    28,    29,     0,     0,    30,   281,   282,    31,  1020,
     2366    1021,     0,  1022,     0,     0,  1023,  1024,  1025,  1026,  1027,
     2367    1028,  1029,  1030,     0,     0,     0,  1031,     0,     0,  1352,
     2368    1032,  1033,   733,    33,     0,   284,    34,     0,    35,     0,
     2369      36,  1034,     0,    38,    39,   286,     0,     0,   287,   288,
     2370     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2371       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2372       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2373     295,     0,   296,     0,     0,   170,     0,     0,    45,    46,
     2374     297,   298,   299,   300,     0,     0,     0,     0,  1035,     0,
     2375       0,     0,     0,  -134,     1,     2,   205,     4,     5,     6,
     2376       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2377      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2378       0,    26,    27,    28,    29,     0,     0,    30,   281,   282,
     2379      31,   283,     8,     9,    10,    11,    12,    13,    14,    15,
     2380      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2381       0,     0,    26,    27,    28,     0,     0,   284,    34,     0,
     2382      35,    31,    36,   285,     0,    38,    39,   286,     0,     0,
     2383     287,   288,   289,   290,   291,   292,    41,    42,     0,   293,
     2384     294,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2385       0,     0,     0,     0,   110,     0,    38,    39,     0,     0,
     2386       0,     0,   295,     0,   296,     0,     0,    41,    42,     0,
     2387      45,    46,   297,   298,   299,   300,     0,     0,     0,     0,
     2388       0,     0,     0,     0,     0,  -134,     0,     0,     0,     0,
     2389       0,     0,     0,     0,     0,     0,   322,     1,     2,   205,
     2390       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2391      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2392      24,    25,     0,     0,    26,    27,    28,    29,     0,     0,
     2393      30,   281,   282,    31,   283,     8,     9,    10,    11,    12,
     2394      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2395      23,    24,    25,  -299,     0,     0,     0,     0,     0,     0,
     2396     284,    34,     0,    35,    31,    36,   285,     0,    38,    39,
     2397     286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
     2398      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2399       0,     0,    34,     0,     0,     0,     0,     0,     0,     0,
     2400       0,     0,     0,  -299,     0,   295,     0,   296,     0,     0,
     2401       0,     0,     0,    45,    46,   297,   298,   299,   300,     2,
     2402     205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2403      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2404      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2405       0,     0,   281,   282,    31,   283,     8,     9,    10,    11,
     2406      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2407      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2408       0,   284,    34,     0,    35,    31,    36,   285,     0,    38,
     2409      39,   286,     0,     0,   287,   288,   289,   290,   291,   292,
     2410      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
     2411       0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
     2412      38,    39,     0,     0,     0,     0,   295,     0,   341,     0,
     2413       0,     0,     0,   748,   342,    46,   297,   298,   299,   300,
     2414       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
     2415      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2416      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2417       0,     0,     0,   281,   282,    31,   283,     8,     9,    10,
    21462418      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2147       21,    22,    23,    24,    25,  -293,     0,    26,    27,    28,
    2148        0,     0,     0,     0,   509,     0,    31,     0,     0,     0,
    2149        0,   356,   356,     0,     0,     0,     0,     0,   355,   363,
    2150        0,     0,     0,     0,     0,     0,     0,     0,     0,   363,
    2151        0,   363,     0,     0,    34,     0,   225,  1143,   126,   363,
    2152        0,    38,    39,   363,     0,  -293,     0,   592,     0,   600,
    2153        0,     0,     0,     0,  1155,     0,     0,     0,     0,     0,
    2154      624,   625,     0,     0,     0,    77,     0,     0,     0,     0,
    2155      282,   283,    77,   284,     0,     0,   635,     0,   338,     0,
    2156        0,     0,   356,     0,    45,    46,     0,     0,     0,     0,
    2157        0,     0,     0,     0,     0,     0,     0,     0,     0,   285,
    2158        0,     0,     0,     0,    86,   286,     0,     0,     0,   287,
    2159        0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
    2160      293,     0,     0,    77,     0,   224,     0,     0,     0,     0,
    2161        0,     0,   413,     0,   363,     0,     0,     0,     0,     0,
    2162        0,     0,   294,     0,   379,     0,     0,    79,     0,     0,
    2163       45,    46,   296,   297,   298,   299,     0,     0,     0,   356,
    2164        0,   356,  1013,   787,     0,     8,     9,    10,    11,    12,
    2165        0,     0,  1243,   509,   509,   509,   509,   509,   509,   509,
    2166      509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
    2167      509,   356,   282,   283,    31,   284,     0,     0,     0,   356,
    2168      356,   356,     0,     0,     0,     0,     0,     0,     0,     0,
    2169      356,   356,     0,     0,     0,     0,     0,     0,     0,     0,
    2170        0,   285,    34,     0,    79,     0,     0,   286,     0,     0,
    2171        0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
    2172        0,   292,   293,     0,     0,     0,     0,   363,   363,     0,
    2173      363,   363,     0,     0,     0,     0,     0,     0,     0,     0,
    2174        0,     0,     0,   356,   294,     0,   379,     0,     0,     0,
    2175       86,     0,   344,    46,   296,   297,   298,   299,     0,     0,
    2176        1,     2,   206,     4,     5,     6,     7,     8,     9,    10,
     2419      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2420       0,     0,   284,    34,     0,    35,    31,    36,   285,     0,
     2421      38,    39,   286,     0,     0,   287,   288,   289,   290,   291,
     2422     292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
     2423       0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
     2424       0,   206,    39,     0,     0,     0,     0,   295,     0,   341,
     2425       0,     0,     0,     0,   748,    45,    46,   297,   298,   299,
     2426     300,     2,   205,     4,     5,     6,     7,     8,     9,    10,
    21772427      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2178       21,    22,    23,    24,    25,   363,   363,    26,    27,    28,
    2179       29,     0,     0,    30,   282,   283,    31,   284,     0,   509,
     2428      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2429       0,     0,     0,     0,   281,   282,    31,   283,     0,     0,
    21802430       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2181      356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2182        0,     0,     0,   285,    34,     0,    35,     0,    36,   286,
    2183        0,    38,    39,   287,   165,     0,   288,   289,   290,   291,
    2184       41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
    2185        0,   218,     0,     0,     0,     0,   363,    79,     0,     0,
    2186      509,     0,     0,     0,    79,     0,   294,     0,  1056,     0,
    2187        0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
    2188        0,     0,     0,   926,     0,   927,     0,     0,     0,  -128,
    2189      509,     0,   930,   931,     0,     0,     0,   936,   165,   225,
    2190        0,     0,   272,     0,     0,     0,     0,     0,     0,   941,
    2191        0,     0,     0,     0,   945,    79,     0,     0,     0,     0,
    2192        0,    86,     0,     0,     0,     0,     0,     0,     0,     0,
    2193        0,   165,     0,   363,     0,   363,     0,     0,     0,     0,
    2194        0,   369,   979,     0,     0,   375,     0,     0,     0,     0,
    2195        0,     0,     0,     0,     0,     0,  1163,     0,     0,     8,
    2196        9,    10,    11,    12,     0,   363,     0,     0,     0,     0,
    2197        0,     0,     0,   363,   363,   363,     0,     0,     0,     0,
    2198        0,     0,     0,     0,   363,   363,   282,   283,    31,   284,
    2199        0,     0,     0,     0,   165,     0,     0,     0,    86,     0,
    2200        0,     0,     0,     0,     0,     0,   218,     0,     0,     0,
    2201      509,     0,     0,     0,     0,   285,    34,     0,     0,     0,
    2202        0,   286,     0,     0,   165,   287,     0,     0,   288,   289,
    2203      290,   291,    41,    42,     0,   292,   293,   363,     0,     0,
    2204        0,  1024,  1025,  1026,  1027,     0,  1029,     0,     0,   375,
    2205        0,     0,     0,     0,     0,   509,   165,     0,   294,     0,
    2206      379,  1073,     0,     0,     0,     0,  1164,    46,   296,   297,
    2207      298,   299,     0,     0,     0,  1079,     0,     0,     0,   524,
    22082431       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2209      509,     0,   165,     0,     0,     0,     0,     0,     0,   211,
    2210        0,     0,     0,   509,   363,     0,     0,     0,   231,     0,
    2211      235,     0,   237,     0,     0,  1099,     0,     0,     0,   246,
     2432       0,     0,     0,   284,    34,     0,    35,     0,    36,   285,
     2433       0,    38,    39,   286,     0,     0,   287,   288,   289,   290,
     2434     291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    22122435       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2213      598,     0,     0,     0,     0,   622,     0,     0,     0,     0,
    2214        0,     0,     0,     0,   509,     0,     0,     0,     0,     0,
    2215      211,    86,   235,   237,   246,     0,     0,     0,    86,     0,
    2216     1130,     0,     0,     0,     0,     0,  1137,     0,     0,     0,
    2217        0,  1141,     0,     0,     0,     0,  1145,     0,  1146,     0,
    2218        0,     0,  1148,     0,  1149,  1150,     0,     0,  1153,     0,
    2219        0,     0,     0,   211,     0,     0,     0,  1165,     0,     0,
    2220        0,     0,     0,     0,     0,     0,     0,     0,     0,    86,
    2221        0,   165,   165,     0,     0,  1180,  1181,     0,   369,     0,
    2222        0,   509,     0,     0,     0,     0,     0,     0,     0,     0,
    2223        0,     0,     0,     0,     0,     0,     0,     0,     0,   524,
    2224        0,     0,  1211,     0,     0,  1213,     0,     0,     0,     0,
    2225        0,     0,     0,     0,   211,     0,   235,   237,   246,     0,
    2226        0,     0,     0,     0,     0,     0,     0,   716,     0,     0,
    2227        0,     8,     9,    10,    11,    12,     0,     0,     0,   165,
    2228        0,   509,   509,     0,     0,     0,     0,     0,  1227,     0,
    2229        0,   524,   211,   524,  1231,  1232,   524,   211,   165,   524,
    2230       31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2231        0,   369,   497,     0,  1248,     0,     0,  1252,     0,     0,
    2232        0,  1254,     0,     0,     0,     0,     0,     0,    34,     0,
    2233        0,     0,     0,    37,  1262,   183,   184,    40,     0,     0,
    2234        0,     0,     0,     0,    41,    42,     0,  1269,     0,  1271,
    2235     1272,  1273,  1274,     0,     0,     0,     0,     0,     0,     0,
    2236        0,   211,     0,     0,   165,  1281,     0,  1282,     0,     0,
    2237      185,   172,     0,     0,     0,     0,   369,     0,    45,    46,
    2238      811,     0,     0,   211,     0,     0,     0,     0,   235,   237,
    2239        0,     0,     0,     0,     0,     0,   246,     0,     0,     0,
    2240     1310,  1311,     0,     0,     0,     0,   598,     0,     0,     0,
    2241        0,   598,     0,     0,     0,     0,     0,     0,     0,     0,
    2242      369,   369,   369,     0,     0,     0,     0,     0,     0,     0,
    2243        0,     0,     0,     0,     0,     0,     0,     0,   369,   211,
     2436       0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
     2437     341,     0,     0,     0,     0,     0,   342,    46,   297,   298,
     2438     299,   300,     2,   205,     4,     5,     6,     7,     8,     9,
     2439      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2440      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2441      28,     0,     0,     0,     0,   281,   282,    31,   283,     0,
    22442442       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2245     1343,  1344,     0,     0,     0,     0,     0,   211,     0,     0,
    2246     1354,     0,   211,     0,   211,     0,     0,     0,     0,     0,
    2247      524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2248        0,   211,     0,     0,   211,   211,   509,     0,     0,     0,
    2249        0,     0,   211,     0,     0,     0,   369,     0,   935,     0,
    2250        0,     0,   509,     0,     0,     0,   211,     0,     0,     0,
    2251        0,     0,     0,   211,     0,     0,     0,     0,     0,     0,
    2252        0,  1389,     0,  1390,  1391,  1392,     0,     0,     0,     0,
    2253        0,   716,     0,     0,     0,  1396,   156,     0,     0,     0,
    2254        0,     0,     0,     0,  1407,     8,     9,    10,    11,    12,
    2255       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2256       23,    24,    25,     0,     0,    26,    27,    28,     0,  1428,
    2257        0,     0,   509,   509,    31,     0,     0,     8,     9,    10,
    2258       11,    12,     0,   251,     0,     0,     0,   369,     0,     0,
    2259        0,   622,     0,   256,     0,   369,     0,     0,     0,     0,
    2260        0,     0,    34,     0,     0,     0,    31,    37,     0,    38,
    2261       39,    40,  1466,  1467,     0,     0,     0,     0,    41,    42,
    2262        0,     0,     0,     0,     0,  1472,     0,     0,   211,     0,
    2263        0,     0,  1472,     0,    34,     0,     0,     0,     0,    37,
    2264        0,   183,   184,    40,    43,     0,   157,     0,     0,   156,
    2265       41,    42,    45,    46,     0,     0,   211,     0,     0,     0,
    2266        0,   211,     0,   386,  1505,     0,     0,     0,  1511,     0,
    2267        0,     0,     0,     0,     0,     0,   265,     0,     0,     0,
    2268        0,     0,     0,     0,    45,    46,   418,     0,     0,     0,
    2269      716,     0,     0,     0,     0,     0,  1533,     0,  1534,     0,
    2270      433,     0,     0,     0,     0,   524,     0,     0,     0,   438,
    2271        0,     0,     0,     0,     0,     0,     0,     0,     0,   446,
    2272        0,     0,     0,     0,     0,     0,  1549,  1550,     0,   165,
    2273        0,     0,   211,     0,  1553,  1554,     0,     0,     0,     0,
    2274        0,     0,     0,     0,   464,     0,   211,     0,     0,   474,
    22752443       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2276        0,     0,   482,     0,     0,     0,   497,     0,   492,     0,
    2277      496,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2278        0,     0,     0,     0,     0,   598,     0,   526,     8,     9,
     2444       0,     0,     0,     0,   284,    34,     0,    35,     0,    36,
     2445     285,     0,   206,    39,   286,     0,     0,   287,   288,   289,
     2446     290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
     2447       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2448       0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
     2449       0,   979,     0,     0,     0,     0,     0,   980,    46,   297,
     2450     298,   299,   300,     2,   205,     4,     5,     6,     7,     8,
     2451       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2452      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2453      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2454       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2455       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2456       0,     0,     0,     0,     0,   284,    34,     0,    35,     0,
     2457      36,   285,     0,   206,    39,   286,     0,     0,   287,   288,
     2458     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2459       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2460       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2461     295,     0,   376,     0,     0,     0,     0,     0,    45,    46,
     2462     297,   298,   299,   300,  -521,     0,     0,     1,     2,     3,
     2463       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2464      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2465      24,    25,     0,     0,    26,    27,    28,    29,     0,     0,
     2466      30,     0,     0,    31,    32,     0,     0,     0,     0,     0,
     2467       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2468       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2469       0,    34,     0,    35,     0,    36,    37,     0,    38,    39,
     2470      40,     0,     0,     0,     0,     0,     0,     0,     0,    41,
     2471      42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2472       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2473       0,     0,     0,     0,     0,    43,     0,    44,     0,     0,
     2474       0,     0,     0,    45,    46,     1,     2,     3,     4,     5,
     2475       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2476      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2477       0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
     2478       0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
     2479       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2480       0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
     2481       0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
     2482       0,     0,     0,     0,     0,     0,     0,    41,    42,     0,
     2483       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2484       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2485       0,     0,     0,    43,     0,    44,     0,     0,     0,  -525,
     2486       0,    45,    46,     1,     2,     3,     4,     5,     6,     7,
     2487       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2488      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2489      26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
     2490      32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2491       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2492       0,     0,     0,     0,    33,     0,     0,    34,     0,    35,
     2493       0,    36,    37,     0,    38,    39,    40,     0,     0,     0,
     2494       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
     2495       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2496       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2497       0,    43,     0,    44,     0,     0,     0,     0,     0,    45,
     2498      46,     1,     2,   205,     4,     5,     6,     7,     8,     9,
    22792499      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2280       20,    21,    22,    23,    24,    25,   369,   369,    26,    27,
    2281       28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
    2282        0,     0,     0,     0,     0,     0,     0,   211,     0,     0,
    2283      586,     0,     0,     0,     0,   591,     0,     0,     0,   211,
    2284        0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2285       37,     0,    38,    39,    40,     0,     0,     0,   211,     0,
    2286        0,    41,    42,     0,   636,     0,   524,     0,   637,   638,
    2287        0,   640,     0,     0,     0,     0,     0,     0,   651,   652,
    2288        0,   653,   654,     0,   655,     0,   656,    43,     0,    44,
    2289        0,     0,     0,     0,     0,    45,    46,     0,     0,     0,
    2290        0,     0,     0,   586,     0,     0,     0,     0,     0,     0,
    2291        0,   671,     0,     0,     0,     0,     0,     0,     0,   341,
    2292      364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2293        0,     0,   716,     0,     0,     0,   682,     0,     0,     0,
    2294        0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    2295       12,     0,     0,   414,     0,     0,     0,     0,     0,     0,
    2296      414,     0,   708,     0,     0,     0,     0,     0,   711,     0,
    2297        0,   211,     0,   464,   218,    31,     8,     9,    10,    11,
     2500      20,    21,    22,    23,    24,    25,  -298,     0,    26,    27,
     2501      28,    29,     0,     0,    30,     0,     0,    31,     0,     0,
     2502       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2503       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2504       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
     2505       0,     0,    38,    39,     0,     0,  -298,   204,     2,   205,
     2506       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2507      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2508      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2509       0,    44,     0,    31,     0,     0,     0,    45,    46,     0,
     2510       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2511       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2512       0,    34,     0,    35,     0,    36,     0,     0,   206,    39,
     2513       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
    22982514      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2299       22,    23,    24,    25,  -293,     0,    26,    27,    28,     0,
    2300        0,   211,     0,    34,     0,    31,     0,     0,    37,   746,
    2301        0,   716,    40,     0,     0,     0,     0,     0,     0,    41,
    2302       42,     0,     0,     0,   764,     0,     0,     0,     0,     0,
    2303        0,     0,   414,    34,     0,     0,   211,     0,    37,     0,
    2304      336,   337,    40,     0,  -293,   719,     0,   211,     0,    41,
    2305       42,     0,     0,    45,    46,     0,     0,     0,     0,     0,
    2306      369,   369,     0,   790,     0,     0,     0,     0,     0,   218,
    2307        0,     0,   800,     0,     0,   635,     0,   338,   321,   802,
    2308        0,     0,     0,    45,    46,   810,     0,   414,   346,     0,
    2309        0,     0,     0,     0,   824,   414,   582,     0,   414,   585,
    2310      382,   382,     0,     0,     0,     0,     0,     0,     0,   364,
    2311        0,     0,     0,   614,     0,     0,     0,     0,     0,   211,
     2515      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2516       0,     0,     0,     0,     0,    31,     0,   207,     0,     0,
     2517       0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
    23122518       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2313        0,     0,   632,   211,   864,   341,   205,     2,   206,     4,
     2519       0,     0,     0,    34,     0,    35,     0,    36,    37,     0,
     2520     206,    39,    40,     0,     0,     0,     0,     0,     0,     0,
     2521       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
     2522       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2523       0,     0,     0,     0,     0,     0,     0,    43,     0,   207,
     2524       0,     0,     0,     0,     0,    45,    46,     2,   205,     4,
    23142525       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    23152526      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2316       25,     0,   414,    26,    27,    28,   414,     0,     0,     0,
    2317      810,   321,    31,     0,     0,     0,     0,     0,   905,     0,
    2318      369,     0,   282,   283,     0,   284,     0,     0,     0,     0,
    2319        0,     0,     0,     0,     0,   478,     0,   364,     0,     0,
    2320       34,     0,    35,     0,    36,     0,     0,   207,    39,   251,
    2321        0,   285,     0,     0,     0,     0,     0,   286,     0,   942,
    2322      943,   287,   211,     0,   288,   289,   290,   291,    41,    42,
    2323        0,   292,   293,     0,     0,     0,   524,     0,   524,     0,
    2324        0,     0,     0,   414,   208,     0,   364,     0,     0,     0,
    2325       45,    46,   980,     0,   294,     0,   379,   984,     0,   380,
    2326        0,     0,    45,    46,   296,   297,   298,   299,     0,     0,
    2327        0,     0,   524,     0,   524,     0,     0,     0,     0,     0,
    2328        0,     0,     0,     0,     0,   414,     0,     0,     0,   341,
    2329      364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2330        0,   165,     0,     0,     0,     0,     0,     0,     0,     0,
    2331        0,     0,   382,     0,     0,     0,     0,   211,     0,     0,
    2332        0,  1018,     0,     0,     0,     0,     0,     0,  1019,     0,
    2333        0,     0,     0,     0,     0,   414,   414,     0,     0,     0,
    2334        0,  1021,     0,  1022,     0,     0,     0,     0,     0,     0,
    2335        0,     0,     0,     0,   804,   364,     0,  1034,     0,     0,
    2336        0,     0,     0,  1038,     0,   614,     0,   614,   614,     0,
    2337        0,     0,     0,     0,   614,  1076,     0,     0,  1077,     0,
    2338        0,     0,     0,     0,   843,   364,     0,     0,     0,     0,
    2339      364,     0,     0,     0,     0,     0,     0,     0,     0,   364,
    2340      364,   364,     0,     0,     0,     0,   710,     0,     0,     0,
    2341        0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
    2342        0,     0,   414,   885,     0,     0,   414,   888,     0,     0,
    2343        0,     0,     0,   890,     0,     0,     0,     0,     0,     0,
    2344        0,     0,     0,     0,     0,   742,     0,     0,     0,     0,
    2345        0,     0,   414,     0,     0,   591,     0,     0,   759,     0,
    2346        0,     0,     0,   742,     0,     0,   742,     0,     0,     0,
    2347        0,     0,     0,     0,     0,   364,   614,     0,     0,   768,
    2348        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2349     1147,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2350        0,   789,     0,     0,     0,     0,     0,     0,     0,   341,
    2351      364,   798,     0,     0,   414,   414,     0,     0,   346,     0,
    2352        0,     0,     0,   759,     0,     0,     0,     0,     0,     0,
    2353        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2354       18,    19,    20,    21,    22,    23,    24,    25,   526,     0,
    2355       26,    27,    28,     0,  1212,     0,     0,     0,   414,    31,
    2356        0,     0,     0,     0,   211,     0,   364,     0,     0,     0,
    2357        0,     0,   863,   804,   364,     0,     0,   614,     0,   614,
    2358      382,     0,     0,     0,     0,     0,     0,    34,  1224,   614,
    2359        0,     0,    37,  1226,   207,    39,    40,     0,     0,     0,
    2360        0,  1230,     0,    41,    42,     0,     8,     9,    10,    11,
    2361       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2362       22,    23,    24,    25,  -293,     0,     0,     0,     0,    43,
    2363        0,   270,     0,     0,  1256,    31,     0,    45,    46,     0,
    2364        0,     0,     0,     0,     0,     0,  1264,     0,     0,  1265,
    2365        0,  1266,     0,     0,     0,     0,     0,     0,     0,     0,
    2366        0,   804,     0,    34,     0,  1275,  1276,     0,   341,   364,
    2367      414,     0,   414,     0,  -293,     0,   414,     0,   759,     0,
    2368      964,     0,     0,     0,     0,     0,     0,  1289,     0,     0,
    2369      975,     0,     0,     0,     0,     0,   983,   614,   614,     0,
    2370        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2371       18,    19,    20,    21,    22,    23,    24,    25,  -294,     0,
    2372        0,     0,     0,     0,     0,     0,     0,     0,     0,    31,
    2373        0,     0,   414,     0,  1328,     0,     0,     0,  1001,  1002,
    2374        0,     0,   346,     0,     0,     0,     0,     0,   282,   283,
    2375        0,   284,     0,   414,  1144,     0,   346,    34,     0,     0,
    2376        0,     0,     0,     0,   364,     0,     0,     0,  -294,     0,
    2377      414,  1156,     0,   614,   614,  1161,     0,   285,     0,     0,
    2378        0,     0,     0,   286,     0,   364,   364,   287,     0,     0,
    2379      288,   289,   290,   291,    41,    42,  1032,   292,   293,     0,
    2380      382,     0,     0,     0,     0,     0,     0,     0,     0,  1378,
    2381        0,  1379,     0,     0,     0,     0,     0,     0,     0,     0,
    2382      294,     0,   379,  1387,     0,  1388,     0,   758,    45,    46,
    2383      296,   297,   298,   299,     0,     0,     0,   346,     0,     0,
    2384        0,     0,  1395,     0,     0,     0,     0,     0,   414,     0,
    2385      414,     0,     0,     0,     0,   414,     0,     0,  1413,  1415,
    2386        0,     0,     0,     0,   614,     0,     0,     0,     0,  1420,
    2387        0,     0,  1230,     0,     0,     0,   321,     0,     0,     0,
    2388        0,     0,     0,     0,     0,     0,     0,   804,   414,  1244,
    2389        0,     0,     0,  1442,     0,     0,     0,     0,     0,     0,
    2390        0,     0,  1449,     0,   382,  1451,     0,  1453,  1455,  1457,
    2391      975,   364,     0,     0,   742,   282,   283,     0,   284,     0,
    2392        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2393        0,     0,     0,     0,     0,  1151,     0,     0,     0,     0,
    2394        0,     0,     0,     0,   285,     0,  1166,  1487,     0,  1489,
    2395      641,  1230,   139,   140,   287,     0,     0,   288,   289,   290,
    2396      291,    41,    42,     0,   292,   293,  1500,     0,   382,     0,
    2397     1184,     0,   341,     0,     0,     0,     0,     0,     0,     0,
    2398        0,     0,     0,     0,     0,   975,   975,   294,     0,   642,
    2399      364,   643,   380,     0,     0,    45,    46,   296,   297,   298,
    2400      299,     0,     0,     0,     0,     0,  1216,     0,     0,     0,
    2401        0,     0,     0,     0,     1,     2,   206,     4,     5,     6,
    2402        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2403       17,    18,    19,    20,    21,    22,    23,    24,    25,   364,
    2404      364,    26,    27,    28,    29,     0,     0,    30,     0,     0,
    2405       31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2406        0,   975,     0,     0,     0,     0,     0,     0,     0,     0,
    2407        0,     0,     0,     0,     0,     0,     0,     0,    34,   863,
    2408       35,     0,    36,     0,     0,    38,    39,     0,     0,     0,
    2409        0,     0,     0,     0,  1267,  1268,     0,     1,     2,   206,
    2410        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2411       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2412       24,    25,    44,     0,    26,    27,    28,    29,    45,    46,
    2413       30,   282,   283,    31,  1041,  1042,     0,  1043,     0,     0,
    2414     1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,
    2415        0,  1052,     0,     0,     0,  1053,  1054,     0,    33,   364,
    2416      285,    34,     0,    35,     0,    36,  1055,     0,    38,    39,
    2417      287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
    2418      292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
    2419        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2420        0,     0,     0,   294,     0,  1056,     0,     0,   171,     0,
    2421        0,    45,    46,   296,   297,   298,   299,     0,     0,     0,
    2422        0,  1057,     0,     0,     0,     0,  -128,     0,     0,     0,
    2423        0,     0,     0,     0,     0,  1372,     0,     0,   742,     0,
    2424        0,     0,     0,     0,     0,     0,   414,     0,     0,     0,
    2425        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2426        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2427      414,   414,     0,     0,     0,     0,     0,     0,     0,     0,
    2428        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2429        0,     0,     0,     0,     0,   414,     1,     2,   206,     4,
    2430        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2431       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2432       25,     0,     0,    26,    27,    28,    29,     0,     0,    30,
    2433      282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
    2434       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2435       24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
    2436       34,     0,    35,    31,    36,   286,     0,    38,    39,   287,
    2437        0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
    2438      293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2439        0,    34,     0,     0,     0,     0,   110,     0,    38,    39,
    2440        0,     0,   294,     0,    44,     0,     0,    41,    42,     0,
    2441       45,    46,   296,   297,   298,   299,     2,   206,     4,     5,
    2442        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2443       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2444        0,     0,    26,    27,    28,     0,     0,     0,   321,   282,
    2445      283,    31,   284,     8,     9,    10,    11,    12,    13,    14,
    2446       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2447       25,     0,     0,    26,    27,    28,     0,     0,   285,    34,
    2448        0,    35,    31,    36,   286,     0,    38,    39,   287,     0,
    2449        0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
    2450        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2451       34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
    2452        0,   294,     0,   343,     0,     0,     0,     0,   758,   344,
    2453       46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
    2454        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2455       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2456        0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
    2457       31,   284,     8,     9,    10,    11,    12,    13,    14,    15,
    2458       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2459        0,     0,    26,    27,    28,     0,     0,   285,    34,     0,
    2460       35,    31,    36,   286,     0,    38,    39,   287,     0,     0,
    2461      288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
    2462        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2463        0,     0,     0,     0,     0,     0,   207,    39,     0,     0,
    2464      294,     0,   963,     0,     0,     0,     0,   758,   344,    46,
    2465      296,   297,   298,   299,     2,   206,     4,     5,     6,     7,
    2466        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2467       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2468       26,    27,    28,     0,     0,     0,     0,   282,   283,    31,
    2469      284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2470       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2471        0,     0,     0,     0,     0,     0,   285,    34,     0,    35,
    2472       31,    36,   286,     0,    38,    39,   287,     0,     0,   288,
    2473      289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
    2474        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2475        0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
    2476        0,   963,     0,     0,     0,     0,   758,    45,    46,   296,
    2477      297,   298,   299,     2,   206,     4,     5,     6,     7,     8,
    2478        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2479       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2480       27,    28,     0,     0,     0,     0,   282,   283,    31,   284,
    2481        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2482        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2483        0,     0,     0,     0,     0,   285,    34,     0,    35,     0,
    2484       36,   286,     0,    38,    39,   287,     0,     0,   288,   289,
    2485      290,   291,    41,    42,     0,   292,   293,     0,     0,     0,
    2486        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2487        0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
    2488      343,     0,     0,     0,     0,     0,   344,    46,   296,   297,
    2489      298,   299,     2,   206,     4,     5,     6,     7,     8,     9,
    2490       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2491       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2492       28,     0,     0,     0,     0,   282,   283,    31,   284,     0,
    2493        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2494        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2495        0,     0,     0,     0,   285,    34,     0,    35,     0,    36,
    2496      286,     0,   207,    39,   287,     0,     0,   288,   289,   290,
    2497      291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
    2498        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2499        0,     0,     0,     0,     0,     0,     0,   294,     0,   998,
    2500        0,     0,     0,     0,     0,   999,    46,   296,   297,   298,
    2501      299,     2,   206,     4,     5,     6,     7,     8,     9,    10,
    2502       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2503       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2504        0,     0,     0,     0,   282,   283,    31,   284,     0,     0,
    2505        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2506        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2507        0,     0,     0,   285,    34,     0,    35,     0,    36,   286,
    2508        0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
    2509       41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
    2510        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2511        0,     0,     0,     0,     0,     0,   294,     0,   963,     0,
    2512        0,     0,     0,     0,   344,    46,   296,   297,   298,   299,
    2513        2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    2514       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2515       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2516        0,     0,     0,   282,   283,    31,   284,     0,     0,     0,
    2517        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2518        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2519        0,     0,   285,    34,     0,    35,     0,    36,   286,     0,
    2520      207,    39,   287,     0,     0,   288,   289,   290,   291,    41,
    2521       42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
    2522        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2523        0,     0,     0,     0,     0,   294,     0,   379,     0,     0,
    2524        0,     0,     0,    45,    46,   296,   297,   298,   299,  -516,
    2525        0,     0,     1,     2,     3,     4,     5,     6,     7,     8,
    2526        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2527       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2528       27,    28,    29,     0,     0,    30,     0,     0,    31,    32,
    2529        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2530        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2531        0,     0,     0,    33,     0,     0,    34,     0,    35,     0,
    2532       36,    37,     0,    38,    39,    40,     0,     0,     0,     0,
    2533        0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
    2534        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2535        0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
    2536       44,     0,     0,     0,     0,     0,    45,    46,     1,     2,
    2537        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2538       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2539       23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
    2540        0,    30,     0,     0,    31,    32,     0,     0,     0,     0,
    2541        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2542        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2543        0,     0,    34,     0,    35,     0,    36,    37,     0,    38,
    2544       39,    40,     0,     0,     0,     0,     0,     0,    41,    42,
    2545        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2546        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2547        0,     0,     0,     0,    43,     0,    44,     0,     0,     0,
    2548     -520,     0,    45,    46,     1,     2,     3,     4,     5,     6,
    2549        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2550       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2551        0,    26,    27,    28,    29,     0,     0,    30,     0,     0,
    2552       31,    32,     0,     0,     0,     0,     0,     0,     0,     0,
    2553        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2554        0,     0,     0,     0,     0,    33,     0,     0,    34,     0,
    2555       35,     0,    36,    37,     0,    38,    39,    40,     0,     0,
    2556        0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
    2557        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2558        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2559       43,     0,    44,     0,     0,     0,     0,     0,    45,    46,
    2560      205,     2,   206,     4,     5,     6,     7,     8,     9,    10,
    2561       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2562       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2563        0,     0,     0,     0,     0,     0,    31,     0,     8,     9,
    2564       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2565       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2566       28,   485,   486,   487,    34,     0,    35,    31,    36,    37,
    2567        0,   207,    39,    40,     0,     0,     0,     0,     0,     0,
    2568       41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
    2569        0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2570        0,     0,    38,    39,     0,     0,    43,     0,   208,     0,
    2571        0,     0,     0,     0,    45,    46,     1,     2,   206,     4,
    2572        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2573       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2574       25,  -293,     0,    26,    27,    28,    29,     0,     0,    30,
     2527      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    25752528       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    25762529       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25772530       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2578       34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
    2579        0,  -293,     2,   206,     4,     5,     6,     7,     8,     9,
    2580       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2581       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2582       28,     0,     0,     0,    44,     0,     0,    31,     0,     0,
    2583       45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
     2531      34,     0,    35,     0,    36,     0,     0,    38,    39,     2,
     2532     205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2533      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2534      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2535       0,     0,     0,     0,    31,  -405,   668,     0,     0,     0,
     2536       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
    25842537       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2585        0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2586       37,     0,   207,    39,    40,     0,     0,     0,     0,     0,
    2587        0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
     2538       0,     0,    34,     0,    35,     0,    36,     0,     0,    38,
     2539      39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25882540       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2589        0,     0,     0,     0,     0,     0,     0,    43,     0,   208,
    2590        0,     0,     0,     0,     0,    45,    46,     2,   206,     4,
     2541       0,     0,     0,  1332,     0,     0,     0,     0,     0,     0,
     2542       0,     0,     0,     0,     0,     0,     0,     0,   668,     0,
     2543       0,     0,     0,     0,    45,    46,     2,   205,     4,     5,
     2544       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2545      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2546       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2547       0,    31,     0,     0,     0,     8,     9,    10,    11,    12,
     2548      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2549      23,    24,    25,     0,     0,    26,    27,    28,     0,    34,
     2550       0,    35,     0,    36,    31,   675,    38,    39,     0,     0,
     2551       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2552       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2553    1334,     0,    34,     0,     0,     0,     0,     0,     0,    38,
     2554      39,     0,     0,     0,     0,   668,     0,     0,     0,     0,
     2555       0,    45,    46,     2,   205,     4,     5,     6,     7,     8,
     2556       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2557      19,    20,    21,    22,    23,    24,    25,     0,   676,    26,
     2558      27,    28,   677,     0,    45,    46,     0,     0,    31,     0,
     2559       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2560       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2561       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
     2562      36,     0,     0,   206,    39,     2,   205,     4,     5,     6,
     2563       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2564      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2565       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
     2566      31,     0,   269,     0,     0,     0,     0,     0,    45,    46,
     2567       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2568       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2569      35,     0,    36,     0,     0,    38,    39,     2,   205,     4,
    25912570       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    25922571      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    25932572      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2594        0,     0,    31,     0,     0,     0,     0,     8,     9,    10,
    2595       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2596       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2597       34,     0,    35,     0,    36,     0,    31,    38,    39,     0,
    2598        2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    2599       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2600       22,    23,    24,    25,    34,     0,    26,    27,    28,     0,
    2601        0,    38,    39,  -400,   678,    31,     0,     0,     0,     0,
     2573       0,     0,    31,     0,   668,     0,     0,     0,     0,     0,
    26022574      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
    26032575       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2604        0,     0,     0,    34,     0,    35,   635,    36,   338,     0,
    2605       38,    39,     0,     0,    45,    46,     0,     0,     0,     0,
     2576      34,     0,    35,     0,    36,     0,     0,   206,    39,     8,
     2577       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2578      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2579      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2580       0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
     2581       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
     2582       0,     0,     0,     0,     0,   284,    34,     0,     0,     0,
     2583       0,   285,     0,    38,    39,   286,     0,     0,   287,   288,
     2584     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    26062585       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2607        0,     0,  1351,     0,     0,     0,     0,     0,     0,     0,
    2608        0,     0,     0,     0,     0,     0,     0,   678,     0,     0,
    2609        0,     0,     0,    45,    46,     2,   206,     4,     5,     6,
    2610        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2586       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2587     295,     0,   513,     0,     0,   170,     0,     0,    45,    46,
     2588     297,   298,   299,   300,     8,     9,    10,    11,    12,    13,
     2589      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2590      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2591       0,   281,   282,    31,   283,     8,     9,    10,    11,    12,
     2592      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2593      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2594     284,    34,     0,     0,    31,     0,   285,     0,    38,    39,
     2595     286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
     2596      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2597       0,     0,    34,     0,     0,     0,     0,   110,     0,    38,
     2598      39,     0,     0,     0,     0,   295,   -40,   296,     0,     0,
     2599      41,    42,     0,    45,    46,   297,   298,   299,   300,     8,
     2600       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2601      19,    20,    21,    22,    23,    24,    25,     0,    44,    26,
     2602      27,    28,     0,     0,    45,    46,   281,   282,    31,   283,
     2603       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2604      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2605      26,    27,    28,     0,     0,   284,    34,     0,     0,    31,
     2606     675,   285,     0,    38,    39,   286,     0,     0,   287,   288,
     2607     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2608       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
     2609       0,     0,     0,     0,    38,    39,     0,     0,     0,     0,
     2610     295,     0,   296,     0,     0,     0,     0,     0,    45,    46,
     2611     297,   298,   299,   300,     8,     9,    10,    11,    12,    13,
     2612      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2613      24,    25,     0,   676,    26,    27,    28,  1070,     0,    45,
     2614      46,   281,   282,    31,   283,     8,     9,    10,    11,    12,
     2615      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2616      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2617     284,    34,     0,     0,    31,   675,   285,     0,    38,    39,
     2618     286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
     2619      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2620       0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
     2621      39,     0,     0,     0,     0,   295,     0,   341,     0,     0,
     2622       0,     0,     0,    45,    46,   297,   298,   299,   300,     8,
     2623       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2624      19,    20,    21,    22,    23,    24,    25,     0,   676,    26,
     2625      27,    28,  1197,     0,    45,    46,   281,   282,    31,   283,
     2626       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2627      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2628      26,    27,    28,     0,     0,   284,    34,     0,     0,    31,
     2629       0,   285,     0,    38,    39,   286,     0,     0,   287,   288,
     2630     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2631       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
     2632       0,     0,    37,     0,    38,    39,    40,     0,     0,     0,
     2633     295,     0,   376,     0,     0,    41,    42,     0,    45,    46,
     2634     297,   298,   299,   300,     0,     0,     0,     0,     0,     0,
     2635       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2636       0,    43,     0,    44,     0,     0,     0,     0,     0,    45,
     2637      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    26112638      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    26122639       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
    2613       31,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    2614       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2615       24,    25,     0,     0,    26,    27,    28,     0,    34,     0,
    2616       35,     0,    36,    31,   685,    38,    39,     0,     0,     0,
     2640      31,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2641      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2642       0,    26,    27,    28,     0,     0,     0,     0,    34,     0,
     2643      31,     0,     0,    37,     0,   206,    39,    40,     0,     0,
     2644       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
     2645       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2646       0,     0,     0,     0,     0,    38,    39,     0,     0,     0,
     2647       0,     0,    43,     0,   269,     0,     0,     0,     0,     0,
     2648      45,    46,     0,     0,     0,     8,     9,    10,    11,    12,
     2649      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2650      23,    24,    25,     0,   256,    26,    27,    28,     0,     0,
     2651      45,    46,     0,     0,    31,     8,     9,    10,    11,    12,
     2652      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2653      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2654       0,     0,    34,     0,    31,     0,     0,     0,     0,    38,
     2655      39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26172656       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2618        0,     0,     0,     0,     0,     0,     0,  1353,     0,     0,
    2619        0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
    2620        0,     0,   678,     0,     0,     0,     0,     0,    45,    46,
    2621        2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    2622       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2623       22,    23,    24,    25,     0,   686,    26,    27,    28,   687,
    2624        0,    45,    46,     0,     0,    31,     0,     0,     0,     0,
     2657       0,     0,    34,     0,     0,     0,     0,     0,     0,   206,
     2658      39,     0,     0,     0,     0,     0,     0,     0,    44,     0,
     2659       0,     0,     0,     0,    45,    46,     0,     0,     0,     8,
     2660       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2661      19,    20,    21,    22,    23,    24,    25,     0,   269,    26,
     2662      27,    28,     0,     0,    45,    46,     0,     0,    31,     8,
     2663       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2664      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2665      27,    28,     0,     0,     0,     0,    34,     0,    31,     0,
     2666       0,     0,     0,    38,    39,     0,     0,     0,     0,     0,
     2667       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2668       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
     2669       0,     0,     0,    38,    39,     0,     0,     0,     0,     0,
     2670       0,     0,   337,     0,     0,     0,     0,     0,    45,    46,
     2671       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2672      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2673      25,     0,   676,    26,    27,    28,     0,     0,    45,    46,
     2674       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    26252675       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26262676       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2627        0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
    2628      207,    39,     0,     2,   206,     4,     5,     6,     7,     8,
    2629        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2630       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2631       27,    28,     0,     0,     0,     0,     0,   270,    31,     0,
    2632        0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
     2677      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2678       0,     0,   281,   282,     0,   283,  1021,     0,  1022,     0,
     2679       0,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,     0,
     2680       0,  1508,  1031,     0,     0,     0,  1032,  1033,     0,    33,
     2681       0,   284,     0,     0,     0,     0,   668,  1034,     0,     0,
     2682       0,   286,    45,    46,   287,   288,   289,   290,   291,   292,
     2683      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    26332684       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2634        0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
    2635       36,     0,     0,    38,    39,     0,     2,   206,     4,     5,
    2636        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2637       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2638        0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
    2639      678,    31,     0,     0,     0,     0,    45,    46,     0,     0,
     2685       0,     0,     0,     0,     0,     0,   295,     0,   376,     0,
     2686       0,   170,     0,     0,    45,    46,   297,   298,   299,   300,
     2687       0,     0,   281,   282,  1035,   283,  1021,     0,  1022,  -134,
     2688       0,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,     0,
     2689       0,     0,  1031,     0,     0,     0,  1032,  1033,     0,    33,
     2690       0,   284,     0,     0,     0,     0,     0,  1034,     0,     0,
     2691       0,   286,     0,     0,   287,   288,   289,   290,   291,   292,
     2692      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    26402693       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2641        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2642        0,    35,     0,    36,     0,     0,    38,    39,     0,     2,
    2643      206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2644       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2645       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2646        0,     0,     0,   593,    31,     0,     0,     0,     0,    45,
    2647       46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2694       0,     0,     0,     0,     0,     0,   295,     0,   376,     0,
     2695       0,   170,     0,     0,    45,    46,   297,   298,   299,   300,
     2696       0,     0,     0,     0,  1035,     0,     0,     0,     0,  -134,
     2697       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
     2698      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2699      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2700       0,     0,     0,     0,     0,    31,     0,   281,   282,     0,
     2701     283,  1021,     0,  1022,  1380,  1381,  1023,  1024,  1025,  1026,
     2702    1027,  1028,  1029,  1030,     0,     0,  1508,  1031,     0,     0,
     2703       0,  1032,  1033,    34,    33,    35,   284,    36,     0,     0,
     2704      38,    39,  1034,     0,     0,     0,   286,     0,     0,   287,
     2705     288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     2706       0,     0,     0,     0,  1291,     0,     0,     0,     0,     0,
    26482707       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2649        0,     0,    34,     0,    35,     0,    36,     0,     0,   207,
    2650       39,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2651       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2652        0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
    2653       31,   284,     0,     0,     0,     0,   208,     0,     0,     0,
    2654        0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
    2655        0,     0,     0,     0,     0,     0,     0,   285,    34,     0,
    2656        0,     0,     0,   286,     0,    38,    39,   287,     0,     0,
    2657      288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
     2708       0,   295,     0,   376,     0,     0,   170,     0,     0,    45,
     2709      46,   297,   298,   299,   300,     0,     0,   281,   282,  1035,
     2710     283,  1021,     0,  1022,  1380,  1381,  1023,  1024,  1025,  1026,
     2711    1027,  1028,  1029,  1030,     0,     0,     0,  1031,     0,     0,
     2712       0,  1032,  1033,     0,    33,     0,   284,     0,     0,     0,
     2713       0,     0,  1034,     0,     0,     0,   286,     0,     0,   287,
     2714     288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    26582715       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26592716       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2660      294,     0,   517,     0,     0,   171,     0,     0,    45,    46,
    2661      296,   297,   298,   299,     8,     9,    10,    11,    12,    13,
    2662       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2663       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2664        0,   282,   283,    31,   284,     8,     9,    10,    11,    12,
    2665       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2666       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2667      285,    34,     0,     0,    31,     0,   286,     0,    38,    39,
    2668      287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
    2669      292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
    2670        0,     0,    34,     0,     0,     0,     0,    37,     0,   336,
    2671      337,    40,     0,   294,   -36,   295,     0,     0,    41,    42,
    2672        0,    45,    46,   296,   297,   298,   299,     8,     9,    10,
    2673       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2674       21,    22,    23,    24,    25,     0,   338,    26,    27,    28,
    2675        0,     0,    45,    46,   282,   283,    31,   284,     8,     9,
    2676       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2677       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2678       28,     0,     0,   285,    34,     0,     0,    31,     0,   286,
    2679        0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
    2680       41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
    2681        0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2682      110,     0,    38,    39,     0,     0,   294,     0,   295,     0,
    2683        0,    41,    42,     0,    45,    46,   296,   297,   298,   299,
    2684        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2685       18,    19,    20,    21,    22,    23,    24,    25,     0,    44,
    2686       26,    27,    28,     0,     0,    45,    46,   282,   283,    31,
    2687      284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2688       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2689        0,    26,    27,    28,     0,     0,   285,    34,     0,     0,
    2690       31,   685,   286,     0,    38,    39,   287,     0,     0,   288,
    2691      289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
    2692        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2693        0,     0,     0,     0,     0,    38,    39,     0,     0,   294,
    2694        0,   157,     0,     0,     0,     0,     0,    45,    46,   296,
    2695      297,   298,   299,     8,     9,    10,    11,    12,    13,    14,
    2696       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2697       25,     0,   686,    26,    27,    28,  1092,     0,    45,    46,
    2698      282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
    2699       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2700       24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
    2701       34,     0,     0,    31,   685,   286,     0,    38,    39,   287,
    2702        0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
    2703      293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2704        0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
    2705        0,     0,   294,     0,   593,     0,     0,     0,     0,     0,
    2706       45,    46,   296,   297,   298,   299,     8,     9,    10,    11,
    2707       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2708       22,    23,    24,    25,     0,   686,    26,    27,    28,  1221,
    2709        0,    45,    46,   282,   283,    31,   284,     0,     0,     0,
    2710        0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    2711       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2712       24,    25,   285,    34,    26,    27,    28,     0,   286,     0,
    2713       38,    39,   287,    31,     0,   288,   289,   290,   291,    41,
    2714       42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
     2717       0,   295,     0,   376,     0,     0,   170,     0,     0,    45,
     2718      46,   297,   298,   299,   300,     0,     0,   281,   282,  1035,
     2719     283,  1021,     0,  1022,     0,     0,  1023,  1024,  1025,  1026,
     2720    1027,  1028,  1029,  1030,     0,     0,     0,  1031,     0,     0,
     2721       0,  1032,  1033,     0,    33,     0,   284,     0,     0,     0,
     2722       0,     0,  1034,     0,     0,     0,   286,     0,     0,   287,
     2723     288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     2724       0,     0,     0,     0,     0,     0,   281,   282,     0,   283,
    27152725       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2716        0,    34,     0,     0,     0,   294,     0,   379,    38,    39,
    2717        0,     0,     0,    45,    46,   296,   297,   298,   299,   467,
    2718        2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    2719       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2720       22,    23,    24,    25,     0,   257,    26,    27,    28,     0,
    2721        0,    45,    46,     0,     0,    31,     0,     0,     0,     8,
    2722        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2723       19,    20,    21,    22,    23,    24,    25,  -293,     0,    26,
    2724       27,    28,     0,    34,     0,    35,     0,    36,    31,     0,
    2725       38,    39,     0,     0,     0,     0,     0,     8,     9,    10,
    2726       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2727       21,    22,    23,    24,    25,     0,    34,    26,    27,    28,
    2728        0,    37,     0,   336,   337,    40,    31,  -293,     0,     0,
    2729       -3,     0,    41,    42,     0,     8,     9,    10,    11,    12,
    2730       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2731       23,    24,    25,  -293,    34,    26,    27,    28,     0,    37,
    2732      338,   336,   337,    40,    31,     0,    45,    46,     0,     0,
    2733       41,    42,     0,     8,     9,    10,    11,    12,    13,    14,
    2734       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2735       25,     0,    34,    26,    27,    28,   635,     0,   338,    38,
    2736       39,     0,    31,  -293,    45,    46,     8,     9,    10,    11,
    2737       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2738       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2739       34,     0,     0,     0,     0,    31,   338,    38,    39,     0,
    2740        0,     0,    45,    46,     8,     9,    10,    11,    12,    13,
    2741       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2742       24,    25,     0,    34,    26,    27,    28,     0,     0,     0,
    2743      207,    39,     0,    31,   157,     0,     0,     0,     0,     0,
    2744       45,    46,     8,     9,    10,    11,    12,    13,    14,    15,
    2745       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2746        0,    34,    26,    27,    28,     0,     0,   270,    38,    39,
    2747        0,    31,     0,    45,    46,     8,     9,    10,    11,    12,
    2748       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2749       23,    24,    25,     0,     0,    26,    27,    28,     0,    34,
    2750        0,     0,     0,     0,    31,   338,    38,    39,     0,     0,
    2751        0,    45,    46,     8,     9,    10,    11,    12,    13,    14,
    2752       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2753       25,     0,    34,    26,    27,    28,     0,     0,     0,    38,
    2754       39,     0,    31,   686,     0,     0,     0,     0,     0,    45,
    2755       46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2756       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2757       34,    26,    27,    28,     0,     0,   593,    38,    39,     0,
    2758       31,     0,    45,    46,     2,   206,     4,     5,     6,     7,
    2759        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2760       18,    19,    20,    21,    22,    23,    24,    25,    34,     0,
    2761       26,    27,    28,     0,    44,   207,    39,     0,     0,    31,
    2762       45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
     2726       0,   295,     0,   376,     0,     0,   170,     0,     0,    45,
     2727      46,   297,   298,   299,   300,   284,     0,     0,     0,  1035,
     2728       0,   631,     0,   139,   140,   286,     0,     0,   287,   288,
     2729     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2730       0,     0,     0,     0,     0,   281,   282,     0,   283,     0,
    27632731       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2764        0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
    2765        0,    36,     0,     0,    38,    39,     0,     0,    45,    46,
    2766      282,   283,     0,   284,  1042,     0,  1043,     0,     0,  1044,
    2767     1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,  1525,
    2768     1052,     0,     0,     0,  1053,  1054,     0,    33,     0,   285,
    2769     -413,     0,     0,     0,     0,  1055,     0,     0,     0,   287,
    2770        0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
    2771      293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2772        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2773        0,     0,   294,     0,   379,     0,     0,   171,     0,     0,
    2774       45,    46,   296,   297,   298,   299,     0,     0,   282,   283,
    2775     1057,   284,  1042,     0,  1043,  -128,     0,  1044,  1045,  1046,
    2776     1047,  1048,  1049,  1050,  1051,     0,     0,     0,  1052,     0,
    2777        0,     0,  1053,  1054,     0,    33,     0,   285,     0,     0,
    2778        0,     0,     0,  1055,     0,     0,     0,   287,     0,     0,
    2779      288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
     2732     295,     0,   632,     0,   633,   377,     0,     0,    45,    46,
     2733     297,   298,   299,   300,   284,     0,     0,     0,     0,     0,
     2734     285,     0,     0,     0,   286,     0,     0,   287,   288,   289,
     2735     290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
     2736       0,     0,     0,     0,   281,   282,     0,   283,     0,     0,
     2737       0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
     2738       0,   376,     0,     0,   377,     0,     0,    45,    46,   297,
     2739     298,   299,   300,   284,     0,     0,     0,     0,     0,   285,
     2740       0,     0,     0,   286,     0,     0,   287,   288,   289,   290,
     2741     291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
     2742       0,     0,     0,   281,   282,     0,   283,     0,     0,     0,
     2743       0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
     2744     376,     0,     0,     0,     0,   748,    45,    46,   297,   298,
     2745     299,   300,   284,     0,     0,     0,     0,     0,   285,     0,
     2746       0,     0,   286,     0,     0,   287,   288,   289,   290,   291,
     2747     292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
     2748       0,     0,   281,   282,     0,   283,     0,     0,     0,     0,
     2749       0,     0,     0,     0,     0,     0,     0,   295,     0,   376,
     2750       0,     0,   956,     0,     0,    45,    46,   297,   298,   299,
     2751     300,   284,     0,     0,     0,     0,     0,   285,     0,     0,
     2752       0,   286,     0,     0,   287,   288,   289,   290,   291,   292,
     2753      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
     2754       0,   281,   282,     0,   283,     0,     0,     0,     0,     0,
     2755       0,     0,     0,     0,     0,     0,   295,     0,   376,     0,
     2756       0,     0,     0,     0,    45,    46,   297,   298,   299,   300,
     2757     284,     0,     0,     0,     0,     0,   285,     0,     0,     0,
     2758     286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
     2759      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2760     281,   282,     0,   283,     0,     0,     0,     0,     0,     0,
     2761       0,     0,     0,     0,     0,   502,     0,   376,     0,     0,
     2762       0,     0,     0,    45,    46,   297,   298,   299,   300,   284,
     2763       0,     0,     0,     0,     0,   285,     0,     0,     0,   286,
     2764       0,     0,   287,   288,   289,   290,   291,   292,    41,    42,
     2765       0,   293,   294,     0,     0,     0,     0,     0,     0,   281,
     2766     282,     0,   283,     0,     0,     0,     0,     0,     0,     0,
     2767       0,     0,     0,     0,   507,     0,   376,     0,     0,     0,
     2768       0,     0,    45,    46,   297,   298,   299,   300,   284,     0,
     2769       0,     0,     0,     0,   285,     0,     0,     0,   286,     0,
     2770       0,   287,   288,   289,   290,   291,   292,    41,    42,     0,
     2771     293,   294,     0,     0,     0,     0,     0,     0,   281,   282,
     2772       0,   283,     0,     0,     0,     0,     0,     0,     0,     0,
     2773       0,     0,     0,   510,     0,   376,     0,     0,     0,     0,
     2774       0,    45,    46,   297,   298,   299,   300,   284,     0,     0,
     2775       0,     0,     0,   285,     0,     0,     0,   286,     0,     0,
     2776     287,   288,   289,   290,   291,   292,    41,    42,     0,   293,
     2777     294,     0,     0,     0,     0,     0,     0,   281,   282,     0,
     2778     283,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2779       0,     0,   295,     0,   376,     0,     0,     0,     0,     0,
     2780     699,    46,   297,   298,   299,   300,   284,     0,     0,     0,
     2781       0,     0,   285,     0,     0,     0,   286,     0,     0,   287,
     2782     288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    27802783       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27812784       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2782      294,     0,   379,     0,     0,   171,     0,     0,    45,    46,
    2783      296,   297,   298,   299,     0,     0,     0,     0,  1057,     0,
    2784        0,     0,     0,  -128,     2,   206,     4,     5,     6,     7,
    2785        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2786       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2787       26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
    2788        0,   282,   283,     0,   284,  1042,     0,  1043,  1399,  1400,
    2789     1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,
    2790     1525,  1052,     0,     0,     0,  1053,  1054,    34,    33,    35,
    2791      285,    36,     0,     0,    38,    39,  1055,     0,     0,     0,
    2792      287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
    2793      292,   293,     0,     0,     0,     0,  1312,     0,     0,     0,
    2794        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2795        0,     0,     0,   294,     0,   379,     0,     0,   171,     0,
    2796        0,    45,    46,   296,   297,   298,   299,     0,     0,   282,
    2797      283,  1057,   284,  1042,     0,  1043,  1399,  1400,  1044,  1045,
    2798     1046,  1047,  1048,  1049,  1050,  1051,     0,     0,     0,  1052,
    2799        0,     0,     0,  1053,  1054,     0,    33,     0,   285,     0,
    2800        0,     0,     0,     0,  1055,     0,     0,     0,   287,     0,
    2801        0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
    2802        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2803        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2804        0,   294,     0,   379,     0,     0,   171,     0,     0,    45,
    2805       46,   296,   297,   298,   299,     0,     0,   282,   283,  1057,
    2806      284,  1042,     0,  1043,     0,     0,  1044,  1045,  1046,  1047,
    2807     1048,  1049,  1050,  1051,     0,     0,     0,  1052,     0,     0,
    2808        0,  1053,  1054,     0,    33,     0,   285,     0,     0,     0,
    2809        0,     0,  1055,     0,     0,     0,   287,     0,     0,   288,
    2810      289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
    2811        0,     0,     0,     0,   282,   283,     0,   284,     0,     0,
    2812        0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
    2813        0,   379,     0,     0,   171,     0,     0,    45,    46,   296,
    2814      297,   298,   299,   285,     0,     0,     0,  1057,     0,   286,
    2815        0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
    2816       41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
    2817        0,   282,   283,     0,   284,     0,     0,     0,     0,     0,
    2818        0,     0,     0,     0,     0,     0,   294,     0,   379,     0,
    2819        0,   972,     0,     0,    45,    46,   296,   297,   298,   299,
    2820      285,     0,     0,     0,     0,     0,   286,     0,     0,     0,
    2821      287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
    2822      292,   293,     0,     0,     0,     0,     0,     0,   282,   283,
    2823        0,   284,     0,     0,     0,     0,     0,     0,     0,     0,
    2824        0,     0,     0,   294,     0,   379,     0,   282,   283,     0,
    2825      284,    45,    46,   296,   297,   298,   299,   285,     0,     0,
    2826        0,     0,     0,   286,     0,     0,     0,   287,     0,     0,
    2827      288,   289,   290,   291,    41,    42,   285,   292,   293,     0,
    2828        0,     0,   286,     0,     0,     0,   287,     0,     0,   288,
    2829      289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
    2830      294,     0,   379,     0,   282,   283,     0,   284,   709,    46,
    2831      296,   297,   298,   299,     0,     0,     0,     0,     0,   294,
    2832        0,   379,     0,   282,   283,     0,   284,   344,    46,   296,
    2833      297,   298,   299,   285,     0,     0,     0,     0,     0,   286,
    2834        0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
    2835       41,    42,   285,   292,   293,     0,     0,     0,   286,     0,
    2836        0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
    2837       42,     0,   292,   293,     0,     0,   506,     0,     0,     0,
    2838      282,   283,     0,   284,    45,    46,   296,   297,   298,   299,
    2839        0,     0,     0,     0,     0,   294,     0,     0,     0,   282,
    2840      283,     0,   284,    45,    46,   296,   297,   298,   299,   285,
    2841        0,     0,     0,     0,     0,   286,     0,     0,     0,   287,
    2842        0,     0,   288,   289,   290,   291,    41,    42,   285,   292,
    2843      293,     0,     0,     0,   286,     0,     0,     0,   287,     0,
    2844        0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
    2845        0,     0,   511,     0,     0,     0,     0,     0,     0,     0,
    2846       45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
    2847        0,   514,     0,     0,     0,     0,     0,     0,     0,    45,
    2848       46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
     2785       0,   295,     0,   376,     0,     0,     0,     0,     0,   342,
     2786      46,   297,   298,   299,   300,     2,   205,     4,     5,     6,
    28492787       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    28502788      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     
    28532791       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28542792       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2855       35,     0,    36,    37,     0,   174,   175,    40,     0,     0,
    2856        0,     0,     0,     0,    41,    42,   205,     2,   206,     4,
    2857        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2858       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2859       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2860        0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2793      35,     0,    36,    37,     0,   173,   174,    40,     0,     0,
     2794       0,     0,     0,     0,     0,     0,    41,    42,   204,     2,
     2795     205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2796      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2797      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2798       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
    28612799       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28622800       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2863       34,     0,    35,     0,    36,     0,     0,   207,    39,   467,
    2864        2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    2865       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2866       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2867        0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
    2868        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2869        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2870        0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
    2871       38,    39,     2,   206,     4,     5,     6,     7,     8,     9,
     2801       0,     0,    34,     0,    35,     0,    36,     0,     0,   206,
     2802      39,   463,     2,   205,     4,     5,     6,     7,     8,     9,
    28722803      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    28732804      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     
    28762807       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28772808       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2878        0,     0,   207,    39
     2809       0,     0,    38,    39,     2,   205,     4,     5,     6,     7,
     2810       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2811      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2812      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2813       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2814      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2815       0,    26,    27,    28,   481,   482,   483,    34,     0,    35,
     2816      31,    36,     0,     0,   206,    39,     0,     0,     0,     0,
     2817       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2818       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2819       0,     0,     0,     0,     0,    38,    39
    28792820};
    28802821
    28812822#define yypact_value_is_default(yystate) \
    2882   ((yystate) == (-1323))
     2823  ((yystate) == (-1333))
    28832824
    28842825#define yytable_value_is_error(yytable_value) \
     
    28872828static const yytype_int16 yycheck[] =
    28882829{
    2889        0,     1,   186,    43,   239,   185,   204,     0,    43,   219,
    2890       43,   116,   185,   521,   534,   185,     1,   875,   186,     0,
    2891        1,   185,   757,    51,   647,   603,   750,   185,     0,     1,
    2892      281,   621,    32,   750,  1041,     0,  1022,    43,   185,    32,
    2893      345,   185,   750,    43,   168,   169,   513,   349,   875,    49,
    2894      156,    32,   603,    32,     0,   693,    49,   349,   187,     0,
    2895       32,   572,    57,    63,   601,  1322,    66,    32,    43,    69,
    2896       63,     0,     1,    66,   696,    63,    69,  1399,   734,   492,
    2897        0,   109,   266,   496,    69,   265,    32,   601,    69,    39,
    2898       39,    32,   265,   490,    66,   265,   201,    69,   266,   601,
    2899       39,   265,    43,    32,   604,   105,   601,   265,    49,    49,
    2900      610,   106,    32,   113,   109,   418,   116,   117,   265,    82,
    2901       66,   265,    63,    63,    39,    66,    66,    39,    69,    69,
    2902      601,   984,   261,   262,   284,   438,    43,    66,    28,   601,
    2903       69,   105,    72,   446,   132,   185,   146,   147,  1470,   601,
    2904      185,    72,   185,    49,   147,   155,   156,   307,   308,   109,
    2905      160,   111,   111,  1420,    39,   787,    82,   160,    72,   364,
    2906      109,    39,   111,   368,  1021,  1022,    82,   482,    96,   185,
    2907      688,  1034,   906,  1116,   156,   185,   186,  1120,    78,   906,
    2908      156,   155,     0,   186,   110,   345,   488,   109,   906,   111,
    2909      410,   201,   132,    96,   122,   111,   147,   147,   605,   209,
    2910      185,   132,   609,   117,  1041,    64,   209,   113,   109,   160,
    2911      160,   221,   406,   218,    32,   265,   109,   110,   221,   122,
    2912      265,   381,   265,   630,   109,   256,   111,   634,   406,   239,
    2913     1226,   109,   864,   111,   185,   186,   186,   825,   719,   221,
    2914      146,   251,   987,   504,    57,    44,    45,   719,   251,   259,
    2915      109,   426,   427,   901,   264,   265,   266,   719,   209,   209,
    2916      251,   271,   251,   266,   825,   221,   813,   272,   185,   251,
    2917      221,   221,  1289,   794,   279,   907,   251,   109,   696,    85,
    2918     1276,   396,   221,  1502,   294,    49,   480,   636,   637,   813,
    2919      109,   603,   925,   106,  1453,   251,   109,   307,  1053,  1054,
    2920      251,   813,   480,   209,   653,   815,   621,   113,   813,   424,
    2921     1529,   626,   251,   323,   265,   430,   115,   433,   328,   494,
    2922      952,   251,    95,    44,    45,   328,   107,   112,  1487,   116,
    2923     1489,   341,   813,   239,   109,   345,   111,   109,   513,   349,
    2924      350,   813,   155,   348,  1212,   132,   934,     0,   110,   113,
    2925      131,   813,    44,    45,   364,   987,   129,  1473,   368,   131,
    2926      365,   371,   711,  1479,   369,   271,   116,   341,   130,   682,
    2927       72,    11,    74,    75,  1129,  1212,   228,   328,   328,    32,
    2928      130,    83,    84,  1499,  1050,   590,   396,   418,  1504,   114,
    2929      550,   551,   552,   114,   350,   247,   406,   371,   349,  1395,
    2930     1000,   307,   110,   406,   579,   218,  1038,   438,   116,   933,
    2931      526,   109,   114,   111,   424,   446,   426,   427,  1275,  1276,
    2932      430,   933,   114,   433,    72,  1442,   110,   632,   933,   110,
    2933       72,   746,  1449,   251,  1502,    83,    84,   110,   256,   345,
    2934      847,    83,    84,   116,   454,   209,   130,   119,   120,   130,
    2935      968,   433,  1289,   802,  1522,   406,   406,   433,   110,   272,
    2936      112,  1529,   472,   111,   116,   128,   279,   110,   131,   111,
    2937      480,   116,   482,   116,   484,   591,   737,   480,   488,   131,
    2938      132,   484,    70,  1500,   494,    73,  1118,   132,    76,   907,
    2939       78,    90,    91,   484,   688,  1128,   506,    85,   508,  1009,
    2940     1010,   511,   484,   513,   514,   982,   482,   271,   116,   484,
    2941      688,   521,  1100,   825,   648,   525,   526,   473,   657,   942,
    2942      426,   427,   130,   825,  1387,  1388,   125,   126,   484,   109,
    2943      294,   111,   939,   484,   952,   348,   110,   488,  1395,   116,
    2944      655,   116,   116,   307,   526,   484,  1178,  1179,    72,   116,
    2945      526,   525,   365,   130,   484,    72,   369,    74,    75,    83,
    2946       84,   571,   572,    88,    89,   132,    83,    84,  1086,   579,
    2947     1403,    72,     3,  1091,     4,     5,     6,     7,     8,     9,
    2948      590,   591,    83,    84,    72,   595,   116,   111,   494,     3,
    2949      905,   601,     1,   603,   111,    83,    84,   757,   251,   804,
    2950      418,   116,   132,   256,   809,  1442,     0,   513,   110,   591,
    2951      111,   621,  1449,     0,   116,   591,   626,   622,   628,   432,
    2952      438,   109,   632,  1289,   212,   635,   636,   637,   446,   111,
    2953      111,   113,   113,   638,   112,   109,   938,   111,   116,    69,
    2954      116,    71,   862,   653,   116,   655,   109,   652,   130,   130,
    2955      601,   682,   603,   635,   636,   637,   132,   109,   116,   111,
    2956      132,   591,   882,  1500,  1497,   116,   484,   623,   116,  1502,
    2957      116,   653,   131,   579,   132,   685,    72,   708,   688,   116,
    2958       76,   132,   116,   109,   132,  1000,   132,    83,    84,  1522,
    2959      454,   279,   897,    72,   810,   132,  1529,  1363,   132,   944,
    2960     1118,   711,   712,   713,    83,    84,   110,   109,   116,   719,
    2961      720,   116,   116,   109,   908,   621,   906,    92,    93,   110,
    2962      626,   117,   118,   906,   132,   116,   906,   132,   733,   711,
    2963      908,   109,   906,   110,   868,   745,   746,   688,   906,   116,
    2964      750,   751,   506,   699,   508,   109,   109,   511,   111,   906,
    2965      514,  1383,   906,   110,   117,   118,   294,   713,   112,   116,
    2966     1178,  1179,   116,   109,   352,   418,   354,  1399,   719,   720,
    2967      746,   745,  1506,   109,   112,   111,  1306,   590,   116,  1506,
    2968     1446,   109,  1448,   111,   794,   438,   109,   112,  1506,   117,
    2969      118,   116,   802,   446,   804,    72,   806,    74,    75,   809,
    2970      810,   110,   109,   813,   111,  1013,    83,    84,   110,   622,
    2971      117,   118,    72,   110,   116,   825,    76,   110,   112,   116,
    2972      802,   110,   116,    83,    84,   638,   110,   116,   810,   482,
    2973      110,   484,  1147,   112,   810,  1501,   116,  1469,  1470,   652,
    2974     1000,   115,   116,   252,    10,    11,    12,    13,    14,   109,
    2975      806,   111,   110,   111,   442,  1116,   109,   117,   118,  1120,
    2976     1121,   110,   813,   117,   682,   875,   110,   116,     3,   123,
    2977      124,   110,   116,    39,   825,    10,    11,    12,    13,    14,
    2978      810,  1041,    58,    59,   875,   110,   110,   897,   426,   427,
    2979      708,   116,  1086,   875,   904,   905,   906,  1091,   908,   110,
    2980      110,    67,  1036,   109,    39,    72,   116,   115,  1086,    76,
    2981      920,  1226,   109,  1091,   111,   109,    83,    84,  1123,   875,
    2982      733,   685,    64,   933,   934,   110,   115,   116,   938,   905,
    2983      904,   116,    67,   943,   944,    72,   875,    74,    75,    76,
    2984        0,     1,   109,    44,    45,   875,    83,    84,   943,   132,
    2985      117,   118,   943,   110,    66,   906,   109,   908,   968,   116,
    2986      109,   943,   111,   109,  1482,  1383,   553,   554,   506,    29,
    2987       30,   112,    32,   511,   132,  1236,   514,   506,   109,   508,
    2988      111,  1399,   511,    43,   911,   514,   913,   938,   114,    49,
    2989     1000,   555,   556,  1108,   114,   114,    72,    57,    74,    75,
    2990       76,   561,   562,    63,   943,   117,    66,    83,    84,    69,
    2991      132,  1021,  1022,  1531,   132,     4,     5,     6,     7,     8,
    2992        9,   109,    82,    83,   557,   558,   559,   560,    82,   682,
    2993      568,  1041,     4,     5,     6,     7,     8,     9,   944,  1021,
    2994     1022,    85,    86,    87,   109,  1021,   106,  1003,   160,   109,
    2995     1041,  1469,  1470,   109,   112,   708,   116,   875,   467,  1041,
    2996       82,    33,  1323,   118,   127,   109,  1327,   111,    94,   113,
    2997      114,  1081,   109,   110,   111,   128,  1086,   109,   110,   111,
    2998       69,  1091,    71,   131,   897,  1041,   111,   147,   109,   109,
    2999     1100,   110,   110,   746,  1000,   155,     3,    69,  1108,    71,
    3000      160,   112,  1041,    10,    11,    12,    13,    14,   112,   221,
    3001      112,  1041,   110,  1123,   109,   110,   111,   110,   110,   528,
    3002      110,   109,   110,   111,   533,   185,   186,    72,   109,    74,
    3003       75,    76,    39,   112,   111,  1086,   114,  1147,    83,    84,
    3004     1091,   201,   116,   132,   131,   733,   114,   259,   114,   209,
    3005      109,   112,   264,    58,    59,    60,   920,   110,   218,   110,
    3006       67,   221,   112,  1424,   109,   112,   111,   130,   228,   112,
    3007      112,  1147,   117,   118,   583,  1249,  1250,  1251,   130,  1189,
    3008     1190,   130,   116,   243,    29,   130,   110,   247,   110,   112,
    3009      115,   251,   252,   114,   112,  1190,   110,   116,  1208,  1190,
    3010      115,   109,  1212,   115,   110,   265,   266,  1189,  1190,   110,
    3011      130,   110,   272,   116,   110,   132,  1226,     3,   110,   279,
    3012     1230,  1212,   875,  1041,    10,    11,    12,    13,    14,   110,
    3013     1212,   116,   110,  1189,  1208,  1230,   110,   110,   350,  1230,
    3014      110,   110,   110,   110,     1,   654,   110,   656,  1230,   110,
    3015     1189,  1190,   905,    39,   110,   110,  1212,   110,    72,   110,
    3016       74,    75,    76,   115,  1379,  1275,  1276,    29,   328,    83,
    3017       84,  1516,   131,  1212,  1284,   110,   130,   116,   875,  1289,
    3018      112,    67,  1212,   112,   110,   110,   116,   110,   348,   349,
    3019      130,  1230,    49,  1275,  1276,   109,   109,   706,  1289,  1275,
    3020      116,   112,  1284,   117,   118,   365,   114,  1289,   110,   369,
    3021      110,   110,  1322,  1507,   112,   116,  1506,  1081,   110,   431,
    3022      380,   116,   116,  1506,    55,   110,  1506,  1322,  1284,  1507,
    3023      110,  1322,  1506,  1289,   112,   109,   396,  1531,  1506,   109,
    3024     1322,   109,   109,   109,   132,  1284,   406,   130,   105,  1506,
    3025     1289,   112,  1506,  1531,   110,   115,   113,   110,   110,  1289,
    3026      115,   473,   110,   128,   424,   115,    97,  1482,   114,  1379,
    3027      430,   112,   432,  1378,   132,   112,   116,   112,   110,    72,
    3028      110,    74,    75,  1322,   110,  1395,   110,   112,  1041,   146,
    3029       83,    84,   112,   112,  1212,  1208,   112,    72,   155,    74,
    3030       75,    76,   112,    72,   112,    74,    75,   467,    83,    84,
    3031     1420,    47,   472,  1395,    83,    84,   109,   132,   132,   132,
    3032      480,   114,   112,   132,   484,  1420,   132,   115,   488,  1420,
    3033      110,   491,  1442,   493,   109,   130,   115,   110,  1420,  1449,
    3034      109,  1451,   112,  1453,   115,   114,   112,  1044,   205,   112,
    3035      112,  1442,   209,   112,   110,   110,  1506,   109,  1449,   112,
    3036     1442,  1506,   193,  1506,   112,   109,   109,  1449,   528,    60,
    3037      110,  1289,  1482,   533,   132,   110,   114,  1487,   109,  1489,
    3038      112,  1420,   239,   595,   112,   216,  1442,   110,   112,   110,
    3039     1500,    96,    96,  1449,  1147,   226,  1506,  1507,   109,   109,
    3040      464,   115,   132,  1442,  1507,   130,  1516,   110,   110,  1500,
    3041     1449,   623,  1442,   110,   271,   110,   628,   274,  1500,  1449,
    3042      116,  1531,    42,   583,   132,   132,   110,   110,  1531,    66,
    3043      590,    96,    96,   132,   110,   110,   110,   294,    75,   132,
    3044      132,   601,   110,   603,  1500,   115,   112,   132,   115,   958,
    3045      307,   112,   109,   132,   110,  1506,    30,   115,   110,  1212,
    3046      132,  1500,   622,   294,   110,  1378,   110,   667,  1057,   563,
    3047     1500,   980,   978,  1226,   565,   984,  1212,  1365,   638,   564,
    3048      117,   464,   566,   643,   341,   567,  1470,   699,   345,  1541,
    3049     1299,  1327,   652,  1121,   654,   655,   656,  1072,  1449,   685,
    3050      685,   713,   913,   698,    66,  1091,   921,   364,    82,    83,
    3051     1516,   368,   583,   972,   371,  1212,   868,   723,   649,   940,
    3052       82,  1230,   484,   160,  1442,  1034,     0,     1,   688,   733,
    3053      571,  1449,   692,   571,   694,   571,  1289,    72,   698,    74,
    3054       75,    76,    -1,    -1,    -1,    -1,   706,    -1,    83,    84,
    3055       -1,    -1,    -1,  1191,  1192,   117,  1194,    -1,    32,   719,
    3056      720,    -1,    -1,  1201,    -1,  1203,    -1,    -1,    -1,   426,
    3057      427,    -1,    -1,   733,   109,    49,    -1,    10,    11,    12,
    3058       13,    14,  1500,    -1,   221,    -1,    -1,  1451,    -1,  1453,
    3059       -1,    -1,    -1,    -1,   806,    69,    -1,   454,   160,    -1,
    3060       85,    86,    87,    -1,    -1,    -1,    39,   671,  1305,    -1,
    3061      467,    -1,   443,    -1,    -1,    -1,    -1,    10,    11,    12,
    3062       13,    14,   259,  1487,   109,  1489,   111,   264,   113,   114,
    3063       -1,   105,    -1,    -1,    67,   492,    -1,   494,   469,   496,
    3064       -1,    -1,   279,    -1,    -1,    -1,    39,    -1,    -1,   506,
    3065       -1,   508,    -1,   813,   511,    -1,   513,   514,    -1,   221,
    3066     1357,    -1,    -1,  1360,    -1,   825,    -1,    -1,   525,   243,
    3067       -1,    -1,    -1,   147,    67,   506,   109,    -1,   111,    -1,
    3068      511,   155,   156,   514,   117,   118,    -1,    -1,   671,  1442,
    3069       -1,    -1,    -1,    -1,    -1,    -1,  1449,   259,    -1,    -1,
    3070       -1,    -1,   264,    -1,    -1,    -1,  1403,    -1,   868,    -1,
    3071       -1,  1408,   186,   350,   874,    -1,   109,    -1,   111,    -1,
    3072       -1,  1359,   579,    -1,   117,   118,   790,   201,    -1,    -1,
    3073      204,   205,    -1,   590,    -1,   209,   800,   897,    -1,  1436,
    3074     1249,  1250,  1251,    -1,    -1,    -1,   906,  1500,   908,    -1,
    3075      814,    -1,    -1,    -1,    -1,   915,   230,    -1,    -1,    -1,
    3076      234,    -1,   236,    -1,   621,    -1,    -1,    -1,    -1,   626,
    3077       -1,   245,    -1,    -1,    -1,   632,     0,   251,   938,    -1,
    3078       -1,    -1,   256,    -1,    -1,    -1,    -1,    -1,   350,    -1,
    3079       -1,  1003,   266,    -1,   431,    -1,    -1,    -1,   958,    -1,
    3080      274,    10,    11,    12,    13,    14,   380,   790,    32,    -1,
    3081       -1,   448,   972,    -1,    -1,    -1,    -1,   800,    -1,    -1,
    3082      980,    -1,    -1,  1520,   984,    -1,    -1,    -1,   685,  1526,
    3083       39,   814,    -1,    -1,    -1,    -1,   473,    -1,    -1,   670,
    3084     1537,    -1,   671,    -1,  1541,    69,    -1,    -1,   679,    -1,
    3085       -1,    -1,   683,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3086       -1,    72,    -1,    74,    75,    76,   723,   341,    -1,   431,
    3087       -1,   345,    83,    84,  1034,    -1,    -1,   351,  1387,  1388,
    3088       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,    -1,
    3089      364,    -1,    -1,    -1,   368,    -1,    -1,   371,   109,    -1,
    3090      109,    -1,   111,    -1,    -1,    -1,   117,   118,   117,   118,
    3091       -1,   473,  1072,    -1,    -1,    -1,  1425,   491,    -1,   493,
    3092       -1,    -1,    -1,    -1,    -1,    -1,  1086,    -1,    -1,    -1,
    3093       -1,  1091,   156,    97,    98,    99,   100,   101,   102,   103,
    3094      104,   105,   106,   107,   418,    -1,    -1,   804,  1108,    -1,
    3095       -1,    -1,   809,    -1,  1018,  1019,    -1,    -1,   595,   433,
    3096       -1,   790,    -1,    -1,   438,    -1,    -1,   131,    -1,    -1,
    3097       -1,   800,   446,    -1,  1483,    -1,    -1,  1189,    -1,    -1,
    3098       -1,    -1,    -1,  1492,    -1,   814,   623,    -1,    -1,    -1,
    3099      464,   628,    72,   467,    74,    75,    76,    -1,    -1,    -1,
    3100       -1,    -1,    -1,    83,    84,    -1,   230,    -1,   482,    -1,
    3101      484,    -1,  1076,  1077,    -1,    -1,    -1,    -1,   492,    -1,
    3102       -1,    -1,   496,    -1,    -1,  1185,    -1,   251,    -1,   109,
    3103       -1,   111,   256,   595,    -1,  1018,  1019,   117,   118,    -1,
    3104      897,    -1,    -1,    -1,    -1,    -1,    -1,   904,  1208,    -1,
    3105       -1,   525,   526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3106       -1,   623,   699,   920,    -1,    -1,   628,    -1,   899,   643,
    3107       -1,    -1,  1284,     0,    -1,    -1,   713,    -1,    -1,    -1,
    3108       -1,    -1,    -1,    -1,    -1,   942,   943,   944,    -1,  1249,
    3109     1250,  1251,    -1,  1076,  1077,    -1,   733,    -1,   572,    72,
    3110       -1,    74,    75,    76,    -1,    32,    -1,    -1,    -1,    -1,
    3111       83,    84,    -1,    -1,    -1,    -1,   590,   591,   692,    -1,
    3112      694,    -1,    -1,    -1,   698,    -1,    -1,   351,    72,   603,
    3113       74,    75,    76,    -1,    -1,    -1,   109,   699,   111,    83,
    3114       84,    -1,    69,  1000,   117,   118,    -1,   621,    -1,    -1,
    3115       -1,   713,   626,    -1,    -1,    -1,    -1,    -1,   632,    -1,
    3116     1224,   635,   636,   637,    -1,   109,    -1,   111,    -1,   806,
    3117       -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,   653,
    3118       -1,    -1,    -1,    26,    27,    28,    -1,    -1,    -1,  1018,
    3119     1019,    -1,  1256,    -1,   418,    -1,    -1,   671,    -1,    -1,
    3120     1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,   682,   433,
    3121       -1,    -1,    -1,    -1,   438,    -1,    -1,    -1,  1378,  1379,
    3122       -1,  1052,   446,    -1,  1081,    -1,    -1,  1387,  1388,   156,
    3123       -1,    -1,    -1,    -1,   708,    -1,    -1,   711,    -1,    -1,
    3124      464,  1224,    -1,    -1,   806,    -1,   720,  1076,  1077,   723,
    3125       -1,    -1,    -1,    -1,    -1,    98,    -1,   100,   482,    -1,
    3126      484,    -1,    -1,    -1,  1328,  1425,  1123,    -1,    -1,    -1,
    3127       -1,   745,   746,  1256,    -1,    -1,    -1,   751,    -1,    -1,
    3128       -1,  1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,
    3129       -1,    -1,    -1,    -1,   868,    -1,    -1,    -1,    -1,    -1,
    3130      874,    -1,   526,    -1,    -1,    -1,    -1,    26,    27,    28,
    3131       -1,    -1,    -1,    -1,    -1,    -1,   790,    -1,    -1,    -1,
    3132       -1,    -1,  1482,  1483,   251,    -1,   800,    -1,   802,   256,
    3133      804,    -1,  1492,   807,    -1,   809,   810,    -1,   181,    -1,
    3134      814,   915,    -1,    -1,    -1,  1328,  1506,  1507,   191,   192,
    3135      824,  1208,    -1,   196,    -1,   198,   199,    -1,    -1,    -1,
    3136       -1,    -1,    -1,    -1,    -1,    -1,  1003,   591,    -1,    -1,
    3137       -1,  1531,    -1,  1230,    -1,    -1,    -1,    -1,    -1,    98,
    3138       -1,   100,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
    3139       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   972,    -1,
    3140       -1,   875,    -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,
    3141       -1,   635,   636,   637,    -1,    -1,    -1,    32,    -1,    -1,
    3142       -1,    -1,    -1,   897,   351,    -1,    -1,  1256,    -1,   653,
    3143      904,   905,    -1,    -1,   908,  1264,  1265,  1266,    -1,    -1,
    3144       -1,  1003,    -1,    -1,    -1,    -1,    -1,   671,    -1,    -1,
    3145       -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,   682,    -1,
    3146      934,    -1,   181,    -1,    -1,  1322,    -1,  1298,   942,   943,
    3147      189,    -1,   191,   192,    -1,    -1,    -1,   196,    -1,   198,
    3148      199,    -1,    -1,    -1,   708,    -1,    -1,   711,    -1,    -1,
    3149       -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,  1072,  1328,
    3150       -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,
    3151       -1,   438,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   446,
    3152       -1,    -1,   746,    -1,    -1,    -1,  1000,    10,    11,    12,
    3153       13,    14,    -1,    -1,    -1,    -1,    -1,   464,    -1,  1013,
    3154       -1,   156,    -1,    -1,  1018,  1019,    -1,  1021,  1022,   268,
    3155       -1,    -1,  1189,    -1,    -1,   482,    39,   484,    -1,    -1,
    3156       -1,    -1,    -1,  1420,    -1,    -1,   790,  1041,    -1,    -1,
    3157       -1,    -1,    -1,    -1,    -1,    -1,   800,    -1,   802,    -1,
    3158       -1,    -1,    -1,   807,    67,    -1,   810,    -1,    -1,    72,
    3159      814,    74,    75,    76,  1451,    -1,  1453,    -1,    -1,   526,
    3160       83,    84,  1076,  1077,    -1,    -1,    -1,    -1,    -1,    -1,
    3161       -1,  1185,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1450,
    3162       -1,  1452,    -1,    -1,    -1,    -1,   109,  1189,   111,    -1,
    3163     1487,    -1,  1489,    -1,   117,   118,   251,    -1,    -1,    -1,
    3164       -1,   256,    -1,    -1,    -1,    -1,    -1,  1284,    -1,  1123,
    3165       -1,   875,    -1,    -1,    -1,  1486,    -1,  1488,    -1,  1516,
    3166       -1,    -1,    -1,    -1,   591,    -1,    -1,    -1,    -1,    -1,
    3167       -1,    -1,    -1,  1147,    -1,    -1,    -1,    -1,    -1,     0,
    3168       -1,   905,    -1,    -1,    -1,    -1,    -1,   189,    -1,    -1,
    3169       -1,    -1,    -1,    -1,   196,    -1,    -1,    -1,    -1,  1530,
    3170       -1,  1532,    -1,    -1,    -1,    -1,    -1,    -1,   635,   636,
    3171      637,    32,    -1,    -1,  1545,  1546,  1190,    -1,    -1,    -1,
    3172       -1,    -1,  1284,    -1,    -1,    -1,   653,    -1,    -1,    -1,
    3173       -1,    -1,   575,   576,  1208,    -1,   351,    -1,  1212,    -1,
    3174       -1,    -1,    -1,    -1,   671,    -1,    -1,    -1,    69,    -1,
    3175     1224,    -1,  1226,    -1,    -1,   682,  1230,    -1,    -1,    -1,
    3176       -1,   604,    -1,    -1,   607,   608,   268,   610,    -1,   612,
    3177      613,    -1,    -1,    -1,   617,   618,    -1,    -1,    -1,    -1,
    3178       -1,   708,  1256,    -1,   711,    -1,    -1,    -1,    -1,    -1,
    3179     1264,  1265,  1266,    -1,  1018,  1019,    -1,  1021,  1022,    -1,
    3180       -1,  1275,  1276,   418,    -1,    -1,    -1,    -1,    10,    11,
    3181       12,    13,    14,    -1,    -1,  1289,    -1,  1041,   433,   746,
    3182       -1,   323,    -1,   438,    -1,    -1,    -1,    -1,    -1,   331,
    3183       -1,   446,   334,    -1,    -1,   156,    -1,    39,    -1,    -1,
    3184       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1322,   464,
    3185       -1,    -1,  1076,  1077,  1328,    -1,   575,   576,    -1,    -1,
    3186       -1,    -1,    -1,   790,    -1,    67,    -1,   482,    -1,   484,
    3187       72,    -1,    -1,   800,    76,   802,    -1,    -1,    -1,    -1,
    3188      807,    83,    84,   810,    -1,   604,    -1,   814,   607,   608,
    3189       -1,   610,    -1,   612,   613,    -1,   398,    -1,   617,   618,
    3190      402,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,
    3191       -1,   526,   755,   756,    -1,   117,   118,    -1,    -1,    -1,
    3192       -1,  1395,    -1,  1147,    -1,    -1,    -1,    -1,    -1,    -1,
    3193      251,    -1,    -1,    -1,    -1,   256,    -1,    -1,    -1,    -1,
    3194       -1,    -1,    -1,    -1,    -1,    -1,  1420,    -1,   875,    -1,
     2830       0,     1,    43,    43,    43,   238,   184,     0,   116,   203,
     2831       1,   184,     0,   530,   184,   218,     0,   184,   184,   509,
     2832     740,     0,   167,   168,   740,   740,   184,   184,   860,   613,
     2833     595,    32,    32,   593,   725,   637,   347,     1,    43,    32,
     2834     460,   593,   517,    43,    32,   478,   488,   593,    32,    49,
     2835     492,   347,   566,    32,   105,   186,    49,   595,  1301,    39,
     2836     185,     0,   966,    63,   423,   424,    66,    81,    43,    69,
     2837      63,   593,   683,    66,   593,   362,    69,   593,    69,   366,
     2838    1002,  1003,    28,   593,    97,    49,   264,  1020,  1003,    43,
     2839      39,   264,   200,    32,   264,    81,    49,   264,   264,   627,
     2840     628,    51,     0,     1,   155,   105,   264,   264,   118,  1013,
     2841       0,  1110,   109,   113,    72,   643,   116,   117,   131,    81,
     2842       0,   343,  1032,  1033,   134,   106,   112,    66,   109,   260,
     2843     261,   490,    78,   113,    32,    63,   133,   111,    44,    45,
     2844     265,   105,    32,   184,   184,   184,   146,   147,    39,   113,
     2845     509,   113,    32,  1485,   147,   155,   156,    49,  1401,   159,
     2846     113,   111,   111,    43,   113,    64,   159,   860,   280,    49,
     2847     890,    69,   628,   701,   890,   890,   134,   111,   415,   184,
     2848    1512,   185,   146,    63,   184,   185,    66,   643,   484,    69,
     2849     709,   155,   185,   709,   627,   628,  1106,   434,   255,   709,
     2850     200,   686,  1485,   678,   407,   442,   134,   596,   208,   184,
     2851     643,   117,   111,   602,   573,   208,   111,   112,   113,    39,
     2852     220,   113,  1505,   264,   264,   264,    39,   220,  1380,  1512,
     2853     184,  1230,    72,  1232,  1233,    72,   217,   111,   238,   799,
     2854     204,   661,    44,    45,   208,   701,   811,   799,    39,   250,
     2855     250,    39,    11,   799,   146,   208,   478,   250,   258,   133,
     2856      98,   265,   250,   263,   264,   265,   250,   147,   701,   783,
     2857     270,   250,   265,   811,   238,   886,   255,   799,   403,   159,
     2858     799,   220,   119,   799,   595,   393,   124,  1202,   339,   799,
     2859     271,   111,    98,   113,   134,   295,   583,   278,   111,   118,
     2860     113,  1453,    87,   736,   184,   185,   270,   909,   308,   273,
     2861     111,   250,  1384,   421,   116,   134,   208,   270,   124,   427,
     2862     111,   114,   113,   111,   324,   113,  1435,  1020,   208,   329,
     2863     115,   295,   116,  1255,  1256,  1268,   329,   624,  1029,   339,
     2864     220,  1256,   295,   343,   308,   227,   238,   347,   348,   111,
     2865     112,   476,   250,   918,   112,   308,  1188,   917,   415,   779,
     2866     250,  1470,   362,  1472,   246,   255,   366,    44,    45,   789,
     2867     250,   917,     0,     1,   132,   339,    72,   434,   270,   343,
     2868     800,   112,   363,   118,   264,   442,   367,   118,   500,    85,
     2869      86,   613,     3,   393,  1456,   917,   618,   981,   362,   403,
     2870    1462,   597,   366,   403,    32,   601,   891,  1311,  1480,   348,
     2871     403,    55,   801,  1485,   118,   111,   308,   113,    30,     3,
     2872    1482,   421,   112,   423,   424,  1487,   622,   427,   132,   429,
     2873     626,   118,    72,  1505,    72,   672,   415,   112,    66,   116,
     2874    1512,    69,   132,     0,   118,    85,    86,    85,    86,   329,
     2875     450,   343,   937,    97,  1376,   434,   889,   132,   132,   423,
     2876     424,  1376,     0,   442,  1368,  1369,   118,   347,   468,   111,
     2877      82,    83,   476,   113,   964,   113,   476,   952,   478,   295,
     2878     480,   111,   134,   476,   484,   927,   450,   480,   121,   122,
     2879     490,  1424,   480,   638,   118,  1188,   480,   450,  1431,   463,
     2880     811,   480,   502,  1105,   504,   792,   112,   507,   132,   509,
     2881     510,   118,   118,  1078,   736,   811,   647,   517,   118,   118,
     2882     113,   521,   115,   403,   488,   415,   490,   134,   492,   114,
     2883     469,   423,   424,   118,   134,   134,   112,   645,   502,   132,
     2884     504,   480,   118,   507,   434,   509,   510,   133,   192,   502,
     2885    1483,   504,   442,   678,   507,   111,   118,   510,     4,     5,
     2886       6,     7,     8,     9,   130,   565,   566,   133,   112,  1002,
     2887     118,   215,   134,   573,   118,  1268,   111,  1268,   113,   999,
     2888    1000,   225,   480,   583,   584,   112,   134,   587,   478,  1064,
     2889     480,   118,   220,   593,  1069,   595,   584,   112,   490,   111,
     2890     480,   990,   991,   118,   484,   118,   112,   423,   424,   573,
     2891     114,  1096,   118,   613,   118,   672,   728,   509,   618,   583,
     2892     620,   134,   250,    69,   624,    71,   922,   627,   628,   111,
     2893     242,   118,   112,   614,  1054,  1055,   111,   833,   118,   118,
     2894     118,   698,   118,   643,   847,   645,   118,   134,   629,   613,
     2895     112,   295,  1343,   114,   618,   134,   134,   118,   134,    72,
     2896     624,   642,   134,    76,   867,   114,    72,   889,    49,   118,
     2897    1155,  1156,    85,    86,   678,   675,   615,   119,   678,    85,
     2898      86,   573,    63,   125,   126,    66,   502,   111,    69,   112,
     2899     112,   507,  1125,   672,   510,   118,   929,   111,   111,   113,
     2900     113,   701,   702,   703,    90,    91,   119,   120,   853,   709,
     2901     710,   675,   890,   593,   114,   595,   112,   890,   118,   698,
     2902     890,   613,   675,   890,   890,   112,   618,   923,   112,   112,
     2903     112,  1424,   890,   890,   118,   118,   736,  1428,  1431,  1430,
     2904     740,   741,   111,   724,   113,   112,   112,   112,   564,   713,
     2905     689,   118,   118,     4,     5,     6,     7,     8,     9,   981,
     2906     111,    92,    93,     1,   703,   377,   147,   892,  1285,  1489,
     2907     112,   112,   111,  1489,  1489,   112,   118,   118,   159,   117,
     2908    1200,   118,   672,   783,     4,     5,     6,     7,     8,     9,
     2909    1483,   111,   792,  1484,   794,   439,   127,   128,   678,   799,
     2910     994,   112,    72,   111,   185,   113,  1094,   118,   698,    79,
     2911    1098,   811,    82,    33,    84,    85,    86,  1237,    69,   134,
     2912      71,   465,  1255,   111,  1244,  1245,  1246,   208,   792,   709,
     2913     710,    72,   112,    74,    75,    76,    94,    95,   118,   220,
     2914      72,   112,    74,    75,    85,    86,   736,   118,   111,    69,
     2915     113,    71,   480,    85,    86,   794,   119,   120,   502,   111,
     2916     860,   113,   111,   507,    66,    64,   510,     0,     1,   111,
     2917    1015,   113,   860,   134,   111,   487,   113,   489,  1363,   111,
     2918      82,   860,   882,   134,   116,   112,   113,  1307,   892,   889,
     2919     890,   116,   892,   116,   882,  1380,    29,    30,    72,    32,
     2920      74,    75,   116,  1125,   904,   134,    57,   111,   112,   113,
     2921      43,    85,    86,    72,   111,   117,    49,   917,   918,   799,
     2922      79,   860,   922,    82,    57,    84,    85,    86,   928,   929,
     2923      63,   811,    72,    66,    74,    75,    69,   928,   134,  1064,
     2924     904,   111,   116,   113,  1069,    85,    86,    81,   329,    82,
     2925      83,   904,   952,   111,   113,   106,   111,   159,   109,   283,
     2926     117,   118,   860,   927,   928,   929,    81,  1452,  1453,   502,
     2927     860,   504,   120,   106,   507,   129,   109,   510,  1086,    96,
     2928    1202,   981,  1094,   116,   308,   309,  1098,  1099,   130,   111,
     2929    1465,   113,   111,   113,   113,   111,   112,   113,     3,   889,
     2930     119,   120,  1002,  1003,   114,    10,    11,    12,    13,    14,
     2931     890,   114,   892,   251,   147,   112,   660,   981,   220,   343,
     2932    1020,   633,   403,    58,    59,   669,   159,   117,   118,   673,
     2933     928,   895,  1020,   897,    39,    44,    45,   929,   112,  1514,
     2934     112,  1020,   922,   112,    72,   984,    74,    75,    76,  1111,
     2935    1112,   184,   185,   112,   378,   112,   258,    85,    86,  1059,
     2936    1064,   263,    67,   111,  1064,  1069,   217,   200,   114,  1069,
     2937     682,   111,   684,   113,   113,   208,   688,   118,  1078,   119,
     2938     120,  1020,   116,   111,   217,   113,  1086,   220,   133,   981,
     2939     116,   119,   120,   116,   227,  1059,   549,   550,    72,   111,
     2940    1212,   111,   112,   113,   132,    79,  1059,   114,    82,   242,
     2941      84,    85,    86,   246,    58,    59,    60,   250,   251,   133,
     2942     271,   112,  1020,   551,   552,  1125,   112,   278,   557,   558,
     2943    1020,   264,   265,     3,   553,   554,   555,   556,   271,   113,
     2944      10,    11,    12,    13,    14,   278,   348,     3,    10,    11,
     2945      12,    13,    14,   114,    10,    11,    12,    13,    14,   114,
     2946      72,   132,    74,    75,    76,   132,  1166,  1167,    72,    39,
     2947      74,    75,    76,    85,    86,   132,  1167,    39,   118,   860,
     2948      29,    85,    86,    39,  1064,   112,   112,   116,  1188,  1069,
     2949    1302,   112,   117,   117,  1306,   346,   329,    67,   117,   111,
     2950    1188,   113,  1202,   118,   111,    67,  1206,   119,   120,  1188,
     2951     112,    67,   363,   346,   347,  1206,   367,    10,    11,    12,
     2952      13,    14,   546,   547,   548,   463,   428,  1166,   134,   132,
     2953     363,   112,   860,   118,   367,  1125,   112,   112,   112,   112,
     2954     884,   853,  1206,   112,   377,   112,    39,   859,   112,  1188,
     2955     118,  1359,   112,   112,   112,  1255,  1256,   112,   112,   112,
     2956     393,   112,   112,  1263,   112,     0,  1499,   469,  1268,  1167,
     2957     403,   117,    29,   112,    67,   118,   133,   114,   114,   112,
     2958    1268,   112,   112,   118,   111,   132,   524,   899,   421,  1268,
     2959    1188,   529,    72,  1405,   427,   118,   116,    32,  1188,    79,
     2960     928,  1301,    82,   132,    84,    85,    86,   112,  1206,   112,
     2961    1301,  1489,  1202,   112,   118,   112,  1489,   112,   111,  1489,
     2962     113,   112,  1489,  1489,  1263,   111,   119,   120,   118,  1268,
     2963     463,  1489,  1489,   113,    69,   468,    72,  1301,   111,   577,
     2964      76,   118,  1023,   476,   956,   111,   111,   480,   111,    85,
     2965      86,   484,  1168,  1169,   487,  1171,   489,  1465,   132,  1359,
     2966     112,   117,  1178,   134,  1180,  1490,   112,   117,    72,   112,
     2967    1268,   130,    76,   117,   116,   111,  1376,  1358,  1268,   134,
     2968     114,    85,    86,   119,   120,   587,   112,  1031,   118,  1514,
     2969     114,   524,  1020,   114,   112,   112,   529,    47,   114,   114,
     2970     114,  1401,   112,  1301,   117,   114,   644,   111,   646,   114,
     2971    1401,   114,   134,   615,   134,   119,   120,   112,   620,     0,
     2972       1,   156,   134,   747,  1424,   117,    72,   134,    74,    75,
     2973     112,  1431,   134,  1433,   132,  1435,  1424,  1401,  1050,    85,
     2974      86,   117,   114,  1431,   577,  1424,    83,   114,  1489,  1489,
     2975    1489,    32,  1431,   114,   114,   114,   114,   112,   696,   112,
     2976     593,    60,   595,   614,   111,  1465,   114,   113,    49,  1433,
     2977    1470,  1435,  1472,   111,   116,   111,    98,   112,   629,   112,
     2978    1433,   614,  1435,  1483,   111,  1424,  1490,   689,    69,  1489,
     2979    1490,   642,  1431,   661,   229,  1483,   629,  1490,   114,  1499,
     2980     633,   703,   134,  1401,  1483,   114,  1470,  1188,  1472,   642,
     2981    1514,   644,   645,   646,  1514,   250,   112,  1470,   112,  1472,
     2982     255,  1514,   114,  1339,   105,    98,  1424,   111,   111,   134,
     2983     117,    42,   112,  1431,  1424,  1499,   112,   112,  1166,  1167,
     2984      72,  1431,    74,    75,  1483,   678,   112,   118,   134,   682,
     2985    1162,   684,   134,    85,    86,   688,    70,   112,   132,    73,
     2986    1188,   112,    76,   696,    78,    98,   147,    98,   112,   134,
     2987     134,    85,   112,   724,   155,   156,   709,   710,  1206,   111,
     2988     114,   134,   112,   112,   116,  1483,    72,   114,    74,    75,
     2989      76,   724,   794,  1483,   117,   114,   134,   134,   111,    85,
     2990      86,   117,   117,  1284,   185,   112,   112,  1499,   134,  1489,
     2991     112,   779,   112,   657,   349,  1035,   559,   562,   560,   200,
     2992     561,   789,   203,   204,   563,   111,   961,   208,  1188,  1453,
     2993    1345,  1524,   800,  1277,  1099,  1263,  1306,  1278,    66,  1431,
     2994    1268,    10,    11,    12,    13,    14,  1050,    75,   229,   686,
     2995     675,   675,   233,  1069,   235,   688,  1337,   981,   897,  1340,
     2996     905,   577,   956,   244,   853,   925,   799,   639,   480,   250,
     2997      39,   713,  1206,  1301,   255,   724,   565,   565,   811,   565,
     2998     415,    -1,    -1,    -1,   265,    -1,    -1,    -1,    -1,   117,
     2999      -1,    -1,   273,    -1,   429,    -1,  1020,   211,    67,   434,
     3000      -1,    -1,    -1,  1384,    -1,   943,    -1,   442,  1389,    -1,
     3001      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
     3002     853,    -1,    -1,    -1,   962,   460,   859,    -1,   966,    -1,
     3003      -1,   159,    -1,    -1,    -1,    -1,    -1,  1418,    -1,    39,
     3004     777,    -1,   111,   478,   113,   480,    -1,    -1,    -1,    -1,
     3005     119,   120,    -1,    -1,    -1,    -1,    -1,   890,   339,   892,
     3006      -1,    -1,   343,    -1,   278,    -1,   899,    67,   349,    -1,
     3007      -1,    -1,    -1,  1401,    83,  1013,    -1,    -1,    87,    88,
     3008      89,   362,   984,    -1,    -1,   366,   521,    -1,  1432,   922,
     3009    1434,    -1,   220,    -1,    -1,    -1,  1424,    -1,   188,    -1,
     3010      -1,    66,   111,  1431,   113,   195,   115,   116,    -1,    -1,
     3011     943,   111,   849,   113,    -1,    -1,    -1,    -1,    -1,   119,
     3012     120,    -1,  1503,   956,    -1,  1469,    -1,  1471,  1509,   962,
     3013     258,   999,  1000,   966,   415,   263,   350,    -1,   352,  1520,
     3014      -1,    -1,    -1,  1524,    -1,    -1,    -1,    -1,   429,   584,
     3015     278,    -1,   117,   434,   891,  1483,    -1,    -1,    -1,    -1,
     3016      -1,   442,    72,    -1,    74,    75,    76,    -1,    -1,  1513,
     3017      -1,  1515,  1110,    -1,    -1,    85,    86,   267,    -1,   460,
     3018    1013,    -1,   463,    -1,  1528,  1529,  1054,  1055,    -1,    -1,
     3019      -1,    -1,   627,   628,   159,    -1,    -1,   478,    -1,   480,
     3020     937,   111,    -1,   113,    -1,    -1,    -1,   488,   643,   119,
     3021     120,   492,    10,    11,    12,    13,    14,  1050,    -1,    -1,
     3022     348,    -1,    -1,    -1,   438,    -1,   661,    -1,    -1,    -1,
     3023      -1,  1064,   969,    -1,   324,    -1,  1069,   672,    -1,    -1,
     3024     521,    39,   332,    -1,    72,   335,    74,    75,    76,    -1,
     3025       0,    -1,    -1,  1086,    -1,   220,    -1,    85,    86,    -1,
     3026      -1,    -1,    -1,   698,  1166,    -1,   701,    -1,    -1,    67,
     3027      -1,    -1,    -1,    -1,    72,    -1,    -1,  1110,    76,    -1,
     3028    1017,    -1,    32,   111,    -1,   566,    -1,    85,    86,    -1,
     3029      -1,    -1,  1230,   258,  1232,  1233,    -1,    -1,   263,    -1,
     3030     428,   736,   583,   584,    -1,   395,    -1,    -1,    -1,   399,
     3031      -1,    -1,    -1,   111,   595,    -1,   444,    -1,    -1,    69,
     3032     460,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,  1162,
     3033      -1,    -1,   613,    -1,     0,    -1,    -1,   618,    -1,    -1,
     3034      -1,   469,    -1,   624,   779,    -1,   627,   628,    -1,    -1,
     3035      -1,    -1,    -1,    -1,   789,    -1,    -1,    -1,    -1,  1096,
     3036     795,  1263,   643,    -1,    -1,   800,    32,    -1,    72,  1237,
     3037      74,    75,    76,  1311,    -1,    -1,  1244,  1245,  1246,    -1,
     3038     661,    85,    86,   348,    -1,   475,    -1,    -1,    -1,    -1,
     3039      -1,   672,    -1,    -1,    -1,    -1,    -1,  1230,    -1,  1232,
     3040    1233,    -1,    -1,    69,    -1,    -1,   156,   111,    10,    11,
     3041      12,    13,    14,    -1,    -1,   119,   120,   698,  1155,  1156,
     3042     701,    -1,    -1,    -1,    -1,   860,    -1,    -1,    -1,   710,
     3043    1368,  1369,   713,    -1,    -1,    -1,    -1,    39,    -1,  1307,
     3044      10,    11,    12,    13,    14,    -1,    -1,   882,    -1,    -1,
     3045      -1,    -1,    -1,    -1,   889,   736,    -1,    -1,    -1,   587,
     3046     741,    -1,    -1,   428,    -1,    67,    -1,    -1,  1406,    39,
     3047      72,    -1,    74,    75,    76,   565,   566,    -1,  1311,    -1,
     3048      -1,    -1,    -1,    85,    86,    -1,    -1,   615,    -1,    -1,
     3049     156,    -1,   620,    -1,    -1,    -1,    -1,    67,   779,    -1,
     3050     250,    -1,    72,    -1,   469,   255,    76,  1358,   789,   111,
     3051     724,   792,    -1,    -1,   795,    85,    86,   119,   120,   800,
     3052      -1,   661,    -1,    -1,    -1,  1358,  1359,    -1,  1466,   810,
     3053      72,    -1,    74,    75,    76,  1368,  1369,  1475,     0,     1,
     3054      -1,   111,    -1,    85,    86,    -1,    -1,    -1,    -1,   119,
     3055     120,    -1,    10,    11,    12,    13,    14,    -1,   648,    -1,
     3056      -1,   689,   652,    -1,   999,  1000,    -1,  1002,  1003,   111,
     3057      32,   113,    -1,  1406,    -1,   703,    -1,   119,   120,   860,
     3058      -1,    39,    -1,    -1,   250,  1020,    -1,    -1,    -1,   255,
     3059      -1,    -1,    -1,    -1,    -1,    -1,   724,    -1,    -1,   349,
     3060      -1,   882,    -1,    -1,    66,    -1,    -1,    69,   889,    67,
     3061      -1,   892,    -1,    -1,    72,    -1,    74,    75,    76,  1054,
     3062    1055,    -1,   587,    -1,    -1,    -1,  1363,    85,    86,    -1,
     3063      -1,    -1,  1465,  1466,    -1,    -1,    -1,   918,    -1,   779,
     3064      -1,    -1,  1475,  1380,    -1,    -1,   927,   928,     0,   789,
     3065     615,    -1,    -1,   111,    -1,   620,  1489,  1490,    -1,    -1,
     3066     800,   119,   120,    -1,    -1,   415,   794,    -1,    -1,    10,
     3067      11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,   429,
     3068      32,  1514,    -1,   349,   434,    -1,    -1,    -1,    -1,    -1,
     3069    1125,    -1,   442,   783,   156,    -1,    -1,    -1,    39,    -1,
     3070     981,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3071     460,    -1,    -1,   994,    -1,  1452,  1453,    69,   999,  1000,
     3072      -1,  1002,  1003,    -1,   689,    -1,    67,    -1,   478,    -1,
     3073     480,    72,  1167,    74,    75,    76,    -1,    -1,   703,  1020,
     3074      -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    72,   415,
     3075      74,    75,    76,  1188,    -1,    -1,    -1,    -1,   220,    -1,
     3076      -1,    85,    86,   429,    -1,  1200,    -1,  1202,   434,    -1,
     3077     111,   521,   113,  1054,  1055,    -1,   442,    -1,   119,   120,
     3078      -1,    -1,    -1,    -1,    -1,    83,    -1,   111,   250,    87,
     3079      88,    89,    -1,    -1,   460,   119,   120,    -1,    -1,    -1,
     3080      -1,    -1,  1237,    -1,   156,    -1,   896,    -1,    -1,  1244,
     3081    1245,  1246,   478,   111,   480,   113,    -1,   115,   116,    -1,
     3082    1255,  1256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   794,
     3083      -1,    -1,    -1,  1268,   584,    -1,    -1,    -1,    -1,    -1,
     3084      -1,    -1,    -1,    -1,  1125,    -1,    -1,    -1,    -1,    -1,
     3085      -1,    -1,    -1,    -1,    -1,   521,   984,    -1,    -1,   999,
     3086    1000,    99,   100,   101,   102,   103,   104,   105,   106,   107,
     3087     108,   109,  1307,    -1,    -1,    -1,    -1,   627,   628,    -1,
     3088      -1,   971,    -1,    -1,    -1,    -1,  1167,    -1,    -1,    -1,
     3089      -1,    -1,    -1,   643,    -1,   133,    -1,   987,   250,    -1,
     3090      -1,    -1,    -1,   255,    -1,    -1,    -1,  1188,    -1,    -1,
     3091      -1,   661,    -1,    -1,  1054,  1055,    -1,    -1,   584,  1200,
     3092      -1,  1202,   672,    -1,    -1,  1206,    -1,    -1,    -1,    -1,
    31953093      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3196       -1,    -1,    -1,    -1,    -1,    -1,  1190,    -1,  1442,    -1,
    3197       -1,    -1,    -1,    -1,    -1,  1449,   591,   479,   905,    -1,
    3198       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1212,    -1,
     3094      -1,  1376,    -1,    -1,    -1,    -1,    -1,    -1,   698,    -1,
     3095      -1,   701,    -1,    -1,    -1,    -1,  1237,    -1,    -1,    -1,
     3096      -1,   627,   628,  1244,  1245,  1246,    -1,   429,    -1,    -1,
     3097      -1,    -1,  1062,    -1,  1255,  1256,    -1,   643,    -1,    -1,
     3098      -1,    -1,    -1,    -1,    -1,    -1,   736,  1268,    -1,  1424,
     3099      -1,    -1,    -1,    -1,    -1,   661,  1431,   349,    53,    -1,
     3100      55,    -1,    -1,    58,    59,    60,   672,    62,    -1,    -1,
     3101      -1,  1101,    -1,    -1,    -1,    -1,    -1,    -1,   480,   984,
     3102    1301,    76,    -1,    -1,    -1,    -1,  1307,    -1,    -1,   779,
     3103      -1,    -1,   698,    88,    89,   701,    -1,    -1,  1166,   789,
     3104      -1,    -1,    -1,    -1,    -1,   795,    -1,    -1,  1483,    -1,
     3105     800,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   521,
     3106    1200,    -1,    -1,   415,    -1,    -1,    -1,    -1,    -1,    -1,
     3107     736,    -1,    -1,    -1,    -1,    -1,    -1,   429,    -1,    -1,
     3108      -1,    -1,   434,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3109     442,    -1,    -1,    -1,    -1,  1376,    -1,  1237,    -1,    -1,
     3110      -1,    -1,    -1,    -1,  1244,  1245,  1246,    -1,   460,    -1,
     3111     860,    -1,    -1,   779,    -1,    -1,    -1,    -1,    -1,    -1,
     3112    1401,    -1,   584,   789,    -1,    -1,   478,    -1,   480,   795,
     3113      -1,    -1,   882,    -1,   800,  1263,    -1,    -1,    -1,   889,
     3114      -1,    -1,    -1,  1424,    -1,    -1,    -1,    -1,    -1,    -1,
     3115    1431,    -1,     7,    -1,    -1,    10,    11,    12,    13,    14,
     3116      -1,    -1,    -1,    -1,    -1,   627,   628,  1307,    -1,   521,
    31993117      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3200     1224,    -1,  1226,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3201       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,
    3202      635,   636,   637,    -1,    -1,    -1,  1500,    -1,    -1,    -1,
    3203      351,    -1,  1256,  1507,    -1,    -1,   755,   756,   653,    -1,
    3204     1264,  1265,  1266,    39,    -1,    -1,    -1,    -1,    -1,    -1,
    3205       -1,  1275,  1276,    -1,    -1,    -1,   671,    -1,    -1,    -1,
    3206       -1,    -1,    -1,    -1,    -1,  1289,    -1,   682,    -1,   571,
    3207      572,    67,    -1,    -1,   917,    -1,    72,    -1,    74,    75,
    3208       76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
    3209       -1,  1018,  1019,   708,  1021,  1022,   711,   418,    -1,    -1,
    3210       -1,    -1,    -1,    -1,  1328,    -1,    -1,    -1,    -1,    -1,
    3211       -1,    -1,   433,   109,  1041,   111,    -1,   438,    -1,    -1,
    3212       -1,   117,   118,    -1,    -1,   446,    -1,    -1,    -1,    -1,
    3213       -1,   746,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3214       -1,    -1,    -1,   464,    -1,    -1,    -1,    -1,    -1,  1076,
    3215     1077,    -1,    -1,    -1,    -1,    -1,   658,    -1,    -1,    -1,
    3216      662,   482,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,
    3217       -1,  1395,    -1,    -1,    -1,   790,    -1,    -1,    -1,    -1,
    3218       -1,    -1,    -1,    -1,    -1,   800,    -1,   802,    -1,    -1,
    3219       -1,    -1,   807,   912,    -1,   810,    -1,    -1,   917,   814,
    3220       -1,    -1,    -1,    -1,    -1,   526,    53,    -1,    55,    -1,
    3221       -1,    58,    59,    60,    -1,    62,    -1,    -1,  1442,    -1,
    3222     1147,    -1,    -1,    -1,    -1,  1449,    -1,    -1,    -1,    76,
    3223       -1,    -1,    -1,    -1,    -1,  1078,    -1,    -1,    -1,    -1,
    3224       -1,    88,    89,    -1,    10,    11,    12,    13,    14,    -1,
     3118      -1,   643,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3119      -1,    -1,    -1,    -1,   860,    -1,    -1,    -1,    -1,    -1,
     3120      -1,  1166,  1483,    -1,    -1,    -1,    -1,    -1,    -1,  1490,
     3121      -1,    66,    67,    -1,    -1,    -1,   882,    72,    -1,    -1,
     3122      -1,    76,    -1,   889,    79,    80,    81,    82,    83,    84,
     3123      85,    86,   584,    88,    89,    -1,    -1,    -1,    -1,   701,
     3124      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   999,
     3125    1000,    -1,  1002,  1003,    -1,    -1,   111,    -1,   113,    -1,
     3126      -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
     3127    1020,    -1,    -1,    -1,    -1,   627,   628,    -1,    -1,    -1,
     3128      -1,    -1,    -1,    -1,    -1,    -1,    -1,   342,    -1,   344,
     3129      -1,   643,    -1,    10,    11,    12,    13,    14,  1263,    -1,
     3130     355,   356,    -1,    -1,  1054,  1055,    -1,    -1,    -1,   661,
     3131      -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3132     672,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3133      -1,    -1,    -1,   999,  1000,    -1,  1002,  1003,    -1,    -1,
     3134      -1,    -1,    -1,    -1,    39,    -1,   698,    -1,    -1,   701,
     3135      67,    -1,    -1,    -1,  1020,    72,    -1,    74,    75,    76,
     3136      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,
     3137      -1,    -1,    67,    -1,    -1,  1125,    -1,    72,    -1,    74,
     3138      75,    76,    -1,    -1,   736,    -1,    -1,    -1,  1054,  1055,
     3139      85,    86,    -1,    -1,   111,    -1,   113,    -1,   860,    -1,
     3140      -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,
     3141      -1,    -1,    -1,    -1,    -1,    -1,   111,  1167,   113,    -1,
     3142     882,    -1,    -1,    -1,   119,   120,    -1,   779,    37,    38,
     3143      -1,    40,    -1,    -1,    -1,    -1,    -1,   789,  1188,    -1,
     3144      -1,    -1,    -1,   795,    -1,    -1,    -1,    -1,   800,    -1,
     3145    1200,    -1,  1202,    -1,    -1,    -1,    -1,    66,    -1,  1125,
     3146      -1,    -1,    -1,    72,    -1,    -1,   928,    76,    -1,    -1,
     3147      79,    80,    81,    82,    83,    84,    85,    86,    -1,    88,
     3148      89,    -1,    -1,    -1,    -1,    -1,    -1,  1237,    -1,    -1,
     3149      -1,    -1,    -1,    -1,  1244,  1245,  1246,    -1,    -1,    -1,
     3150      -1,  1167,   111,    -1,   113,  1255,  1256,    -1,   860,    -1,
     3151     119,   120,   121,   122,   123,   124,    -1,    -1,  1268,    -1,
     3152      -1,    -1,  1188,   132,    -1,    -1,    -1,    -1,    -1,    -1,
     3153     882,    -1,    -1,    -1,  1200,    -1,  1202,   889,    -1,    -1,
     3154    1002,  1003,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3155      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1307,  1020,    -1,
     3156      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
     3157      -1,  1237,    -1,    75,    -1,    77,    -1,    79,  1244,  1245,
     3158    1246,    -1,    -1,    -1,    86,    -1,    -1,    -1,    -1,  1255,
     3159    1256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3160      -1,    -1,  1268,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3161      -1,    -1,    -1,    -1,    -1,   117,    -1,   119,   120,   121,
     3162      -1,    -1,    -1,    -1,    -1,    -1,  1376,    -1,    -1,    -1,
     3163      -1,    -1,    -1,    -1,    -1,   690,    -1,   692,    -1,    -1,
     3164      -1,  1307,    -1,    -1,   699,   700,    -1,   999,  1000,   704,
     3165    1002,  1003,    -1,    -1,    -1,    -1,    -1,   159,    -1,    -1,
     3166      -1,    -1,   717,    -1,    -1,    -1,    -1,   722,  1020,    -1,
     3167      -1,    -1,    -1,    -1,  1424,    -1,    -1,    -1,    -1,    -1,
     3168      -1,  1431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3169      -1,    -1,    -1,    -1,   749,    -1,    -1,    -1,    -1,    -1,
     3170      -1,    -1,  1054,  1055,  1166,  1167,    -1,    -1,    -1,    -1,
     3171    1376,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   220,    -1,
     3172     222,   223,   224,    -1,    -1,    -1,  1188,    -1,    -1,    -1,
     3173      -1,    -1,    -1,  1483,    -1,    -1,    -1,    -1,    -1,    -1,
     3174      -1,    -1,    -1,    -1,  1206,    -1,    -1,    -1,    -1,    -1,
     3175      -1,    -1,    -1,    -1,    -1,    -1,   258,    -1,  1424,    -1,
     3176      -1,   263,    -1,    -1,    -1,  1431,    -1,    -1,    -1,    -1,
     3177      -1,    -1,    -1,  1125,    -1,    -1,   278,    -1,    -1,    -1,
     3178      -1,    -1,    -1,    -1,    -1,    -1,    -1,   842,    -1,   844,
     3179     845,   846,    -1,  1255,  1256,    -1,    -1,    -1,    -1,    -1,
     3180      -1,  1263,    49,    -1,    -1,    -1,  1268,    -1,   863,    -1,
     3181      -1,    -1,    -1,    -1,    -1,  1167,    -1,  1483,    -1,    66,
     3182      -1,    -1,   877,    -1,    -1,    -1,    -1,   329,    -1,    -1,
     3183      -1,    -1,    -1,    -1,    -1,    -1,  1188,    -1,    -1,  1301,
     3184      -1,    -1,    -1,    -1,    -1,    -1,   348,    -1,  1200,    -1,
     3185    1202,   353,   354,    -1,    -1,    -1,    -1,    -1,    -1,   361,
     3186      -1,   916,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,
     3187     117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3188      -1,    -1,    -1,    -1,    -1,  1237,    -1,    -1,    -1,    -1,
     3189      -1,    -1,  1244,  1245,  1246,    -1,    -1,    -1,    -1,   146,
     3190      -1,   403,    -1,  1255,  1256,   960,    -1,    -1,    -1,   156,
     3191     965,    -1,   159,    -1,  1376,   970,  1268,    -1,    -1,   421,
     3192     975,    -1,    -1,    -1,   426,   980,   428,   982,   983,    -1,
     3193      -1,   986,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1401,
     3194     995,    -1,   444,    -1,    -1,   447,   448,    -1,    -1,    -1,
     3195      -1,    -1,    -1,   455,    -1,  1307,  1011,  1012,    -1,    -1,
     3196      -1,   208,  1424,    -1,    -1,    -1,    -1,   469,    -1,  1431,
     3197      -1,    -1,    -1,   220,   476,    -1,    -1,    -1,    -1,    -1,
     3198      -1,    -1,  1037,    -1,    -1,  1040,    -1,    -1,    -1,    -1,
     3199      -1,   238,    -1,    -1,    -1,    26,    27,    28,    10,    11,
     3200      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3201      22,    23,    24,    25,    26,    27,   263,    -1,    -1,    -1,
     3202      -1,  1483,    -1,   270,  1376,    -1,    -1,    39,  1083,    -1,
     3203      -1,    -1,    -1,    -1,  1089,  1090,    -1,    -1,    -1,    -1,
     3204      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   295,    -1,
     3205      -1,    -1,    -1,  1108,    -1,    67,    -1,    -1,  1113,    -1,
     3206      -1,   308,    -1,  1118,    -1,    -1,    -1,    98,    -1,   100,
     3207      -1,    -1,  1424,    -1,  1129,    -1,    -1,    -1,    -1,  1431,
     3208      -1,    -1,    -1,    -1,    -1,   587,    -1,  1142,    -1,  1144,
     3209    1145,  1146,  1147,    -1,    -1,    -1,   343,    -1,    -1,    -1,
     3210      -1,   348,    -1,    -1,  1159,    -1,  1161,    -1,    -1,    -1,
     3211    1165,    -1,    -1,   615,    -1,    -1,    -1,    -1,   620,    -1,
    32253212      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3226      875,    -1,    -1,  1190,    -1,    -1,    -1,    -1,    -1,    -1,
    3227      591,    -1,    -1,    39,    -1,    -1,  1500,    -1,    -1,    -1,
    3228       -1,    -1,    -1,    -1,    -1,  1212,    -1,    -1,    -1,    -1,
    3229      905,    -1,   794,    -1,    -1,    -1,    -1,  1224,    -1,  1226,
    3230       -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
    3231       76,    -1,    -1,    -1,   635,   636,   637,    83,    84,    -1,
    3232       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1256,
    3233       -1,    -1,   653,    -1,    -1,    -1,    -1,  1264,  1265,  1266,
    3234       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,  1275,  1276,
    3235      671,   117,   118,    -1,    -1,   282,    -1,   284,   285,  1078,
    3236       -1,   682,  1289,    -1,  1207,   292,   293,    -1,    -1,    -1,
     3213      -1,  1483,    -1,    -1,    -1,    -1,    -1,    -1,  1193,  1194,
     3214      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,
     3215      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   190,
     3216     191,    -1,    -1,    -1,   195,    -1,   197,   198,    -1,    -1,
     3217      44,    -1,    -1,    -1,    -1,    -1,   423,   424,    -1,    -1,
     3218      -1,    -1,   429,    -1,    -1,    -1,    -1,   689,    -1,    -1,
     3219      -1,    -1,  1247,  1248,    -1,    -1,    -1,    -1,    -1,    -1,
     3220      -1,   703,  1257,   450,    -1,    -1,    -1,    -1,    -1,    -1,
     3221      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
     3222      -1,    -1,   724,    -1,    -1,    -1,    -1,   101,    -1,    -1,
     3223      -1,   478,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3224      -1,    -1,    -1,   490,    -1,    -1,    -1,    -1,    -1,    -1,
     3225      -1,    -1,    -1,    -1,    -1,   502,    -1,   504,    -1,    -1,
     3226     507,    -1,   509,   510,  1319,    -1,  1321,  1322,  1323,    -1,
     3227      -1,    -1,    -1,    -1,   521,    -1,    -1,    -1,  1333,    -1,
     3228      -1,   783,    -1,    -1,    -1,    -1,  1341,    -1,    -1,    -1,
     3229      -1,    -1,   794,    -1,    -1,    -1,   170,    -1,    -1,    -1,
     3230      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   811,
     3231      -1,  1366,  1367,    -1,    -1,    -1,    -1,    -1,    -1,   193,
     3232      -1,    -1,    -1,    -1,    -1,    -1,   573,    -1,    -1,    -1,
     3233      -1,    -1,    -1,   207,    -1,    -1,    -1,   584,    -1,    -1,
     3234     587,    -1,   216,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3235      -1,    -1,   226,    -1,    -1,    -1,  1411,  1412,    -1,    -1,
     3236      -1,    -1,    -1,    -1,    -1,    -1,   613,    -1,    -1,  1424,
     3237      -1,   618,    -1,    -1,    -1,    -1,  1431,   251,    -1,    -1,
     3238     627,   628,   256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3239      -1,    -1,    -1,    -1,    -1,   269,   643,    -1,    -1,    -1,
     3240      -1,   275,    -1,   277,    -1,    -1,    -1,    -1,    -1,  1464,
     3241      -1,    -1,    -1,  1468,    -1,    -1,    -1,    -1,    -1,    -1,
     3242     922,    -1,   296,    -1,    -1,    -1,    -1,    -1,   675,    -1,
    32373243      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3238      307,   308,    -1,    -1,    -1,    -1,    -1,   708,    -1,    -1,
    3239      711,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3240       -1,  1328,    -1,  1018,  1019,    -1,  1021,  1022,    -1,    -1,
    3241      912,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,    -1,
    3242       -1,    -1,    -1,    -1,    -1,   746,  1041,    10,    11,    12,
    3243       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3244       23,    24,    25,    26,    27,    28,    -1,    30,    31,    32,
    3245       -1,    -1,    -1,    -1,   381,    -1,    39,    -1,    -1,    -1,
    3246       -1,  1076,  1077,    -1,    -1,    -1,    -1,    -1,  1395,   790,
    3247       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   800,
    3248       -1,   802,    -1,    -1,    67,    -1,   807,   989,  1207,   810,
    3249       -1,    74,    75,   814,    -1,    78,    -1,   344,    -1,   346,
    3250       -1,    -1,    -1,    -1,  1006,    -1,    -1,    -1,    -1,    -1,
    3251      357,   358,    -1,    -1,    -1,  1442,    -1,    -1,    -1,    -1,
    3252       37,    38,  1449,    40,    -1,    -1,   109,    -1,   111,    -1,
    3253       -1,    -1,  1147,    -1,   117,   118,    -1,    -1,    -1,    -1,
    3254       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
    3255       -1,    -1,    -1,    -1,   875,    72,    -1,    -1,    -1,    76,
    3256       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3257       87,    -1,    -1,  1500,    -1,  1190,    -1,    -1,    -1,    -1,
    3258       -1,    -1,  1084,    -1,   905,    -1,    -1,    -1,    -1,    -1,
    3259       -1,    -1,   109,    -1,   111,    -1,    -1,  1212,    -1,    -1,
    3260      117,   118,   119,   120,   121,   122,    -1,    -1,    -1,  1224,
    3261       -1,  1226,     7,   130,    -1,    10,    11,    12,    13,    14,
    3262       -1,    -1,  1124,   550,   551,   552,   553,   554,   555,   556,
    3263      557,   558,   559,   560,   561,   562,   563,   564,   565,   566,
    3264      567,  1256,    37,    38,    39,    40,    -1,    -1,    -1,  1264,
    3265     1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3266     1275,  1276,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3267       -1,    66,    67,    -1,  1289,    -1,    -1,    72,    -1,    -1,
    3268       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3269       -1,    86,    87,    -1,    -1,    -1,    -1,  1018,  1019,    -1,
    3270     1021,  1022,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3271       -1,    -1,    -1,  1328,   109,    -1,   111,    -1,    -1,    -1,
    3272     1041,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3273        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3274       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3275       23,    24,    25,    26,    27,  1076,  1077,    30,    31,    32,
    3276       33,    -1,    -1,    36,    37,    38,    39,    40,    -1,   696,
     3244      -1,  1496,    -1,  1498,    -1,    -1,    -1,    -1,    -1,    -1,
     3245     952,    -1,    -1,    -1,   701,    -1,   703,    -1,    -1,    -1,
     3246      -1,    -1,    -1,   337,    -1,    -1,    -1,   341,    -1,    -1,
     3247      -1,  1526,  1527,    -1,    -1,    -1,    -1,    -1,    -1,  1534,
     3248    1535,    -1,   984,    -1,    -1,    -1,    -1,    -1,    -1,   736,
     3249      -1,    -1,    -1,   995,    -1,   369,    -1,    -1,    -1,   373,
     3250     374,    -1,   376,    -1,    -1,    -1,    -1,    -1,    -1,   383,
     3251     384,    -1,   386,   387,    -1,   389,    -1,   391,    -1,    -1,
    32773252      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3278     1395,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3279       -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
    3280       -1,    74,    75,    76,    49,    -1,    79,    80,    81,    82,
    3281       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3282       -1,    66,    -1,    -1,    -1,    -1,  1147,  1442,    -1,    -1,
    3283      757,    -1,    -1,    -1,  1449,    -1,   109,    -1,   111,    -1,
    3284       -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
    3285       -1,    -1,    -1,   700,    -1,   702,    -1,    -1,    -1,   132,
    3286      787,    -1,   709,   710,    -1,    -1,    -1,   714,   113,  1190,
    3287       -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,   726,
    3288       -1,    -1,    -1,    -1,   731,  1500,    -1,    -1,    -1,    -1,
    3289       -1,  1212,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3290       -1,   146,    -1,  1224,    -1,  1226,    -1,    -1,    -1,    -1,
    3291       -1,   156,   759,    -1,    -1,   160,    -1,    -1,    -1,    -1,
    3292       -1,    -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,    10,
    3293       11,    12,    13,    14,    -1,  1256,    -1,    -1,    -1,    -1,
    3294       -1,    -1,    -1,  1264,  1265,  1266,    -1,    -1,    -1,    -1,
    3295       -1,    -1,    -1,    -1,  1275,  1276,    37,    38,    39,    40,
    3296       -1,    -1,    -1,    -1,   209,    -1,    -1,    -1,  1289,    -1,
    3297       -1,    -1,    -1,    -1,    -1,    -1,   221,    -1,    -1,    -1,
    3298      907,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
    3299       -1,    72,    -1,    -1,   239,    76,    -1,    -1,    79,    80,
    3300       81,    82,    83,    84,    -1,    86,    87,  1328,    -1,    -1,
    3301       -1,   858,   859,   860,   861,    -1,   863,    -1,    -1,   264,
    3302       -1,    -1,    -1,    -1,    -1,   952,   271,    -1,   109,    -1,
    3303      111,   878,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
    3304      121,   122,    -1,    -1,    -1,   892,    -1,    -1,    -1,   294,
     3253      -1,    -1,    -1,    -1,   408,    -1,    -1,    -1,   569,   570,
     3254      -1,    -1,   416,    -1,    -1,    -1,    -1,   794,    -1,    -1,
    33053255      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3306      987,    -1,   307,    -1,    -1,    -1,    -1,    -1,    -1,    66,
    3307       -1,    -1,    -1,  1000,  1395,    -1,    -1,    -1,    75,    -1,
    3308       77,    -1,    79,    -1,    -1,   932,    -1,    -1,    -1,    86,
     3256      -1,    -1,  1064,    -1,    -1,   596,   440,    -1,   599,   600,
     3257      -1,   602,    -1,   604,   605,    -1,  1078,    -1,   609,   610,
     3258      -1,    26,    27,    28,   281,    -1,   283,   284,    -1,    -1,
     3259      -1,    -1,   466,    -1,    -1,    -1,   293,   294,   472,    -1,
     3260      -1,    -1,    -1,   477,    -1,    -1,    -1,    -1,    -1,    -1,
     3261      -1,   308,   309,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3262      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
     3263     156,    -1,    -1,    -1,    -1,   882,    -1,    -1,    -1,   513,
     3264      -1,    -1,   889,    -1,    -1,    -1,   343,    -1,    -1,    -1,
     3265      -1,    -1,    -1,    98,   528,   100,    -1,   904,    -1,    -1,
     3266      -1,    -1,   188,    -1,  1166,    -1,    -1,    -1,    -1,   195,
    33093267      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3310      345,    -1,    -1,    -1,    -1,   350,    -1,    -1,    -1,    -1,
    3311       -1,    -1,    -1,    -1,  1041,    -1,    -1,    -1,    -1,    -1,
    3312      117,  1442,   119,   120,   121,    -1,    -1,    -1,  1449,    -1,
    3313      977,    -1,    -1,    -1,    -1,    -1,   983,    -1,    -1,    -1,
    3314       -1,   988,    -1,    -1,    -1,    -1,   993,    -1,   995,    -1,
    3315       -1,    -1,   999,    -1,  1001,  1002,    -1,    -1,  1005,    -1,
    3316       -1,    -1,    -1,   160,    -1,    -1,    -1,  1014,    -1,    -1,
    3317       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1500,
    3318       -1,   426,   427,    -1,    -1,  1032,  1033,    -1,   433,    -1,
    3319       -1,  1118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3320       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   454,
    3321       -1,    -1,  1059,    -1,    -1,  1062,    -1,    -1,    -1,    -1,
    3322       -1,    -1,    -1,    -1,   221,    -1,   223,   224,   225,    -1,
    3323       -1,    -1,    -1,    -1,    -1,    -1,    -1,   482,    -1,    -1,
    3324       -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,   494,
    3325       -1,  1178,  1179,    -1,    -1,    -1,    -1,    -1,  1105,    -1,
    3326       -1,   506,   259,   508,  1111,  1112,   511,   264,   513,   514,
    3327       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3328       -1,   526,   279,    -1,  1131,    -1,    -1,  1134,    -1,    -1,
    3329       -1,  1138,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3330       -1,    -1,    -1,    72,  1151,    74,    75,    76,    -1,    -1,
    3331       -1,    -1,    -1,    -1,    83,    84,    -1,  1164,    -1,  1166,
    3332     1167,  1168,  1169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3333       -1,   328,    -1,    -1,   579,  1182,    -1,  1184,    -1,    -1,
    3334      109,  1188,    -1,    -1,    -1,    -1,   591,    -1,   117,   118,
    3335      595,    -1,    -1,   350,    -1,    -1,    -1,    -1,   355,   356,
    3336       -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,    -1,
    3337     1217,  1218,    -1,    -1,    -1,    -1,   621,    -1,    -1,    -1,
    3338       -1,   626,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3339      635,   636,   637,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3340       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   653,   406,
     3268     125,   378,   929,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3269      -1,   565,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3270     574,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3271      -1,    -1,    -1,    -1,   745,   746,    -1,    -1,    -1,    -1,
     3272     594,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3273      -1,    -1,    -1,    -1,   981,   180,    -1,    -1,    -1,    -1,
     3274      -1,   267,    -1,   188,    -1,   190,   191,    -1,    -1,    -1,
     3275     195,    -1,   197,   198,    -1,  1002,  1003,    -1,   632,    -1,
     3276      -1,  1263,    -1,    -1,     3,     4,     5,     6,     7,     8,
     3277       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3278      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3279      -1,    30,    31,    32,   668,    -1,    -1,    -1,   324,    -1,
     3280      39,    -1,   676,    -1,    -1,    -1,   332,   333,    -1,   335,
     3281     336,    -1,  1059,    -1,    -1,    -1,    -1,   343,    -1,    -1,
     3282      -1,   347,   267,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3283      69,    -1,    71,   707,    -1,    74,    75,    -1,    -1,    -1,
     3284     366,    -1,    -1,    -1,   718,   719,    -1,    -1,    -1,   546,
     3285     547,   548,   549,   550,   551,   552,   553,   554,   555,   556,
     3286     557,   558,   559,   560,   561,   562,   563,    -1,    -1,   395,
     3287     901,    -1,    -1,   399,    -1,    -1,   750,   116,  1125,    -1,
     3288      -1,   755,    10,    11,    12,    13,    14,    15,    16,    17,
     3289      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3290      28,    -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,    -1,
     3291      -1,    39,    -1,   146,    -1,    -1,    -1,    -1,    -1,  1166,
     3292      -1,    -1,    -1,   156,    -1,    -1,    -1,    -1,    -1,    -1,
     3293      -1,    -1,    -1,    -1,   167,   168,    -1,    -1,    -1,    67,
     3294      -1,   815,    -1,    -1,    -1,    -1,    -1,    -1,   822,   475,
     3295      78,    -1,   478,    -1,    -1,  1202,    -1,    -1,    -1,    -1,
     3296      -1,   835,    -1,   837,    -1,    -1,    -1,    -1,    -1,    -1,
     3297      -1,    -1,    -1,    -1,    -1,    -1,   850,    -1,    -1,    -1,
     3298      -1,    -1,   856,    -1,    -1,    -1,    -1,    -1,    -1,   686,
     3299      -1,   517,    -1,    -1,   868,   521,    -1,   871,    -1,    -1,
     3300      -1,    -1,    -1,    -1,    -1,   238,    -1,    -1,  1255,  1256,
     3301      -1,    -1,  1514,    -1,    -1,    -1,  1263,    -1,    -1,    -1,
     3302      -1,    -1,    -1,    -1,    -1,  1056,    -1,    -1,    -1,   262,
     3303      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   565,
     3304     566,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3305     747,    -1,    -1,    -1,    -1,    -1,    -1,   583,   584,    -1,
     3306      -1,    -1,    -1,    -1,    -1,    -1,    -1,   593,    -1,   595,
     3307     596,    -1,    -1,    -1,    -1,    -1,   602,    -1,    -1,    -1,
     3308     777,    -1,    -1,    -1,    -1,    -1,   612,   613,    -1,    -1,
     3309      -1,    -1,   618,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3310      -1,   627,   628,    -1,    -1,   979,    -1,    -1,    -1,    -1,
     3311      -1,    -1,    -1,    -1,    -1,    -1,    -1,   643,    -1,    -1,
     3312      -1,    -1,   648,   649,   569,   570,   652,   653,    -1,  1376,
     3313      -1,    -1,    -1,   659,    -1,    -1,    -1,    -1,    -1,    -1,
     3314      -1,    -1,    -1,    -1,   377,    -1,    -1,    -1,    -1,    -1,
     3315      -1,   596,   678,  1184,   599,   600,    -1,   602,    -1,   604,
     3316     605,    -1,    -1,    -1,   609,   610,  1040,    -1,    -1,    -1,
     3317      -1,    -1,    -1,    -1,    -1,   701,   702,    -1,    -1,    -1,
     3318      -1,    -1,    -1,    -1,    -1,    -1,  1433,    -1,  1435,    -1,
     3319      -1,    -1,    -1,    -1,   891,    -1,    -1,    -1,    -1,    -1,
     3320    1074,    -1,    -1,    -1,    -1,  1079,    -1,    -1,    -1,    -1,
     3321     736,    -1,    -1,  1087,   740,   741,    -1,    -1,    -1,    -1,
     3322      -1,    -1,    -1,  1470,    -1,  1472,    -1,    -1,    -1,    -1,
     3323      -1,    -1,    -1,    -1,    -1,    -1,    -1,   470,    -1,    -1,
     3324     937,    -1,    -1,    -1,    -1,    -1,    -1,  1121,    -1,    -1,
     3325      -1,    -1,  1499,    -1,    -1,    -1,    -1,   783,  1132,    -1,
     3326      -1,  1135,    -1,  1137,    -1,    -1,    -1,    -1,    -1,    -1,
     3327      -1,    -1,   969,   799,    -1,   801,   509,    -1,  1152,  1153,
     3328      -1,    -1,    -1,    -1,   981,   811,    -1,    -1,   521,    -1,
     3329      -1,    -1,    -1,    -1,   527,    -1,    -1,   530,  1172,    -1,
     3330     745,   746,     7,    -1,    -1,    10,    11,    12,    13,    14,
     3331     543,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3332      -1,    -1,    -1,  1020,    -1,    -1,    -1,    -1,    -1,    -1,
     3333      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3334     573,    -1,    -1,    -1,  1218,    -1,    -1,   580,    -1,    -1,
     3335      -1,   584,  1226,    -1,    -1,    -1,   882,    -1,    -1,    -1,
     3336      -1,    66,    67,   889,   890,    -1,   892,    72,    -1,    -1,
     3337     896,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3338      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
     3339      -1,   917,   918,    -1,    -1,    -1,    -1,   630,    -1,  1096,
     3340      -1,    -1,    -1,    -1,    -1,   638,   111,    -1,   113,    -1,
     3341      -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
     3342      -1,    -1,  1296,    -1,  1298,    -1,   952,    -1,    -1,    -1,
    33413343      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3342     1267,  1268,    -1,    -1,    -1,    -1,    -1,   424,    -1,    -1,
    3343     1277,    -1,   429,    -1,   431,    -1,    -1,    -1,    -1,    -1,
    3344      685,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3345       -1,   448,    -1,    -1,   451,   452,  1383,    -1,    -1,    -1,
    3346       -1,    -1,   459,    -1,    -1,    -1,   711,    -1,   713,    -1,
    3347       -1,    -1,  1399,    -1,    -1,    -1,   473,    -1,    -1,    -1,
    3348       -1,    -1,    -1,   480,    -1,    -1,    -1,    -1,    -1,    -1,
    3349       -1,  1338,    -1,  1340,  1341,  1342,    -1,    -1,    -1,    -1,
    3350       -1,   746,    -1,    -1,    -1,  1352,    44,    -1,    -1,    -1,
    3351       -1,    -1,    -1,    -1,  1361,    10,    11,    12,    13,    14,
     3344    1314,    -1,  1316,    -1,    -1,   971,   972,    -1,    -1,    -1,
     3345      -1,   896,    -1,    -1,    -1,   981,   901,  1331,  1155,  1156,
     3346      -1,   987,   988,    -1,   990,   991,   992,    -1,    -1,    -1,
     3347      -1,    -1,  1346,  1347,    -1,    -1,  1002,  1003,    -1,    -1,
     3348      -1,   714,    -1,  1357,    -1,    -1,  1360,    -1,    -1,    -1,
     3349      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3350      -1,    -1,    -1,   736,    -1,   738,    -1,    -1,  1382,    -1,
     3351      -1,    -1,    -1,    -1,    -1,   748,    -1,  1391,    -1,    -1,
     3352    1394,   754,  1396,  1397,  1398,    -1,    -1,    -1,    -1,    -1,
     3353      -1,    -1,    -1,    -1,    -1,    -1,  1062,    -1,  1064,    -1,
     3354      -1,    -1,    -1,  1069,    -1,    -1,    -1,    -1,    -1,    -1,
     3355      -1,    -1,  1078,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3356      -1,   794,   795,  1437,    -1,  1439,    -1,  1441,    -1,    -1,
     3357      -1,    -1,    -1,    -1,    -1,  1101,  1102,   810,    -1,    -1,
     3358      -1,    -1,    -1,  1457,    -1,    -1,    -1,    -1,    -1,    -1,
     3359      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1125,
     3360      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3361      -1,  1056,    -1,    -1,    -1,    -1,   849,    -1,    -1,    -1,
     3362     853,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    33523363      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3353       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,  1386,
    3354       -1,    -1,  1469,  1470,    39,    -1,    -1,    10,    11,    12,
    3355       13,    14,    -1,    91,    -1,    -1,    -1,   802,    -1,    -1,
    3356       -1,   806,    -1,   101,    -1,   810,    -1,    -1,    -1,    -1,
    3357       -1,    -1,    67,    -1,    -1,    -1,    39,    72,    -1,    74,
    3358       75,    76,  1429,  1430,    -1,    -1,    -1,    -1,    83,    84,
    3359       -1,    -1,    -1,    -1,    -1,  1442,    -1,    -1,   595,    -1,
    3360       -1,    -1,  1449,    -1,    67,    -1,    -1,    -1,    -1,    72,
    3361       -1,    74,    75,    76,   109,    -1,   111,    -1,    -1,   157,
    3362       83,    84,   117,   118,    -1,    -1,   623,    -1,    -1,    -1,
    3363       -1,   628,    -1,   171,  1481,    -1,    -1,    -1,  1485,    -1,
    3364       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    3365       -1,    -1,    -1,    -1,   117,   118,   194,    -1,    -1,    -1,
    3366      905,    -1,    -1,    -1,    -1,    -1,  1513,    -1,  1515,    -1,
    3367      208,    -1,    -1,    -1,    -1,   920,    -1,    -1,    -1,   217,
    3368       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   227,
    3369       -1,    -1,    -1,    -1,    -1,    -1,  1543,  1544,    -1,   944,
    3370       -1,    -1,   699,    -1,  1551,  1552,    -1,    -1,    -1,    -1,
    3371       -1,    -1,    -1,    -1,   252,    -1,   713,    -1,    -1,   257,
    3372       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3373       -1,    -1,   270,    -1,    -1,    -1,   733,    -1,   276,    -1,
    3374      278,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3375       -1,    -1,    -1,    -1,    -1,  1000,    -1,   295,    10,    11,
    3376       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3377       22,    23,    24,    25,    26,    27,  1021,  1022,    30,    31,
    3378       32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
    3379       -1,    -1,    -1,    -1,    -1,    -1,    -1,   794,    -1,    -1,
    3380      338,    -1,    -1,    -1,    -1,   343,    -1,    -1,    -1,   806,
    3381       -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3382       72,    -1,    74,    75,    76,    -1,    -1,    -1,   825,    -1,
    3383       -1,    83,    84,    -1,   372,    -1,  1081,    -1,   376,   377,
    3384       -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,   386,   387,
    3385       -1,   389,   390,    -1,   392,    -1,   394,   109,    -1,   111,
    3386       -1,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,
    3387       -1,    -1,    -1,   411,    -1,    -1,    -1,    -1,    -1,    -1,
    3388       -1,   419,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
    3389      156,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3390       -1,    -1,  1147,    -1,    -1,    -1,   444,    -1,    -1,    -1,
    3391       -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3392       14,    -1,    -1,   189,    -1,    -1,    -1,    -1,    -1,    -1,
    3393      196,    -1,   470,    -1,    -1,    -1,    -1,    -1,   476,    -1,
    3394       -1,   938,    -1,   481,  1189,    39,    10,    11,    12,    13,
    3395       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3396       24,    25,    26,    27,    28,    -1,    30,    31,    32,    -1,
    3397       -1,   968,    -1,    67,    -1,    39,    -1,    -1,    72,   517,
    3398       -1,  1226,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    3399       84,    -1,    -1,    -1,   532,    -1,    -1,    -1,    -1,    -1,
    3400       -1,    -1,   268,    67,    -1,    -1,  1003,    -1,    72,    -1,
    3401       74,    75,    76,    -1,    78,   109,    -1,  1014,    -1,    83,
    3402       84,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
    3403     1275,  1276,    -1,   571,    -1,    -1,    -1,    -1,    -1,  1284,
    3404       -1,    -1,   580,    -1,    -1,   109,    -1,   111,   146,   587,
    3405       -1,    -1,    -1,   117,   118,   593,    -1,   323,   156,    -1,
    3406       -1,    -1,    -1,    -1,   602,   331,   332,    -1,   334,   335,
    3407      168,   169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,
    3408       -1,    -1,    -1,   349,    -1,    -1,    -1,    -1,    -1,  1086,
    3409       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3410       -1,    -1,   368,  1100,   642,   371,     3,     4,     5,     6,
    3411        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3412       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3413       27,    -1,   398,    30,    31,    32,   402,    -1,    -1,    -1,
    3414      678,   239,    39,    -1,    -1,    -1,    -1,    -1,   686,    -1,
    3415     1395,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
    3416       -1,    -1,    -1,    -1,    -1,   263,    -1,   433,    -1,    -1,
    3417       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,   717,
    3418       -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,   727,
    3419      728,    76,  1189,    -1,    79,    80,    81,    82,    83,    84,
    3420       -1,    86,    87,    -1,    -1,    -1,  1451,    -1,  1453,    -1,
    3421       -1,    -1,    -1,   479,   111,    -1,   482,    -1,    -1,    -1,
    3422      117,   118,   760,    -1,   109,    -1,   111,   765,    -1,   114,
    3423       -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3424       -1,    -1,  1487,    -1,  1489,    -1,    -1,    -1,    -1,    -1,
    3425       -1,    -1,    -1,    -1,    -1,   521,    -1,    -1,    -1,   525,
    3426      526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3427       -1,  1516,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3428       -1,    -1,   380,    -1,    -1,    -1,    -1,  1284,    -1,    -1,
    3429       -1,   829,    -1,    -1,    -1,    -1,    -1,    -1,   836,    -1,
    3430       -1,    -1,    -1,    -1,    -1,   571,   572,    -1,    -1,    -1,
    3431       -1,   849,    -1,   851,    -1,    -1,    -1,    -1,    -1,    -1,
    3432       -1,    -1,    -1,    -1,   590,   591,    -1,   865,    -1,    -1,
    3433       -1,    -1,    -1,   871,    -1,   601,    -1,   603,   604,    -1,
    3434       -1,    -1,    -1,    -1,   610,   883,    -1,    -1,   886,    -1,
    3435       -1,    -1,    -1,    -1,   620,   621,    -1,    -1,    -1,    -1,
    3436      626,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   635,
    3437      636,   637,    -1,    -1,    -1,    -1,   474,    -1,    -1,    -1,
    3438       -1,    -1,    -1,    -1,    -1,    -1,    -1,   653,    -1,    -1,
    3439       -1,    -1,   658,   659,    -1,    -1,   662,   663,    -1,    -1,
    3440       -1,    -1,    -1,   669,    -1,    -1,    -1,    -1,    -1,    -1,
    3441       -1,    -1,    -1,    -1,    -1,   513,    -1,    -1,    -1,    -1,
    3442       -1,    -1,   688,    -1,    -1,   963,    -1,    -1,   526,    -1,
    3443       -1,    -1,    -1,   531,    -1,    -1,   534,    -1,    -1,    -1,
    3444       -1,    -1,    -1,    -1,    -1,   711,   712,    -1,    -1,   547,
    3445       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3446      998,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3447       -1,   569,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,
    3448      746,   579,    -1,    -1,   750,   751,    -1,    -1,   586,    -1,
    3449       -1,    -1,    -1,   591,    -1,    -1,    -1,    -1,    -1,    -1,
    3450       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3451       20,    21,    22,    23,    24,    25,    26,    27,  1056,    -1,
    3452       30,    31,    32,    -1,  1062,    -1,    -1,    -1,   794,    39,
    3453       -1,    -1,    -1,    -1,  1531,    -1,   802,    -1,    -1,    -1,
    3454       -1,    -1,   640,   809,   810,    -1,    -1,   813,    -1,   815,
    3455      648,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1096,   825,
    3456       -1,    -1,    72,  1101,    74,    75,    76,    -1,    -1,    -1,
    3457       -1,  1109,    -1,    83,    84,    -1,    10,    11,    12,    13,
    3458       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3459       24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,   109,
    3460       -1,   111,    -1,    -1,  1142,    39,    -1,   117,   118,    -1,
    3461       -1,    -1,    -1,    -1,    -1,    -1,  1154,    -1,    -1,  1157,
    3462       -1,  1159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3463       -1,   897,    -1,    67,    -1,  1173,  1174,    -1,   904,   905,
    3464      906,    -1,   908,    -1,    78,    -1,   912,    -1,   746,    -1,
    3465      748,    -1,    -1,    -1,    -1,    -1,    -1,  1195,    -1,    -1,
    3466      758,    -1,    -1,    -1,    -1,    -1,   764,   933,   934,    -1,
    3467       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3468       20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
    3469       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    3470       -1,    -1,   968,    -1,  1242,    -1,    -1,    -1,   806,   807,
    3471       -1,    -1,   810,    -1,    -1,    -1,    -1,    -1,    37,    38,
    3472       -1,    40,    -1,   989,   990,    -1,   824,    67,    -1,    -1,
    3473       -1,    -1,    -1,    -1,  1000,    -1,    -1,    -1,    78,    -1,
    3474     1006,  1007,    -1,  1009,  1010,  1011,    -1,    66,    -1,    -1,
    3475       -1,    -1,    -1,    72,    -1,  1021,  1022,    76,    -1,    -1,
    3476       79,    80,    81,    82,    83,    84,   864,    86,    87,    -1,
    3477      868,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1317,
    3478       -1,  1319,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3479      109,    -1,   111,  1331,    -1,  1333,    -1,   116,   117,   118,
    3480      119,   120,   121,   122,    -1,    -1,    -1,   905,    -1,    -1,
    3481       -1,    -1,  1350,    -1,    -1,    -1,    -1,    -1,  1084,    -1,
    3482     1086,    -1,    -1,    -1,    -1,  1091,    -1,    -1,  1366,  1367,
    3483       -1,    -1,    -1,    -1,  1100,    -1,    -1,    -1,    -1,  1377,
    3484       -1,    -1,  1380,    -1,    -1,    -1,   944,    -1,    -1,    -1,
    3485       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1123,  1124,  1125,
    3486       -1,    -1,    -1,  1401,    -1,    -1,    -1,    -1,    -1,    -1,
    3487       -1,    -1,  1410,    -1,   972,  1413,    -1,  1415,  1416,  1417,
    3488      978,  1147,    -1,    -1,   982,    37,    38,    -1,    40,    -1,
    3489       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3490       -1,    -1,    -1,    -1,    -1,  1003,    -1,    -1,    -1,    -1,
    3491       -1,    -1,    -1,    -1,    66,    -1,  1014,  1455,    -1,  1457,
    3492       72,  1459,    74,    75,    76,    -1,    -1,    79,    80,    81,
    3493       82,    83,    84,    -1,    86,    87,  1474,    -1,  1036,    -1,
    3494     1038,    -1,  1208,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3495       -1,    -1,    -1,    -1,    -1,  1053,  1054,   109,    -1,   111,
    3496     1226,   113,   114,    -1,    -1,   117,   118,   119,   120,   121,
    3497      122,    -1,    -1,    -1,    -1,    -1,  1074,    -1,    -1,    -1,
    3498       -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
    3499        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3500       19,    20,    21,    22,    23,    24,    25,    26,    27,  1275,
    3501     1276,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
    3502       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3503       -1,  1129,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3504       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1147,
    3505       69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
    3506       -1,    -1,    -1,    -1,  1162,  1163,    -1,     3,     4,     5,
     3364      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,   882,
     3365      -1,    -1,    -1,    -1,    39,    -1,   889,    -1,    -1,    -1,
     3366      -1,    -1,    -1,    -1,    -1,    -1,  1363,    -1,    -1,    -1,
     3367      -1,    -1,    -1,    -1,    -1,    -1,  1202,    -1,    -1,    -1,
     3368      -1,    -1,    67,  1380,    -1,    -1,    -1,    -1,    -1,    74,
     3369      75,    -1,    -1,    -1,    -1,    -1,   929,     3,     4,     5,
    35073370       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    35083371      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3509       26,    27,   111,    -1,    30,    31,    32,    33,   117,   118,
    3510       36,    37,    38,    39,    40,    41,    -1,    43,    -1,    -1,
    3511       46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
    3512       -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,  1395,
    3513       66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
    3514       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3515       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3372      26,    27,    -1,   956,    30,    31,    32,    -1,   961,  1255,
     3373    1256,   964,    -1,    39,   119,   120,    -1,    -1,    -1,  1184,
    35163374      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3517       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
    3518       -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
    3519       -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,
    3520       -1,    -1,    -1,    -1,    -1,  1303,    -1,    -1,  1306,    -1,
    3521       -1,    -1,    -1,    -1,    -1,    -1,  1482,    -1,    -1,    -1,
     3375      -1,   984,    -1,    -1,    -1,  1452,  1453,    -1,    -1,    -1,
     3376      -1,    67,   995,    69,    -1,    71,    72,    -1,    74,    75,
     3377      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,
     3378      86,    -1,  1015,    -1,  1017,    -1,    -1,    -1,    -1,    -1,
     3379      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1032,
     3380    1033,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
     3381      -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,  1052,
     3382      -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,
     3383       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3384      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3385    1376,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
     3386      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3387      -1,    -1,    -1,  1106,    -1,    -1,    -1,    -1,    -1,    -1,
     3388      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3389      -1,    69,  1125,    71,    -1,    -1,    74,    75,    -1,    -1,
     3390      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1140,  1141,    -1,
     3391       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3392      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3393      24,    25,    26,    27,    -1,   113,    30,    31,    32,  1465,
     3394      -1,   119,   120,    -1,    -1,    39,    -1,    -1,    -1,    -1,
     3395      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3396      -1,    -1,    -1,  1489,  1490,    -1,    -1,    -1,    -1,    -1,
     3397      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
     3398      74,    75,    -1,    -1,    -1,    -1,    -1,    -1,  1514,    -1,
     3399      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3400      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3401      21,    22,    23,    24,    25,    26,    27,    -1,   112,    30,
     3402      31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
     3403      41,    -1,    43,    -1,    -1,    46,    47,    48,    49,    50,
     3404      51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,  1282,
     3405      61,    62,  1285,    64,    -1,    66,    67,    -1,    69,    -1,
     3406      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3407      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
    35223408      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35233409      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3524     1506,  1507,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3525       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3526       -1,    -1,    -1,    -1,    -1,  1531,     3,     4,     5,     6,
    3527        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3528       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3529       27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,
    3530       37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
    3531       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3532       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
    3533       67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
    3534       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3535       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3536       -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
    3537       -1,    -1,   109,    -1,   111,    -1,    -1,    83,    84,    -1,
    3538      117,   118,   119,   120,   121,   122,     4,     5,     6,     7,
    3539        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3540       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3541       -1,    -1,    30,    31,    32,    -1,    -1,    -1,  1516,    37,
    3542       38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
    3543       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3544       27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
    3545       -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
    3546       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3547       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3548       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3549       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,   117,
    3550      118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
     3410     111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,   120,
     3411     121,   122,   123,   124,    -1,    -1,    -1,    -1,   129,    -1,
     3412      -1,    -1,    -1,   134,     3,     4,     5,     6,     7,     8,
    35513413       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    35523414      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3553       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
     3415      -1,    30,    31,    32,    33,    -1,    -1,    36,    37,    38,
    35543416      39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
    35553417      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    35563418      -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
    35573419      69,    39,    71,    72,    -1,    74,    75,    76,    -1,    -1,
    3558       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3559       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3560       -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
    3561      109,    -1,   111,    -1,    -1,    -1,    -1,   116,   117,   118,
    3562      119,   120,   121,   122,     4,     5,     6,     7,     8,     9,
    3563       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3564       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3565       30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
    3566       40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3567       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3568       -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,
    3569       39,    71,    72,    -1,    74,    75,    76,    -1,    -1,    79,
    3570       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    3571       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3572       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    3573       -1,   111,    -1,    -1,    -1,    -1,   116,   117,   118,   119,
    3574      120,   121,   122,     4,     5,     6,     7,     8,     9,    10,
     3420      79,    80,    81,    82,    83,    84,    85,    86,    -1,    88,
     3421      89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3422      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    -1,    -1,
     3423      -1,    -1,   111,    -1,   113,    -1,    -1,    85,    86,    -1,
     3424     119,   120,   121,   122,   123,   124,    -1,    -1,    -1,    -1,
     3425      -1,    -1,    -1,    -1,    -1,   134,    -1,    -1,    -1,    -1,
     3426      -1,    -1,    -1,    -1,    -1,    -1,  1499,     3,     4,     5,
     3427       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3428      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3429      26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
     3430      36,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3431      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3432      25,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,    -1,
     3433      66,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
     3434      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
     3435      86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
     3436      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3437      -1,    -1,    -1,    78,    -1,   111,    -1,   113,    -1,    -1,
     3438      -1,    -1,    -1,   119,   120,   121,   122,   123,   124,     4,
     3439       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3440      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3441      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3442      -1,    -1,    37,    38,    39,    40,    10,    11,    12,    13,
     3443      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3444      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3445      -1,    66,    67,    -1,    69,    39,    71,    72,    -1,    74,
     3446      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3447      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
     3448      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
     3449      74,    75,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
     3450      -1,    -1,    -1,   118,   119,   120,   121,   122,   123,   124,
     3451       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3452      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3453      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3454      -1,    -1,    -1,    37,    38,    39,    40,    10,    11,    12,
     3455      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3456      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3457      -1,    -1,    66,    67,    -1,    69,    39,    71,    72,    -1,
     3458      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3459      84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,
     3460      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
     3461      -1,    74,    75,    -1,    -1,    -1,    -1,   111,    -1,   113,
     3462      -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
     3463     124,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3464      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3465      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3466      -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,
     3467      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3468      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3469      -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
     3470      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     3471      83,    84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,
     3472      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3473      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3474     113,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
     3475     123,   124,     4,     5,     6,     7,     8,     9,    10,    11,
     3476      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3477      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3478      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
     3479      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3480      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3481      -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,
     3482      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3483      82,    83,    84,    85,    86,    -1,    88,    89,    -1,    -1,
     3484      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3485      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3486      -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,
     3487     122,   123,   124,     4,     5,     6,     7,     8,     9,    10,
    35753488      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    35763489      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     
    35803493      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
    35813494      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3582       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3583       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3584       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3585      111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
    3586      121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
    3587       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3588       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3589       32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
     3495      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
    35903496      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35913497      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3592       -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,
    3593       72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
    3594       82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
     3498     111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
     3499     121,   122,   123,   124,     0,    -1,    -1,     3,     4,     5,
     3500       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3501      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3502      26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
     3503      36,    -1,    -1,    39,    40,    -1,    -1,    -1,    -1,    -1,
    35953504      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3596       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3597       -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,
    3598      122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3599       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3600       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3601       -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,
     3505      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,
     3506      -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
     3507      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,
     3508      86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3509      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3510      -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
     3511      -1,    -1,    -1,   119,   120,     3,     4,     5,     6,     7,
     3512       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3513      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3514      -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
     3515      -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3516      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3517      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
     3518      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
     3519      -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    -1,
    36023520      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36033521      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3604       -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
    3605       -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
    3606       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3522      -1,    -1,    -1,   111,    -1,   113,    -1,    -1,    -1,   117,
     3523      -1,   119,   120,     3,     4,     5,     6,     7,     8,     9,
     3524      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3525      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3526      30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
     3527      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36073528      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3608       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
    3609       -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3529      -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    69,
     3530      -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
     3531      -1,    -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    -1,
     3532      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3533      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3534      -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,
     3535     120,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3536      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3537      22,    23,    24,    25,    26,    27,    28,    -1,    30,    31,
     3538      32,    33,    -1,    -1,    36,    -1,    -1,    39,    -1,    -1,
     3539      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3540      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3541      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
     3542      -1,    -1,    74,    75,    -1,    -1,    78,     3,     4,     5,
     3543       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3544      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3545      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3546      -1,   113,    -1,    39,    -1,    -1,    -1,   119,   120,    -1,
     3547      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3548      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3549      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
    36103550       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    36113551      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    36123552      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3613       -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,
     3553      -1,    -1,    -1,    -1,    -1,    39,    -1,   113,    -1,    -1,
     3554      -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,
    36143555      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3556      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
     3557      74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3558      -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36153559      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3616       -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,
    3617       74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3618       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3619       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3620       -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3621       -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     0,
    3622       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3623       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3624       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3625       31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,
    3626       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3627       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3628       -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,
    3629       71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
    3630       -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
    3631       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3632       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3633      111,    -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,
    3634        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3635       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3636       25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
    3637       -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,    -1,
    3638       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3639       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
    3640       -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    3641       75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
    3642       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3643       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3644       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3645      115,    -1,   117,   118,     3,     4,     5,     6,     7,     8,
    3646        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3647       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3648       -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
    3649       39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3650       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3651       -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,
    3652       69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
    3653       -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
    3654       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3655       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3656      109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
    3657        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3658       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3659       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3660       -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    10,    11,
    3661       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3662       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3663       32,    33,    34,    35,    67,    -1,    69,    39,    71,    72,
    3664       -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
    3665       83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3666       -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3667       -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
    3668       -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,     6,
     3560      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,
     3561      -1,    -1,    -1,    -1,    -1,   119,   120,     4,     5,     6,
    36693562       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    36703563      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3671       27,    28,    -1,    30,    31,    32,    33,    -1,    -1,    36,
     3564      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    36723565      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36733566      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36743567      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3675       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
    3676       -1,    78,     4,     5,     6,     7,     8,     9,    10,    11,
    3677       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3678       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3679       32,    -1,    -1,    -1,   111,    -1,    -1,    39,    -1,    -1,
    3680      117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3568      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     4,
     3569       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3570      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3571      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3572      -1,    -1,    -1,    -1,    39,   112,   113,    -1,    -1,    -1,
     3573      -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,
    36813574      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3682       -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    3683       72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
    3684       -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3575      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3576      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36853577      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3686       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3687       -1,    -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,
     3578      -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,
     3579      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3580      -1,    -1,    -1,    -1,   119,   120,     4,     5,     6,     7,
     3581       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3582      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3583      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3584      -1,    39,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3585      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3586      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    67,
     3587      -1,    69,    -1,    71,    39,    40,    74,    75,    -1,    -1,
     3588      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3589      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3590      98,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3591      75,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,    -1,
     3592      -1,   119,   120,     4,     5,     6,     7,     8,     9,    10,
     3593      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3594      21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
     3595      31,    32,   117,    -1,   119,   120,    -1,    -1,    39,    -1,
     3596      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3597      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3598      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
     3599      71,    -1,    -1,    74,    75,     4,     5,     6,     7,     8,
     3600       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3601      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3602      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
     3603      39,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
     3604      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3605      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3606      69,    -1,    71,    -1,    -1,    74,    75,     4,     5,     6,
    36883607       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    36893608      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    36903609      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3691       -1,    -1,    39,    -1,    -1,    -1,    -1,    10,    11,    12,
    3692       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3693       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3694       67,    -1,    69,    -1,    71,    -1,    39,    74,    75,    -1,
    3695        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3696       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3697       24,    25,    26,    27,    67,    -1,    30,    31,    32,    -1,
    3698       -1,    74,    75,   110,   111,    39,    -1,    -1,    -1,    -1,
    3699      117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3610      -1,    -1,    39,    -1,   113,    -1,    -1,    -1,    -1,    -1,
     3611     119,   120,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37003612      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3701       -1,    -1,    -1,    67,    -1,    69,   109,    71,   111,    -1,
    3702       74,    75,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
    3703       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3704       -1,    -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3705       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    3706       -1,    -1,    -1,   117,   118,     4,     5,     6,     7,     8,
    3707        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3708       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3709       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
    3710       39,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3711       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3712       26,    27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,
    3713       69,    -1,    71,    39,    40,    74,    75,    -1,    -1,    -1,
    3714       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3715       -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
    3716       -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
    3717       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
    3718        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3719       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3720       24,    25,    26,    27,    -1,   111,    30,    31,    32,   115,
    3721       -1,   117,   118,    -1,    -1,    39,    -1,    -1,    -1,    -1,
     3613      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    10,
     3614      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3615      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3616      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3617      -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,
     3618      -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,
     3619      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
     3620      -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3621      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
    37223622      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37233623      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3724       -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
    3725       74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
    3726       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3727       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3728       31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,
    3729       -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
    3730       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3731       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
    3732       71,    -1,    -1,    74,    75,    -1,     4,     5,     6,     7,
    3733        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3734       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3735       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
    3736      111,    39,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,
    3737       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3738       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3739       -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,     4,
    3740        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3741       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3742       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3743       -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,   117,
    3744      118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3745       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3746       -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    3747       75,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3748       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3749       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
    3750       39,    40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3751       -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
    3752       -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
    3753       -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
    3754       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3755       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3756       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3757      109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
    3758      119,   120,   121,   122,    10,    11,    12,    13,    14,    15,
     3624     111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,   120,
     3625     121,   122,   123,   124,    10,    11,    12,    13,    14,    15,
    37593626      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    37603627      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     
    37633630      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    37643631      66,    67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,
    3765       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3766       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3632      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
     3633      86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
    37673634      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
    3768       75,    76,    -1,   109,   110,   111,    -1,    -1,    83,    84,
    3769       -1,   117,   118,   119,   120,   121,   122,    10,    11,    12,
    3770       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3771       23,    24,    25,    26,    27,    -1,   111,    30,    31,    32,
    3772       -1,    -1,   117,   118,    37,    38,    39,    40,    10,    11,
    3773       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3774       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3775       32,    -1,    -1,    66,    67,    -1,    -1,    39,    -1,    72,
    3776       -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
    3777       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3778       -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3779       72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
    3780       -1,    83,    84,    -1,   117,   118,   119,   120,   121,   122,
     3635      75,    -1,    -1,    -1,    -1,   111,   112,   113,    -1,    -1,
     3636      85,    86,    -1,   119,   120,   121,   122,   123,   124,    10,
     3637      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3638      21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
     3639      31,    32,    -1,    -1,   119,   120,    37,    38,    39,    40,
    37813640      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3782       20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
    3783       30,    31,    32,    -1,    -1,   117,   118,    37,    38,    39,
    3784       40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3641      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3642      30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
     3643      40,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3644      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
     3645      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3646      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
     3647     111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
     3648     121,   122,   123,   124,    10,    11,    12,    13,    14,    15,
     3649      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3650      26,    27,    -1,   113,    30,    31,    32,   117,    -1,   119,
     3651     120,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3652      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3653      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3654      66,    67,    -1,    -1,    39,    40,    72,    -1,    74,    75,
     3655      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
     3656      86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
     3657      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3658      75,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
     3659      -1,    -1,    -1,   119,   120,   121,   122,   123,   124,    10,
     3660      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3661      21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
     3662      31,    32,   117,    -1,   119,   120,    37,    38,    39,    40,
     3663      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3664      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3665      30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
     3666      -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3667      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
     3668      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3669      -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
     3670     111,    -1,   113,    -1,    -1,    85,    86,    -1,   119,   120,
     3671     121,   122,   123,   124,    -1,    -1,    -1,    -1,    -1,    -1,
     3672      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3673      -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,
     3674     120,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    37853675      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3786       -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,
    3787       39,    40,    72,    -1,    74,    75,    76,    -1,    -1,    79,
    3788       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3676      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
     3677      39,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3678      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3679      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,    -1,
     3680      39,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
     3681      -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    -1,    -1,
    37893682      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3790       -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
    3791       -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
    3792      120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
     3683      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,
     3684      -1,    -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,
     3685     119,   120,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3686      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3687      25,    26,    27,    -1,   113,    30,    31,    32,    -1,    -1,
     3688     119,   120,    -1,    -1,    39,    10,    11,    12,    13,    14,
     3689      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3690      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3691      -1,    -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,
     3692      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3693      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3694      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3695      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3696      -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    10,
     3697      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3698      21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
     3699      31,    32,    -1,    -1,   119,   120,    -1,    -1,    39,    10,
     3700      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3701      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3702      31,    32,    -1,    -1,    -1,    -1,    67,    -1,    39,    -1,
     3703      -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
     3704      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3705      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
     3706      -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
     3707      -1,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
     3708      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    37933709      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3794       27,    -1,   111,    30,    31,    32,   115,    -1,   117,   118,
    3795       37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
    3796       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3797       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
    3798       67,    -1,    -1,    39,    40,    72,    -1,    74,    75,    76,
    3799       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3800       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3801       -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
    3802       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3803      117,   118,   119,   120,   121,   122,    10,    11,    12,    13,
    3804       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3805       24,    25,    26,    27,    -1,   111,    30,    31,    32,   115,
    3806       -1,   117,   118,    37,    38,    39,    40,    -1,    -1,    -1,
    3807       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3808       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3809       26,    27,    66,    67,    30,    31,    32,    -1,    72,    -1,
    3810       74,    75,    76,    39,    -1,    79,    80,    81,    82,    83,
    3811       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3710      27,    -1,   113,    30,    31,    32,    -1,    -1,   119,   120,
     3711      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38123712      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3813       -1,    67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,
    3814       -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     3,
     3713      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3714      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     3715      -1,    -1,    37,    38,    -1,    40,    41,    -1,    43,    -1,
     3716      -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
     3717      -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
     3718      -1,    66,    -1,    -1,    -1,    -1,   113,    72,    -1,    -1,
     3719      -1,    76,   119,   120,    79,    80,    81,    82,    83,    84,
     3720      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
     3721      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3722      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
     3723      -1,   116,    -1,    -1,   119,   120,   121,   122,   123,   124,
     3724      -1,    -1,    37,    38,   129,    40,    41,    -1,    43,   134,
     3725      -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
     3726      -1,    -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
     3727      -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     3728      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3729      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
     3730      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3731      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
     3732      -1,   116,    -1,    -1,   119,   120,   121,   122,   123,   124,
     3733      -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,    -1,   134,
    38153734       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    38163735      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3817       24,    25,    26,    27,    -1,   111,    30,    31,    32,    -1,
    3818       -1,   117,   118,    -1,    -1,    39,    -1,    -1,    -1,    10,
    3819       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3820       21,    22,    23,    24,    25,    26,    27,    28,    -1,    30,
    3821       31,    32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,
    3822       74,    75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
    3823       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3824       23,    24,    25,    26,    27,    -1,    67,    30,    31,    32,
    3825       -1,    72,    -1,    74,    75,    76,    39,    78,    -1,    -1,
    3826      114,    -1,    83,    84,    -1,    10,    11,    12,    13,    14,
    3827       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3828       25,    26,    27,    28,    67,    30,    31,    32,    -1,    72,
    3829      111,    74,    75,    76,    39,    -1,   117,   118,    -1,    -1,
    3830       83,    84,    -1,    10,    11,    12,    13,    14,    15,    16,
    3831       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3832       27,    -1,    67,    30,    31,    32,   109,    -1,   111,    74,
    3833       75,    -1,    39,    78,   117,   118,    10,    11,    12,    13,
    3834       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    38353736      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3836       67,    -1,    -1,    -1,    -1,    39,   111,    74,    75,    -1,
    3837       -1,    -1,   117,   118,    10,    11,    12,    13,    14,    15,
    3838       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3839       26,    27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,
    3840       74,    75,    -1,    39,   111,    -1,    -1,    -1,    -1,    -1,
    3841      117,   118,    10,    11,    12,    13,    14,    15,    16,    17,
    3842       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3843       -1,    67,    30,    31,    32,    -1,    -1,   111,    74,    75,
    3844       -1,    39,    -1,   117,   118,    10,    11,    12,    13,    14,
    3845       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3846       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    67,
    3847       -1,    -1,    -1,    -1,    39,   111,    74,    75,    -1,    -1,
    3848       -1,   117,   118,    10,    11,    12,    13,    14,    15,    16,
    3849       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3850       27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,    74,
    3851       75,    -1,    39,   111,    -1,    -1,    -1,    -1,    -1,   117,
    3852      118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3853       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3854       67,    30,    31,    32,    -1,    -1,   111,    74,    75,    -1,
    3855       39,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
    3856       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3857       20,    21,    22,    23,    24,    25,    26,    27,    67,    -1,
    3858       30,    31,    32,    -1,   111,    74,    75,    -1,    -1,    39,
    3859      117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3737      -1,    -1,    -1,    -1,    -1,    39,    -1,    37,    38,    -1,
     3738      40,    41,    -1,    43,    44,    45,    46,    47,    48,    49,
     3739      50,    51,    52,    53,    -1,    -1,    56,    57,    -1,    -1,
     3740      -1,    61,    62,    67,    64,    69,    66,    71,    -1,    -1,
     3741      74,    75,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3742      80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
     3743      -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,
    38603744      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3861       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
    3862       -1,    71,    -1,    -1,    74,    75,    -1,    -1,   117,   118,
    3863       37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,    46,
    3864       47,    48,    49,    50,    51,    52,    53,    -1,    -1,    56,
    3865       57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
    3866      110,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
    3867       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3868       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3869       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3870       -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
    3871      117,   118,   119,   120,   121,   122,    -1,    -1,    37,    38,
    3872      127,    40,    41,    -1,    43,   132,    -1,    46,    47,    48,
    3873       49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
    3874       -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
    3875       -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3876       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3745      -1,   111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,
     3746     120,   121,   122,   123,   124,    -1,    -1,    37,    38,   129,
     3747      40,    41,    -1,    43,    44,    45,    46,    47,    48,    49,
     3748      50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
     3749      -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
     3750      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3751      80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
    38773752      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38783753      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3879      109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
    3880      119,   120,   121,   122,    -1,    -1,    -1,    -1,   127,    -1,
    3881       -1,    -1,    -1,   132,     4,     5,     6,     7,     8,     9,
    3882       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3883       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3884       30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    3885       -1,    37,    38,    -1,    40,    41,    -1,    43,    44,    45,
    3886       46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
    3887       56,    57,    -1,    -1,    -1,    61,    62,    67,    64,    69,
    3888       66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,    -1,
    3889       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3890       86,    87,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
    3891       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3892       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
    3893       -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    37,
    3894       38,   127,    40,    41,    -1,    43,    44,    45,    46,    47,
    3895       48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    57,
    3896       -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,
    3897       -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
    3898       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3899       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3900       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3901       -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,
    3902      118,   119,   120,   121,   122,    -1,    -1,    37,    38,   127,
     3754      -1,   111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,
     3755     120,   121,   122,   123,   124,    -1,    -1,    37,    38,   129,
    39033756      40,    41,    -1,    43,    -1,    -1,    46,    47,    48,    49,
    39043757      50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
    39053758      -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
    39063759      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
    3907       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3760      80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
     3761      -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,
     3762      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3763      -1,   111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,
     3764     120,   121,   122,   123,   124,    66,    -1,    -1,    -1,   129,
     3765      -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3766      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
     3767      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,
     3768      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3769     111,    -1,   113,    -1,   115,   116,    -1,    -1,   119,   120,
     3770     121,   122,   123,   124,    66,    -1,    -1,    -1,    -1,    -1,
     3771      72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
     3772      82,    83,    84,    85,    86,    -1,    88,    89,    -1,    -1,
    39083773      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
    3909       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    3910       -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
    3911      120,   121,   122,    66,    -1,    -1,    -1,   127,    -1,    72,
     3774      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3775      -1,   113,    -1,    -1,   116,    -1,    -1,   119,   120,   121,
     3776     122,   123,   124,    66,    -1,    -1,    -1,    -1,    -1,    72,
    39123777      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3913       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3778      83,    84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,
     3779      -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
     3780      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3781     113,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
     3782     123,   124,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     3783      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3784      84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,
     3785      -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
     3786      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,
     3787      -1,    -1,   116,    -1,    -1,   119,   120,   121,   122,   123,
     3788     124,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     3789      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3790      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
    39143791      -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
    3915       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
    3916       -1,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3792      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
     3793      -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
    39173794      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
    3918       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3919       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
     3795      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
     3796      86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
     3797      37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
     3798      -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
     3799      -1,    -1,    -1,   119,   120,   121,   122,   123,   124,    66,
     3800      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3801      -1,    -1,    79,    80,    81,    82,    83,    84,    85,    86,
     3802      -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    37,
     3803      38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3804      -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,    -1,
     3805      -1,    -1,   119,   120,   121,   122,   123,   124,    66,    -1,
     3806      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     3807      -1,    79,    80,    81,    82,    83,    84,    85,    86,    -1,
     3808      88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
    39203809      -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3921       -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,    -1,
    3922       40,   117,   118,   119,   120,   121,   122,    66,    -1,    -1,
     3810      -1,    -1,    -1,   111,    -1,   113,    -1,    -1,    -1,    -1,
     3811      -1,   119,   120,   121,   122,   123,   124,    66,    -1,    -1,
    39233812      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3924       79,    80,    81,    82,    83,    84,    66,    86,    87,    -1,
     3813      79,    80,    81,    82,    83,    84,    85,    86,    -1,    88,
     3814      89,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
     3815      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3816      -1,    -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,
     3817     119,   120,   121,   122,   123,   124,    66,    -1,    -1,    -1,
    39253818      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
    3926       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    3927      109,    -1,   111,    -1,    37,    38,    -1,    40,   117,   118,
    3928      119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,   109,
    3929       -1,   111,    -1,    37,    38,    -1,    40,   117,   118,   119,
    3930      120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,
    3931       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3932       83,    84,    66,    86,    87,    -1,    -1,    -1,    72,    -1,
    3933       -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3934       84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,    -1,
    3935       37,    38,    -1,    40,   117,   118,   119,   120,   121,   122,
    3936       -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    37,
    3937       38,    -1,    40,   117,   118,   119,   120,   121,   122,    66,
    3938       -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
    3939       -1,    -1,    79,    80,    81,    82,    83,    84,    66,    86,
    3940       87,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
    3941       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3942       -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3943      117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
    3944       -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
    3945      118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
     3819      80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
     3820      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3821      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3822      -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,
     3823     120,   121,   122,   123,   124,     4,     5,     6,     7,     8,
    39463824       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    39473825      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     
    39513829      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    39523830      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
    3953       -1,    -1,    -1,    -1,    83,    84,     3,     4,     5,     6,
    3954        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3955       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3956       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3957       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3831      -1,    -1,    -1,    -1,    -1,    -1,    85,    86,     3,     4,
     3832       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3833      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3834      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3835      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
    39583836      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39593837      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3960       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     3,
    3961        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3962       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3963       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3964       -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
    3965       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3966       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3967       -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
    3968       74,    75,     4,     5,     6,     7,     8,     9,    10,    11,
     3838      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3839      75,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    39693840      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    39703841      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     
    39733844      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39743845      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    3975       -1,    -1,    74,    75
     3846      -1,    -1,    74,    75,     4,     5,     6,     7,     8,     9,
     3847      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3848      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3849      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3850      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3851      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3852      -1,    30,    31,    32,    33,    34,    35,    67,    -1,    69,
     3853      39,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
     3854      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3855      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3856      -1,    -1,    -1,    -1,    -1,    74,    75
    39763857};
    39773858
     
    39843865      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
    39853866      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
    3986       76,    83,    84,   109,   111,   117,   118,   137,   140,   150,
    3987      199,   213,   214,   215,   216,   217,   218,   219,   220,   221,
    3988      222,   223,   224,   225,   226,   227,   228,   229,   230,   232,
    3989      233,   234,   235,   236,   237,   238,   240,   241,   242,   243,
    3990      244,   245,   247,   255,   256,   283,   284,   285,   293,   296,
    3991      302,   303,   305,   307,   308,   314,   319,   323,   324,   325,
    3992      326,   327,   328,   329,   330,   350,   367,   368,   369,   370,
    3993       72,   139,   140,   150,   216,   218,   226,   228,   237,   241,
    3994      243,   284,    82,   109,   312,   313,   314,   312,   312,    72,
    3995       74,    75,    76,   138,   139,   273,   274,   294,   295,    74,
    3996       75,   274,   109,   305,    11,   200,   109,   150,   319,   324,
    3997      325,   326,   328,   329,   330,   112,   134,   111,   219,   226,
    3998      228,   323,   327,   366,   367,   370,   371,   135,   107,   131,
    3999      277,   114,   135,   174,    74,    75,   137,   272,   135,   135,
    4000      135,   116,   135,    74,    75,   109,   150,   309,   318,   319,
    4001      320,   321,   322,   323,   327,   331,   332,   333,   334,   335,
    4002      341,     3,    28,    78,   239,     3,     5,    74,   111,   150,
    4003      218,   229,   233,   235,   244,   285,   323,   327,   370,   216,
    4004      218,   228,   237,   241,   243,   284,   323,   327,    33,   234,
    4005      234,   229,   235,   135,   234,   229,   234,   229,    75,   109,
    4006      114,   274,   285,   114,   274,   234,   229,   116,   135,   135,
    4007        0,   134,   109,   174,   312,   312,   134,   111,   226,   228,
    4008      368,   272,   272,   131,   228,   109,   150,   309,   319,   323,
    4009      111,   150,   370,   306,   231,   314,   109,   290,   109,   109,
    4010       51,   109,    37,    38,    40,    66,    72,    76,    79,    80,
    4011       81,    82,    86,    87,   109,   111,   119,   120,   121,   122,
    4012      136,   140,   141,   142,   143,   144,   149,   150,   151,   152,
    4013      153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
    4014      163,   165,   168,   226,   276,   292,   366,   371,   228,   110,
    4015      110,   110,   110,   110,   110,   110,    74,    75,   111,   226,
    4016      272,   350,   368,   111,   117,   150,   165,   218,   219,   225,
    4017      228,   232,   233,   237,   240,   241,   243,   262,   263,   267,
    4018      268,   269,   270,   284,   350,   362,   363,   364,   365,   370,
    4019      371,   112,   109,   323,   327,   370,   109,   116,   132,   111,
    4020      114,   150,   165,   278,   278,   115,   134,   116,   132,   109,
    4021      116,   132,   116,   132,   116,   132,   312,   132,   319,   320,
    4022      321,   322,   332,   333,   334,   335,   228,   318,   331,    64,
    4023      311,   111,   312,   349,   350,   312,   312,   174,   134,   109,
    4024      312,   349,   312,   312,   228,   309,   109,   109,   227,   228,
    4025      226,   228,   112,   134,   226,   366,   371,   174,   134,   272,
    4026      277,   218,   233,   323,   327,   174,   134,   294,   228,   237,
    4027      132,   228,   228,   292,   248,   246,   258,   274,   257,   228,
    4028      294,   132,   132,   305,   134,   139,   271,     3,   135,   208,
    4029      209,   223,   225,   228,   134,   311,   109,   311,   165,   319,
    4030      228,   109,   134,   272,   114,    33,    34,    35,   226,   286,
    4031      287,   289,   134,   128,   131,   291,   134,   229,   234,   235,
    4032      272,   315,   316,   317,   109,   141,   109,   149,   109,   149,
    4033      152,   109,   149,   109,   109,   149,   149,   111,   165,   170,
    4034      174,   226,   275,   366,   370,   112,   134,    82,    85,    86,
    4035       87,   109,   111,   113,   114,    97,    98,    99,   100,   101,
    4036      102,   103,   104,   105,   106,   107,   131,   167,   152,   152,
    4037      117,   123,   124,   119,   120,    88,    89,    90,    91,   125,
    4038      126,    92,    93,   118,   127,   128,    94,    95,   129,   131,
    4039      373,   109,   150,   345,   346,   347,   348,   349,   110,   116,
    4040      109,   349,   350,   109,   349,   350,   134,   109,   226,   368,
    4041      112,   134,   135,   111,   226,   228,   361,   362,   370,   371,
    4042      135,   109,   111,   150,   319,   336,   337,   338,   339,   340,
    4043      341,   342,   343,   344,   350,   351,   352,   353,   354,   355,
    4044      356,   150,   370,   228,   135,   135,   150,   226,   228,   363,
    4045      272,   226,   350,   363,   272,   109,   134,   134,   134,   112,
    4046      134,    72,   111,   113,   140,   274,   278,   279,   280,   281,
    4047      282,   134,   134,   134,   134,   134,   134,   309,   110,   110,
    4048      110,   110,   110,   110,   110,   318,   331,   109,   277,   112,
    4049      208,   134,   309,   170,   276,   170,   276,   309,   111,   208,
    4050      311,   174,   134,   208,   110,    40,   111,   115,   226,   249,
    4051      250,   251,   366,   114,   116,   372,   131,   259,   114,   228,
    4052      264,   265,   266,   269,   270,   110,   116,   174,   134,   117,
    4053      165,   134,   225,   228,   263,   362,   370,   303,   304,   109,
    4054      150,   336,   110,   116,   373,   274,   286,   109,   114,   274,
    4055      276,   286,   110,   116,   109,   141,   110,   130,   275,   275,
    4056      275,   146,   165,   276,   275,   112,   134,   110,   116,   110,
    4057      109,   150,   349,   357,   358,   359,   360,   110,   116,   165,
    4058      111,   139,   145,   146,   134,   111,   139,   145,   165,   152,
    4059      152,   152,   153,   153,   154,   154,   155,   155,   155,   155,
    4060      156,   156,   157,   158,   159,   160,   161,   130,   170,   165,
    4061      134,   346,   347,   348,   228,   345,   312,   312,   165,   276,
    4062      134,   271,   134,   226,   350,   363,   228,   232,   112,   112,
    4063      134,   370,   112,   109,   134,   319,   337,   338,   339,   342,
    4064      352,   353,   354,   112,   134,   228,   336,   340,   351,   109,
    4065      312,   355,   373,   312,   312,   373,   109,   312,   355,   312,
    4066      312,   312,   312,   350,   226,   361,   371,   272,   112,   116,
    4067      112,   116,   373,   226,   363,   373,   260,   261,   262,   263,
    4068      260,   260,   272,   165,   134,   111,   274,   130,   116,   372,
    4069      278,   111,   130,   282,    29,   210,   211,   272,   260,   139,
    4070      309,   139,   311,   109,   349,   350,   109,   349,   350,   142,
    4071      350,   174,   264,   110,   110,   110,   110,   112,   174,   208,
    4072      174,   114,   250,   251,   112,   134,   109,   130,   150,   252,
    4073      254,   318,   319,   331,   357,   116,   132,   116,   132,   274,
    4074      248,   274,   115,   163,   164,   258,   135,   135,   139,   223,
    4075      135,   135,   260,   109,   150,   370,   135,   115,   228,   287,
    4076      288,   135,   134,   134,   109,   135,   110,   316,   170,   171,
    4077      130,   132,   111,   141,   201,   202,   203,   110,   116,   110,
    4078      110,   110,   110,   111,   165,   358,   359,   360,   228,   357,
    4079      312,   312,   114,   152,   168,   165,   166,   169,   116,   135,
    4080      134,   110,   116,   165,   134,   115,   163,   130,   264,   110,
    4081      110,   110,   345,   264,   110,   260,   226,   363,   111,   117,
    4082      150,   165,   165,   228,   342,   264,   110,   110,   110,   110,
    4083      110,   110,   110,     7,   228,   336,   340,   351,   134,   134,
    4084      373,   134,   134,   110,   135,   135,   135,   135,   277,   135,
    4085      163,   164,   165,   310,   134,   278,   280,   115,   134,   212,
    4086      274,    40,    41,    43,    46,    47,    48,    49,    50,    51,
    4087       52,    53,    57,    61,    62,    72,   111,   127,   171,   172,
    4088      173,   174,   175,   176,   178,   179,   191,   193,   194,   199,
    4089      213,   308,    29,   135,   131,   277,   134,   134,   110,   135,
    4090      174,   248,   132,   132,   319,   164,   228,   253,   254,   253,
    4091      274,   312,   115,   259,   372,   110,   116,   112,   112,   135,
    4092      228,   116,   373,   290,   110,   286,   216,   218,   226,   298,
    4093      299,   300,   301,   292,   110,   110,   130,   164,   109,   110,
    4094      130,   116,   139,   112,   110,   110,   110,   357,   279,   116,
    4095      135,   169,   112,   139,   147,   148,   146,   135,   147,   163,
    4096      168,   135,   109,   349,   350,   135,   135,   134,   135,   135,
    4097      135,   165,   110,   135,   109,   349,   350,   109,   355,   109,
    4098      355,   350,   227,     7,   117,   135,   165,   264,   264,   263,
    4099      267,   267,   268,   116,   116,   110,   110,   112,    96,   122,
    4100      135,   135,   147,   278,   165,   116,   132,   213,   217,   228,
    4101      232,   109,   109,   172,   109,   109,    72,   132,    72,   132,
    4102       72,   117,   171,   109,   174,   166,   166,   130,   112,   144,
    4103      132,   135,   134,   135,   212,   110,   165,   264,   264,   312,
    4104      110,   115,   252,   115,   134,   110,   134,   135,   309,   115,
    4105      134,   135,   135,   110,   114,   201,   112,   164,   132,   201,
    4106      203,   110,   109,   349,   350,   372,   166,   112,   135,    85,
    4107      113,   116,   135,   112,   135,   110,   134,   110,   110,   112,
    4108      112,   112,   135,   110,   134,   134,   134,   165,   165,   135,
    4109      112,   135,   135,   135,   135,   134,   134,   164,   164,   112,
    4110      112,   135,   135,   274,   228,   170,   170,    47,   170,   134,
    4111      132,   132,   132,   170,   132,   170,    58,    59,    60,   195,
    4112      196,   197,   132,    63,   132,   312,   114,   176,   115,   132,
    4113      135,   135,    96,   269,   270,   110,   299,   116,   132,   116,
    4114      132,   115,   297,   130,   141,   110,   110,   130,   134,   115,
    4115      112,   111,   148,   111,   148,   148,   112,   112,   264,   112,
    4116      264,   264,   264,   135,   135,   112,   112,   110,   110,   112,
    4117      116,    96,   263,    96,   135,   112,   112,   110,   110,   109,
    4118      110,   171,   192,   213,   132,   110,   109,   109,   174,   197,
    4119       58,    59,   165,   172,   145,   110,   110,   114,   134,   134,
    4120      298,   141,   204,   109,   132,   204,   264,   134,   134,   135,
    4121      135,   135,   135,   112,   112,   134,   135,   112,   172,    44,
    4122       45,   114,   182,   183,   184,   170,   172,   135,   110,   171,
    4123      114,   184,    96,   134,    96,   134,   109,   109,   132,   115,
    4124      134,   272,   309,   115,   116,   130,   164,   110,   135,   147,
    4125      147,   110,   110,   110,   110,   267,    42,   164,   180,   181,
    4126      310,   130,   134,   172,   182,   110,   132,   172,   132,   134,
    4127      110,   134,   110,   134,    96,   134,    96,   134,   132,   298,
    4128      141,   139,   205,   110,   132,   110,   135,   135,   172,    96,
    4129      116,   130,   135,   206,   207,   213,   132,   171,   171,   206,
    4130      174,   198,   226,   366,   174,   198,   110,   134,   110,   134,
    4131      115,   110,   116,   112,   112,   164,   180,   183,   185,   186,
    4132      134,   132,   183,   187,   188,   135,   109,   150,   309,   357,
    4133      139,   135,   174,   198,   174,   198,   109,   132,   139,   172,
    4134      177,   115,   183,   213,   171,    56,   177,   190,   115,   183,
    4135      110,   228,   110,   135,   135,   292,   172,   177,   132,   189,
    4136      190,   177,   190,   174,   174,   110,   110,   110,   189,   135,
    4137      135,   174,   174,   135,   135
     3867      76,    85,    86,   111,   113,   119,   120,   139,   142,   154,
     3868     203,   217,   218,   219,   220,   221,   222,   223,   224,   225,
     3869     226,   227,   228,   229,   230,   231,   232,   233,   234,   236,
     3870     237,   238,   239,   240,   241,   242,   244,   245,   246,   247,
     3871     248,   249,   251,   259,   260,   287,   288,   289,   297,   300,
     3872     306,   307,   309,   311,   312,   318,   323,   327,   328,   329,
     3873     330,   331,   332,   333,   334,   354,   371,   372,   373,   374,
     3874      72,   141,   142,   154,   220,   222,   230,   232,   241,   245,
     3875     247,   288,    81,   111,   316,   317,   318,   316,   316,    72,
     3876      74,    75,    76,   140,   141,   277,   278,   298,   299,    74,
     3877      75,   278,   111,   309,    11,   204,   111,   154,   323,   328,
     3878     329,   330,   332,   333,   334,   114,   136,   223,   230,   232,
     3879     327,   331,   370,   371,   374,   375,   137,   109,   133,   281,
     3880     116,   137,   178,    74,    75,   139,   276,   137,   137,   137,
     3881     118,   137,    74,    75,   111,   154,   313,   322,   323,   324,
     3882     325,   326,   327,   331,   335,   336,   337,   338,   339,   345,
     3883       3,    28,    78,   243,     3,     5,    74,   113,   154,   222,
     3884     233,   237,   239,   248,   289,   327,   331,   374,   220,   222,
     3885     232,   241,   245,   247,   288,   327,   331,    33,   238,   238,
     3886     233,   239,   137,   238,   233,   238,   233,    75,   111,   116,
     3887     278,   289,   116,   278,   238,   233,   118,   137,   137,     0,
     3888     136,   111,   178,   316,   316,   136,   113,   230,   232,   372,
     3889     276,   276,   133,   232,   111,   154,   313,   323,   327,   113,
     3890     154,   374,   310,   235,   318,   111,   294,   111,   111,    51,
     3891     111,    37,    38,    40,    66,    72,    76,    79,    80,    81,
     3892      82,    83,    84,    88,    89,   111,   113,   121,   122,   123,
     3893     124,   138,   142,   143,   144,   145,   146,   153,   154,   155,
     3894     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
     3895     166,   167,   169,   172,   230,   280,   296,   370,   375,   232,
     3896     112,   112,   112,   112,   112,   112,   112,   113,   230,   354,
     3897     372,   113,   119,   154,   169,   222,   223,   229,   232,   236,
     3898     237,   241,   244,   245,   247,   266,   267,   271,   272,   273,
     3899     274,   288,   354,   366,   367,   368,   369,   374,   375,   111,
     3900     327,   331,   374,   111,   118,   134,   113,   116,   154,   169,
     3901     282,   282,   117,   136,   118,   134,   111,   118,   134,   118,
     3902     134,   118,   134,   316,   134,   323,   324,   325,   326,   336,
     3903     337,   338,   339,   232,   322,   335,    64,   315,   113,   316,
     3904     353,   354,   316,   316,   178,   136,   111,   316,   353,   316,
     3905     316,   232,   313,   111,   111,   231,   232,   230,   232,   136,
     3906     230,   370,   375,   178,   136,   276,   281,   222,   237,   327,
     3907     331,   178,   136,   298,   232,   241,   134,   232,   232,   296,
     3908     252,   250,   262,   278,   261,   232,   298,   134,   134,   309,
     3909     136,   141,   275,     3,   137,   212,   213,   227,   229,   232,
     3910     136,   315,   111,   315,   169,   323,   232,   111,   136,   276,
     3911     116,    33,    34,    35,   230,   290,   291,   293,   136,   130,
     3912     133,   295,   136,   233,   238,   239,   276,   319,   320,   321,
     3913     111,   143,   111,   153,   111,   153,   156,   111,   153,   111,
     3914     111,   153,   153,   113,   169,   174,   178,   230,   279,   370,
     3915     374,   136,    81,    83,    87,    88,    89,   111,   113,   115,
     3916     116,    99,   100,   101,   102,   103,   104,   105,   106,   107,
     3917     108,   109,   133,   171,   156,   156,   119,   125,   126,   121,
     3918     122,    90,    91,    92,    93,   127,   128,    94,    95,   120,
     3919     129,   130,    96,    97,   131,   111,   154,   349,   350,   351,
     3920     352,   353,   112,   118,   111,   353,   354,   111,   353,   354,
     3921     136,   230,   372,   114,   136,   137,   230,   232,   365,   366,
     3922     374,   375,   137,   111,   113,   154,   323,   340,   341,   342,
     3923     343,   344,   345,   346,   347,   348,   354,   355,   356,   357,
     3924     358,   359,   360,   154,   374,   232,   137,   137,   154,   230,
     3925     232,   367,   276,   230,   354,   367,   276,   136,   136,   136,
     3926     136,    72,   113,   115,   142,   278,   282,   283,   284,   285,
     3927     286,   136,   136,   136,   136,   136,   136,   313,   112,   112,
     3928     112,   112,   112,   112,   112,   322,   335,   111,   281,   114,
     3929     212,   136,   313,   174,   280,   174,   280,   313,   113,   212,
     3930     315,   178,   136,   212,   112,    40,   113,   117,   230,   253,
     3931     254,   255,   370,   116,   118,   376,   133,   263,   116,   232,
     3932     268,   269,   270,   273,   274,   112,   118,   178,   136,   119,
     3933     169,   136,   229,   232,   267,   366,   374,   307,   308,   111,
     3934     154,   340,   112,   118,   133,   377,   278,   290,   111,   116,
     3935     278,   280,   290,   112,   118,   111,   143,   112,   132,   279,
     3936     279,   279,   148,   169,   280,   279,   136,   112,   118,   112,
     3937     111,   154,   353,   361,   362,   363,   364,   112,   118,   169,
     3938     113,   141,   147,   148,   136,   113,   141,   147,   169,   156,
     3939     156,   156,   157,   157,   158,   158,   159,   159,   159,   159,
     3940     160,   160,   161,   162,   163,   164,   165,   132,   174,   136,
     3941     350,   351,   352,   232,   349,   316,   316,   169,   280,   136,
     3942     275,   230,   354,   367,   232,   236,   114,   374,   114,   111,
     3943     136,   323,   341,   342,   343,   346,   356,   357,   358,   114,
     3944     136,   232,   340,   344,   355,   111,   316,   359,   377,   316,
     3945     316,   377,   111,   316,   359,   316,   316,   316,   316,   354,
     3946     230,   365,   375,   276,   114,   118,   114,   118,   377,   230,
     3947     367,   377,   264,   265,   266,   267,   264,   276,   169,   136,
     3948     113,   278,   132,   118,   376,   282,   113,   132,   286,    29,
     3949     214,   215,   276,   264,   141,   313,   141,   315,   111,   353,
     3950     354,   111,   353,   354,   144,   354,   178,   268,   112,   112,
     3951     112,   112,   136,   178,   212,   178,   116,   254,   255,   136,
     3952     111,   132,   154,   256,   258,   322,   323,   335,   361,   118,
     3953     134,   118,   134,   278,   252,   278,   117,   167,   168,   262,
     3954     137,   137,   141,   227,   137,   137,   264,   111,   154,   374,
     3955     137,   117,   232,   291,   169,   292,   137,   136,   136,   111,
     3956     137,   112,   320,   174,   175,   132,   134,   113,   143,   205,
     3957     206,   207,   112,   118,   112,   112,   112,   112,   169,   362,
     3958     363,   364,   232,   361,   316,   316,   116,   156,   169,   170,
     3959     173,   118,   136,   112,   118,   169,   136,   117,   167,   132,
     3960     268,   112,   112,   112,   349,   268,   112,   230,   367,   113,
     3961     119,   154,   169,   169,   232,   346,   268,   112,   112,   112,
     3962     112,   112,   112,   112,     7,   232,   340,   344,   355,   136,
     3963     136,   377,   136,   136,   137,   137,   137,   137,   281,   167,
     3964     168,   169,   314,   136,   282,   284,   117,   136,   216,   278,
     3965      40,    41,    43,    46,    47,    48,    49,    50,    51,    52,
     3966      53,    57,    61,    62,    72,   129,   175,   176,   177,   178,
     3967     179,   180,   182,   183,   195,   197,   198,   203,   217,   312,
     3968      29,   137,   133,   281,   136,   136,   112,   137,   178,   252,
     3969     134,   134,   323,   168,   232,   257,   258,   257,   278,   316,
     3970     117,   263,   376,   112,   118,   114,   114,   137,   232,   118,
     3971     377,   294,   112,   290,   220,   222,   230,   302,   303,   304,
     3972     305,   296,   112,   112,   132,   168,   111,   112,   132,   118,
     3973     141,   112,   112,   112,   361,   283,   118,   137,   173,    79,
     3974      82,    84,   141,   149,   150,   151,   148,   137,   149,   167,
     3975     137,   111,   353,   354,   137,   136,   137,   137,   137,   169,
     3976     112,   137,   111,   353,   354,   111,   359,   111,   359,   354,
     3977     231,     7,   119,   137,   169,   268,   268,   267,   271,   271,
     3978     272,   112,   118,   118,   112,    98,   124,   137,   137,   149,
     3979     282,   169,   118,   134,   217,   221,   232,   236,   111,   111,
     3980     176,   111,   111,    72,   134,    72,   134,    72,   119,   175,
     3981     111,   178,   170,   170,   132,   146,   134,   137,   136,   137,
     3982     216,   112,   169,   268,   268,   316,   112,   117,   256,   117,
     3983     136,   112,   136,   137,   313,   117,   136,   137,   137,   112,
     3984     116,   205,   114,   168,   134,   205,   207,   112,   111,   353,
     3985     354,   376,   170,   114,   137,   152,   113,   150,   152,   152,
     3986     118,   137,    87,   115,   114,   137,   112,   136,   112,   114,
     3987     114,   114,   137,   112,   136,   136,   136,   169,   169,   137,
     3988     114,   137,   137,   137,   137,   136,   136,   168,   168,   114,
     3989     114,   137,   278,   232,   174,   174,    47,   174,   136,   134,
     3990     134,   134,   174,   134,   174,    58,    59,    60,   199,   200,
     3991     201,   134,    63,   134,   316,   116,   180,   117,   134,   137,
     3992     137,    98,   273,   274,   112,   303,   118,   134,   118,   134,
     3993     117,   301,   132,   143,   112,   112,   132,   136,   117,   114,
     3994      83,   136,   150,   114,   113,   150,   113,   150,   114,   268,
     3995     114,   268,   268,   268,   137,   137,   114,   114,   112,   112,
     3996     114,   118,    98,   267,    98,   137,   114,   112,   112,   111,
     3997     112,   175,   196,   217,   134,   112,   111,   111,   178,   201,
     3998      58,    59,   169,   176,   147,   112,   112,   116,   136,   136,
     3999     302,   143,   208,   111,   134,   208,   268,   149,   136,   136,
     4000     137,   137,   137,   137,   114,   114,   136,   137,   114,   176,
     4001      44,    45,   116,   186,   187,   188,   174,   176,   137,   112,
     4002     175,   116,   188,    98,   136,    98,   136,   111,   111,   134,
     4003     117,   136,   276,   313,   117,   118,   132,   168,   112,   137,
     4004     137,   149,   149,   112,   112,   112,   112,   271,    42,   168,
     4005     184,   185,   314,   132,   136,   176,   186,   112,   134,   176,
     4006     134,   136,   112,   136,   112,   136,    98,   136,    98,   136,
     4007     134,   302,   143,   141,   209,   112,   134,   112,   114,   137,
     4008     137,   176,    98,   118,   132,   137,   210,   211,   217,   134,
     4009     175,   175,   210,   178,   202,   230,   370,   178,   202,   112,
     4010     136,   112,   136,   117,   112,   118,   114,   114,   168,   184,
     4011     187,   189,   190,   136,   134,   187,   191,   192,   137,   111,
     4012     154,   313,   361,   141,   137,   178,   202,   178,   202,   111,
     4013     134,   141,   176,   181,   117,   187,   217,   175,    56,   181,
     4014     194,   117,   187,   112,   232,   112,   137,   137,   296,   176,
     4015     181,   134,   193,   194,   181,   194,   178,   178,   112,   112,
     4016     112,   193,   137,   137,   178,   178,   137,   137
    41384017};
    41394018
     
    49724851
    49734852/* Line 1806 of yacc.c  */
    4974 #line 301 "parser.yy"
     4853#line 306 "parser.yy"
    49754854    { typedefTable.enterScope(); }
    49764855    break;
     
    49794858
    49804859/* Line 1806 of yacc.c  */
    4981 #line 305 "parser.yy"
     4860#line 310 "parser.yy"
    49824861    { typedefTable.leaveScope(); }
    49834862    break;
     
    49864865
    49874866/* Line 1806 of yacc.c  */
    4988 #line 312 "parser.yy"
     4867#line 317 "parser.yy"
    49894868    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    49904869    break;
     
    49934872
    49944873/* Line 1806 of yacc.c  */
    4995 #line 313 "parser.yy"
     4874#line 318 "parser.yy"
    49964875    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    49974876    break;
     
    50004879
    50014880/* Line 1806 of yacc.c  */
    5002 #line 314 "parser.yy"
     4881#line 319 "parser.yy"
     4882    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     4883    break;
     4884
     4885  case 7:
     4886
     4887/* Line 1806 of yacc.c  */
     4888#line 320 "parser.yy"
     4889    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     4890    break;
     4891
     4892  case 8:
     4893
     4894/* Line 1806 of yacc.c  */
     4895#line 321 "parser.yy"
    50034896    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    50044897    break;
    50054898
    5006   case 16:
    5007 
    5008 /* Line 1806 of yacc.c  */
    5009 #line 339 "parser.yy"
     4899  case 18:
     4900
     4901/* Line 1806 of yacc.c  */
     4902#line 346 "parser.yy"
    50104903    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
    50114904    break;
    50124905
    5013   case 17:
    5014 
    5015 /* Line 1806 of yacc.c  */
    5016 #line 343 "parser.yy"
     4906  case 19:
     4907
     4908/* Line 1806 of yacc.c  */
     4909#line 350 "parser.yy"
    50174910    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
    50184911    break;
    50194912
    5020   case 18:
    5021 
    5022 /* Line 1806 of yacc.c  */
    5023 #line 345 "parser.yy"
     4913  case 20:
     4914
     4915/* Line 1806 of yacc.c  */
     4916#line 352 "parser.yy"
    50244917    {
    50254918                        appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );                                            // append 2nd juxtaposed string to 1st
     
    50294922    break;
    50304923
    5031   case 19:
    5032 
    5033 /* Line 1806 of yacc.c  */
    5034 #line 356 "parser.yy"
     4924  case 21:
     4925
     4926/* Line 1806 of yacc.c  */
     4927#line 363 "parser.yy"
    50354928    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50364929    break;
    50374930
    5038   case 20:
    5039 
    5040 /* Line 1806 of yacc.c  */
    5041 #line 358 "parser.yy"
     4931  case 22:
     4932
     4933/* Line 1806 of yacc.c  */
     4934#line 365 "parser.yy"
    50424935    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50434936    break;
    50444937
    5045   case 21:
    5046 
    5047 /* Line 1806 of yacc.c  */
    5048 #line 360 "parser.yy"
     4938  case 24:
     4939
     4940/* Line 1806 of yacc.c  */
     4941#line 368 "parser.yy"
    50494942    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    50504943    break;
    50514944
    5052   case 22:
    5053 
    5054 /* Line 1806 of yacc.c  */
    5055 #line 362 "parser.yy"
     4945  case 25:
     4946
     4947/* Line 1806 of yacc.c  */
     4948#line 370 "parser.yy"
    50564949    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    50574950    break;
    50584951
    5059   case 24:
    5060 
    5061 /* Line 1806 of yacc.c  */
    5062 #line 372 "parser.yy"
     4952  case 27:
     4953
     4954/* Line 1806 of yacc.c  */
     4955#line 380 "parser.yy"
    50634956    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    50644957    break;
    50654958
    5066   case 25:
    5067 
    5068 /* Line 1806 of yacc.c  */
    5069 #line 374 "parser.yy"
     4959  case 28:
     4960
     4961/* Line 1806 of yacc.c  */
     4962#line 382 "parser.yy"
    50704963    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    50714964    break;
    50724965
    5073   case 26:
    5074 
    5075 /* Line 1806 of yacc.c  */
    5076 #line 378 "parser.yy"
     4966  case 29:
     4967
     4968/* Line 1806 of yacc.c  */
     4969#line 384 "parser.yy"
    50774970    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50784971    break;
    50794972
    5080   case 28:
    5081 
    5082 /* Line 1806 of yacc.c  */
    5083 #line 381 "parser.yy"
     4973  case 32:
     4974
     4975/* Line 1806 of yacc.c  */
     4976#line 388 "parser.yy"
    50844977    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50854978    break;
    50864979
    5087   case 30:
    5088 
    5089 /* Line 1806 of yacc.c  */
    5090 #line 384 "parser.yy"
     4980  case 34:
     4981
     4982/* Line 1806 of yacc.c  */
     4983#line 391 "parser.yy"
    50914984    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    50924985    break;
    50934986
    5094   case 31:
    5095 
    5096 /* Line 1806 of yacc.c  */
    5097 #line 386 "parser.yy"
     4987  case 35:
     4988
     4989/* Line 1806 of yacc.c  */
     4990#line 393 "parser.yy"
    50984991    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    50994992    break;
    51004993
    5101   case 32:
    5102 
    5103 /* Line 1806 of yacc.c  */
    5104 #line 388 "parser.yy"
     4994  case 36:
     4995
     4996/* Line 1806 of yacc.c  */
     4997#line 395 "parser.yy"
    51054998    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    51064999    break;
    51075000
    5108   case 33:
    5109 
    5110 /* Line 1806 of yacc.c  */
    5111 #line 390 "parser.yy"
     5001  case 37:
     5002
     5003/* Line 1806 of yacc.c  */
     5004#line 397 "parser.yy"
    51125005    {
    51135006                        Token fn;
     
    51175010    break;
    51185011
    5119   case 35:
    5120 
    5121 /* Line 1806 of yacc.c  */
    5122 #line 400 "parser.yy"
     5012  case 39:
     5013
     5014/* Line 1806 of yacc.c  */
     5015#line 407 "parser.yy"
    51235016    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    51245017    break;
    51255018
    5126   case 36:
    5127 
    5128 /* Line 1806 of yacc.c  */
    5129 #line 405 "parser.yy"
     5019  case 40:
     5020
     5021/* Line 1806 of yacc.c  */
     5022#line 412 "parser.yy"
    51305023    { (yyval.en) = 0; }
    51315024    break;
    51325025
    5133   case 39:
    5134 
    5135 /* Line 1806 of yacc.c  */
    5136 #line 411 "parser.yy"
     5026  case 43:
     5027
     5028/* Line 1806 of yacc.c  */
     5029#line 418 "parser.yy"
    51375030    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    51385031    break;
    51395032
    5140   case 40:
    5141 
    5142 /* Line 1806 of yacc.c  */
    5143 #line 416 "parser.yy"
     5033  case 44:
     5034
     5035/* Line 1806 of yacc.c  */
     5036#line 423 "parser.yy"
    51445037    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    51455038    break;
    51465039
    5147   case 41:
    5148 
    5149 /* Line 1806 of yacc.c  */
    5150 #line 420 "parser.yy"
     5040  case 45:
     5041
     5042/* Line 1806 of yacc.c  */
     5043#line 425 "parser.yy"
     5044    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(2) - (2)].en), build_varref( (yyvsp[(1) - (2)].tok) ) ) ); }
     5045    break;
     5046
     5047  case 46:
     5048
     5049/* Line 1806 of yacc.c  */
     5050#line 427 "parser.yy"
     5051    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(4) - (6)].en), build_varref( (yyvsp[(1) - (6)].tok) ) ) ); }
     5052    break;
     5053
     5054  case 47:
     5055
     5056/* Line 1806 of yacc.c  */
     5057#line 429 "parser.yy"
    51515058    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    51525059    break;
    51535060
    5154   case 42:
    5155 
    5156 /* Line 1806 of yacc.c  */
    5157 #line 422 "parser.yy"
     5061  case 48:
     5062
     5063/* Line 1806 of yacc.c  */
     5064#line 431 "parser.yy"
    51585065    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    51595066    break;
    51605067
    5161   case 43:
    5162 
    5163 /* Line 1806 of yacc.c  */
    5164 #line 424 "parser.yy"
     5068  case 49:
     5069
     5070/* Line 1806 of yacc.c  */
     5071#line 433 "parser.yy"
    51655072    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    51665073    break;
    51675074
    5168   case 44:
    5169 
    5170 /* Line 1806 of yacc.c  */
    5171 #line 426 "parser.yy"
     5075  case 50:
     5076
     5077/* Line 1806 of yacc.c  */
     5078#line 435 "parser.yy"
    51725079    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    51735080    break;
    51745081
    5175   case 46:
    5176 
    5177 /* Line 1806 of yacc.c  */
    5178 #line 434 "parser.yy"
     5082  case 51:
     5083
     5084/* Line 1806 of yacc.c  */
     5085#line 440 "parser.yy"
     5086    { (yyval.tok) = (yyvsp[(1) - (2)].tok); }
     5087    break;
     5088
     5089  case 52:
     5090
     5091/* Line 1806 of yacc.c  */
     5092#line 442 "parser.yy"
     5093    { (yyval.tok) = (yyvsp[(1) - (2)].tok); }
     5094    break;
     5095
     5096  case 53:
     5097
     5098/* Line 1806 of yacc.c  */
     5099#line 444 "parser.yy"
     5100    { (yyval.tok) = (yyvsp[(1) - (2)].tok); }
     5101    break;
     5102
     5103  case 57:
     5104
     5105/* Line 1806 of yacc.c  */
     5106#line 457 "parser.yy"
    51795107    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    51805108    break;
    51815109
    5182   case 47:
    5183 
    5184 /* Line 1806 of yacc.c  */
    5185 #line 436 "parser.yy"
     5110  case 58:
     5111
     5112/* Line 1806 of yacc.c  */
     5113#line 459 "parser.yy"
    51865114    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    51875115    break;
    51885116
    5189   case 48:
    5190 
    5191 /* Line 1806 of yacc.c  */
    5192 #line 438 "parser.yy"
     5117  case 59:
     5118
     5119/* Line 1806 of yacc.c  */
     5120#line 461 "parser.yy"
    51935121    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    51945122    break;
    51955123
    5196   case 49:
    5197 
    5198 /* Line 1806 of yacc.c  */
    5199 #line 443 "parser.yy"
     5124  case 60:
     5125
     5126/* Line 1806 of yacc.c  */
     5127#line 466 "parser.yy"
    52005128    {
    52015129                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    52125140    break;
    52135141
    5214   case 50:
    5215 
    5216 /* Line 1806 of yacc.c  */
    5217 #line 456 "parser.yy"
     5142  case 61:
     5143
     5144/* Line 1806 of yacc.c  */
     5145#line 479 "parser.yy"
    52185146    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
    52195147    break;
    52205148
    5221   case 51:
    5222 
    5223 /* Line 1806 of yacc.c  */
    5224 #line 458 "parser.yy"
     5149  case 62:
     5150
     5151/* Line 1806 of yacc.c  */
     5152#line 481 "parser.yy"
    52255153    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
    52265154    break;
    52275155
    5228   case 52:
    5229 
    5230 /* Line 1806 of yacc.c  */
    5231 #line 460 "parser.yy"
     5156  case 63:
     5157
     5158/* Line 1806 of yacc.c  */
     5159#line 483 "parser.yy"
    52325160    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
    52335161    break;
    52345162
    5235   case 53:
    5236 
    5237 /* Line 1806 of yacc.c  */
    5238 #line 462 "parser.yy"
     5163  case 64:
     5164
     5165/* Line 1806 of yacc.c  */
     5166#line 485 "parser.yy"
    52395167    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52405168    break;
    52415169
    5242   case 54:
    5243 
    5244 /* Line 1806 of yacc.c  */
    5245 #line 464 "parser.yy"
     5170  case 65:
     5171
     5172/* Line 1806 of yacc.c  */
     5173#line 487 "parser.yy"
    52465174    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52475175    break;
    52485176
    5249   case 55:
    5250 
    5251 /* Line 1806 of yacc.c  */
    5252 #line 466 "parser.yy"
     5177  case 66:
     5178
     5179/* Line 1806 of yacc.c  */
     5180#line 489 "parser.yy"
    52535181    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52545182    break;
    52555183
    5256   case 56:
    5257 
    5258 /* Line 1806 of yacc.c  */
    5259 #line 468 "parser.yy"
     5184  case 67:
     5185
     5186/* Line 1806 of yacc.c  */
     5187#line 491 "parser.yy"
    52605188    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52615189    break;
    52625190
    5263   case 57:
    5264 
    5265 /* Line 1806 of yacc.c  */
    5266 #line 470 "parser.yy"
     5191  case 68:
     5192
     5193/* Line 1806 of yacc.c  */
     5194#line 493 "parser.yy"
    52675195    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    52685196    break;
    52695197
    5270   case 58:
    5271 
    5272 /* Line 1806 of yacc.c  */
    5273 #line 472 "parser.yy"
     5198  case 69:
     5199
     5200/* Line 1806 of yacc.c  */
     5201#line 495 "parser.yy"
    52745202    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    52755203    break;
    52765204
    5277   case 59:
    5278 
    5279 /* Line 1806 of yacc.c  */
    5280 #line 474 "parser.yy"
     5205  case 70:
     5206
     5207/* Line 1806 of yacc.c  */
     5208#line 497 "parser.yy"
    52815209    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    52825210    break;
    52835211
    5284   case 60:
    5285 
    5286 /* Line 1806 of yacc.c  */
    5287 #line 476 "parser.yy"
     5212  case 71:
     5213
     5214/* Line 1806 of yacc.c  */
     5215#line 499 "parser.yy"
    52885216    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    52895217    break;
    52905218
    5291   case 61:
    5292 
    5293 /* Line 1806 of yacc.c  */
    5294 #line 482 "parser.yy"
     5219  case 72:
     5220
     5221/* Line 1806 of yacc.c  */
     5222#line 505 "parser.yy"
    52955223    { (yyval.op) = OperKinds::PointTo; }
    52965224    break;
    52975225
    5298   case 62:
    5299 
    5300 /* Line 1806 of yacc.c  */
    5301 #line 483 "parser.yy"
     5226  case 73:
     5227
     5228/* Line 1806 of yacc.c  */
     5229#line 506 "parser.yy"
    53025230    { (yyval.op) = OperKinds::AddressOf; }
    53035231    break;
    53045232
    5305   case 63:
    5306 
    5307 /* Line 1806 of yacc.c  */
    5308 #line 489 "parser.yy"
     5233  case 74:
     5234
     5235/* Line 1806 of yacc.c  */
     5236#line 512 "parser.yy"
    53095237    { (yyval.op) = OperKinds::UnPlus; }
    53105238    break;
    53115239
    5312   case 64:
    5313 
    5314 /* Line 1806 of yacc.c  */
    5315 #line 490 "parser.yy"
     5240  case 75:
     5241
     5242/* Line 1806 of yacc.c  */
     5243#line 513 "parser.yy"
    53165244    { (yyval.op) = OperKinds::UnMinus; }
    53175245    break;
    53185246
    5319   case 65:
    5320 
    5321 /* Line 1806 of yacc.c  */
    5322 #line 491 "parser.yy"
     5247  case 76:
     5248
     5249/* Line 1806 of yacc.c  */
     5250#line 514 "parser.yy"
    53235251    { (yyval.op) = OperKinds::Neg; }
    53245252    break;
    53255253
    5326   case 66:
    5327 
    5328 /* Line 1806 of yacc.c  */
    5329 #line 492 "parser.yy"
     5254  case 77:
     5255
     5256/* Line 1806 of yacc.c  */
     5257#line 515 "parser.yy"
    53305258    { (yyval.op) = OperKinds::BitNeg; }
    53315259    break;
    53325260
    5333   case 68:
    5334 
    5335 /* Line 1806 of yacc.c  */
    5336 #line 498 "parser.yy"
     5261  case 79:
     5262
     5263/* Line 1806 of yacc.c  */
     5264#line 521 "parser.yy"
    53375265    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53385266    break;
    53395267
    5340   case 69:
    5341 
    5342 /* Line 1806 of yacc.c  */
    5343 #line 500 "parser.yy"
    5344     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    5345     break;
    5346 
    5347   case 71:
    5348 
    5349 /* Line 1806 of yacc.c  */
    5350 #line 506 "parser.yy"
     5268  case 81:
     5269
     5270/* Line 1806 of yacc.c  */
     5271#line 529 "parser.yy"
    53515272    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53525273    break;
    53535274
    5354   case 72:
    5355 
    5356 /* Line 1806 of yacc.c  */
    5357 #line 508 "parser.yy"
     5275  case 82:
     5276
     5277/* Line 1806 of yacc.c  */
     5278#line 531 "parser.yy"
    53585279    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53595280    break;
    53605281
    5361   case 73:
    5362 
    5363 /* Line 1806 of yacc.c  */
    5364 #line 510 "parser.yy"
     5282  case 83:
     5283
     5284/* Line 1806 of yacc.c  */
     5285#line 533 "parser.yy"
    53655286    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53665287    break;
    53675288
    5368   case 75:
    5369 
    5370 /* Line 1806 of yacc.c  */
    5371 #line 516 "parser.yy"
     5289  case 85:
     5290
     5291/* Line 1806 of yacc.c  */
     5292#line 539 "parser.yy"
    53725293    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53735294    break;
    53745295
    5375   case 76:
    5376 
    5377 /* Line 1806 of yacc.c  */
    5378 #line 518 "parser.yy"
     5296  case 86:
     5297
     5298/* Line 1806 of yacc.c  */
     5299#line 541 "parser.yy"
    53795300    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53805301    break;
    53815302
    5382   case 78:
    5383 
    5384 /* Line 1806 of yacc.c  */
    5385 #line 524 "parser.yy"
     5303  case 88:
     5304
     5305/* Line 1806 of yacc.c  */
     5306#line 547 "parser.yy"
    53865307    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53875308    break;
    53885309
    5389   case 79:
    5390 
    5391 /* Line 1806 of yacc.c  */
    5392 #line 526 "parser.yy"
     5310  case 89:
     5311
     5312/* Line 1806 of yacc.c  */
     5313#line 549 "parser.yy"
    53935314    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53945315    break;
    53955316
    5396   case 81:
    5397 
    5398 /* Line 1806 of yacc.c  */
    5399 #line 532 "parser.yy"
     5317  case 91:
     5318
     5319/* Line 1806 of yacc.c  */
     5320#line 555 "parser.yy"
    54005321    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54015322    break;
    54025323
    5403   case 82:
    5404 
    5405 /* Line 1806 of yacc.c  */
    5406 #line 534 "parser.yy"
     5324  case 92:
     5325
     5326/* Line 1806 of yacc.c  */
     5327#line 557 "parser.yy"
    54075328    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54085329    break;
    54095330
    5410   case 83:
    5411 
    5412 /* Line 1806 of yacc.c  */
    5413 #line 536 "parser.yy"
     5331  case 93:
     5332
     5333/* Line 1806 of yacc.c  */
     5334#line 559 "parser.yy"
    54145335    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54155336    break;
    54165337
    5417   case 84:
    5418 
    5419 /* Line 1806 of yacc.c  */
    5420 #line 538 "parser.yy"
     5338  case 94:
     5339
     5340/* Line 1806 of yacc.c  */
     5341#line 561 "parser.yy"
    54215342    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54225343    break;
    54235344
    5424   case 86:
    5425 
    5426 /* Line 1806 of yacc.c  */
    5427 #line 544 "parser.yy"
     5345  case 96:
     5346
     5347/* Line 1806 of yacc.c  */
     5348#line 567 "parser.yy"
    54285349    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54295350    break;
    54305351
    5431   case 87:
    5432 
    5433 /* Line 1806 of yacc.c  */
    5434 #line 546 "parser.yy"
     5352  case 97:
     5353
     5354/* Line 1806 of yacc.c  */
     5355#line 569 "parser.yy"
    54355356    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54365357    break;
    54375358
    5438   case 89:
    5439 
    5440 /* Line 1806 of yacc.c  */
    5441 #line 552 "parser.yy"
     5359  case 99:
     5360
     5361/* Line 1806 of yacc.c  */
     5362#line 575 "parser.yy"
    54425363    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54435364    break;
    54445365
    5445   case 91:
    5446 
    5447 /* Line 1806 of yacc.c  */
    5448 #line 558 "parser.yy"
     5366  case 101:
     5367
     5368/* Line 1806 of yacc.c  */
     5369#line 581 "parser.yy"
    54495370    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54505371    break;
    54515372
    5452   case 93:
    5453 
    5454 /* Line 1806 of yacc.c  */
    5455 #line 564 "parser.yy"
     5373  case 103:
     5374
     5375/* Line 1806 of yacc.c  */
     5376#line 587 "parser.yy"
    54565377    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54575378    break;
    54585379
    5459   case 95:
    5460 
    5461 /* Line 1806 of yacc.c  */
    5462 #line 570 "parser.yy"
     5380  case 105:
     5381
     5382/* Line 1806 of yacc.c  */
     5383#line 593 "parser.yy"
    54635384    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    54645385    break;
    54655386
    5466   case 97:
    5467 
    5468 /* Line 1806 of yacc.c  */
    5469 #line 576 "parser.yy"
     5387  case 107:
     5388
     5389/* Line 1806 of yacc.c  */
     5390#line 599 "parser.yy"
    54705391    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    54715392    break;
    54725393
    5473   case 99:
    5474 
    5475 /* Line 1806 of yacc.c  */
    5476 #line 582 "parser.yy"
     5394  case 109:
     5395
     5396/* Line 1806 of yacc.c  */
     5397#line 605 "parser.yy"
    54775398    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    54785399    break;
    54795400
    5480   case 100:
    5481 
    5482 /* Line 1806 of yacc.c  */
    5483 #line 585 "parser.yy"
     5401  case 110:
     5402
     5403/* Line 1806 of yacc.c  */
     5404#line 608 "parser.yy"
    54845405    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    54855406    break;
    54865407
    5487   case 101:
    5488 
    5489 /* Line 1806 of yacc.c  */
    5490 #line 587 "parser.yy"
    5491     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    5492     break;
    5493 
    5494   case 104:
    5495 
    5496 /* Line 1806 of yacc.c  */
    5497 #line 598 "parser.yy"
     5408  case 113:
     5409
     5410/* Line 1806 of yacc.c  */
     5411#line 621 "parser.yy"
    54985412    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54995413    break;
    55005414
    5501   case 105:
    5502 
    5503 /* Line 1806 of yacc.c  */
    5504 #line 600 "parser.yy"
    5505     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
    5506     break;
    5507 
    5508   case 106:
    5509 
    5510 /* Line 1806 of yacc.c  */
    5511 #line 605 "parser.yy"
     5415  case 114:
     5416
     5417/* Line 1806 of yacc.c  */
     5418#line 628 "parser.yy"
    55125419    { (yyval.en) = nullptr; }
    55135420    break;
    55145421
    5515   case 108:
    5516 
    5517 /* Line 1806 of yacc.c  */
    5518 #line 610 "parser.yy"
     5422  case 116:
     5423
     5424/* Line 1806 of yacc.c  */
     5425#line 633 "parser.yy"
    55195426    { (yyval.op) = OperKinds::Assign; }
    55205427    break;
    55215428
    5522   case 109:
    5523 
    5524 /* Line 1806 of yacc.c  */
    5525 #line 611 "parser.yy"
     5429  case 117:
     5430
     5431/* Line 1806 of yacc.c  */
     5432#line 634 "parser.yy"
    55265433    { (yyval.op) = OperKinds::AtAssn; }
    55275434    break;
    55285435
    5529   case 110:
    5530 
    5531 /* Line 1806 of yacc.c  */
    5532 #line 612 "parser.yy"
     5436  case 118:
     5437
     5438/* Line 1806 of yacc.c  */
     5439#line 635 "parser.yy"
    55335440    { (yyval.op) = OperKinds::MulAssn; }
    55345441    break;
    55355442
    5536   case 111:
    5537 
    5538 /* Line 1806 of yacc.c  */
    5539 #line 613 "parser.yy"
     5443  case 119:
     5444
     5445/* Line 1806 of yacc.c  */
     5446#line 636 "parser.yy"
    55405447    { (yyval.op) = OperKinds::DivAssn; }
    55415448    break;
    55425449
    5543   case 112:
    5544 
    5545 /* Line 1806 of yacc.c  */
    5546 #line 614 "parser.yy"
     5450  case 120:
     5451
     5452/* Line 1806 of yacc.c  */
     5453#line 637 "parser.yy"
    55475454    { (yyval.op) = OperKinds::ModAssn; }
    55485455    break;
    55495456
    5550   case 113:
    5551 
    5552 /* Line 1806 of yacc.c  */
    5553 #line 615 "parser.yy"
     5457  case 121:
     5458
     5459/* Line 1806 of yacc.c  */
     5460#line 638 "parser.yy"
    55545461    { (yyval.op) = OperKinds::PlusAssn; }
    55555462    break;
    55565463
    5557   case 114:
    5558 
    5559 /* Line 1806 of yacc.c  */
    5560 #line 616 "parser.yy"
     5464  case 122:
     5465
     5466/* Line 1806 of yacc.c  */
     5467#line 639 "parser.yy"
    55615468    { (yyval.op) = OperKinds::MinusAssn; }
    55625469    break;
    55635470
    5564   case 115:
    5565 
    5566 /* Line 1806 of yacc.c  */
    5567 #line 617 "parser.yy"
     5471  case 123:
     5472
     5473/* Line 1806 of yacc.c  */
     5474#line 640 "parser.yy"
    55685475    { (yyval.op) = OperKinds::LSAssn; }
    55695476    break;
    55705477
    5571   case 116:
    5572 
    5573 /* Line 1806 of yacc.c  */
    5574 #line 618 "parser.yy"
     5478  case 124:
     5479
     5480/* Line 1806 of yacc.c  */
     5481#line 641 "parser.yy"
    55755482    { (yyval.op) = OperKinds::RSAssn; }
    55765483    break;
    55775484
    5578   case 117:
    5579 
    5580 /* Line 1806 of yacc.c  */
    5581 #line 619 "parser.yy"
     5485  case 125:
     5486
     5487/* Line 1806 of yacc.c  */
     5488#line 642 "parser.yy"
    55825489    { (yyval.op) = OperKinds::AndAssn; }
    55835490    break;
    55845491
    5585   case 118:
    5586 
    5587 /* Line 1806 of yacc.c  */
    5588 #line 620 "parser.yy"
     5492  case 126:
     5493
     5494/* Line 1806 of yacc.c  */
     5495#line 643 "parser.yy"
    55895496    { (yyval.op) = OperKinds::ERAssn; }
    55905497    break;
    55915498
    5592   case 119:
    5593 
    5594 /* Line 1806 of yacc.c  */
    5595 #line 621 "parser.yy"
     5499  case 127:
     5500
     5501/* Line 1806 of yacc.c  */
     5502#line 644 "parser.yy"
    55965503    { (yyval.op) = OperKinds::OrAssn; }
    55975504    break;
    55985505
    5599   case 120:
    5600 
    5601 /* Line 1806 of yacc.c  */
    5602 #line 628 "parser.yy"
    5603     { (yyval.en) = new ExpressionNode( build_tuple() ); }
    5604     break;
    5605 
    5606   case 121:
    5607 
    5608 /* Line 1806 of yacc.c  */
    5609 #line 630 "parser.yy"
    5610     { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
    5611     break;
    5612 
    5613   case 122:
    5614 
    5615 /* Line 1806 of yacc.c  */
    5616 #line 632 "parser.yy"
     5506  case 128:
     5507
     5508/* Line 1806 of yacc.c  */
     5509#line 655 "parser.yy"
    56175510    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    56185511    break;
    56195512
    5620   case 123:
    5621 
    5622 /* Line 1806 of yacc.c  */
    5623 #line 634 "parser.yy"
     5513  case 129:
     5514
     5515/* Line 1806 of yacc.c  */
     5516#line 657 "parser.yy"
    56245517    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    56255518    break;
    56265519
    5627   case 125:
    5628 
    5629 /* Line 1806 of yacc.c  */
    5630 #line 640 "parser.yy"
     5520  case 131:
     5521
     5522/* Line 1806 of yacc.c  */
     5523#line 663 "parser.yy"
    56315524    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    56325525    break;
    56335526
    5634   case 127:
    5635 
    5636 /* Line 1806 of yacc.c  */
    5637 #line 646 "parser.yy"
     5527  case 133:
     5528
     5529/* Line 1806 of yacc.c  */
     5530#line 669 "parser.yy"
    56385531    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    56395532    break;
    56405533
    5641   case 128:
    5642 
    5643 /* Line 1806 of yacc.c  */
    5644 #line 651 "parser.yy"
     5534  case 134:
     5535
     5536/* Line 1806 of yacc.c  */
     5537#line 674 "parser.yy"
    56455538    { (yyval.en) = 0; }
    56465539    break;
    56475540
    5648   case 132:
    5649 
    5650 /* Line 1806 of yacc.c  */
    5651 #line 660 "parser.yy"
     5541  case 138:
     5542
     5543/* Line 1806 of yacc.c  */
     5544#line 683 "parser.yy"
    56525545    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56535546    break;
    56545547
    5655   case 138:
    5656 
    5657 /* Line 1806 of yacc.c  */
    5658 #line 667 "parser.yy"
     5548  case 144:
     5549
     5550/* Line 1806 of yacc.c  */
     5551#line 690 "parser.yy"
    56595552    {
    56605553                        Token fn;
     
    56645557    break;
    56655558
    5666   case 139:
    5667 
    5668 /* Line 1806 of yacc.c  */
    5669 #line 677 "parser.yy"
     5559  case 145:
     5560
     5561/* Line 1806 of yacc.c  */
     5562#line 700 "parser.yy"
    56705563    {
    56715564                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56735566    break;
    56745567
    5675   case 140:
    5676 
    5677 /* Line 1806 of yacc.c  */
    5678 #line 684 "parser.yy"
     5568  case 146:
     5569
     5570/* Line 1806 of yacc.c  */
     5571#line 707 "parser.yy"
    56795572    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    56805573    break;
    56815574
    5682   case 141:
    5683 
    5684 /* Line 1806 of yacc.c  */
    5685 #line 691 "parser.yy"
     5575  case 147:
     5576
     5577/* Line 1806 of yacc.c  */
     5578#line 714 "parser.yy"
    56865579    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    56875580    break;
    56885581
    5689   case 143:
    5690 
    5691 /* Line 1806 of yacc.c  */
    5692 #line 697 "parser.yy"
     5582  case 149:
     5583
     5584/* Line 1806 of yacc.c  */
     5585#line 720 "parser.yy"
    56935586    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    56945587    break;
    56955588
    5696   case 144:
    5697 
    5698 /* Line 1806 of yacc.c  */
    5699 #line 702 "parser.yy"
     5589  case 150:
     5590
     5591/* Line 1806 of yacc.c  */
     5592#line 725 "parser.yy"
    57005593    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57015594    break;
    57025595
    5703   case 145:
    5704 
    5705 /* Line 1806 of yacc.c  */
    5706 #line 704 "parser.yy"
     5596  case 151:
     5597
     5598/* Line 1806 of yacc.c  */
     5599#line 727 "parser.yy"
    57075600    {   // mark all fields in list
    57085601                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    57125605    break;
    57135606
    5714   case 146:
    5715 
    5716 /* Line 1806 of yacc.c  */
    5717 #line 710 "parser.yy"
     5607  case 152:
     5608
     5609/* Line 1806 of yacc.c  */
     5610#line 733 "parser.yy"
    57185611    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57195612    break;
    57205613
    5721   case 149:
    5722 
    5723 /* Line 1806 of yacc.c  */
    5724 #line 717 "parser.yy"
     5614  case 155:
     5615
     5616/* Line 1806 of yacc.c  */
     5617#line 740 "parser.yy"
    57255618    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57265619    break;
    57275620
    5728   case 150:
    5729 
    5730 /* Line 1806 of yacc.c  */
    5731 #line 722 "parser.yy"
     5621  case 156:
     5622
     5623/* Line 1806 of yacc.c  */
     5624#line 745 "parser.yy"
    57325625    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    57335626    break;
    57345627
    5735   case 151:
    5736 
    5737 /* Line 1806 of yacc.c  */
    5738 #line 728 "parser.yy"
     5628  case 157:
     5629
     5630/* Line 1806 of yacc.c  */
     5631#line 751 "parser.yy"
    57395632    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    57405633    break;
    57415634
    5742   case 152:
    5743 
    5744 /* Line 1806 of yacc.c  */
    5745 #line 730 "parser.yy"
     5635  case 158:
     5636
     5637/* Line 1806 of yacc.c  */
     5638#line 753 "parser.yy"
    57465639    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    57475640    break;
    57485641
    5749   case 153:
    5750 
    5751 /* Line 1806 of yacc.c  */
    5752 #line 732 "parser.yy"
     5642  case 159:
     5643
     5644/* Line 1806 of yacc.c  */
     5645#line 755 "parser.yy"
    57535646    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57545647    break;
    57555648
    5756   case 154:
    5757 
    5758 /* Line 1806 of yacc.c  */
    5759 #line 734 "parser.yy"
     5649  case 160:
     5650
     5651/* Line 1806 of yacc.c  */
     5652#line 757 "parser.yy"
    57605653    {
    57615654                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57695662    break;
    57705663
    5771   case 155:
    5772 
    5773 /* Line 1806 of yacc.c  */
    5774 #line 744 "parser.yy"
     5664  case 161:
     5665
     5666/* Line 1806 of yacc.c  */
     5667#line 767 "parser.yy"
    57755668    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57765669    break;
    57775670
    5778   case 156:
    5779 
    5780 /* Line 1806 of yacc.c  */
    5781 #line 746 "parser.yy"
     5671  case 162:
     5672
     5673/* Line 1806 of yacc.c  */
     5674#line 769 "parser.yy"
    57825675    {
    57835676                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57865679    break;
    57875680
    5788   case 157:
    5789 
    5790 /* Line 1806 of yacc.c  */
    5791 #line 756 "parser.yy"
     5681  case 163:
     5682
     5683/* Line 1806 of yacc.c  */
     5684#line 779 "parser.yy"
    57925685    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57935686    break;
    57945687
    5795   case 158:
    5796 
    5797 /* Line 1806 of yacc.c  */
    5798 #line 758 "parser.yy"
     5688  case 164:
     5689
     5690/* Line 1806 of yacc.c  */
     5691#line 781 "parser.yy"
    57995692    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    58005693    break;
    58015694
    5802   case 160:
    5803 
    5804 /* Line 1806 of yacc.c  */
    5805 #line 763 "parser.yy"
     5695  case 166:
     5696
     5697/* Line 1806 of yacc.c  */
     5698#line 786 "parser.yy"
    58065699    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    58075700    break;
    58085701
    5809   case 161:
    5810 
    5811 /* Line 1806 of yacc.c  */
    5812 #line 765 "parser.yy"
     5702  case 167:
     5703
     5704/* Line 1806 of yacc.c  */
     5705#line 788 "parser.yy"
    58135706    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    58145707    break;
    58155708
    5816   case 162:
    5817 
    5818 /* Line 1806 of yacc.c  */
    5819 #line 769 "parser.yy"
     5709  case 168:
     5710
     5711/* Line 1806 of yacc.c  */
     5712#line 792 "parser.yy"
    58205713    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    58215714    break;
    58225715
    5823   case 163:
    5824 
    5825 /* Line 1806 of yacc.c  */
    5826 #line 770 "parser.yy"
     5716  case 169:
     5717
     5718/* Line 1806 of yacc.c  */
     5719#line 793 "parser.yy"
    58275720    { (yyval.sn) = new StatementNode( build_default() ); }
    58285721    break;
    58295722
    5830   case 165:
    5831 
    5832 /* Line 1806 of yacc.c  */
    5833 #line 776 "parser.yy"
     5723  case 171:
     5724
     5725/* Line 1806 of yacc.c  */
     5726#line 799 "parser.yy"
    58345727    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
    58355728    break;
    58365729
    5837   case 166:
    5838 
    5839 /* Line 1806 of yacc.c  */
    5840 #line 780 "parser.yy"
     5730  case 172:
     5731
     5732/* Line 1806 of yacc.c  */
     5733#line 803 "parser.yy"
    58415734    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    58425735    break;
    58435736
    5844   case 167:
    5845 
    5846 /* Line 1806 of yacc.c  */
    5847 #line 785 "parser.yy"
     5737  case 173:
     5738
     5739/* Line 1806 of yacc.c  */
     5740#line 808 "parser.yy"
    58485741    { (yyval.sn) = 0; }
    58495742    break;
    58505743
    5851   case 169:
    5852 
    5853 /* Line 1806 of yacc.c  */
    5854 #line 791 "parser.yy"
     5744  case 175:
     5745
     5746/* Line 1806 of yacc.c  */
     5747#line 814 "parser.yy"
    58555748    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    58565749    break;
    58575750
    5858   case 170:
    5859 
    5860 /* Line 1806 of yacc.c  */
    5861 #line 793 "parser.yy"
     5751  case 176:
     5752
     5753/* Line 1806 of yacc.c  */
     5754#line 816 "parser.yy"
    58625755    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
    58635756    break;
    58645757
    5865   case 171:
    5866 
    5867 /* Line 1806 of yacc.c  */
    5868 #line 798 "parser.yy"
    5869     { (yyval.sn) = 0; }
    5870     break;
    5871 
    5872   case 173:
    5873 
    5874 /* Line 1806 of yacc.c  */
    5875 #line 804 "parser.yy"
    5876     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    5877     break;
    5878 
    5879   case 174:
    5880 
    5881 /* Line 1806 of yacc.c  */
    5882 #line 806 "parser.yy"
    5883     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    5884     break;
    5885 
    5886   case 175:
    5887 
    5888 /* Line 1806 of yacc.c  */
    5889 #line 808 "parser.yy"
    5890     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    5891     break;
    5892 
    5893   case 176:
    5894 
    5895 /* Line 1806 of yacc.c  */
    5896 #line 810 "parser.yy"
    5897     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    5898     break;
    5899 
    59005758  case 177:
    5901 
    5902 /* Line 1806 of yacc.c  */
    5903 #line 815 "parser.yy"
    5904     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    5905     break;
    5906 
    5907   case 179:
    59085759
    59095760/* Line 1806 of yacc.c  */
     
    59125763    break;
    59135764
     5765  case 179:
     5766
     5767/* Line 1806 of yacc.c  */
     5768#line 827 "parser.yy"
     5769    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     5770    break;
     5771
    59145772  case 180:
    59155773
    59165774/* Line 1806 of yacc.c  */
    5917 #line 823 "parser.yy"
     5775#line 829 "parser.yy"
     5776    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
     5777    break;
     5778
     5779  case 181:
     5780
     5781/* Line 1806 of yacc.c  */
     5782#line 831 "parser.yy"
     5783    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5784    break;
     5785
     5786  case 182:
     5787
     5788/* Line 1806 of yacc.c  */
     5789#line 833 "parser.yy"
     5790    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
     5791    break;
     5792
     5793  case 183:
     5794
     5795/* Line 1806 of yacc.c  */
     5796#line 838 "parser.yy"
     5797    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     5798    break;
     5799
     5800  case 185:
     5801
     5802/* Line 1806 of yacc.c  */
     5803#line 844 "parser.yy"
    59185804    { (yyval.sn) = 0; }
    59195805    break;
    59205806
    5921   case 181:
    5922 
    5923 /* Line 1806 of yacc.c  */
    5924 #line 828 "parser.yy"
     5807  case 186:
     5808
     5809/* Line 1806 of yacc.c  */
     5810#line 846 "parser.yy"
     5811    { (yyval.sn) = 0; }
     5812    break;
     5813
     5814  case 187:
     5815
     5816/* Line 1806 of yacc.c  */
     5817#line 851 "parser.yy"
    59255818    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    59265819    break;
    59275820
    5928   case 182:
    5929 
    5930 /* Line 1806 of yacc.c  */
    5931 #line 830 "parser.yy"
     5821  case 188:
     5822
     5823/* Line 1806 of yacc.c  */
     5824#line 853 "parser.yy"
    59325825    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
    59335826    break;
    59345827
    5935   case 183:
    5936 
    5937 /* Line 1806 of yacc.c  */
    5938 #line 832 "parser.yy"
     5828  case 189:
     5829
     5830/* Line 1806 of yacc.c  */
     5831#line 855 "parser.yy"
    59395832    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    59405833    break;
    59415834
    5942   case 184:
    5943 
    5944 /* Line 1806 of yacc.c  */
    5945 #line 837 "parser.yy"
     5835  case 190:
     5836
     5837/* Line 1806 of yacc.c  */
     5838#line 860 "parser.yy"
    59465839    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59475840    break;
    59485841
    5949   case 185:
    5950 
    5951 /* Line 1806 of yacc.c  */
    5952 #line 839 "parser.yy"
     5842  case 191:
     5843
     5844/* Line 1806 of yacc.c  */
     5845#line 862 "parser.yy"
    59535846    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59545847    break;
    59555848
    5956   case 186:
    5957 
    5958 /* Line 1806 of yacc.c  */
    5959 #line 844 "parser.yy"
     5849  case 192:
     5850
     5851/* Line 1806 of yacc.c  */
     5852#line 867 "parser.yy"
    59605853    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    59615854    break;
    59625855
    5963   case 187:
    5964 
    5965 /* Line 1806 of yacc.c  */
    5966 #line 848 "parser.yy"
     5856  case 193:
     5857
     5858/* Line 1806 of yacc.c  */
     5859#line 871 "parser.yy"
    59675860    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    59685861    break;
    59695862
    5970   case 188:
    5971 
    5972 /* Line 1806 of yacc.c  */
    5973 #line 851 "parser.yy"
     5863  case 194:
     5864
     5865/* Line 1806 of yacc.c  */
     5866#line 874 "parser.yy"
    59745867    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    59755868    break;
    59765869
    5977   case 189:
    5978 
    5979 /* Line 1806 of yacc.c  */
    5980 #line 855 "parser.yy"
     5870  case 195:
     5871
     5872/* Line 1806 of yacc.c  */
     5873#line 878 "parser.yy"
    59815874    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
    59825875    break;
    59835876
    5984   case 190:
    5985 
    5986 /* Line 1806 of yacc.c  */
    5987 #line 858 "parser.yy"
     5877  case 196:
     5878
     5879/* Line 1806 of yacc.c  */
     5880#line 881 "parser.yy"
    59885881    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59895882    break;
    59905883
    5991   case 191:
    5992 
    5993 /* Line 1806 of yacc.c  */
    5994 #line 862 "parser.yy"
     5884  case 197:
     5885
     5886/* Line 1806 of yacc.c  */
     5887#line 885 "parser.yy"
    59955888    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
    59965889    break;
    59975890
    5998   case 192:
    5999 
    6000 /* Line 1806 of yacc.c  */
    6001 #line 864 "parser.yy"
     5891  case 198:
     5892
     5893/* Line 1806 of yacc.c  */
     5894#line 887 "parser.yy"
    60025895    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    60035896    break;
    60045897
    6005   case 193:
    6006 
    6007 /* Line 1806 of yacc.c  */
    6008 #line 866 "parser.yy"
     5898  case 199:
     5899
     5900/* Line 1806 of yacc.c  */
     5901#line 889 "parser.yy"
    60095902    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60105903    break;
    60115904
    6012   case 194:
    6013 
    6014 /* Line 1806 of yacc.c  */
    6015 #line 868 "parser.yy"
     5905  case 200:
     5906
     5907/* Line 1806 of yacc.c  */
     5908#line 891 "parser.yy"
    60165909    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60175910    break;
    60185911
    6019   case 195:
    6020 
    6021 /* Line 1806 of yacc.c  */
    6022 #line 870 "parser.yy"
     5912  case 201:
     5913
     5914/* Line 1806 of yacc.c  */
     5915#line 893 "parser.yy"
    60235916    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    60245917    break;
    60255918
    6026   case 196:
    6027 
    6028 /* Line 1806 of yacc.c  */
    6029 #line 875 "parser.yy"
     5919  case 202:
     5920
     5921/* Line 1806 of yacc.c  */
     5922#line 898 "parser.yy"
    60305923    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
    60315924    break;
    60325925
    6033   case 197:
    6034 
    6035 /* Line 1806 of yacc.c  */
    6036 #line 877 "parser.yy"
     5926  case 203:
     5927
     5928/* Line 1806 of yacc.c  */
     5929#line 900 "parser.yy"
    60375930    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
    60385931    break;
    60395932
    6040   case 198:
    6041 
    6042 /* Line 1806 of yacc.c  */
    6043 #line 879 "parser.yy"
     5933  case 204:
     5934
     5935/* Line 1806 of yacc.c  */
     5936#line 902 "parser.yy"
    60445937    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
    60455938    break;
    60465939
    6047   case 200:
    6048 
    6049 /* Line 1806 of yacc.c  */
    6050 #line 886 "parser.yy"
     5940  case 206:
     5941
     5942/* Line 1806 of yacc.c  */
     5943#line 909 "parser.yy"
    60515944    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60525945    break;
    60535946
    6054   case 201:
    6055 
    6056 /* Line 1806 of yacc.c  */
    6057 #line 888 "parser.yy"
     5947  case 207:
     5948
     5949/* Line 1806 of yacc.c  */
     5950#line 911 "parser.yy"
    60585951    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60595952    break;
    60605953
    6061   case 202:
    6062 
    6063 /* Line 1806 of yacc.c  */
    6064 #line 890 "parser.yy"
     5954  case 208:
     5955
     5956/* Line 1806 of yacc.c  */
     5957#line 913 "parser.yy"
    60655958    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60665959    break;
    60675960
    6068   case 203:
    6069 
    6070 /* Line 1806 of yacc.c  */
    6071 #line 892 "parser.yy"
     5961  case 209:
     5962
     5963/* Line 1806 of yacc.c  */
     5964#line 915 "parser.yy"
    60725965    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60735966    break;
    60745967
    6075   case 204:
    6076 
    6077 /* Line 1806 of yacc.c  */
    6078 #line 897 "parser.yy"
     5968  case 210:
     5969
     5970/* Line 1806 of yacc.c  */
     5971#line 920 "parser.yy"
    60795972    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60805973    break;
    60815974
    6082   case 205:
    6083 
    6084 /* Line 1806 of yacc.c  */
    6085 #line 899 "parser.yy"
     5975  case 211:
     5976
     5977/* Line 1806 of yacc.c  */
     5978#line 922 "parser.yy"
    60865979    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    60875980    break;
    60885981
    6089   case 206:
    6090 
    6091 /* Line 1806 of yacc.c  */
    6092 #line 901 "parser.yy"
     5982  case 212:
     5983
     5984/* Line 1806 of yacc.c  */
     5985#line 924 "parser.yy"
    60935986    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60945987    break;
    60955988
    6096   case 207:
    6097 
    6098 /* Line 1806 of yacc.c  */
    6099 #line 903 "parser.yy"
     5989  case 213:
     5990
     5991/* Line 1806 of yacc.c  */
     5992#line 926 "parser.yy"
    61005993    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    61015994    break;
    61025995
    6103   case 208:
    6104 
    6105 /* Line 1806 of yacc.c  */
    6106 #line 908 "parser.yy"
     5996  case 214:
     5997
     5998/* Line 1806 of yacc.c  */
     5999#line 931 "parser.yy"
    61076000    {
    61086001                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     
    61106003    break;
    61116004
    6112   case 210:
    6113 
    6114 /* Line 1806 of yacc.c  */
    6115 #line 921 "parser.yy"
     6005  case 216:
     6006
     6007/* Line 1806 of yacc.c  */
     6008#line 944 "parser.yy"
    61166009    {
    61176010                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61206013    break;
    61216014
    6122   case 211:
    6123 
    6124 /* Line 1806 of yacc.c  */
    6125 #line 926 "parser.yy"
     6015  case 217:
     6016
     6017/* Line 1806 of yacc.c  */
     6018#line 949 "parser.yy"
    61266019    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61276020    break;
    61286021
    6129   case 212:
    6130 
    6131 /* Line 1806 of yacc.c  */
    6132 #line 928 "parser.yy"
     6022  case 218:
     6023
     6024/* Line 1806 of yacc.c  */
     6025#line 951 "parser.yy"
    61336026    {
    61346027                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61376030    break;
    61386031
    6139   case 214:
    6140 
    6141 /* Line 1806 of yacc.c  */
    6142 #line 937 "parser.yy"
     6032  case 220:
     6033
     6034/* Line 1806 of yacc.c  */
     6035#line 960 "parser.yy"
    61436036    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
    61446037    break;
    61456038
    6146   case 215:
    6147 
    6148 /* Line 1806 of yacc.c  */
    6149 #line 939 "parser.yy"
     6039  case 221:
     6040
     6041/* Line 1806 of yacc.c  */
     6042#line 962 "parser.yy"
    61506043    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
    61516044    break;
    61526045
    6153   case 216:
    6154 
    6155 /* Line 1806 of yacc.c  */
    6156 #line 941 "parser.yy"
     6046  case 222:
     6047
     6048/* Line 1806 of yacc.c  */
     6049#line 964 "parser.yy"
    61576050    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
    61586051    break;
    61596052
    6160   case 217:
    6161 
    6162 /* Line 1806 of yacc.c  */
    6163 #line 943 "parser.yy"
     6053  case 223:
     6054
     6055/* Line 1806 of yacc.c  */
     6056#line 966 "parser.yy"
    61646057    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
    61656058    break;
    61666059
    6167   case 218:
    6168 
    6169 /* Line 1806 of yacc.c  */
    6170 #line 945 "parser.yy"
     6060  case 224:
     6061
     6062/* Line 1806 of yacc.c  */
     6063#line 968 "parser.yy"
    61716064    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
    61726065    break;
    61736066
    6174   case 219:
    6175 
    6176 /* Line 1806 of yacc.c  */
    6177 #line 950 "parser.yy"
     6067  case 225:
     6068
     6069/* Line 1806 of yacc.c  */
     6070#line 973 "parser.yy"
    61786071    { (yyval.flag) = false; }
    61796072    break;
    61806073
    6181   case 220:
    6182 
    6183 /* Line 1806 of yacc.c  */
    6184 #line 952 "parser.yy"
     6074  case 226:
     6075
     6076/* Line 1806 of yacc.c  */
     6077#line 975 "parser.yy"
    61856078    { (yyval.flag) = true; }
    61866079    break;
    61876080
    6188   case 221:
    6189 
    6190 /* Line 1806 of yacc.c  */
    6191 #line 957 "parser.yy"
     6081  case 227:
     6082
     6083/* Line 1806 of yacc.c  */
     6084#line 980 "parser.yy"
    61926085    { (yyval.en) = 0; }
    61936086    break;
    61946087
    6195   case 224:
    6196 
    6197 /* Line 1806 of yacc.c  */
    6198 #line 964 "parser.yy"
     6088  case 230:
     6089
     6090/* Line 1806 of yacc.c  */
     6091#line 987 "parser.yy"
    61996092    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    62006093    break;
    62016094
    6202   case 225:
    6203 
    6204 /* Line 1806 of yacc.c  */
    6205 #line 969 "parser.yy"
     6095  case 231:
     6096
     6097/* Line 1806 of yacc.c  */
     6098#line 992 "parser.yy"
    62066099    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    62076100    break;
    62086101
    6209   case 226:
    6210 
    6211 /* Line 1806 of yacc.c  */
    6212 #line 971 "parser.yy"
     6102  case 232:
     6103
     6104/* Line 1806 of yacc.c  */
     6105#line 994 "parser.yy"
    62136106    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
    62146107    break;
    62156108
    6216   case 227:
    6217 
    6218 /* Line 1806 of yacc.c  */
    6219 #line 976 "parser.yy"
     6109  case 233:
     6110
     6111/* Line 1806 of yacc.c  */
     6112#line 999 "parser.yy"
    62206113    { (yyval.en) = 0; }
    62216114    break;
    62226115
    6223   case 228:
    6224 
    6225 /* Line 1806 of yacc.c  */
    6226 #line 978 "parser.yy"
     6116  case 234:
     6117
     6118/* Line 1806 of yacc.c  */
     6119#line 1001 "parser.yy"
    62276120    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    62286121    break;
    62296122
    6230   case 229:
    6231 
    6232 /* Line 1806 of yacc.c  */
    6233 #line 980 "parser.yy"
     6123  case 235:
     6124
     6125/* Line 1806 of yacc.c  */
     6126#line 1003 "parser.yy"
    62346127    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    62356128    break;
    62366129
    6237   case 230:
    6238 
    6239 /* Line 1806 of yacc.c  */
    6240 #line 985 "parser.yy"
     6130  case 236:
     6131
     6132/* Line 1806 of yacc.c  */
     6133#line 1008 "parser.yy"
    62416134    {
    62426135                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     
    62456138    break;
    62466139
    6247   case 231:
    6248 
    6249 /* Line 1806 of yacc.c  */
    6250 #line 990 "parser.yy"
     6140  case 237:
     6141
     6142/* Line 1806 of yacc.c  */
     6143#line 1013 "parser.yy"
    62516144    {
    62526145                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     
    62556148    break;
    62566149
    6257   case 232:
    6258 
    6259 /* Line 1806 of yacc.c  */
    6260 #line 1000 "parser.yy"
     6150  case 238:
     6151
     6152/* Line 1806 of yacc.c  */
     6153#line 1023 "parser.yy"
    62616154    { (yyval.decl) = 0; }
    62626155    break;
    62636156
    6264   case 235:
    6265 
    6266 /* Line 1806 of yacc.c  */
    6267 #line 1007 "parser.yy"
     6157  case 241:
     6158
     6159/* Line 1806 of yacc.c  */
     6160#line 1030 "parser.yy"
    62686161    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62696162    break;
    62706163
    6271   case 236:
    6272 
    6273 /* Line 1806 of yacc.c  */
    6274 #line 1012 "parser.yy"
     6164  case 242:
     6165
     6166/* Line 1806 of yacc.c  */
     6167#line 1035 "parser.yy"
    62756168    { (yyval.decl) = 0; }
    62766169    break;
    62776170
    6278   case 239:
    6279 
    6280 /* Line 1806 of yacc.c  */
    6281 #line 1019 "parser.yy"
     6171  case 245:
     6172
     6173/* Line 1806 of yacc.c  */
     6174#line 1042 "parser.yy"
    62826175    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62836176    break;
    62846177
    6285   case 244:
    6286 
    6287 /* Line 1806 of yacc.c  */
    6288 #line 1033 "parser.yy"
     6178  case 250:
     6179
     6180/* Line 1806 of yacc.c  */
     6181#line 1056 "parser.yy"
    62896182    {}
    62906183    break;
    62916184
    6292   case 245:
    6293 
    6294 /* Line 1806 of yacc.c  */
    6295 #line 1034 "parser.yy"
     6185  case 251:
     6186
     6187/* Line 1806 of yacc.c  */
     6188#line 1057 "parser.yy"
    62966189    {}
    62976190    break;
    62986191
    6299   case 253:
    6300 
    6301 /* Line 1806 of yacc.c  */
    6302 #line 1063 "parser.yy"
     6192  case 259:
     6193
     6194/* Line 1806 of yacc.c  */
     6195#line 1086 "parser.yy"
    63036196    {
    63046197                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63076200    break;
    63086201
    6309   case 254:
    6310 
    6311 /* Line 1806 of yacc.c  */
    6312 #line 1070 "parser.yy"
     6202  case 260:
     6203
     6204/* Line 1806 of yacc.c  */
     6205#line 1093 "parser.yy"
    63136206    {
    63146207                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63176210    break;
    63186211
    6319   case 255:
    6320 
    6321 /* Line 1806 of yacc.c  */
    6322 #line 1075 "parser.yy"
     6212  case 261:
     6213
     6214/* Line 1806 of yacc.c  */
     6215#line 1098 "parser.yy"
    63236216    {
    63246217                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63276220    break;
    63286221
    6329   case 256:
    6330 
    6331 /* Line 1806 of yacc.c  */
    6332 #line 1085 "parser.yy"
     6222  case 262:
     6223
     6224/* Line 1806 of yacc.c  */
     6225#line 1108 "parser.yy"
    63336226    {
    63346227                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63376230    break;
    63386231
    6339   case 257:
    6340 
    6341 /* Line 1806 of yacc.c  */
    6342 #line 1090 "parser.yy"
     6232  case 263:
     6233
     6234/* Line 1806 of yacc.c  */
     6235#line 1113 "parser.yy"
    63436236    {
    63446237                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63476240    break;
    63486241
    6349   case 258:
    6350 
    6351 /* Line 1806 of yacc.c  */
    6352 #line 1095 "parser.yy"
     6242  case 264:
     6243
     6244/* Line 1806 of yacc.c  */
     6245#line 1118 "parser.yy"
    63536246    {
    63546247                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63576250    break;
    63586251
    6359   case 259:
    6360 
    6361 /* Line 1806 of yacc.c  */
    6362 #line 1103 "parser.yy"
     6252  case 265:
     6253
     6254/* Line 1806 of yacc.c  */
     6255#line 1126 "parser.yy"
    63636256    {
    63646257                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63676260    break;
    63686261
    6369   case 260:
    6370 
    6371 /* Line 1806 of yacc.c  */
    6372 #line 1108 "parser.yy"
     6262  case 266:
     6263
     6264/* Line 1806 of yacc.c  */
     6265#line 1131 "parser.yy"
    63736266    {
    63746267                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63776270    break;
    63786271
    6379   case 261:
    6380 
    6381 /* Line 1806 of yacc.c  */
    6382 #line 1113 "parser.yy"
     6272  case 267:
     6273
     6274/* Line 1806 of yacc.c  */
     6275#line 1136 "parser.yy"
    63836276    {
    63846277                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63876280    break;
    63886281
    6389   case 262:
    6390 
    6391 /* Line 1806 of yacc.c  */
    6392 #line 1118 "parser.yy"
     6282  case 268:
     6283
     6284/* Line 1806 of yacc.c  */
     6285#line 1141 "parser.yy"
    63936286    {
    63946287                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63976290    break;
    63986291
    6399   case 263:
    6400 
    6401 /* Line 1806 of yacc.c  */
    6402 #line 1123 "parser.yy"
     6292  case 269:
     6293
     6294/* Line 1806 of yacc.c  */
     6295#line 1146 "parser.yy"
    64036296    {
    64046297                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64076300    break;
    64086301
    6409   case 264:
    6410 
    6411 /* Line 1806 of yacc.c  */
    6412 #line 1131 "parser.yy"
    6413     {
    6414                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
    6415                 }
    6416     break;
    6417 
    6418   case 265:
    6419 
    6420 /* Line 1806 of yacc.c  */
    6421 #line 1154 "parser.yy"
     6302  case 270:
     6303
     6304/* Line 1806 of yacc.c  */
     6305#line 1177 "parser.yy"
    64226306    {
    64236307                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64256309    break;
    64266310
    6427   case 266:
    6428 
    6429 /* Line 1806 of yacc.c  */
    6430 #line 1158 "parser.yy"
     6311  case 271:
     6312
     6313/* Line 1806 of yacc.c  */
     6314#line 1181 "parser.yy"
    64316315    {
    64326316                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64346318    break;
    64356319
    6436   case 267:
    6437 
    6438 /* Line 1806 of yacc.c  */
    6439 #line 1165 "parser.yy"
     6320  case 272:
     6321
     6322/* Line 1806 of yacc.c  */
     6323#line 1188 "parser.yy"
    64406324    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64416325    break;
    64426326
    6443   case 268:
    6444 
    6445 /* Line 1806 of yacc.c  */
    6446 #line 1169 "parser.yy"
     6327  case 273:
     6328
     6329/* Line 1806 of yacc.c  */
     6330#line 1192 "parser.yy"
    64476331    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64486332    break;
    64496333
    6450   case 269:
    6451 
    6452 /* Line 1806 of yacc.c  */
    6453 #line 1174 "parser.yy"
     6334  case 274:
     6335
     6336/* Line 1806 of yacc.c  */
     6337#line 1197 "parser.yy"
    64546338    {
    64556339                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64586342    break;
    64596343
    6460   case 270:
    6461 
    6462 /* Line 1806 of yacc.c  */
    6463 #line 1179 "parser.yy"
     6344  case 275:
     6345
     6346/* Line 1806 of yacc.c  */
     6347#line 1202 "parser.yy"
    64646348    {
    64656349                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64686352    break;
    64696353
    6470   case 271:
    6471 
    6472 /* Line 1806 of yacc.c  */
    6473 #line 1184 "parser.yy"
     6354  case 276:
     6355
     6356/* Line 1806 of yacc.c  */
     6357#line 1207 "parser.yy"
    64746358    {
    64756359                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64786362    break;
    64796363
    6480   case 272:
    6481 
    6482 /* Line 1806 of yacc.c  */
    6483 #line 1195 "parser.yy"
     6364  case 277:
     6365
     6366/* Line 1806 of yacc.c  */
     6367#line 1218 "parser.yy"
    64846368    {
    64856369                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64886372    break;
    64896373
    6490   case 273:
    6491 
    6492 /* Line 1806 of yacc.c  */
    6493 #line 1200 "parser.yy"
     6374  case 278:
     6375
     6376/* Line 1806 of yacc.c  */
     6377#line 1223 "parser.yy"
    64946378    {
    64956379                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64986382    break;
    64996383
    6500   case 274:
    6501 
    6502 /* Line 1806 of yacc.c  */
    6503 #line 1205 "parser.yy"
     6384  case 279:
     6385
     6386/* Line 1806 of yacc.c  */
     6387#line 1228 "parser.yy"
    65046388    {
    65056389                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65086392    break;
    65096393
    6510   case 275:
    6511 
    6512 /* Line 1806 of yacc.c  */
    6513 #line 1210 "parser.yy"
     6394  case 280:
     6395
     6396/* Line 1806 of yacc.c  */
     6397#line 1233 "parser.yy"
    65146398    {
    65156399                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65186402    break;
    65196403
    6520   case 276:
    6521 
    6522 /* Line 1806 of yacc.c  */
    6523 #line 1215 "parser.yy"
     6404  case 281:
     6405
     6406/* Line 1806 of yacc.c  */
     6407#line 1238 "parser.yy"
    65246408    {
    65256409                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65286412    break;
    65296413
    6530   case 277:
    6531 
    6532 /* Line 1806 of yacc.c  */
    6533 #line 1224 "parser.yy"
     6414  case 282:
     6415
     6416/* Line 1806 of yacc.c  */
     6417#line 1247 "parser.yy"
    65346418    {
    65356419                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65386422    break;
    65396423
    6540   case 278:
    6541 
    6542 /* Line 1806 of yacc.c  */
    6543 #line 1229 "parser.yy"
     6424  case 283:
     6425
     6426/* Line 1806 of yacc.c  */
     6427#line 1252 "parser.yy"
    65446428    {
    65456429                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65486432    break;
    65496433
    6550   case 283:
    6551 
    6552 /* Line 1806 of yacc.c  */
    6553 #line 1246 "parser.yy"
     6434  case 288:
     6435
     6436/* Line 1806 of yacc.c  */
     6437#line 1269 "parser.yy"
    65546438    {
    65556439                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65586442    break;
    65596443
    6560   case 284:
    6561 
    6562 /* Line 1806 of yacc.c  */
    6563 #line 1251 "parser.yy"
     6444  case 289:
     6445
     6446/* Line 1806 of yacc.c  */
     6447#line 1274 "parser.yy"
    65646448    {
    65656449                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65686452    break;
    65696453
    6570   case 293:
    6571 
    6572 /* Line 1806 of yacc.c  */
    6573 #line 1273 "parser.yy"
     6454  case 298:
     6455
     6456/* Line 1806 of yacc.c  */
     6457#line 1296 "parser.yy"
    65746458    { (yyval.decl) = 0; }
    65756459    break;
    65766460
    6577   case 296:
    6578 
    6579 /* Line 1806 of yacc.c  */
    6580 #line 1285 "parser.yy"
     6461  case 301:
     6462
     6463/* Line 1806 of yacc.c  */
     6464#line 1308 "parser.yy"
    65816465    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65826466    break;
    65836467
    6584   case 299:
    6585 
    6586 /* Line 1806 of yacc.c  */
    6587 #line 1296 "parser.yy"
     6468  case 304:
     6469
     6470/* Line 1806 of yacc.c  */
     6471#line 1319 "parser.yy"
    65886472    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    65896473    break;
    65906474
    6591   case 300:
    6592 
    6593 /* Line 1806 of yacc.c  */
    6594 #line 1298 "parser.yy"
     6475  case 305:
     6476
     6477/* Line 1806 of yacc.c  */
     6478#line 1321 "parser.yy"
    65956479    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    65966480    break;
    65976481
    6598   case 301:
    6599 
    6600 /* Line 1806 of yacc.c  */
    6601 #line 1300 "parser.yy"
     6482  case 306:
     6483
     6484/* Line 1806 of yacc.c  */
     6485#line 1323 "parser.yy"
    66026486    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66036487    break;
    66046488
    6605   case 302:
    6606 
    6607 /* Line 1806 of yacc.c  */
    6608 #line 1302 "parser.yy"
     6489  case 307:
     6490
     6491/* Line 1806 of yacc.c  */
     6492#line 1325 "parser.yy"
    66096493    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    66106494    break;
    66116495
    6612   case 303:
    6613 
    6614 /* Line 1806 of yacc.c  */
    6615 #line 1304 "parser.yy"
     6496  case 308:
     6497
     6498/* Line 1806 of yacc.c  */
     6499#line 1327 "parser.yy"
    66166500    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    66176501    break;
    66186502
    6619   case 304:
    6620 
    6621 /* Line 1806 of yacc.c  */
    6622 #line 1306 "parser.yy"
     6503  case 309:
     6504
     6505/* Line 1806 of yacc.c  */
     6506#line 1329 "parser.yy"
    66236507    {
    66246508                        typedefTable.enterScope();
     
    66266510    break;
    66276511
    6628   case 305:
    6629 
    6630 /* Line 1806 of yacc.c  */
    6631 #line 1310 "parser.yy"
     6512  case 310:
     6513
     6514/* Line 1806 of yacc.c  */
     6515#line 1333 "parser.yy"
    66326516    {
    66336517                        typedefTable.leaveScope();
     
    66366520    break;
    66376521
    6638   case 307:
    6639 
    6640 /* Line 1806 of yacc.c  */
    6641 #line 1319 "parser.yy"
     6522  case 312:
     6523
     6524/* Line 1806 of yacc.c  */
     6525#line 1342 "parser.yy"
    66426526    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66436527    break;
    66446528
    6645   case 308:
    6646 
    6647 /* Line 1806 of yacc.c  */
    6648 #line 1321 "parser.yy"
     6529  case 313:
     6530
     6531/* Line 1806 of yacc.c  */
     6532#line 1344 "parser.yy"
    66496533    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66506534    break;
    66516535
    6652   case 310:
    6653 
    6654 /* Line 1806 of yacc.c  */
    6655 #line 1332 "parser.yy"
     6536  case 315:
     6537
     6538/* Line 1806 of yacc.c  */
     6539#line 1355 "parser.yy"
    66566540    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66576541    break;
    66586542
    6659   case 311:
    6660 
    6661 /* Line 1806 of yacc.c  */
    6662 #line 1337 "parser.yy"
     6543  case 316:
     6544
     6545/* Line 1806 of yacc.c  */
     6546#line 1360 "parser.yy"
    66636547    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    66646548    break;
    66656549
    6666   case 312:
    6667 
    6668 /* Line 1806 of yacc.c  */
    6669 #line 1339 "parser.yy"
     6550  case 317:
     6551
     6552/* Line 1806 of yacc.c  */
     6553#line 1362 "parser.yy"
    66706554    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    66716555    break;
    66726556
    6673   case 313:
    6674 
    6675 /* Line 1806 of yacc.c  */
    6676 #line 1341 "parser.yy"
     6557  case 318:
     6558
     6559/* Line 1806 of yacc.c  */
     6560#line 1364 "parser.yy"
    66776561    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    66786562    break;
    66796563
    6680   case 314:
    6681 
    6682 /* Line 1806 of yacc.c  */
    6683 #line 1343 "parser.yy"
     6564  case 319:
     6565
     6566/* Line 1806 of yacc.c  */
     6567#line 1366 "parser.yy"
    66846568    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66856569    break;
    66866570
    6687   case 315:
    6688 
    6689 /* Line 1806 of yacc.c  */
    6690 #line 1346 "parser.yy"
     6571  case 320:
     6572
     6573/* Line 1806 of yacc.c  */
     6574#line 1369 "parser.yy"
    66916575    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    66926576    break;
    66936577
    6694   case 316:
    6695 
    6696 /* Line 1806 of yacc.c  */
    6697 #line 1348 "parser.yy"
     6578  case 321:
     6579
     6580/* Line 1806 of yacc.c  */
     6581#line 1371 "parser.yy"
    66986582    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    66996583    break;
    67006584
    6701   case 317:
    6702 
    6703 /* Line 1806 of yacc.c  */
    6704 #line 1351 "parser.yy"
     6585  case 322:
     6586
     6587/* Line 1806 of yacc.c  */
     6588#line 1374 "parser.yy"
    67056589    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    67066590    break;
    67076591
    6708   case 318:
    6709 
    6710 /* Line 1806 of yacc.c  */
    6711 #line 1353 "parser.yy"
     6592  case 323:
     6593
     6594/* Line 1806 of yacc.c  */
     6595#line 1376 "parser.yy"
    67126596    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    67136597    break;
    67146598
    6715   case 319:
    6716 
    6717 /* Line 1806 of yacc.c  */
    6718 #line 1358 "parser.yy"
     6599  case 324:
     6600
     6601/* Line 1806 of yacc.c  */
     6602#line 1381 "parser.yy"
    67196603    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    67206604    break;
    67216605
    6722   case 320:
    6723 
    6724 /* Line 1806 of yacc.c  */
    6725 #line 1360 "parser.yy"
     6606  case 325:
     6607
     6608/* Line 1806 of yacc.c  */
     6609#line 1383 "parser.yy"
    67266610    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    67276611    break;
    67286612
    6729   case 321:
    6730 
    6731 /* Line 1806 of yacc.c  */
    6732 #line 1362 "parser.yy"
     6613  case 326:
     6614
     6615/* Line 1806 of yacc.c  */
     6616#line 1385 "parser.yy"
    67336617    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    67346618    break;
    67356619
    6736   case 322:
    6737 
    6738 /* Line 1806 of yacc.c  */
    6739 #line 1364 "parser.yy"
     6620  case 327:
     6621
     6622/* Line 1806 of yacc.c  */
     6623#line 1387 "parser.yy"
    67406624    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    67416625    break;
    67426626
    6743   case 323:
    6744 
    6745 /* Line 1806 of yacc.c  */
    6746 #line 1366 "parser.yy"
     6627  case 328:
     6628
     6629/* Line 1806 of yacc.c  */
     6630#line 1389 "parser.yy"
    67476631    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    67486632    break;
    67496633
    6750   case 324:
    6751 
    6752 /* Line 1806 of yacc.c  */
    6753 #line 1368 "parser.yy"
     6634  case 329:
     6635
     6636/* Line 1806 of yacc.c  */
     6637#line 1391 "parser.yy"
    67546638    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    67556639    break;
    67566640
    6757   case 325:
    6758 
    6759 /* Line 1806 of yacc.c  */
    6760 #line 1370 "parser.yy"
     6641  case 330:
     6642
     6643/* Line 1806 of yacc.c  */
     6644#line 1393 "parser.yy"
    67616645    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    67626646    break;
    67636647
    6764   case 326:
    6765 
    6766 /* Line 1806 of yacc.c  */
    6767 #line 1372 "parser.yy"
     6648  case 331:
     6649
     6650/* Line 1806 of yacc.c  */
     6651#line 1395 "parser.yy"
    67686652    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    67696653    break;
    67706654
    6771   case 327:
    6772 
    6773 /* Line 1806 of yacc.c  */
    6774 #line 1374 "parser.yy"
     6655  case 332:
     6656
     6657/* Line 1806 of yacc.c  */
     6658#line 1397 "parser.yy"
    67756659    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    67766660    break;
    67776661
    6778   case 328:
    6779 
    6780 /* Line 1806 of yacc.c  */
    6781 #line 1376 "parser.yy"
     6662  case 333:
     6663
     6664/* Line 1806 of yacc.c  */
     6665#line 1399 "parser.yy"
    67826666    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    67836667    break;
    67846668
    6785   case 329:
    6786 
    6787 /* Line 1806 of yacc.c  */
    6788 #line 1378 "parser.yy"
     6669  case 334:
     6670
     6671/* Line 1806 of yacc.c  */
     6672#line 1401 "parser.yy"
    67896673    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    67906674    break;
    67916675
    6792   case 330:
    6793 
    6794 /* Line 1806 of yacc.c  */
    6795 #line 1380 "parser.yy"
     6676  case 335:
     6677
     6678/* Line 1806 of yacc.c  */
     6679#line 1403 "parser.yy"
    67966680    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    67976681    break;
    67986682
    6799   case 331:
    6800 
    6801 /* Line 1806 of yacc.c  */
    6802 #line 1382 "parser.yy"
     6683  case 336:
     6684
     6685/* Line 1806 of yacc.c  */
     6686#line 1405 "parser.yy"
    68036687    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    68046688    break;
    68056689
    6806   case 333:
    6807 
    6808 /* Line 1806 of yacc.c  */
    6809 #line 1389 "parser.yy"
     6690  case 338:
     6691
     6692/* Line 1806 of yacc.c  */
     6693#line 1412 "parser.yy"
    68106694    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68116695    break;
    68126696
    6813   case 334:
    6814 
    6815 /* Line 1806 of yacc.c  */
    6816 #line 1391 "parser.yy"
     6697  case 339:
     6698
     6699/* Line 1806 of yacc.c  */
     6700#line 1414 "parser.yy"
    68176701    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68186702    break;
    68196703
    6820   case 335:
    6821 
    6822 /* Line 1806 of yacc.c  */
    6823 #line 1393 "parser.yy"
     6704  case 340:
     6705
     6706/* Line 1806 of yacc.c  */
     6707#line 1416 "parser.yy"
    68246708    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68256709    break;
    68266710
    6827   case 336:
    6828 
    6829 /* Line 1806 of yacc.c  */
    6830 #line 1395 "parser.yy"
     6711  case 341:
     6712
     6713/* Line 1806 of yacc.c  */
     6714#line 1418 "parser.yy"
    68316715    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    68326716    break;
    68336717
    6834   case 338:
    6835 
    6836 /* Line 1806 of yacc.c  */
    6837 #line 1401 "parser.yy"
     6718  case 343:
     6719
     6720/* Line 1806 of yacc.c  */
     6721#line 1424 "parser.yy"
    68386722    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68396723    break;
    68406724
    6841   case 340:
    6842 
    6843 /* Line 1806 of yacc.c  */
    6844 #line 1408 "parser.yy"
     6725  case 345:
     6726
     6727/* Line 1806 of yacc.c  */
     6728#line 1431 "parser.yy"
    68456729    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68466730    break;
    68476731
    6848   case 341:
    6849 
    6850 /* Line 1806 of yacc.c  */
    6851 #line 1410 "parser.yy"
     6732  case 346:
     6733
     6734/* Line 1806 of yacc.c  */
     6735#line 1433 "parser.yy"
    68526736    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68536737    break;
    68546738
    6855   case 342:
    6856 
    6857 /* Line 1806 of yacc.c  */
    6858 #line 1412 "parser.yy"
     6739  case 347:
     6740
     6741/* Line 1806 of yacc.c  */
     6742#line 1435 "parser.yy"
    68596743    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    68606744    break;
    68616745
    6862   case 343:
    6863 
    6864 /* Line 1806 of yacc.c  */
    6865 #line 1417 "parser.yy"
     6746  case 348:
     6747
     6748/* Line 1806 of yacc.c  */
     6749#line 1440 "parser.yy"
    68666750    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    68676751    break;
    68686752
    6869   case 344:
    6870 
    6871 /* Line 1806 of yacc.c  */
    6872 #line 1419 "parser.yy"
     6753  case 349:
     6754
     6755/* Line 1806 of yacc.c  */
     6756#line 1442 "parser.yy"
    68736757    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    68746758    break;
    68756759
    6876   case 345:
    6877 
    6878 /* Line 1806 of yacc.c  */
    6879 #line 1421 "parser.yy"
     6760  case 350:
     6761
     6762/* Line 1806 of yacc.c  */
     6763#line 1444 "parser.yy"
    68806764    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    68816765    break;
    68826766
    6883   case 346:
    6884 
    6885 /* Line 1806 of yacc.c  */
    6886 #line 1423 "parser.yy"
     6767  case 351:
     6768
     6769/* Line 1806 of yacc.c  */
     6770#line 1446 "parser.yy"
    68876771    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    68886772    break;
    68896773
    6890   case 348:
    6891 
    6892 /* Line 1806 of yacc.c  */
    6893 #line 1429 "parser.yy"
     6774  case 353:
     6775
     6776/* Line 1806 of yacc.c  */
     6777#line 1452 "parser.yy"
    68946778    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68956779    break;
    68966780
    6897   case 349:
    6898 
    6899 /* Line 1806 of yacc.c  */
    6900 #line 1431 "parser.yy"
     6781  case 354:
     6782
     6783/* Line 1806 of yacc.c  */
     6784#line 1454 "parser.yy"
    69016785    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69026786    break;
    69036787
    6904   case 350:
    6905 
    6906 /* Line 1806 of yacc.c  */
    6907 #line 1433 "parser.yy"
     6788  case 355:
     6789
     6790/* Line 1806 of yacc.c  */
     6791#line 1456 "parser.yy"
    69086792    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69096793    break;
    69106794
    6911   case 352:
    6912 
    6913 /* Line 1806 of yacc.c  */
    6914 #line 1439 "parser.yy"
     6795  case 357:
     6796
     6797/* Line 1806 of yacc.c  */
     6798#line 1462 "parser.yy"
    69156799    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69166800    break;
    69176801
    6918   case 353:
    6919 
    6920 /* Line 1806 of yacc.c  */
    6921 #line 1441 "parser.yy"
     6802  case 358:
     6803
     6804/* Line 1806 of yacc.c  */
     6805#line 1464 "parser.yy"
    69226806    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69236807    break;
    69246808
    6925   case 355:
    6926 
    6927 /* Line 1806 of yacc.c  */
    6928 #line 1447 "parser.yy"
     6809  case 360:
     6810
     6811/* Line 1806 of yacc.c  */
     6812#line 1470 "parser.yy"
    69296813    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69306814    break;
    69316815
    6932   case 356:
    6933 
    6934 /* Line 1806 of yacc.c  */
    6935 #line 1449 "parser.yy"
     6816  case 361:
     6817
     6818/* Line 1806 of yacc.c  */
     6819#line 1472 "parser.yy"
    69366820    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69376821    break;
    69386822
    6939   case 357:
    6940 
    6941 /* Line 1806 of yacc.c  */
    6942 #line 1451 "parser.yy"
     6823  case 362:
     6824
     6825/* Line 1806 of yacc.c  */
     6826#line 1474 "parser.yy"
    69436827    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69446828    break;
    69456829
    6946   case 358:
    6947 
    6948 /* Line 1806 of yacc.c  */
    6949 #line 1456 "parser.yy"
     6830  case 363:
     6831
     6832/* Line 1806 of yacc.c  */
     6833#line 1479 "parser.yy"
    69506834    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    69516835    break;
    69526836
    6953   case 359:
    6954 
    6955 /* Line 1806 of yacc.c  */
    6956 #line 1458 "parser.yy"
     6837  case 364:
     6838
     6839/* Line 1806 of yacc.c  */
     6840#line 1481 "parser.yy"
    69576841    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69586842    break;
    69596843
    6960   case 360:
    6961 
    6962 /* Line 1806 of yacc.c  */
    6963 #line 1460 "parser.yy"
     6844  case 365:
     6845
     6846/* Line 1806 of yacc.c  */
     6847#line 1483 "parser.yy"
    69646848    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69656849    break;
    69666850
    6967   case 363:
    6968 
    6969 /* Line 1806 of yacc.c  */
    6970 #line 1470 "parser.yy"
     6851  case 368:
     6852
     6853/* Line 1806 of yacc.c  */
     6854#line 1493 "parser.yy"
    69716855    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
    69726856    break;
    69736857
    6974   case 364:
    6975 
    6976 /* Line 1806 of yacc.c  */
    6977 #line 1472 "parser.yy"
     6858  case 369:
     6859
     6860/* Line 1806 of yacc.c  */
     6861#line 1495 "parser.yy"
    69786862    {
    69796863                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    69826866    break;
    69836867
    6984   case 365:
    6985 
    6986 /* Line 1806 of yacc.c  */
    6987 #line 1477 "parser.yy"
     6868  case 370:
     6869
     6870/* Line 1806 of yacc.c  */
     6871#line 1500 "parser.yy"
    69886872    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    69896873    break;
    69906874
    6991   case 366:
    6992 
    6993 /* Line 1806 of yacc.c  */
    6994 #line 1479 "parser.yy"
     6875  case 371:
     6876
     6877/* Line 1806 of yacc.c  */
     6878#line 1502 "parser.yy"
    69956879    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
    69966880    break;
    69976881
    6998   case 367:
    6999 
    7000 /* Line 1806 of yacc.c  */
    7001 #line 1481 "parser.yy"
     6882  case 372:
     6883
     6884/* Line 1806 of yacc.c  */
     6885#line 1504 "parser.yy"
    70026886    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    70036887    break;
    70046888
    7005   case 368:
    7006 
    7007 /* Line 1806 of yacc.c  */
    7008 #line 1483 "parser.yy"
     6889  case 373:
     6890
     6891/* Line 1806 of yacc.c  */
     6892#line 1506 "parser.yy"
    70096893    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    70106894    break;
    70116895
    7012   case 369:
    7013 
    7014 /* Line 1806 of yacc.c  */
    7015 #line 1488 "parser.yy"
     6896  case 374:
     6897
     6898/* Line 1806 of yacc.c  */
     6899#line 1511 "parser.yy"
    70166900    { (yyval.aggKey) = DeclarationNode::Struct; }
    70176901    break;
    70186902
    7019   case 370:
    7020 
    7021 /* Line 1806 of yacc.c  */
    7022 #line 1490 "parser.yy"
     6903  case 375:
     6904
     6905/* Line 1806 of yacc.c  */
     6906#line 1513 "parser.yy"
    70236907    { (yyval.aggKey) = DeclarationNode::Union; }
    70246908    break;
    70256909
    7026   case 371:
    7027 
    7028 /* Line 1806 of yacc.c  */
    7029 #line 1495 "parser.yy"
     6910  case 376:
     6911
     6912/* Line 1806 of yacc.c  */
     6913#line 1518 "parser.yy"
    70306914    { (yyval.decl) = 0; }
    70316915    break;
    70326916
    7033   case 372:
    7034 
    7035 /* Line 1806 of yacc.c  */
    7036 #line 1497 "parser.yy"
     6917  case 377:
     6918
     6919/* Line 1806 of yacc.c  */
     6920#line 1520 "parser.yy"
    70376921    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    70386922    break;
    70396923
    7040   case 374:
    7041 
    7042 /* Line 1806 of yacc.c  */
    7043 #line 1503 "parser.yy"
     6924  case 379:
     6925
     6926/* Line 1806 of yacc.c  */
     6927#line 1526 "parser.yy"
    70446928    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    70456929    break;
    70466930
    7047   case 376:
    7048 
    7049 /* Line 1806 of yacc.c  */
    7050 #line 1506 "parser.yy"
     6931  case 381:
     6932
     6933/* Line 1806 of yacc.c  */
     6934#line 1529 "parser.yy"
    70516935    {   // mark all fields in list
    70526936                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    70566940    break;
    70576941
    7058   case 378:
    7059 
    7060 /* Line 1806 of yacc.c  */
    7061 #line 1516 "parser.yy"
     6942  case 383:
     6943
     6944/* Line 1806 of yacc.c  */
     6945#line 1539 "parser.yy"
    70626946    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    70636947    break;
    70646948
    7065   case 379:
    7066 
    7067 /* Line 1806 of yacc.c  */
    7068 #line 1518 "parser.yy"
     6949  case 384:
     6950
     6951/* Line 1806 of yacc.c  */
     6952#line 1541 "parser.yy"
    70696953    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    70706954    break;
    70716955
    7072   case 380:
    7073 
    7074 /* Line 1806 of yacc.c  */
    7075 #line 1520 "parser.yy"
     6956  case 385:
     6957
     6958/* Line 1806 of yacc.c  */
     6959#line 1543 "parser.yy"
    70766960    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    70776961    break;
    70786962
    7079   case 381:
    7080 
    7081 /* Line 1806 of yacc.c  */
    7082 #line 1525 "parser.yy"
     6963  case 386:
     6964
     6965/* Line 1806 of yacc.c  */
     6966#line 1548 "parser.yy"
    70836967    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70846968    break;
    70856969
    7086   case 382:
    7087 
    7088 /* Line 1806 of yacc.c  */
    7089 #line 1527 "parser.yy"
     6970  case 387:
     6971
     6972/* Line 1806 of yacc.c  */
     6973#line 1550 "parser.yy"
    70906974    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    70916975    break;
    70926976
    7093   case 383:
    7094 
    7095 /* Line 1806 of yacc.c  */
    7096 #line 1532 "parser.yy"
     6977  case 388:
     6978
     6979/* Line 1806 of yacc.c  */
     6980#line 1555 "parser.yy"
    70976981    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    70986982    break;
    70996983
    7100   case 384:
    7101 
    7102 /* Line 1806 of yacc.c  */
    7103 #line 1534 "parser.yy"
     6984  case 389:
     6985
     6986/* Line 1806 of yacc.c  */
     6987#line 1557 "parser.yy"
    71046988    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    71056989    break;
    71066990
    7107   case 385:
    7108 
    7109 /* Line 1806 of yacc.c  */
    7110 #line 1537 "parser.yy"
     6991  case 390:
     6992
     6993/* Line 1806 of yacc.c  */
     6994#line 1560 "parser.yy"
    71116995    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71126996    break;
    71136997
    7114   case 386:
    7115 
    7116 /* Line 1806 of yacc.c  */
    7117 #line 1540 "parser.yy"
     6998  case 391:
     6999
     7000/* Line 1806 of yacc.c  */
     7001#line 1563 "parser.yy"
    71187002    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71197003    break;
    71207004
    7121   case 388:
    7122 
    7123 /* Line 1806 of yacc.c  */
    7124 #line 1546 "parser.yy"
     7005  case 393:
     7006
     7007/* Line 1806 of yacc.c  */
     7008#line 1569 "parser.yy"
    71257009    { (yyval.en) = 0; }
    71267010    break;
    71277011
    7128   case 389:
    7129 
    7130 /* Line 1806 of yacc.c  */
    7131 #line 1548 "parser.yy"
     7012  case 394:
     7013
     7014/* Line 1806 of yacc.c  */
     7015#line 1571 "parser.yy"
    71327016    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71337017    break;
    71347018
    7135   case 390:
    7136 
    7137 /* Line 1806 of yacc.c  */
    7138 #line 1553 "parser.yy"
     7019  case 395:
     7020
     7021/* Line 1806 of yacc.c  */
     7022#line 1576 "parser.yy"
    71397023    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71407024    break;
    71417025
    7142   case 392:
    7143 
    7144 /* Line 1806 of yacc.c  */
    7145 #line 1562 "parser.yy"
     7026  case 397:
     7027
     7028/* Line 1806 of yacc.c  */
     7029#line 1585 "parser.yy"
    71467030    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
    71477031    break;
    71487032
    7149   case 393:
    7150 
    7151 /* Line 1806 of yacc.c  */
    7152 #line 1564 "parser.yy"
     7033  case 398:
     7034
     7035/* Line 1806 of yacc.c  */
     7036#line 1587 "parser.yy"
    71537037    {
    71547038                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    71577041    break;
    71587042
    7159   case 394:
    7160 
    7161 /* Line 1806 of yacc.c  */
    7162 #line 1569 "parser.yy"
     7043  case 399:
     7044
     7045/* Line 1806 of yacc.c  */
     7046#line 1592 "parser.yy"
    71637047    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    71647048    break;
    71657049
    7166   case 395:
    7167 
    7168 /* Line 1806 of yacc.c  */
    7169 #line 1571 "parser.yy"
     7050  case 400:
     7051
     7052/* Line 1806 of yacc.c  */
     7053#line 1594 "parser.yy"
    71707054    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    71717055    break;
    71727056
    7173   case 396:
    7174 
    7175 /* Line 1806 of yacc.c  */
    7176 #line 1576 "parser.yy"
     7057  case 401:
     7058
     7059/* Line 1806 of yacc.c  */
     7060#line 1599 "parser.yy"
    71777061    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    71787062    break;
    71797063
    7180   case 397:
    7181 
    7182 /* Line 1806 of yacc.c  */
    7183 #line 1578 "parser.yy"
     7064  case 402:
     7065
     7066/* Line 1806 of yacc.c  */
     7067#line 1601 "parser.yy"
    71847068    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71857069    break;
    71867070
    7187   case 398:
    7188 
    7189 /* Line 1806 of yacc.c  */
    7190 #line 1583 "parser.yy"
     7071  case 403:
     7072
     7073/* Line 1806 of yacc.c  */
     7074#line 1606 "parser.yy"
    71917075    { (yyval.en) = 0; }
    71927076    break;
    71937077
    7194   case 399:
    7195 
    7196 /* Line 1806 of yacc.c  */
    7197 #line 1585 "parser.yy"
     7078  case 404:
     7079
     7080/* Line 1806 of yacc.c  */
     7081#line 1608 "parser.yy"
    71987082    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71997083    break;
    72007084
    7201   case 400:
    7202 
    7203 /* Line 1806 of yacc.c  */
    7204 #line 1592 "parser.yy"
     7085  case 405:
     7086
     7087/* Line 1806 of yacc.c  */
     7088#line 1615 "parser.yy"
    72057089    { (yyval.decl) = 0; }
    72067090    break;
    72077091
    7208   case 404:
    7209 
    7210 /* Line 1806 of yacc.c  */
    7211 #line 1600 "parser.yy"
     7092  case 409:
     7093
     7094/* Line 1806 of yacc.c  */
     7095#line 1623 "parser.yy"
    72127096    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72137097    break;
    72147098
    7215   case 405:
    7216 
    7217 /* Line 1806 of yacc.c  */
    7218 #line 1602 "parser.yy"
     7099  case 410:
     7100
     7101/* Line 1806 of yacc.c  */
     7102#line 1625 "parser.yy"
    72197103    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72207104    break;
    72217105
    7222   case 406:
    7223 
    7224 /* Line 1806 of yacc.c  */
    7225 #line 1604 "parser.yy"
     7106  case 411:
     7107
     7108/* Line 1806 of yacc.c  */
     7109#line 1627 "parser.yy"
    72267110    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72277111    break;
    72287112
    7229   case 408:
    7230 
    7231 /* Line 1806 of yacc.c  */
    7232 #line 1612 "parser.yy"
     7113  case 413:
     7114
     7115/* Line 1806 of yacc.c  */
     7116#line 1635 "parser.yy"
    72337117    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72347118    break;
    72357119
    7236   case 409:
    7237 
    7238 /* Line 1806 of yacc.c  */
    7239 #line 1614 "parser.yy"
     7120  case 414:
     7121
     7122/* Line 1806 of yacc.c  */
     7123#line 1637 "parser.yy"
    72407124    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72417125    break;
    72427126
    7243   case 410:
    7244 
    7245 /* Line 1806 of yacc.c  */
    7246 #line 1616 "parser.yy"
     7127  case 415:
     7128
     7129/* Line 1806 of yacc.c  */
     7130#line 1639 "parser.yy"
    72477131    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    72487132    break;
    72497133
    7250   case 412:
    7251 
    7252 /* Line 1806 of yacc.c  */
    7253 #line 1622 "parser.yy"
     7134  case 417:
     7135
     7136/* Line 1806 of yacc.c  */
     7137#line 1645 "parser.yy"
    72547138    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72557139    break;
    72567140
    7257   case 413:
    7258 
    7259 /* Line 1806 of yacc.c  */
    7260 #line 1627 "parser.yy"
     7141  case 418:
     7142
     7143/* Line 1806 of yacc.c  */
     7144#line 1650 "parser.yy"
    72617145    { (yyval.decl) = 0; }
    72627146    break;
    72637147
    7264   case 416:
    7265 
    7266 /* Line 1806 of yacc.c  */
    7267 #line 1634 "parser.yy"
     7148  case 421:
     7149
     7150/* Line 1806 of yacc.c  */
     7151#line 1657 "parser.yy"
    72687152    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72697153    break;
    72707154
    7271   case 419:
    7272 
    7273 /* Line 1806 of yacc.c  */
    7274 #line 1641 "parser.yy"
     7155  case 424:
     7156
     7157/* Line 1806 of yacc.c  */
     7158#line 1664 "parser.yy"
    72757159    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72767160    break;
    72777161
    7278   case 420:
    7279 
    7280 /* Line 1806 of yacc.c  */
    7281 #line 1643 "parser.yy"
     7162  case 425:
     7163
     7164/* Line 1806 of yacc.c  */
     7165#line 1666 "parser.yy"
    72827166    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72837167    break;
    72847168
    7285   case 422:
    7286 
    7287 /* Line 1806 of yacc.c  */
    7288 #line 1652 "parser.yy"
     7169  case 427:
     7170
     7171/* Line 1806 of yacc.c  */
     7172#line 1675 "parser.yy"
    72897173    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72907174    break;
    72917175
    7292   case 423:
    7293 
    7294 /* Line 1806 of yacc.c  */
    7295 #line 1655 "parser.yy"
     7176  case 428:
     7177
     7178/* Line 1806 of yacc.c  */
     7179#line 1678 "parser.yy"
    72967180    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72977181    break;
    72987182
    7299   case 424:
    7300 
    7301 /* Line 1806 of yacc.c  */
    7302 #line 1657 "parser.yy"
     7183  case 429:
     7184
     7185/* Line 1806 of yacc.c  */
     7186#line 1680 "parser.yy"
    73037187    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    73047188    break;
    73057189
    7306   case 429:
    7307 
    7308 /* Line 1806 of yacc.c  */
    7309 #line 1667 "parser.yy"
     7190  case 434:
     7191
     7192/* Line 1806 of yacc.c  */
     7193#line 1690 "parser.yy"
    73107194    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73117195    break;
    73127196
    7313   case 431:
    7314 
    7315 /* Line 1806 of yacc.c  */
    7316 #line 1673 "parser.yy"
     7197  case 436:
     7198
     7199/* Line 1806 of yacc.c  */
     7200#line 1696 "parser.yy"
    73177201    {
    73187202                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73217205    break;
    73227206
    7323   case 432:
    7324 
    7325 /* Line 1806 of yacc.c  */
    7326 #line 1678 "parser.yy"
     7207  case 437:
     7208
     7209/* Line 1806 of yacc.c  */
     7210#line 1701 "parser.yy"
    73277211    {
    73287212                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73317215    break;
    73327216
    7333   case 434:
    7334 
    7335 /* Line 1806 of yacc.c  */
    7336 #line 1687 "parser.yy"
     7217  case 439:
     7218
     7219/* Line 1806 of yacc.c  */
     7220#line 1710 "parser.yy"
    73377221    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73387222    break;
    73397223
    7340   case 435:
    7341 
    7342 /* Line 1806 of yacc.c  */
    7343 #line 1696 "parser.yy"
     7224  case 440:
     7225
     7226/* Line 1806 of yacc.c  */
     7227#line 1719 "parser.yy"
    73447228    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    73457229    break;
    73467230
    7347   case 436:
    7348 
    7349 /* Line 1806 of yacc.c  */
    7350 #line 1698 "parser.yy"
     7231  case 441:
     7232
     7233/* Line 1806 of yacc.c  */
     7234#line 1721 "parser.yy"
    73517235    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    73527236    break;
    73537237
    7354   case 448:
    7355 
    7356 /* Line 1806 of yacc.c  */
    7357 #line 1723 "parser.yy"
     7238  case 453:
     7239
     7240/* Line 1806 of yacc.c  */
     7241#line 1746 "parser.yy"
    73587242    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73597243    break;
    73607244
    7361   case 452:
    7362 
    7363 /* Line 1806 of yacc.c  */
    7364 #line 1731 "parser.yy"
     7245  case 457:
     7246
     7247/* Line 1806 of yacc.c  */
     7248#line 1754 "parser.yy"
    73657249    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73667250    break;
    73677251
    7368   case 453:
    7369 
    7370 /* Line 1806 of yacc.c  */
    7371 #line 1736 "parser.yy"
     7252  case 458:
     7253
     7254/* Line 1806 of yacc.c  */
     7255#line 1759 "parser.yy"
    73727256    { (yyval.in) = 0; }
    73737257    break;
    73747258
    7375   case 454:
    7376 
    7377 /* Line 1806 of yacc.c  */
    7378 #line 1738 "parser.yy"
     7259  case 459:
     7260
     7261/* Line 1806 of yacc.c  */
     7262#line 1761 "parser.yy"
    73797263    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    73807264    break;
    73817265
    7382   case 455:
    7383 
    7384 /* Line 1806 of yacc.c  */
    7385 #line 1740 "parser.yy"
     7266  case 460:
     7267
     7268/* Line 1806 of yacc.c  */
     7269#line 1763 "parser.yy"
    73867270    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    73877271    break;
    73887272
    7389   case 456:
    7390 
    7391 /* Line 1806 of yacc.c  */
    7392 #line 1744 "parser.yy"
     7273  case 461:
     7274
     7275/* Line 1806 of yacc.c  */
     7276#line 1767 "parser.yy"
    73937277    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    73947278    break;
    73957279
    7396   case 457:
    7397 
    7398 /* Line 1806 of yacc.c  */
    7399 #line 1745 "parser.yy"
     7280  case 462:
     7281
     7282/* Line 1806 of yacc.c  */
     7283#line 1768 "parser.yy"
    74007284    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    74017285    break;
    74027286
    7403   case 458:
    7404 
    7405 /* Line 1806 of yacc.c  */
    7406 #line 1750 "parser.yy"
     7287  case 463:
     7288
     7289/* Line 1806 of yacc.c  */
     7290#line 1773 "parser.yy"
    74077291    { (yyval.in) = 0; }
    74087292    break;
    74097293
    7410   case 460:
    7411 
    7412 /* Line 1806 of yacc.c  */
    7413 #line 1752 "parser.yy"
     7294  case 465:
     7295
     7296/* Line 1806 of yacc.c  */
     7297#line 1775 "parser.yy"
    74147298    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    74157299    break;
    74167300
    7417   case 461:
    7418 
    7419 /* Line 1806 of yacc.c  */
    7420 #line 1753 "parser.yy"
     7301  case 466:
     7302
     7303/* Line 1806 of yacc.c  */
     7304#line 1776 "parser.yy"
    74217305    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    74227306    break;
    74237307
    7424   case 462:
    7425 
    7426 /* Line 1806 of yacc.c  */
    7427 #line 1755 "parser.yy"
     7308  case 467:
     7309
     7310/* Line 1806 of yacc.c  */
     7311#line 1778 "parser.yy"
    74287312    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74297313    break;
    74307314
    7431   case 464:
    7432 
    7433 /* Line 1806 of yacc.c  */
    7434 #line 1771 "parser.yy"
     7315  case 469:
     7316
     7317/* Line 1806 of yacc.c  */
     7318#line 1794 "parser.yy"
    74357319    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    74367320    break;
    74377321
    7438   case 466:
    7439 
    7440 /* Line 1806 of yacc.c  */
    7441 #line 1777 "parser.yy"
     7322  case 471:
     7323
     7324/* Line 1806 of yacc.c  */
     7325#line 1800 "parser.yy"
    74427326    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
    74437327    break;
    74447328
    7445   case 467:
    7446 
    7447 /* Line 1806 of yacc.c  */
    7448 #line 1783 "parser.yy"
     7329  case 472:
     7330
     7331/* Line 1806 of yacc.c  */
     7332#line 1806 "parser.yy"
    74497333    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    74507334    break;
    74517335
    7452   case 468:
    7453 
    7454 /* Line 1806 of yacc.c  */
    7455 #line 1786 "parser.yy"
     7336  case 473:
     7337
     7338/* Line 1806 of yacc.c  */
     7339#line 1809 "parser.yy"
    74567340    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74577341    break;
    74587342
    7459   case 469:
    7460 
    7461 /* Line 1806 of yacc.c  */
    7462 #line 1788 "parser.yy"
     7343  case 474:
     7344
     7345/* Line 1806 of yacc.c  */
     7346#line 1811 "parser.yy"
    74637347    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74647348    break;
    74657349
    7466   case 470:
    7467 
    7468 /* Line 1806 of yacc.c  */
    7469 #line 1790 "parser.yy"
     7350  case 475:
     7351
     7352/* Line 1806 of yacc.c  */
     7353#line 1813 "parser.yy"
    74707354    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    74717355    break;
    74727356
    7473   case 471:
    7474 
    7475 /* Line 1806 of yacc.c  */
    7476 #line 1792 "parser.yy"
     7357  case 476:
     7358
     7359/* Line 1806 of yacc.c  */
     7360#line 1815 "parser.yy"
    74777361    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    74787362    break;
    74797363
    7480   case 473:
    7481 
    7482 /* Line 1806 of yacc.c  */
    7483 #line 1816 "parser.yy"
     7364  case 478:
     7365
     7366/* Line 1806 of yacc.c  */
     7367#line 1839 "parser.yy"
    74847368    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74857369    break;
    74867370
    7487   case 474:
    7488 
    7489 /* Line 1806 of yacc.c  */
    7490 #line 1818 "parser.yy"
     7371  case 479:
     7372
     7373/* Line 1806 of yacc.c  */
     7374#line 1841 "parser.yy"
    74917375    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74927376    break;
    74937377
    7494   case 475:
    7495 
    7496 /* Line 1806 of yacc.c  */
    7497 #line 1820 "parser.yy"
     7378  case 480:
     7379
     7380/* Line 1806 of yacc.c  */
     7381#line 1843 "parser.yy"
    74987382    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    74997383    break;
    75007384
    7501   case 477:
    7502 
    7503 /* Line 1806 of yacc.c  */
    7504 #line 1826 "parser.yy"
     7385  case 482:
     7386
     7387/* Line 1806 of yacc.c  */
     7388#line 1849 "parser.yy"
    75057389    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75067390    break;
    75077391
    7508   case 478:
    7509 
    7510 /* Line 1806 of yacc.c  */
    7511 #line 1828 "parser.yy"
     7392  case 483:
     7393
     7394/* Line 1806 of yacc.c  */
     7395#line 1851 "parser.yy"
    75127396    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75137397    break;
    75147398
    7515   case 479:
    7516 
    7517 /* Line 1806 of yacc.c  */
    7518 #line 1833 "parser.yy"
     7399  case 484:
     7400
     7401/* Line 1806 of yacc.c  */
     7402#line 1856 "parser.yy"
    75197403    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75207404    break;
    75217405
    7522   case 481:
    7523 
    7524 /* Line 1806 of yacc.c  */
    7525 #line 1839 "parser.yy"
     7406  case 486:
     7407
     7408/* Line 1806 of yacc.c  */
     7409#line 1862 "parser.yy"
    75267410    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    75277411    break;
    75287412
    7529   case 482:
    7530 
    7531 /* Line 1806 of yacc.c  */
    7532 #line 1844 "parser.yy"
     7413  case 487:
     7414
     7415/* Line 1806 of yacc.c  */
     7416#line 1867 "parser.yy"
    75337417    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    75347418    break;
    75357419
    7536   case 483:
    7537 
    7538 /* Line 1806 of yacc.c  */
    7539 #line 1846 "parser.yy"
     7420  case 488:
     7421
     7422/* Line 1806 of yacc.c  */
     7423#line 1869 "parser.yy"
    75407424    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75417425    break;
    75427426
    7543   case 485:
    7544 
    7545 /* Line 1806 of yacc.c  */
    7546 #line 1852 "parser.yy"
     7427  case 490:
     7428
     7429/* Line 1806 of yacc.c  */
     7430#line 1875 "parser.yy"
    75477431    { (yyval.tclass) = DeclarationNode::Otype; }
    75487432    break;
    75497433
    7550   case 486:
    7551 
    7552 /* Line 1806 of yacc.c  */
    7553 #line 1854 "parser.yy"
     7434  case 491:
     7435
     7436/* Line 1806 of yacc.c  */
     7437#line 1877 "parser.yy"
    75547438    { (yyval.tclass) = DeclarationNode::Ftype; }
    75557439    break;
    75567440
    7557   case 487:
    7558 
    7559 /* Line 1806 of yacc.c  */
    7560 #line 1856 "parser.yy"
     7441  case 492:
     7442
     7443/* Line 1806 of yacc.c  */
     7444#line 1879 "parser.yy"
    75617445    { (yyval.tclass) = DeclarationNode::Dtype; }
    75627446    break;
    75637447
    7564   case 488:
    7565 
    7566 /* Line 1806 of yacc.c  */
    7567 #line 1861 "parser.yy"
     7448  case 493:
     7449
     7450/* Line 1806 of yacc.c  */
     7451#line 1884 "parser.yy"
    75687452    { (yyval.decl) = 0; }
    75697453    break;
    75707454
    7571   case 489:
    7572 
    7573 /* Line 1806 of yacc.c  */
    7574 #line 1863 "parser.yy"
     7455  case 494:
     7456
     7457/* Line 1806 of yacc.c  */
     7458#line 1886 "parser.yy"
    75757459    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    75767460    break;
    75777461
    7578   case 490:
    7579 
    7580 /* Line 1806 of yacc.c  */
    7581 #line 1868 "parser.yy"
     7462  case 495:
     7463
     7464/* Line 1806 of yacc.c  */
     7465#line 1891 "parser.yy"
    75827466    {
    75837467                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    75867470    break;
    75877471
    7588   case 491:
    7589 
    7590 /* Line 1806 of yacc.c  */
    7591 #line 1873 "parser.yy"
     7472  case 496:
     7473
     7474/* Line 1806 of yacc.c  */
     7475#line 1896 "parser.yy"
    75927476    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    75937477    break;
    75947478
    7595   case 492:
    7596 
    7597 /* Line 1806 of yacc.c  */
    7598 #line 1875 "parser.yy"
     7479  case 497:
     7480
     7481/* Line 1806 of yacc.c  */
     7482#line 1898 "parser.yy"
    75997483    { (yyval.decl) = 0; }
    76007484    break;
    76017485
    7602   case 493:
    7603 
    7604 /* Line 1806 of yacc.c  */
    7605 #line 1880 "parser.yy"
     7486  case 498:
     7487
     7488/* Line 1806 of yacc.c  */
     7489#line 1903 "parser.yy"
    76067490    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    76077491    break;
    76087492
    7609   case 495:
    7610 
    7611 /* Line 1806 of yacc.c  */
    7612 #line 1883 "parser.yy"
     7493  case 500:
     7494
     7495/* Line 1806 of yacc.c  */
     7496#line 1906 "parser.yy"
    76137497    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    76147498    break;
    76157499
    7616   case 496:
    7617 
    7618 /* Line 1806 of yacc.c  */
    7619 #line 1885 "parser.yy"
     7500  case 501:
     7501
     7502/* Line 1806 of yacc.c  */
     7503#line 1908 "parser.yy"
    76207504    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    76217505    break;
    76227506
    7623   case 497:
    7624 
    7625 /* Line 1806 of yacc.c  */
    7626 #line 1890 "parser.yy"
     7507  case 502:
     7508
     7509/* Line 1806 of yacc.c  */
     7510#line 1913 "parser.yy"
    76277511    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76287512    break;
    76297513
    7630   case 498:
    7631 
    7632 /* Line 1806 of yacc.c  */
    7633 #line 1892 "parser.yy"
     7514  case 503:
     7515
     7516/* Line 1806 of yacc.c  */
     7517#line 1915 "parser.yy"
    76347518    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76357519    break;
    76367520
    7637   case 499:
    7638 
    7639 /* Line 1806 of yacc.c  */
    7640 #line 1894 "parser.yy"
     7521  case 504:
     7522
     7523/* Line 1806 of yacc.c  */
     7524#line 1917 "parser.yy"
    76417525    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76427526    break;
    76437527
    7644   case 500:
    7645 
    7646 /* Line 1806 of yacc.c  */
    7647 #line 1899 "parser.yy"
     7528  case 505:
     7529
     7530/* Line 1806 of yacc.c  */
     7531#line 1922 "parser.yy"
    76487532    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76497533    break;
    76507534
    7651   case 501:
    7652 
    7653 /* Line 1806 of yacc.c  */
    7654 #line 1901 "parser.yy"
     7535  case 506:
     7536
     7537/* Line 1806 of yacc.c  */
     7538#line 1924 "parser.yy"
    76557539    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76567540    break;
    76577541
    7658   case 502:
    7659 
    7660 /* Line 1806 of yacc.c  */
    7661 #line 1906 "parser.yy"
     7542  case 507:
     7543
     7544/* Line 1806 of yacc.c  */
     7545#line 1929 "parser.yy"
    76627546    {
    76637547                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76667550    break;
    76677551
    7668   case 503:
    7669 
    7670 /* Line 1806 of yacc.c  */
    7671 #line 1911 "parser.yy"
     7552  case 508:
     7553
     7554/* Line 1806 of yacc.c  */
     7555#line 1934 "parser.yy"
    76727556    {
    76737557                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    76767560    break;
    76777561
    7678   case 504:
    7679 
    7680 /* Line 1806 of yacc.c  */
    7681 #line 1919 "parser.yy"
     7562  case 509:
     7563
     7564/* Line 1806 of yacc.c  */
     7565#line 1942 "parser.yy"
    76827566    {
    76837567                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76867570    break;
    76877571
    7688   case 505:
    7689 
    7690 /* Line 1806 of yacc.c  */
    7691 #line 1924 "parser.yy"
     7572  case 510:
     7573
     7574/* Line 1806 of yacc.c  */
     7575#line 1947 "parser.yy"
    76927576    {
    76937577                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    76967580    break;
    76977581
    7698   case 506:
    7699 
    7700 /* Line 1806 of yacc.c  */
    7701 #line 1929 "parser.yy"
     7582  case 511:
     7583
     7584/* Line 1806 of yacc.c  */
     7585#line 1952 "parser.yy"
    77027586    {
    77037587                        typedefTable.leaveTrait();
     
    77077591    break;
    77087592
    7709   case 508:
    7710 
    7711 /* Line 1806 of yacc.c  */
    7712 #line 1939 "parser.yy"
     7593  case 513:
     7594
     7595/* Line 1806 of yacc.c  */
     7596#line 1962 "parser.yy"
    77137597    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77147598    break;
    77157599
    7716   case 511:
    7717 
    7718 /* Line 1806 of yacc.c  */
    7719 #line 1949 "parser.yy"
     7600  case 516:
     7601
     7602/* Line 1806 of yacc.c  */
     7603#line 1972 "parser.yy"
    77207604    {
    77217605                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77247608    break;
    77257609
    7726   case 512:
    7727 
    7728 /* Line 1806 of yacc.c  */
    7729 #line 1954 "parser.yy"
     7610  case 517:
     7611
     7612/* Line 1806 of yacc.c  */
     7613#line 1977 "parser.yy"
    77307614    {
    77317615                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77347618    break;
    77357619
    7736   case 513:
    7737 
    7738 /* Line 1806 of yacc.c  */
    7739 #line 1959 "parser.yy"
     7620  case 518:
     7621
     7622/* Line 1806 of yacc.c  */
     7623#line 1982 "parser.yy"
    77407624    {
    77417625                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77447628    break;
    77457629
    7746   case 514:
    7747 
    7748 /* Line 1806 of yacc.c  */
    7749 #line 1967 "parser.yy"
     7630  case 519:
     7631
     7632/* Line 1806 of yacc.c  */
     7633#line 1990 "parser.yy"
    77507634    {
    77517635                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77547638    break;
    77557639
    7756   case 515:
    7757 
    7758 /* Line 1806 of yacc.c  */
    7759 #line 1972 "parser.yy"
     7640  case 520:
     7641
     7642/* Line 1806 of yacc.c  */
     7643#line 1995 "parser.yy"
    77607644    {
    77617645                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77647648    break;
    77657649
    7766   case 516:
    7767 
    7768 /* Line 1806 of yacc.c  */
    7769 #line 1982 "parser.yy"
     7650  case 521:
     7651
     7652/* Line 1806 of yacc.c  */
     7653#line 2005 "parser.yy"
    77707654    {}
    77717655    break;
    77727656
    7773   case 517:
    7774 
    7775 /* Line 1806 of yacc.c  */
    7776 #line 1984 "parser.yy"
     7657  case 522:
     7658
     7659/* Line 1806 of yacc.c  */
     7660#line 2007 "parser.yy"
    77777661    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
    77787662    break;
    77797663
    7780   case 519:
    7781 
    7782 /* Line 1806 of yacc.c  */
    7783 #line 1990 "parser.yy"
     7664  case 524:
     7665
     7666/* Line 1806 of yacc.c  */
     7667#line 2013 "parser.yy"
    77847668    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    77857669    break;
    77867670
    7787   case 520:
    7788 
    7789 /* Line 1806 of yacc.c  */
    7790 #line 1995 "parser.yy"
     7671  case 525:
     7672
     7673/* Line 1806 of yacc.c  */
     7674#line 2018 "parser.yy"
    77917675    { (yyval.decl) = 0; }
    77927676    break;
    77937677
    7794   case 524:
    7795 
    7796 /* Line 1806 of yacc.c  */
    7797 #line 2003 "parser.yy"
     7678  case 529:
     7679
     7680/* Line 1806 of yacc.c  */
     7681#line 2026 "parser.yy"
    77987682    {}
    77997683    break;
    78007684
    7801   case 525:
    7802 
    7803 /* Line 1806 of yacc.c  */
    7804 #line 2005 "parser.yy"
     7685  case 530:
     7686
     7687/* Line 1806 of yacc.c  */
     7688#line 2028 "parser.yy"
    78057689    {
    78067690                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    7807                         linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) );
     7691                        linkage = LinkageSpec::linkageCheck( (yyvsp[(2) - (2)].tok) );
    78087692                }
    78097693    break;
    78107694
    7811   case 526:
    7812 
    7813 /* Line 1806 of yacc.c  */
    7814 #line 2010 "parser.yy"
     7695  case 531:
     7696
     7697/* Line 1806 of yacc.c  */
     7698#line 2033 "parser.yy"
    78157699    {
    78167700                        linkage = linkageStack.top();
     
    78207704    break;
    78217705
    7822   case 527:
    7823 
    7824 /* Line 1806 of yacc.c  */
    7825 #line 2016 "parser.yy"
     7706  case 532:
     7707
     7708/* Line 1806 of yacc.c  */
     7709#line 2039 "parser.yy"
    78267710    {   // mark all fields in list
    78277711                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    78317715    break;
    78327716
    7833   case 529:
    7834 
    7835 /* Line 1806 of yacc.c  */
    7836 #line 2031 "parser.yy"
     7717  case 534:
     7718
     7719/* Line 1806 of yacc.c  */
     7720#line 2054 "parser.yy"
    78377721    {
    78387722                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78427726    break;
    78437727
    7844   case 530:
    7845 
    7846 /* Line 1806 of yacc.c  */
    7847 #line 2037 "parser.yy"
     7728  case 535:
     7729
     7730/* Line 1806 of yacc.c  */
     7731#line 2060 "parser.yy"
    78487732    {
    78497733                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78537737    break;
    78547738
    7855   case 531:
    7856 
    7857 /* Line 1806 of yacc.c  */
    7858 #line 2046 "parser.yy"
     7739  case 536:
     7740
     7741/* Line 1806 of yacc.c  */
     7742#line 2069 "parser.yy"
    78597743    {
    78607744                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78647748    break;
    78657749
    7866   case 532:
    7867 
    7868 /* Line 1806 of yacc.c  */
    7869 #line 2052 "parser.yy"
     7750  case 537:
     7751
     7752/* Line 1806 of yacc.c  */
     7753#line 2075 "parser.yy"
    78707754    {
    78717755                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78757759    break;
    78767760
    7877   case 533:
    7878 
    7879 /* Line 1806 of yacc.c  */
    7880 #line 2058 "parser.yy"
     7761  case 538:
     7762
     7763/* Line 1806 of yacc.c  */
     7764#line 2081 "parser.yy"
    78817765    {
    78827766                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78867770    break;
    78877771
    7888   case 534:
    7889 
    7890 /* Line 1806 of yacc.c  */
    7891 #line 2064 "parser.yy"
     7772  case 539:
     7773
     7774/* Line 1806 of yacc.c  */
     7775#line 2087 "parser.yy"
    78927776    {
    78937777                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78977781    break;
    78987782
    7899   case 535:
    7900 
    7901 /* Line 1806 of yacc.c  */
    7902 #line 2070 "parser.yy"
     7783  case 540:
     7784
     7785/* Line 1806 of yacc.c  */
     7786#line 2093 "parser.yy"
    79037787    {
    79047788                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79087792    break;
    79097793
    7910   case 536:
    7911 
    7912 /* Line 1806 of yacc.c  */
    7913 #line 2078 "parser.yy"
     7794  case 541:
     7795
     7796/* Line 1806 of yacc.c  */
     7797#line 2101 "parser.yy"
    79147798    {
    79157799                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79197803    break;
    79207804
    7921   case 537:
    7922 
    7923 /* Line 1806 of yacc.c  */
    7924 #line 2084 "parser.yy"
     7805  case 542:
     7806
     7807/* Line 1806 of yacc.c  */
     7808#line 2107 "parser.yy"
    79257809    {
    79267810                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79307814    break;
    79317815
    7932   case 538:
    7933 
    7934 /* Line 1806 of yacc.c  */
    7935 #line 2092 "parser.yy"
     7816  case 543:
     7817
     7818/* Line 1806 of yacc.c  */
     7819#line 2115 "parser.yy"
    79367820    {
    79377821                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79417825    break;
    79427826
    7943   case 539:
    7944 
    7945 /* Line 1806 of yacc.c  */
    7946 #line 2098 "parser.yy"
     7827  case 544:
     7828
     7829/* Line 1806 of yacc.c  */
     7830#line 2121 "parser.yy"
    79477831    {
    79487832                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79527836    break;
    79537837
    7954   case 543:
    7955 
    7956 /* Line 1806 of yacc.c  */
    7957 #line 2113 "parser.yy"
     7838  case 548:
     7839
     7840/* Line 1806 of yacc.c  */
     7841#line 2136 "parser.yy"
    79587842    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    79597843    break;
    79607844
    7961   case 545:
    7962 
    7963 /* Line 1806 of yacc.c  */
    7964 #line 2118 "parser.yy"
     7845  case 550:
     7846
     7847/* Line 1806 of yacc.c  */
     7848#line 2141 "parser.yy"
    79657849    { delete (yyvsp[(3) - (5)].str); }
    79667850    break;
    79677851
    7968   case 546:
    7969 
    7970 /* Line 1806 of yacc.c  */
    7971 #line 2123 "parser.yy"
     7852  case 551:
     7853
     7854/* Line 1806 of yacc.c  */
     7855#line 2146 "parser.yy"
    79727856    { (yyval.decl) = 0; }
    79737857    break;
    79747858
    7975   case 549:
    7976 
    7977 /* Line 1806 of yacc.c  */
    7978 #line 2130 "parser.yy"
     7859  case 554:
     7860
     7861/* Line 1806 of yacc.c  */
     7862#line 2153 "parser.yy"
    79797863    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    79807864    break;
    79817865
    7982   case 550:
    7983 
    7984 /* Line 1806 of yacc.c  */
    7985 #line 2136 "parser.yy"
     7866  case 555:
     7867
     7868/* Line 1806 of yacc.c  */
     7869#line 2159 "parser.yy"
    79867870    { (yyval.decl) = 0; }
    79877871    break;
    79887872
    7989   case 555:
    7990 
    7991 /* Line 1806 of yacc.c  */
    7992 #line 2147 "parser.yy"
     7873  case 560:
     7874
     7875/* Line 1806 of yacc.c  */
     7876#line 2170 "parser.yy"
    79937877    { delete (yyvsp[(3) - (4)].en); }
    79947878    break;
    79957879
    7996   case 556:
    7997 
    7998 /* Line 1806 of yacc.c  */
    7999 #line 2151 "parser.yy"
     7880  case 561:
     7881
     7882/* Line 1806 of yacc.c  */
     7883#line 2174 "parser.yy"
    80007884    { delete (yyvsp[(1) - (1)].tok); }
    80017885    break;
    80027886
    8003   case 557:
    8004 
    8005 /* Line 1806 of yacc.c  */
    8006 #line 2152 "parser.yy"
     7887  case 562:
     7888
     7889/* Line 1806 of yacc.c  */
     7890#line 2175 "parser.yy"
    80077891    { delete (yyvsp[(1) - (1)].decl); }
    80087892    break;
    80097893
    8010   case 558:
    8011 
    8012 /* Line 1806 of yacc.c  */
    8013 #line 2153 "parser.yy"
     7894  case 563:
     7895
     7896/* Line 1806 of yacc.c  */
     7897#line 2176 "parser.yy"
    80147898    { delete (yyvsp[(1) - (1)].decl); }
    80157899    break;
    80167900
    8017   case 559:
    8018 
    8019 /* Line 1806 of yacc.c  */
    8020 #line 2154 "parser.yy"
     7901  case 564:
     7902
     7903/* Line 1806 of yacc.c  */
     7904#line 2177 "parser.yy"
    80217905    { delete (yyvsp[(1) - (1)].decl); }
    80227906    break;
    80237907
    8024   case 560:
    8025 
    8026 /* Line 1806 of yacc.c  */
    8027 #line 2189 "parser.yy"
     7908  case 565:
     7909
     7910/* Line 1806 of yacc.c  */
     7911#line 2212 "parser.yy"
    80287912    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80297913    break;
    80307914
    8031   case 562:
    8032 
    8033 /* Line 1806 of yacc.c  */
    8034 #line 2192 "parser.yy"
     7915  case 567:
     7916
     7917/* Line 1806 of yacc.c  */
     7918#line 2215 "parser.yy"
    80357919    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80367920    break;
    80377921
    8038   case 563:
    8039 
    8040 /* Line 1806 of yacc.c  */
    8041 #line 2194 "parser.yy"
     7922  case 568:
     7923
     7924/* Line 1806 of yacc.c  */
     7925#line 2217 "parser.yy"
    80427926    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80437927    break;
    80447928
    8045   case 564:
    8046 
    8047 /* Line 1806 of yacc.c  */
    8048 #line 2199 "parser.yy"
     7929  case 569:
     7930
     7931/* Line 1806 of yacc.c  */
     7932#line 2222 "parser.yy"
    80497933    {
    80507934                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80537937    break;
    80547938
    8055   case 565:
    8056 
    8057 /* Line 1806 of yacc.c  */
    8058 #line 2204 "parser.yy"
     7939  case 570:
     7940
     7941/* Line 1806 of yacc.c  */
     7942#line 2227 "parser.yy"
    80597943    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80607944    break;
    80617945
    8062   case 566:
    8063 
    8064 /* Line 1806 of yacc.c  */
    8065 #line 2209 "parser.yy"
     7946  case 571:
     7947
     7948/* Line 1806 of yacc.c  */
     7949#line 2232 "parser.yy"
    80667950    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80677951    break;
    80687952
    8069   case 567:
    8070 
    8071 /* Line 1806 of yacc.c  */
    8072 #line 2211 "parser.yy"
     7953  case 572:
     7954
     7955/* Line 1806 of yacc.c  */
     7956#line 2234 "parser.yy"
    80737957    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80747958    break;
    80757959
    8076   case 568:
    8077 
    8078 /* Line 1806 of yacc.c  */
    8079 #line 2213 "parser.yy"
     7960  case 573:
     7961
     7962/* Line 1806 of yacc.c  */
     7963#line 2236 "parser.yy"
    80807964    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80817965    break;
    80827966
    8083   case 569:
    8084 
    8085 /* Line 1806 of yacc.c  */
    8086 #line 2218 "parser.yy"
     7967  case 574:
     7968
     7969/* Line 1806 of yacc.c  */
     7970#line 2241 "parser.yy"
    80877971    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    80887972    break;
    80897973
    8090   case 570:
    8091 
    8092 /* Line 1806 of yacc.c  */
    8093 #line 2220 "parser.yy"
     7974  case 575:
     7975
     7976/* Line 1806 of yacc.c  */
     7977#line 2243 "parser.yy"
    80947978    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80957979    break;
    80967980
    8097   case 571:
    8098 
    8099 /* Line 1806 of yacc.c  */
    8100 #line 2222 "parser.yy"
     7981  case 576:
     7982
     7983/* Line 1806 of yacc.c  */
     7984#line 2245 "parser.yy"
    81017985    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81027986    break;
    81037987
    8104   case 572:
    8105 
    8106 /* Line 1806 of yacc.c  */
    8107 #line 2224 "parser.yy"
     7988  case 577:
     7989
     7990/* Line 1806 of yacc.c  */
     7991#line 2247 "parser.yy"
    81087992    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81097993    break;
    81107994
    8111   case 573:
    8112 
    8113 /* Line 1806 of yacc.c  */
    8114 #line 2229 "parser.yy"
     7995  case 578:
     7996
     7997/* Line 1806 of yacc.c  */
     7998#line 2252 "parser.yy"
    81157999    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81168000    break;
    81178001
    8118   case 574:
    8119 
    8120 /* Line 1806 of yacc.c  */
    8121 #line 2231 "parser.yy"
     8002  case 579:
     8003
     8004/* Line 1806 of yacc.c  */
     8005#line 2254 "parser.yy"
    81228006    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81238007    break;
    81248008
    8125   case 575:
    8126 
    8127 /* Line 1806 of yacc.c  */
    8128 #line 2240 "parser.yy"
     8009  case 580:
     8010
     8011/* Line 1806 of yacc.c  */
     8012#line 2263 "parser.yy"
    81298013    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81308014    break;
    81318015
    8132   case 577:
    8133 
    8134 /* Line 1806 of yacc.c  */
    8135 #line 2243 "parser.yy"
     8016  case 582:
     8017
     8018/* Line 1806 of yacc.c  */
     8019#line 2266 "parser.yy"
    81368020    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81378021    break;
    81388022
    8139   case 578:
    8140 
    8141 /* Line 1806 of yacc.c  */
    8142 #line 2248 "parser.yy"
     8023  case 583:
     8024
     8025/* Line 1806 of yacc.c  */
     8026#line 2271 "parser.yy"
    81438027    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81448028    break;
    81458029
    8146   case 579:
    8147 
    8148 /* Line 1806 of yacc.c  */
    8149 #line 2250 "parser.yy"
     8030  case 584:
     8031
     8032/* Line 1806 of yacc.c  */
     8033#line 2273 "parser.yy"
    81508034    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81518035    break;
    81528036
    8153   case 580:
    8154 
    8155 /* Line 1806 of yacc.c  */
    8156 #line 2252 "parser.yy"
     8037  case 585:
     8038
     8039/* Line 1806 of yacc.c  */
     8040#line 2275 "parser.yy"
    81578041    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81588042    break;
    81598043
    8160   case 581:
    8161 
    8162 /* Line 1806 of yacc.c  */
    8163 #line 2257 "parser.yy"
     8044  case 586:
     8045
     8046/* Line 1806 of yacc.c  */
     8047#line 2280 "parser.yy"
    81648048    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81658049    break;
    81668050
    8167   case 582:
    8168 
    8169 /* Line 1806 of yacc.c  */
    8170 #line 2259 "parser.yy"
     8051  case 587:
     8052
     8053/* Line 1806 of yacc.c  */
     8054#line 2282 "parser.yy"
    81718055    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81728056    break;
    81738057
    8174   case 583:
    8175 
    8176 /* Line 1806 of yacc.c  */
    8177 #line 2261 "parser.yy"
     8058  case 588:
     8059
     8060/* Line 1806 of yacc.c  */
     8061#line 2284 "parser.yy"
    81788062    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81798063    break;
    81808064
    8181   case 584:
    8182 
    8183 /* Line 1806 of yacc.c  */
    8184 #line 2266 "parser.yy"
     8065  case 589:
     8066
     8067/* Line 1806 of yacc.c  */
     8068#line 2289 "parser.yy"
    81858069    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81868070    break;
    81878071
    8188   case 585:
    8189 
    8190 /* Line 1806 of yacc.c  */
    8191 #line 2268 "parser.yy"
     8072  case 590:
     8073
     8074/* Line 1806 of yacc.c  */
     8075#line 2291 "parser.yy"
    81928076    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81938077    break;
    81948078
    8195   case 586:
    8196 
    8197 /* Line 1806 of yacc.c  */
    8198 #line 2270 "parser.yy"
     8079  case 591:
     8080
     8081/* Line 1806 of yacc.c  */
     8082#line 2293 "parser.yy"
    81998083    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82008084    break;
    82018085
    8202   case 590:
    8203 
    8204 /* Line 1806 of yacc.c  */
    8205 #line 2285 "parser.yy"
     8086  case 595:
     8087
     8088/* Line 1806 of yacc.c  */
     8089#line 2308 "parser.yy"
    82068090    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    82078091    break;
    82088092
    8209   case 591:
    8210 
    8211 /* Line 1806 of yacc.c  */
    8212 #line 2287 "parser.yy"
     8093  case 596:
     8094
     8095/* Line 1806 of yacc.c  */
     8096#line 2310 "parser.yy"
    82138097    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    82148098    break;
    82158099
    8216   case 592:
    8217 
    8218 /* Line 1806 of yacc.c  */
    8219 #line 2289 "parser.yy"
     8100  case 597:
     8101
     8102/* Line 1806 of yacc.c  */
     8103#line 2312 "parser.yy"
    82208104    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82218105    break;
    82228106
    8223   case 593:
    8224 
    8225 /* Line 1806 of yacc.c  */
    8226 #line 2294 "parser.yy"
     8107  case 598:
     8108
     8109/* Line 1806 of yacc.c  */
     8110#line 2317 "parser.yy"
    82278111    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82288112    break;
    82298113
    8230   case 594:
    8231 
    8232 /* Line 1806 of yacc.c  */
    8233 #line 2296 "parser.yy"
     8114  case 599:
     8115
     8116/* Line 1806 of yacc.c  */
     8117#line 2319 "parser.yy"
    82348118    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82358119    break;
    82368120
    8237   case 595:
    8238 
    8239 /* Line 1806 of yacc.c  */
    8240 #line 2298 "parser.yy"
     8121  case 600:
     8122
     8123/* Line 1806 of yacc.c  */
     8124#line 2321 "parser.yy"
    82418125    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82428126    break;
    82438127
    8244   case 596:
    8245 
    8246 /* Line 1806 of yacc.c  */
    8247 #line 2303 "parser.yy"
     8128  case 601:
     8129
     8130/* Line 1806 of yacc.c  */
     8131#line 2326 "parser.yy"
    82488132    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82498133    break;
    82508134
    8251   case 597:
    8252 
    8253 /* Line 1806 of yacc.c  */
    8254 #line 2305 "parser.yy"
     8135  case 602:
     8136
     8137/* Line 1806 of yacc.c  */
     8138#line 2328 "parser.yy"
    82558139    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82568140    break;
    82578141
    8258   case 598:
    8259 
    8260 /* Line 1806 of yacc.c  */
    8261 #line 2307 "parser.yy"
     8142  case 603:
     8143
     8144/* Line 1806 of yacc.c  */
     8145#line 2330 "parser.yy"
    82628146    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82638147    break;
    82648148
    8265   case 599:
    8266 
    8267 /* Line 1806 of yacc.c  */
    8268 #line 2322 "parser.yy"
     8149  case 604:
     8150
     8151/* Line 1806 of yacc.c  */
     8152#line 2345 "parser.yy"
    82698153    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82708154    break;
    82718155
    8272   case 601:
    8273 
    8274 /* Line 1806 of yacc.c  */
    8275 #line 2325 "parser.yy"
     8156  case 606:
     8157
     8158/* Line 1806 of yacc.c  */
     8159#line 2348 "parser.yy"
    82768160    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82778161    break;
    82788162
    8279   case 602:
    8280 
    8281 /* Line 1806 of yacc.c  */
    8282 #line 2327 "parser.yy"
     8163  case 607:
     8164
     8165/* Line 1806 of yacc.c  */
     8166#line 2350 "parser.yy"
    82838167    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82848168    break;
    82858169
    8286   case 604:
    8287 
    8288 /* Line 1806 of yacc.c  */
    8289 #line 2333 "parser.yy"
     8170  case 609:
     8171
     8172/* Line 1806 of yacc.c  */
     8173#line 2356 "parser.yy"
    82908174    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82918175    break;
    82928176
    8293   case 605:
    8294 
    8295 /* Line 1806 of yacc.c  */
    8296 #line 2338 "parser.yy"
     8177  case 610:
     8178
     8179/* Line 1806 of yacc.c  */
     8180#line 2361 "parser.yy"
    82978181    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82988182    break;
    82998183
    8300   case 606:
    8301 
    8302 /* Line 1806 of yacc.c  */
    8303 #line 2340 "parser.yy"
     8184  case 611:
     8185
     8186/* Line 1806 of yacc.c  */
     8187#line 2363 "parser.yy"
    83048188    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83058189    break;
    83068190
    8307   case 607:
    8308 
    8309 /* Line 1806 of yacc.c  */
    8310 #line 2342 "parser.yy"
     8191  case 612:
     8192
     8193/* Line 1806 of yacc.c  */
     8194#line 2365 "parser.yy"
    83118195    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83128196    break;
    83138197
    8314   case 608:
    8315 
    8316 /* Line 1806 of yacc.c  */
    8317 #line 2347 "parser.yy"
     8198  case 613:
     8199
     8200/* Line 1806 of yacc.c  */
     8201#line 2370 "parser.yy"
    83188202    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83198203    break;
    83208204
    8321   case 609:
    8322 
    8323 /* Line 1806 of yacc.c  */
    8324 #line 2349 "parser.yy"
     8205  case 614:
     8206
     8207/* Line 1806 of yacc.c  */
     8208#line 2372 "parser.yy"
    83258209    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83268210    break;
    83278211
    8328   case 610:
    8329 
    8330 /* Line 1806 of yacc.c  */
    8331 #line 2351 "parser.yy"
     8212  case 615:
     8213
     8214/* Line 1806 of yacc.c  */
     8215#line 2374 "parser.yy"
    83328216    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83338217    break;
    83348218
    8335   case 611:
    8336 
    8337 /* Line 1806 of yacc.c  */
    8338 #line 2353 "parser.yy"
     8219  case 616:
     8220
     8221/* Line 1806 of yacc.c  */
     8222#line 2376 "parser.yy"
    83398223    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83408224    break;
    83418225
    8342   case 612:
    8343 
    8344 /* Line 1806 of yacc.c  */
    8345 #line 2358 "parser.yy"
     8226  case 617:
     8227
     8228/* Line 1806 of yacc.c  */
     8229#line 2381 "parser.yy"
    83468230    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83478231    break;
    83488232
    8349   case 613:
    8350 
    8351 /* Line 1806 of yacc.c  */
    8352 #line 2360 "parser.yy"
     8233  case 618:
     8234
     8235/* Line 1806 of yacc.c  */
     8236#line 2383 "parser.yy"
    83538237    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83548238    break;
    83558239
    8356   case 614:
    8357 
    8358 /* Line 1806 of yacc.c  */
    8359 #line 2362 "parser.yy"
     8240  case 619:
     8241
     8242/* Line 1806 of yacc.c  */
     8243#line 2385 "parser.yy"
    83608244    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83618245    break;
    83628246
    8363   case 615:
    8364 
    8365 /* Line 1806 of yacc.c  */
    8366 #line 2372 "parser.yy"
     8247  case 620:
     8248
     8249/* Line 1806 of yacc.c  */
     8250#line 2395 "parser.yy"
    83678251    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83688252    break;
    83698253
    8370   case 617:
    8371 
    8372 /* Line 1806 of yacc.c  */
    8373 #line 2375 "parser.yy"
     8254  case 622:
     8255
     8256/* Line 1806 of yacc.c  */
     8257#line 2398 "parser.yy"
    83748258    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83758259    break;
    83768260
    8377   case 618:
    8378 
    8379 /* Line 1806 of yacc.c  */
    8380 #line 2377 "parser.yy"
     8261  case 623:
     8262
     8263/* Line 1806 of yacc.c  */
     8264#line 2400 "parser.yy"
    83818265    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83828266    break;
    83838267
    8384   case 619:
    8385 
    8386 /* Line 1806 of yacc.c  */
    8387 #line 2382 "parser.yy"
     8268  case 624:
     8269
     8270/* Line 1806 of yacc.c  */
     8271#line 2405 "parser.yy"
    83888272    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83898273    break;
    83908274
    8391   case 620:
    8392 
    8393 /* Line 1806 of yacc.c  */
    8394 #line 2384 "parser.yy"
     8275  case 625:
     8276
     8277/* Line 1806 of yacc.c  */
     8278#line 2407 "parser.yy"
    83958279    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83968280    break;
    83978281
    8398   case 621:
    8399 
    8400 /* Line 1806 of yacc.c  */
    8401 #line 2386 "parser.yy"
     8282  case 626:
     8283
     8284/* Line 1806 of yacc.c  */
     8285#line 2409 "parser.yy"
    84028286    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84038287    break;
    84048288
    8405   case 622:
    8406 
    8407 /* Line 1806 of yacc.c  */
    8408 #line 2391 "parser.yy"
     8289  case 627:
     8290
     8291/* Line 1806 of yacc.c  */
     8292#line 2414 "parser.yy"
    84098293    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84108294    break;
    84118295
    8412   case 623:
    8413 
    8414 /* Line 1806 of yacc.c  */
    8415 #line 2393 "parser.yy"
     8296  case 628:
     8297
     8298/* Line 1806 of yacc.c  */
     8299#line 2416 "parser.yy"
    84168300    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84178301    break;
    84188302
    8419   case 624:
    8420 
    8421 /* Line 1806 of yacc.c  */
    8422 #line 2395 "parser.yy"
     8303  case 629:
     8304
     8305/* Line 1806 of yacc.c  */
     8306#line 2418 "parser.yy"
    84238307    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84248308    break;
    84258309
    8426   case 625:
    8427 
    8428 /* Line 1806 of yacc.c  */
    8429 #line 2397 "parser.yy"
     8310  case 630:
     8311
     8312/* Line 1806 of yacc.c  */
     8313#line 2420 "parser.yy"
    84308314    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84318315    break;
    84328316
    8433   case 626:
    8434 
    8435 /* Line 1806 of yacc.c  */
    8436 #line 2402 "parser.yy"
     8317  case 631:
     8318
     8319/* Line 1806 of yacc.c  */
     8320#line 2425 "parser.yy"
    84378321    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84388322    break;
    84398323
    8440   case 627:
    8441 
    8442 /* Line 1806 of yacc.c  */
    8443 #line 2404 "parser.yy"
     8324  case 632:
     8325
     8326/* Line 1806 of yacc.c  */
     8327#line 2427 "parser.yy"
    84448328    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84458329    break;
    84468330
    8447   case 628:
    8448 
    8449 /* Line 1806 of yacc.c  */
    8450 #line 2406 "parser.yy"
     8331  case 633:
     8332
     8333/* Line 1806 of yacc.c  */
     8334#line 2429 "parser.yy"
    84518335    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84528336    break;
    84538337
    8454   case 629:
    8455 
    8456 /* Line 1806 of yacc.c  */
    8457 #line 2437 "parser.yy"
     8338  case 634:
     8339
     8340/* Line 1806 of yacc.c  */
     8341#line 2460 "parser.yy"
    84588342    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84598343    break;
    84608344
    8461   case 631:
    8462 
    8463 /* Line 1806 of yacc.c  */
    8464 #line 2440 "parser.yy"
     8345  case 636:
     8346
     8347/* Line 1806 of yacc.c  */
     8348#line 2463 "parser.yy"
    84658349    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84668350    break;
    84678351
    8468   case 632:
    8469 
    8470 /* Line 1806 of yacc.c  */
    8471 #line 2442 "parser.yy"
     8352  case 637:
     8353
     8354/* Line 1806 of yacc.c  */
     8355#line 2465 "parser.yy"
    84728356    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84738357    break;
    84748358
    8475   case 633:
    8476 
    8477 /* Line 1806 of yacc.c  */
    8478 #line 2447 "parser.yy"
     8359  case 638:
     8360
     8361/* Line 1806 of yacc.c  */
     8362#line 2470 "parser.yy"
    84798363    {
    84808364                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84838367    break;
    84848368
    8485   case 634:
    8486 
    8487 /* Line 1806 of yacc.c  */
    8488 #line 2452 "parser.yy"
     8369  case 639:
     8370
     8371/* Line 1806 of yacc.c  */
     8372#line 2475 "parser.yy"
    84898373    {
    84908374                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84938377    break;
    84948378
    8495   case 635:
    8496 
    8497 /* Line 1806 of yacc.c  */
    8498 #line 2460 "parser.yy"
     8379  case 640:
     8380
     8381/* Line 1806 of yacc.c  */
     8382#line 2483 "parser.yy"
    84998383    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85008384    break;
    85018385
    8502   case 636:
    8503 
    8504 /* Line 1806 of yacc.c  */
    8505 #line 2462 "parser.yy"
     8386  case 641:
     8387
     8388/* Line 1806 of yacc.c  */
     8389#line 2485 "parser.yy"
    85068390    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85078391    break;
    85088392
    8509   case 637:
    8510 
    8511 /* Line 1806 of yacc.c  */
    8512 #line 2464 "parser.yy"
     8393  case 642:
     8394
     8395/* Line 1806 of yacc.c  */
     8396#line 2487 "parser.yy"
    85138397    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85148398    break;
    85158399
    8516   case 638:
    8517 
    8518 /* Line 1806 of yacc.c  */
    8519 #line 2469 "parser.yy"
     8400  case 643:
     8401
     8402/* Line 1806 of yacc.c  */
     8403#line 2492 "parser.yy"
    85208404    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    85218405    break;
    85228406
    8523   case 639:
    8524 
    8525 /* Line 1806 of yacc.c  */
    8526 #line 2471 "parser.yy"
     8407  case 644:
     8408
     8409/* Line 1806 of yacc.c  */
     8410#line 2494 "parser.yy"
    85278411    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85288412    break;
    85298413
    8530   case 640:
    8531 
    8532 /* Line 1806 of yacc.c  */
    8533 #line 2476 "parser.yy"
     8414  case 645:
     8415
     8416/* Line 1806 of yacc.c  */
     8417#line 2499 "parser.yy"
    85348418    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    85358419    break;
    85368420
    8537   case 641:
    8538 
    8539 /* Line 1806 of yacc.c  */
    8540 #line 2478 "parser.yy"
     8421  case 646:
     8422
     8423/* Line 1806 of yacc.c  */
     8424#line 2501 "parser.yy"
    85418425    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85428426    break;
    85438427
    8544   case 643:
    8545 
    8546 /* Line 1806 of yacc.c  */
    8547 #line 2493 "parser.yy"
     8428  case 648:
     8429
     8430/* Line 1806 of yacc.c  */
     8431#line 2516 "parser.yy"
    85488432    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85498433    break;
    85508434
    8551   case 644:
    8552 
    8553 /* Line 1806 of yacc.c  */
    8554 #line 2495 "parser.yy"
     8435  case 649:
     8436
     8437/* Line 1806 of yacc.c  */
     8438#line 2518 "parser.yy"
    85558439    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85568440    break;
    85578441
    8558   case 645:
    8559 
    8560 /* Line 1806 of yacc.c  */
    8561 #line 2500 "parser.yy"
     8442  case 650:
     8443
     8444/* Line 1806 of yacc.c  */
     8445#line 2523 "parser.yy"
    85628446    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85638447    break;
    85648448
    8565   case 646:
    8566 
    8567 /* Line 1806 of yacc.c  */
    8568 #line 2502 "parser.yy"
     8449  case 651:
     8450
     8451/* Line 1806 of yacc.c  */
     8452#line 2525 "parser.yy"
    85698453    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85708454    break;
    85718455
    8572   case 647:
    8573 
    8574 /* Line 1806 of yacc.c  */
    8575 #line 2504 "parser.yy"
     8456  case 652:
     8457
     8458/* Line 1806 of yacc.c  */
     8459#line 2527 "parser.yy"
    85768460    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85778461    break;
    85788462
    8579   case 648:
    8580 
    8581 /* Line 1806 of yacc.c  */
    8582 #line 2506 "parser.yy"
     8463  case 653:
     8464
     8465/* Line 1806 of yacc.c  */
     8466#line 2529 "parser.yy"
    85838467    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85848468    break;
    85858469
    8586   case 649:
    8587 
    8588 /* Line 1806 of yacc.c  */
    8589 #line 2508 "parser.yy"
     8470  case 654:
     8471
     8472/* Line 1806 of yacc.c  */
     8473#line 2531 "parser.yy"
    85908474    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85918475    break;
    85928476
    8593   case 651:
    8594 
    8595 /* Line 1806 of yacc.c  */
    8596 #line 2514 "parser.yy"
     8477  case 656:
     8478
     8479/* Line 1806 of yacc.c  */
     8480#line 2537 "parser.yy"
    85978481    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85988482    break;
    85998483
    8600   case 652:
    8601 
    8602 /* Line 1806 of yacc.c  */
    8603 #line 2516 "parser.yy"
     8484  case 657:
     8485
     8486/* Line 1806 of yacc.c  */
     8487#line 2539 "parser.yy"
    86048488    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86058489    break;
    86068490
    8607   case 653:
    8608 
    8609 /* Line 1806 of yacc.c  */
    8610 #line 2518 "parser.yy"
     8491  case 658:
     8492
     8493/* Line 1806 of yacc.c  */
     8494#line 2541 "parser.yy"
    86118495    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86128496    break;
    86138497
    8614   case 654:
    8615 
    8616 /* Line 1806 of yacc.c  */
    8617 #line 2523 "parser.yy"
     8498  case 659:
     8499
     8500/* Line 1806 of yacc.c  */
     8501#line 2546 "parser.yy"
    86188502    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    86198503    break;
    86208504
    8621   case 655:
    8622 
    8623 /* Line 1806 of yacc.c  */
    8624 #line 2525 "parser.yy"
     8505  case 660:
     8506
     8507/* Line 1806 of yacc.c  */
     8508#line 2548 "parser.yy"
    86258509    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86268510    break;
    86278511
    8628   case 656:
    8629 
    8630 /* Line 1806 of yacc.c  */
    8631 #line 2527 "parser.yy"
     8512  case 661:
     8513
     8514/* Line 1806 of yacc.c  */
     8515#line 2550 "parser.yy"
    86328516    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86338517    break;
    86348518
    8635   case 657:
    8636 
    8637 /* Line 1806 of yacc.c  */
    8638 #line 2533 "parser.yy"
     8519  case 662:
     8520
     8521/* Line 1806 of yacc.c  */
     8522#line 2556 "parser.yy"
    86398523    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86408524    break;
    86418525
    8642   case 658:
    8643 
    8644 /* Line 1806 of yacc.c  */
    8645 #line 2535 "parser.yy"
     8526  case 663:
     8527
     8528/* Line 1806 of yacc.c  */
     8529#line 2558 "parser.yy"
    86468530    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    86478531    break;
    86488532
    8649   case 660:
    8650 
    8651 /* Line 1806 of yacc.c  */
    8652 #line 2541 "parser.yy"
     8533  case 665:
     8534
     8535/* Line 1806 of yacc.c  */
     8536#line 2564 "parser.yy"
    86538537    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    86548538    break;
    86558539
    8656   case 661:
    8657 
    8658 /* Line 1806 of yacc.c  */
    8659 #line 2543 "parser.yy"
     8540  case 666:
     8541
     8542/* Line 1806 of yacc.c  */
     8543#line 2566 "parser.yy"
    86608544    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    86618545    break;
    86628546
    8663   case 662:
    8664 
    8665 /* Line 1806 of yacc.c  */
    8666 #line 2545 "parser.yy"
     8547  case 667:
     8548
     8549/* Line 1806 of yacc.c  */
     8550#line 2568 "parser.yy"
    86678551    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    86688552    break;
    86698553
    8670   case 663:
    8671 
    8672 /* Line 1806 of yacc.c  */
    8673 #line 2547 "parser.yy"
     8554  case 668:
     8555
     8556/* Line 1806 of yacc.c  */
     8557#line 2570 "parser.yy"
    86748558    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    86758559    break;
    86768560
    8677   case 665:
    8678 
    8679 /* Line 1806 of yacc.c  */
    8680 #line 2562 "parser.yy"
     8561  case 670:
     8562
     8563/* Line 1806 of yacc.c  */
     8564#line 2585 "parser.yy"
    86818565    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86828566    break;
    86838567
    8684   case 666:
    8685 
    8686 /* Line 1806 of yacc.c  */
    8687 #line 2564 "parser.yy"
     8568  case 671:
     8569
     8570/* Line 1806 of yacc.c  */
     8571#line 2587 "parser.yy"
    86888572    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86898573    break;
    86908574
    8691   case 667:
    8692 
    8693 /* Line 1806 of yacc.c  */
    8694 #line 2569 "parser.yy"
     8575  case 672:
     8576
     8577/* Line 1806 of yacc.c  */
     8578#line 2592 "parser.yy"
    86958579    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    86968580    break;
    86978581
    8698   case 668:
    8699 
    8700 /* Line 1806 of yacc.c  */
    8701 #line 2571 "parser.yy"
     8582  case 673:
     8583
     8584/* Line 1806 of yacc.c  */
     8585#line 2594 "parser.yy"
    87028586    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87038587    break;
    87048588
    8705   case 669:
    8706 
    8707 /* Line 1806 of yacc.c  */
    8708 #line 2573 "parser.yy"
     8589  case 674:
     8590
     8591/* Line 1806 of yacc.c  */
     8592#line 2596 "parser.yy"
    87098593    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87108594    break;
    87118595
    8712   case 670:
    8713 
    8714 /* Line 1806 of yacc.c  */
    8715 #line 2575 "parser.yy"
     8596  case 675:
     8597
     8598/* Line 1806 of yacc.c  */
     8599#line 2598 "parser.yy"
    87168600    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87178601    break;
    87188602
    8719   case 671:
    8720 
    8721 /* Line 1806 of yacc.c  */
    8722 #line 2577 "parser.yy"
     8603  case 676:
     8604
     8605/* Line 1806 of yacc.c  */
     8606#line 2600 "parser.yy"
    87238607    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87248608    break;
    87258609
    8726   case 673:
    8727 
    8728 /* Line 1806 of yacc.c  */
    8729 #line 2583 "parser.yy"
     8610  case 678:
     8611
     8612/* Line 1806 of yacc.c  */
     8613#line 2606 "parser.yy"
    87308614    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87318615    break;
    87328616
    8733   case 674:
    8734 
    8735 /* Line 1806 of yacc.c  */
    8736 #line 2585 "parser.yy"
     8617  case 679:
     8618
     8619/* Line 1806 of yacc.c  */
     8620#line 2608 "parser.yy"
    87378621    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87388622    break;
    87398623
    8740   case 675:
    8741 
    8742 /* Line 1806 of yacc.c  */
    8743 #line 2587 "parser.yy"
     8624  case 680:
     8625
     8626/* Line 1806 of yacc.c  */
     8627#line 2610 "parser.yy"
    87448628    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87458629    break;
    87468630
    8747   case 676:
    8748 
    8749 /* Line 1806 of yacc.c  */
    8750 #line 2592 "parser.yy"
     8631  case 681:
     8632
     8633/* Line 1806 of yacc.c  */
     8634#line 2615 "parser.yy"
    87518635    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    87528636    break;
    87538637
    8754   case 677:
    8755 
    8756 /* Line 1806 of yacc.c  */
    8757 #line 2594 "parser.yy"
     8638  case 682:
     8639
     8640/* Line 1806 of yacc.c  */
     8641#line 2617 "parser.yy"
    87588642    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87598643    break;
    87608644
    8761   case 678:
    8762 
    8763 /* Line 1806 of yacc.c  */
    8764 #line 2596 "parser.yy"
     8645  case 683:
     8646
     8647/* Line 1806 of yacc.c  */
     8648#line 2619 "parser.yy"
    87658649    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87668650    break;
    87678651
    8768   case 680:
    8769 
    8770 /* Line 1806 of yacc.c  */
    8771 #line 2603 "parser.yy"
     8652  case 685:
     8653
     8654/* Line 1806 of yacc.c  */
     8655#line 2626 "parser.yy"
    87728656    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87738657    break;
    87748658
    8775   case 682:
    8776 
    8777 /* Line 1806 of yacc.c  */
    8778 #line 2614 "parser.yy"
     8659  case 687:
     8660
     8661/* Line 1806 of yacc.c  */
     8662#line 2637 "parser.yy"
    87798663    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    87808664    break;
    87818665
    8782   case 683:
    8783 
    8784 /* Line 1806 of yacc.c  */
    8785 #line 2617 "parser.yy"
     8666  case 688:
     8667
     8668/* Line 1806 of yacc.c  */
     8669#line 2640 "parser.yy"
    87868670    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    87878671    break;
    87888672
    8789   case 684:
    8790 
    8791 /* Line 1806 of yacc.c  */
    8792 #line 2619 "parser.yy"
     8673  case 689:
     8674
     8675/* Line 1806 of yacc.c  */
     8676#line 2642 "parser.yy"
    87938677    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    87948678    break;
    87958679
    8796   case 685:
    8797 
    8798 /* Line 1806 of yacc.c  */
    8799 #line 2622 "parser.yy"
     8680  case 690:
     8681
     8682/* Line 1806 of yacc.c  */
     8683#line 2645 "parser.yy"
    88008684    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88018685    break;
    88028686
    8803   case 686:
    8804 
    8805 /* Line 1806 of yacc.c  */
    8806 #line 2624 "parser.yy"
     8687  case 691:
     8688
     8689/* Line 1806 of yacc.c  */
     8690#line 2647 "parser.yy"
    88078691    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    88088692    break;
    88098693
    8810   case 687:
    8811 
    8812 /* Line 1806 of yacc.c  */
    8813 #line 2626 "parser.yy"
     8694  case 692:
     8695
     8696/* Line 1806 of yacc.c  */
     8697#line 2649 "parser.yy"
    88148698    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    88158699    break;
    88168700
    8817   case 689:
    8818 
    8819 /* Line 1806 of yacc.c  */
    8820 #line 2640 "parser.yy"
     8701  case 694:
     8702
     8703/* Line 1806 of yacc.c  */
     8704#line 2663 "parser.yy"
    88218705    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88228706    break;
    88238707
    8824   case 690:
    8825 
    8826 /* Line 1806 of yacc.c  */
    8827 #line 2642 "parser.yy"
     8708  case 695:
     8709
     8710/* Line 1806 of yacc.c  */
     8711#line 2665 "parser.yy"
    88288712    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88298713    break;
    88308714
    8831   case 691:
    8832 
    8833 /* Line 1806 of yacc.c  */
    8834 #line 2647 "parser.yy"
     8715  case 696:
     8716
     8717/* Line 1806 of yacc.c  */
     8718#line 2670 "parser.yy"
    88358719    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    88368720    break;
    88378721
    8838   case 692:
    8839 
    8840 /* Line 1806 of yacc.c  */
    8841 #line 2649 "parser.yy"
     8722  case 697:
     8723
     8724/* Line 1806 of yacc.c  */
     8725#line 2672 "parser.yy"
    88428726    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    88438727    break;
    88448728
    8845   case 693:
    8846 
    8847 /* Line 1806 of yacc.c  */
    8848 #line 2651 "parser.yy"
     8729  case 698:
     8730
     8731/* Line 1806 of yacc.c  */
     8732#line 2674 "parser.yy"
    88498733    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    88508734    break;
    88518735
    8852   case 694:
    8853 
    8854 /* Line 1806 of yacc.c  */
    8855 #line 2653 "parser.yy"
     8736  case 699:
     8737
     8738/* Line 1806 of yacc.c  */
     8739#line 2676 "parser.yy"
    88568740    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    88578741    break;
    88588742
    8859   case 695:
    8860 
    8861 /* Line 1806 of yacc.c  */
    8862 #line 2655 "parser.yy"
     8743  case 700:
     8744
     8745/* Line 1806 of yacc.c  */
     8746#line 2678 "parser.yy"
    88638747    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88648748    break;
    88658749
    8866   case 697:
    8867 
    8868 /* Line 1806 of yacc.c  */
    8869 #line 2661 "parser.yy"
     8750  case 702:
     8751
     8752/* Line 1806 of yacc.c  */
     8753#line 2684 "parser.yy"
    88708754    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88718755    break;
    88728756
    8873   case 698:
    8874 
    8875 /* Line 1806 of yacc.c  */
    8876 #line 2663 "parser.yy"
     8757  case 703:
     8758
     8759/* Line 1806 of yacc.c  */
     8760#line 2686 "parser.yy"
    88778761    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88788762    break;
    88798763
    8880   case 699:
    8881 
    8882 /* Line 1806 of yacc.c  */
    8883 #line 2665 "parser.yy"
     8764  case 704:
     8765
     8766/* Line 1806 of yacc.c  */
     8767#line 2688 "parser.yy"
    88848768    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88858769    break;
    88868770
    8887   case 700:
    8888 
    8889 /* Line 1806 of yacc.c  */
    8890 #line 2670 "parser.yy"
     8771  case 705:
     8772
     8773/* Line 1806 of yacc.c  */
     8774#line 2693 "parser.yy"
    88918775    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    88928776    break;
    88938777
    8894   case 701:
    8895 
    8896 /* Line 1806 of yacc.c  */
    8897 #line 2672 "parser.yy"
     8778  case 706:
     8779
     8780/* Line 1806 of yacc.c  */
     8781#line 2695 "parser.yy"
    88988782    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88998783    break;
    89008784
    8901   case 704:
    8902 
    8903 /* Line 1806 of yacc.c  */
    8904 #line 2682 "parser.yy"
     8785  case 709:
     8786
     8787/* Line 1806 of yacc.c  */
     8788#line 2705 "parser.yy"
    89058789    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89068790    break;
    89078791
    8908   case 707:
    8909 
    8910 /* Line 1806 of yacc.c  */
    8911 #line 2692 "parser.yy"
     8792  case 712:
     8793
     8794/* Line 1806 of yacc.c  */
     8795#line 2715 "parser.yy"
    89128796    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89138797    break;
    89148798
    8915   case 708:
    8916 
    8917 /* Line 1806 of yacc.c  */
    8918 #line 2694 "parser.yy"
     8799  case 713:
     8800
     8801/* Line 1806 of yacc.c  */
     8802#line 2717 "parser.yy"
    89198803    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89208804    break;
    89218805
    8922   case 709:
    8923 
    8924 /* Line 1806 of yacc.c  */
    8925 #line 2696 "parser.yy"
     8806  case 714:
     8807
     8808/* Line 1806 of yacc.c  */
     8809#line 2719 "parser.yy"
    89268810    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89278811    break;
    89288812
    8929   case 710:
    8930 
    8931 /* Line 1806 of yacc.c  */
    8932 #line 2698 "parser.yy"
     8813  case 715:
     8814
     8815/* Line 1806 of yacc.c  */
     8816#line 2721 "parser.yy"
    89338817    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89348818    break;
    89358819
    8936   case 711:
    8937 
    8938 /* Line 1806 of yacc.c  */
    8939 #line 2700 "parser.yy"
     8820  case 716:
     8821
     8822/* Line 1806 of yacc.c  */
     8823#line 2723 "parser.yy"
    89408824    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89418825    break;
    89428826
    8943   case 712:
    8944 
    8945 /* Line 1806 of yacc.c  */
    8946 #line 2702 "parser.yy"
     8827  case 717:
     8828
     8829/* Line 1806 of yacc.c  */
     8830#line 2725 "parser.yy"
    89478831    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89488832    break;
    89498833
    8950   case 713:
    8951 
    8952 /* Line 1806 of yacc.c  */
    8953 #line 2709 "parser.yy"
     8834  case 718:
     8835
     8836/* Line 1806 of yacc.c  */
     8837#line 2732 "parser.yy"
    89548838    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89558839    break;
    89568840
    8957   case 714:
    8958 
    8959 /* Line 1806 of yacc.c  */
    8960 #line 2711 "parser.yy"
     8841  case 719:
     8842
     8843/* Line 1806 of yacc.c  */
     8844#line 2734 "parser.yy"
    89618845    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89628846    break;
    89638847
    8964   case 715:
    8965 
    8966 /* Line 1806 of yacc.c  */
    8967 #line 2713 "parser.yy"
     8848  case 720:
     8849
     8850/* Line 1806 of yacc.c  */
     8851#line 2736 "parser.yy"
    89688852    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89698853    break;
    89708854
    8971   case 716:
    8972 
    8973 /* Line 1806 of yacc.c  */
    8974 #line 2715 "parser.yy"
     8855  case 721:
     8856
     8857/* Line 1806 of yacc.c  */
     8858#line 2738 "parser.yy"
    89758859    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89768860    break;
    89778861
    8978   case 717:
    8979 
    8980 /* Line 1806 of yacc.c  */
    8981 #line 2717 "parser.yy"
     8862  case 722:
     8863
     8864/* Line 1806 of yacc.c  */
     8865#line 2740 "parser.yy"
    89828866    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89838867    break;
    89848868
    8985   case 718:
    8986 
    8987 /* Line 1806 of yacc.c  */
    8988 #line 2719 "parser.yy"
     8869  case 723:
     8870
     8871/* Line 1806 of yacc.c  */
     8872#line 2743 "parser.yy"
    89898873    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89908874    break;
    89918875
    8992   case 719:
    8993 
    8994 /* Line 1806 of yacc.c  */
    8995 #line 2721 "parser.yy"
     8876  case 724:
     8877
     8878/* Line 1806 of yacc.c  */
     8879#line 2745 "parser.yy"
    89968880    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89978881    break;
    89988882
    8999   case 720:
    9000 
    9001 /* Line 1806 of yacc.c  */
    9002 #line 2723 "parser.yy"
     8883  case 725:
     8884
     8885/* Line 1806 of yacc.c  */
     8886#line 2747 "parser.yy"
    90038887    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90048888    break;
    90058889
    9006   case 721:
    9007 
    9008 /* Line 1806 of yacc.c  */
    9009 #line 2725 "parser.yy"
     8890  case 726:
     8891
     8892/* Line 1806 of yacc.c  */
     8893#line 2749 "parser.yy"
    90108894    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    90118895    break;
    90128896
    9013   case 722:
    9014 
    9015 /* Line 1806 of yacc.c  */
    9016 #line 2727 "parser.yy"
     8897  case 727:
     8898
     8899/* Line 1806 of yacc.c  */
     8900#line 2751 "parser.yy"
    90178901    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90188902    break;
    90198903
    9020   case 723:
    9021 
    9022 /* Line 1806 of yacc.c  */
    9023 #line 2732 "parser.yy"
     8904  case 728:
     8905
     8906/* Line 1806 of yacc.c  */
     8907#line 2756 "parser.yy"
    90248908    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    90258909    break;
    90268910
    9027   case 724:
    9028 
    9029 /* Line 1806 of yacc.c  */
    9030 #line 2734 "parser.yy"
     8911  case 729:
     8912
     8913/* Line 1806 of yacc.c  */
     8914#line 2758 "parser.yy"
    90318915    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    90328916    break;
    90338917
    9034   case 725:
    9035 
    9036 /* Line 1806 of yacc.c  */
    9037 #line 2739 "parser.yy"
     8918  case 730:
     8919
     8920/* Line 1806 of yacc.c  */
     8921#line 2763 "parser.yy"
    90388922    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    90398923    break;
    90408924
    9041   case 726:
    9042 
    9043 /* Line 1806 of yacc.c  */
    9044 #line 2741 "parser.yy"
     8925  case 731:
     8926
     8927/* Line 1806 of yacc.c  */
     8928#line 2765 "parser.yy"
    90458929    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    90468930    break;
    90478931
    9048   case 728:
    9049 
    9050 /* Line 1806 of yacc.c  */
    9051 #line 2768 "parser.yy"
     8932  case 733:
     8933
     8934/* Line 1806 of yacc.c  */
     8935#line 2792 "parser.yy"
    90528936    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    90538937    break;
    90548938
    9055   case 732:
    9056 
    9057 /* Line 1806 of yacc.c  */
    9058 #line 2779 "parser.yy"
     8939  case 737:
     8940
     8941/* Line 1806 of yacc.c  */
     8942#line 2803 "parser.yy"
    90598943    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90608944    break;
    90618945
    9062   case 733:
    9063 
    9064 /* Line 1806 of yacc.c  */
    9065 #line 2781 "parser.yy"
     8946  case 738:
     8947
     8948/* Line 1806 of yacc.c  */
     8949#line 2805 "parser.yy"
    90668950    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90678951    break;
    90688952
    9069   case 734:
    9070 
    9071 /* Line 1806 of yacc.c  */
    9072 #line 2783 "parser.yy"
     8953  case 739:
     8954
     8955/* Line 1806 of yacc.c  */
     8956#line 2807 "parser.yy"
    90738957    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90748958    break;
    90758959
    9076   case 735:
    9077 
    9078 /* Line 1806 of yacc.c  */
    9079 #line 2785 "parser.yy"
     8960  case 740:
     8961
     8962/* Line 1806 of yacc.c  */
     8963#line 2809 "parser.yy"
    90808964    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90818965    break;
    90828966
    9083   case 736:
    9084 
    9085 /* Line 1806 of yacc.c  */
    9086 #line 2787 "parser.yy"
     8967  case 741:
     8968
     8969/* Line 1806 of yacc.c  */
     8970#line 2811 "parser.yy"
    90878971    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90888972    break;
    90898973
    9090   case 737:
    9091 
    9092 /* Line 1806 of yacc.c  */
    9093 #line 2789 "parser.yy"
     8974  case 742:
     8975
     8976/* Line 1806 of yacc.c  */
     8977#line 2813 "parser.yy"
    90948978    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90958979    break;
    90968980
    9097   case 738:
    9098 
    9099 /* Line 1806 of yacc.c  */
    9100 #line 2796 "parser.yy"
     8981  case 743:
     8982
     8983/* Line 1806 of yacc.c  */
     8984#line 2820 "parser.yy"
    91018985    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91028986    break;
    91038987
    9104   case 739:
    9105 
    9106 /* Line 1806 of yacc.c  */
    9107 #line 2798 "parser.yy"
     8988  case 744:
     8989
     8990/* Line 1806 of yacc.c  */
     8991#line 2822 "parser.yy"
    91088992    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91098993    break;
    91108994
    9111   case 740:
    9112 
    9113 /* Line 1806 of yacc.c  */
    9114 #line 2800 "parser.yy"
     8995  case 745:
     8996
     8997/* Line 1806 of yacc.c  */
     8998#line 2824 "parser.yy"
    91158999    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91169000    break;
    91179001
    9118   case 741:
    9119 
    9120 /* Line 1806 of yacc.c  */
    9121 #line 2802 "parser.yy"
     9002  case 746:
     9003
     9004/* Line 1806 of yacc.c  */
     9005#line 2826 "parser.yy"
    91229006    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91239007    break;
    91249008
    9125   case 742:
    9126 
    9127 /* Line 1806 of yacc.c  */
    9128 #line 2804 "parser.yy"
     9009  case 747:
     9010
     9011/* Line 1806 of yacc.c  */
     9012#line 2828 "parser.yy"
    91299013    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91309014    break;
    91319015
    9132   case 743:
    9133 
    9134 /* Line 1806 of yacc.c  */
    9135 #line 2806 "parser.yy"
     9016  case 748:
     9017
     9018/* Line 1806 of yacc.c  */
     9019#line 2830 "parser.yy"
    91369020    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91379021    break;
    91389022
    9139   case 744:
    9140 
    9141 /* Line 1806 of yacc.c  */
    9142 #line 2811 "parser.yy"
     9023  case 749:
     9024
     9025/* Line 1806 of yacc.c  */
     9026#line 2835 "parser.yy"
    91439027    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91449028    break;
    91459029
    9146   case 745:
    9147 
    9148 /* Line 1806 of yacc.c  */
    9149 #line 2816 "parser.yy"
    9150     { (yyval.decl) = DeclarationNode::newFunction( nullptr, DeclarationNode::newTuple( nullptr ), (yyvsp[(4) - (5)].decl), nullptr ); }
    9151     break;
    9152 
    9153   case 746:
    9154 
    9155 /* Line 1806 of yacc.c  */
    9156 #line 2818 "parser.yy"
     9030  case 750:
     9031
     9032/* Line 1806 of yacc.c  */
     9033#line 2842 "parser.yy"
    91579034    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    91589035    break;
    91599036
    9160   case 747:
    9161 
    9162 /* Line 1806 of yacc.c  */
    9163 #line 2820 "parser.yy"
     9037  case 751:
     9038
     9039/* Line 1806 of yacc.c  */
     9040#line 2844 "parser.yy"
    91649041    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    91659042    break;
    91669043
    9167   case 750:
    9168 
    9169 /* Line 1806 of yacc.c  */
    9170 #line 2844 "parser.yy"
     9044  case 754:
     9045
     9046/* Line 1806 of yacc.c  */
     9047#line 2868 "parser.yy"
    91719048    { (yyval.en) = 0; }
    91729049    break;
    91739050
    9174   case 751:
    9175 
    9176 /* Line 1806 of yacc.c  */
    9177 #line 2846 "parser.yy"
     9051  case 755:
     9052
     9053/* Line 1806 of yacc.c  */
     9054#line 2870 "parser.yy"
    91789055    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    91799056    break;
     
    91829059
    91839060/* Line 1806 of yacc.c  */
    9184 #line 9185 "Parser/parser.cc"
     9061#line 9062 "Parser/parser.cc"
    91859062      default: break;
    91869063    }
     
    94139290
    94149291/* Line 2067 of yacc.c  */
    9415 #line 2849 "parser.yy"
     9292#line 2873 "parser.yy"
    94169293
    94179294// ----end of grammar----
  • src/Parser/parser.h

    r40744af8 rf51aefb  
    115115     ATTR_TYPEGENname = 333,
    116116     INTEGERconstant = 334,
    117      FLOATINGconstant = 335,
    118      CHARACTERconstant = 336,
    119      STRINGliteral = 337,
    120      ZERO = 338,
    121      ONE = 339,
    122      ARROW = 340,
    123      ICR = 341,
    124      DECR = 342,
    125      LS = 343,
    126      RS = 344,
    127      LE = 345,
    128      GE = 346,
    129      EQ = 347,
    130      NE = 348,
    131      ANDAND = 349,
    132      OROR = 350,
    133      ELLIPSIS = 351,
    134      MULTassign = 352,
    135      DIVassign = 353,
    136      MODassign = 354,
    137      PLUSassign = 355,
    138      MINUSassign = 356,
    139      LSassign = 357,
    140      RSassign = 358,
    141      ANDassign = 359,
    142      ERassign = 360,
    143      ORassign = 361,
    144      ATassign = 362,
    145      THEN = 363
     117     CHARACTERconstant = 335,
     118     STRINGliteral = 336,
     119     REALDECIMALconstant = 337,
     120     REALFRACTIONconstant = 338,
     121     FLOATINGconstant = 339,
     122     ZERO = 340,
     123     ONE = 341,
     124     ARROW = 342,
     125     ICR = 343,
     126     DECR = 344,
     127     LS = 345,
     128     RS = 346,
     129     LE = 347,
     130     GE = 348,
     131     EQ = 349,
     132     NE = 350,
     133     ANDAND = 351,
     134     OROR = 352,
     135     ELLIPSIS = 353,
     136     MULTassign = 354,
     137     DIVassign = 355,
     138     MODassign = 356,
     139     PLUSassign = 357,
     140     MINUSassign = 358,
     141     LSassign = 359,
     142     RSassign = 360,
     143     ANDassign = 361,
     144     ERassign = 362,
     145     ORassign = 363,
     146     ATassign = 364,
     147     THEN = 365
    146148   };
    147149#endif
     
    224226#define ATTR_TYPEGENname 333
    225227#define INTEGERconstant 334
    226 #define FLOATINGconstant 335
    227 #define CHARACTERconstant 336
    228 #define STRINGliteral 337
    229 #define ZERO 338
    230 #define ONE 339
    231 #define ARROW 340
    232 #define ICR 341
    233 #define DECR 342
    234 #define LS 343
    235 #define RS 344
    236 #define LE 345
    237 #define GE 346
    238 #define EQ 347
    239 #define NE 348
    240 #define ANDAND 349
    241 #define OROR 350
    242 #define ELLIPSIS 351
    243 #define MULTassign 352
    244 #define DIVassign 353
    245 #define MODassign 354
    246 #define PLUSassign 355
    247 #define MINUSassign 356
    248 #define LSassign 357
    249 #define RSassign 358
    250 #define ANDassign 359
    251 #define ERassign 360
    252 #define ORassign 361
    253 #define ATassign 362
    254 #define THEN 363
     228#define CHARACTERconstant 335
     229#define STRINGliteral 336
     230#define REALDECIMALconstant 337
     231#define REALFRACTIONconstant 338
     232#define FLOATINGconstant 339
     233#define ZERO 340
     234#define ONE 341
     235#define ARROW 342
     236#define ICR 343
     237#define DECR 344
     238#define LS 345
     239#define RS 346
     240#define LE 347
     241#define GE 348
     242#define EQ 349
     243#define NE 350
     244#define ANDAND 351
     245#define OROR 352
     246#define ELLIPSIS 353
     247#define MULTassign 354
     248#define DIVassign 355
     249#define MODassign 356
     250#define PLUSassign 357
     251#define MINUSassign 358
     252#define LSassign 359
     253#define RSassign 360
     254#define ANDassign 361
     255#define ERassign 362
     256#define ORassign 363
     257#define ATassign 364
     258#define THEN 365
    255259
    256260
     
    262266
    263267/* Line 2068 of yacc.c  */
    264 #line 116 "parser.yy"
     268#line 120 "parser.yy"
    265269
    266270        Token tok;
     
    282286
    283287/* Line 2068 of yacc.c  */
    284 #line 285 "Parser/parser.h"
     288#line 289 "Parser/parser.h"
    285289} YYSTYPE;
    286290# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    r40744af8 rf51aefb  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Sep 24 12:16:53 2016
    13 // Update Count     : 1992
     12// Last Modified On : Wed Oct 26 17:35:53 2016
     13// Update Count     : 2066
    1414//
    1515
     
    9494%token<tok> IDENTIFIER                  QUOTED_IDENTIFIER               TYPEDEFname                             TYPEGENname
    9595%token<tok> ATTR_IDENTIFIER             ATTR_TYPEDEFname                ATTR_TYPEGENname
    96 %token<tok> INTEGERconstant             FLOATINGconstant                CHARACTERconstant               STRINGliteral
     96%token<tok> INTEGERconstant             CHARACTERconstant               STRINGliteral
     97// Floating point constant is broken into three kinds of tokens because of the ambiguity with tuple indexing and
     98// overloading constants 0/1, e.g., x.1 is lexed as (x)(.1), where (.1) is a factional constant, but is semantically
     99// converted into the tuple index (.)(1). e.g., 3.x
     100%token<tok>     REALDECIMALconstant     REALFRACTIONconstant    FLOATINGconstant
    97101%token<tok> ZERO                                ONE                                             // CFA
    98102
     
    196200%type<decl> field_declaration field_declaration_list field_declarator field_declaring_list
    197201%type<en> field field_list
     202%type<tok> field_name
    198203
    199204%type<decl> external_function_definition function_definition function_array function_declarator function_no_ptr function_ptr
     
    277282//
    278283// Cforall compounds this problem by introducing type names local to the scope of a declaration (for instance, those
    279 // introduced through "forall" qualifiers), and by introducing "type generators" -- parametrized types.  This latter
     284// introduced through "forall" qualifiers), and by introducing "type generators" -- parameterized types.  This latter
    280285// type name creates a third class of identifiers that must be distinguished by the scanner.
    281286//
    282287// Since the scanner cannot distinguish among the different classes of identifiers without some context information, it
    283 // accesses a data structure (the TypedefTable) to allow classification of an identifier that it has just read.
    284 // Semantic actions during the parser update this data structure when the class of identifiers change.
     288// accesses a data structure (TypedefTable) to allow classification of an identifier that it has just read.  Semantic
     289// actions during the parser update this data structure when the class of identifiers change.
    285290//
    286291// Because the Cforall language is block-scoped, there is the possibility that an identifier can change its class in a
     
    288293// particular declaration, each declaration is itself a scope.  This requires distinguishing between type names that are
    289294// local to the current declaration scope and those that persist past the end of the declaration (i.e., names defined in
    290 // "typedef" or "type" declarations).
     295// "typedef" or "otype" declarations).
    291296//
    292297// The non-terminals "push" and "pop" derive the empty string; their only use is to denote the opening and closing of
     
    311316                // ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant".
    312317        INTEGERconstant                                                         { $$ = new ExpressionNode( build_constantInteger( *$1 ) ); }
     318        | REALDECIMALconstant                                           { $$ = new ExpressionNode( build_constantFloat( *$1 ) ); }
     319        | REALFRACTIONconstant                                          { $$ = new ExpressionNode( build_constantFloat( *$1 ) ); }
    313320        | FLOATINGconstant                                                      { $$ = new ExpressionNode( build_constantFloat( *$1 ) ); }
    314321        | CHARACTERconstant                                                     { $$ = new ExpressionNode( build_constantChar( *$1 ) ); }
     
    357364        | zero_one
    358365                { $$ = new ExpressionNode( build_varref( $1 ) ); }
     366        | tuple
    359367        | '(' comma_expression ')'
    360368                { $$ = $2; }
     
    373381        | postfix_expression '(' argument_expression_list ')'
    374382                { $$ = new ExpressionNode( build_func( $1, $3 ) ); }
    375                 // ambiguity with .0 so space required after field-selection, e.g.
    376                 //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    377383        | postfix_expression '.' no_attr_identifier
    378384                { $$ = new ExpressionNode( build_fieldSel( $1, build_varref( $3 ) ) ); }
    379385        | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
     386        | postfix_expression REALFRACTIONconstant                       // CFA, tuple index
    380387        | postfix_expression ARROW no_attr_identifier
    381388                { $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); }
     
    413420
    414421field:                                                                                                  // CFA, tuple field selector
    415         no_attr_identifier
     422        field_name
    416423                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    417                 // ambiguity with .0 so space required after field-selection, e.g.
    418                 //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    419         | no_attr_identifier '.' field
     424        | REALDECIMALconstant field
     425                { $$ = new ExpressionNode( build_fieldSel( $2, build_varref( $1 ) ) ); }
     426        | REALDECIMALconstant '[' push field_list pop ']'
     427                { $$ = new ExpressionNode( build_fieldSel( $4, build_varref( $1 ) ) ); }
     428        | field_name '.' field
    420429                { $$ = new ExpressionNode( build_fieldSel( $3, build_varref( $1 ) ) ); }
    421         | no_attr_identifier '.' '[' push field_list pop ']'
     430        | field_name '.' '[' push field_list pop ']'
    422431                { $$ = new ExpressionNode( build_fieldSel( $5, build_varref( $1 ) ) ); }
    423         | no_attr_identifier ARROW field
     432        | field_name ARROW field
    424433                { $$ = new ExpressionNode( build_pfieldSel( $3, build_varref( $1 ) ) ); }
    425         | no_attr_identifier ARROW '[' push field_list pop ']'
     434        | field_name ARROW '[' push field_list pop ']'
    426435                { $$ = new ExpressionNode( build_pfieldSel( $5, build_varref( $1 ) ) ); }
     436        ;
     437
     438field_name:
     439        INTEGERconstant fraction_constants
     440                { $$ = $1; }
     441        | FLOATINGconstant fraction_constants
     442                { $$ = $1; }
     443        | no_attr_identifier fraction_constants
     444                { $$ = $1; }
     445        ;
     446
     447fraction_constants:
     448        // empty
     449        | fraction_constants REALFRACTIONconstant
    427450        ;
    428451
     
    497520        | '(' type_name_no_function ')' cast_expression
    498521                { $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
    499         | '(' type_name_no_function ')' tuple
    500                 { $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
     522//      | '(' type_name_no_function ')' tuple
     523//              { $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
    501524        ;
    502525
     
    584607        | logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
    585608                { $$ = new ExpressionNode( build_cond( $1, $1, $4 ) ); }
    586         | logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
    587                 { $$ = new ExpressionNode( build_cond( $1, $3, $5 ) ); }
     609//      | logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
     610//              { $$ = new ExpressionNode( build_cond( $1, $3, $5 ) ); }
    588611        ;
    589612
     
    597620        | unary_expression assignment_operator assignment_expression
    598621                { $$ = new ExpressionNode( build_binary_ptr( $2, $1, $3 ) ); }
    599         | tuple assignment_opt                                                          // CFA, tuple expression
    600                 { $$ = ( $2 == 0 ) ? $1 : new ExpressionNode( build_binary_ptr( OperKinds::Assign, $1, $2 ) ); }
     622//      | tuple assignment_opt                                                          // CFA, tuple expression
     623//              { $$ = ( $2 == 0 ) ? $1 : new ExpressionNode( build_binary_ptr( OperKinds::Assign, $1, $2 ) ); }
    601624        ;
    602625
     
    625648                // CFA, one assignment_expression is factored out of comma_expression to eliminate a shift/reduce conflict with
    626649                // comma_expression in new_identifier_parameter_array and new_abstract_array
    627         '[' ']'
    628                 { $$ = new ExpressionNode( build_tuple() ); }
    629         | '[' push assignment_expression pop ']'
    630                 { $$ = new ExpressionNode( build_tuple( $3 ) ); }
    631         | '[' push ',' tuple_expression_list pop ']'
     650//      '[' ']'
     651//              { $$ = new ExpressionNode( build_tuple() ); }
     652//      '[' push assignment_expression pop ']'
     653//              { $$ = new ExpressionNode( build_tuple( $3 ) ); }
     654        '[' push ',' tuple_expression_list pop ']'
    632655                { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( $4 ) ) ); }
    633656        | '[' push assignment_expression ',' tuple_expression_list pop ']'
     
    11281151
    11291152new_function_specifier:                                                                 // CFA
    1130         '[' ']' identifier_or_type_name '(' push new_parameter_type_list_opt pop ')' // S/R conflict
    1131                 {
    1132                         $$ = DeclarationNode::newFunction( $3, DeclarationNode::newTuple( 0 ), $6, 0, true );
    1133                 }
     1153//      '[' ']' identifier_or_type_name '(' push new_parameter_type_list_opt pop ')' // S/R conflict
     1154//              {
     1155//                      $$ = DeclarationNode::newFunction( $3, DeclarationNode::newTuple( 0 ), $6, 0, true );
     1156//              }
    11341157//      '[' ']' identifier '(' push new_parameter_type_list_opt pop ')'
    11351158//              {
     
    11501173                // type_specifier can resolve to just TYPEDEFname (e.g., typedef int T; int f( T );). Therefore this must be
    11511174                // flattened to allow lookahead to the '(' without having to reduce identifier_or_type_name.
    1152         | new_abstract_tuple identifier_or_type_name '(' push new_parameter_type_list_opt pop ')'
     1175        new_abstract_tuple identifier_or_type_name '(' push new_parameter_type_list_opt pop ')'
    11531176                // To obtain LR(1 ), this rule must be factored out from function return type (see new_abstract_declarator).
    11541177                {
     
    20052028                {
    20062029                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    2007                         linkage = LinkageSpec::fromString( *$2 );
     2030                        linkage = LinkageSpec::linkageCheck( $2 );
    20082031                }
    20092032          '{' external_definition_list_opt '}'                          // C++-style linkage specifier
     
    27162739        | multi_array_dimension type_specifier
    27172740                { $$ = $2->addNewArray( $1 ); }
     2741
    27182742        | '[' ']' new_identifier_parameter_ptr
    27192743                { $$ = $3->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     
    28132837
    28142838new_abstract_function:                                                                  // CFA
    2815         '[' ']' '(' new_parameter_type_list_opt ')'
    2816                 { $$ = DeclarationNode::newFunction( nullptr, DeclarationNode::newTuple( nullptr ), $4, nullptr ); }
    2817         | new_abstract_tuple '(' push new_parameter_type_list_opt pop ')'
     2839//      '[' ']' '(' new_parameter_type_list_opt ')'
     2840//              { $$ = DeclarationNode::newFunction( nullptr, DeclarationNode::newTuple( nullptr ), $4, nullptr ); }
     2841        new_abstract_tuple '(' push new_parameter_type_list_opt pop ')'
    28182842                { $$ = DeclarationNode::newFunction( nullptr, $1, $4, nullptr ); }
    28192843        | new_function_return '(' push new_parameter_type_list_opt pop ')'
  • src/ResolvExpr/AlternativePrinter.h

    r40744af8 rf51aefb  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // AlternativePrinter.h -- 
     7// AlternativePrinter.h --
    88//
    99// Author           : Richard C. Bilson
     
    2323
    2424namespace ResolvExpr {
    25         class AlternativePrinter : public SymTab::Indexer {
     25        class AlternativePrinter final : public SymTab::Indexer {
    2626          public:
    2727                AlternativePrinter( std::ostream &os );
    28                 virtual void visit( ExprStmt *exprStmt );
     28
     29                using SymTab::Indexer::visit;
     30                virtual void visit( ExprStmt *exprStmt ) override;
    2931          private:
    3032                std::ostream &os;
  • src/ResolvExpr/Resolver.cc

    r40744af8 rf51aefb  
    3232
    3333namespace ResolvExpr {
    34         class Resolver : public SymTab::Indexer {
     34        class Resolver final : public SymTab::Indexer {
    3535          public:
    36                 Resolver() : SymTab::Indexer( false ), switchType( 0 ) {}
    37 
    38                 virtual void visit( FunctionDecl *functionDecl );
    39                 virtual void visit( ObjectDecl *functionDecl );
    40                 virtual void visit( TypeDecl *typeDecl );
    41                 virtual void visit( EnumDecl * enumDecl );
    42 
    43                 virtual void visit( ArrayType * at );
    44                 virtual void visit( PointerType * at );
    45 
    46                 virtual void visit( ExprStmt *exprStmt );
    47                 virtual void visit( AsmExpr *asmExpr );
    48                 virtual void visit( AsmStmt *asmStmt );
    49                 virtual void visit( IfStmt *ifStmt );
    50                 virtual void visit( WhileStmt *whileStmt );
    51                 virtual void visit( ForStmt *forStmt );
    52                 virtual void visit( SwitchStmt *switchStmt );
    53                 virtual void visit( CaseStmt *caseStmt );
    54                 virtual void visit( BranchStmt *branchStmt );
    55                 virtual void visit( ReturnStmt *returnStmt );
    56 
    57                 virtual void visit( SingleInit *singleInit );
    58                 virtual void visit( ListInit *listInit );
    59                 virtual void visit( ConstructorInit *ctorInit );
     36                Resolver() : SymTab::Indexer( false ) {}
     37
     38                using SymTab::Indexer::visit;
     39                virtual void visit( FunctionDecl *functionDecl ) override;
     40                virtual void visit( ObjectDecl *functionDecl ) override;
     41                virtual void visit( TypeDecl *typeDecl ) override;
     42                virtual void visit( EnumDecl * enumDecl ) override;
     43
     44                virtual void visit( ArrayType * at ) override;
     45                virtual void visit( PointerType * at ) override;
     46
     47                virtual void visit( ExprStmt *exprStmt ) override;
     48                virtual void visit( AsmExpr *asmExpr ) override;
     49                virtual void visit( AsmStmt *asmStmt ) override;
     50                virtual void visit( IfStmt *ifStmt ) override;
     51                virtual void visit( WhileStmt *whileStmt ) override;
     52                virtual void visit( ForStmt *forStmt ) override;
     53                virtual void visit( SwitchStmt *switchStmt ) override;
     54                virtual void visit( CaseStmt *caseStmt ) override;
     55                virtual void visit( BranchStmt *branchStmt ) override;
     56                virtual void visit( ReturnStmt *returnStmt ) override;
     57
     58                virtual void visit( SingleInit *singleInit ) override;
     59                virtual void visit( ListInit *listInit ) override;
     60                virtual void visit( ConstructorInit *ctorInit ) override;
    6061          private:
    6162        typedef std::list< Initializer * >::iterator InitIterator;
     
    6970                std::list< Type * > functionReturn;
    7071                Type *initContext;
    71                 Type *switchType;
    7272                bool inEnumDecl = false;
    7373        };
  • src/ResolvExpr/TypeMap.h

    r40744af8 rf51aefb  
    3838                typedef typename std::map< std::string, Value* > ValueMap;
    3939                typedef typename ValueMap::iterator ValueMapIterator;
    40                
     40
    4141                Value *voidValue;                                     ///< Value for void type
    4242                Value *basicValue[BasicType::NUMBER_OF_BASIC_TYPES];  ///< Values for basic types
     
    5454                        /// One scope of map rollbacks
    5555                        typedef std::vector< std::pair< ValueMapIterator, Value* > > MapScope;
    56                        
     56
    5757                        PointerScope pointers;  ///< Value pointers to roll back to their previous state
    5858                        MapScope mapNodes;      ///< Value map iterators to roll back to their previous state
     
    6868
    6969                std::vector< Rollback > scopes;  ///< Scope rollback information
    70                
     70
    7171                struct Lookup : public Visitor {
    7272                        Lookup( TypeMap<Value> &typeMap ) : typeMap( typeMap ), found( 0 ), toInsert( 0 ) {}
     
    8787                                return found;
    8888                        }
    89                        
     89
    9090                        void findAndReplace( Value *&loc ) {
    9191                                found = loc;
     
    109109                                }
    110110                        }
    111                        
     111
    112112                        virtual void visit( VoidType *voidType ) {
    113113                                findAndReplace( typeMap.voidValue );
    114114                        }
    115                        
     115
    116116                        virtual void visit( BasicType *basicType ) {
    117117                                findAndReplace( typeMap.basicValue[basicType->get_kind()] );
    118118                        }
    119                        
     119
    120120                        virtual void visit( PointerType *pointerType ) {
    121121                                // NOTE This is one of the places where the apporoximation of the resolver is (deliberately) poor;
     
    129129                                }
    130130                        }
    131                        
     131
    132132                        virtual void visit( ArrayType *arrayType ) {
    133133                                if ( dynamic_cast< FunctionType* >( arrayType->get_base() ) ) {
     
    137137                                }
    138138                        }
    139                        
     139
    140140                        virtual void visit( FunctionType *functionType ) {
    141141                                findAndReplace( typeMap.functionPointerValue );
    142142                        }
    143                        
     143
    144144                        virtual void visit( StructInstType *structType ) {
    145145                                findAndReplace( typeMap.structValue, structType->get_name() );
    146146                        }
    147                        
     147
    148148                        virtual void visit( UnionInstType *unionType ) {
    149149                                findAndReplace( typeMap.unionValue, unionType->get_name() );
    150150                        }
    151                        
     151
    152152                        virtual void visit( EnumInstType *enumType ) {
    153153                                findAndReplace( typeMap.enumValue, enumType->get_name() );
     
    157157                        Value *found;             ///< Value found (NULL if none yet)
    158158                        Value *toInsert;          ///< Value to insert (NULL if a lookup)
    159                 };  // class Lookup
    160                 friend class Lookup;
    161                
     159                };  // struct Lookup
     160                friend struct Lookup;
     161
    162162        public:
    163163                /// Starts a new scope
     
    180180                        scopes.pop_back();
    181181                }
    182                
     182
    183183                TypeMap() : voidValue( 0 ), pointerValue( 0 ), voidPointerValue( 0 ), functionPointerValue( 0 ), structValue(), unionValue(), enumValue(), scopes() {
    184184                        beginScope();
     
    199199                        return searcher.find( key );
    200200                }
    201                
     201
    202202        }; // class TypeMap
    203203
  • src/ResolvExpr/Unify.cc

    r40744af8 rf51aefb  
    7373                const OpenVarSet &openVars;
    7474                WidenMode widenMode;
    75                 Type *commonType;
    7675                const SymTab::Indexer &indexer;
    7776        };
  • src/SymTab/Validate.cc

    r40744af8 rf51aefb  
    9494
    9595        /// Associates forward declarations of aggregates with their definitions
    96         class Pass2 : public Indexer {
     96        class Pass2 final : public Indexer {
    9797                typedef Indexer Parent;
    9898          public:
    9999                Pass2( bool doDebug, const Indexer *indexer );
    100100          private:
    101                 virtual void visit( StructInstType *structInst );
    102                 virtual void visit( UnionInstType *unionInst );
    103                 virtual void visit( TraitInstType *contextInst );
    104                 virtual void visit( StructDecl *structDecl );
    105                 virtual void visit( UnionDecl *unionDecl );
    106                 virtual void visit( TypeInstType *typeInst );
     101                using Indexer::visit;
     102                void visit( StructInstType *structInst ) final;
     103                void visit( UnionInstType *unionInst ) final;
     104                void visit( TraitInstType *contextInst ) final;
     105                void visit( StructDecl *structDecl ) final;
     106                void visit( UnionDecl *unionDecl ) final;
     107                void visit( TypeInstType *typeInst ) final;
    107108
    108109                const Indexer *indexer;
     
    182183        };
    183184
    184         class CompoundLiteral : public GenPoly::DeclMutator {
     185        class CompoundLiteral final : public GenPoly::DeclMutator {
    185186                DeclarationNode::StorageClass storageclass = DeclarationNode::NoStorageClass;
    186187
    187                 virtual DeclarationWithType * mutate( ObjectDecl *objectDecl );
    188                 virtual Expression *mutate( CompoundLiteralExpr *compLitExpr );
     188                using GenPoly::DeclMutator::mutate;
     189                DeclarationWithType * mutate( ObjectDecl *objectDecl ) final;
     190                Expression *mutate( CompoundLiteralExpr *compLitExpr ) final;
    189191        };
    190192
     
    652654        void EliminateTypedef::addImplicitTypedef( AggDecl * aggDecl ) {
    653655                if ( typedefNames.count( aggDecl->get_name() ) == 0 ) {
    654                         Type *type;
     656                        Type *type = nullptr;
    655657                        if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( aggDecl ) ) {
    656658                                type = new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() );
  • src/SynTree/FunctionDecl.cc

    r40744af8 rf51aefb  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 18 23:50:14 2016
    13 // Update Count     : 20
     12// Last Modified On : Sat Oct  1 23:06:32 2016
     13// Update Count     : 21
    1414//
    1515
     
    6060        } // if
    6161        if ( get_linkage() != LinkageSpec::Cforall ) {
    62                 os << LinkageSpec::toString( get_linkage() ) << " ";
     62                os << LinkageSpec::linkageName( get_linkage() ) << " ";
    6363        } // if
    6464        if ( get_isInline() ) {
  • src/SynTree/ObjectDecl.cc

    r40744af8 rf51aefb  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 18 23:50:33 2016
    13 // Update Count     : 31
     12// Last Modified On : Sat Oct  1 23:05:56 2016
     13// Update Count     : 32
    1414//
    1515
     
    4444
    4545        if ( get_linkage() != LinkageSpec::Cforall ) {
    46                 os << LinkageSpec::toString( get_linkage() ) << " ";
     46                os << LinkageSpec::linkageName( get_linkage() ) << " ";
    4747        } // if
    4848
  • src/Tuples/TupleAssignment.cc

    r40744af8 rf51aefb  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TupleAssignment.cc -- 
     7// TupleAssignment.cc --
    88//
    99// Author           : Rodolfo G. Esteves
     
    2929
    3030namespace Tuples {
    31         TupleAssignSpotter::TupleAssignSpotter( ResolvExpr::AlternativeFinder *f = 0 )
     31        TupleAssignSpotter::TupleAssignSpotter( ResolvExpr::AlternativeFinder *f )
    3232                : currentFinder(f), matcher(0), hasMatched( false ) {}
    3333
  • src/Tuples/TupleAssignment.h

    r40744af8 rf51aefb  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TupleAssignment.h -- 
     7// TupleAssignment.h --
    88//
    99// Author           : Rodolfo G. Esteves
     
    2929          public:
    3030                // dispatcher for Tuple (multiple and mass) assignment operations
    31                 TupleAssignSpotter( ResolvExpr::AlternativeFinder * );
     31                TupleAssignSpotter( ResolvExpr::AlternativeFinder * = 0 );
    3232                ~TupleAssignSpotter() { delete matcher; matcher = 0; }
    3333
     
    9797                ResolvExpr::AlternativeFinder *currentFinder;
    9898                //std::list<Expression *> rhs, lhs;
    99                 Expression *rhs, *lhs;
     99                // Expression *rhs, *lhs;
    100100                Matcher *matcher;
    101101                bool hasMatched;
  • src/driver/Makefile.am

    r40744af8 rf51aefb  
    66## file "LICENCE" distributed with Cforall.
    77##
    8 ## Makefile.am -- 
     8## Makefile.am --
    99##
    1010## Author           : Peter A. Buhr
    1111## Created On       : Sun May 31 08:49:31 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Thu Jan 28 09:04:40 2016
    14 ## Update Count     : 7
     13## Last Modified On : Fri Oct 28 13:46:06 2016
     14## Update Count     : 10
    1515###############################################################################
    1616
  • src/driver/cfa.cc

    r40744af8 rf51aefb  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug  6 16:14:55 2016
    13 // Update Count     : 148
     12// Last Modified On : Thu Oct 27 22:19:37 2016
     13// Update Count     : 154
    1414//
    1515
     
    2525using std::endl;
    2626using std::string;
     27using std::to_string;
    2728
    2829
     
    4950
    5051
     52#define str(s) #s
     53
    5154int main( int argc, char *argv[] ) {
    52         string Version( VERSION );                                                      // current version number from CONFIG
    53         string Major( "0" ), Minor( "0" ), Patch( "0" );        // default version numbers
    54 
    55         int posn1 = Version.find( "." );                                        // find the divider between major and minor version numbers
    56         if ( posn1 == -1 ) {                                                            // not there ?
    57                 Major = Version;
    58         } else {
    59                 Major = Version.substr( 0, posn1 );
    60                 int posn2 = Version.find( ".", posn1 + 1 );             // find the divider between minor and patch numbers
    61                 if ( posn2 == -1 ) {                                                    // not there ?
    62                         Minor = Version.substr( posn1 );
    63                 } else {
    64                         Minor = Version.substr( posn1 + 1, posn2 - posn1 - 1 );
    65                         Patch = Version.substr( posn2 + 1 );
    66                 } // if
    67         } // if
     55        string Version( CFA_VERSION_LONG );                                     // current version number from CONFIG
     56        string Major( str( CFA_VERSION_MAJOR ) ), Minor( str( CFA_VERSION_MINOR ) ), Patch( str( CFA_VERSION_PATCH ) );
    6857
    6958        string installincdir( CFA_INCDIR );                                     // fixed location of include files
     
    268257        // add the correct set of flags based on the type of compile this is
    269258
    270         args[nargs] = ( *new string( string("-D__CFA__=") + Major ) ).c_str();
     259        args[nargs] = ( *new string( string("-D__CFA_MAJOR__=") + Major ) ).c_str();
    271260        nargs += 1;
    272261        args[nargs] = ( *new string( string("-D__CFA_MINOR__=") + Minor ) ).c_str();
    273262        nargs += 1;
    274         args[nargs] = ( *new string( string("-D__CFA_PATCHLEVEL__=") + Patch ) ).c_str();
     263        args[nargs] = ( *new string( string("-D__CFA_PATCH__=") + Patch ) ).c_str();
    275264        nargs += 1;
    276265        args[nargs] = "-D__CFA__";
  • src/main.cc

    r40744af8 rf51aefb  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 29 17:34:39 2016
    13 // Update Count     : 426
     12// Last Modified On : Sun Oct 30 10:11:38 2016
     13// Update Count     : 435
    1414//
    1515
     
    1818#include <signal.h>                                                                             // signal
    1919#include <getopt.h>                                                                             // getopt
    20 #include <execinfo.h>                                                                   // backtrace, backtrace_symbols_fd
     20#include <execinfo.h>                                                                   // backtrace, backtrace_symbols
    2121#include <cxxabi.h>                                                                             // __cxa_demangle
     22#include <cstring>                                                                              // index
    2223
    2324using namespace std;
     
    7576static void dump( list< Declaration * > & translationUnit, ostream & out = cout );
    7677
    77 void backtrace( int start ) {                                                   // skip first N stack frames
     78static void backtrace( int start ) {                                    // skip first N stack frames
    7879        enum { Frames = 50 };
    7980        void * array[Frames];
    80         int size = backtrace( array, Frames );
    81         char ** messages = backtrace_symbols( array, size );
     81        int size = ::backtrace( array, Frames );
     82        char ** messages = ::backtrace_symbols( array, size ); // does not demangle names
     83
     84        *index( messages[0], '(' ) = '\0';                                      // find executable name
     85        cerr << "Stack back trace for: " << messages[0] << endl;
    8286
    8387        // skip last 2 stack frames after main
     
    8589                char * mangled_name = nullptr, * offset_begin = nullptr, * offset_end = nullptr;
    8690                for ( char *p = messages[i]; *p; ++p ) {        // find parantheses and +offset
    87                         if (*p == '(') {
     91                        if ( *p == '(' ) {
    8892                                mangled_name = p;
    89                         } else if (*p == '+') {
     93                        } else if ( *p == '+' ) {
    9094                                offset_begin = p;
    91                         } else if (*p == ')') {
     95                        } else if ( *p == ')' ) {
    9296                                offset_end = p;
    9397                                break;
     
    98102                int frameNo = i - start;
    99103                if ( mangled_name && offset_begin && offset_end && mangled_name < offset_begin ) {
    100                         *mangled_name++ = '\0';
     104                        *mangled_name++ = '\0';                                         // delimit strings
    101105                        *offset_begin++ = '\0';
    102106                        *offset_end++ = '\0';
    103107
    104                         int status, frameNo = i - start;
     108                        int status;
    105109                        char * real_name = __cxxabiv1::__cxa_demangle( mangled_name, 0, 0, &status );
     110                        // bug in __cxa_demangle for single-character lower-case non-mangled names
    106111                        if ( status == 0 ) {                                            // demangling successful ?
    107112                                cerr << "(" << frameNo << ") " << messages[i] << " : "
    108113                                         << real_name << "+" << offset_begin << offset_end << endl;
    109 
    110114                        } else {                                                                        // otherwise, output mangled name
    111115                                cerr << "(" << frameNo << ") " << messages[i] << " : "
    112                                          << mangled_name << "+" << offset_begin << offset_end << endl;
     116                                         << mangled_name << "(/*unknown*/)+" << offset_begin << offset_end << endl;
    113117                        } // if
     118
    114119                        free( real_name );
    115120                } else {                                                                                // otherwise, print the whole line
     
    124129        cerr << "*CFA runtime error* program cfa-cpp terminated with "
    125130                 <<     (sig_num == SIGSEGV ? "segment fault" : "bus error")
    126                  << " backtrace:" << endl;
     131                 << "." << endl;
    127132        backtrace( 2 );                                                                         // skip first 2 stack frames
    128133        exit( EXIT_FAILURE );
Note: See TracChangeset for help on using the changeset viewer.