Changes in / [698664b3:d2ded3e7]
- Files:
-
- 9 added
- 3 deleted
- 25 edited
-
.gitignore (modified) (1 diff)
-
doc/TeX/cfa.sty (deleted)
-
doc/man/README (deleted)
-
doc/man/cfa.1 (deleted)
-
doc/refrat/Makefile (added)
-
doc/refrat/indexstyle (added)
-
doc/refrat/predefined.sed (added)
-
doc/refrat/refrat.bib (added)
-
doc/refrat/refrat.tex (modified) (1 diff)
-
src/CodeGen/CodeGenerator.cc (modified) (3 diffs)
-
src/CodeGen/CodeGenerator.h (modified) (2 diffs)
-
src/GenPoly/PolyMutator.cc (modified) (3 diffs)
-
src/GenPoly/PolyMutator.h (modified) (2 diffs)
-
src/GenPoly/Specialize.cc (modified) (2 diffs)
-
src/Parser/ExpressionNode.cc (modified) (5 diffs)
-
src/Parser/InitializerNode.cc (modified) (2 diffs)
-
src/Parser/ParseNode.cc (modified) (2 diffs)
-
src/Parser/ParseNode.h (modified) (4 diffs)
-
src/Parser/lex.cc (modified) (23 diffs)
-
src/Parser/lex.ll (modified) (7 diffs)
-
src/Parser/parser.cc (modified) (114 diffs)
-
src/Parser/parser.h (modified) (4 diffs)
-
src/Parser/parser.yy (modified) (14 diffs)
-
src/SymTab/Indexer.h (modified) (2 diffs)
-
src/SymTab/Validate.cc (modified) (2 diffs)
-
src/SynTree/ArrayType.cc (modified) (2 diffs)
-
src/SynTree/BasicType.cc (modified) (2 diffs)
-
src/SynTree/Expression.cc (modified) (3 diffs)
-
src/SynTree/Initializer.cc (modified) (2 diffs)
-
src/driver/cfa.cc (modified) (2 diffs)
-
src/examples/alloc.c (added)
-
src/examples/asm.c (added)
-
src/examples/constructors.c (added)
-
src/examples/control_structures.c (modified) (2 diffs)
-
src/examples/nestedfunc.c (added)
-
src/examples/poly-bench.c (added)
-
src/examples/sum.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
.gitignore
r698664b3 rd2ded3e7 27 27 # generated by bison and lex from cfa.yy and lex.ll, respectively 28 28 src/Parser/parser.output 29 30 # generated by latex 31 doc/refrat/refrat.aux 32 doc/refrat/refrat.bbl 33 doc/refrat/refrat.blg 34 doc/refrat/refrat.brf 35 doc/refrat/refrat.dvi 36 doc/refrat/refrat.idx 37 doc/refrat/refrat.ilg 38 doc/refrat/refrat.ind 39 doc/refrat/refrat.log 40 doc/refrat/refrat.out 41 doc/refrat/refrat.pdf 42 doc/refrat/refrat.ps 43 doc/refrat/refrat.toc -
doc/refrat/refrat.tex
r698664b3 rd2ded3e7 1 % requires tex packages: texlive-base texlive-latex-base tex-common texlive-humanities texlive-latex-extra texlive-fonts-recommended 2 3 \documentclass[openright,twoside]{report} 4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5 6 % Latex packages used in the document. 7 8 \usepackage{fullpage,times} 9 \usepackage{xspace} 10 \usepackage{varioref} 11 \usepackage{listings} 12 \usepackage{comment} 13 \usepackage{latexsym} % \Box 14 \usepackage{mathptmx} % better math font with "times" 15 \usepackage[pagewise]{lineno} 16 \renewcommand{\linenumberfont}{\scriptsize\sffamily} 17 \usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref} 18 \usepackage{breakurl} 19 \urlstyle{sf} 20 21 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 22 23 % Names used in the document. 24 25 \newcommand{\CFA}{Cforall\xspace} % set language text name 26 \newcommand{\CFAA}{C$\forall$\xspace} % set language symbolic name 27 \newcommand{\CC}{C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name 28 \def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name) 29 30 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31 32 % Bespoke macros used in the document. 33 34 \makeatletter 35 % index macros 36 \newcommand{\italic}[1]{\emph{\hyperpage{#1}}} 37 \newcommand{\definition}[1]{\textbf{\hyperpage{#1}}} 38 \newcommand{\see}[1]{\emph{see} #1} 39 40 % Define some commands that produce formatted index entries suitable for cross-references. 41 % ``\spec'' produces entries for specifications of entities. ``\impl'' produces entries for their 42 % implementations, and ``\use'' for their uses. 43 44 % \newcommand{\bold}[1]{{\bf #1}} 45 % \def\spec{\@bsphack\begingroup 46 % \def\protect##1{\string##1\space}\@sanitize 47 % \@wrxref{|bold}} 48 \def\impl{\@bsphack\begingroup 49 \def\protect##1{\string##1\space}\@sanitize 50 \@wrxref{|definition}} 51 \newcommand{\indexcode}[1]{{\lstinline$#1$}} 52 \def\use{\@bsphack\begingroup 53 \def\protect##1{\string##1\space}\@sanitize 54 \@wrxref{|hyperpage}} 55 \def\@wrxref#1#2{\let\thepage\relax 56 \xdef\@gtempa{\write\@indexfile{\string 57 \indexentry{#2@{\lstinline$#2$}#1}{\thepage}}}\endgroup\@gtempa 58 \if@nobreak \ifvmode\nobreak\fi\fi\@esphack} 59 %\newcommand{\use}[1]{\index{#1@{\lstinline$#1$}}} 60 %\newcommand{\impl}[1]{\index{\protect#1@{\lstinline$\protect#1$}|definition}} 61 62 % text inline and lowercase index: \Index{Inline and index text} 63 % text inline and as-in index: \Index{Inline and Index text} 64 % text inline but index with different as-is text: \Index[index text]{inline text} 65 \newcommand{\Index}{\@ifstar\@sIndex\@Index} 66 \newcommand{\@Index}[2][\@empty]{\lowercase{\def\temp{#2}}#2\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi} 67 \newcommand{\@sIndex}[2][\@empty]{#2\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi} 68 \makeatother 69 70 % blocks and titles 71 \newcommand{\define}[1]{\emph{#1\/}\index{#1}} 72 \newenvironment{rationale}{% 73 \begin{quotation}\noindent$\Box$\enspace 74 }{% 75 \hfill\enspace$\Box$\end{quotation} 76 }% 77 \newcommand{\rewrite}{\(\Rightarrow\)} 78 \newcommand{\rewriterules}{\paragraph{Rewrite Rules}~\par\noindent} 79 \newcommand{\examples}{\paragraph{Examples}~\par\noindent} 80 \newcommand{\semantics}{\paragraph{Semantics}~\par\noindent} 81 \newcommand{\constraints}{\paragraph{Constraints}~\par\noindent} 82 \newcommand{\predefined}{\paragraph{Predefined Identifiers}~\par\noindent} 83 84 % BNF macros 85 \def\syntax{\paragraph{Syntax}\trivlist\parindent=.5in\item[\hskip.5in]} 86 \let\endsyntax=\endtrivlist 87 \newcommand{\lhs}[1]{\par{\emph{#1:}}\index{#1@{\emph{#1}}|italic}} 88 \newcommand{\rhs}{\hfil\break\hbox{\hskip1in}} 89 \newcommand{\oldlhs}[1]{\emph{#1: \ldots}\index{#1@{\emph{#1}}|italic}} 90 \newcommand{\nonterm}[1]{\emph{#1\/}\index{#1@{\emph{#1}}|italic}} 91 \newcommand{\opt}{$_{opt}$\ } 92 93 % adjust varioref package with default "section" and "page" titles, and optional title with faraway page numbers 94 % \VRef{label} => Section 2.7, \VPageref{label} => page 17 95 % \VRef[Figure]{label} => Figure 3.4, \VPageref{label} => page 17 96 \renewcommand{\reftextfaceafter}{\unskip} 97 \renewcommand{\reftextfacebefore}{\unskip} 98 \renewcommand{\reftextafter}{\unskip} 99 \renewcommand{\reftextbefore}{\unskip} 100 \renewcommand{\reftextfaraway}[1]{\unskip, p.~\pageref{#1}} 101 \renewcommand{\reftextpagerange}[2]{\unskip, pp.~\pageref{#1}--\pageref{#2}} 102 \newcommand{\VRef}[2][Section]{\ifx#1\@empty\else{#1}\nobreakspace\fi\vref{#2}} 103 \newcommand{\VPageref}[2][page]{\ifx#1\@empty\else{#1}\nobreakspace\fi\pageref{#2}} 104 105 % adjust listings macros 106 \lstdefinelanguage{CFA}[ANSI]{C}% 107 {morekeywords={asm,_Alignas,_Alignof,_At,_Atomic,_Bool,catch,catchResume,choose,_Complex,context,disable,dtype,enable, 108 fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,lvalue,_Noreturn,restrict,_Static_assert, 109 _Thread_local,throw,throwResume,try,type,}, 110 }% 111 112 \lstset{ 113 language=CFA, 114 columns=fullflexible, 115 basicstyle=\sf\small, 116 tabsize=4, 117 xleftmargin=\parindent, 118 escapechar=@, 119 %fancyvrb=true, 120 %showtabs=true, 121 keepspaces=true, 122 showtabs=true, 123 tab=, 124 }% 125 126 \makeatletter 127 % replace/adjust listings characters that look bad in sanserif 128 \lst@CCPutMacro 129 \lst@ProcessOther{"2D}{\lst@ttfamily{-{}}{{\ttfamily\upshape -}}} % replace minus 130 \lst@ProcessOther{"3C}{\lst@ttfamily{<}{\texttt{<}}} % replace less than 131 \lst@ProcessOther{"3E}{\lst@ttfamily{<}{\texttt{>}}} % replace greater than 132 \lst@ProcessOther{"5E}{\raisebox{0.4ex}{$\scriptstyle\land\,$}} % replace circumflex 133 \lst@ProcessLetter{"5F}{\lst@ttfamily{\char95}{{\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}}} % replace underscore 134 \lst@ProcessOther{"7E}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}} % replace tilde 135 %\lst@ProcessOther{"7E}{\raisebox{-.4ex}[1ex][0pt]{\textasciitilde}} % lower tilde 136 \@empty\z@\@empty 137 \makeatother 138 139 \setcounter{secnumdepth}{3} % number subsubsections 140 \setcounter{tocdepth}{3} % subsubsections in table of contents 141 \makeindex 142 143 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 144 145 \begin{document} 146 \pagestyle{headings} 147 \linenumbers % comment out to turn off line numbering 148 149 \title{\CFA (\CFAA) Reference Manual and Rationale} 150 \author{Glen Ditchfield \and Peter A. Buhr} 151 \date{DRAFT\\\today} 152 153 \pagenumbering{roman} 154 \pagestyle{plain} 155 156 \maketitle 157 158 \vspace*{\fill} 159 \thispagestyle{empty} 160 \noindent 161 \copyright\,2015 Glen Ditchfield \\ \\ 162 \noindent 163 This work is licensed under the Creative Commons Attribution 4.0 International License. To view a 164 copy of this license, visit {\small\url{http://creativecommons.org/licenses/by/4.0}}. 165 \vspace*{1in} 166 167 \clearpage 168 \pdfbookmark[1]{Contents}{section} 169 \tableofcontents 170 171 \clearpage 172 \pagenumbering{arabic} 173 174 175 \chapter*{Introduction}\addcontentsline{toc}{chapter}{Introduction} 176 177 This document is a reference manual and rationale for \CFA, a polymorphic extension of the C 178 programming language. It makes frequent reference to the {\c11} standard \cite{ANS:C11}, and 179 occasionally compares \CFA to {\CC} \cite{c++}. 180 181 The manual deliberately imitates the ordering of the {\c11} standard (although the section numbering 182 differs). Unfortunately, this means the manual contains more ``forward references'' than usual, 183 making it harder to follow if the reader does not have a copy of the {\c11} standard. For a simple 184 introduction to \CFA, see the companion document ``An Overview of \CFA'' 185 \cite{Ditchfield96:Overview}. 186 187 \begin{rationale} 188 Commentary (like this) is quoted with quads. Commentary usually deals with subtle points, the 189 rationale behind a rule, and design decisions. 190 \end{rationale} 191 192 % No ``Scope'' or ``Normative references'' chapters yet. 193 194 195 \setcounter{chapter}{2} 196 \chapter{Terms, definitions, and symbols} 197 198 Terms from the {\c11} standard used in this document have the same meaning as in the {\c11} 199 standard. 200 201 % No ``Conformance'' or ``Environment'' chapters yet. 202 203 204 \setcounter{chapter}{5} 205 \chapter{Language} 206 207 208 \section{Notation} 209 The syntax notation used in this document is the same as in the {\c11} standard, with one exception: 210 ellipsis in the definition of a nonterminal, as in ``\emph{declaration:} \ldots'', indicates that 211 these rules extend a previous definition, which occurs in this document or in the {\c11} standard. 212 213 214 \section{Concepts} 215 216 217 \subsection{Scopes of identifiers}\index{scopes} 218 219 \CFA's scope rules differ from C's in one major respect: a declaration of an identifier may 220 overload\index{overloading} outer declarations of lexically identical identifiers in the same 221 \Index{name space}, instead of hiding them. The outer declaration is hidden if the two declarations 222 have \Index{compatible type}, or if one declares an array type and the other declares a pointer type 223 and the element type and pointed-at type are compatible, or if one has function type and the other 224 is a pointer to a compatible function type, or if one declaration is a \lstinline$type$\use{type} or 225 \lstinline$typedef$\use{typedef} declaration and the other is not. The outer declaration becomes 226 \Index{visible} when the scope of the inner declaration terminates. 227 \begin{rationale} 228 Hence, a \CFA program can declare an \lstinline$int v$ and a \lstinline$float v$ in the same 229 scope; a {\CC} program can not. 230 \end{rationale} 231 232 233 \subsection{Linkage of identifiers} 234 \index{linkage} 235 236 \CFA's linkage rules differ from C's in only one respect: instances of a particular identifier with 237 external or internal linkage do not necessarily denote the same object or function. Instead, in the 238 set of translation units and libraries that constitutes an entire program, any two instances of a 239 particular identifier with \Index{external linkage} denote the same object or function if they have 240 \Index{compatible type}s, or if one declares an array type and the other declares a pointer type and 241 the element type and pointed-at type are compatible, or if one has function type and the other is a 242 pointer to a compatible function type. Within one translation unit, each instance of an identifier 243 with \Index{internal linkage} denotes the same object or function in the same circumstances. 244 Identifiers with \Index{no linkage} always denote unique entities. 245 \begin{rationale} 246 A \CFA program can declare an \lstinline$extern int v$ and an \lstinline$extern float v$; a C 247 program cannot. 248 \end{rationale} 249 250 251 \setcounter{subsection}{8} 252 \subsection{Generic Types} 253 254 255 \subsubsection{Semantics} 256 257 \CFA provides a capability for generic types; using this capability a single "generic type 258 generator" can be written that can represent multiple concrete type instantiations by substitution 259 of the "type parameters" of the generic type for concrete types. Syntactically a generic type 260 generator is represented by putting a forall specifier on a struct or union declaration, as defined 261 in \VRef{forall}. An instantiation of the generic type is written by specifying the type parameters 262 in parentheses after the name of the generic type generator: 263 \begin{lstlisting} 264 forall( type T | sumable( T ) ) struct pair { 265 T x; 266 T y; 267 }; 268 pair( int ) p = { 3, 14 }; 269 \end{lstlisting} 270 271 The type parameters in an instantiation of a generic type must satisfy any constraints in the forall 272 specifier on the type generator declaration, e.g., \lstinline$sumable$. The instantiation then has 273 the semantics that would result if the type parameters were substituted into the type generator 274 declaration by macro substitution. 275 276 Polymorphic functions may have generic types as parameters, and those generic types may use type 277 parameters of the polymorphic function as type parameters of the generic type: 278 \begin{lstlisting} 279 forall( type T ) void swap( pair(T) *p ) { 280 T z = p->x; 281 p->x = p->y; 282 p->y = z; 283 } 284 \end{lstlisting} 285 286 287 \subsubsection{Constraints} 288 289 To avoid unduly constraining implementors, the generic type generator definition must be visible at 290 any point where it is instantiated. Forward declarations of generic type generators are not 291 forbidden, but the definition must be visible to instantiate the generic type. Equivalently, 292 instantiations of generic types are not allowed to be incomplete types. 293 294 \examples 295 \begin{lstlisting} 296 forall( type T ) struct A; 297 298 forall( type T ) struct B { 299 A(T) *a; // legal, but cannot instantiate B(T) 300 }; 301 302 B(T) x; // illegal, *x.a is of an incomplete generic type 303 304 forall( type T ) struct A { 305 B( T ) *b; 306 }; 307 308 B( T ) y; // legal, *x.a is now of a complete generic type 309 310 311 // box.h: 312 forall( type T ) struct box; 313 forall( type T ) box( T ) *make_box( T ); 314 forall( type T ) void use_box( box( T ) *b ); 315 316 // main.c: 317 box( int ) *b = make_box( 42 ); // illegal, def'n of box not visible 318 use_box( b ); // illegal 319 \end{lstlisting} 320 321 322 \section{Conversions} 323 \CFA defines situations where values of one type are automatically converted to another type. 324 These conversions are called \define{implicit conversion}s. The programmer can request 325 \define{explicit conversion}s using cast expressions. 326 327 328 \subsection{Arithmetic operands} 329 330 331 \setcounter{subsubsection}{8} 332 \subsubsection{Safe arithmetic conversions} 333 334 In C, a pattern of conversions known as the \define{usual arithmetic conversion}s is used with most 335 binary arithmetic operators to convert the operands to a common type and determine the type of the 336 operator's result. In \CFA, these conversions play a role in overload resolution, and 337 collectively are called the \define{safe arithmetic conversion}s. 338 339 Let \(int_r\) and \(unsigned_r\) be the signed and unsigned integer types with integer conversion 340 rank\index{integer conversion rank}\index{rank|see{integer conversion rank}} $r$. Let 341 \(unsigned_{mr}\) be the unsigned integer type with maximal rank. 342 343 The following conversions are \emph{direct} safe arithmetic conversions. 344 \begin{itemize} 345 \item 346 The \Index{integer promotion}s. 347 348 \item 349 For every rank $r$ greater than or equal to the rank of \lstinline$int$, conversion from \(int_r\) 350 to \(unsigned_r\). 351 352 \item 353 For every rank $r$ greater than or equal to the rank of \lstinline$int$, where \(int_{r+1}\) exists 354 and can represent all values of \(unsigned_r\), conversion from \(unsigned_r\) to \(int_{r+1}\). 355 356 \item 357 Conversion from \(unsigned_{mr}\) to \lstinline$float$. 358 359 \item 360 Conversion from an enumerated type to its compatible integer type. 361 362 \item 363 Conversion from \lstinline$float$ to \lstinline$double$, and from \lstinline$double$ to 364 \lstinline$long double$. 365 366 \item 367 Conversion from \lstinline$float _Complex$ to \lstinline$double _Complex$, 368 and from \lstinline$double _Complex$ to \lstinline$long double _Complex$. 369 370 \begin{sloppypar} 371 \item 372 Conversion from \lstinline$float _Imaginary$ to \lstinline$double _Imaginary$, and from 373 \lstinline$double _Imaginary$ to \lstinline$long double$ \lstinline$_Imaginary$, if the 374 implementation supports imaginary types. 375 \end{sloppypar} 376 \end{itemize} 377 378 If type \lstinline$T$ can be converted to type \lstinline$U$ by a safe direct arithmetic conversion 379 and type \lstinline$U$ can be converted to type \lstinline$V$ by a safe arithmetic conversion, then 380 the conversion from \lstinline$T$ to type \lstinline$V$ is an \emph{indirect} safe arithmetic 381 conversion. 382 383 \begin{rationale} 384 Note that {\c11} does not include conversion from \Index{real type}s to \Index{complex type}s in the 385 usual arithmetic conversions, and \CFA does not include them as safe conversions. 386 \end{rationale} 387 388 389 \subsection{Other operands} 390 391 392 \setcounter{subsubsection}{3} 393 \subsubsection{Anonymous structures and unions} 394 \label{anon-conv} 395 396 If an expression's type is a pointer to a structure or union type that has a member that is an 397 \Index{anonymous structure} or an \Index{anonymous union}, it can be implicitly 398 converted\index{implicit conversion} to a pointer to the anonymous structure's or anonymous union's 399 type. The result of the conversion is a pointer to the member. 400 401 \examples 402 \begin{lstlisting} 403 struct point { 404 int x, y; 405 }; 406 void move_by(struct point * p1, struct point * p2) {@\impl{move_by}@ 407 p1->x += p2.x; 408 p1->y += p2.y; 409 } 410 411 struct color_point { 412 enum { RED, BLUE, GREEN } color; 413 struct point; 414 } cp1, cp2; 415 move_to(&cp1, &cp2); 416 \end{lstlisting} 417 Thanks to implicit conversion, the two arguments that \lstinline$move_by()$ receives are pointers to 418 \lstinline$cp1$'s second member and \lstinline$cp2$'s second member. 419 420 421 \subsubsection{Specialization} 422 A function or value whose type is polymorphic may be implicitly converted to one whose type is 423 \Index{less polymorphic} by binding values to one or more of its \Index{inferred parameter}. Any 424 value that is legal for the inferred parameter may be used, including other inferred parameters. 425 426 If, after the inferred parameter binding, an \Index{assertion parameter} has no inferred parameters 427 in its type, then an object or function must be visible at the point of the specialization that has 428 the same identifier as the assertion parameter and has a type that is compatible\index{compatible 429 type} with or can be specialized to the type of the assertion parameter. The assertion parameter 430 is bound to that object or function. 431 432 The type of the specialization is the type of the original with the bound inferred parameters and 433 the bound assertion parameters replaced by their bound values. 434 435 \examples 436 The type 437 \begin{lstlisting} 438 forall( type T, type U ) void (*)( T, U ); 439 \end{lstlisting} 440 can be specialized to (among other things) 441 \begin{lstlisting} 442 forall( type T ) void (*)( T, T ); // U bound to T 443 forall( type T ) void (*)( T, real ); // U bound to real 444 forall( type U ) void (*)( real, U ); // T bound to real 445 void f( real, real ); // both bound to real 446 \end{lstlisting} 447 448 The type 449 \begin{lstlisting} 450 forall( type T | T ?+?( T, T )) T (*)( T ); 451 \end{lstlisting} 452 can be specialized to (among other things) 453 \begin{lstlisting} 454 int (*)( int ); // T bound to int, and T ?+?(T, T ) bound to int ?+?( int, int ) 455 \end{lstlisting} 456 457 458 \subsubsection{Safe conversions} 459 460 A \define{direct safe conversion} is one of the following conversions: 461 \begin{itemize} 462 \item 463 a direct safe arithmetic conversion; 464 \item 465 from any object type or incomplete type to \lstinline$void$; 466 \item 467 from a pointer to any non-\lstinline$void$ type to a pointer to \lstinline$void$; 468 \item 469 from a pointer to any type to a pointer to a more qualified version of the type\index{qualified 470 type}; 471 \item 472 from a pointer to a structure or union type to a pointer to the type of a member of the structure or 473 union that is an \Index{anonymous structure} or an \Index{anonymous union}; 474 \item 475 within the scope of an initialized \Index{type declaration}, conversions between a type and its 476 implementation or between a pointer to a type and a pointer to its implementation. 477 \end{itemize} 478 479 Conversions that are not safe conversions are \define{unsafe conversion}s. 480 \begin{rationale} 481 As in C, there is an implicit conversion from \lstinline$void *$ to any pointer type. This is 482 clearly dangerous, and {\CC} does not have this implicit conversion. 483 \CFA\index{deficiencies!void * conversion} keeps it, in the interest of remaining as pure a 484 superset of C as possible, but discourages it by making it unsafe. 485 \end{rationale} 486 487 488 \subsection{Conversion cost} 489 490 The \define{conversion cost} of a safe\index{safe conversion} 491 conversion\footnote{Unsafe\index{unsafe conversion} conversions do not have defined conversion 492 costs.} is a measure of how desirable or undesirable it is. It is defined as follows. 493 \begin{itemize} 494 \item 495 The cost of a conversion from any type to itself is 0. 496 497 \item 498 The cost of a direct safe conversion is 1. 499 500 \item 501 The cost of an indirect safe arithmetic conversion is the smallest number of direct conversions 502 needed to make up the conversion. 503 \end{itemize} 504 505 \examples 506 In the following, assume an implementation that does not provide any extended integer types. 507 508 \begin{itemize} 509 \item 510 The cost of an implicit conversion from \lstinline$int$ to \lstinline$long$ is 1. The cost of an 511 implicit conversion from \lstinline$long$ to \lstinline$double$ is 3, because it is defined in terms 512 of conversions from \lstinline$long$ to \lstinline$unsigned long$, then to \lstinline$float$, and 513 then to \lstinline$double$. 514 515 \item 516 If \lstinline$int$ can represent all the values of \lstinline$unsigned short$, then the cost of an 517 implicit conversion from \lstinline$unsigned short$ to \lstinline$unsigned$ is 2: 518 \lstinline$unsigned short$ to \lstinline$int$ to \lstinline$unsigned$. Otherwise, 519 \lstinline$unsigned short$ is converted directly to \lstinline$unsigned$, and the cost is 1. 520 521 \item 522 If \lstinline$long$ can represent all the values of \lstinline$unsigned$, then the conversion cost 523 of \lstinline$unsigned$ to \lstinline$long$ is 1. Otherwise, the conversion is an unsafe 524 conversion, and its conversion cost is undefined. 525 \end{itemize} 526 527 \section{Lexical elements} 528 \subsection{Keywords} 529 \begin{syntax} 530 \oldlhs{keyword} 531 \rhs \lstinline$forall$ 532 \rhs \lstinline$lvalue$ 533 \rhs \lstinline$context$ 534 \rhs \lstinline$dtype$ 535 \rhs \lstinline$ftype$ 536 \rhs \lstinline$type$ 537 \end{syntax} 538 539 540 \subsection{Identifiers} 541 542 \CFA allows operator \Index{overloading} by associating operators with special function 543 identifiers. Furthermore, the constants ``\lstinline$0$'' and ``\lstinline$1$'' have special status 544 for many of C's data types (and for many programmer-defined data types as well), so \CFA treats them 545 as overloadable identifiers. Programmers can use these identifiers to declare functions and objects 546 that implement operators and constants for their own types. 547 548 549 \setcounter{subsubsection}{2} 550 \subsubsection{Constant identifiers} 551 552 \begin{syntax} 553 \oldlhs{identifier} 554 \rhs \lstinline$0$ 555 \rhs \lstinline$1$ 556 \end{syntax} 557 558 \index{constant identifiers}\index{identifiers!for constants} The tokens ``\lstinline$0$''\impl{0} 559 and ``\lstinline$1$''\impl{1} are identifiers. No other tokens defined by the rules for integer 560 constants are considered to be identifiers. 561 \begin{rationale} 562 Why ``\lstinline$0$'' and ``\lstinline$1$''? Those integers have special status in C. All scalar 563 types can be incremented and decremented, which is defined in terms of adding or subtracting 1. The 564 operations ``\lstinline$&&$'', ``\lstinline$||$'', and ``\lstinline$!$'' can be applied to any 565 scalar arguments, and are defined in terms of comparison against 0. A \nonterm{constant-expression} 566 that evaluates to 0 is effectively compatible with every pointer type. 567 568 In C, the integer constants 0 and 1 suffice because the integer promotion rules can convert them to 569 any arithmetic type, and the rules for pointer expressions treat constant expressions evaluating to 570 0 as a special case. However, user-defined arithmetic types often need the equivalent of a 1 or 0 571 for their functions or operators, polymorphic functions often need 0 and 1 constants of a type 572 matching their polymorphic parameters, and user-defined pointer-like types may need a null value. 573 Defining special constants for a user-defined type is more efficient than defining a conversion to 574 the type from \lstinline$_Bool$. 575 576 Why \emph{just} ``\lstinline$0$'' and ``\lstinline$1$''? Why not other integers? No other integers 577 have special status in C. A facility that let programmers declare specific 578 constants---``\lstinline$const Rational 12$'', for instance---would not be much of an improvement. 579 Some facility for defining the creation of values of programmer-defined types from arbitrary integer 580 tokens would be needed. The complexity of such a feature doesn't seem worth the gain. 581 \end{rationale} 582 583 584 \subsubsection{Operator identifiers} 585 586 \index{operator identifiers}\index{identifiers!for operators} Table \ref{opids} lists the 587 programmer-definable operator identifiers and the operations they are associated with. Functions 588 that are declared with (or pointed at by function pointers that are declared with) these identifiers 589 can be called by expressions that use the operator tokens and syntax, or the operator identifiers 590 and ``function call'' syntax. The relationships between operators and function calls are discussed 591 in descriptions of the operators. 592 593 \begin{table}[hbt] 594 \hfil 595 \begin{tabular}[t]{ll} 596 %identifier & operation \\ \hline 597 \lstinline$?[?]$ & subscripting \impl{?[?]}\\ 598 \lstinline$?()$ & function call \impl{?()}\\ 599 \lstinline$?++$ & postfix increment \impl{?++}\\ 600 \lstinline$?--$ & postfix decrement \impl{?--}\\ 601 \lstinline$++?$ & prefix increment \impl{++?}\\ 602 \lstinline$--?$ & prefix decrement \impl{--?}\\ 603 \lstinline$*?$ & dereference \impl{*?}\\ 604 \lstinline$+?$ & unary plus \impl{+?}\\ 605 \lstinline$-?$ & arithmetic negation \impl{-?}\\ 606 \lstinline$~?$ & bitwise negation \impl{~?}\\ 607 \lstinline$!?$ & logical complement \impl{"!?}\\ 608 \lstinline$?*?$ & multiplication \impl{?*?}\\ 609 \lstinline$?/?$ & division \impl{?/?}\\ 610 \end{tabular}\hfil 611 \begin{tabular}[t]{ll} 612 %identifier & operation \\ \hline 613 \lstinline$?%?$ & remainder \impl{?%?}\\ 614 \lstinline$?+?$ & addition \impl{?+?}\\ 615 \lstinline$?-?$ & subtraction \impl{?-?}\\ 616 \lstinline$?<<?$ & left shift \impl{?<<?}\\ 617 \lstinline$?>>?$ & right shift \impl{?>>?}\\ 618 \lstinline$?<?$ & less than \impl{?<?}\\ 619 \lstinline$?<=?$ & less than or equal \impl{?<=?}\\ 620 \lstinline$?>=?$ & greater than or equal \impl{?>=?}\\ 621 \lstinline$?>?$ & greater than \impl{?>?}\\ 622 \lstinline$?==?$ & equality \impl{?==?}\\ 623 \lstinline$?!=?$ & inequality \impl{?"!=?}\\ 624 \lstinline$?&?$ & bitwise AND \impl{?&?}\\ 625 \end{tabular}\hfil 626 \begin{tabular}[t]{ll} 627 %identifier & operation \\ \hline 628 \lstinline$?^?$ & exclusive OR \impl{?^?}\\ 629 \lstinline$?|?$ & inclusive OR \impl{?"|?}\\ 630 \lstinline$?=?$ & simple assignment \impl{?=?}\\ 631 \lstinline$?*=?$ & multiplication assignment \impl{?*=?}\\ 632 \lstinline$?/=?$ & division assignment \impl{?/=?}\\ 633 \lstinline$?%=?$ & remainder assignment \impl{?%=?}\\ 634 \lstinline$?+=?$ & addition assignment \impl{?+=?}\\ 635 \lstinline$?-=?$ & subtraction assignment \impl{?-=?}\\ 636 \lstinline$?<<=?$ & left-shift assignment \impl{?<<=?}\\ 637 \lstinline$?>>=?$ & right-shift assignment \impl{?>>=?}\\ 638 \lstinline$?&=?$ & bitwise AND assignment \impl{?&=?}\\ 639 \lstinline$?^=?$ & exclusive OR assignment \impl{?^=?}\\ 640 \lstinline$?|=?$ & inclusive OR assignment \impl{?"|=?}\\ 641 \end{tabular} 642 \hfil 643 \caption{Operator Identifiers} 644 \label{opids} 645 \end{table} 646 647 \begin{rationale} 648 Operator identifiers are made up of the characters of the operator token, with question marks added 649 to mark the positions of the arguments of operators. The question marks serve as mnemonic devices; 650 programmers can not create new operators by arbitrarily mixing question marks and other 651 non-alphabetic characters. Note that prefix and postfix versions of the increment and decrement 652 operators are distinguished by the position of the question mark. 653 \end{rationale} 654 655 \begin{rationale} 656 The use of ``\lstinline$?$'' in identifiers means that some C programs are not \CFA programs. For 657 instance, the sequence of characters ``\lstinline$(i < 0)?--i:i$'' is legal in a C program, but a 658 \CFA compiler detects a syntax error because it treats ``\lstinline$?--$'' as an identifier, not 659 as the two tokens ``\lstinline$?$'' and ``\lstinline$--$''. 660 \end{rationale} 661 662 \begin{rationale} 663 Certain operators \emph{cannot} be defined by the programmer: 664 \begin{itemize} 665 \item 666 The logical operators ``\lstinline$&&$'' and ``\lstinline$||$'', and the conditional operator 667 ``\lstinline$?:$''. These operators do not always evaluate their operands, and hence can not be 668 properly defined by functions unless some mechanism like call-by-name is added to the language. 669 Note that the definitions of ``\lstinline$&&$'' and ``\lstinline$||$'' say that they work by 670 checking that their arguments are unequal to 0, so defining ``\lstinline$!=$'' and ``\lstinline$0$'' 671 for user-defined types is enough to allow them to be used in logical expressions. 672 673 \item 674 The comma operator\index{comma expression}. It is a control-flow operator like those above. 675 Changing its meaning seems pointless and confusing. 676 677 \item 678 The ``address of'' operator. It would seem useful to define a unary ``\lstinline$&$'' operator that 679 returns values of some programmer-defined pointer-like type. The problem lies with the type of the 680 operator. Consider the expression ``\lstinline$p = &x$'', where \lstinline$x$ is of type 681 \lstinline$T$ and \lstinline$p$ has the programmer-defined type \lstinline$T_ptr$. The expression 682 might be treated as a call to the unary function ``\lstinline$&?$''. Now what is the type of the 683 function's parameter? It can not be \lstinline$T$, because then \lstinline$x$ would be passed by 684 value, and there is no way to create a useful pointer-like result from a value. Hence the parameter 685 must have type \lstinline$T *$. But then the expression must be rewritten as ``\lstinline$p = &?( &x )$'' 686 ---which doesn't seem like progress! 687 688 The rule for address-of expressions would have to be something like ``keep applying address-of 689 functions until you get one that takes a pointer argument, then use the built-in operator and 690 stop''. It seems simpler to define a conversion function from \lstinline$T *$ to \lstinline$T_ptr$. 691 692 \item 693 The \lstinline$sizeof$ operator. It is already defined for every object type, and intimately tied 694 into the language's storage allocation model. Redefining it seems pointless. 695 696 \item 697 The ``member of'' operators ``\lstinline$.$'' and ``\lstinline$->$''. These are not really infix 698 operators, since their right ``operand'' is not a value or object. 699 700 \item 701 Cast operators\index{cast expression}. Anything that can be done with an explicit cast can be done 702 with a function call. The difference in syntax is small. 703 \end{itemize} 704 \end{rationale} 705 706 707 \section{Expressions} 708 709 \CFA allows operators and identifiers to be overloaded. Hence, each expression can have a number 710 of \define{interpretation}s, each of which has a different type. The interpretations that are 711 potentially executable are called \define{valid interpretation}s. The set of interpretations 712 depends on the kind of expression and on the interpretations of the subexpressions that it contains. 713 The rules for determining the valid interpretations of an expression are discussed below for each 714 kind of expression. Eventually the context of the outermost expression chooses one interpretation 715 of that expression. 716 717 An \define{ambiguous interpretation} is an interpretation which does not specify the exact object or 718 function denoted by every identifier in the expression. An expression can have some interpretations 719 that are ambiguous and others that are unambiguous. An expression that is chosen to be executed 720 shall not be ambiguous. 721 722 The \define{best valid interpretations} are the valid interpretations that use the fewest 723 unsafe\index{unsafe conversion} conversions. Of these, the best are those where the functions and 724 objects involved are the least polymorphic\index{less polymorphic}. Of these, the best have the 725 lowest total \Index{conversion cost}, including all implicit conversions in the argument 726 expressions. Of these, the best have the highest total conversion cost for the implicit conversions 727 (if any) applied to the argument expressions. If there is no single best valid interpretation, or if 728 the best valid interpretation is ambiguous, then the resulting interpretation is 729 ambiguous\index{ambiguous interpretation}. 730 731 \begin{rationale} 732 \CFA's rules for selecting the best interpretation are designed to allow overload resolution to 733 mimic C's operator semantics. In C, the ``usual arithmetic conversions'' are applied to the 734 operands of binary operators if necessary to convert the operands to types with a common real type. 735 In \CFA, those conversions are ``safe''. The ``fewest unsafe conversions'' rule ensures that the 736 usual conversions are done, if possible. The ``lowest total expression cost'' rule chooses the 737 proper common type. The odd-looking ``highest argument conversion cost'' rule ensures that, when 738 unary expressions must be converted, conversions of function results are preferred to conversion of 739 function arguments: \lstinline$(double)-i$ will be preferred to \lstinline$-(double)i$. 740 741 The ``least polymorphic'' rule reduces the number of polymorphic function calls, since such 742 functions are presumably more expensive than monomorphic functions and since the more specific 743 function is presumably more appropriate. It also gives preference to monomorphic values (such as the 744 \lstinline$int$ \lstinline$0$) over polymorphic values (such as the \Index{null pointer} 745 \lstinline$0$\use{0}). However, interpretations that call polymorphic functions are preferred to 746 interpretations that perform unsafe conversions, because those conversions potentially lose accuracy 747 or violate strong typing. 748 749 There are two notable differences between \CFA's overload resolution rules and the rules for 750 {\CC} defined in \cite{c++}. First, the result type of a function plays a role. In {\CC}, a 751 function call must be completely resolved based on the arguments to the call in most circumstances. 752 In \CFA, a function call may have several interpretations, each with a different result type, and 753 the interpretations of the containing context choose among them. Second, safe conversions are used 754 to choose among interpretations of all sorts of functions; in {\CC}, the ``usual arithmetic 755 conversions'' are a separate set of rules that apply only to the built-in operators. 756 \end{rationale} 757 758 Expressions involving certain operators\index{operator identifiers} are considered to be equivalent 759 to function calls. A transformation from ``operator'' syntax to ``function call'' syntax is defined 760 by \define{rewrite rules}. Each operator has a set of predefined functions that overload its 761 identifier. Overload resolution determines which member of the set is executed in a given 762 expression. The functions have \Index{internal linkage} and are implicitly declared with \Index{file 763 scope}. The predefined functions and rewrite rules are discussed below for each of these 764 operators. 765 \begin{rationale} 766 Predefined functions and constants have internal linkage because that simplifies optimization in 767 traditional compile-and-link environments. For instance, ``\lstinline$an_int + an_int$'' is 768 equivalent to ``\lstinline$?+?(an_int, an_int)$''. If integer addition has not been redefined in 769 the current scope, a compiler can generate code to perform the addition directly. If predefined 770 functions had external linkage, this optimization would be difficult. 771 \end{rationale} 772 773 \begin{rationale} 774 Since each subsection describes the interpretations of an expression in terms of the interpretations 775 of its subexpressions, this chapter can be taken as describing an overload resolution algorithm that 776 uses one bottom-up pass over an expression tree. Such an algorithm was first described (for Ada) by 777 Baker~\cite{Bak:overload}. It is extended here to handle polymorphic functions and arithmetic 778 conversions. The overload resolution rules and the predefined functions have been chosen so that, in 779 programs that do not introduce overloaded declarations, expressions will have the same meaning in C 780 and in \CFA. 781 \end{rationale} 782 783 \begin{rationale} 784 Expression syntax is quoted from the {\c11} standard. The syntax itself defines the precedence and 785 associativity of operators. The sections are arranged in decreasing order of precedence, with all 786 operators in a section having the same precedence. 787 \end{rationale} 788 789 790 \subsection{Primary expressions} 791 792 \begin{syntax} 793 \lhs{primary-expression} 794 \rhs \nonterm{identifier} 795 \rhs \nonterm{constant} 796 \rhs \nonterm{string-literal} 797 \rhs \lstinline$($ \nonterm{expression} \lstinline$)$ 798 \rhs \nonterm{generic-selection} 799 \end{syntax} 800 801 \predefined 802 \begin{lstlisting} 803 const int 1;@\use{1}@ 804 const int 0;@\use{0}@ 805 forall( dtype DT ) DT *const 0; 806 forall( ftype FT ) FT *const 0; 807 \end{lstlisting} 808 809 \semantics 810 The \Index{valid interpretation} of an \nonterm{identifier} are given by the visible\index{visible} 811 declarations of the identifier. 812 813 A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type 814 and value defined by {\c11}. The predefined integer identifiers ``\lstinline$1$'' and 815 ``\lstinline$0$'' have the integer values 1 and 0, respectively. The other two predefined 816 ``\lstinline$0$'' identifiers are bound to polymorphic pointer values that, when 817 specialized\index{specialization} with a data type or function type respectively, produce a null 818 pointer of that type. 819 820 A parenthesised expression has the same interpretations as the contained \nonterm{expression}. 821 822 \examples 823 The expression \lstinline$(void *)0$\use{0} specializes the (polymorphic) null pointer to a null 824 pointer to \lstinline$void$. \lstinline$(const void *)0$ does the same, and also uses a safe 825 conversion from \lstinline$void *$ to \lstinline$const void *$. In each case, the null pointer 826 conversion is better\index{best valid interpretations} than the unsafe conversion of the integer 827 \lstinline$0$ to a pointer. 828 829 \begin{rationale} 830 Note that the predefined identifiers have addresses. 831 832 \CFA does not have C's concept of ``null pointer constants'', which are not typed values but 833 special strings of tokens. The C token ``\lstinline$0$'' is an expression of type \lstinline$int$ 834 with the value ``zero'', and it \emph{also} is a null pointer constant. Similarly, 835 ``\lstinline$(void *)0$ is an expression of type \lstinline$(void *)$ whose value is a null pointer, 836 and it also is a null pointer constant. However, in C, ``\lstinline$(void *)(void *)0$'' is 837 \emph{not} a null pointer constant, even though it is null-valued, a pointer, and constant! The 838 semantics of C expressions contain many special cases to deal with subexpressions that are null 839 pointer constants. 840 841 \CFA handles these cases through overload resolution. The declaration 842 \begin{lstlisting} 843 forall( dtype DT ) DT *const 0; 844 \end{lstlisting} 845 means that \lstinline$0$ is a polymorphic object, and contains a value that can have \emph{any} 846 pointer-to-object type or pointer-to-incomplete type. The only such value is the null pointer. 847 Therefore the type \emph{alone} is enough to identify a null pointer. Where C defines an operator 848 with a special case for the null pointer constant, \CFA defines predefined functions with a 849 polymorphic object parameter. 850 \end{rationale} 851 852 853 \subsubsection{Generic selection} 854 855 \constraints The best interpretation of the controlling expression shall be 856 unambiguous\index{ambiguous interpretation}, and shall have type compatible with at most one of the 857 types named in its generic association list. If a generic selection has no \lstinline$default$ 858 generic association, the best interpretation of its controlling expression shall have type 859 compatible with exactly one of the types named in its generic association list. 860 861 \semantics 862 A generic selection has the same interpretations as its result expression. 863 864 865 \subsection{Postfix operators} 866 867 \begin{syntax} 868 \lhs{postfix-expression} 869 \rhs \nonterm{primary-expression} 870 \rhs \nonterm{postfix-expression} \lstinline$[$ \nonterm{expression} \lstinline$]$ 871 \rhs \nonterm{postfix-expression} \lstinline$($ 872 \nonterm{argument-expression-list}\opt \lstinline$)$ 873 \rhs \nonterm{postfix-expression} \lstinline$.$ \nonterm{identifier} 874 \rhs \nonterm{postfix-expression} \lstinline$->$ \nonterm{identifier} 875 \rhs \nonterm{postfix-expression} \lstinline$++$ 876 \rhs \nonterm{postfix-expression} \lstinline$--$ 877 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$}$ 878 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$,$ \lstinline$}$ 879 \lhs{argument-expression-list} 880 \rhs \nonterm{assignment-expression} 881 \rhs \nonterm{argument-expression-list} \lstinline$,$ 882 \nonterm{assignment-expression} 883 \end{syntax} 884 885 \rewriterules 886 \begin{lstlisting} 887 a[b] @\rewrite@ ?[?]( b, a ) // if a has integer type */@\use{?[?]}@ 888 a[b] @\rewrite@ ?[?]( a, b ) // otherwise 889 a( ${\em arguments }$ ) @\rewrite@ ?()( a, ${\em arguments} )$@\use{?()}@ 890 a++ @\rewrite@ ?++(&( a ))@\use{?++}@ 891 a-- @\rewrite@ ?--(&( a ))@\use{?--}@ 892 \end{lstlisting} 893 894 895 \subsubsection{Array subscripting} 896 897 \predefined 898 \begin{lstlisting} 899 forall( type T ) lvalue T ?[?]( T *, ptrdiff_t );@\use{ptrdiff_t}@ 900 forall( type T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t ); 901 forall( type T ) lvalue const T ?[?]( const T *, ptrdiff_t ); 902 forall( type T ) lvalue restrict T ?[?]( restrict T *, ptrdiff_t ); 903 forall( type T ) lvalue volatile T ?[?]( volatile T *, ptrdiff_t ); 904 forall( type T ) lvalue _Atomic const T ?[?]( _Atomic const T *, ptrdiff_t ); 905 forall( type T ) lvalue _Atomic restrict T ?[?]( _Atomic restrict T *, ptrdiff_t ); 906 forall( type T ) lvalue _Atomic volatile T ?[?]( _Atomic volatile T *, ptrdiff_t ); 907 forall( type T ) lvalue const restrict T ?[?]( const restrict T *, ptrdiff_t ); 908 forall( type T ) lvalue const volatile T ?[?]( const volatile T *, ptrdiff_t ); 909 forall( type T ) lvalue restrict volatile T ?[?]( restrict volatile T *, ptrdiff_t ); 910 forall( type T ) lvalue _Atomic const restrict T ?[?]( _Atomic const restrict T *, ptrdiff_t ); 911 forall( type T ) lvalue _Atomic const volatile T ?[?]( _Atomic const volatile T *, ptrdiff_t ); 912 forall( type T ) lvalue _Atomic restrict volatile T ?[?]( _Atomic restrict volatile T *, ptrdiff_t ); 913 forall( type T ) lvalue const restrict volatile T ?[?]( const restrict volatile T *, ptrdiff_t ); 914 forall( type T ) lvalue _Atomic const restrict volatile T ?[?]( _Atomic const restrict volatile T *, ptrdiff_t ); 915 \end{lstlisting} 916 \semantics 917 The interpretations of subscript expressions are the interpretations of the corresponding function 918 call expressions. 919 \begin{rationale} 920 C defines subscripting as pointer arithmetic in a way that makes \lstinline$a[i]$ and 921 \lstinline$i[a]$ equivalent. \CFA provides the equivalence through a rewrite rule to reduce the 922 number of overloadings of \lstinline$?[?]$. 923 924 Subscript expressions are rewritten as function calls that pass the first parameter by value. This 925 is somewhat unfortunate, since array-like types tend to be large. The alternative is to use the 926 rewrite rule ``\lstinline$a[b]$ \rewrite \lstinline$?[?](&(a), b)$''. However, C semantics forbid 927 this approach: the \lstinline$a$ in ``\lstinline$a[b]$'' can be an arbitrary pointer value, which 928 does not have an address. 929 930 The repetitive form of the predefined identifiers shows up a deficiency\index{deficiencies!pointers 931 to qualified types} of \CFA's type system. Type qualifiers are not included in type values, so 932 polymorphic functions that take pointers to arbitrary types often come in one flavor for each 933 possible qualification of the pointed-at type. 934 \end{rationale} 935 936 937 \subsubsection{Function calls} 938 939 \semantics 940 A \define{function designator} is an interpretation of an expression that has function type. The 941 \nonterm{postfix-expression} in a function call may have some interpretations that are function 942 designators and some that are not. 943 944 For those interpretations of the \nonterm{postfix-expression} that are not function designators, the 945 expression is rewritten and becomes a call of a function named ``\lstinline$?()$''. The valid 946 interpretations of the rewritten expression are determined in the manner described below. 947 948 Each combination of function designators and argument interpretations is considered. For those 949 interpretations of the \nonterm{postfix-expression} that are \Index{monomorphic function} 950 designators, the combination has a \Index{valid interpretation} if the function designator accepts 951 the number of arguments given, and each argument interpretation matches the corresponding explicit 952 parameter: 953 \begin{itemize} 954 \item 955 if the argument corresponds to a parameter in the function designator's prototype, the argument 956 interpretation must have the same type as the corresponding parameter, or be implicitly convertible 957 to the parameter's type 958 \item 959 if the function designator's type does not include a prototype or if the argument corresponds to 960 ``\lstinline$...$'' in a prototype, a \Index{default argument promotion} is applied to it. 961 \end{itemize} 962 The type of the valid interpretation is the return type of the function designator. 963 964 For those combinations where the interpretation of the \nonterm{postfix-expression} is a 965 \Index{polymorphic function} designator and the function designator accepts the number of arguments 966 given, there shall be at least one set of \define{implicit argument}s for the implicit parameters 967 such that 968 \begin{itemize} 969 \item 970 If the declaration of the implicit parameter uses \Index{type-class} \lstinline$type$\use{type}, the 971 implicit argument must be an object type; if it uses \lstinline$dtype$, the implicit argument must 972 be an object type or an incomplete type; and if it uses \lstinline$ftype$, the implicit argument 973 must be a function type. 974 975 \item 976 if an explicit parameter's type uses any implicit parameters, then the corresponding explicit 977 argument must have a type that is (or can be safely converted\index{safe conversion} to) the type 978 produced by substituting the implicit arguments for the implicit parameters in the explicit 979 parameter type. 980 981 \item 982 the remaining explicit arguments must match the remaining explicit parameters, as described for 983 monomorphic function designators. 984 985 \item 986 for each \Index{assertion parameter} in the function designator's type, there must be an object or 987 function with the same identifier that is visible at the call site and whose type is compatible with 988 or can be specialized to the type of the assertion declaration. 989 \end{itemize} 990 There is a valid interpretation for each such set of implicit parameters. The type of each valid 991 interpretation is the return type of the function designator with implicit parameter values 992 substituted for the implicit arguments. 993 994 A valid interpretation is ambiguous\index{ambiguous interpretation} if the function designator or 995 any of the argument interpretations is ambiguous. 996 997 Every valid interpretation whose return type is not compatible with any other valid interpretation's 998 return type is an interpretation of the function call expression. 999 1000 Every set of valid interpretations that have mutually compatible\index{compatible type} result types 1001 also produces an interpretation of the function call expression. The type of the interpretation is 1002 the \Index{composite type} of the types of the valid interpretations, and the value of the 1003 interpretation is that of the \Index{best valid interpretation}. 1004 \begin{rationale} 1005 One desirable property of a polymorphic programming language is \define{generalizability}: the 1006 ability to replace an abstraction with a more general but equivalent abstraction without requiring 1007 changes in any of the uses of the original\cite{Cormack90}. For instance, it should be possible to 1008 replace a function ``\lstinline$int f( int );$'' with ``\lstinline$forall( type T ) T f( T );$'' 1009 without affecting any calls of \lstinline$f$. 1010 1011 \CFA\index{deficiencies!generalizability} does not fully possess this property, because 1012 \Index{unsafe conversion} are not done when arguments are passed to polymorphic parameters. 1013 Consider 1014 \begin{lstlisting} 1015 float g( float, float ); 1016 int i; 1017 float f; 1018 double d; 1019 f = g( f, f ); // (1) 1020 f = g( i, f ); // (2) (safe conversion to float) 1021 f = g( d, f ); // (3) (unsafe conversion to float) 1022 \end{lstlisting} 1023 If \lstinline$g$ was replaced by ``\lstinline$forall( type T ) T g( T, T );$'', the first and second 1024 calls would be unaffected, but the third would change: \lstinline$f$ would be converted to 1025 \lstinline$double$, and the result would be a \lstinline$double$. 1026 1027 Another example is the function ``\lstinline$void h( int *);$''. This function can be passed a 1028 \lstinline$void *$ argument, but the generalization ``\lstinline$forall( type T ) void h( T *);$'' 1029 can not. In this case, \lstinline$void$ is not a valid value for \lstinline$T$ because it is not an 1030 object type. If unsafe conversions were allowed, \lstinline$T$ could be inferred to be \emph{any} 1031 object type, which is undesirable. 1032 \end{rationale} 1033 1034 \examples 1035 A function called ``\lstinline$?()$'' might be part of a numerical differentiation package. 1036 \begin{lstlisting} 1037 extern type Derivative; 1038 extern double ?()( Derivative, double ); 1039 extern Derivative derivative_of( double (*f)( double ) ); 1040 extern double sin( double ); 1041 1042 Derivative sin_dx = derivative_of( sin ); 1043 double d; 1044 d = sin_dx( 12.9 ); 1045 \end{lstlisting} 1046 Here, the only interpretation of \lstinline$sin_dx$ is as an object of type \lstinline$Derivative$. 1047 For that interpretation, the function call is treated as ``\lstinline$?()( sin_dx, 12.9 )$''. 1048 \begin{lstlisting} 1049 int f( long ); // (1) 1050 int f( int, int ); // (2) 1051 int f( int *); // (3) 1052 1053 int i = f( 5 ); // calls (1) 1054 \end{lstlisting} 1055 Function (1) provides a valid interpretation of ``\lstinline$f( 5 )$'', using an implicit 1056 \lstinline$int$ to \lstinline$long$ conversion. The other functions do not, since the second 1057 requires two arguments, and since there is no implicit conversion from \lstinline$int$ to 1058 \lstinline$int *$ that could be used with the third function. 1059 1060 \begin{lstlisting} 1061 forall( type T ) T h( T ); 1062 double d = h( 1.5 ); 1063 \end{lstlisting} 1064 ``\lstinline$1.5$'' is a \lstinline$double$ constant, so \lstinline$T$ is inferred to be 1065 \lstinline$double$, and the result of the function call is a \lstinline$double$. 1066 1067 \begin{lstlisting} 1068 forall( type T, type U ) void g( T, U ); // (4) 1069 forall( type T ) void g( T, T ); // (5) 1070 forall( type T ) void g( T, long ); // (6) 1071 void g( long, long ); // (7) 1072 double d; 1073 int i; 1074 int *p; 1075 1076 g( d, d ); // calls (5) 1077 g( d, i ); // calls (6) 1078 g( i, i ); // calls (7) 1079 g( i, p ); // calls (4) 1080 \end{lstlisting} 1081 The first call has valid interpretations for all four versions of \lstinline$g$. (6) and (7) are 1082 discarded because they involve unsafe \lstinline$double$-to-\lstinline$long$ conversions. (5) is 1083 chosen because it is less polymorphic than (4). 1084 1085 For the second call, (7) is again discarded. Of the remaining interpretations for (4), (5), and (6) 1086 (with \lstinline$i$ converted to \lstinline$long$), (6) is chosen because it is the least 1087 polymorphic. 1088 1089 The third call has valid interpretations for all of the functions; (7) is chosen since it is not 1090 polymorphic at all. 1091 1092 The fourth call has no interpretation for (5), because its arguments must have compatible type. (4) 1093 is chosen because it does not involve unsafe conversions. 1094 \begin{lstlisting} 1095 forall( type T ) T min( T, T ); 1096 double max( double, double ); 1097 context min_max( T ) {@\impl{min_max}@ 1098 T min( T, T ); 1099 T max( T, T ); 1100 } 1101 forall( type U | min_max( U ) ) void shuffle( U, U ); 1102 shuffle(9, 10); 1103 \end{lstlisting} 1104 The only possibility for \lstinline$U$ is \lstinline$double$, because that is the type used in the 1105 only visible \lstinline$max$ function. 9 and 10 must be converted to \lstinline$double$, and 1106 \lstinline$min$ must be specialized with \lstinline$T$ bound to \lstinline$double$. 1107 \begin{lstlisting} 1108 extern void q( int ); // (8) 1109 extern void q( void * ); // (9) 1110 extern void r(); 1111 q( 0 ); 1112 r( 0 ); 1113 \end{lstlisting} 1114 The \lstinline$int 0$ could be passed to (8), or the \lstinline$(void *)$ \Index{specialization} of 1115 the null pointer\index{null pointer} \lstinline$0$\use{0} could be passed to (9). The former is 1116 chosen because the \lstinline$int$ \lstinline$0$ is \Index{less polymorphic}. For 1117 the same reason, \lstinline$int$ \lstinline$0$ is passed to \lstinline$r()$, even though it has 1118 \emph{no} declared parameter types. 1119 1120 1121 \subsubsection{Structure and union members} 1122 1123 \semantics In the member selection expression ``\lstinline$s$.\lstinline$m$'', there shall be at 1124 least one interpretation of \lstinline$s$ whose type is a structure type or union type containing a 1125 member named \lstinline$m$. If two or more interpretations of \lstinline$s$ have members named 1126 \lstinline$m$ with mutually compatible types, then the expression has an \Index{ambiguous 1127 interpretation} whose type is the composite type of the types of the members. If an interpretation 1128 of \lstinline$s$ has a member \lstinline$m$ whose type is not compatible with any other 1129 \lstinline$s$'s \lstinline$m$, then the expression has an interpretation with the member's type. The 1130 expression has no other interpretations. 1131 1132 The expression ``\lstinline$p->m$'' has the same interpretations as the expression 1133 ``\lstinline$(*p).m$''. 1134 1135 1136 \subsubsection{Postfix increment and decrement operators} 1137 1138 \predefined 1139 \begin{lstlisting} 1140 _Bool ?++( volatile _Bool * ), 1141 ?++( _Atomic volatile _Bool * ); 1142 char ?++( volatile char * ), 1143 ?++( _Atomic volatile char * ); 1144 signed char ?++( volatile signed char * ), 1145 ?++( _Atomic volatile signed char * ); 1146 unsigned char ?++( volatile signed char * ), 1147 ?++( _Atomic volatile signed char * ); 1148 short int ?++( volatile short int * ), 1149 ?++( _Atomic volatile short int * ); 1150 unsigned short int ?++( volatile unsigned short int * ), 1151 ?++( _Atomic volatile unsigned short int * ); 1152 int ?++( volatile int * ), 1153 ?++( _Atomic volatile int * ); 1154 unsigned int ?++( volatile unsigned int * ), 1155 ?++( _Atomic volatile unsigned int * ); 1156 long int ?++( volatile long int * ), 1157 ?++( _Atomic volatile long int * ); 1158 long unsigned int ?++( volatile long unsigned int * ), 1159 ?++( _Atomic volatile long unsigned int * ); 1160 long long int ?++( volatile long long int * ), 1161 ?++( _Atomic volatile long long int * ); 1162 long long unsigned ?++( volatile long long unsigned int * ), 1163 ?++( _Atomic volatile long long unsigned int * ); 1164 float ?++( volatile float * ), 1165 ?++( _Atomic volatile float * ); 1166 double ?++( volatile double * ), 1167 ?++( _Atomic volatile double * ); 1168 long double ?++( volatile long double * ), 1169 ?++( _Atomic volatile long double * ); 1170 1171 forall( type T ) T * ?++( T * restrict volatile * ), 1172 * ?++( T * _Atomic restrict volatile * ); 1173 1174 forall( type T ) _Atomic T * ?++( _Atomic T * restrict volatile * ), 1175 * ?++( _Atomic T * _Atomic restrict volatile * ); 1176 1177 forall( type T ) const T * ?++( const T * restrict volatile * ), 1178 * ?++( const T * _Atomic restrict volatile * ); 1179 1180 forall( type T ) volatile T * ?++( volatile T * restrict volatile * ), 1181 * ?++( volatile T * _Atomic restrict volatile * ); 1182 1183 forall( type T ) restrict T * ?++( restrict T * restrict volatile * ), 1184 * ?++( restrict T * _Atomic restrict volatile * ); 1185 1186 forall( type T ) _Atomic const T * ?++( _Atomic const T * restrict volatile * ), 1187 * ?++( _Atomic const T * _Atomic restrict volatile * ); 1188 1189 forall( type T ) _Atomic restrict T * ?++( _Atomic restrict T * restrict volatile * ), 1190 * ?++( _Atomic restrict T * _Atomic restrict volatile * ); 1191 1192 forall( type T ) _Atomic volatile T * ?++( _Atomic volatile T * restrict volatile * ), 1193 * ?++( _Atomic volatile T * _Atomic restrict volatile * ); 1194 1195 forall( type T ) const restrict T * ?++( const restrict T * restrict volatile * ), 1196 * ?++( const restrict T * _Atomic restrict volatile * ); 1197 1198 forall( type T ) const volatile T * ?++( const volatile T * restrict volatile * ), 1199 * ?++( const volatile T * _Atomic restrict volatile * ); 1200 1201 forall( type T ) restrict volatile T * ?++( restrict volatile T * restrict volatile * ), 1202 * ?++( restrict volatile T * _Atomic restrict volatile * ); 1203 1204 forall( type T ) _Atomic const restrict T * ?++( _Atomic const restrict T * restrict volatile * ), 1205 * ?++( _Atomic const restrict T * _Atomic restrict volatile * ); 1206 1207 forall( type T ) _Atomic const volatile T * ?++( _Atomic const volatile T * restrict volatile * ), 1208 * ?++( _Atomic const volatile T * _Atomic restrict volatile * ); 1209 1210 forall( type T ) _Atomic restrict volatile T * ?++( _Atomic restrict volatile T * restrict volatile * ), 1211 * ?++( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1212 1213 forall( type T ) const restrict volatile T * ?++( const restrict volatile T * restrict volatile * ), 1214 * ?++( const restrict volatile T * _Atomic restrict volatile * ); 1215 1216 forall( type T ) _Atomic const restrict volatile T * ?++( _Atomic const restrict volatile T * restrict volatile * ), 1217 * ?++( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1218 1219 _Bool ?--( volatile _Bool * ), 1220 ?--( _Atomic volatile _Bool * ); 1221 char ?--( volatile char * ), 1222 ?--( _Atomic volatile char * ); 1223 signed char ?--( volatile signed char * ), 1224 ?--( _Atomic volatile signed char * ); 1225 unsigned char ?--( volatile signed char * ), 1226 ?--( _Atomic volatile signed char * ); 1227 short int ?--( volatile short int * ), 1228 ?--( _Atomic volatile short int * ); 1229 unsigned short int ?--( volatile unsigned short int * ), 1230 ?--( _Atomic volatile unsigned short int * ); 1231 int ?--( volatile int * ), 1232 ?--( _Atomic volatile int * ); 1233 unsigned int ?--( volatile unsigned int * ), 1234 ?--( _Atomic volatile unsigned int * ); 1235 long int ?--( volatile long int * ), 1236 ?--( _Atomic volatile long int * ); 1237 long unsigned int ?--( volatile long unsigned int * ), 1238 ?--( _Atomic volatile long unsigned int * ); 1239 long long int ?--( volatile long long int * ), 1240 ?--( _Atomic volatile long long int * ); 1241 long long unsigned ?--( volatile long long unsigned int * ), 1242 ?--( _Atomic volatile long long unsigned int * ); 1243 float ?--( volatile float * ), 1244 ?--( _Atomic volatile float * ); 1245 double ?--( volatile double * ), 1246 ?--( _Atomic volatile double * ); 1247 long double ?--( volatile long double * ), 1248 ?--( _Atomic volatile long double * ); 1249 1250 forall( type T ) T * ?--( T * restrict volatile * ), 1251 * ?--( T * _Atomic restrict volatile * ); 1252 1253 forall( type T ) _Atomic T * ?--( _Atomic T * restrict volatile * ), 1254 * ?--( _Atomic T * _Atomic restrict volatile * ); 1255 1256 forall( type T ) const T * ?--( const T * restrict volatile * ), 1257 * ?--( const T * _Atomic restrict volatile * ); 1258 1259 forall( type T ) volatile T * ?--( volatile T * restrict volatile * ), 1260 * ?--( volatile T * _Atomic restrict volatile * ); 1261 1262 forall( type T ) restrict T * ?--( restrict T * restrict volatile * ), 1263 * ?--( restrict T * _Atomic restrict volatile * ); 1264 1265 forall( type T ) _Atomic const T * ?--( _Atomic const T * restrict volatile * ), 1266 * ?--( _Atomic const T * _Atomic restrict volatile * ); 1267 1268 forall( type T ) _Atomic restrict T * ?--( _Atomic restrict T * restrict volatile * ), 1269 * ?--( _Atomic restrict T * _Atomic restrict volatile * ); 1270 1271 forall( type T ) _Atomic volatile T * ?--( _Atomic volatile T * restrict volatile * ), 1272 * ?--( _Atomic volatile T * _Atomic restrict volatile * ); 1273 1274 forall( type T ) const restrict T * ?--( const restrict T * restrict volatile * ), 1275 * ?--( const restrict T * _Atomic restrict volatile * ); 1276 1277 forall( type T ) const volatile T * ?--( const volatile T * restrict volatile * ), 1278 * ?--( const volatile T * _Atomic restrict volatile * ); 1279 1280 forall( type T ) restrict volatile T * ?--( restrict volatile T * restrict volatile * ), 1281 * ?--( restrict volatile T * _Atomic restrict volatile * ); 1282 1283 forall( type T ) _Atomic const restrict T * ?--( _Atomic const restrict T * restrict volatile * ), 1284 * ?--( _Atomic const restrict T * _Atomic restrict volatile * ); 1285 1286 forall( type T ) _Atomic const volatile T * ?--( _Atomic const volatile T * restrict volatile * ), 1287 * ?--( _Atomic const volatile T * _Atomic restrict volatile * ); 1288 1289 forall( type T ) _Atomic restrict volatile T * ?--( _Atomic restrict volatile T * restrict volatile * ), 1290 * ?--( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1291 1292 forall( type T ) const restrict volatile T * ?--( const restrict volatile T * restrict volatile * ), 1293 * ?--( const restrict volatile T * _Atomic restrict volatile * ); 1294 1295 forall( type T ) _Atomic const restrict volatile T * ?--( _Atomic const restrict volatile T * restrict volatile * ), 1296 * ?--( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1297 \end{lstlisting} 1298 For every extended integer type \lstinline$X$ there exist 1299 % Don't use predefined: keep this out of prelude.cf. 1300 \begin{lstlisting} 1301 X ?++( volatile X * ), ?++( _Atomic volatile X * ), 1302 ?--( volatile X * ), ?--( _Atomic volatile X * ); 1303 \end{lstlisting} 1304 For every complete enumerated type \lstinline$E$ there exist 1305 % Don't use predefined: keep this out of prelude.cf. 1306 \begin{lstlisting} 1307 E ?++( volatile E * ), ?++( _Atomic volatile E * ), 1308 ?--( volatile E * ), ?--( _Atomic volatile E * ); 1309 \end{lstlisting} 1310 1311 \begin{rationale} 1312 Note that ``\lstinline$++$'' and ``\lstinline$--$'' are rewritten as function calls that are given a 1313 pointer to that operand. (This is true of all operators that modify an operand.) As Hamish Macdonald 1314 has pointed out, this forces the modified operand of such expressions to be an lvalue. This 1315 partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues. 1316 \end{rationale} 1317 1318 \begin{rationale} 1319 In C, a semantic rule requires that pointer operands of increment and decrement be pointers to 1320 object types. Hence, \lstinline$void *$ objects cannot be incremented. In \CFA, the restriction 1321 follows from the use of a \lstinline$type$ parameter in the predefined function definitions, as 1322 opposed to \lstinline$dtype$, since only object types can be inferred arguments corresponding to the 1323 type parameter \lstinline$T$. 1324 \end{rationale} 1325 1326 \semantics 1327 First, each interpretation of the operand of an increment or decrement expression is considered 1328 separately. For each interpretation that is a bit-field or is declared with the 1329 \lstinline$register$\index{register@{\lstinline$register$}} \index{Itorage-class specifier}, the 1330 expression has one valid interpretation, with the type of the operand, and the expression is 1331 ambiguous if the operand is. 1332 1333 For the remaining interpretations, the expression is rewritten, and the interpretations of the 1334 expression are the interpretations of the corresponding function call. Finally, all interpretations 1335 of the expression produced for the different interpretations of the operand are combined to produce 1336 the interpretations of the expression as a whole; where interpretations have compatible result 1337 types, the best interpretations are selected in the manner described for function call expressions. 1338 1339 \examples 1340 \begin{lstlisting} 1341 volatile short int vs; vs++; // rewritten as ?++( &(vs) ) 1342 short int s; s++; 1343 const short int cs; cs++; 1344 _Atomic short int as; as++; 1345 \end{lstlisting} 1346 \begin{sloppypar} 1347 Since \lstinline$&(vs)$ has type \lstinline$volatile short int *$, the best valid interpretation of 1348 \lstinline$vs++$ calls the \lstinline$?++$ function with the \lstinline$volatile short *$ parameter. 1349 \lstinline$s++$ does the same, applying the safe conversion from \lstinline$short int *$ to 1350 \lstinline$volatile short int *$. Note that there is no conversion that adds an \lstinline$_Atomic$ 1351 qualifier, so the \lstinline$_Atomic volatile short int$ overloading does not provide a valid 1352 interpretation. 1353 \end{sloppypar} 1354 1355 There is no safe conversion from \lstinline$const short int *$ to \lstinline$volatile short int *$, 1356 and no \lstinline$?++$ function that accepts a \lstinline$const *$ parameter, so \lstinline$cs++$ 1357 has no valid interpretations. 1358 1359 The best valid interpretation of \lstinline$as++$ calls the \lstinline$short ?++$ function with the 1360 \lstinline$_Atomic volatile short int *$ parameter, applying a safe conversion to add the 1361 \lstinline$volatile$ qualifier. 1362 1363 \begin{lstlisting} 1364 char * const restrict volatile * restrict volatile pqpc; pqpc++ 1365 char * * restrict volatile ppc; ppc++; 1366 \end{lstlisting} 1367 Since \lstinline$&(pqpc)$ has type \lstinline$char * const restrict volatile * restrict volatile *$, 1368 the best valid interpretation of \lstinline$pqpc++$ calls the polymorphic \lstinline$?++$ function 1369 with the \lstinline$const restrict volatile T * restrict volatile *$ parameter, inferring 1370 \lstinline$T$ to be \lstinline$char *$. 1371 1372 \begin{sloppypar} 1373 \lstinline$ppc++$ calls the same function, again inferring \lstinline$T$ to be \lstinline$char *$, 1374 and using the safe conversions from \lstinline$T$ to \lstinline$T const restrict volatile$. 1375 \end{sloppypar} 1376 1377 \begin{rationale} 1378 Increment and decrement expressions show up a deficiency of \CFA's type system. There is no such 1379 thing as a pointer to a register object or bit-field\index{deficiencies!pointers to bit-fields}. 1380 Therefore, there is no way to define a function that alters them, and hence no way to define 1381 increment and decrement functions for them. As a result, the semantics of increment and decrement 1382 expressions must treat them specially. This holds true for all of the operators that may modify 1383 such objects. 1384 \end{rationale} 1385 1386 \begin{rationale} 1387 The polymorphic overloadings for pointer increment and decrement can be understood by considering 1388 increasingly complex types. 1389 \begin{enumerate} 1390 \item 1391 ``\lstinline$char * p; p++;$''. The argument to \lstinline$?++$ has type \lstinline$char * *$, and 1392 the result has type \lstinline$char *$. The expression would be valid if \lstinline$?++$ were 1393 declared by 1394 \begin{lstlisting} 1395 forall( type T ) T * ?++( T * * ); 1396 \end{lstlisting} 1397 with \lstinline$T$ inferred to be \lstinline$char$. 1398 1399 \item 1400 ``\lstinline$char *restrict volatile qp; qp++$''. The result again has type \lstinline$char *$, but 1401 the argument now has type \lstinline$char *restrict volatile *$, so it cannot be passed to the 1402 hypothetical function declared in point 1. Hence the actual predefined function is 1403 \begin{lstlisting} 1404 forall( type T ) T * ?++( T * restrict volatile * ); 1405 \end{lstlisting} 1406 which also accepts a \lstinline$char * *$ argument, because of the safe conversions that add 1407 \lstinline$volatile$ and \lstinline$restrict$ qualifiers. (The parameter is not const-qualified, so 1408 constant pointers cannot be incremented.) 1409 1410 \item 1411 ``\lstinline$char *_Atomic ap; ap++$''. The result again has type \lstinline$char *$, but no safe 1412 conversion adds an \lstinline$_Atomic$ qualifier, so the function in point 2 is not applicable. A 1413 separate overloading of \lstinline$?++$ is required. 1414 1415 \item 1416 ``\lstinline$char const volatile * pq; pq++$''. Here the result has type 1417 \lstinline$char const volatile *$, so a new overloading is needed: 1418 \begin{lstlisting} 1419 forall( type T ) T const volatile * ?++( T const volatile *restrict volatile * ); 1420 \end{lstlisting} 1421 One overloading is needed for each combination of qualifiers in the pointed-at 1422 type\index{deficiencies!pointers to qualified types}. 1423 1424 \item 1425 ``\lstinline$float *restrict * prp; prp++$''. The \lstinline$restrict$ qualifier is handled just 1426 like \lstinline$const$ and \lstinline$volatile$ in the previous case: 1427 \begin{lstlisting} 1428 forall( type T ) T restrict * ?++( T restrict *restrict volatile * ); 1429 \end{lstlisting} 1430 with \lstinline$T$ inferred to be \lstinline$float *$. This looks odd, because {\c11} contains a 1431 constraint that requires restrict-qualified types to be pointer-to-object types, and \lstinline$T$ 1432 is not syntactically a pointer type. \CFA loosens the constraint. 1433 \end{enumerate} 1434 \end{rationale} 1435 1436 1437 \subsubsection{Compound literals} 1438 1439 \semantics 1440 A compound literal has one interpretation, with the type given by the \nonterm{type-name} of the 1441 compound literal. 1442 1443 1444 \subsection{Unary operators} 1445 1446 \begin{syntax} 1447 \lhs{unary-expression} 1448 \rhs \nonterm{postfix-expression} 1449 \rhs \lstinline$++$ \nonterm{unary-expression} 1450 \rhs \lstinline$--$ \nonterm{unary-expression} 1451 \rhs \nonterm{unary-operator} \nonterm{cast-expression} 1452 \rhs \lstinline$sizeof$ \nonterm{unary-expression} 1453 \rhs \lstinline$sizeof$ \lstinline$($ \nonterm{type-name} \lstinline$)$ 1454 \lhs{unary-operator} one of \rhs \lstinline$&$ \lstinline$*$ \lstinline$+$ \lstinline$-$ \lstinline$~$ \lstinline$!$ 1455 \end{syntax} 1456 1457 \rewriterules 1458 \begin{lstlisting} 1459 *a @\rewrite@ *?(a) @\use{*?}@ 1460 +a @\rewrite@ +?(a) @\use{+?}@ 1461 -a @\rewrite@ -?(a) @\use{-?}@ 1462 ~a @\rewrite@ ~?(a) @\use{~?}@ 1463 !a @\rewrite@ !?(a) @\use{"!?}@ 1464 ++a @\rewrite@ ++?(&(a)) @\use{++?}@ 1465 --a @\rewrite@ --?(&(a)) @\use{--?}@ 1466 \end{lstlisting} 1467 1468 1469 \subsubsection{Prefix increment and decrement operators} 1470 1471 \predefined 1472 \begin{lstlisting} 1473 _Bool ++?( volatile _Bool * ), 1474 ++?( _Atomic volatile _Bool * ); 1475 char ++?( volatile char * ), 1476 ++?( _Atomic volatile char * ); 1477 signed char ++?( volatile signed char * ), 1478 ++?( _Atomic volatile signed char * ); 1479 unsigned char ++?( volatile signed char * ), 1480 ++?( _Atomic volatile signed char * ); 1481 short int ++?( volatile short int * ), 1482 ++?( _Atomic volatile short int * ); 1483 unsigned short int ++?( volatile unsigned short int * ), 1484 ++?( _Atomic volatile unsigned short int * ); 1485 int ++?( volatile int * ), 1486 ++?( _Atomic volatile int * ); 1487 unsigned int ++?( volatile unsigned int * ), 1488 ++?( _Atomic volatile unsigned int * ); 1489 long int ++?( volatile long int * ), 1490 ++?( _Atomic volatile long int * ); 1491 long unsigned int ++?( volatile long unsigned int * ), 1492 ++?( _Atomic volatile long unsigned int * ); 1493 long long int ++?( volatile long long int * ), 1494 ++?( _Atomic volatile long long int * ); 1495 long long unsigned ++?( volatile long long unsigned int * ), 1496 ++?( _Atomic volatile long long unsigned int * ); 1497 float ++?( volatile float * ), 1498 ++?( _Atomic volatile float * ); 1499 double ++?( volatile double * ), 1500 ++?( _Atomic volatile double * ); 1501 long double ++?( volatile long double * ), 1502 ++?( _Atomic volatile long double * ); 1503 1504 forall( type T ) T * ++?( T * restrict volatile * ), 1505 * ++?( T * _Atomic restrict volatile * ); 1506 1507 forall( type T ) _Atomic T * ++?( _Atomic T * restrict volatile * ), 1508 * ++?( _Atomic T * _Atomic restrict volatile * ); 1509 1510 forall( type T ) const T * ++?( const T * restrict volatile * ), 1511 * ++?( const T * _Atomic restrict volatile * ); 1512 1513 forall( type T ) volatile T * ++?( volatile T * restrict volatile * ), 1514 * ++?( volatile T * _Atomic restrict volatile * ); 1515 1516 forall( type T ) restrict T * ++?( restrict T * restrict volatile * ), 1517 * ++?( restrict T * _Atomic restrict volatile * ); 1518 1519 forall( type T ) _Atomic const T * ++?( _Atomic const T * restrict volatile * ), 1520 * ++?( _Atomic const T * _Atomic restrict volatile * ); 1521 1522 forall( type T ) _Atomic volatile T * ++?( _Atomic volatile T * restrict volatile * ), 1523 * ++?( _Atomic volatile T * _Atomic restrict volatile * ); 1524 1525 forall( type T ) _Atomic restrict T * ++?( _Atomic restrict T * restrict volatile * ), 1526 * ++?( _Atomic restrict T * _Atomic restrict volatile * ); 1527 1528 forall( type T ) const volatile T * ++?( const volatile T * restrict volatile * ), 1529 * ++?( const volatile T * _Atomic restrict volatile * ); 1530 1531 forall( type T ) const restrict T * ++?( const restrict T * restrict volatile * ), 1532 * ++?( const restrict T * _Atomic restrict volatile * ); 1533 1534 forall( type T ) restrict volatile T * ++?( restrict volatile T * restrict volatile * ), 1535 * ++?( restrict volatile T * _Atomic restrict volatile * ); 1536 1537 forall( type T ) _Atomic const volatile T * ++?( _Atomic const volatile T * restrict volatile * ), 1538 * ++?( _Atomic const volatile T * _Atomic restrict volatile * ); 1539 1540 forall( type T ) _Atomic const restrict T * ++?( _Atomic const restrict T * restrict volatile * ), 1541 * ++?( _Atomic const restrict T * _Atomic restrict volatile * ); 1542 1543 forall( type T ) _Atomic restrict volatile T * ++?( _Atomic restrict volatile T * restrict volatile * ), 1544 * ++?( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1545 1546 forall( type T ) const restrict volatile T * ++?( const restrict volatile T * restrict volatile * ), 1547 * ++?( const restrict volatile T * _Atomic restrict volatile * ); 1548 1549 forall( type T ) _Atomic const restrict volatile T * ++?( _Atomic const restrict volatile T * restrict volatile * ), 1550 * ++?( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1551 1552 _Bool --?( volatile _Bool * ), 1553 --?( _Atomic volatile _Bool * ); 1554 char --?( volatile char * ), 1555 --?( _Atomic volatile char * ); 1556 signed char --?( volatile signed char * ), 1557 --?( _Atomic volatile signed char * ); 1558 unsigned char --?( volatile signed char * ), 1559 --?( _Atomic volatile signed char * ); 1560 short int --?( volatile short int * ), 1561 --?( _Atomic volatile short int * ); 1562 unsigned short int --?( volatile unsigned short int * ), 1563 --?( _Atomic volatile unsigned short int * ); 1564 int --?( volatile int * ), 1565 --?( _Atomic volatile int * ); 1566 unsigned int --?( volatile unsigned int * ), 1567 --?( _Atomic volatile unsigned int * ); 1568 long int --?( volatile long int * ), 1569 --?( _Atomic volatile long int * ); 1570 long unsigned int --?( volatile long unsigned int * ), 1571 --?( _Atomic volatile long unsigned int * ); 1572 long long int --?( volatile long long int * ), 1573 --?( _Atomic volatile long long int * ); 1574 long long unsigned --?( volatile long long unsigned int * ), 1575 --?( _Atomic volatile long long unsigned int * ); 1576 float --?( volatile float * ), 1577 --?( _Atomic volatile float * ); 1578 double --?( volatile double * ), 1579 --?( _Atomic volatile double * ); 1580 long double --?( volatile long double * ), 1581 --?( _Atomic volatile long double * ); 1582 1583 forall( type T ) T * --?( T * restrict volatile * ), 1584 * --?( T * _Atomic restrict volatile * ); 1585 1586 forall( type T ) _Atomic T * --?( _Atomic T * restrict volatile * ), 1587 * --?( _Atomic T * _Atomic restrict volatile * ); 1588 1589 forall( type T ) const T * --?( const T * restrict volatile * ), 1590 * --?( const T * _Atomic restrict volatile * ); 1591 1592 forall( type T ) volatile T * --?( volatile T * restrict volatile * ), 1593 * --?( volatile T * _Atomic restrict volatile * ); 1594 1595 forall( type T ) restrict T * --?( restrict T * restrict volatile * ), 1596 * --?( restrict T * _Atomic restrict volatile * ); 1597 1598 forall( type T ) _Atomic const T * --?( _Atomic const T * restrict volatile * ), 1599 * --?( _Atomic const T * _Atomic restrict volatile * ); 1600 1601 forall( type T ) _Atomic volatile T * --?( _Atomic volatile T * restrict volatile * ), 1602 * --?( _Atomic volatile T * _Atomic restrict volatile * ); 1603 1604 forall( type T ) _Atomic restrict T * --?( _Atomic restrict T * restrict volatile * ), 1605 * --?( _Atomic restrict T * _Atomic restrict volatile * ); 1606 1607 forall( type T ) const volatile T * --?( const volatile T * restrict volatile * ), 1608 * --?( const volatile T * _Atomic restrict volatile * ); 1609 1610 forall( type T ) const restrict T * --?( const restrict T * restrict volatile * ), 1611 * --?( const restrict T * _Atomic restrict volatile * ); 1612 1613 forall( type T ) restrict volatile T * --?( restrict volatile T * restrict volatile * ), 1614 * --?( restrict volatile T * _Atomic restrict volatile * ); 1615 1616 forall( type T ) _Atomic const volatile T * --?( _Atomic const volatile T * restrict volatile * ), 1617 * --?( _Atomic const volatile T * _Atomic restrict volatile * ); 1618 1619 forall( type T ) _Atomic const restrict T * --?( _Atomic const restrict T * restrict volatile * ), 1620 * --?( _Atomic const restrict T * _Atomic restrict volatile * ); 1621 1622 forall( type T ) _Atomic restrict volatile T * --?( _Atomic restrict volatile T * restrict volatile * ), 1623 * --?( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1624 1625 forall( type T ) const restrict volatile T * --?( const restrict volatile T * restrict volatile * ), 1626 * --?( const restrict volatile T * _Atomic restrict volatile * ); 1627 1628 forall( type T ) _Atomic const restrict volatile T * --?( _Atomic const restrict volatile T * restrict volatile * ), 1629 * --?( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1630 \end{lstlisting} 1631 For every extended integer type \lstinline$X$ there exist 1632 % Don't use predefined: keep this out of prelude.cf. 1633 \begin{lstlisting} 1634 X ++?( volatile X * ), 1635 ++?( _Atomic volatile X * ), 1636 --?( volatile X * ), 1637 --?( _Atomic volatile X * ); 1638 \end{lstlisting} 1639 For every complete enumerated type \lstinline$E$ there exist 1640 % Don't use predefined: keep this out of prelude.cf. 1641 \begin{lstlisting} 1642 E ++?( volatile E * ), 1643 ++?( _Atomic volatile E * ), 1644 ?--( volatile E * ), 1645 ?--( _Atomic volatile E * ); 1646 \end{lstlisting} 1647 1648 \semantics 1649 The interpretations of prefix increment and decrement expressions are 1650 determined in the same way as the interpretations of postfix increment and 1651 decrement expressions. 1652 1653 1654 \subsubsection{Address and indirection operators} 1655 1656 \predefined 1657 \begin{lstlisting} 1658 forall( type T ) lvalue T *?( T * ); 1659 forall( type T ) _Atomic lvalue T *?( _Atomic T * ); 1660 forall( type T ) const lvalue T *?( const T * ); 1661 forall( type T ) volatile lvalue T *?( volatile T * ); 1662 forall( type T ) restrict lvalue T *?( restrict T * ); 1663 forall( type T ) _Atomic const lvalue T *?( _Atomic const T * ); 1664 forall( type T ) _Atomic volatile lvalue T *?( _Atomic volatile T * ); 1665 forall( type T ) _Atomic restrict lvalue T *?( _Atomic restrict T * ); 1666 forall( type T ) const volatile lvalue T *?( const volatile T * ); 1667 forall( type T ) const restrict lvalue T *?( const restrict T * ); 1668 forall( type T ) restrict volatile lvalue T *?( restrict volatile T * ); 1669 forall( type T ) _Atomic const volatile lvalue T *?( _Atomic const volatile T * ); 1670 forall( type T ) _Atomic const restrict lvalue T *?( _Atomic const restrict T * ); 1671 forall( type T ) _Atomic restrict volatile lvalue T *?( _Atomic restrict volatile T * ); 1672 forall( type T ) const restrict volatile lvalue T *?( const restrict volatile T * ); 1673 forall( type T ) _Atomic const restrict volatile lvalue T *?( _Atomic const restrict volatile T * ); 1674 1675 forall( ftype FT ) FT *?( FT * ); 1676 \end{lstlisting} 1677 1678 \constraints 1679 The operand of the unary ``\lstinline$&$'' operator shall have exactly one 1680 \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous. 1681 1682 \semantics 1683 The ``\lstinline$&$'' expression has one interpretation which is of type \lstinline$T *$, where 1684 \lstinline$T$ is the type of the operand. 1685 1686 The interpretations of an indirection expression are the interpretations of the corresponding 1687 function call. 1688 1689 1690 \subsubsection{Unary arithmetic operators} 1691 1692 \predefined 1693 \begin{lstlisting} 1694 int 1695 +?( int ), 1696 -?( int ), 1697 ~?( int ); 1698 unsigned int 1699 +?( unsigned int ), 1700 -?( unsigned int ), 1701 ~?( unsigned int ); 1702 long int 1703 +?( long int ), 1704 -?( long int ), 1705 ~?( long int ); 1706 long unsigned int 1707 +?( long unsigned int ), 1708 -?( long unsigned int ), 1709 ~?( long unsigned int ); 1710 long long int 1711 +?( long long int ), 1712 -?( long long int ), 1713 ~?( long long int ); 1714 long long unsigned int 1715 +?( long long unsigned int ), 1716 -?( long long unsigned int ), 1717 ~?( long long unsigned int ); 1718 float 1719 +?( float ), 1720 -?( float ); 1721 double 1722 +?( double ), 1723 -?( double ); 1724 long double 1725 +?( long double ), 1726 -?( long double ); 1727 _Complex float 1728 +?( _Complex float ), 1729 -?( _Complex float ); 1730 _Complex double 1731 +?( _Complex double ), 1732 -?( _Complex double ); 1733 _Complex long double 1734 +?( _Complex long double ), 1735 -?( _Complex long double ); 1736 1737 int !?( int ), 1738 !?( unsigned int ), 1739 !?( long ), 1740 !?( long unsigned int ), 1741 !?( long long int ), 1742 !?( long long unsigned int ), 1743 !?( float ), 1744 !?( double ), 1745 !?( long double ), 1746 !?( _Complex float ), 1747 !?( _Complex double ), 1748 !?( _Complex long double ); 1749 1750 forall( dtype DT ) int !?( const restrict volatile DT * ); 1751 forall( dtype DT ) int !?( _Atomic const restrict volatile DT * ); 1752 forall( ftype FT ) int !?( FT * ); 1753 \end{lstlisting} 1754 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 1755 rank of \lstinline$int$ there exist 1756 % Don't use predefined: keep this out of prelude.cf. 1757 \begin{lstlisting} 1758 X +?( X ), -?( X ), ~?( X ); 1759 int !?( X ); 1760 \end{lstlisting} 1761 1762 \semantics 1763 The interpretations of a unary arithmetic expression are the interpretations of the corresponding 1764 function call. 1765 1766 \examples 1767 \begin{lstlisting} 1768 long int li; 1769 void eat_double( double );@\use{eat_double}@ 1770 1771 eat_double(-li ); // @\rewrite@ eat_double( -?( li ) ); 1772 \end{lstlisting} 1773 The valid interpretations of ``\lstinline$-li$'' (assuming no extended integer types exist) are 1774 \begin{center} 1775 \begin{tabular}{llc} 1776 interpretation & result type & expression conversion cost \\ 1777 \hline 1778 \lstinline$-?( (int)li )$ & \lstinline$int$ & (unsafe) \\ 1779 \lstinline$-?( (unsigned)li)$ & \lstinline$unsigned int$ & (unsafe) \\ 1780 \lstinline$-?( (long)li)$ & \lstinline$long$ & 0 \\ 1781 \lstinline$-?( (long unsigned int)li)$ & \lstinline$long unsigned int$ & 1 \\ 1782 \lstinline$-?( (long long int)li)$ & \lstinline$long long int$ & 2 \\ 1783 \lstinline$-?( (long long unsigned int)li)$ & \lstinline$long long unsigned int$& 3 \\ 1784 \lstinline$-?( (float)li)$ & \lstinline$float$ & 4 \\ 1785 \lstinline$-?( (double)li)$ & \lstinline$double$ & 5 \\ 1786 \lstinline$-?( (long double)li)$ & \lstinline$long double$ & 6 \\ 1787 \lstinline$-?( (_Complex float)li)$ & \lstinline$float$ & (unsafe) \\ 1788 \lstinline$-?( (_Complex double)li)$ & \lstinline$double$ & (unsafe) \\ 1789 \lstinline$-?( (_Complex long double)li)$ & \lstinline$long double$ & (unsafe) \\ 1790 \end{tabular} 1791 \end{center} 1792 The valid interpretations of the \lstinline$eat_double$ call, with the cost of the argument 1793 conversion and the cost of the entire expression, are 1794 \begin{center} 1795 \begin{tabular}{lcc} 1796 interpretation & argument cost & expression cost \\ 1797 \hline 1798 \lstinline$eat_double( (double)-?( (int)li) )$ & 7 & (unsafe) \\ 1799 \lstinline$eat_double( (double)-?( (unsigned)li) )$ & 6 & (unsafe) \\ 1800 \lstinline$eat_double( (double)-?(li) )$ & 5 & \(0+5=5\) \\ 1801 \lstinline$eat_double( (double)-?( (long unsigned int)li) )$ & 4 & \(1+4=5\) \\ 1802 \lstinline$eat_double( (double)-?( (long long int)li) )$ & 3 & \(2+3=5\) \\ 1803 \lstinline$eat_double( (double)-?( (long long unsigned int)li) )$& 2 & \(3+2=5\) \\ 1804 \lstinline$eat_double( (double)-?( (float)li) )$ & 1 & \(4+1=5\) \\ 1805 \lstinline$eat_double( (double)-?( (double)li) )$ & 0 & \(5+0=5\) \\ 1806 \lstinline$eat_double( (double)-?( (long double)li) )$ & (unsafe) & (unsafe) \\ 1807 \lstinline$eat_double( (double)-?( (_Complex float)li) )$ & (unsafe) & (unsafe) \\ 1808 \lstinline$eat_double( (double)-?( (_Complex double)li) )$ & (unsafe) & (unsafe) \\ 1809 \lstinline$eat_double( (double)-?( (_Complex long double)li) )$ & (unsafe) & (unsafe) \\ 1810 \end{tabular} 1811 \end{center} 1812 Each has result type \lstinline$void$, so the best must be selected. The interpretations involving 1813 unsafe conversions are discarded. The remainder have equal expression conversion costs, so the 1814 ``highest argument conversion cost'' rule is invoked, and the chosen interpretation is 1815 \lstinline$eat_double( (double)-?(li) )$. 1816 1817 1818 \subsubsection{The \lstinline$sizeof$ and \lstinline$_Alignof$ operators} 1819 1820 \constraints 1821 The operand of \lstinline$sizeof$ or \lstinline$_Alignof$ shall not be \lstinline$type$, 1822 \lstinline$dtype$, or \lstinline$ftype$. 1823 1824 When the \lstinline$sizeof$\use{sizeof} operator is applied to an expression, the expression shall 1825 have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall 1826 be unambiguous. \semantics A \lstinline$sizeof$ or \lstinline$_Alignof$ expression has one 1827 interpretation, of type \lstinline$size_t$. 1828 1829 When \lstinline$sizeof$ is applied to an identifier declared by a \nonterm{type-declaration} or a 1830 \nonterm{type-parameter}, it yields the size in bytes of the type that implements the operand. When 1831 the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the 1832 expression is not a constant expression. 1833 1834 When \lstinline$_Alignof$ is applied to an identifier declared by a \nonterm{type-declaration} or a 1835 \nonterm{type-parameter}, it yields the alignment requirement of the type that implements the 1836 operand. When the operand is an opaque type or an inferred type parameter\index{inferred 1837 parameter}, the expression is not a constant expression. 1838 \begin{rationale} 1839 \begin{lstlisting} 1840 type Pair = struct { int first, second; }; 1841 size_t p_size = sizeof(Pair); // constant expression 1842 1843 extern type Rational;@\use{Rational}@ 1844 size_t c_size = sizeof(Rational); // non-constant expression 1845 1846 forall(type T) T f(T p1, T p2) { 1847 size_t t_size = sizeof(T); // non-constant expression 1848 ... 1849 } 1850 \end{lstlisting} 1851 ``\lstinline$sizeof Rational$'', although not statically known, is fixed. Within \lstinline$f()$, 1852 ``\lstinline$sizeof(T)$'' is fixed for each call of \lstinline$f()$, but may vary from call to call. 1853 \end{rationale} 1854 1855 1856 \subsection{Cast operators} 1857 1858 \begin{syntax} 1859 \lhs{cast-expression} 1860 \rhs \nonterm{unary-expression} 1861 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \nonterm{cast-expression} 1862 \end{syntax} 1863 1864 \constraints 1865 The \nonterm{type-name} in a \nonterm{cast-expression} shall not be \lstinline$type$, 1866 \lstinline$dtype$, or \lstinline$ftype$. 1867 1868 \semantics 1869 1870 In a \Index{cast expression} ``\lstinline$($\nonterm{type-name}\lstinline$)e$'', if 1871 \nonterm{type-name} is the type of an interpretation of \lstinline$e$, then that interpretation is 1872 the only interpretation of the cast expression; otherwise, \lstinline$e$ shall have some 1873 interpretation that can be converted to \nonterm{type-name}, and the interpretation of the cast 1874 expression is the cast of the interpretation that can be converted at the lowest cost. The cast 1875 expression's interpretation is ambiguous\index{ambiguous interpretation} if more than one 1876 interpretation can be converted at the lowest cost or if the selected interpretation is ambiguous. 1877 1878 \begin{rationale} 1879 Casts can be used to eliminate ambiguity in expressions by selecting interpretations of 1880 subexpressions, and to specialize polymorphic functions and values. 1881 \end{rationale} 1882 1883 1884 \subsection{Multiplicative operators} 1885 1886 \begin{syntax} 1887 \lhs{multiplicative-expression} 1888 \rhs \nonterm{cast-expression} 1889 \rhs \nonterm{multiplicative-expression} \lstinline$*$ \nonterm{cast-expression} 1890 \rhs \nonterm{multiplicative-expression} \lstinline$/$ \nonterm{cast-expression} 1891 \rhs \nonterm{multiplicative-expression} \lstinline$%$ \nonterm{cast-expression} 1892 \end{syntax} 1893 1894 \rewriterules 1895 \begin{lstlisting} 1896 a * b @\rewrite@ ?*?( a, b )@\use{?*?}@ 1897 a / b @\rewrite@ ?/?( a, b )@\use{?/?}@ 1898 a % b @\rewrite@ ?%?( a, b )@\use{?%?}@ 1899 \end{lstlisting} 1900 1901 \predefined 1902 \begin{lstlisting} 1903 int?*?( int, int ), 1904 ?/?( int, int ), 1905 ?%?( int, int ); 1906 unsigned int?*?( unsigned int, unsigned int ), 1907 ?/?( unsigned int, unsigned int ), 1908 ?%?( unsigned int, unsigned int ); 1909 long int?*?( long int, long int ), 1910 ?/?( long, long ), 1911 ?%?( long, long ); 1912 long unsigned int?*?( long unsigned int, long unsigned int ), 1913 ?/?( long unsigned int, long unsigned int ), 1914 ?%?( long unsigned int, long unsigned int ); 1915 long long int?*?( long long int, long long int ), 1916 ?/?( long long int, long long int ), 1917 ?%?( long long int, long long int ); 1918 long long unsigned int ?*?( long long unsigned int, long long unsigned int ), 1919 ?/?( long long unsigned int, long long unsigned int ), 1920 ?%?( long long unsigned int, long long unsigned int ); 1921 float?*?( float, float ), 1922 ?/?( float, float ); 1923 double?*?( double, double ), 1924 ?/?( double, double ); 1925 long double?*?( long double, long double ), 1926 ?/?( long double, long double ); 1927 _Complex float?*?( float, _Complex float ), 1928 ?/?( float, _Complex float ), 1929 ?*?( _Complex float, float ), 1930 ?/?( _Complex float, float ), 1931 ?*?( _Complex float, _Complex float ), 1932 ?/?( _Complex float, _Complex float ); 1933 _Complex double?*?( double, _Complex double ), 1934 ?/?( double, _Complex double ), 1935 ?*?( _Complex double, double ), 1936 ?/?( _Complex double, double ), 1937 ?*?( _Complex double, _Complex double ), 1938 ?/?( _Complex double, _Complex double ); 1939 _Complex long double?*?( long double, _Complex long double ), 1940 ?/?( long double, _Complex long double ), 1941 ?*?( _Complex long double, long double ), 1942 ?/?( _Complex long double, long double ), 1943 ?*?( _Complex long double, _Complex long double ), 1944 ?/?( _Complex long double, _Complex long double ); 1945 \end{lstlisting} 1946 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 1947 rank of \lstinline$int$ there exist 1948 % Don't use predefined: keep this out of prelude.cf. 1949 \begin{lstlisting} 1950 X ?*?( X ), ?/?( X ), ?%?( X ); 1951 \end{lstlisting} 1952 1953 \begin{rationale} 1954 {\c11} does not include conversions from the \Index{real type}s to \Index{complex type}s in the 1955 \Index{usual arithmetic conversion}s. Instead it specifies conversion of the result of binary 1956 operations on arguments from mixed type domains. \CFA's predefined operators match that pattern. 1957 \end{rationale} 1958 1959 \semantics 1960 The interpretations of multiplicative expressions are the interpretations of the corresponding 1961 function call. 1962 1963 \examples 1964 \begin{lstlisting} 1965 int i; 1966 long li; 1967 void eat_double( double );@\use{eat_double}@ 1968 eat_double( li % i ); 1969 \end{lstlisting} 1970 ``\lstinline$li % i$'' is rewritten as ``\lstinline$?%?(li, i )$''. The valid interpretations 1971 of \lstinline$?%?(li, i )$, the cost\index{conversion cost} of converting their arguments, and 1972 the cost of converting the result to \lstinline$double$ (assuming no extended integer types are 1973 present ) are 1974 \begin{center} 1975 \begin{tabular}{lcc} 1976 interpretation & argument cost & result cost \\ 1977 \hline 1978 \lstinline$ ?%?( (int)li, i )$ & (unsafe) & 6 \\ 1979 \lstinline$ ?%?( (unsigned)li,(unsigned)i )$ & (unsafe) & 5 \\ 1980 \lstinline$ ?%?(li,(long)i )$ & 1 & 4 \\ 1981 \lstinline$ ?%?( (long unsigned)li,(long unsigned)i )$ & 3 & 3 \\ 1982 \lstinline$ ?%?( (long long)li,(long long)i )$ & 5 & 2 \\ 1983 \lstinline$ ?%?( (long long unsigned)li, (long long unsigned)i )$ & 7 & 1 \\ 1984 \end{tabular} 1985 \end{center} 1986 The best interpretation of \lstinline$eat_double( li, i )$ is 1987 \lstinline$eat_double( (double)?%?(li, (long)i ))$, which has no unsafe conversions and the 1988 lowest total cost. 1989 1990 \begin{rationale} 1991 {\c11} defines most arithmetic operations to apply an \Index{integer promotion} to any argument that 1992 belongs to a type that has an \Index{integer conversion rank} less than that of \lstinline$int$.If 1993 \lstinline$s$ is a \lstinline$short int$, ``\lstinline$s *s$'' does not have type \lstinline$short int$; 1994 it is treated as ``\lstinline$( (int)s ) * ( (int)s )$'', and has type \lstinline$int$. \CFA matches 1995 that pattern; it does not predefine ``\lstinline$short ?*?( short, short )$''. 1996 1997 These ``missing'' operators limit polymorphism. Consider 1998 \begin{lstlisting} 1999 forall( type T | T ?*?( T, T ) ) T square( T ); 2000 short s; 2001 square( s ); 2002 \end{lstlisting} 2003 Since \CFA does not define a multiplication operator for \lstinline$short int$, 2004 \lstinline$square( s )$ is treated as \lstinline$square( (int)s )$, and the result has type 2005 \lstinline$int$. This is mildly surprising, but it follows the {\c11} operator pattern. 2006 2007 A more troubling example is 2008 \begin{lstlisting} 2009 forall( type T | ?*?( T, T ) ) T product( T[], int n ); 2010 short sa[5]; 2011 product( sa, 5); 2012 \end{lstlisting} 2013 This has no valid interpretations, because \CFA has no conversion from ``array of 2014 \lstinline$short int$'' to ``array of \lstinline$int$''. The alternatives in such situations 2015 include 2016 \begin{itemize} 2017 \item 2018 Defining monomorphic overloadings of \lstinline$product$ for \lstinline$short$ and the other 2019 ``small'' types. 2020 \item 2021 Defining ``\lstinline$short ?*?( short, short )$'' within the scope containing the call to 2022 \lstinline$product$. 2023 \item 2024 Defining \lstinline$product$ to take as an argument a conversion function from the ``small'' type to 2025 the operator's argument type. 2026 \end{itemize} 2027 \end{rationale} 2028 2029 2030 \subsection{Additive operators} 2031 2032 \begin{syntax} 2033 \lhs{additive-expression} 2034 \rhs \nonterm{multiplicative-expression} 2035 \rhs \nonterm{additive-expression} \lstinline$+$ \nonterm{multiplicative-expression} 2036 \rhs \nonterm{additive-expression} \lstinline$-$ \nonterm{multiplicative-expression} 2037 \end{syntax} 2038 2039 \rewriterules 2040 \begin{lstlisting} 2041 a + b @\rewrite@ ?+?( a, b )@\use{?+?}@ 2042 a - b @\rewrite@ ?-?( a, b )@\use{?-?}@ 2043 \end{lstlisting} 2044 2045 \predefined 2046 \begin{lstlisting} 2047 int?+?( int, int ), 2048 ?-?( int, int ); 2049 unsigned int?+?( unsigned int, unsigned int ), 2050 ?-?( unsigned int, unsigned int ); 2051 long int?+?( long int, long int ), 2052 ?-?( long int, long int ); 2053 long unsigned int?+?( long unsigned int, long unsigned int ), 2054 ?-?( long unsigned int, long unsigned int ); 2055 long long int?+?( long long int, long long int ), 2056 ?-?( long long int, long long int ); 2057 long long unsigned int ?+?( long long unsigned int, long long unsigned int ), 2058 ?-?( long long unsigned int, long long unsigned int ); 2059 float?+?( float, float ), 2060 ?-?( float, float ); 2061 double?+?( double, double ), 2062 ?-?( double, double ); 2063 long double?+?( long double, long double ), 2064 ?-?( long double, long double ); 2065 _Complex float?+?( _Complex float, float ), 2066 ?-?( _Complex float, float ), 2067 ?+?( float, _Complex float ), 2068 ?-?( float, _Complex float ), 2069 ?+?( _Complex float, _Complex float ), 2070 ?-?( _Complex float, _Complex float ); 2071 _Complex double?+?( _Complex double, double ), 2072 ?-?( _Complex double, double ), 2073 ?+?( double, _Complex double ), 2074 ?-?( double, _Complex double ), 2075 ?+?( _Complex double, _Complex double ), 2076 ?-?( _Complex double, _Complex double ); 2077 _Complex long double?+?( _Complex long double, long double ), 2078 ?-?( _Complex long double, long double ), 2079 ?+?( long double, _Complex long double ), 2080 ?-?( long double, _Complex long double ), 2081 ?+?( _Complex long double, _Complex long double ), 2082 ?-?( _Complex long double, _Complex long double ); 2083 2084 forall( type T ) T 2085 * ?+?( T *, ptrdiff_t ), 2086 * ?+?( ptrdiff_t, T * ), 2087 * ?-?( T *, ptrdiff_t ); 2088 2089 forall( type T ) _Atomic T 2090 * ?+?( _Atomic T *, ptrdiff_t ), 2091 * ?+?( ptrdiff_t, _Atomic T * ), 2092 * ?-?( _Atomic T *, ptrdiff_t ); 2093 2094 forall( type T ) const T 2095 * ?+?( const T *, ptrdiff_t ), 2096 * ?+?( ptrdiff_t, const T * ), 2097 * ?-?( const T *, ptrdiff_t ); 2098 2099 forall( type T ) restrict T 2100 * ?+?( restrict T *, ptrdiff_t ), 2101 * ?+?( ptrdiff_t, restrict T * ), 2102 * ?-?( restrict T *, ptrdiff_t ); 2103 2104 forall( type T ) volatile T 2105 * ?+?( volatile T *, ptrdiff_t ), 2106 * ?+?( ptrdiff_t, volatile T * ), 2107 * ?-?( volatile T *, ptrdiff_t ); 2108 2109 forall( type T ) _Atomic const T 2110 * ?+?( _Atomic const T *, ptrdiff_t ), 2111 * ?+?( ptrdiff_t, _Atomic const T * ), 2112 * ?-?( _Atomic const T *, ptrdiff_t ); 2113 2114 forall( type T ) _Atomic restrict T 2115 * ?+?( _Atomic restrict T *, ptrdiff_t ), 2116 * ?+?( ptrdiff_t, _Atomic restrict T * ), 2117 * ?-?( _Atomic restrict T *, ptrdiff_t ); 2118 2119 forall( type T ) _Atomic volatile T 2120 * ?+?( _Atomic volatile T *, ptrdiff_t ), 2121 * ?+?( ptrdiff_t, _Atomic volatile T * ), 2122 * ?-?( _Atomic volatile T *, ptrdiff_t ); 2123 2124 forall( type T ) const restrict T 2125 * ?+?( const restrict T *, ptrdiff_t ), 2126 * ?+?( ptrdiff_t, const restrict T * ), 2127 * ?-?( const restrict T *, ptrdiff_t ); 2128 2129 forall( type T ) const volatile T 2130 * ?+?( const volatile T *, ptrdiff_t ), 2131 * ?+?( ptrdiff_t, const volatile T * ), 2132 * ?-?( const volatile T *, ptrdiff_t ); 2133 2134 forall( type T ) restrict volatile T 2135 * ?+?( restrict volatile T *, ptrdiff_t ), 2136 * ?+?( ptrdiff_t, restrict volatile T * ), 2137 * ?-?( restrict volatile T *, ptrdiff_t ); 2138 2139 forall( type T ) _Atomic const restrict T 2140 * ?+?( _Atomic const restrict T *, ptrdiff_t ), 2141 * ?+?( ptrdiff_t, _Atomic const restrict T * ), 2142 * ?-?( _Atomic const restrict T *, ptrdiff_t ); 2143 2144 forall( type T ) ptrdiff_t 2145 * ?-?( const restrict volatile T *, const restrict volatile T * ), 2146 * ?-?( _Atomic const restrict volatile T *, _Atomic const restrict volatile T * ); 2147 \end{lstlisting} 2148 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2149 rank of \lstinline$int$ there exist 2150 % Don't use predefined: keep this out of prelude.cf. 2151 \begin{lstlisting} 2152 X ?+?( X ), ?-?( X ); 2153 \end{lstlisting} 2154 2155 \semantics 2156 The interpretations of additive expressions are the interpretations of the corresponding function 2157 calls. 2158 2159 \begin{rationale} 2160 \lstinline$ptrdiff_t$ is an implementation-defined identifier defined in \lstinline$<stddef.h>$ that 2161 is synonymous with a signed integral type that is large enough to hold the difference between two 2162 pointers. It seems reasonable to use it for pointer addition as well. (This is technically a 2163 difference between \CFA and C, which only specifies that pointer addition uses an \emph{integral} 2164 argument.) Hence it is also used for subscripting, which is defined in terms of pointer addition. 2165 The {\c11} standard uses \lstinline$size_t$ in several cases where a library function takes an 2166 argument that is used as a subscript, but \lstinline$size_t$ is unsuitable here because it is an 2167 unsigned type. 2168 \end{rationale} 2169 2170 2171 \subsection{Bitwise shift operators} 2172 2173 \begin{syntax} 2174 \lhs{shift-expression} 2175 \rhs \nonterm{additive-expression} 2176 \rhs \nonterm{shift-expression} \lstinline$<<$ \nonterm{additive-expression} 2177 \rhs \nonterm{shift-expression} \lstinline$>>$ \nonterm{additive-expression} 2178 \end{syntax} 2179 2180 \rewriterules \use{?>>?}%use{?<<?} 2181 \begin{lstlisting} 2182 a << b @\rewrite@ ?<<?( a, b ) 2183 a >> b @\rewrite@ ?>>?( a, b ) 2184 \end{lstlisting} 2185 2186 \predefined 2187 \begin{lstlisting} 2188 int ?<<?( int, int ), 2189 ?>>?( int, int ); 2190 unsigned int ?<<?( unsigned int, int ), 2191 ?>>?( unsigned int, int ); 2192 long int ?<<?( long int, int ), 2193 ?>>?( long int, int ); 2194 long unsigned int ?<<?( long unsigned int, int ), 2195 ?>>?( long unsigned int, int ); 2196 long long int ?<<?( long long int, int ), 2197 ?>>?( long long int, int ); 2198 long long unsigned int ?<<?( long long unsigned int, int ), 2199 ?>>?( long long unsigned int, int); 2200 \end{lstlisting} 2201 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2202 rank of \lstinline$int$ there exist 2203 % Don't use predefined: keep this out of prelude.cf. 2204 \begin{lstlisting} 2205 X ?<<?( X, int ), ?>>?( X, int ); 2206 \end{lstlisting} 2207 2208 \begin{rationale} 2209 The bitwise shift operators break the usual pattern: they do not convert both operands to a common 2210 type. The right operand only undergoes \Index{integer promotion}. 2211 \end{rationale} 2212 2213 \semantics 2214 The interpretations of a bitwise shift expression are the interpretations of the corresponding 2215 function calls. 2216 2217 2218 \subsection{Relational operators} 2219 2220 \begin{syntax} 2221 \lhs{relational-expression} 2222 \rhs \nonterm{shift-expression} 2223 \rhs \nonterm{relational-expression} \lstinline$< $ \nonterm{shift-expression} 2224 \rhs \nonterm{relational-expression} \lstinline$> $ \nonterm{shift-expression} 2225 \rhs \nonterm{relational-expression} \lstinline$<=$ \nonterm{shift-expression} 2226 \rhs \nonterm{relational-expression} \lstinline$>=$ \nonterm{shift-expression} 2227 \end{syntax} 2228 2229 \rewriterules\use{?>?}\use{?>=?}%use{?<?}%use{?<=?} 2230 \begin{lstlisting} 2231 a < b @\rewrite@ ?<?( a, b ) 2232 a > b @\rewrite@ ?>?( a, b ) 2233 a <= b @\rewrite@ ?<=?( a, b ) 2234 a >= b @\rewrite@ ?>=?( a, b ) 2235 \end{lstlisting} 2236 2237 \predefined 2238 \begin{lstlisting} 2239 int ?<?( int, int ), 2240 ?<=?( int, int ), 2241 ?>?( int, int ), 2242 ?>=?( int, int ); 2243 int ?<?( unsigned int, unsigned int ), 2244 ?<=?( unsigned int, unsigned int ), 2245 ?>?( unsigned int, unsigned int ), 2246 ?>=?( unsigned int, unsigned int ); 2247 int ?<?( long int, long int ), 2248 ?<=?( long int, long int ), 2249 ?>?( long int, long int ), 2250 ?>=?( long int, long int ); 2251 int ?<?( long unsigned int, long unsigned ), 2252 ?<=?( long unsigned int, long unsigned ), 2253 ?>?( long unsigned int, long unsigned ), 2254 ?>=?( long unsigned int, long unsigned ); 2255 int ?<?( long long int, long long int ), 2256 ?<=?( long long int, long long int ), 2257 ?>?( long long int, long long int ), 2258 ?>=?( long long int, long long int ); 2259 int ?<?( long long unsigned int, long long unsigned ), 2260 ?<=?( long long unsigned int, long long unsigned ), 2261 ?>?( long long unsigned int, long long unsigned ), 2262 ?>=?( long long unsigned int, long long unsigned ); 2263 int ?<?( float, float ), 2264 ?<=?( float, float ), 2265 ?>?( float, float ), 2266 ?>=?( float, float ); 2267 int ?<?( double, double ), 2268 ?<=?( double, double ), 2269 ?>?( double, double ), 2270 ?>=?( double, double ); 2271 int ?<?( long double, long double ), 2272 ?<=?( long double, long double ), 2273 ?>?( long double, long double ), 2274 ?>=?( long double, long double ); 2275 2276 forall( dtype DT ) int 2277 ?<?( const restrict volatile DT *, const restrict volatile DT * ), 2278 ?<?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ), 2279 ?<=?( const restrict volatile DT *, const restrict volatile DT * ), 2280 ?<=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ), 2281 ?>?( const restrict volatile DT *, const restrict volatile DT * ), 2282 ?>?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ), 2283 ?>=?( const restrict volatile DT *, const restrict volatile DT * ), 2284 ?>=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ); 2285 \end{lstlisting} 2286 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2287 rank of \lstinline$int$ there exist 2288 % Don't use predefined: keep this out of prelude.cf. 2289 \begin{lstlisting} 2290 int ?<?( X, X ), 2291 ?<=?( X, X ), 2292 ?<?( X, X ), 2293 ?>=?( X, X ); 2294 \end{lstlisting} 2295 2296 \semantics 2297 The interpretations of a relational expression are the interpretations of the corresponding function 2298 call. 2299 2300 2301 \subsection{Equality operators} 2302 2303 \begin{syntax} 2304 \lhs{equality-expression} 2305 \rhs \nonterm{relational-expression} 2306 \rhs \nonterm{equality-expression} \lstinline$==$ \nonterm{relational-expression} 2307 \rhs \nonterm{equality-expression} \lstinline$!=$ \nonterm{relational-expression} 2308 \end{syntax} 2309 2310 \rewriterules 2311 \begin{lstlisting} 2312 a == b @\rewrite@ ?==?( a, b )@\use{?==?}@ 2313 a != b @\rewrite@ ?!=?( a, b )@\use{?"!=?}@ 2314 \end{lstlisting} 2315 2316 \predefined 2317 \begin{lstlisting} 2318 int ?==?( int, int ), 2319 ?!=?( int, int ), 2320 ?==?( unsigned int, unsigned int ), 2321 ?!=?( unsigned int, unsigned int ), 2322 ?==?( long int, long int ), 2323 ?!=?( long int, long int ), 2324 ?==?( long unsigned int, long unsigned int ), 2325 ?!=?( long unsigned int, long unsigned int ), 2326 ?==?( long long int, long long int ), 2327 ?!=?( long long int, long long int ), 2328 ?==?( long long unsigned int, long long unsigned int ), 2329 ?!=?( long long unsigned int, long long unsigned int ), 2330 ?==?( float, float ), 2331 ?!=?( float, float ), 2332 ?==?( _Complex float, float ), 2333 ?!=?( _Complex float, float ), 2334 ?==?( float, _Complex float ), 2335 ?!=?( float, _Complex float ), 2336 ?==?( _Complex float, _Complex float ), 2337 ?!=?( _Complex float, _Complex float ), 2338 ?==?( double, double ), 2339 ?!=?( double, double ), 2340 ?==?( _Complex double, double ), 2341 ?!=?( _Complex double, double ), 2342 ?==?( double, _Complex double ), 2343 ?!=?( double, _Complex double ), 2344 ?==?( _Complex double, _Complex double ), 2345 ?!=?( _Complex double, _Complex double ), 2346 ?==?( long double, long double ), 2347 ?!=?( long double, long double ), 2348 ?==?( _Complex long double, long double ), 2349 ?!=?( _Complex long double, long double ), 2350 ?==?( long double, _Complex long double ), 2351 ?!=?( long double, _Complex long double ), 2352 ?==?( _Complex long double, _Complex long double ), 2353 ?!=?( _Complex long double, _Complex long double ); 2354 2355 forall( dtype DT ) int 2356 ?==?( const restrict volatile DT *, const restrict volatile DT * ), 2357 ?!=?( const restrict volatile DT *, const restrict volatile DT * ), 2358 ?==?( const restrict volatile DT *, const restrict volatile void * ), 2359 ?!=?( const restrict volatile DT *, const restrict volatile void * ), 2360 ?==?( const restrict volatile void *, const restrict volatile DT * ), 2361 ?!=?( const restrict volatile void *, const restrict volatile DT * ), 2362 ?==?( const restrict volatile DT *, forall( dtype DT2) const DT2 * ), 2363 ?!=?( const restrict volatile DT *, forall( dtype DT2) const DT2 * ), 2364 ?==?( forall( dtype DT2) const DT2*, const restrict volatile DT * ), 2365 ?!=?( forall( dtype DT2) const DT2*, const restrict volatile DT * ), 2366 ?==?( forall( dtype DT2) const DT2*, forall( dtype DT3) const DT3 * ), 2367 ?!=?( forall( dtype DT2) const DT2*, forall( dtype DT3) const DT3 * ), 2368 2369 ?==?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ), 2370 ?!=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ), 2371 ?==?( _Atomic const restrict volatile DT *, const restrict volatile void * ), 2372 ?!=?( _Atomic const restrict volatile DT *, const restrict volatile void * ), 2373 ?==?( const restrict volatile void *, _Atomic const restrict volatile DT * ), 2374 ?!=?( const restrict volatile void *, _Atomic const restrict volatile DT * ), 2375 ?==?( _Atomic const restrict volatile DT *, forall( dtype DT2) const DT2 * ), 2376 ?!=?( _Atomic const restrict volatile DT *, forall( dtype DT2) const DT2 * ), 2377 ?==?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * ), 2378 ?!=?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * ); 2379 2380 forall( ftype FT ) int 2381 ?==?( FT *, FT * ), 2382 ?!=?( FT *, FT * ), 2383 ?==?( FT *, forall( ftype FT2) FT2 * ), 2384 ?!=?( FT *, forall( ftype FT2) FT2 * ), 2385 ?==?( forall( ftype FT2) FT2*, FT * ), 2386 ?!=?( forall( ftype FT2) FT2*, FT * ), 2387 ?==?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ), 2388 ?!=?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ); 2389 \end{lstlisting} 2390 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2391 rank of \lstinline$int$ there exist 2392 % Don't use predefined: keep this out of prelude.cf. 2393 \begin{lstlisting} 2394 int ?==?( X, X ), 2395 ?!=?( X, X ); 2396 \end{lstlisting} 2397 2398 \begin{rationale} 2399 The polymorphic equality operations come in three styles: comparisons between pointers of compatible 2400 types, between pointers to \lstinline$void$ and pointers to object types or incomplete types, and 2401 between the \Index{null pointer} constant and pointers to any type. In the last case, a special 2402 constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA 2403 type system. 2404 \end{rationale} 2405 2406 \semantics 2407 The interpretations of an equality expression are the interpretations of the corresponding function 2408 call. 2409 2410 \begin{sloppypar} 2411 The result of an equality comparison between two pointers to predefined functions or predefined 2412 values is implementation-defined. 2413 \end{sloppypar} 2414 \begin{rationale} 2415 The implementation-defined status of equality comparisons allows implementations to use one library 2416 routine to implement many predefined functions. These optimization are particularly important when 2417 the predefined functions are polymorphic, as is the case for most pointer operations 2418 \end{rationale} 2419 2420 2421 \subsection{Bitwise AND operator} 2422 2423 \begin{syntax} 2424 \lhs{AND-expression} 2425 \rhs \nonterm{equality-expression} 2426 \rhs \nonterm{AND-expression} \lstinline$&$ \nonterm{equality-expression} 2427 \end{syntax} 2428 2429 \rewriterules 2430 \begin{lstlisting} 2431 a & b @\rewrite@ ?&?( a, b )@\use{?&?}@ 2432 \end{lstlisting} 2433 2434 \predefined 2435 \begin{lstlisting} 2436 int ?&?( int, int ); 2437 unsigned int ?&?( unsigned int, unsigned int ); 2438 long int ?&?( long int, long int ); 2439 long unsigned int ?&?( long unsigned int, long unsigned int ); 2440 long long int ?&?( long long int, long long int ); 2441 long long unsigned int ?&?( long long unsigned int, long long unsigned int ); 2442 \end{lstlisting} 2443 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2444 rank of \lstinline$int$ there exist 2445 % Don't use predefined: keep this out of prelude.cf. 2446 \begin{lstlisting} 2447 int ?&?( X, X ); 2448 \end{lstlisting} 2449 2450 \semantics 2451 The interpretations of a bitwise AND expression are the interpretations of the corresponding 2452 function call. 2453 2454 2455 \subsection{Bitwise exclusive OR operator} 2456 2457 \begin{syntax} 2458 \lhs{exclusive-OR-expression} 2459 \rhs \nonterm{AND-expression} 2460 \rhs \nonterm{exclusive-OR-expression} \lstinline$^$ \nonterm{AND-expression} 2461 \end{syntax} 2462 2463 \rewriterules 2464 \begin{lstlisting} 2465 a ^ b @\rewrite@ ?^?( a, b )@\use{?^?}@ 2466 \end{lstlisting} 2467 2468 \predefined 2469 \begin{lstlisting} 2470 int ?^?( int, int ); 2471 unsigned int ?^?( unsigned int, unsigned int ); 2472 long int ?^?( long int, long int ); 2473 long unsigned int ?^?( long unsigned int, long unsigned int ); 2474 long long int ?^?( long long int, long long int ); 2475 long long unsigned int ?^?( long long unsigned int, long long unsigned int ); 2476 \end{lstlisting} 2477 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2478 rank of \lstinline$int$ there exist 2479 % Don't use predefined: keep this out of prelude.cf. 2480 \begin{lstlisting} 2481 int ?^?( X, X ); 2482 \end{lstlisting} 2483 2484 \semantics 2485 The interpretations of a bitwise exclusive OR expression are the interpretations of the 2486 corresponding function call. 2487 2488 2489 \subsection{Bitwise inclusive OR operator} 2490 2491 \begin{syntax} 2492 \lhs{inclusive-OR-expression} 2493 \rhs \nonterm{exclusive-OR-expression} 2494 \rhs \nonterm{inclusive-OR-expression} \lstinline$|$ \nonterm{exclusive-OR-expression} 2495 \end{syntax} 2496 2497 \rewriterules\use{?"|?} 2498 \begin{lstlisting} 2499 a | b @\rewrite@ ?|?( a, b ) 2500 \end{lstlisting} 2501 2502 \predefined 2503 \begin{lstlisting} 2504 int ?|?( int, int ); 2505 unsigned int ?|?( unsigned int, unsigned int ); 2506 long int ?|?( long int, long int ); 2507 long unsigned int ?|?( long unsigned int, long unsigned int ); 2508 long long int ?|?( long long int, long long int ); 2509 long long unsigned int ?|?( long long unsigned int, long long unsigned int ); 2510 \end{lstlisting} 2511 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2512 rank of \lstinline$int$ there exist 2513 % Don't use predefined: keep this out of prelude.cf. 2514 \begin{lstlisting} 2515 int ?|?( X, X ); 2516 \end{lstlisting} 2517 2518 \semantics 2519 The interpretations of a bitwise inclusive OR expression are the interpretations of the 2520 corresponding function call. 2521 2522 2523 \subsection{Logical AND operator} 2524 2525 \begin{syntax} 2526 \lhs{logical-AND-expression} 2527 \rhs \nonterm{inclusive-OR-expression} 2528 \rhs \nonterm{logical-AND-expression} \lstinline$&&$ \nonterm{inclusive-OR-expression} 2529 \end{syntax} 2530 2531 \semantics The operands of the expression ``\lstinline$a && b$'' are treated as 2532 ``\lstinline$(int)((a)!=0)$'' and ``\lstinline$(int)((b)!=0)$'', which shall both be 2533 unambiguous. The expression has only one interpretation, which is of type \lstinline$int$. 2534 \begin{rationale} 2535 When the operands of a logical expression are values of built-in types, and ``\lstinline$!=$'' has 2536 not been redefined for those types, the compiler can optimize away the function calls. 2537 2538 A common C idiom omits comparisons to \lstinline$0$ in the controlling expressions of loops and 2539 \lstinline$if$ statements. For instance, the loop below iterates as long as \lstinline$rp$ points 2540 at a \lstinline$Rational$ value that is non-zero. 2541 2542 \begin{lstlisting} 2543 extern type Rational;@\use{Rational}@ 2544 extern const Rational 0;@\use{0}@ 2545 extern int ?!=?( Rational, Rational ); 2546 Rational *rp; 2547 2548 while ( rp && *rp ) { ... } 2549 \end{lstlisting} 2550 The logical expression calls the \lstinline$Rational$ inequality operator, passing 2551 it \lstinline$*rp$ and the \lstinline$Rational 0$, and getting a 1 or 0 as a result. In 2552 contrast, {\CC} would apply a programmer-defined \lstinline$Rational$-to-\lstinline$int$ 2553 conversion to \lstinline$*rp$ in the equivalent situation. The conversion to \lstinline$int$ would 2554 produce a general integer value, which is unfortunate, and possibly dangerous if the conversion was 2555 not written with this situation in mind. 2556 \end{rationale} 2557 2558 2559 \subsection{Logical OR operator} 2560 2561 \begin{syntax} 2562 \lhs{logical-OR-expression} 2563 \rhs \nonterm{logical-AND-expression} 2564 \rhs \nonterm{logical-OR-expression} \lstinline$||$ \nonterm{logical-AND-expression} 2565 \end{syntax} 2566 2567 \semantics 2568 2569 The operands of the expression ``\lstinline$a || b$'' are treated as ``\lstinline$(int)((a)!=0)$'' 2570 and ``\lstinline$(int)((b))!=0)$'', which shall both be unambiguous. The expression has only one 2571 interpretation, which is of type \lstinline$int$. 2572 2573 2574 \subsection{Conditional operator} 2575 2576 \begin{syntax} 2577 \lhs{conditional-expression} 2578 \rhs \nonterm{logical-OR-expression} 2579 \rhs \nonterm{logical-OR-expression} \lstinline$?$ \nonterm{expression} 2580 \lstinline$:$ \nonterm{conditional-expression} 2581 \end{syntax} 2582 2583 \semantics 2584 In the conditional expression\use{?:} ``\lstinline$a?b:c$'', if the second and 2585 third operands both have an interpretation with \lstinline$void$ type, then the expression has an 2586 interpretation with type \lstinline$void$, equivalent to 2587 \begin{lstlisting} 2588 ( int)(( a)!=0) ? ( void)( b) : ( void)( c) 2589 \end{lstlisting} 2590 2591 If the second and third operands both have interpretations with non-\lstinline$void$ types, the 2592 expression is treated as if it were the call ``\lstinline$cond((a)!=0, b, c)$'', 2593 with \lstinline$cond$ declared as 2594 \begin{lstlisting} 2595 forall( type T ) T cond( int, T, T ); 2596 2597 forall( dtype D ) void 2598 * cond( int, D *, void * ), 2599 * cond( int, void *, D * ); 2600 2601 forall( dtype D ) _atomic void 2602 * cond( int, _Atomic D *, _Atomic void * ), 2603 * cond( int, _Atomic void *, _Atomic D * ); 2604 2605 forall( dtype D ) const void 2606 * cond( int, const D *, const void * ), 2607 * cond( int, const void *, const D * ); 2608 2609 forall( dtype D ) restrict void 2610 * cond( int, restrict D *, restrict void * ), 2611 * cond( int, restrict void *, restrict D * ); 2612 2613 forall( dtype D ) volatile void 2614 * cond( int, volatile D *, volatile void * ), 2615 * cond( int, volatile void *, volatile D * ); 2616 2617 forall( dtype D ) _Atomic const void 2618 * cond( int, _Atomic const D *, _Atomic const void * ), 2619 * cond( int, _Atomic const void *, _Atomic const D * ); 2620 2621 forall( dtype D ) _Atomic restrict void 2622 * cond( int, _Atomic restrict D *, _Atomic restrict void * ), 2623 * cond( int, _Atomic restrict void *, _Atomic restrict D * ); 2624 2625 forall( dtype D ) _Atomic volatile void 2626 * cond( int, _Atomic volatile D *, _Atomic volatile void * ), 2627 * cond( int, _Atomic volatile void *, _Atomic volatile D * ); 2628 2629 forall( dtype D ) const restrict void 2630 * cond( int, const restrict D *, const restrict void * ), 2631 * cond( int, const restrict void *, const restrict D * ); 2632 2633 forall( dtype D ) const volatile void 2634 * cond( int, const volatile D *, const volatile void * ), 2635 * cond( int, const volatile void *, const volatile D * ); 2636 2637 forall( dtype D ) restrict volatile void 2638 * cond( int, restrict volatile D *, restrict volatile void * ), 2639 * cond( int, restrict volatile void *, restrict volatile D * ); 2640 2641 forall( dtype D ) _Atomic const restrict void 2642 * cond( int, _Atomic const restrict D *, _Atomic const restrict void * ), 2643 * cond( int, _Atomic const restrict void *, _Atomic const restrict D * ); 2644 2645 forall( dtype D ) _Atomic const volatile void 2646 * cond( int, _Atomic const volatile D *, _Atomic const volatile void * ), 2647 * cond( int, _Atomic const volatile void *, _Atomic const volatile D * ); 2648 2649 forall( dtype D ) _Atomic restrict volatile void 2650 * cond( int, _Atomic restrict volatile D *, 2651 _Atomic restrict volatile void * ), 2652 * cond( int, _Atomic restrict volatile void *, 2653 _Atomic restrict volatile D * ); 2654 2655 forall( dtype D ) const restrict volatile void 2656 * cond( int, const restrict volatile D *, 2657 const restrict volatile void * ), 2658 * cond( int, const restrict volatile void *, 2659 const restrict volatile D * ); 2660 2661 forall( dtype D ) _Atomic const restrict volatile void 2662 * cond( int, _Atomic const restrict volatile D *, 2663 _Atomic const restrict volatile void * ), 2664 * cond( int, _Atomic const restrict volatile void *, 2665 _Atomic const restrict volatile D * ); 2666 \end{lstlisting} 2667 2668 \begin{rationale} 2669 The object of the above is to apply the \Index{usual arithmetic conversion}s when the second and 2670 third operands have arithmetic type, and to combine the qualifiers of the second and third operands 2671 if they are pointers. 2672 \end{rationale} 2673 2674 \examples 2675 \begin{lstlisting} 2676 #include <stdlib.h> 2677 int i; 2678 long l; 2679 rand() ? i : l; 2680 \end{lstlisting} 2681 The best interpretation infers the expression's type to be \lstinline$long$ and applies the safe 2682 \lstinline$int$-to-\lstinline$long$ conversion to \lstinline$i$. 2683 2684 \begin{lstlisting} 2685 const int *cip; 2686 volatile int *vip; 2687 rand() ? cip : vip; 2688 \end{lstlisting} 2689 The expression has type \lstinline$const volatile int *$, with safe conversions applied to the second 2690 and third operands to add \lstinline$volatile$ and \lstinline$const$ qualifiers, respectively. 2691 2692 \begin{lstlisting} 2693 rand() ? cip : 0; 2694 \end{lstlisting} 2695 The expression has type \lstinline$const int *$, with a specialization conversion applied to 2696 \lstinline$0$. 2697 2698 2699 \subsection{Assignment operators} 2700 2701 \begin{syntax} 2702 \lhs{assignment-expression} 2703 \rhs \nonterm{conditional-expression} 2704 \rhs \nonterm{unary-expression} \nonterm{assignment-operator} 2705 \nonterm{assignment-expression} 2706 \lhs{assignment-operator} one of 2707 \rhs \lstinline$=$\ \ \lstinline$*=$\ \ \lstinline$/=$\ \ \lstinline$%=$\ \ \lstinline$+=$\ \ \lstinline$-=$\ \ 2708 \lstinline$<<=$\ \ \lstinline$>>=$\ \ \lstinline$&=$\ \ \lstinline$^=$\ \ \lstinline$|=$ 2709 \end{syntax} 2710 2711 \rewriterules 2712 Let ``\(\leftarrow\)'' be any of the assignment operators. Then 2713 \use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?} 2714 \use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?} 2715 \begin{lstlisting} 2716 a @$\leftarrow$@ b @\rewrite@ ?@$\leftarrow$@?( &( a ), b ) 2717 \end{lstlisting} 2718 2719 \semantics 2720 Each interpretation of the left operand of an assignment expression is considered separately. For 2721 each interpretation that is a bit-field or is declared with the \lstinline$register$ storage class 2722 specifier, the expression has one valid interpretation, with the type of the left operand. The 2723 right operand is cast to that type, and the assignment expression is ambiguous if either operand is. 2724 For the remaining interpretations, the expression is rewritten, and the interpretations of the 2725 assignment expression are the interpretations of the corresponding function call. Finally, all 2726 interpretations of the expression produced for the different interpretations of the left operand are 2727 combined to produce the interpretations of the expression as a whole; where interpretations have 2728 compatible result types, the best interpretations are selected in the manner described for function 2729 call expressions. 2730 2731 2732 \subsubsection{Simple assignment} 2733 2734 \predefined 2735 \begin{lstlisting} 2736 _Bool 2737 ?=?( volatile _Bool *, _Bool ), 2738 ?=?( volatile _Bool *, forall( dtype D ) D * ), 2739 ?=?( volatile _Bool *, forall( ftype F ) F * ), 2740 ?=?( _Atomic volatile _Bool *, _Bool ), 2741 ?=?( _Atomic volatile _Bool *, forall( dtype D ) D * ), 2742 ?=?( _Atomic volatile _Bool *, forall( ftype F ) F * ); 2743 char 2744 ?=?( volatile char *, char ), 2745 ?=?( _Atomic volatile char *, char ); 2746 unsigned char 2747 ?=?( volatile unsigned char *, unsigned char ), 2748 ?=?( _Atomic volatile unsigned char *, unsigned char ); 2749 signed char 2750 ?=?( volatile signed char *, signed char ), 2751 ?=?( _Atomic volatile signed char *, signed char ); 2752 short int 2753 ?=?( volatile short int *, short int ), 2754 ?=?( _Atomic volatile short int *, short int ); 2755 unsigned short 2756 ?=?( volatile unsigned int *, unsigned int ), 2757 ?=?( _Atomic volatile unsigned int *, unsigned int ); 2758 int 2759 ?=?( volatile int *, int ), 2760 ?=?( _Atomic volatile int *, int ); 2761 unsigned int 2762 ?=?( volatile unsigned int *, unsigned int ), 2763 ?=?( _Atomic volatile unsigned int *, unsigned int ); 2764 long int 2765 ?=?( volatile long int *, long int ), 2766 ?=?( _Atomic volatile long int *, long int ); 2767 unsigned long int 2768 ?=?( volatile unsigned long int *, unsigned long int ), 2769 ?=?( _Atomic volatile unsigned long int *, unsigned long int ); 2770 long long int 2771 ?=?( volatile long long int *, long long int ), 2772 ?=?( _Atomic volatile long long int *, long long int ); 2773 unsigned long long int 2774 ?=?( volatile unsigned long long int *, unsigned long long int ), 2775 ?=?( _Atomic volatile unsigned long long int *, unsigned long long int ); 2776 float 2777 ?=?( volatile float *, float ), 2778 ?=?( _Atomic volatile float *, float ); 2779 double 2780 ?=?( volatile double *, double ), 2781 ?=?( _Atomic volatile double *, double ); 2782 long double 2783 ?=?( volatile long double *, long double ), 2784 ?=?( _Atomic volatile long double *, long double ); 2785 _Complex float 2786 ?=?( volatile float *, float ), 2787 ?=?( _Atomic volatile float *, float ); 2788 _Complex double 2789 ?=?( volatile double *, double ), 2790 ?=?( _Atomic volatile double *, double ); 2791 _Complex long double 2792 ?=?( volatile _Complex long double *, _Complex long double ), 2793 ?=?( _Atomic volatile _Complex long double *, _Atomic _Complex long double ); 2794 2795 forall( ftype FT ) FT 2796 * ?=?( FT * volatile *, FT * ), 2797 * ?=?( FT * volatile *, forall( ftype F ) F * ); 2798 2799 forall( ftype FT ) FT const 2800 * ?=?( FT const * volatile *, FT const * ), 2801 * ?=?( FT const * volatile *, forall( ftype F ) F * ); 2802 2803 forall( ftype FT ) FT volatile 2804 * ?=?( FT volatile * volatile *, FT * ), 2805 * ?=?( FT volatile * volatile *, forall( ftype F ) F * ); 2806 2807 forall( ftype FT ) FT const 2808 * ?=?( FT const volatile * volatile *, FT const * ), 2809 * ?=?( FT const volatile * volatile *, forall( ftype F ) F * ); 2810 2811 forall( dtype DT ) DT 2812 * ?=?( DT * restrict volatile *, DT * ), 2813 * ?=?( DT * restrict volatile *, void * ), 2814 * ?=?( DT * restrict volatile *, forall( dtype D ) D * ), 2815 * ?=?( DT * _Atomic restrict volatile *, DT * ), 2816 * ?=?( DT * _Atomic restrict volatile *, void * ), 2817 * ?=?( DT * _Atomic restrict volatile *, forall( dtype D ) D * ); 2818 2819 forall( dtype DT ) DT _Atomic 2820 * ?=?( _Atomic DT * restrict volatile *, DT _Atomic * ), 2821 * ?=?( _Atomic DT * restrict volatile *, void * ), 2822 * ?=?( _Atomic DT * restrict volatile *, forall( dtype D ) D * ), 2823 * ?=?( _Atomic DT * _Atomic restrict volatile *, DT _Atomic * ), 2824 * ?=?( _Atomic DT * _Atomic restrict volatile *, void * ), 2825 * ?=?( _Atomic DT * _Atomic restrict volatile *, forall( dtype D ) D * ); 2826 2827 forall( dtype DT ) DT const 2828 * ?=?( DT const * restrict volatile *, DT const * ), 2829 * ?=?( DT const * restrict volatile *, void const * ), 2830 * ?=?( DT const * restrict volatile *, forall( dtype D ) D * ), 2831 * ?=?( DT const * _Atomic restrict volatile *, DT const * ), 2832 * ?=?( DT const * _Atomic restrict volatile *, void const * ), 2833 * ?=?( DT const * _Atomic restrict volatile *, forall( dtype D ) D * ); 2834 2835 forall( dtype DT ) DT restrict 2836 * ?=?( restrict DT * restrict volatile *, DT restrict * ), 2837 * ?=?( restrict DT * restrict volatile *, void * ), 2838 * ?=?( restrict DT * restrict volatile *, forall( dtype D ) D * ), 2839 * ?=?( restrict DT * _Atomic restrict volatile *, DT restrict * ), 2840 * ?=?( restrict DT * _Atomic restrict volatile *, void * ), 2841 * ?=?( restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * ); 2842 2843 forall( dtype DT ) DT volatile 2844 * ?=?( DT volatile * restrict volatile *, DT volatile * ), 2845 * ?=?( DT volatile * restrict volatile *, void volatile * ), 2846 * ?=?( DT volatile * restrict volatile *, forall( dtype D ) D * ), 2847 * ?=?( DT volatile * _Atomic restrict volatile *, DT volatile * ), 2848 * ?=?( DT volatile * _Atomic restrict volatile *, void volatile * ), 2849 * ?=?( DT volatile * _Atomic restrict volatile *, forall( dtype D ) D * ); 2850 2851 forall( dtype DT ) DT _Atomic const 2852 * ?=?( DT _Atomic const * restrict volatile *, DT _Atomic const * ), 2853 * ?=?( DT _Atomic const * restrict volatile *, void const * ), 2854 * ?=?( DT _Atomic const * restrict volatile *, forall( dtype D ) D * ), 2855 * ?=?( DT _Atomic const * _Atomic restrict volatile *, DT _Atomic const * ), 2856 * ?=?( DT _Atomic const * _Atomic restrict volatile *, void const * ), 2857 * ?=?( DT _Atomic const * _Atomic restrict volatile *, forall( dtype D ) D * ); 2858 2859 forall( dtype DT ) DT _Atomic restrict 2860 * ?=?( _Atomic restrict DT * restrict volatile *, DT _Atomic restrict * ), 2861 * ?=?( _Atomic restrict DT * restrict volatile *, void * ), 2862 * ?=?( _Atomic restrict DT * restrict volatile *, forall( dtype D ) D * ), 2863 * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, DT _Atomic restrict * ), 2864 * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, void * ), 2865 * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * ); 2866 2867 forall( dtype DT ) DT _Atomic volatile 2868 * ?=?( DT _Atomic volatile * restrict volatile *, DT _Atomic volatile * ), 2869 * ?=?( DT _Atomic volatile * restrict volatile *, void volatile * ), 2870 * ?=?( DT _Atomic volatile * restrict volatile *, forall( dtype D ) D * ), 2871 * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, DT _Atomic volatile * ), 2872 * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, void volatile * ), 2873 * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, forall( dtype D ) D * ); 2874 2875 forall( dtype DT ) DT const restrict 2876 * ?=?( DT const restrict * restrict volatile *, DT const restrict * ), 2877 * ?=?( DT const restrict * restrict volatile *, void const * ), 2878 * ?=?( DT const restrict * restrict volatile *, forall( dtype D ) D * ), 2879 * ?=?( DT const restrict * _Atomic restrict volatile *, DT const restrict * ), 2880 * ?=?( DT const restrict * _Atomic restrict volatile *, void const * ), 2881 * ?=?( DT const restrict * _Atomic restrict volatile *, forall( dtype D ) D * ); 2882 2883 forall( dtype DT ) DT const volatile 2884 * ?=?( DT const volatile * restrict volatile *, DT const volatile * ), 2885 * ?=?( DT const volatile * restrict volatile *, void const volatile * ), 2886 * ?=?( DT const volatile * restrict volatile *, forall( dtype D ) D * ), 2887 * ?=?( DT const volatile * _Atomic restrict volatile *, DT const volatile * ), 2888 * ?=?( DT const volatile * _Atomic restrict volatile *, void const volatile * ), 2889 * ?=?( DT const volatile * _Atomic restrict volatile *, forall( dtype D ) D * ); 2890 2891 forall( dtype DT ) DT restrict volatile 2892 * ?=?( DT restrict volatile * restrict volatile *, DT restrict volatile * ), 2893 * ?=?( DT restrict volatile * restrict volatile *, void volatile * ), 2894 * ?=?( DT restrict volatile * restrict volatile *, forall( dtype D ) D * ), 2895 * ?=?( DT restrict volatile * _Atomic restrict volatile *, DT restrict volatile * ), 2896 * ?=?( DT restrict volatile * _Atomic restrict volatile *, void volatile * ), 2897 * ?=?( DT restrict volatile * _Atomic restrict volatile *, forall( dtype D ) D * ); 2898 2899 forall( dtype DT ) DT _Atomic const restrict 2900 * ?=?( DT _Atomic const restrict * restrict volatile *, 2901 DT _Atomic const restrict * ), 2902 * ?=?( DT _Atomic const restrict * restrict volatile *, 2903 void const * ), 2904 * ?=?( DT _Atomic const restrict * restrict volatile *, 2905 forall( dtype D ) D * ), 2906 * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *, 2907 DT _Atomic const restrict * ), 2908 * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *, 2909 void const * ), 2910 * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *, 2911 forall( dtype D ) D * ); 2912 2913 forall( dtype DT ) DT _Atomic const volatile 2914 * ?=?( DT _Atomic const volatile * restrict volatile *, 2915 DT _Atomic const volatile * ), 2916 * ?=?( DT _Atomic const volatile * restrict volatile *, 2917 void const volatile * ), 2918 * ?=?( DT _Atomic const volatile * restrict volatile *, 2919 forall( dtype D ) D * ), 2920 * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *, 2921 DT _Atomic const volatile * ), 2922 * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *, 2923 void const volatile * ), 2924 * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *, 2925 forall( dtype D ) D * ); 2926 2927 forall( dtype DT ) DT _Atomic restrict volatile 2928 * ?=?( DT _Atomic restrict volatile * restrict volatile *, 2929 DT _Atomic restrict volatile * ), 2930 * ?=?( DT _Atomic restrict volatile * restrict volatile *, 2931 void volatile * ), 2932 * ?=?( DT _Atomic restrict volatile * restrict volatile *, 2933 forall( dtype D ) D * ), 2934 * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *, 2935 DT _Atomic restrict volatile * ), 2936 * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *, 2937 void volatile * ), 2938 * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *, 2939 forall( dtype D ) D * ); 2940 2941 forall( dtype DT ) DT const restrict volatile 2942 * ?=?( DT const restrict volatile * restrict volatile *, 2943 DT const restrict volatile * ), 2944 * ?=?( DT const restrict volatile * restrict volatile *, 2945 void const volatile * ), 2946 * ?=?( DT const restrict volatile * restrict volatile *, 2947 forall( dtype D ) D * ), 2948 * ?=?( DT const restrict volatile * _Atomic restrict volatile *, 2949 DT const restrict volatile * ), 2950 * ?=?( DT const restrict volatile * _Atomic restrict volatile *, 2951 void const volatile * ), 2952 * ?=?( DT const restrict volatile * _Atomic restrict volatile *, 2953 forall( dtype D ) D * ); 2954 2955 forall( dtype DT ) DT _Atomic const restrict volatile 2956 * ?=?( DT _Atomic const restrict volatile * restrict volatile *, 2957 DT _Atomic const restrict volatile * ), 2958 * ?=?( DT _Atomic const restrict volatile * restrict volatile *, 2959 void const volatile * ), 2960 * ?=?( DT _Atomic const restrict volatile * restrict volatile *, 2961 forall( dtype D ) D * ), 2962 * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *, 2963 DT _Atomic const restrict volatile * ), 2964 * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *, 2965 void const volatile * ), 2966 * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *, 2967 forall( dtype D ) D * ); 2968 2969 forall( dtype DT ) void 2970 * ?=?( void * restrict volatile *, DT * ); 2971 2972 forall( dtype DT ) void const 2973 * ?=?( void const * restrict volatile *, DT const * ); 2974 2975 forall( dtype DT ) void volatile 2976 * ?=?( void volatile * restrict volatile *, DT volatile * ); 2977 2978 forall( dtype DT ) void const volatile 2979 * ?=?( void const volatile * restrict volatile *, DT const volatile * ); 2980 \end{lstlisting} 2981 \begin{rationale} 2982 The pattern of overloadings for simple assignment resembles that of pointer increment and decrement, 2983 except that the polymorphic pointer assignment functions declare a \lstinline$dtype$ parameter, 2984 instead of a \lstinline$type$ parameter, because the left operand may be a pointer to an incomplete 2985 type. 2986 \end{rationale} 2987 2988 For every complete structure or union type \lstinline$S$ there exist 2989 % Don't use predefined: keep this out of prelude.cf. 2990 \begin{lstlisting} 2991 S ?=?( S volatile *, S ), ?=?( S _Atomic volatile *, S ); 2992 \end{lstlisting} 2993 2994 For every extended integer type \lstinline$X$ there exist 2995 % Don't use predefined: keep this out of prelude.cf. 2996 \begin{lstlisting} 2997 X ?=?( X volatile *, X ), ?=?( X _Atomic volatile *, X ); 2998 \end{lstlisting} 2999 3000 For every complete enumerated type \lstinline$E$ there exist 3001 % Don't use predefined: keep this out of prelude.cf. 3002 \begin{lstlisting} 3003 E ?=?( E volatile *, int ), ?=?( E _Atomic volatile *, int ); 3004 \end{lstlisting} 3005 \begin{rationale} 3006 The right-hand argument is \lstinline$int$ because enumeration constants have type \lstinline$int$. 3007 \end{rationale} 3008 3009 \semantics 3010 The structure assignment functions provide member-wise assignment; each non-array member and each 3011 element of each array member of the right argument is assigned to the corresponding member or 3012 element of the left argument using the assignment function defined for its type. All other 3013 assignment functions have the same effect as the corresponding C assignment expression. 3014 \begin{rationale} 3015 Note that, by default, union assignment\index{deficiencies!union assignment} uses C semantics---that 3016 is, bitwise copy---even if some of the union members have programmer-defined assignment functions. 3017 \end{rationale} 3018 3019 3020 \subsubsection{Compound assignment} 3021 3022 \predefined 3023 \begin{lstlisting} 3024 forall( type T ) T 3025 * ?+=?( T * restrict volatile *, ptrdiff_t ), 3026 * ?-=?( T * restrict volatile *, ptrdiff_t ), 3027 * ?+=?( T * _Atomic restrict volatile *, ptrdiff_t ), 3028 * ?-=?( T * _Atomic restrict volatile *, ptrdiff_t ); 3029 3030 forall( type T ) T _Atomic 3031 * ?+=?( T _Atomic * restrict volatile *, ptrdiff_t ), 3032 * ?-=?( T _Atomic * restrict volatile *, ptrdiff_t ), 3033 * ?+=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ), 3034 * ?-=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ); 3035 3036 forall( type T ) T const 3037 * ?+=?( T const * restrict volatile *, ptrdiff_t ), 3038 * ?-=?( T const * restrict volatile *, ptrdiff_t ), 3039 * ?+=?( T const * _Atomic restrict volatile *, ptrdiff_t ), 3040 * ?-=?( T const * _Atomic restrict volatile *, ptrdiff_t ); 3041 3042 forall( type T ) T restrict 3043 * ?+=?( T restrict * restrict volatile *, ptrdiff_t ), 3044 * ?-=?( T restrict * restrict volatile *, ptrdiff_t ), 3045 * ?+=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ), 3046 * ?-=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ); 3047 3048 forall( type T ) T volatile 3049 * ?+=?( T volatile * restrict volatile *, ptrdiff_t ), 3050 * ?-=?( T volatile * restrict volatile *, ptrdiff_t ), 3051 * ?+=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ), 3052 * ?-=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ); 3053 3054 forall( type T ) T _Atomic const 3055 * ?+=?( T _Atomic const restrict volatile *, ptrdiff_t ), 3056 * ?-=?( T _Atomic const restrict volatile *, ptrdiff_t ), 3057 * ?+=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ), 3058 * ?-=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ); 3059 3060 forall( type T ) T _Atomic restrict 3061 * ?+=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ), 3062 * ?-=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ), 3063 * ?+=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ), 3064 * ?-=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ); 3065 3066 forall( type T ) T _Atomic volatile 3067 * ?+=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ), 3068 * ?-=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ), 3069 * ?+=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ), 3070 * ?-=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ); 3071 3072 forall( type T ) T const restrict 3073 * ?+=?( T const restrict * restrict volatile *, ptrdiff_t ), 3074 * ?-=?( T const restrict * restrict volatile *, ptrdiff_t ), 3075 * ?+=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ), 3076 * ?-=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ); 3077 3078 forall( type T ) T const volatile 3079 * ?+=?( T const volatile * restrict volatile *, ptrdiff_t ), 3080 * ?-=?( T const volatile * restrict volatile *, ptrdiff_t ), 3081 * ?+=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ), 3082 * ?-=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ); 3083 3084 forall( type T ) T restrict volatile 3085 * ?+=?( T restrict volatile * restrict volatile *, ptrdiff_t ), 3086 * ?-=?( T restrict volatile * restrict volatile *, ptrdiff_t ), 3087 * ?+=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 3088 * ?-=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 3089 3090 forall( type T ) T _Atomic const restrict 3091 * ?+=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ), 3092 * ?-=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ), 3093 * ?+=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ), 3094 * ?-=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ); 3095 3096 forall( type T ) T _Atomic const volatile 3097 * ?+=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ), 3098 * ?-=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ), 3099 * ?+=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ), 3100 * ?-=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ); 3101 3102 forall( type T ) T _Atomic restrict volatile 3103 * ?+=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ), 3104 * ?-=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ), 3105 * ?+=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 3106 * ?-=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 3107 3108 forall( type T ) T const restrict volatile 3109 * ?+=?( T const restrict volatile * restrict volatile *, ptrdiff_t ), 3110 * ?-=?( T const restrict volatile * restrict volatile *, ptrdiff_t ), 3111 * ?+=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 3112 * ?-=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 3113 3114 forall( type T ) T _Atomic const restrict volatile 3115 * ?+=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ), 3116 * ?-=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ), 3117 * ?+=?( T _Atomic const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 3118 * ?-=?( T _Atomic const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 3119 3120 _Bool 3121 ?*=?( _Bool volatile *, _Bool ), 3122 ?/=?( _Bool volatile *, _Bool ), 3123 ?+=?( _Bool volatile *, _Bool ), 3124 ?-=?( _Bool volatile *, _Bool ), 3125 ?%=?( _Bool volatile *, _Bool ), 3126 ?<<=?( _Bool volatile *, int ), 3127 ?>>=?( _Bool volatile *, int ), 3128 ?&=?( _Bool volatile *, _Bool ), 3129 ?^=?( _Bool volatile *, _Bool ), 3130 ?|=?( _Bool volatile *, _Bool ); 3131 char 3132 ?*=?( char volatile *, char ), 3133 ?/=?( char volatile *, char ), 3134 ?+=?( char volatile *, char ), 3135 ?-=?( char volatile *, char ), 3136 ?%=?( char volatile *, char ), 3137 ?<<=?( char volatile *, int ), 3138 ?>>=?( char volatile *, int ), 3139 ?&=?( char volatile *, char ), 3140 ?^=?( char volatile *, char ), 3141 ?|=?( char volatile *, char ); 3142 unsigned char 3143 ?*=?( unsigned char volatile *, unsigned char ), 3144 ?/=?( unsigned char volatile *, unsigned char ), 3145 ?+=?( unsigned char volatile *, unsigned char ), 3146 ?-=?( unsigned char volatile *, unsigned char ), 3147 ?%=?( unsigned char volatile *, unsigned char ), 3148 ?<<=?( unsigned char volatile *, int ), 3149 ?>>=?( unsigned char volatile *, int ), 3150 ?&=?( unsigned char volatile *, unsigned char ), 3151 ?^=?( unsigned char volatile *, unsigned char ), 3152 ?|=?( unsigned char volatile *, unsigned char ); 3153 signed char 3154 ?*=?( signed char volatile *, signed char ), 3155 ?/=?( signed char volatile *, signed char ), 3156 ?+=?( signed char volatile *, signed char ), 3157 ?-=?( signed char volatile *, signed char ), 3158 ?%=?( signed char volatile *, signed char ), 3159 ?<<=?( signed char volatile *, int ), 3160 ?>>=?( signed char volatile *, int ), 3161 ?&=?( signed char volatile *, signed char ), 3162 ?^=?( signed char volatile *, signed char ), 3163 ?|=?( signed char volatile *, signed char ); 3164 short int 3165 ?*=?( short int volatile *, short int ), 3166 ?/=?( short int volatile *, short int ), 3167 ?+=?( short int volatile *, short int ), 3168 ?-=?( short int volatile *, short int ), 3169 ?%=?( short int volatile *, short int ), 3170 ?<<=?( short int volatile *, int ), 3171 ?>>=?( short int volatile *, int ), 3172 ?&=?( short int volatile *, short int ), 3173 ?^=?( short int volatile *, short int ), 3174 ?|=?( short int volatile *, short int ); 3175 unsigned short int 3176 ?*=?( unsigned short int volatile *, unsigned short int ), 3177 ?/=?( unsigned short int volatile *, unsigned short int ), 3178 ?+=?( unsigned short int volatile *, unsigned short int ), 3179 ?-=?( unsigned short int volatile *, unsigned short int ), 3180 ?%=?( unsigned short int volatile *, unsigned short int ), 3181 ?<<=?( unsigned short int volatile *, int ), 3182 ?>>=?( unsigned short int volatile *, int ), 3183 ?&=?( unsigned short int volatile *, unsigned short int ), 3184 ?^=?( unsigned short int volatile *, unsigned short int ), 3185 ?|=?( unsigned short int volatile *, unsigned short int ); 3186 int 3187 ?*=?( int volatile *, int ), 3188 ?/=?( int volatile *, int ), 3189 ?+=?( int volatile *, int ), 3190 ?-=?( int volatile *, int ), 3191 ?%=?( int volatile *, int ), 3192 ?<<=?( int volatile *, int ), 3193 ?>>=?( int volatile *, int ), 3194 ?&=?( int volatile *, int ), 3195 ?^=?( int volatile *, int ), 3196 ?|=?( int volatile *, int ); 3197 unsigned int 3198 ?*=?( unsigned int volatile *, unsigned int ), 3199 ?/=?( unsigned int volatile *, unsigned int ), 3200 ?+=?( unsigned int volatile *, unsigned int ), 3201 ?-=?( unsigned int volatile *, unsigned int ), 3202 ?%=?( unsigned int volatile *, unsigned int ), 3203 ?<<=?( unsigned int volatile *, int ), 3204 ?>>=?( unsigned int volatile *, int ), 3205 ?&=?( unsigned int volatile *, unsigned int ), 3206 ?^=?( unsigned int volatile *, unsigned int ), 3207 ?|=?( unsigned int volatile *, unsigned int ); 3208 long int 3209 ?*=?( long int volatile *, long int ), 3210 ?/=?( long int volatile *, long int ), 3211 ?+=?( long int volatile *, long int ), 3212 ?-=?( long int volatile *, long int ), 3213 ?%=?( long int volatile *, long int ), 3214 ?<<=?( long int volatile *, int ), 3215 ?>>=?( long int volatile *, int ), 3216 ?&=?( long int volatile *, long int ), 3217 ?^=?( long int volatile *, long int ), 3218 ?|=?( long int volatile *, long int ); 3219 unsigned long int 3220 ?*=?( unsigned long int volatile *, unsigned long int ), 3221 ?/=?( unsigned long int volatile *, unsigned long int ), 3222 ?+=?( unsigned long int volatile *, unsigned long int ), 3223 ?-=?( unsigned long int volatile *, unsigned long int ), 3224 ?%=?( unsigned long int volatile *, unsigned long int ), 3225 ?<<=?( unsigned long int volatile *, int ), 3226 ?>>=?( unsigned long int volatile *, int ), 3227 ?&=?( unsigned long int volatile *, unsigned long int ), 3228 ?^=?( unsigned long int volatile *, unsigned long int ), 3229 ?|=?( unsigned long int volatile *, unsigned long int ); 3230 long long int 3231 ?*=?( long long int volatile *, long long int ), 3232 ?/=?( long long int volatile *, long long int ), 3233 ?+=?( long long int volatile *, long long int ), 3234 ?-=?( long long int volatile *, long long int ), 3235 ?%=?( long long int volatile *, long long int ), 3236 ?<<=?( long long int volatile *, int ), 3237 ?>>=?( long long int volatile *, int ), 3238 ?&=?( long long int volatile *, long long int ), 3239 ?^=?( long long int volatile *, long long int ), 3240 ?|=?( long long int volatile *, long long int ); 3241 unsigned long long int 3242 ?*=?( unsigned long long int volatile *, unsigned long long int ), 3243 ?/=?( unsigned long long int volatile *, unsigned long long int ), 3244 ?+=?( unsigned long long int volatile *, unsigned long long int ), 3245 ?-=?( unsigned long long int volatile *, unsigned long long int ), 3246 ?%=?( unsigned long long int volatile *, unsigned long long int ), 3247 ?<<=?( unsigned long long int volatile *, int ), 3248 ?>>=?( unsigned long long int volatile *, int ), 3249 ?&=?( unsigned long long int volatile *, unsigned long long int ), 3250 ?^=?( unsigned long long int volatile *, unsigned long long int ), 3251 ?|=?( unsigned long long int volatile *, unsigned long long int ); 3252 float 3253 ?*=?( float volatile *, float ), 3254 ?/=?( float volatile *, float ), 3255 ?+=?( float volatile *, float ), 3256 ?-=?( float volatile *, float ); 3257 double 3258 ?*=?( double volatile *, double ), 3259 ?/=?( double volatile *, double ), 3260 ?+=?( double volatile *, double ), 3261 ?-=?( double volatile *, double ); 3262 long double 3263 ?*=?( long double volatile *, long double ), 3264 ?/=?( long double volatile *, long double ), 3265 ?+=?( long double volatile *, long double ), 3266 ?-=?( long double volatile *, long double ); 3267 _Complex float 3268 ?*=?( _Complex float volatile *, _Complex float ), 3269 ?/=?( _Complex float volatile *, _Complex float ), 3270 ?+=?( _Complex float volatile *, _Complex float ), 3271 ?-=?( _Complex float volatile *, _Complex float ); 3272 _Complex double 3273 ?*=?( _Complex double volatile *, _Complex double ), 3274 ?/=?( _Complex double volatile *, _Complex double ), 3275 ?+=?( _Complex double volatile *, _Complex double ), 3276 ?-=?( _Complex double volatile *, _Complex double ); 3277 _Complex long double 3278 ?*=?( _Complex long double volatile *, _Complex long double ), 3279 ?/=?( _Complex long double volatile *, _Complex long double ), 3280 ?+=?( _Complex long double volatile *, _Complex long double ), 3281 ?-=?( _Complex long double volatile *, _Complex long double ); 3282 \end{lstlisting} 3283 3284 For every extended integer type \lstinline$X$ there exist 3285 % Don't use predefined: keep this out of prelude.cf. 3286 \begin{lstlisting} 3287 ?*=?( X volatile *, X ), 3288 ?/=?( X volatile *, X ), 3289 ?+=?( X volatile *, X ), 3290 ?-=?( X volatile *, X ), 3291 ?%=?( X volatile *, X ), 3292 ?<<=?( X volatile *, int ), 3293 ?>>=?( X volatile *, int ), 3294 ?&=?( X volatile *, X ), 3295 ?^=?( X volatile *, X ), 3296 ?|=?( X volatile *, X ); 3297 \end{lstlisting} 3298 3299 For every complete enumerated type \lstinline$E$ there exist 3300 % Don't use predefined: keep this out of prelude.cf. 3301 \begin{lstlisting} 3302 ?*=?( E volatile *, E ), 3303 ?/=?( E volatile *, E ), 3304 ?+=?( E volatile *, E ), 3305 ?-=?( E volatile *, E ), 3306 ?%=?( E volatile *, E ), 3307 ?<<=?( E volatile *, int ), 3308 ?>>=?( E volatile *, int ), 3309 ?&=?( E volatile *, E ), 3310 ?^=?( E volatile *, E ), 3311 ?|=?( E volatile *, E ); 3312 \end{lstlisting} 3313 3314 3315 \subsection{Comma operator} 3316 3317 \begin{syntax} 3318 \lhs{expression} 3319 \rhs \nonterm{assignment-expression} 3320 \rhs \nonterm{expression} \lstinline$,$ \nonterm{assignment-expression} 3321 \end{syntax} 3322 3323 \semantics 3324 In the comma expression ``\lstinline$a, b$'', the first operand is interpreted as 3325 ``\lstinline$( void )(a)$'', which shall be unambiguous\index{ambiguous interpretation}. The 3326 interpretations of the expression are the interpretations of the second operand. 3327 3328 3329 \section{Constant expressions} 3330 3331 3332 \section{Declarations} 3333 3334 \begin{syntax} 3335 \oldlhs{declaration} 3336 \rhs \nonterm{type-declaration} 3337 \rhs \nonterm{spec-definition} 3338 \end{syntax} 3339 3340 \constraints 3341 If an identifier has \Index{no linkage}, there shall be no more than one declaration of the 3342 identifier ( in a declarator or type specifier ) with compatible types in the same scope and in the 3343 same name space, except that: 3344 \begin{itemize} 3345 \item 3346 a typedef name may be redefined to denote the same type as it currently does, provided that type is 3347 not a variably modified type; 3348 \item 3349 tags may be redeclared as specified in section 6.7.2.3 of the {\c11} standard. 3350 \end{itemize} 3351 \begin{rationale} 3352 This constraint adds the phrase ``with compatible types'' to the {\c11} constraint, to allow 3353 overloading. 3354 \end{rationale} 3355 3356 An identifier declared by a type declaration shall not be redeclared as a parameter in a function 3357 definition whose declarator includes an identifier list. 3358 \begin{rationale} 3359 This restriction echos {\c11}'s ban on the redeclaration of typedef names as parameters. This 3360 avoids an ambiguity between old-style function declarations and new-style function prototypes: 3361 \begin{lstlisting} 3362 void f( Complex, // ... 3000 characters ... 3363 void g( Complex, // ... 3000 characters ... 3364 int Complex; { ... } 3365 \end{lstlisting} 3366 Without the rule, \lstinline$Complex$ would be a type in the first case, and a parameter name in the 3367 second. 3368 \end{rationale} 3369 3370 3371 \setcounter{subsection}{1} 3372 \subsection{Type specifiers} 3373 3374 \begin{syntax} 3375 \oldlhs{type-specifier} 3376 \rhs \nonterm{forall-specifier} 3377 \end{syntax} 3378 3379 \semantics 3380 Forall specifiers are discussed in \VRef{forall}. 3381 3382 3383 \subsubsection{Structure and union specifiers} 3384 3385 \semantics 3386 \CFA extends the {\c11} definition of \define{anonymous structure} to include structure 3387 specifiers with tags, and extends the {\c11} definition of \define{anonymous union} to include union 3388 specifiers with tags. 3389 \begin{rationale} 3390 This extension imitates an extension in the Plan 9 C compiler \cite{Thompson90new}. 3391 \end{rationale} 3392 3393 \examples 3394 \begin{lstlisting} 3395 struct point {@\impl{point}@ 3396 int x, y; 3397 }; 3398 struct color_point {@\impl{color_point}@ 3399 enum { RED, BLUE, GREEN } color; 3400 struct point; 3401 }; 3402 struct color_point cp; 3403 cp.x = 0; 3404 cp.color = RED; 3405 3406 struct literal {@\impl{literal}@ 3407 enum { NUMBER, STRING } tag; 3408 union { 3409 double n; 3410 char *s; 3411 }; 3412 }; 3413 struct literal *next; 3414 int length; 3415 extern int strlen( const char * ); 3416 ... 3417 if ( next->tag == STRING ) length = strlen( next->s ); 3418 \end{lstlisting} 3419 3420 3421 \setcounter{subsubsection}{4} 3422 \subsubsection{Forall specifiers} 3423 \label{forall} 3424 3425 \begin{syntax} 3426 \lhs{forall-specifier} 3427 \rhs \lstinline$forall$ \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$ 3428 \end{syntax} 3429 3430 \begin{comment} 3431 \constraints 3432 If the \nonterm{declaration-specifiers} of a declaration that contains a \nonterm{forall-specifier} 3433 declares a structure or union tag, the types of the members of the structure or union shall not use 3434 any of the type identifiers declared by the \nonterm{type-parameter-list}. 3435 \begin{rationale} 3436 This sort of declaration is illegal because the scope of the type identifiers ends at the end of the 3437 declaration, but the scope of the structure tag does not. 3438 \begin{lstlisting} 3439 forall( type T ) struct Pair { T a, b; } mkPair( T, T ); // illegal 3440 \end{lstlisting} 3441 If an instance of \lstinline$struct Pair$ was declared later in the current scope, what would the 3442 members' type be? 3443 \end{rationale} 3444 \end{comment} 3445 3446 \semantics 3447 The \nonterm{type-parameter-list}s and assertions of the \nonterm{forall-specifier}s declare type 3448 identifiers, function and object identifiers with \Index{no linkage}. 3449 3450 If, in the declaration ``\lstinline$T D$'', \lstinline$T$ contains \nonterm{forall-specifier}s and 3451 \lstinline$D$ has the form 3452 \begin{lstlisting} 3453 D( @\normalsize\nonterm{parameter-type-list}@ ) 3454 \end{lstlisting} 3455 then a type identifier declared by one of the \nonterm{forall-specifier}s is an \define{inferred 3456 parameter} of the function declarator if and only if it is not an inferred parameter of a function 3457 declarator in \lstinline$D$, and it is used in the type of a parameter in the following 3458 \nonterm{type-parameter-list} or it and an inferred parameter are used as arguments of a 3459 \Index{specification} in one of the \nonterm{forall-specifier}s. The identifiers declared by 3460 assertions that use an inferred parameter of a function declarator are \Index{assertion parameter}s 3461 of that function declarator. 3462 3463 \begin{comment} 3464 \begin{rationale} 3465 Since every inferred parameter is used by some parameter, inference can be understood as a single 3466 bottom-up pass over the expression tree, that only needs to apply local reasoning at each node. 3467 3468 If this restriction were lifted, it would be possible to write 3469 \begin{lstlisting} 3470 forall( type T ) T * alloc( void );@\use{alloc}@ 3471 int *p = alloc(); 3472 \end{lstlisting} 3473 Here \lstinline$alloc()$ would receive \lstinline$int$ as an inferred argument, and return an 3474 \lstinline$int *$. In general, if a call to \lstinline$alloc()$ is a subexpression of an expression 3475 involving polymorphic functions and overloaded identifiers, there could be considerable distance 3476 between the call and the subexpression that causes \lstinline$T$ to be bound. 3477 3478 With the current restriction, \lstinline$alloc()$ must be given an argument that determines 3479 \lstinline$T$: 3480 \begin{lstlisting} 3481 forall( type T ) T * alloc( T initial_value );@\use{alloc}@ 3482 \end{lstlisting} 3483 \end{rationale} 3484 \end{comment} 3485 3486 If a function declarator is part of a function definition, its inferred parameters and assertion 3487 parameters have \Index{block scope}; otherwise, identifiers declared by assertions have a 3488 \define{declaration scope}, which terminates at the end of the \nonterm{declaration}. 3489 3490 A function type that has at least one inferred parameter is a \define{polymorphic function} type. 3491 Function types with no inferred parameters are \define{monomorphic function} types. One function 3492 type is \define{less polymorphic} than another if it has fewer inferred parameters, or if it has the 3493 same number of inferred parameters and fewer of its explicit parameters have types that depend on an 3494 inferred parameter. 3495 3496 The names of inferred parameters and the order of identifiers in forall specifiers are not relevant 3497 to polymorphic function type compatibility. Let $f$ and $g$ be two polymorphic function types with 3498 the same number of inferred parameters, and let $f_i$ and $g_i$ be the inferred parameters of $f$ 3499 and $g$ in their order of occurance in the function types' \nonterm{parameter-type-list}s. Let $f'$ 3500 be $f$ with every occurrence of $f_i$ replaced by $g_i$, for all $i$. Then $f$ and $g$ are 3501 \Index{compatible type}s if $f'$'s and $g$'s return types and parameter lists are compatible, and if 3502 for every assertion parameter of $f'$ there is an assertion parameter in $g$ with the same 3503 identifier and compatible type, and vice versa. 3504 3505 \examples 3506 Consider these analogous monomorphic and polymorphic declarations. 3507 \begin{lstlisting} 3508 int fi( int ); 3509 forall( type T ) T fT( T ); 3510 \end{lstlisting} 3511 \lstinline$fi()$ takes an \lstinline$int$ and returns an \lstinline$int$. \lstinline$fT()$ takes a 3512 \lstinline$T$ and returns a \lstinline$T$, for any type \lstinline$T$. 3513 \begin{lstlisting} 3514 int (*pfi )( int ) = fi; 3515 forall( type T ) T (*pfT )( T ) = fT; 3516 \end{lstlisting} 3517 \lstinline$pfi$ and \lstinline$pfT$ are pointers to functions. \lstinline$pfT$ is not 3518 polymorphic, but the function it points at is. 3519 \begin{lstlisting} 3520 int (*fvpfi( void ))( int ) { 3521 return pfi; 3522 } 3523 forall( type T ) T (*fvpfT( void ))( T ) { 3524 return pfT; 3525 } 3526 \end{lstlisting} 3527 \lstinline$fvpfi()$ and \lstinline$fvpfT()$ are functions taking no arguments and returning pointers 3528 to functions. \lstinline$fvpfT()$ is monomorphic, but the function that its return value points 3529 at is polymorphic. 3530 \begin{lstlisting} 3531 forall( type T ) int ( *fTpfi( T ) )( int ); 3532 forall( type T ) T ( *fTpfT( T ) )( T ); 3533 forall( type T, type U ) U ( *fTpfU( T ) )( U ); 3534 \end{lstlisting} 3535 \lstinline$fTpfi()$ is a polymorphic function that returns a pointer to a monomorphic function 3536 taking an integer and returning an integer. It could return \lstinline$pfi$. \lstinline$fTpfT()$ 3537 is subtle: it is a polymorphic function returning a \emph{monomorphic} function taking and returning 3538 \lstinline$T$, where \lstinline$T$ is an inferred parameter of \lstinline$fTpfT()$. For instance, 3539 in the expression ``\lstinline$fTpfT(17)$'', \lstinline$T$ is inferred to be \lstinline$int$, and 3540 the returned value would have type \lstinline$int ( * )( int )$. ``\lstinline$fTpfT(17)(13)$'' and 3541 ``\lstinline$fTpfT("yes")("no")$'' are legal, but ``\lstinline$fTpfT(17)("no")$'' is illegal. 3542 \lstinline$fTpfU()$ is polymorphic ( in type \lstinline$T$), and returns a pointer to a function that 3543 is polymorphic ( in type \lstinline$U$). ``\lstinline$f5(17)("no")$'' is a legal expression of type 3544 \lstinline$char *$. 3545 \begin{lstlisting} 3546 forall( type T, type U, type V ) U * f( T *, U, V * const ); 3547 forall( type U, type V, type W ) U * g( V *, U, W * const ); 3548 \end{lstlisting} 3549 The functions \lstinline$f()$ and \lstinline$g()$ have compatible types. Let \(f\) and \(g\) be 3550 their types; then \(f_1\) = \lstinline$T$, \(f_2\) = \lstinline$U$, \(f_3\) = \lstinline$V$, \(g_1\) 3551 = \lstinline$V$, \(g_2\) = \lstinline$U$, and \(g_3\) = \lstinline$W$. Replacing every \(f_i\) 3552 by \(g_i\) in \(f\) gives 3553 \begin{lstlisting} 3554 forall( type V, type U, type W ) U * f( V *, U, W * const ); 3555 \end{lstlisting} 3556 which has a return type and parameter list that is compatible with \(g\). 3557 \begin{rationale} 3558 The word ``\lstinline$type$'' in a forall specifier is redundant at the moment, but I want to leave 3559 room for inferred parameters of ordinary types in case parameterized types get added one day. 3560 3561 Even without parameterized types, I might try to allow 3562 \begin{lstlisting} 3563 forall( int n ) int sum( int vector[n] ); 3564 \end{lstlisting} 3565 but C currently rewrites array parameters as pointer parameters, so the effects of such a change 3566 require more thought. 3567 \end{rationale} 3568 3569 \begin{rationale} 3570 A polymorphic declaration must do two things: it must introduce type parameters, and it must apply 3571 assertions to those types. Adding this to existing C declaration syntax and semantics was delicate, 3572 and not entirely successful. 3573 3574 C depends on declaration-before-use, so a forall specifier must introduce type names before they can 3575 be used in the declaration specifiers. This could be done by making the forall specifier part of 3576 the declaration specifiers, or by making it a new introductory clause of declarations. 3577 3578 Assertions are also part of polymorphic function types, because it must be clear which functions 3579 have access to the assertion parameters declared by the assertions. All attempts to put assertions 3580 inside an introductory clause produced complex semantics and confusing code. Building them into the 3581 declaration specifiers could be done by placing them in the function's parameter list, or in a 3582 forall specifier that is a declaration specifier. Assertions are also used with type parameters of 3583 specifications, and by type declarations. For consistency's sake it seems best to attach assertions 3584 to the type declarations in forall specifiers, which means that forall specifiers must be 3585 declaration specifiers. 3586 \end{rationale} 3587 %HERE 3588 3589 3590 \subsection{Type qualifiers} 3591 3592 \CFA defines a new type qualifier \lstinline$lvalue$\impl{lvalue}\index{lvalue}. 3593 \begin{syntax} 3594 \oldlhs{type-qualifier} 3595 \rhs \lstinline$lvalue$ 3596 \end{syntax} 3597 3598 \constraints 3599 \lstinline$restrict$\index{register@{\lstinline$restrict$}} Types other than type parameters and 3600 pointer types whose referenced type is an object type shall not be restrict-qualified. 3601 3602 \semantics 3603 An object's type may be a restrict-qualified type parameter. \lstinline$restrict$ does not 3604 establish any special semantics in that case. 3605 3606 \begin{rationale} 3607 \CFA loosens the constraint on the restrict qualifier so that restrict-qualified pointers may be 3608 passed to polymorphic functions. 3609 \end{rationale} 3610 3611 \lstinline$lvalue$ may be used to qualify the return type of a function type. Let \lstinline$T$ be 3612 an unqualified version of a type; then the result of calling a function with return type 3613 \lstinline$lvalue T$ is a \Index{modifiable lvalue} of type \lstinline$T$. 3614 \lstinline$const$\use{const} and \lstinline$volatile$\use{volatile} qualifiers may also be added to 3615 indicate that the function result is a constant or volatile lvalue. 3616 \begin{rationale} 3617 The \lstinline$const$ and \lstinline$volatile$ qualifiers can only be sensibly used to qualify the 3618 return type of a function if the \lstinline$lvalue$ qualifier is also used. 3619 \end{rationale} 3620 3621 An {lvalue}-qualified type may be used in a \Index{cast expression} if the operand is an lvalue; the 3622 result of the expression is an lvalue. 3623 3624 \begin{rationale} 3625 \lstinline$lvalue$ provides some of the functionality of {\CC}'s ``\lstinline$T&$'' ( reference to 3626 object of type \lstinline$T$) type. Reference types have four uses in {\CC}. 3627 \begin{itemize} 3628 \item 3629 They are necessary for user-defined operators that return lvalues, such as ``subscript'' and 3630 ``dereference''. 3631 3632 \item 3633 A reference can be used to define an alias for a complicated lvalue expression, as a way of getting 3634 some of the functionality of the Pascal \lstinline$with$ statement. The following {\CC} code gives 3635 an example. 3636 \begin{lstlisting} 3637 { 3638 char &code = long_name.some_field[i].data->code; 3639 code = toupper( code ); 3640 } 3641 \end{lstlisting} 3642 This is not very useful. 3643 3644 \item 3645 A reference parameter can be used to allow a function to modify an argument without forcing the 3646 caller to pass the address of the argument. This is most useful for user-defined assignment 3647 operators. In {\CC}, plain assignment is done by a function called ``\lstinline$operator=$'', and 3648 the two expressions 3649 \begin{lstlisting} 3650 a = b; 3651 operator=( a, b ); 3652 \end{lstlisting} 3653 are equivalent. If \lstinline$a$ and \lstinline$b$ are of type \lstinline$T$, then the first 3654 parameter of \lstinline$operator=$ must have type ``\lstinline$T&$''. It cannot have type 3655 \lstinline$T$, because then assignment couldn't alter the variable, and it can't have type 3656 ``\lstinline$T *$'', because the assignment would have to be written ``\lstinline$&a = b;$''. 3657 3658 In the case of user-defined operators, this could just as well be handled by using pointer types and 3659 by changing the rewrite rules so that ``\lstinline$a = b;$'' is equivalent to 3660 ``\lstinline$operator=(&( a), b )$''. Reference parameters of ``normal'' functions are Bad Things, 3661 because they remove a useful property of C function calls: an argument can only be modified by a 3662 function if it is preceded by ``\lstinline$&$''. 3663 3664 \item 3665 References to \Index{const-qualified} types can be used instead of value parameters. Given the 3666 {\CC} function call ``\lstinline$fiddle( a_thing )$'', where the type of \lstinline$a_thing$ is 3667 \lstinline$Thing$, the type of \lstinline$fiddle$ could be either of 3668 \begin{lstlisting} 3669 void fiddle( Thing ); 3670 void fiddle( const Thing & ); 3671 \end{lstlisting} 3672 If the second form is used, then constructors and destructors are not invoked to create a temporary 3673 variable at the call site ( and it is bad style for the caller to make any assumptions about such 3674 things), and within \lstinline$fiddle$ the parameter is subject to the usual problems caused by 3675 aliases. The reference form might be chosen for efficiency's sake if \lstinline$Thing$s are too 3676 large or their constructors or destructors are too expensive. An implementation may switch between 3677 them without causing trouble for well-behaved clients. This leaves the implementor to define ``too 3678 large'' and ``too expensive''. 3679 3680 I propose to push this job onto the compiler by allowing it to implement 3681 \begin{lstlisting} 3682 void fiddle( const volatile Thing ); 3683 \end{lstlisting} 3684 with call-by-reference. Since it knows all about the size of \lstinline$Thing$s and the parameter 3685 passing mechanism, it should be able to come up with a better definition of ``too large'', and may 3686 be able to make a good guess at ``too expensive''. 3687 \end{itemize} 3688 3689 In summary, since references are only really necessary for returning lvalues, I'll only provide 3690 lvalue functions. 3691 \end{rationale} 3692 3693 3694 \setcounter{subsection}{8} 3695 \subsection{Initialization} 3696 3697 An expression that is used as an \nonterm{initializer} is treated as being cast to the type of the 3698 object being initialized. An expression used in an \nonterm{initializer-list} is treated as being 3699 cast to the type of the aggregate member that it initializes. In either case the cast must have a 3700 single unambiguous \Index{interpretation}. 3701 3702 3703 \setcounter{subsection}{10} 3704 \subsection{Specification definitions} 3705 3706 \begin{syntax} 3707 \lhs{spec-definition} 3708 \rhs \lstinline$spec$ \nonterm{identifier} 3709 \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$ 3710 \lstinline${$ \nonterm{spec-declaration-list}\opt \lstinline$}$ 3711 \lhs{spec-declaration-list} 3712 \rhs \nonterm{spec-declaration} \lstinline$;$ 3713 \rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} \lstinline$;$ 3714 \lhs{spec-declaration} 3715 \rhs \nonterm{specifier-qualifier-list} \nonterm{declarator-list} 3716 \lhs{declarator-list} 3717 \rhs \nonterm{declarator} 3718 \rhs \nonterm{declarator-list} \lstinline$,$ \nonterm{declarator} 3719 \end{syntax} 3720 \begin{rationale} 3721 The declarations allowed in a specification are much the same as those allowed in a structure, 3722 except that bit fields are not allowed, and \Index{incomplete type}s and function types are allowed. 3723 \end{rationale} 3724 3725 \semantics 3726 A \define{specification definition} defines a name for a \define{specification}: a parameterized 3727 collection of object and function declarations. 3728 3729 The declarations in a specification consist of the declarations in the 3730 \nonterm{spec-declaration-list} and declarations produced by any assertions in the 3731 \nonterm{spec-parameter-list}. If the collection contains two declarations that declare the same 3732 identifier and have compatible types, they are combined into one declaration with the composite type 3733 constructed from the two types. 3734 3735 3736 \subsubsection{Assertions} 3737 3738 \begin{syntax} 3739 \lhs{assertion-list} 3740 \rhs \nonterm{assertion} 3741 \rhs \nonterm{assertion-list} \nonterm{assertion} 3742 \lhs{assertion} 3743 \rhs \lstinline$|$ \nonterm{identifier} \lstinline$($ \nonterm{type-name-list} \lstinline$)$ 3744 \rhs \lstinline$|$ \nonterm{spec-declaration} 3745 \lhs{type-name-list} 3746 \rhs \nonterm{type-name} 3747 \rhs \nonterm{type-name-list} \lstinline$,$ \nonterm{type-name} 3748 \end{syntax} 3749 3750 \constraints 3751 The \nonterm{identifier} in an assertion that is not a \nonterm{spec-declaration} shall be the name 3752 of a specification. The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for 3753 each \nonterm{type-parameter} in that specification's \nonterm{spec-parameter-list}. If the 3754 \nonterm{type-parameter} uses type-class \lstinline$type$\use{type}, the argument shall be the type 3755 name of an \Index{object type}; if it uses \lstinline$dtype$, the argument shall be the type name of 3756 an object type or an \Index{incomplete type}; and if it uses \lstinline$ftype$, the argument shall 3757 be the type name of a \Index{function type}. 3758 3759 \semantics 3760 An \define{assertion} is a declaration of a collection of objects and functions, called 3761 \define{assertion parameters}. 3762 3763 The assertion parameters produced by an assertion that applies the name of a specification to type 3764 arguments are found by taking the declarations specified in the specification and treating each of 3765 the specification's parameters as a synonym for the corresponding \nonterm{type-name} argument. 3766 3767 The collection of assertion parameters produced by the \nonterm{assertion-list} are found by 3768 combining the declarations produced by each assertion. If the collection contains two declarations 3769 that declare the same identifier and have compatible types, they are combined into one declaration 3770 with the \Index{composite type} constructed from the two types. 3771 3772 \examples 3773 \begin{lstlisting} 3774 forall( type T | T ?*?( T, T ))@\use{?*?}@ 3775 T square( T val ) {@\impl{square}@ 3776 return val + val; 3777 } 3778 3779 context summable( type T ) {@\impl{summable}@ 3780 T ?+=?( T *, T );@\use{?+=?}@ 3781 const T 0;@\use{0}@ 3782 }; 3783 context list_of( type List, type Element ) {@\impl{list_of}@ 3784 Element car( List ); 3785 List cdr( List ); 3786 List cons( Element, List ); 3787 List nil; 3788 int is_nil( List ); 3789 }; 3790 context sum_list( type List, type Element | summable( Element ) | list_of( List, Element ) ) {}; 3791 \end{lstlisting} 3792 \lstinline$sum_list$ contains seven declarations, which describe a list whose elements can be added 3793 up. The assertion ``\lstinline$|sum_list( i_list, int )$''\use{sum_list} produces the assertion 3794 parameters 3795 \begin{lstlisting} 3796 int ?+=?( int *, int ); 3797 const int 0; 3798 int car( i_list ); 3799 i_list cdr( i_list ); 3800 i_list cons( int, i_list ); 3801 i_list nil; 3802 int is_nil; 3803 \end{lstlisting} 3804 3805 3806 \subsection{Type declarations} 3807 3808 \begin{syntax} 3809 \lhs{type-parameter-list} 3810 \rhs \nonterm{type-parameter} 3811 \rhs \nonterm{type-parameter-list} \lstinline$,$ \nonterm{type-parameter} 3812 \lhs{type-parameter} 3813 \rhs \nonterm{type-class} \nonterm{identifier} \nonterm{assertion-list}\opt 3814 \lhs{type-class} 3815 \rhs \lstinline$type$ 3816 \rhs \lstinline$dtype$ 3817 \rhs \lstinline$ftype$ 3818 \lhs{type-declaration} 3819 \rhs \nonterm{storage-class-specifier}\opt \lstinline$type$ \nonterm{type-declarator-list} \verb|;| 3820 \lhs{type-declarator-list} 3821 \rhs \nonterm{type-declarator} 3822 \rhs \nonterm{type-declarator-list} \lstinline$,$ \nonterm{type-declarator} 3823 \lhs{type-declarator} 3824 \rhs \nonterm{identifier} \nonterm{assertion-list}\opt \lstinline$=$ \nonterm{type-name} 3825 \rhs \nonterm{identifier} \nonterm{assertion-list}\opt 3826 \end{syntax} 3827 3828 \constraints 3829 If a type declaration has block scope, and the declared identifier has external or internal linkage, 3830 the declaration shall have no initializer for the identifier. 3831 3832 \semantics 3833 A \nonterm{type-parameter} or a \nonterm{type-declarator} declares an identifier to be a \Index{type 3834 name} for a type incompatible with all other types. 3835 3836 An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}. Identifiers declared 3837 with type-class \lstinline$type$\use{type} are \Index{object type}s; those declared with type-class 3838 \lstinline$dtype$\use{dtype} are \Index{incomplete type}s; and those declared with type-class 3839 \lstinline$ftype$\use{ftype} are \Index{function type}s. The identifier has \Index{block scope} that 3840 terminates at the end of the \nonterm{spec-declaration-list} or polymorphic function that contains 3841 the \nonterm{type-parameter}. 3842 3843 A \nonterm{type-declarator} with an \Index{initializer} is a \define{type definition}. The declared 3844 identifier is an \Index{incomplete type} within the initializer, and an \Index{object type} after 3845 the end of the initializer. The type in the initializer is called the \define{implementation 3846 type}. Within the scope of the declaration, \Index{implicit conversion}s can be performed between 3847 the defined type and the implementation type, and between pointers to the defined type and pointers 3848 to the implementation type. 3849 3850 A type declaration without an \Index{initializer} and without a \Index{storage-class specifier} or 3851 with storage-class specifier \lstinline$static$\use{static} defines an \Index{incomplete type}. If a 3852 \Index{translation unit} or \Index{block} contains one or more such declarations for an identifier, 3853 it must contain exactly one definition of the identifier ( but not in an enclosed block, which would 3854 define a new type known only within that block). 3855 \begin{rationale} 3856 Incomplete type declarations allow compact mutually-recursive types. 3857 \begin{lstlisting} 3858 type t1; // Incomplete type declaration. 3859 type t2 = struct { t1 * p; ... }; 3860 type t1 = struct { t2 * p; ... }; 3861 \end{lstlisting} 3862 Without them, mutual recursion could be handled by declaring mutually recursive structures, then 3863 initializing the types to those structures. 3864 \begin{lstlisting} 3865 struct s1; 3866 type t2 = struct s2 { struct s1 * p; ... }; 3867 type t1 = struct s1 { struct s2 * p; ... }; 3868 \end{lstlisting} 3869 This introduces extra names, and may force the programmer to cast between the types and their 3870 implementations. 3871 \end{rationale} 3872 3873 A type declaration without an initializer and with \Index{storage-class specifier} 3874 \lstinline$extern$\use{extern} is an \define{opaque type declaration}. Opaque types are 3875 \Index{object type}s. An opaque type is not a \nonterm{constant-expression}; neither is a structure 3876 or union that has a member whose type is not a \nonterm{constant-expression}. Every other 3877 \Index{object type} is a \nonterm{constant-expression}. Objects with static storage duration shall 3878 be declared with a type that is a \nonterm{constant-expression}. 3879 \begin{rationale} 3880 Type declarations can declare identifiers with external linkage, whereas typedef declarations 3881 declare identifiers that only exist within a translation unit. These opaque types can be used in 3882 declarations, but the implementation of the type is not visible. 3883 3884 Static objects can not have opaque types because space for them would have to be allocated at 3885 program start-up. This is a deficiency\index{deficiencies!static opaque objects}, but I don't want 3886 to deal with ``module initialization'' code just now. 3887 \end{rationale} 3888 3889 An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a 3890 value of \Index{type-class} \lstinline$dtype$. An object type\index{object types} which is not a 3891 qualified version of a type is a value of type-classes \lstinline$type$ and \lstinline$dtype$. A 3892 \Index{function type} is a value of type-class \lstinline$ftype$. 3893 \begin{rationale} 3894 Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which 3895 omits the identifier being declared. 3896 3897 Object types are precisely the types that can be instantiated. Type qualifiers are not included in 3898 type values because the compiler needs the information they provide at compile time to detect 3899 illegal statements or to produce efficient machine instructions. For instance, the code that a 3900 compiler must generate to manipulate an object that has volatile-qualified type may be different 3901 from the code to manipulate an ordinary object. 3902 3903 Type qualifiers are a weak point of C's type system. Consider the standard library function 3904 \lstinline$strchr()$ which, given a string and a character, returns a pointer to the first 3905 occurrence of the character in the string. 3906 \begin{lstlisting} 3907 char *strchr( const char *s, int c ) {@\impl{strchr}@ 3908 char real_c = c; // done because c was declared as int. 3909 for ( ; *s != real_c; s++ ) 3910 if ( *s == '\0' ) return NULL; 3911 return ( char * )s; 3912 } 3913 \end{lstlisting} 3914 The parameter \lstinline$s$ must be \lstinline$const char *$, because \lstinline$strchr()$ might be 3915 used to search a constant string, but the return type must be \lstinline$char *$, because the result 3916 might be used to modify a non-constant string. Hence the body must perform a cast, and ( even worse) 3917 \lstinline$strchr()$ provides a type-safe way to attempt to modify constant strings. What is needed 3918 is some way to say that \lstinline$s$'s type might contain qualifiers, and the result type has 3919 exactly the same qualifiers. Polymorphic functions do not provide a fix for this 3920 deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of 3921 type values. Instead, overloading can be used to define \lstinline$strchr()$ for each combination 3922 of qualifiers. 3923 \end{rationale} 3924 3925 \begin{rationale} 3926 Since \Index{incomplete type}s are not type values, they can not be used as the initializer in a 3927 type declaration, or as the type of a structure or union member. This prevents the declaration of 3928 types that contain each other. 3929 \begin{lstlisting} 3930 type t1; 3931 type t2 = t1; // illegal: incomplete type t1. 3932 type t1 = t2; 3933 \end{lstlisting} 3934 3935 The initializer in a file-scope declaration must be a constant expression. This means type 3936 declarations can not build on opaque types, which is a deficiency\index{deficiencies!nesting opaque 3937 types}. 3938 \begin{lstlisting} 3939 extern type Huge; // extended-precision integer type. 3940 type Rational = struct { 3941 Huge numerator, denominator; // illegal 3942 }; 3943 struct Pair { 3944 Huge first, second; // legal 3945 }; 3946 \end{lstlisting} 3947 Without this restriction, \CFA might require ``module initialization'' code ( since 3948 \lstinline$Rational$ has external linkage, it must be created before any other translation unit 3949 instantiates it), and would force an ordering on the initialization of the translation unit that 3950 defines \lstinline$Huge$ and the translation that declares \lstinline$Rational$. 3951 3952 A benefit of the restriction is that it prevents the declaration in separate translation units of 3953 types that contain each other, which would be hard to prevent otherwise. 3954 \begin{lstlisting} 3955 // File a.c: 3956 extern type t1; 3957 type t2 = struct { t1 f1; ... } // illegal 3958 // File b.c: 3959 extern type t2; 3960 type t1 = struct { t2 f2; ... } // illegal 3961 \end{lstlisting} 3962 \end{rationale} 3963 3964 \begin{rationale} 3965 Since a \nonterm{type-declaration} is a \nonterm{declaration} and not a 3966 \nonterm{struct-declaration}, type declarations can not be structure members. The form of 3967 \nonterm{type-declaration} forbids arrays of, pointers to, and functions returning \lstinline$type$. 3968 Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued 3969 expressions. It also side-steps the problem of type-valued expressions producing different values 3970 in different declarations. 3971 3972 Since a type declaration is not a \nonterm{parameter-declaration}, functions can not have explicit 3973 type parameters. This may be too restrictive, but it attempts to make compilation simpler. Recall 3974 that when traditional C scanners read in an identifier, they look it up in the symbol table to 3975 determine whether or not it is a typedef name, and return a ``type'' or ``identifier'' token 3976 depending on what they find. A type parameter would add a type name to the current scope. The 3977 scope manipulations involved in parsing the declaration of a function that takes function pointer 3978 parameters and returns a function pointer may just be too complicated. 3979 3980 Explicit type parameters don't seem to be very useful, anyway, because their scope would not include 3981 the return type of the function. Consider the following attempt to define a type-safe memory 3982 allocation function. 3983 \begin{lstlisting} 3984 #include <stdlib.h> 3985 T * new( type T ) { return ( T * )malloc( sizeof( T) ); }; 3986 @\ldots@ 3987 int * ip = new( int ); 3988 \end{lstlisting} 3989 This looks sensible, but \CFA's declaration-before-use rules mean that ``\lstinline$T$'' in the 3990 function body refers to the parameter, but the ``\lstinline$T$'' in the return type refers to the 3991 meaning of \lstinline$T$ in the scope that contains \lstinline$new$; it could be undefined, or a 3992 type name, or a function or variable name. Nothing good can result from such a situation. 3993 \end{rationale} 3994 3995 \examples 3996 Since type declarations create new types, instances of types are always passed by value. 3997 \begin{lstlisting} 3998 type A1 = int[2]; 3999 void f1( A1 a ) { a[0] = 0; }; 4000 typedef int A2[2]; 4001 void f2( A2 a ) { a[0] = 0; }; 4002 A1 v1; 4003 A2 v2; 4004 f1( v1 ); 4005 f2( v2 ); 4006 \end{lstlisting} 4007 \lstinline$V1$ is passed by value, so \lstinline$f1()$'s assignment to \lstinline$a[0]$ does not 4008 modify v1. \lstinline$V2$ is converted to a pointer, so \lstinline$f2()$ modifies 4009 \lstinline$v2[0]$. 4010 4011 A translation unit containing the declarations 4012 \begin{lstlisting} 4013 extern type Complex;@\use{Complex}@ // opaque type declaration. 4014 extern float abs( Complex );@\use{abs}@ 4015 \end{lstlisting} 4016 can contain declarations of complex numbers, which can be passed to \lstinline$abs$. Some other 4017 translation unit must implement \lstinline$Complex$ and \lstinline$abs$. That unit might contain 4018 the declarations 4019 \begin{lstlisting} 4020 type Complex = struct { float re, im; };@\impl{Complex}@ 4021 Complex cplx_i = { 0.0, 1.0 };@\impl{cplx_i}@ 4022 float abs( Complex c ) {@\impl{abs( Complex )}@ 4023 return sqrt( c.re * c.re + c.im * c.im ); 4024 } 4025 \end{lstlisting} 4026 Note that \lstinline$c$ is implicitly converted to a \lstinline$struct$ so that its components can 4027 be retrieved. 4028 4029 \begin{lstlisting} 4030 type Time_of_day = int;@\impl{Time_of_day}@ // seconds since midnight. 4031 Time_of_day ?+?( Time_of_day t1, int seconds ) {@\impl{?+?}@ 4032 return (( int)t1 + seconds ) % 86400; 4033 } 4034 \end{lstlisting} 4035 \lstinline$t1$ must be cast to its implementation type to prevent infinite recursion. 4036 4037 \begin{rationale} 4038 Within the scope of a type definition, an instance of the type can be viewed as having that type or 4039 as having the implementation type. In the \lstinline$Time_of_day$ example, the difference is 4040 important. Different languages have treated the distinction between the abstraction and the 4041 implementation in different ways. 4042 \begin{itemize} 4043 \item 4044 Inside a Clu cluster \cite{clu}, the declaration of an instance states which view applies. Two 4045 primitives called \lstinline$up$ and \lstinline$down$ can be used to convert between the views. 4046 \item 4047 The Simula class \cite{Simula87} is essentially a record type. Since the only operations on a 4048 record are member selection and assignment, which can not be overloaded, there is never any 4049 ambiguity as to whether the abstraction or the implementation view is being used. In {\CC} 4050 \cite{c++}, operations on class instances include assignment and ``\lstinline$&$'', which can be 4051 overloaded. A ``scope resolution'' operator can be used inside the class to specify whether the 4052 abstract or implementation version of the operation should be used. 4053 \item 4054 An Ada derived type definition \cite{ada} creates a new type from an old type, and also implicitly 4055 declares derived subprograms that correspond to the existing subprograms that use the old type as a 4056 parameter type or result type. The derived subprograms are clones of the existing subprograms with 4057 the old type replaced by the derived type. Literals and aggregates of the old type are also cloned. 4058 In other words, the abstract view provides exactly the same operations as the implementation view. 4059 This allows the abstract view to be used in all cases. 4060 4061 The derived subprograms can be replaced by programmer-specified subprograms. This is an exception 4062 to the normal scope rules, which forbid duplicate definitions of a subprogram in a scope. In this 4063 case, explicit conversions between the derived type and the old type can be used. 4064 \end{itemize} 4065 \CFA's rules are like Clu's, except that implicit conversions and 4066 conversion costs allow it to do away with most uses of \lstinline$up$ and \lstinline$down$. 4067 \end{rationale} 4068 4069 4070 \subsubsection{Default functions and objects} 4071 4072 A declaration\index{type declaration} of a type identifier \lstinline$T$ with type-class 4073 \lstinline$type$ implicitly declares a \define{default assignment} function 4074 \lstinline$T ?=?( T *, T )$\use{?=?}, with the same \Index{scope} and \Index{linkage} as the 4075 identifier \lstinline$T$. 4076 \begin{rationale} 4077 Assignment is central to C's imperative programming style, and every existing C object type has 4078 assignment defined for it ( except for array types, which are treated as pointer types for purposes 4079 of assignment). Without this rule, nearly every inferred type parameter would need an accompanying 4080 assignment assertion parameter. If a type parameter should not have an assignment operation, 4081 \lstinline$dtype$ should be used. If a type should not have assignment defined, the user can define 4082 an assignment function that causes a run-time error, or provide an external declaration but no 4083 definition and thus cause a link-time error. 4084 \end{rationale} 4085 4086 A definition\index{type definition} of a type identifier \lstinline$T$ with \Index{implementation 4087 type} \lstinline$I$ and type-class \lstinline$type$ implicitly defines a default assignment 4088 function. A definition\index{type definition} of a type identifier \lstinline$T$ with implementation 4089 type \lstinline$I$ and an assertion list implicitly defines \define{default function}s and 4090 \define{default object}s as declared by the assertion declarations. The default objects and 4091 functions have the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$. Their 4092 values are determined as follows: 4093 \begin{itemize} 4094 \item 4095 If at the definition of \lstinline$T$ there is visible a declaration of an object with the same name 4096 as the default object, and if the type of that object with all occurrence of \lstinline$I$ replaced 4097 by \lstinline$T$ is compatible with the type of the default object, then the default object is 4098 initialized with that object. Otherwise the scope of the declaration of \lstinline$T$ must contain 4099 a definition of the default object. 4100 4101 \item 4102 If at the definition of \lstinline$T$ there is visible a declaration of a function with the same 4103 name as the default function, and if the type of that function with all occurrence of \lstinline$I$ 4104 replaced by \lstinline$T$ is compatible with the type of the default function, then the default 4105 function calls that function after converting its arguments and returns the converted result. 4106 4107 Otherwise, if \lstinline$I$ contains exactly one anonymous member\index{anonymous member} such that 4108 at the definition of \lstinline$T$ there is visible a declaration of a function with the same name 4109 as the default function, and the type of that function with all occurrences of the anonymous 4110 member's type in its parameter list replaced by \lstinline$T$ is compatible with the type of the 4111 default function, then the default function calls that function after converting its arguments and 4112 returns the result. 4113 4114 Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default 4115 function. 4116 \end{itemize} 4117 \begin{rationale} 4118 Note that a pointer to a default function will not compare as equal to a pointer to the inherited 4119 function. 4120 \end{rationale} 4121 4122 A function or object with the same type and name as a default function or object that is declared 4123 within the scope of the definition of \lstinline$T$ replaces the default function or object. 4124 4125 \examples 4126 \begin{lstlisting} 4127 context s( type T ) { 4128 T a, b; 4129 } 4130 struct impl { int left, right; } a = { 0, 0 }; 4131 type Pair | s( Pair ) = struct impl; 4132 Pair b = { 1, 1 }; 4133 \end{lstlisting} 4134 The definition of \lstinline$Pair$ implicitly defines two objects \lstinline$a$ and \lstinline$b$. 4135 \lstinline$Pair a$ inherits its value from the \lstinline$struct impl a$. The definition of 4136 \lstinline$Pair b$ is compulsory because there is no \lstinline$struct impl b$ to construct a value 4137 from. 4138 \begin{lstlisting} 4139 context ss( type T ) { 4140 T clone( T ); 4141 void munge( T * ); 4142 } 4143 type Whatsit | ss( Whatsit );@\use{Whatsit}@ 4144 type Doodad | ss( Doodad ) = struct doodad {@\use{Doodad}@ 4145 Whatsit; // anonymous member 4146 int extra; 4147 }; 4148 Doodad clone( Doodad ) { ... } 4149 \end{lstlisting} 4150 The definition of \lstinline$Doodad$ implicitly defines three functions: 4151 \begin{lstlisting} 4152 Doodad ?=?( Doodad *, Doodad ); 4153 Doodad clone( Doodad ); 4154 void munge( Doodad * ); 4155 \end{lstlisting} 4156 The assignment function inherits \lstinline$struct doodad$'s assignment function because the types 4157 match when \lstinline$struct doodad$ is replaced by \lstinline$Doodad$ throughout. 4158 \lstinline$munge()$ inherits \lstinline$Whatsit$'s \lstinline$munge()$ because the types match when 4159 \lstinline$Whatsit$ is replaced by \lstinline$Doodad$ in the parameter list. \lstinline$clone()$ 4160 does \emph{not} inherit \lstinline$Whatsit$'s \lstinline$clone()$: replacement in the parameter 4161 list yields ``\lstinline$Whatsit clone( Doodad )$'', which is not compatible with 4162 \lstinline$Doodad$'s \lstinline$clone()$'s type. Hence the definition of 4163 ``\lstinline$Doodad clone( Doodad )$'' is necessary. 4164 4165 Default functions and objects are subject to the normal scope rules. 4166 \begin{lstlisting} 4167 type T = @\ldots@; 4168 T a_T = @\ldots@; // Default assignment used. 4169 T ?=?( T *, T ); 4170 T a_T = @\ldots@; // Programmer-defined assignment called. 4171 \end{lstlisting} 4172 \begin{rationale} 4173 A compiler warning would be helpful in this situation. 4174 \end{rationale} 4175 4176 \begin{rationale} 4177 The \emph{class} construct of object-oriented programming languages performs three independent 4178 functions. It \emph{encapsulates} a data structure; it defines a \emph{subtype} relationship, whereby 4179 instances of one class may be used in contexts that require instances of another; and it allows one 4180 class to \emph{inherit} the implementation of another. 4181 4182 In \CFA, encapsulation is provided by opaque types and the scope rules, and subtyping is provided 4183 by specifications and assertions. Inheritance is provided by default functions and objects. 4184 \end{rationale} 4185 4186 4187 \section{Statements and blocks} 4188 4189 \begin{syntax} 4190 \oldlhs{statement} 4191 \rhs \nonterm{exception-statement} 4192 \end{syntax} 4193 4194 Many statements contain expressions, which may have more than one interpretation. The following 4195 sections describe how the \CFA translator selects an interpretation. In all cases the result of the 4196 selection shall be a single unambiguous \Index{interpretation}. 4197 4198 4199 \subsection{Labeled statements} 4200 4201 \begin{syntax} 4202 \oldlhs{labeled-statement} 4203 \rhs \lstinline$case$ \nonterm{case-value-list} : \nonterm{statement} 4204 \lhs{case-value-list} 4205 \rhs \nonterm{case-value} 4206 \rhs \nonterm{case-value-list} \lstinline$,$ \nonterm{case-value} 4207 \lhs{case-value} 4208 \rhs \nonterm{constant-expression} 4209 \rhs \nonterm{subrange} 4210 \lhs{subrange} 4211 \rhs \nonterm{constant-expression} \lstinline$~$ \nonterm{constant-expression} 4212 \end{syntax} 4213 4214 The following have identical meaning: 4215 \begin{lstlisting} 4216 case 1: case 2: case 3: case 4: case 5: 4217 case 1, 2, 3, 4, 5: 4218 case 1~5: 4219 \end{lstlisting} 4220 Multiple subranges are allowed: 4221 \begin{lstlisting} 4222 case 1~4, 9~14, 27~32: 4223 \end{lstlisting} 4224 The \lstinline$case$ and \lstinline$default$ clauses are restricted within the \lstinline$switch$ and \lstinline$choose$ statements, precluding Duff's device. 4225 4226 4227 \subsection{Expression and null statements} 4228 4229 The expression in an expression statement is treated as being cast to \lstinline$void$. 4230 4231 4232 \subsection{Selection statements} 4233 4234 \begin{syntax} 4235 \oldlhs{selection-statement} 4236 \rhs \lstinline$choose$ \lstinline$($ \nonterm{expression} \lstinline$)$ \nonterm{statement} 4237 \end{syntax} 4238 4239 The controlling expression \lstinline$E$ in the \lstinline$switch$ and \lstinline$choose$ statement: 4240 \begin{lstlisting} 4241 switch ( E ) ... 4242 choose ( E ) ... 4243 \end{lstlisting} 4244 may have more than one interpretation, but it shall have only one interpretation with an integral type. 4245 An \Index{integer promotion} is performed on the expression if necessary. 4246 The constant expressions in \lstinline$case$ statements with the switch are converted to the promoted type. 4247 4248 4249 \setcounter{subsubsection}{3} 4250 \subsubsection{The \lstinline$choose$ statement} 4251 4252 The \lstinline$choose$ statement is the same as the \lstinline$switch$ statement except control transfers to the end of the \lstinline$choose$ statement at a \lstinline$case$ or \lstinline$default$ labeled statement. 4253 The \lstinline$fallthru$ statement is used to fall through to the next \lstinline$case$ or \lstinline$default$ labeled statement. 4254 The following have identical meaning: 4255 \begin{flushleft} 4256 \begin{tabular}{@{\hspace{2em}}l@{\hspace{2em}}l@{}} 4257 \begin{lstlisting} 4258 switch (...) { 4259 case 1: ... ; break; 4260 case 2: ... ; break; 4261 case 3: ... ; // fall through 4262 case 4: ... ; // fall through 4263 default: ... break; 4264 } 4265 \end{lstlisting} 4266 & 4267 \begin{lstlisting} 4268 choose (...) { 4269 case 1: ... ; // exit 4270 case 2: ... ; // exit 4271 case 3: ... ; fallthru; 4272 case 4: ... ; fallthru; 4273 default: ... ; // exit 4274 } 4275 \end{lstlisting} 4276 \end{tabular} 4277 \end{flushleft} 4278 The \lstinline$choose$ statement addresses the problem of accidental fall-through associated with the \lstinline$switch$ statement. 4279 4280 4281 \subsection{Iteration statements} 4282 4283 The controlling expression \lstinline$E$ in the loops 4284 \begin{lstlisting} 4285 if ( E ) ... 4286 while ( E ) ... 4287 do ... while ( E ); 4288 \end{lstlisting} 4289 is treated as ``\lstinline$( int )((E)!=0)$''. 4290 4291 The statement 4292 \begin{lstlisting} 4293 for ( a; b; c ) @\ldots@ 4294 \end{lstlisting} 4295 is treated as 4296 \begin{lstlisting} 4297 for ( ( void )( a ); ( int )(( b )!=0); ( void )( c ) ) ... 4298 \end{lstlisting} 4299 4300 4301 \subsection{Jump statements} 4302 4303 \begin{syntax} 4304 \oldlhs{jump-statement} 4305 \rhs \lstinline$continue$ \nonterm{identifier}\opt 4306 \rhs \lstinline$break$ \nonterm{identifier}\opt 4307 \rhs \ldots 4308 \rhs \lstinline$throw$ \nonterm{assignment-expression}\opt 4309 \rhs \lstinline$throwResume$ \nonterm{assignment-expression}\opt \nonterm{at-expression}\opt 4310 \lhs{at-expression} \lstinline$_At$ \nonterm{assignment-expression} 4311 \end{syntax} 4312 4313 Labeled \lstinline$continue$ and \lstinline$break$ allow useful but restricted control-flow that reduces the need for the \lstinline$goto$ statement for exiting multiple nested control-structures. 4314 \begin{lstlisting} 4315 L1: { // compound 4316 L2: switch ( ... ) { // switch 4317 case ...: 4318 L3: for ( ;; ) { // outer for 4319 L4: for ( ;; ) { // inner for 4320 continue L1; // error: not enclosing iteration 4321 continue L2; // error: not enclosing iteration 4322 continue L3; // next iteration of outer for 4323 continue L4; // next iteration of inner for 4324 break L1; // exit compound 4325 break L2; // exit switch 4326 break L3; // exit outer for 4327 break L4; // exit inner for 4328 } // for 4329 } // for 4330 break; // exit switch 4331 default: 4332 break L1; // exit compound 4333 } // switch 4334 ... 4335 } // compound 4336 \end{lstlisting} 4337 4338 4339 \setcounter{subsubsection}{1} 4340 \subsubsection{The \lstinline$continue$ statement} 4341 4342 The identifier in a \lstinline$continue$ statement shall name a label located on an enclosing iteration statement. 4343 4344 4345 \subsubsection{The \lstinline$break$ statement} 4346 4347 The identifier in a \lstinline$break$ statement shall name a label located on an enclosing compound, selection or iteration statement. 4348 4349 4350 \subsubsection{The \lstinline$return$ statement} 4351 4352 An expression in a \lstinline$return$ statement is treated as being cast to the result type of the function. 4353 4354 4355 \subsubsection{The \lstinline$throw$ statement} 4356 4357 When an exception is raised, \Index{propagation} directs control from a raise in the source execution to a handler in the faulting execution. 4358 4359 4360 \subsubsection{The \lstinline$throwResume$ statement} 4361 4362 4363 \subsection{Exception statements} 4364 4365 \begin{syntax} 4366 \lhs{exception-statement} 4367 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list} 4368 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{finally-clause} 4369 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list} \nonterm{finally-clause} 4370 \lhs{handler-list} 4371 \rhs \nonterm{handler-clause} 4372 \rhs \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement} 4373 \rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement} 4374 \rhs \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement} 4375 \rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement} 4376 \lhs{handler-clause} 4377 \rhs \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement} 4378 \rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement} 4379 \rhs \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement} 4380 \rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement} 4381 \lhs{finally-clause} 4382 \rhs \lstinline$finally$ \nonterm{compound-statement} 4383 \lhs{exception-declaration} 4384 \rhs \nonterm{type-specifier} 4385 \rhs \nonterm{type-specifier} \nonterm{declarator} 4386 \rhs \nonterm{type-specifier} \nonterm{abstract-declarator} 4387 \rhs \nonterm{new-abstract-declarator-tuple} \nonterm{identifier} 4388 \rhs \nonterm{new-abstract-declarator-tuple} 4389 \lhs{asynchronous-statement} 4390 \rhs \lstinline$enable$ \nonterm{identifier-list} \nonterm{compound-statement} 4391 \rhs \lstinline$disable$ \nonterm{identifier-list} \nonterm{compound-statement} 4392 \end{syntax} 4393 4394 \Index{Exception statement}s allow a dynamic call to a handler for \Index{recovery} (\Index{termination}) or \Index{correction} (\Index{resumption}) of an \Index{abnormal event}. 4395 4396 4397 \subsubsection{The \lstinline$try$ statement} 4398 4399 The \lstinline$try$ statement is a block with associated handlers, called a \Index{guarded block}; 4400 all other blocks are \Index{unguarded block}s. 4401 A \lstinline$goto$, \lstinline$break$, \lstinline$return$, or \lstinline$continue$ statement can be used to transfer control out of a try block or handler, but not into one. 4402 4403 4404 \subsubsection{The \lstinline$enable$/\lstinline$disable$ statements} 4405 4406 The \lstinline$enable$/\lstinline$disable$ statements toggle delivery of \Index{asynchronous exception}s. 4407 4408 4409 \setcounter{section}{9} 4410 \section{Preprocessing directives} 4411 4412 4413 \setcounter{subsection}{7} 4414 \subsection{Predefined macro names} 4415 4416 The implementation shall define the macro names \lstinline$__LINE__$, \lstinline$__FILE__$, 4417 \lstinline$__DATE__$, and \lstinline$__TIME__$, as in the {\c11} standard. It shall not define the 4418 macro name \lstinline$__STDC__$. 4419 4420 In addition, the implementation shall define the macro name \lstinline$__CFORALL__$ to be the 4421 decimal constant 1. 4422 4423 4424 \appendix 4425 4426 4427 \chapter{Examples} 4428 4429 4430 \section{C types} 4431 This section gives example specifications for some groups of types that are important in the C 4432 language, in terms of the predefined operations that can be applied to those types. 4433 4434 4435 \subsection{Scalar, arithmetic, and integral types} 4436 4437 The pointer, integral, and floating-point types are all \define{scalar types}. All of these types 4438 can be logically negated and compared. The assertion ``\lstinline$scalar( Complex )$'' should be read 4439 as ``type \lstinline$Complex$ is scalar''. 4440 \begin{lstlisting} 4441 context scalar( type T ) {@\impl{scalar}@ 4442 int !?( T ); 4443 int ?<?( T, T ), ?<=?( T, T ), ?==?( T, T ), ?>=?( T, T ), ?>?( T, T ), ?!=?( T, T ); 4444 }; 4445 \end{lstlisting} 4446 4447 The integral and floating-point types are \define{arithmetic types}, which support the basic 4448 arithmetic operators. The use of an assertion in the \nonterm{spec-parameter-list} declares that, 4449 in order to be arithmetic, a type must also be scalar ( and hence that scalar operations are 4450 available ). This is equivalent to inheritance of specifications. 4451 \begin{lstlisting} 4452 context arithmetic( type T | scalar( T ) ) {@\impl{arithmetic}@@\use{scalar}@ 4453 T +?( T ), -?( T ); 4454 T ?*?( T, T ), ?/?( T, T ), ?+?( T, T ), ?-?( T, T ); 4455 }; 4456 \end{lstlisting} 4457 4458 The various flavors of \lstinline$char$ and \lstinline$int$ and the enumerated types make up the 4459 \define{integral types}. 4460 \begin{lstlisting} 4461 context integral( type T | arithmetic( T ) ) {@\impl{integral}@@\use{arithmetic}@ 4462 T ~?( T ); 4463 T ?&?( T, T ), ?|?( T, T ), ?^?( T, T ); 4464 T ?%?( T, T ); 4465 T ?<<?( T, T ), ?>>?( T, T ); 4466 }; 4467 \end{lstlisting} 4468 4469 4470 \subsection{Modifiable types} 4471 \index{modifiable lvalue} 4472 4473 The only operation that can be applied to all modifiable lvalues is simple assignment. 4474 \begin{lstlisting} 4475 context m_lvalue( type T ) {@\impl{m_lvalue}@ 4476 T ?=?( T *, T ); 4477 }; 4478 \end{lstlisting} 4479 4480 Modifiable scalar lvalues are scalars and are modifiable lvalues, and assertions in the 4481 \nonterm{spec-parameter-list} reflect those relationships. This is equivalent to multiple 4482 inheritance of specifications. Scalars can also be incremented and decremented. 4483 \begin{lstlisting} 4484 context m_l_scalar( type T | scalar( T ) | m_lvalue( T ) ) {@\impl{m_l_scalar}@ 4485 T ?++( T * ), ?--( T * );@\use{scalar}@@\use{m_lvalue}@ 4486 T ++?( T * ), --?( T * ); 4487 }; 4488 \end{lstlisting} 4489 4490 Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic. Note that this 4491 results in the ``inheritance'' of \lstinline$scalar$ along both paths. 4492 \begin{lstlisting} 4493 context m_l_arithmetic( type T | m_l_scalar( T ) | arithmetic( T ) ) {@\impl{m_l_arithmetic}@ 4494 T ?/=?( T *, T ), ?*=?( T *, T );@\use{m_l_scalar}@@\use{arithmetic}@ 4495 T ?+=?( T *, T ), ?-=?( T *, T ); 4496 }; 4497 4498 context m_l_integral( type T | m_l_arithmetic( T ) | integral( T ) ) {@\impl{m_l_integral}@ 4499 T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );@\use{m_l_arithmetic}@ 4500 T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );@\use{integral}@ 4501 }; 4502 \end{lstlisting} 4503 4504 4505 \subsection{Pointer and array types} 4506 4507 Array types can barely be said to exist in {\c11}, since in most cases an array name is treated as a 4508 constant pointer to the first element of the array, and the subscript expression 4509 ``\lstinline$a[i]$'' is equivalent to the dereferencing expression ``\lstinline$(*( a+( i )))$''. 4510 Technically, pointer arithmetic and pointer comparisons other than ``\lstinline$==$'' and 4511 ``\lstinline$!=$'' are only defined for pointers to array elements, but the type system does not 4512 enforce those restrictions. Consequently, there is no need for a separate ``array type'' 4513 specification. 4514 4515 Pointer types are scalar types. Like other scalar types, they have ``\lstinline$+$'' and 4516 ``\lstinline$-$'' operators, but the types do not match the types of the operations in 4517 \lstinline$arithmetic$, so these operators cannot be consolidated in \lstinline$scalar$. 4518 \begin{lstlisting} 4519 context pointer( type P | scalar( P ) ) {@\impl{pointer}@@\use{scalar}@ 4520 P ?+?( P, long int ), ?+?( long int, P ), ?-?( P, long int ); 4521 ptrdiff_t ?-?( P, P ); 4522 }; 4523 4524 context m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {@\impl{m_l_pointer}@ 4525 P ?+=?( P *, long int ), ?-=?( P *, long int ); 4526 P ?=?( P *, void * ); 4527 void * ?=?( void **, P ); 4528 }; 4529 \end{lstlisting} 4530 4531 Specifications that define the dereference operator ( or subscript operator ) require two 4532 parameters, one for the pointer type and one for the pointed-at ( or element ) type. Different 4533 specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not 4534 included in types. The assertion ``\lstinline$|ptr_to( Safe_pointer, int )$'' should be read as 4535 ``\lstinline$Safe_pointer$ acts like a pointer to \lstinline$int$''. 4536 \begin{lstlisting} 4537 context ptr_to( type P | pointer( P ), type T ) {@\impl{ptr_to}@@\use{pointer}@ 4538 lvalue T *?( P ); lvalue T ?[?]( P, long int ); 4539 }; 4540 4541 context ptr_to_const( type P | pointer( P ), type T ) {@\impl{ptr_to_const}@ 4542 const lvalue T *?( P ); const lvalue T ?[?]( P, long int );@\use{pointer}@ 4543 }; 4544 4545 context ptr_to_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_volatile}@ 4546 volatile lvalue T *?( P ); volatile lvalue T ?[?]( P, long int );@\use{pointer}@ 4547 }; 4548 \end{lstlisting} 4549 \begin{lstlisting} 4550 context ptr_to_const_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_const_volatile}@ 4551 const volatile lvalue T *?( P );@\use{pointer}@ 4552 const volatile lvalue T ?[?]( P, long int ); 4553 }; 4554 \end{lstlisting} 4555 4556 Assignment to pointers is more complicated than is the case with other types, because the target's 4557 type can have extra type qualifiers in the pointed-at type: a ``\lstinline$T *$'' can be assigned to 4558 a ``\lstinline$const T *$'', a ``\lstinline$volatile T *$'', and a ``\lstinline$const volatile T *$''. 4559 Again, the pointed-at type is passed in, so that assertions can connect these specifications to the 4560 ``\lstinline$ptr_to$'' specifications. 4561 \begin{lstlisting} 4562 context m_l_ptr_to( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to}@ type T | ptr_to( P, T )@\use{ptr_to}@ { 4563 P ?=?( P *, T * ); 4564 T * ?=?( T **, P ); 4565 }; 4566 4567 context m_l_ptr_to_const( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_const}@ type T | ptr_to_const( P, T )@\use{ptr_to_const}@) { 4568 P ?=?( P *, const T * ); 4569 const T * ?=?( const T **, P ); 4570 }; 4571 4572 context m_l_ptr_to_volatile( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_volatile}@ type T | ptr_to_volatile( P, T )) {@\use{ptr_to_volatile}@ 4573 P ?=?( P *, volatile T * ); 4574 volatile T * ?=?( volatile T **, P ); 4575 }; 4576 4577 context m_l_ptr_to_const_volatile( type P | ptr_to_const_volatile( P ),@\use{ptr_to_const_volatile}@@\impl{m_l_ptr_to_const_volatile}@ 4578 type T | m_l_ptr_to_volatile( P, T ) | m_l_ptr_to_const( P )) {@\use{m_l_ptr_to_const}@@\use{m_l_ptr_to_volatile}@ 4579 P ?=?( P *, const volatile T * ); 4580 const volatile T * ?=?( const volatile T **, P ); 4581 }; 4582 \end{lstlisting} 4583 4584 Note the regular manner in which type qualifiers appear in those specifications. An alternative 4585 specification can make use of the fact that qualification of the pointed-at type is part of a 4586 pointer type to capture that regularity. 4587 \begin{lstlisting} 4588 context m_l_ptr_like( type MyP | m_l_pointer( MyP ),@\use{m_l_pointer}@@\impl{m_l_ptr_like}@ type CP | m_l_pointer( CP ) ) { 4589 MyP ?=?( MyP *, CP ); 4590 CP ?=?( CP *, MyP ); 4591 }; 4592 \end{lstlisting} 4593 The assertion ``\lstinline$| m_l_ptr_like( Safe_ptr, const int * )$'' should be read as 4594 ``\lstinline$Safe_ptr$ is a pointer type like \lstinline$const int *$''. This specification has two 4595 defects, compared to the original four: there is no automatic assertion that dereferencing a 4596 \lstinline$MyP$ produces an lvalue of the type that \lstinline$CP$ points at, and the 4597 ``\lstinline$|m_l_pointer( CP )$'' assertion provides only a weak assurance that the argument passed 4598 to \lstinline$CP$ really is a pointer type. 4599 4600 4601 \section{Relationships between operations} 4602 4603 Different operators often have related meanings; for instance, in C, ``\lstinline$+$'', 4604 ``\lstinline$+=$'', and the two versions of ``\lstinline$++$'' perform variations of addition. 4605 Languages like {\CC} and Ada allow programmers to define operators for new types, but do not 4606 require that these relationships be preserved, or even that all of the operators be implemented. 4607 Completeness and consistency is left to the good taste and discretion of the programmer. It is 4608 possible to encourage these attributes by providing generic operator functions, or member functions 4609 of abstract classes, that are defined in terms of other, related operators. 4610 4611 In \CFA, polymorphic functions provide the equivalent of these generic operators, and 4612 specifications explicitly define the minimal implementation that a programmer should provide. This 4613 section shows a few examples. 4614 4615 4616 \subsection{Relational and equality operators} 4617 4618 The different comparison operators have obvious relationships, but there is no obvious subset of the 4619 operations to use in the implementation of the others. However, it is usually convenient to 4620 implement a single comparison function that returns a negative integer, 0, or a positive integer if 4621 its first argument is respectively less than, equal to, or greater than its second argument; the 4622 library function \lstinline$strcmp$ is an example. 4623 4624 C and \CFA have an extra, non-obvious comparison operator: ``\lstinline$!$'', logical negation, 4625 returns 1 if its operand compares equal to 0, and 0 otherwise. 4626 \begin{lstlisting} 4627 context comparable( type T ) { 4628 const T 0; 4629 int compare( T, T ); 4630 } 4631 4632 forall( type T | comparable( T ) ) int ?<?( T l, T r ) { 4633 return compare( l, r ) < 0; 4634 } 4635 // ... similarly for <=, ==, >=, >, and !=. 4636 4637 forall( type T | comparable( T ) ) int !?( T operand ) { 4638 return !compare( operand, 0 ); 4639 } 4640 \end{lstlisting} 4641 4642 4643 \subsection{Arithmetic and integer operations} 4644 4645 A complete arithmetic type would provide the arithmetic operators and the corresponding assignment 4646 operators. Of these, the assignment operators are more likely to be implemented directly, because 4647 it is usually more efficient to alter the contents of an existing object than to create and return a 4648 new one. Similarly, a complete integral type would provide integral operations based on integral 4649 assignment operations. 4650 \begin{lstlisting} 4651 context arith_base( type T ) { 4652 const T 1; 4653 T ?+=?( T *, T ), ?-=?( T *, T ), ?*=?( T *, T ), ?/=?( T *, T ); 4654 } 4655 4656 forall( type T | arith_base( T ) ) T ?+?( T l, T r ) { 4657 return l += r; 4658 } 4659 4660 forall( type T | arith_base( T ) ) T ?++( T * operand ) { 4661 T temporary = *operand; 4662 *operand += 1; 4663 return temporary; 4664 } 4665 4666 forall( type T | arith_base( T ) ) T ++?( T * operand ) { 4667 return *operand += 1; 4668 } 4669 // ... similarly for -, --, *, and /. 4670 4671 context int_base( type T ) { 4672 T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T ); 4673 T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T ); 4674 } 4675 4676 forall( type T | int_base( T ) ) T ?&?( T l, T r ) { 4677 return l &= r; 4678 } 4679 // ... similarly for |, ^, %, <<, and >>. 4680 \end{lstlisting} 4681 4682 Note that, although an arithmetic type would certainly provide comparison functions, and an integral 4683 type would provide arithmetic operations, there does not have to be any relationship among 4684 \lstinline$int_base$, \lstinline$arith_base$ and \lstinline$comparable$. Note also that these 4685 declarations provide guidance and assistance, but they do not define an absolutely minimal set of 4686 requirements. A truly minimal implementation of an arithmetic type might only provide 4687 \lstinline$0$, \lstinline$1$, and \lstinline$?-=?$, which would be used by polymorphic 4688 \lstinline$?+=?$, \lstinline$?*=?$, and \lstinline$?/=?$ functions. 4689 4690 Note also that \lstinline$short$ is an integer type in C11 terms, but has no operations! 4691 4692 4693 \chapter{TODO} 4694 Review index entries. 4695 4696 Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers. This gets 4697 into \lstinline$noalias$ territory. Qualifying anything (``\lstinline$short restrict rs$'') means 4698 pointer parameters of \lstinline$?++$, etc, would need restrict qualifiers. 4699 4700 Enumerated types. Constants are not ints. Overloading. Definition should be ``representable as an 4701 integer type'', not ``as an int''. C11 usual conversions freely convert to and from ordinary 4702 integer types via assignment, which works between any integer types. Does enum Color ?*?( enum 4703 Color, enum Color ) really make sense? ?++ does, but it adds (int)1. 4704 4705 Operators on {,signed,unsigned} char and other small types. ?<? harmless; ?*? questionable for 4706 chars. Generic selections make these choices visible. Safe conversion operators? Predefined 4707 ``promotion'' function? 4708 4709 \lstinline$register$ assignment might be handled as assignment to a temporary with copying back and 4710 forth, but copying must not be done by assignment. 4711 4712 Don't use ptrdiff\_t by name in the predefineds. 4713 4714 Polymorphic objects. Polymorphic typedefs and type declarations. 4715 4716 4717 \bibliographystyle{plain} 4718 \bibliography{refrat} 4719 4720 4721 \addcontentsline{toc}{chapter}{\indexname} % add index name to table of contents 4722 \begin{theindex} 4723 Italic page numbers give the location of the main entry for the referenced term. Plain page numbers 4724 denote uses of the indexed term. Entries for grammar non-terminals are italicized. A typewriter 4725 font is used for grammar terminals and program identifiers. 4726 \indexspace 4727 \input{refrat.ind} 4728 \end{theindex} 4729 4730 \end{document} 4731 4732 % Local Variables: % 4733 % tab-width: 4 % 4734 % fill-column: 100 % 4735 % compile-command: "make" % 4736 % End: % -
src/CodeGen/CodeGenerator.cc
r698664b3 rd2ded3e7 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Mon Jul 27 14:40:06201513 // Update Count : 2 1811 // Last Modified By : Rob Schluntz 12 // Last Modified On : Thu Sep 17 15:24:08 2015 13 // Update Count : 231 14 14 // 15 15 … … 186 186 } 187 187 188 void CodeGenerator::printDesignators( std::list< Expression * > & designators ) { 189 typedef std::list< Expression * > DesignatorList; 190 if ( designators.size() == 0 ) return; 191 for ( DesignatorList::iterator iter = designators.begin(); iter != designators.end(); ++iter ) { 192 if ( dynamic_cast< NameExpr * >( *iter ) ) { 193 // if expression is a name, then initializing aggregate member 194 output << "."; 195 (*iter)->accept( *this ); 196 } else { 197 // if not a simple name, it has to be a constant expression, i.e. an array designator 198 output << "["; 199 (*iter)->accept( *this ); 200 output << "]"; 201 } 202 } 203 output << " = "; 204 } 205 188 206 void CodeGenerator::visit( SingleInit *init ) { 207 printDesignators( init->get_designators() ); 189 208 init->get_value()->accept( *this ); 190 209 } 191 210 192 211 void CodeGenerator::visit( ListInit *init ) { 212 printDesignators( init->get_designators() ); 193 213 output << "{ "; 194 214 genCommaList( init->begin_initializers(), init->end_initializers() ); … … 372 392 373 393 void CodeGenerator::visit( CastExpr *castExpr ) { 374 output << "(("; 375 if ( castExpr->get_results().empty() ) { 376 output << "void" ; 377 } else { 378 output << genType( castExpr->get_results().front(), "" ); 379 } // if 380 output << ")"; 381 castExpr->get_arg()->accept( *this ); 382 output << ")"; 394 // if the cast is to an lvalue type, then the cast 395 // should be dropped, since the result of a cast is 396 // never an lvalue in C 397 if ( castExpr->get_results().front()->get_isLvalue() ) { 398 castExpr->get_arg()->accept( *this ); 399 } else { 400 output << "(("; 401 if ( castExpr->get_results().empty() ) { 402 output << "void" ; 403 } else { 404 output << genType( castExpr->get_results().front(), "" ); 405 } // if 406 output << ")"; 407 castExpr->get_arg()->accept( *this ); 408 output << ")"; 409 } 383 410 } 384 411 -
src/CodeGen/CodeGenerator.h
r698664b3 rd2ded3e7 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Fri Jul 24 13:34:47201513 // Update Count : 2 511 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Aug 12 14:27:14 2015 13 // Update Count : 27 14 14 // 15 15 … … 95 95 std::ostream &output; 96 96 97 void printDesignators( std::list< Expression * > & ); 97 98 static std::string printLabels ( std::list < Label > & ); 98 99 void handleStorageClass( Declaration *decl ); -
src/GenPoly/PolyMutator.cc
r698664b3 rd2ded3e7 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Jul 15 14:50:58201513 // Update Count : 312 // Last Modified On : Fri Aug 14 15:28:50 2015 13 // Update Count : 11 14 14 // 15 15 … … 20 20 #include "SynTree/Statement.h" 21 21 #include "SynTree/Mutator.h" 22 22 #include "SynTree/Initializer.h" 23 23 24 24 namespace GenPoly { … … 146 146 } 147 147 148 149 Initializer *PolyMutator::mutate( SingleInit *singleInit ) { 150 singleInit->set_value( mutateExpression( singleInit->get_value() ) ); 151 return singleInit; 152 } 153 154 148 155 /* static class method */ 149 156 void PolyMutator::makeTyVarMap( Type *type, TyVarMap &tyVarMap ) { -
src/GenPoly/PolyMutator.h
r698664b3 rd2ded3e7 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Tue May 19 07:46:45201513 // Update Count : 111 // Last Modified By : Rob Schluntz 12 // Last Modified On : Fri Aug 14 15:27:38 2015 13 // Update Count : 4 14 14 // 15 15 … … 45 45 46 46 virtual Expression* mutate(UntypedExpr *untypedExpr); 47 47 48 virtual Initializer* mutate(SingleInit *SingleInit); 49 48 50 // template method 49 51 virtual void doBeginScope() {} -
src/GenPoly/Specialize.cc
r698664b3 rd2ded3e7 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Sat Jun 13 15:54:07201513 // Update Count : 611 // Last Modified By : Rob Schluntz 12 // Last Modified On : Tue Sep 22 14:04:13 2015 13 // Update Count : 15 14 14 // 15 15 … … 200 200 Expression * Specialize::mutate( AddressExpr *addrExpr ) { 201 201 addrExpr->get_arg()->acceptMutator( *this ); 202 assert( ! addrExpr->get_results().empty() ); 202 203 addrExpr->set_arg( doSpecialization( addrExpr->get_results().front(), addrExpr->get_arg() ) ); 203 204 return addrExpr; -
src/Parser/ExpressionNode.cc
r698664b3 rd2ded3e7 10 10 // Created On : Sat May 16 13:17:07 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Aug 11 15:13:48201513 // Update Count : 2 0012 // Last Modified On : Mon Oct 5 16:37:24 2015 13 // Update Count : 255 14 14 // 15 15 … … 32 32 ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {} 33 33 34 ExpressionNode::ExpressionNode( const string *name _ ) : ParseNode( name_), argName( 0 ) {}34 ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ), argName( 0 ) {} 35 35 36 36 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) { … … 290 290 DesignatorNode::DesignatorNode( ExpressionNode *expr, bool isArrayIndex ) : isArrayIndex( isArrayIndex ) { 291 291 set_argName( expr ); 292 assert( get_argName() ); 293 294 if ( ! isArrayIndex ) { 295 if ( VarRefNode * var = dynamic_cast< VarRefNode * >( expr ) ) { 296 297 stringstream ss( var->get_name() ); 298 double value; 299 if ( ss >> value ) { 300 // this is a floating point constant. It MUST be 301 // ".0" or ".1", otherwise the program is invalid 302 if ( ! (var->get_name() == ".0" || var->get_name() == ".1") ) { 303 throw SemanticError( "invalid designator name: " + var->get_name() ); 304 } // if 305 var->set_name( var->get_name().substr(1) ); 306 } // if 307 } // if 308 } // if 292 309 } 293 310 … … 295 312 } 296 313 314 class DesignatorFixer : public Mutator { 315 public: 316 virtual Expression* mutate( NameExpr *nameExpr ) { 317 if ( nameExpr->get_name() == "0" || nameExpr->get_name() == "1" ) { 318 Constant val( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nameExpr->get_name() ); 319 delete nameExpr; 320 return new ConstantExpr( val ); 321 } 322 return nameExpr; 323 } 324 }; 325 297 326 Expression *DesignatorNode::build() const { 327 Expression * ret = get_argName()->build(); 328 298 329 if ( isArrayIndex ) { 299 return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) ); 300 } else { 301 return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) ); 302 } // if 330 // need to traverse entire structure and change any instances of 0 or 1 to 331 // ConstantExpr 332 DesignatorFixer fixer; 333 ret = ret->acceptMutator( fixer ); 334 } // if 335 336 return ret; 303 337 } 304 338 … … 384 418 385 419 CompositeExprNode::CompositeExprNode( ExpressionNode *f, ExpressionNode *arg1, ExpressionNode *arg2): 386 function( f ), arguments( arg1 ) {387 arguments->set_link( arg2 );420 function( f ), arguments( arg1 ) { 421 arguments->set_link( arg2 ); 388 422 } 389 423 -
src/Parser/InitializerNode.cc
r698664b3 rd2ded3e7 10 10 // Created On : Sat May 16 13:20:24 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jun 6 15:49:42201513 // Update Count : 312 // Last Modified On : Thu Oct 8 17:18:55 2015 13 // Update Count : 4 14 14 // 15 15 … … 80 80 81 81 if ( aggregate ) { 82 assert( next_init() != 0 );82 //assert( next_init() != 0 ); 83 83 84 84 std::list< Initializer *> initlist; -
src/Parser/ParseNode.cc
r698664b3 rd2ded3e7 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:26:29 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Thu Jul 30 14:55:54201513 // Update Count : 2611 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Aug 12 13:26:00 2015 13 // Update Count : 36 14 14 // 15 15 … … 20 20 int ParseNode::indent_by = 4; 21 21 22 ParseNode::ParseNode() : name( 0 ), next( 0 ) {}; 23 ParseNode::ParseNode( const string *name_ ) : name( name_ ), next( 0 ) {} 22 ParseNode::ParseNode() : next( 0 ) {}; 23 ParseNode::ParseNode( const string *name ) : name( *name ), next( 0 ) { delete name; } 24 ParseNode::ParseNode( const string &name ) : name( name ), next( 0 ) { } 24 25 25 26 ParseNode::~ParseNode() { 26 delete next; delete name;27 delete next; 27 28 }; 28 29 -
src/Parser/ParseNode.h
r698664b3 rd2ded3e7 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:28:16 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Tue Aug 11 15:11:29201513 // Update Count : 1 4511 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Aug 12 13:27:11 2015 13 // Update Count : 172 14 14 // 15 15 … … 40 40 ParseNode(); 41 41 ParseNode( const std::string * ); 42 ParseNode( const std::string & ); // for copy constructing subclasses 42 43 virtual ~ParseNode(); 43 44 … … 49 50 virtual ParseNode *clone() const { return 0; }; 50 51 51 const std::string &get_name() const { return *name; } 52 const std::string &get_name() const { return name; } 53 void set_name( const std::string &newValue ) { name = newValue; } 54 52 55 virtual void print( std::ostream &, int indent = 0 ) const; 53 56 virtual void printList( std::ostream &, int indent = 0 ) const; … … 55 58 ParseNode &operator,( ParseNode &); 56 59 protected: 57 const std::string *name;60 std::string name; 58 61 ParseNode *next; 59 62 static int indent_by; -
src/Parser/lex.cc
r698664b3 rd2ded3e7 382 382 (yy_c_buf_p) = yy_cp; 383 383 384 #define YY_NUM_RULES 17 1385 #define YY_END_OF_BUFFER 17 2384 #define YY_NUM_RULES 178 385 #define YY_END_OF_BUFFER 179 386 386 /* This struct is not used in this scanner, 387 387 but its presence is necessary. */ … … 391 391 flex_int32_t yy_nxt; 392 392 }; 393 static yyconst flex_int16_t yy_accept[8 26] =393 static yyconst flex_int16_t yy_accept[852] = 394 394 { 0, 395 0, 0, 0, 0, 0, 0, 108, 108, 111, 111, 396 172, 170, 7, 9, 8, 131, 110, 95, 136, 139, 397 107, 118, 119, 134, 132, 122, 133, 125, 135, 100, 398 101, 102, 123, 124, 141, 143, 142, 144, 170, 95, 399 116, 170, 117, 137, 95, 97, 95, 95, 95, 95, 400 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 401 95, 120, 140, 121, 138, 7, 170, 4, 4, 171, 402 98, 171, 99, 108, 109, 115, 111, 112, 7, 9, 403 0, 8, 148, 166, 95, 0, 160, 130, 153, 161, 404 158, 145, 156, 146, 157, 155, 0, 105, 3, 0, 405 406 159, 105, 103, 0, 0, 103, 103, 0, 0, 103, 407 102, 102, 102, 0, 102, 128, 129, 127, 149, 151, 408 147, 152, 150, 0, 0, 0, 0, 0, 0, 0, 409 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 410 110, 107, 95, 0, 0, 163, 95, 95, 95, 95, 411 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 412 95, 95, 36, 95, 95, 95, 95, 95, 95, 95, 413 95, 95, 95, 53, 95, 95, 95, 95, 95, 95, 414 95, 95, 95, 95, 95, 95, 95, 95, 95, 162, 415 154, 7, 0, 0, 0, 2, 0, 5, 98, 0, 416 417 0, 0, 108, 0, 114, 113, 113, 0, 0, 0, 418 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419 0, 0, 0, 0, 0, 0, 126, 105, 0, 105, 420 0, 0, 6, 0, 103, 0, 0, 0, 105, 0, 421 103, 103, 103, 103, 0, 104, 0, 0, 102, 102, 422 102, 102, 0, 164, 165, 0, 168, 167, 0, 0, 423 0, 96, 0, 0, 0, 0, 0, 0, 0, 95, 424 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 425 95, 95, 95, 95, 95, 95, 95, 95, 14, 95, 426 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 427 428 95, 95, 95, 95, 95, 47, 95, 95, 95, 60, 429 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 430 95, 95, 82, 95, 95, 95, 95, 95, 95, 95, 431 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 432 0, 0, 0, 0, 113, 0, 0, 169, 0, 0, 433 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 434 105, 0, 103, 103, 0, 0, 104, 104, 0, 104, 435 0, 104, 102, 102, 0, 0, 0, 0, 0, 0, 436 0, 0, 0, 0, 95, 95, 95, 95, 95, 95, 437 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 438 439 95, 95, 95, 95, 95, 95, 20, 95, 23, 95, 440 25, 95, 95, 95, 95, 95, 95, 39, 40, 95, 441 95, 95, 95, 95, 95, 95, 52, 95, 63, 95, 442 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 443 83, 95, 95, 90, 95, 95, 0, 0, 0, 0, 395 0, 0, 0, 0, 0, 0, 113, 113, 116, 116, 396 179, 177, 7, 9, 8, 136, 115, 100, 141, 144, 397 112, 123, 124, 139, 137, 127, 138, 130, 140, 105, 398 106, 107, 128, 129, 146, 148, 147, 149, 177, 100, 399 121, 177, 122, 142, 100, 102, 100, 100, 100, 100, 400 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 401 100, 125, 145, 126, 143, 7, 177, 4, 4, 178, 402 103, 178, 104, 113, 114, 120, 116, 117, 7, 9, 403 0, 8, 153, 172, 100, 0, 165, 135, 158, 166, 404 163, 150, 161, 151, 162, 160, 0, 110, 3, 0, 405 406 164, 110, 108, 0, 0, 108, 108, 0, 0, 108, 407 107, 107, 107, 0, 107, 133, 134, 132, 154, 156, 408 152, 157, 155, 0, 0, 0, 0, 0, 0, 0, 409 0, 0, 0, 0, 0, 0, 0, 0, 101, 171, 410 0, 115, 112, 100, 0, 0, 168, 0, 100, 100, 411 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 412 100, 100, 100, 100, 100, 39, 100, 100, 100, 100, 413 100, 100, 100, 100, 100, 100, 57, 100, 100, 100, 414 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 415 100, 100, 167, 159, 7, 0, 0, 0, 2, 0, 416 417 5, 103, 0, 0, 0, 113, 0, 119, 118, 118, 418 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 419 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 420 110, 0, 110, 0, 0, 6, 0, 108, 0, 0, 421 0, 110, 0, 108, 108, 108, 108, 0, 109, 0, 422 0, 107, 107, 107, 107, 0, 169, 170, 0, 175, 423 173, 0, 0, 0, 101, 0, 0, 0, 0, 0, 424 0, 0, 0, 100, 17, 100, 100, 100, 100, 100, 425 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 426 100, 100, 14, 100, 100, 100, 100, 100, 100, 100, 427 428 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 429 100, 51, 100, 100, 100, 64, 100, 100, 100, 100, 430 100, 100, 100, 100, 100, 100, 100, 100, 87, 100, 431 100, 100, 100, 100, 100, 100, 0, 0, 0, 0, 432 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 433 118, 0, 0, 176, 0, 0, 0, 0, 0, 0, 434 0, 0, 110, 0, 0, 0, 110, 0, 108, 108, 435 0, 0, 109, 109, 0, 109, 0, 109, 107, 107, 444 436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 445 113, 0, 0, 0, 0, 0, 105, 0, 0, 0, 446 0, 0, 0, 104, 104, 0, 106, 0, 104, 104, 437 174, 100, 100, 100, 100, 100, 100, 100, 100, 100, 438 439 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 440 100, 100, 100, 21, 100, 24, 100, 27, 100, 100, 441 100, 100, 100, 100, 100, 42, 100, 44, 100, 100, 442 100, 100, 100, 100, 100, 56, 100, 67, 100, 100, 443 100, 100, 100, 100, 100, 100, 100, 100, 100, 88, 444 100, 100, 95, 100, 100, 0, 0, 0, 0, 0, 445 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 446 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 447 0, 0, 109, 109, 0, 111, 0, 109, 109, 0, 447 448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 448 0, 0, 0, 95, 95, 21, 95, 95, 95, 95, 449 450 95, 95, 95, 15, 95, 95, 95, 95, 95, 95,451 95, 95, 95, 95, 95, 95, 95, 22, 24, 95,452 30, 95, 95, 95, 95, 38, 95, 95, 95, 45,453 95, 95, 50, 95, 95, 95, 95, 95, 71, 95,454 95, 95, 95, 95, 81, 95, 95, 88, 95, 95,455 94, 0, 0, 0, 0, 0, 0, 0, 0, 0,449 450 0, 0, 100, 100, 22, 100, 100, 100, 100, 100, 451 100, 100, 15, 100, 100, 100, 100, 100, 100, 100, 452 100, 100, 100, 100, 100, 100, 23, 25, 100, 32, 453 100, 100, 100, 100, 100, 41, 100, 100, 100, 100, 454 49, 100, 100, 54, 100, 100, 100, 100, 100, 75, 455 100, 100, 100, 100, 100, 85, 100, 100, 93, 100, 456 100, 99, 0, 0, 0, 0, 0, 0, 0, 0, 456 457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 457 106, 0, 0, 104, 106, 106, 0, 104, 0, 0, 458 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 459 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 460 461 95, 95, 95, 95, 95, 55, 95, 95, 95, 95, 462 95, 95, 95, 26, 95, 95, 95, 37, 42, 95, 463 95, 48, 95, 57, 64, 95, 95, 70, 72, 75, 464 76, 78, 79, 95, 85, 95, 95, 0, 1, 0, 465 0, 0, 0, 0, 0, 98, 0, 0, 0, 113, 466 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 467 0, 0, 0, 0, 0, 95, 95, 17, 95, 95, 468 95, 95, 95, 95, 95, 16, 95, 95, 31, 95, 469 95, 95, 95, 95, 95, 95, 95, 95, 95, 33, 470 95, 35, 95, 44, 49, 95, 95, 84, 95, 95, 471 458 0, 111, 0, 0, 109, 111, 111, 0, 109, 0, 459 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 460 461 0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 462 100, 100, 100, 100, 100, 100, 59, 100, 100, 100, 463 100, 100, 100, 100, 100, 28, 100, 100, 100, 100, 464 40, 43, 46, 100, 100, 52, 100, 61, 68, 100, 465 100, 74, 76, 79, 80, 82, 83, 100, 100, 90, 466 100, 100, 0, 1, 0, 0, 0, 0, 0, 0, 467 103, 0, 0, 0, 118, 0, 0, 0, 0, 111, 472 468 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 473 0, 0, 0, 10, 11, 27, 51, 95, 95, 95, 474 95, 95, 95, 95, 95, 95, 95, 56, 58, 61, 475 95, 95, 73, 86, 95, 34, 43, 66, 67, 89, 476 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 477 0, 0, 0, 95, 65, 95, 95, 12, 95, 28, 478 32, 95, 95, 95, 62, 95, 95, 95, 95, 0, 469 100, 100, 18, 100, 100, 100, 100, 100, 100, 100, 470 16, 100, 100, 33, 100, 100, 100, 100, 100, 100, 471 472 100, 100, 100, 100, 100, 35, 100, 37, 38, 100, 473 48, 53, 100, 100, 100, 89, 100, 100, 0, 0, 479 474 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 480 0, 0, 54, 95, 95, 95, 95, 95, 95, 46, 481 59, 68, 74, 87, 92, 0, 0, 0, 0, 0, 482 483 0, 0, 0, 95, 95, 13, 18, 29, 95, 95, 484 95, 0, 0, 95, 95, 95, 95, 69, 93, 95, 485 80, 19, 41, 77, 0 475 0, 10, 11, 29, 55, 100, 100, 100, 100, 100, 476 100, 100, 100, 100, 100, 60, 62, 65, 100, 100, 477 77, 91, 100, 100, 36, 47, 70, 71, 100, 94, 478 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 479 0, 0, 0, 100, 69, 100, 100, 12, 100, 30, 480 34, 100, 100, 100, 66, 100, 100, 100, 100, 100, 481 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 482 483 0, 0, 0, 0, 58, 100, 100, 100, 100, 100, 484 100, 50, 63, 72, 78, 92, 97, 100, 100, 0, 485 0, 0, 0, 0, 0, 0, 0, 100, 100, 13, 486 19, 31, 100, 100, 100, 26, 86, 0, 0, 100, 487 100, 100, 100, 73, 98, 100, 84, 20, 45, 81, 488 0 486 489 } ; 487 490 … … 496 499 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 497 500 42, 11, 43, 11, 11, 44, 11, 45, 11, 46, 498 11, 11, 47, 48, 49, 11, 11, 50, 11, 11,499 5 1, 52, 53, 54, 55, 56, 57, 58, 59, 60,500 501 6 1, 62, 63, 64, 65, 11, 66, 67, 68, 69,502 7 0, 71, 11, 72, 73, 74, 75, 76, 77, 78,503 79, 80, 81, 82, 83, 84, 1, 1, 1, 1,501 11, 47, 48, 49, 50, 11, 11, 51, 11, 11, 502 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 503 504 62, 63, 64, 65, 66, 11, 67, 68, 69, 70, 505 71, 72, 11, 73, 74, 75, 76, 77, 78, 79, 506 80, 81, 82, 83, 84, 85, 1, 1, 1, 1, 504 507 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 505 508 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 518 521 } ; 519 522 520 static yyconst flex_int32_t yy_meta[8 5] =523 static yyconst flex_int32_t yy_meta[86] = 521 524 { 0, 522 525 1, 1, 2, 1, 1, 1, 1, 1, 3, 1, 523 526 4, 1, 1, 5, 1, 1, 1, 1, 1, 1, 524 527 6, 1, 7, 7, 7, 7, 7, 7, 1, 1, 525 1, 1, 1, 1, 1, 8, 8, 8, 8, 8,526 8, 4, 4, 9, 4, 10, 4, 4, 9, 4,527 1, 11, 1, 1, 12, 1, 8, 8, 8, 8,528 8, 8, 4, 4, 4, 4, 9, 4, 4, 4,529 10, 4, 4, 4, 9, 4, 4, 4, 4, 4,530 1, 1, 1, 1528 1, 8, 1, 1, 1, 9, 9, 9, 9, 9, 529 9, 4, 4, 10, 4, 11, 4, 4, 4, 10, 530 4, 1, 12, 1, 1, 13, 1, 9, 9, 9, 531 9, 9, 9, 4, 4, 4, 4, 10, 4, 4, 532 4, 11, 4, 4, 4, 10, 4, 4, 4, 4, 533 4, 1, 1, 1, 1 531 534 } ; 532 535 533 static yyconst flex_int16_t yy_base[ 999] =536 static yyconst flex_int16_t yy_base[1025] = 534 537 { 0, 535 0, 83, 2266, 2265, 93, 0, 175, 176, 177, 178, 536 2281, 2568, 189, 2568, 195, 54, 2568, 2223, 59, 171, 537 2568, 2568, 2568, 55, 186, 2568, 189, 187, 202, 214, 538 272, 0, 2241, 2568, 214, 2241, 150, 340, 2215, 222, 539 2568, 157, 2568, 2234, 277, 2568, 192, 133, 196, 198, 540 204, 271, 155, 218, 181, 200, 266, 238, 337, 224, 541 227, 2568, 223, 2568, 2231, 372, 400, 2568, 2237, 2568, 542 2206, 213, 2568, 0, 2568, 427, 0, 2568, 363, 2568, 543 381, 393, 2568, 498, 2205, 229, 2568, 2568, 2568, 2568, 544 2568, 2217, 2568, 2216, 2568, 2568, 2228, 558, 2568, 2240, 545 546 2568, 603, 385, 443, 419, 259, 239, 280, 399, 406, 547 0, 305, 240, 335, 411, 2568, 2568, 2568, 2210, 2568, 548 2568, 2568, 2209, 2188, 215, 277, 2203, 310, 383, 384, 549 327, 425, 380, 399, 2180, 448, 2130, 458, 2160, 288, 550 2568, 2568, 486, 2151, 2150, 2568, 420, 423, 439, 456, 551 445, 455, 460, 329, 483, 469, 462, 467, 480, 494, 552 396, 471, 472, 487, 470, 513, 489, 506, 508, 509, 553 386, 510, 516, 2152, 520, 522, 518, 541, 526, 543, 554 540, 551, 549, 553, 565, 598, 572, 581, 557, 2568, 555 2568, 669, 659, 2195, 686, 2568, 692, 2568, 2145, 559, 556 557 2141, 2135, 0, 649, 2568, 2568, 679, 2134, 2133, 2127, 558 0, 2149, 535, 606, 607, 674, 635, 625, 646, 664, 559 689, 2146, 692, 693, 2119, 2118, 2568, 712, 723, 2568, 560 2117, 2165, 2568, 714, 0, 555, 705, 759, 765, 776, 561 593, 2568, 2123, 2099, 0, 784, 2141, 787, 632, 2568, 562 2116, 2087, 798, 2568, 2568, 2119, 2568, 2568, 710, 725, 563 2099, 2094, 720, 2090, 2089, 2085, 0, 2084, 0, 712, 564 548, 710, 766, 767, 597, 745, 711, 777, 764, 788, 565 720, 783, 792, 713, 639, 789, 611, 793, 2086, 794, 566 791, 795, 810, 800, 805, 813, 814, 361, 818, 815, 567 568 816, 821, 825, 822, 826, 828, 829, 836, 838, 2080, 569 841, 842, 843, 839, 844, 845, 846, 849, 847, 853, 570 855, 860, 2079, 859, 905, 864, 866, 872, 870, 871, 571 933, 930, 2075, 2069, 2068, 0, 2067, 0, 920, 924, 572 2061, 0, 2060, 0, 2059, 0, 2074, 2568, 919, 920, 573 2054, 2051, 0, 2045, 0, 935, 941, 953, 963, 974, 574 986, 996, 2568, 2568, 960, 961, 1013, 989, 1047, 926, 575 1045, 968, 2568, 2568, 2044, 2043, 2037, 0, 2036, 0, 576 2035, 0, 2014, 0, 874, 873, 987, 903, 931, 932, 577 984, 920, 994, 995, 974, 976, 1009, 1024, 1017, 992, 578 579 1029, 1027, 952, 1030, 1034, 1040, 2016, 1031, 2011, 1047, 580 2010, 1049, 1043, 1054, 1038, 1056, 1057, 2009, 2003, 1052, 581 1058, 1062, 1069, 1073, 1074, 1075, 2002, 1076, 2001, 1078, 582 1079, 1082, 1083, 1085, 1081, 1086, 1092, 1089, 1099, 583, 583 1108, 1095, 1087, 1995, 1097, 1109, 1160, 1991, 0, 1990, 584 0, 1984, 0, 1983, 0, 1149, 1982, 0, 1978, 0, 585 1977, 1976, 1972, 0, 1971, 0, 1156, 1162, 1207, 1121, 586 1218, 1149, 1120, 1144, 2568, 1224, 1230, 1241, 1981, 1954, 587 1959, 1957, 0, 1953, 0, 1951, 0, 1945, 0, 1944, 588 0, 1943, 0, 1125, 1144, 1940, 1146, 1149, 1147, 1153, 589 590 1150, 1218, 1162, 1110, 1156, 1155, 1164, 1211, 1224, 1225, 591 1226, 164, 1228, 1208, 1170, 1232, 1238, 1939, 1938, 1235, 592 1932, 1227, 1231, 1234, 1242, 1931, 1246, 1247, 1250, 1930, 593 1252, 1255, 1924, 1257, 1261, 1254, 1256, 1258, 1923, 1264, 594 709, 1271, 1262, 1268, 1922, 1273, 1277, 1916, 1274, 1279, 595 1915, 1963, 1905, 0, 1904, 0, 1903, 0, 1897, 0, 596 1896, 0, 1895, 0, 1891, 0, 1890, 0, 1322, 1328, 597 1334, 1345, 1889, 2568, 1356, 2568, 1380, 2568, 1885, 0, 598 1884, 0, 1883, 0, 1850, 0, 0, 0, 1852, 0, 599 1342, 1281, 1315, 1322, 1333, 1289, 1283, 1338, 1340, 1336, 600 601 1361, 1343, 1341, 1362, 1364, 1365, 1367, 1397, 1373, 1314, 602 1376, 1375, 1377, 1847, 1378, 1380, 1382, 1846, 1845, 1381, 603 1387, 1839, 1389, 1838, 1837, 1396, 1391, 1833, 1832, 1831, 604 1827, 1826, 1825, 1392, 1818, 1407, 1394, 1846, 2568, 1793, 605 0, 1792, 0, 0, 0, 1791, 0, 0, 0, 2568, 606 0, 0, 0, 0, 1446, 1452, 1497, 1787, 0, 1786, 607 0, 0, 0, 0, 1782, 1408, 1430, 1784, 1410, 1432, 608 1437, 1411, 1412, 1443, 1433, 1783, 1447, 1445, 1457, 1413, 609 1476, 1463, 1450, 1477, 1475, 1474, 1480, 1479, 1481, 1779, 610 1482, 1778, 1483, 1777, 1773, 1464, 1485, 1772, 1490, 1486, 611 612 0, 0, 1768, 1764, 1763, 1762, 1537, 0, 1758, 1757, 613 1756, 1752, 1751, 1753, 1749, 1748, 1747, 1496, 1497, 1499, 614 1502, 1493, 1492, 1501, 1518, 1519, 1547, 1738, 1522, 1737, 615 1523, 1458, 1528, 1530, 1524, 1734, 1733, 1732, 1715, 1707, 616 1706, 1700, 1694, 1691, 1683, 1682, 1663, 1662, 1661, 1653, 617 1652, 1613, 1612, 1529, 1614, 1534, 1535, 1538, 1536, 1542, 618 1613, 1543, 1562, 1546, 1612, 1544, 1548, 1554, 1550, 1608, 619 1607, 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1598, 1597, 620 1567, 1566, 1505, 1552, 1560, 1565, 1563, 1571, 1564, 1286, 621 1285, 1575, 1188, 1158, 1576, 1001, 997, 950, 901, 753, 622 623 752, 642, 556, 1577, 1580, 519, 1584, 475, 1588, 1589, 624 1590, 471, 407, 1582, 1583, 1594, 1596, 353, 298, 1595, 625 274, 234, 233, 165, 2568, 1669, 1681, 1693, 1702, 1711, 626 1723, 1732, 1744, 1756, 1768, 1775, 1784, 1790, 1796, 1802, 627 1808, 1814, 1820, 1826, 1832, 1838, 1850, 1856, 1859, 1866, 628 1868, 1874, 1880, 1886, 1888, 1894, 1899, 1911, 1923, 1929, 629 1935, 1941, 1947, 1949, 1955, 1957, 1963, 1965, 1971, 1973, 630 1979, 1981, 1987, 1989, 1995, 1997, 2003, 2010, 2016, 2022, 631 2028, 2034, 2036, 2042, 2044, 2050, 2052, 2058, 2063, 2075, 632 2081, 2087, 2089, 2095, 2097, 2103, 2105, 2111, 2113, 2119, 633 634 2121, 2127, 2129, 2135, 2141, 2143, 2149, 2151, 2157, 2163, 635 2169, 2171, 2177, 2179, 2185, 2187, 2193, 2195, 2201, 2203, 636 2209, 2214, 2226, 2232, 2238, 2240, 2246, 2248, 2254, 2256, 637 2262, 2264, 2270, 2272, 2278, 2280, 2286, 2288, 2294, 2296, 638 2302, 2308, 2310, 2316, 2318, 2324, 2326, 2332, 2334, 2336, 639 2341, 2347, 2355, 2361, 2367, 2369, 2375, 2377, 2379, 2384, 640 2390, 2392, 2394, 2396, 2398, 2400, 2402, 2404, 2410, 2412, 641 2418, 2420, 2422, 2424, 2426, 2435, 2441, 2443, 2445, 2451, 642 2457, 2463, 2465, 2471, 2477, 2483, 2489, 2495, 2501, 2507, 643 2513, 2519, 2525, 2531, 2537, 2543, 2549, 2555 644 538 0, 84, 2247, 2245, 94, 0, 177, 178, 179, 180, 539 2259, 2762, 191, 2762, 197, 55, 2762, 2203, 60, 173, 540 2762, 2762, 2762, 56, 188, 2762, 191, 189, 204, 216, 541 275, 0, 2222, 2762, 216, 2222, 152, 344, 155, 220, 542 2762, 159, 2762, 217, 226, 2762, 185, 154, 212, 251, 543 237, 270, 235, 257, 241, 193, 305, 314, 333, 238, 544 228, 2762, 225, 2762, 2218, 402, 390, 2762, 2227, 2762, 545 2193, 204, 2762, 0, 2762, 426, 0, 2762, 417, 2762, 546 439, 451, 2762, 498, 2192, 235, 2762, 2762, 2762, 2762, 547 2762, 2210, 2762, 2208, 2762, 2762, 2218, 559, 2762, 2235, 548 549 2762, 605, 413, 498, 516, 289, 253, 197, 293, 305, 550 0, 319, 280, 231, 334, 2762, 2762, 2762, 2205, 2762, 551 2762, 2762, 2203, 2200, 298, 356, 2213, 366, 429, 439, 552 398, 434, 438, 448, 2194, 443, 2143, 459, 2172, 2762, 553 335, 2762, 2762, 495, 2166, 2163, 2762, 2136, 460, 282, 554 297, 329, 409, 437, 442, 281, 503, 414, 474, 372, 555 484, 493, 378, 434, 433, 325, 494, 459, 499, 492, 556 502, 509, 461, 301, 515, 535, 2164, 536, 520, 538, 557 544, 541, 545, 567, 539, 421, 554, 563, 597, 570, 558 571, 548, 2762, 2762, 652, 662, 2212, 668, 2762, 674, 559 560 2762, 2159, 567, 2153, 2152, 0, 645, 2762, 2762, 680, 561 2151, 2149, 2146, 0, 2167, 466, 640, 646, 689, 688, 562 650, 678, 679, 682, 2164, 685, 692, 2141, 2139, 2762, 563 714, 707, 2762, 2136, 2186, 2762, 703, 0, 697, 760, 564 766, 779, 801, 696, 2762, 2144, 2119, 0, 787, 2164, 565 825, 698, 2762, 2138, 2111, 841, 2762, 2762, 2144, 2762, 566 2762, 717, 718, 2123, 2122, 719, 2099, 2097, 2096, 0, 567 2093, 0, 2062, 585, 589, 704, 610, 675, 703, 540, 568 706, 707, 743, 726, 720, 745, 787, 709, 748, 715, 569 756, 759, 2092, 761, 781, 792, 817, 785, 791, 808, 570 571 788, 818, 819, 807, 822, 821, 820, 832, 833, 834, 572 835, 837, 838, 843, 845, 2091, 276, 847, 850, 846, 573 849, 851, 852, 855, 853, 854, 856, 865, 2089, 867, 574 904, 866, 873, 197, 874, 870, 938, 939, 2083, 2080, 575 2079, 0, 2078, 0, 926, 930, 2076, 0, 2073, 0, 576 2070, 0, 2091, 2762, 901, 912, 2070, 2066, 0, 2063, 577 0, 935, 942, 953, 964, 976, 989, 998, 2762, 2762, 578 939, 962, 1014, 987, 1023, 928, 1041, 1005, 2762, 2762, 579 2060, 2059, 2058, 0, 2056, 0, 2053, 0, 2052, 0, 580 2762, 911, 940, 976, 966, 881, 1003, 944, 1000, 974, 581 582 941, 1015, 1018, 1019, 1021, 1006, 1025, 1027, 1039, 1041, 583 1012, 1046, 1048, 2054, 1047, 2052, 975, 2049, 1050, 1051, 584 1057, 1052, 1053, 1054, 1058, 2048, 1068, 2047, 1072, 1055, 585 1074, 1076, 1078, 1079, 1081, 2045, 1080, 2042, 1082, 1085, 586 1084, 1087, 1086, 1091, 1094, 1088, 1095, 1096, 588, 1109, 587 1111, 1110, 2038, 1113, 1114, 1166, 2031, 0, 2029, 0, 588 2027, 0, 2024, 0, 1159, 2022, 0, 2020, 0, 2017, 589 2014, 2013, 0, 2012, 0, 1166, 1172, 1218, 1131, 1229, 590 1155, 1132, 1129, 2762, 1235, 1242, 1253, 2022, 1995, 2004, 591 2003, 0, 2002, 0, 2000, 0, 1997, 0, 1994, 0, 592 593 1993, 0, 1149, 1120, 1995, 1153, 1159, 1164, 1156, 1167, 594 1165, 1161, 233, 1211, 1219, 1162, 1186, 1229, 1173, 1185, 595 166, 1235, 1236, 1222, 1237, 1242, 1993, 1249, 1241, 1990, 596 1171, 1248, 1240, 1251, 1253, 1987, 1254, 1256, 1259, 1260, 597 1986, 1261, 1264, 1985, 1268, 1270, 1267, 1272, 1274, 1983, 598 1278, 921, 1280, 1281, 1282, 1290, 1283, 1288, 1980, 1293, 599 1295, 1977, 2026, 1972, 0, 1970, 0, 1967, 0, 1964, 600 0, 1963, 0, 1962, 0, 1960, 0, 1957, 0, 1341, 601 1347, 1354, 1365, 1954, 2762, 1377, 2762, 1388, 2762, 1953, 602 0, 1952, 0, 1950, 0, 1947, 0, 0, 0, 1949, 603 604 0, 1366, 1297, 1296, 1333, 1306, 1331, 1300, 1301, 1353, 605 1115, 1343, 1367, 1355, 1372, 1373, 1299, 1383, 1402, 1375, 606 1381, 1385, 1378, 1386, 1388, 1948, 1393, 1399, 1404, 1405, 607 1946, 1943, 1942, 1407, 1406, 1941, 1411, 1939, 1906, 1409, 608 1334, 1904, 1903, 1900, 1897, 1896, 1895, 1410, 1413, 1893, 609 1412, 1416, 1940, 2762, 1884, 0, 1883, 0, 0, 0, 610 1885, 0, 0, 0, 2762, 0, 0, 0, 0, 1464, 611 1470, 1516, 1880, 0, 1877, 0, 0, 0, 0, 1876, 612 1425, 1420, 1878, 1424, 1447, 1448, 1429, 1456, 1457, 1451, 613 1876, 1462, 1463, 1475, 1471, 1493, 1481, 1494, 1496, 1495, 614 615 1497, 1499, 1466, 1500, 1483, 1873, 1502, 1872, 1871, 1482, 616 1869, 1866, 1501, 1506, 1508, 1862, 1509, 1514, 0, 0, 617 1855, 1851, 1835, 1834, 1560, 0, 1833, 1831, 1828, 1827, 618 1826, 1827, 1824, 1823, 1822, 1516, 1520, 1522, 1417, 1515, 619 1518, 1512, 1539, 1540, 1552, 1820, 1543, 1817, 1544, 1548, 620 1551, 1556, 1545, 1526, 1816, 1815, 1813, 1810, 1550, 1809, 621 1808, 1803, 1800, 1799, 1798, 1796, 1793, 1792, 1791, 1789, 622 1786, 1785, 1784, 1557, 1785, 1558, 1562, 1561, 1565, 1566, 623 1782, 1567, 1594, 1571, 1781, 1570, 1572, 1578, 1577, 1582, 624 1583, 1777, 1775, 1768, 1766, 1765, 1762, 1761, 1760, 1758, 625 626 1741, 1732, 1731, 1728, 1724, 1576, 1588, 1590, 1591, 1601, 627 1589, 1721, 1714, 1602, 1712, 1711, 1607, 1603, 1608, 1687, 628 1686, 1685, 1678, 1676, 1675, 1633, 1632, 1609, 1611, 1632, 629 1619, 1626, 1620, 1621, 1625, 1596, 1477, 1462, 1152, 1613, 630 1614, 1627, 1631, 1119, 1016, 1615, 762, 725, 676, 549, 631 2762, 1690, 1703, 1716, 1726, 1736, 1749, 1759, 1772, 1785, 632 1798, 1806, 1816, 1823, 1830, 1837, 1844, 1851, 1858, 1865, 633 1872, 1879, 1892, 1899, 1903, 1911, 1914, 1921, 1928, 1935, 634 1938, 1945, 1951, 1964, 1977, 1984, 1991, 1998, 2005, 2008, 635 2015, 2018, 2025, 2028, 2035, 2038, 2045, 2048, 2055, 2058, 636 637 2065, 2068, 2075, 2083, 2090, 2097, 2104, 2111, 2114, 2121, 638 2124, 2131, 2134, 2141, 2147, 2160, 2167, 2174, 2177, 2184, 639 2187, 2194, 2197, 2204, 2207, 2214, 2217, 2224, 2227, 2234, 640 2241, 2244, 2251, 2254, 2261, 2268, 2275, 2278, 2285, 2288, 641 2295, 2298, 2305, 2308, 2315, 2318, 2325, 2331, 2344, 2351, 642 2358, 2361, 2368, 2371, 2378, 2381, 2388, 2391, 2398, 2401, 643 2408, 2411, 2418, 2421, 2428, 2431, 2438, 2445, 2448, 2455, 644 2458, 2465, 2468, 2475, 2478, 2481, 2487, 2494, 2503, 2510, 645 2517, 2520, 2527, 2530, 2533, 2539, 2546, 2549, 2552, 2555, 646 2558, 2561, 2564, 2567, 2574, 2577, 2584, 2587, 2590, 2593, 647 648 2596, 2606, 2613, 2616, 2619, 2626, 2633, 2640, 2643, 2650, 649 2657, 2664, 2671, 2678, 2685, 2692, 2699, 2706, 2713, 2720, 650 2727, 2734, 2741, 2748 645 651 } ; 646 652 647 static yyconst flex_int16_t yy_def[ 999] =653 static yyconst flex_int16_t yy_def[1025] = 648 654 { 0, 649 825, 1, 826, 826, 825, 5, 827, 827, 828, 828, 650 825, 825, 825, 825, 825, 825, 825, 829, 825, 825, 651 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 652 825, 31, 825, 825, 825, 825, 825, 825, 830, 829, 653 825, 825, 825, 825, 829, 825, 829, 829, 829, 829, 654 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 655 829, 825, 825, 825, 825, 825, 831, 825, 825, 825, 656 832, 825, 825, 833, 825, 825, 834, 825, 825, 825, 657 825, 825, 825, 825, 829, 825, 825, 825, 825, 825, 658 825, 825, 825, 825, 825, 825, 825, 825, 825, 835, 659 660 825, 825, 30, 825, 825, 825, 825, 836, 30, 825, 661 31, 825, 825, 31, 825, 825, 825, 825, 825, 825, 662 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 663 825, 825, 825, 825, 825, 825, 825, 825, 837, 825, 664 825, 825, 829, 838, 839, 825, 829, 829, 829, 829, 665 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 666 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 667 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 668 829, 829, 829, 829, 829, 829, 829, 829, 829, 825, 669 825, 825, 831, 831, 831, 825, 831, 825, 832, 825, 670 671 840, 841, 833, 825, 825, 825, 825, 842, 843, 844, 672 834, 825, 825, 825, 825, 825, 825, 825, 825, 825, 673 825, 825, 825, 825, 845, 846, 825, 825, 825, 825, 674 228, 847, 825, 825, 103, 103, 825, 825, 825, 825, 675 825, 825, 825, 825, 848, 849, 850, 825, 825, 825, 676 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 677 825, 837, 825, 851, 852, 853, 854, 855, 856, 857, 678 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 679 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 680 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 681 682 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 683 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 684 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 685 858, 859, 860, 861, 862, 863, 864, 865, 825, 825, 686 866, 867, 868, 869, 870, 871, 825, 825, 825, 825, 687 825, 872, 873, 874, 875, 825, 825, 825, 825, 825, 688 825, 825, 825, 825, 876, 877, 878, 825, 825, 825, 689 878, 825, 825, 825, 879, 880, 881, 882, 883, 884, 690 885, 886, 887, 888, 889, 889, 889, 889, 889, 889, 691 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 692 693 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 694 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 695 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 696 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 697 889, 889, 889, 889, 889, 889, 890, 891, 892, 893, 698 894, 895, 896, 897, 898, 825, 899, 900, 901, 902, 699 903, 903, 904, 905, 906, 907, 825, 825, 825, 908, 700 825, 908, 825, 825, 825, 825, 825, 825, 825, 825, 701 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 702 919, 920, 921, 922, 922, 922, 922, 922, 922, 922, 703 704 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 705 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 706 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 707 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 708 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 709 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 710 932, 933, 934, 935, 936, 937, 938, 939, 825, 825, 711 825, 825, 940, 825, 825, 825, 825, 825, 941, 942, 712 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 713 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 714 715 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 716 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 717 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 718 951, 951, 951, 951, 951, 951, 951, 953, 825, 954, 719 955, 956, 957, 958, 959, 960, 961, 962, 963, 825, 720 964, 965, 966, 967, 825, 825, 825, 968, 969, 970, 721 971, 972, 973, 974, 975, 976, 976, 976, 976, 976, 722 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 723 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 724 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 725 726 977, 978, 956, 979, 980, 981, 825, 982, 968, 970, 727 983, 984, 975, 976, 976, 976, 976, 976, 976, 976, 728 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 729 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 730 976, 985, 986, 979, 987, 980, 988, 981, 989, 990, 731 983, 991, 984, 976, 976, 976, 976, 976, 976, 976, 732 976, 976, 976, 976, 976, 976, 976, 976, 976, 992, 733 985, 993, 986, 994, 987, 995, 988, 996, 989, 997, 734 990, 991, 976, 976, 976, 976, 976, 976, 976, 976, 735 976, 976, 976, 976, 976, 998, 992, 993, 994, 995, 736 737 970, 996, 997, 976, 976, 976, 976, 976, 976, 976, 738 976, 998, 970, 976, 976, 976, 976, 976, 976, 976, 739 976, 976, 976, 976, 0, 825, 825, 825, 825, 825, 740 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 741 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 742 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 743 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 744 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 745 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 746 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 747 748 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 749 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 750 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 751 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 752 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 753 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 754 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 755 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 756 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 757 825, 825, 825, 825, 825, 825, 825, 825 758 655 851, 1, 852, 852, 851, 5, 853, 853, 854, 854, 656 851, 851, 851, 851, 851, 851, 851, 855, 851, 851, 657 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 658 851, 31, 851, 851, 851, 851, 851, 851, 856, 855, 659 851, 851, 851, 851, 855, 851, 855, 855, 855, 855, 660 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 661 855, 851, 851, 851, 851, 851, 857, 851, 851, 851, 662 858, 851, 851, 859, 851, 851, 860, 851, 851, 851, 663 851, 851, 851, 851, 855, 851, 851, 851, 851, 851, 664 851, 851, 851, 851, 851, 851, 851, 851, 851, 861, 665 666 851, 851, 30, 851, 851, 851, 851, 862, 30, 851, 667 31, 851, 851, 31, 851, 851, 851, 851, 851, 851, 668 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 669 851, 851, 851, 851, 851, 851, 851, 851, 863, 851, 670 851, 851, 851, 855, 864, 865, 851, 851, 855, 855, 671 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 672 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 673 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 674 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 675 855, 855, 851, 851, 851, 857, 857, 857, 851, 857, 676 677 851, 858, 851, 866, 867, 859, 851, 851, 851, 851, 678 868, 869, 870, 860, 851, 851, 851, 851, 851, 851, 679 851, 851, 851, 851, 851, 851, 851, 871, 872, 851, 680 851, 851, 851, 231, 873, 851, 851, 103, 103, 851, 681 851, 851, 851, 851, 851, 851, 851, 874, 875, 876, 682 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 683 851, 851, 851, 851, 863, 851, 877, 878, 879, 880, 684 881, 882, 851, 883, 883, 883, 883, 883, 883, 883, 685 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 686 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 687 688 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 689 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 690 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 691 883, 883, 883, 883, 883, 883, 884, 885, 886, 887, 692 888, 889, 890, 891, 851, 851, 892, 893, 894, 895, 693 896, 897, 851, 851, 851, 851, 851, 898, 899, 900, 694 901, 851, 851, 851, 851, 851, 851, 851, 851, 851, 695 902, 903, 904, 851, 851, 851, 904, 851, 851, 851, 696 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 697 851, 915, 915, 915, 915, 915, 915, 915, 915, 915, 698 699 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 700 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 701 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 702 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 703 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 704 915, 915, 915, 915, 915, 916, 917, 918, 919, 920, 705 921, 922, 923, 924, 851, 925, 926, 927, 928, 929, 706 929, 930, 931, 932, 933, 851, 851, 851, 934, 851, 707 934, 851, 851, 851, 851, 851, 851, 851, 851, 935, 708 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 709 710 946, 947, 948, 948, 948, 948, 948, 948, 948, 948, 711 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 712 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 713 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 714 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 715 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 716 948, 948, 949, 950, 951, 952, 953, 954, 955, 956, 717 957, 958, 959, 960, 961, 962, 963, 964, 965, 851, 718 851, 851, 851, 966, 851, 851, 851, 851, 851, 967, 719 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 720 721 978, 977, 977, 977, 977, 977, 977, 977, 977, 977, 722 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 723 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 724 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 725 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 726 977, 977, 979, 851, 980, 981, 982, 983, 984, 985, 727 986, 987, 988, 989, 851, 990, 991, 992, 993, 851, 728 851, 851, 994, 995, 996, 997, 998, 999, 1000, 1001, 729 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 730 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 731 732 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 733 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 1004, 734 982, 1005, 1006, 1007, 851, 1008, 994, 996, 1009, 1010, 735 1001, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 736 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 737 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 738 1002, 1011, 1012, 1005, 1013, 1006, 1014, 1007, 1015, 1016, 739 1009, 1017, 1010, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 740 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 741 1002, 1018, 1011, 1019, 1012, 1020, 1013, 1021, 1014, 1022, 742 743 1015, 1023, 1016, 1017, 1002, 1002, 1002, 1002, 1002, 1002, 744 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1024, 745 1018, 1019, 1020, 1021, 996, 1022, 1023, 1002, 1002, 1002, 746 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1024, 996, 1002, 747 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 748 0, 851, 851, 851, 851, 851, 851, 851, 851, 851, 749 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 750 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 751 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 752 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 753 754 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 755 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 756 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 757 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 758 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 759 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 760 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 761 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 762 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 763 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 764 765 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 766 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 767 851, 851, 851, 851 759 768 } ; 760 769 761 static yyconst flex_int16_t yy_nxt[2 653] =770 static yyconst flex_int16_t yy_nxt[2848] = 762 771 { 0, 763 772 12, 13, 14, 15, 15, 15, 13, 16, 17, 12, … … 765 774 28, 29, 30, 31, 32, 32, 32, 32, 33, 34, 766 775 35, 36, 37, 38, 39, 18, 18, 18, 18, 18, 767 18, 18, 18, 40, 18, 18, 18, 18, 40, 18,768 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,769 5 1, 52, 53, 18, 54, 18, 55, 18, 18, 18,770 18, 56, 57, 58, 59, 60, 61, 18, 18, 18,771 62, 63, 64, 65, 66, 83, 91, 84, 84, 66,772 87, 88, 67, 70, 70, 70, 70, 70, 70, 70,773 774 70, 70, 70, 7 1, 70, 70, 70, 70, 70, 70,776 18, 18, 18, 40, 18, 18, 18, 18, 18, 40, 777 18, 41, 42, 43, 44, 45, 46, 47, 48, 49, 778 50, 51, 52, 53, 18, 54, 18, 55, 18, 18, 779 18, 18, 56, 57, 58, 59, 60, 61, 18, 18, 780 18, 62, 63, 64, 65, 66, 83, 91, 84, 84, 781 66, 87, 88, 67, 70, 70, 70, 70, 70, 70, 782 783 70, 70, 70, 70, 71, 70, 70, 70, 70, 70, 775 784 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 776 70, 70, 70, 70, 70, 70, 70, 70, 7 1, 71,785 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 777 786 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 778 71, 71, 71, 70, 72, 70, 70, 71, 73, 71, 787 71, 71, 71, 71, 71, 70, 72, 70, 70, 71, 788 73, 71, 71, 71, 71, 71, 71, 71, 71, 71, 779 789 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 780 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 781 71, 71, 71, 70, 70, 70, 70, 75, 75, 78, 782 78, 122, 123, 89, 86, 78, 78, 608, 75, 75, 783 79, 80, 81, 81, 81, 79, 81, 80, 82, 82, 784 785 82, 81, 90, 92, 158, 144, 86, 97, 94, 98, 786 98, 98, 98, 98, 98, 86, 86, 93, 99, 84, 787 95, 96, 84, 100, 173, 117, 76, 76, 76, 76, 788 141, 145, 86, 101, 102, 142, 103, 103, 103, 103, 789 104, 104, 118, 86, 119, 120, 256, 86, 257, 86, 790 176, 86, 159, 105, 190, 86, 177, 106, 162, 160, 791 178, 201, 107, 108, 156, 161, 157, 163, 109, 86, 792 165, 164, 166, 86, 105, 86, 143, 225, 86, 174, 793 110, 167, 243, 251, 86, 86, 175, 202, 107, 86, 794 189, 108, 102, 188, 111, 111, 111, 111, 111, 111, 795 796 245, 183, 241, 226, 191, 244, 252, 242, 256, 184, 797 257, 105, 147, 148, 149, 112, 185, 86, 150, 151, 798 113, 152, 86, 153, 154, 86, 114, 168, 86, 179, 799 180, 155, 105, 242, 247, 169, 264, 170, 115, 181, 800 171, 256, 182, 257, 172, 141, 113, 124, 249, 86, 801 142, 125, 126, 250, 127, 825, 128, 129, 256, 130, 802 257, 131, 265, 186, 79, 80, 81, 81, 81, 79, 803 132, 133, 134, 192, 80, 81, 81, 81, 192, 250, 804 86, 193, 81, 80, 81, 81, 81, 81, 86, 253, 805 135, 143, 278, 136, 81, 80, 82, 82, 82, 81, 806 807 258, 195, 196, 258, 86, 187, 195, 235, 235, 235, 808 235, 256, 86, 257, 256, 256, 257, 257, 416, 825, 809 137, 138, 197, 197, 197, 197, 197, 197, 204, 205, 810 256, 260, 257, 204, 825, 206, 238, 86, 238, 236, 811 206, 239, 239, 239, 239, 239, 239, 86, 825, 207, 812 207, 207, 207, 248, 242, 259, 256, 306, 257, 250, 813 206, 825, 825, 102, 296, 104, 104, 104, 104, 104, 814 104, 86, 241, 240, 86, 208, 825, 249, 206, 256, 815 242, 257, 105, 206, 206, 250, 270, 206, 206, 256, 816 86, 257, 272, 271, 141, 206, 86, 237, 206, 142, 817 818 206, 209, 206, 105, 210, 212, 86, 86, 273, 213, 819 214, 86, 275, 86, 215, 216, 274, 217, 86, 218, 820 86, 86, 86, 86, 276, 825, 86, 291, 219, 220, 821 221, 86, 297, 277, 86, 290, 289, 86, 86, 279, 822 86, 280, 300, 281, 282, 86, 298, 283, 222, 284, 823 294, 223, 292, 293, 285, 286, 287, 86, 288, 86, 824 86, 86, 302, 295, 86, 299, 347, 86, 348, 86, 825 86, 86, 303, 86, 312, 825, 304, 86, 305, 224, 826 228, 228, 228, 228, 228, 228, 309, 301, 307, 308, 827 311, 86, 86, 310, 86, 316, 319, 229, 230, 86, 828 829 86, 230, 86, 313, 86, 317, 141, 333, 86, 360, 830 825, 320, 231, 314, 315, 321, 86, 386, 229, 230, 831 322, 330, 318, 86, 230, 98, 98, 98, 98, 98, 832 98, 323, 86, 334, 86, 324, 326, 347, 347, 348, 833 348, 363, 229, 230, 327, 328, 230, 329, 86, 86, 834 204, 205, 325, 390, 348, 204, 347, 234, 348, 545, 835 195, 196, 86, 229, 230, 195, 347, 363, 348, 230, 836 192, 80, 81, 81, 81, 192, 349, 347, 193, 348, 837 373, 197, 197, 197, 197, 197, 197, 195, 196, 405, 838 86, 348, 195, 331, 196, 347, 825, 348, 331, 403, 839 840 332, 339, 339, 339, 339, 347, 373, 348, 197, 197, 790 71, 71, 71, 71, 71, 70, 70, 70, 70, 75, 791 75, 78, 78, 122, 123, 89, 140, 78, 78, 619, 792 75, 75, 79, 80, 81, 81, 81, 79, 81, 80, 793 794 82, 82, 82, 81, 90, 92, 86, 141, 145, 97, 795 94, 98, 98, 98, 98, 98, 98, 248, 86, 93, 796 99, 84, 95, 96, 84, 100, 160, 117, 142, 76, 797 76, 76, 76, 143, 146, 101, 102, 86, 103, 103, 798 103, 103, 104, 104, 118, 86, 119, 120, 147, 86, 799 148, 851, 250, 204, 181, 105, 193, 453, 158, 106, 800 159, 149, 150, 151, 86, 107, 108, 152, 153, 161, 801 154, 109, 86, 155, 156, 144, 162, 105, 86, 205, 802 86, 157, 163, 110, 228, 86, 256, 86, 611, 86, 803 86, 107, 192, 86, 108, 102, 246, 111, 111, 111, 804 805 111, 111, 111, 86, 168, 176, 169, 194, 191, 86, 806 229, 179, 164, 851, 105, 170, 165, 180, 112, 177, 807 247, 166, 86, 254, 113, 167, 178, 171, 86, 259, 808 114, 260, 244, 86, 86, 172, 105, 173, 245, 438, 809 174, 142, 115, 851, 175, 282, 143, 255, 251, 86, 810 113, 124, 276, 86, 245, 125, 126, 86, 127, 189, 811 128, 129, 252, 130, 245, 131, 86, 277, 253, 182, 812 183, 851, 244, 312, 132, 133, 134, 86, 186, 184, 813 245, 86, 185, 253, 267, 86, 187, 259, 144, 260, 814 278, 198, 199, 188, 253, 135, 198, 259, 136, 260, 815 816 303, 252, 190, 195, 80, 81, 81, 81, 195, 253, 817 268, 196, 200, 200, 200, 200, 200, 200, 79, 80, 818 81, 81, 81, 79, 86, 137, 138, 207, 208, 259, 819 86, 260, 207, 295, 209, 238, 238, 238, 238, 209, 820 81, 80, 81, 81, 81, 81, 261, 300, 210, 210, 821 210, 210, 81, 80, 82, 82, 82, 81, 261, 209, 822 259, 86, 260, 851, 262, 259, 86, 260, 239, 259, 823 259, 260, 260, 86, 259, 211, 260, 279, 209, 259, 824 263, 260, 293, 209, 209, 86, 86, 209, 209, 86, 825 259, 851, 260, 328, 86, 209, 301, 353, 209, 354, 826 827 209, 212, 209, 142, 213, 215, 302, 280, 143, 216, 828 217, 86, 86, 86, 218, 219, 281, 220, 102, 221, 829 104, 104, 104, 104, 104, 104, 86, 274, 222, 223, 830 224, 311, 305, 241, 275, 241, 86, 105, 242, 242, 831 242, 242, 242, 242, 86, 86, 86, 86, 294, 225, 832 298, 86, 226, 240, 86, 86, 306, 296, 297, 105, 833 283, 86, 284, 299, 285, 286, 308, 86, 287, 309, 834 288, 243, 86, 304, 307, 289, 290, 291, 310, 292, 835 227, 231, 231, 231, 231, 231, 231, 86, 86, 317, 836 86, 86, 86, 86, 313, 318, 86, 86, 232, 233, 837 838 86, 86, 233, 315, 327, 142, 86, 319, 323, 314, 839 316, 322, 398, 336, 234, 86, 339, 320, 321, 86, 840 232, 233, 86, 86, 325, 324, 233, 98, 98, 98, 841 98, 98, 98, 329, 330, 332, 334, 86, 335, 326, 842 86, 86, 340, 333, 232, 233, 207, 208, 233, 86, 843 392, 207, 331, 195, 80, 81, 81, 81, 195, 393, 844 237, 196, 86, 198, 199, 556, 232, 233, 198, 198, 845 199, 353, 233, 354, 198, 337, 199, 353, 395, 354, 846 337, 353, 338, 354, 200, 200, 200, 200, 200, 200, 847 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 848 849 200, 200, 345, 345, 345, 345, 354, 354, 355, 353, 850 353, 354, 354, 353, 356, 354, 353, 851, 354, 353, 851 353, 354, 354, 353, 362, 354, 362, 86, 86, 363, 852 363, 363, 363, 363, 363, 346, 231, 231, 231, 231, 853 231, 231, 232, 233, 396, 369, 233, 379, 259, 259, 854 260, 260, 366, 232, 233, 86, 86, 233, 86, 86, 855 397, 86, 364, 399, 232, 233, 409, 86, 381, 234, 856 233, 369, 86, 379, 394, 232, 233, 86, 86, 400, 857 411, 233, 104, 104, 104, 104, 104, 104, 242, 242, 858 242, 242, 242, 242, 382, 86, 404, 86, 405, 105, 859 860 86, 367, 367, 367, 367, 367, 367, 372, 86, 410, 861 401, 86, 406, 86, 86, 251, 402, 403, 241, 233, 862 241, 105, 233, 242, 242, 242, 242, 242, 242, 413, 863 374, 414, 375, 86, 368, 412, 376, 86, 415, 86, 864 86, 233, 377, 86, 86, 422, 233, 104, 104, 104, 865 104, 104, 104, 416, 378, 407, 408, 418, 375, 86, 866 86, 419, 376, 111, 111, 111, 111, 111, 111, 86, 867 86, 86, 86, 86, 86, 423, 417, 424, 425, 427, 868 251, 420, 421, 426, 86, 86, 86, 86, 428, 86, 869 86, 431, 432, 429, 433, 86, 256, 86, 86, 86, 870 871 430, 86, 86, 86, 86, 86, 86, 86, 86, 435, 872 437, 434, 142, 436, 439, 440, 445, 86, 86, 86, 873 441, 444, 86, 443, 442, 86, 86, 446, 450, 447, 874 448, 454, 353, 86, 354, 449, 451, 455, 452, 337, 875 199, 199, 507, 353, 337, 354, 338, 197, 209, 209, 876 209, 209, 345, 345, 345, 345, 86, 363, 363, 363, 877 363, 363, 363, 86, 476, 476, 476, 476, 476, 476, 878 362, 488, 362, 86, 503, 363, 363, 363, 363, 363, 879 363, 465, 233, 644, 480, 233, 231, 231, 231, 231, 880 231, 231, 86, 86, 481, 489, 86, 477, 238, 238, 881 882 238, 238, 104, 104, 233, 509, 512, 480, 504, 233, 883 480, 367, 367, 367, 367, 367, 367, 482, 86, 365, 884 367, 367, 367, 367, 367, 367, 86, 86, 86, 233, 885 483, 366, 233, 480, 372, 511, 484, 506, 233, 528, 886 485, 233, 485, 505, 368, 486, 486, 486, 486, 486, 887 486, 233, 86, 478, 484, 86, 233, 374, 86, 375, 888 233, 851, 484, 376, 86, 233, 508, 86, 86, 377, 889 86, 86, 483, 86, 510, 524, 518, 86, 487, 86, 890 484, 378, 519, 513, 374, 375, 375, 515, 516, 376, 891 376, 86, 514, 86, 520, 517, 490, 522, 86, 86, 892 893 86, 521, 86, 86, 86, 86, 86, 86, 378, 86, 894 86, 534, 375, 527, 523, 526, 376, 525, 531, 536, 895 86, 535, 532, 529, 86, 530, 86, 533, 86, 539, 896 86, 86, 86, 86, 86, 537, 86, 86, 86, 86, 897 86, 540, 544, 86, 538, 542, 86, 86, 86, 545, 898 541, 543, 551, 553, 554, 555, 548, 546, 547, 549, 899 550, 86, 86, 86, 552, 86, 86, 86, 199, 557, 900 691, 86, 86, 560, 563, 562, 480, 480, 585, 558, 901 559, 209, 209, 209, 209, 603, 481, 561, 476, 476, 902 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 903 904 480, 86, 480, 480, 585, 86, 233, 851, 86, 233, 905 584, 86, 233, 86, 86, 233, 86, 86, 602, 86, 906 604, 477, 609, 86, 610, 86, 480, 580, 233, 606, 907 607, 605, 608, 233, 233, 614, 617, 86, 86, 233, 908 367, 367, 367, 367, 367, 367, 581, 615, 581, 627, 909 618, 582, 582, 582, 582, 582, 582, 486, 486, 486, 910 486, 486, 486, 86, 586, 586, 586, 586, 586, 586, 911 485, 86, 485, 478, 86, 486, 486, 486, 486, 486, 912 486, 86, 587, 612, 583, 587, 616, 86, 86, 86, 913 613, 622, 86, 86, 86, 625, 620, 588, 623, 624, 914 915 86, 86, 626, 86, 587, 86, 86, 629, 86, 587, 916 621, 86, 86, 86, 631, 632, 86, 628, 630, 86, 917 86, 637, 86, 634, 86, 633, 86, 635, 636, 638, 918 86, 639, 86, 86, 86, 86, 648, 641, 643, 645, 919 86, 640, 86, 642, 649, 86, 647, 86, 86, 86, 920 650, 86, 86, 86, 697, 646, 683, 684, 86, 688, 921 652, 689, 651, 476, 476, 476, 476, 476, 476, 582, 922 582, 582, 582, 582, 582, 686, 670, 670, 670, 670, 923 670, 670, 581, 86, 581, 86, 86, 582, 582, 582, 924 582, 582, 582, 714, 587, 86, 580, 587, 685, 586, 925 926 586, 586, 586, 586, 586, 86, 687, 86, 692, 671, 927 586, 586, 586, 586, 586, 586, 587, 587, 86, 86, 928 587, 587, 690, 681, 86, 86, 699, 86, 587, 694, 929 86, 587, 588, 86, 693, 86, 682, 86, 86, 587, 930 86, 695, 700, 672, 587, 86, 702, 696, 703, 705, 931 587, 86, 698, 701, 86, 587, 86, 86, 86, 86, 932 704, 86, 86, 86, 86, 86, 709, 706, 86, 86, 933 713, 715, 86, 717, 707, 716, 86, 86, 708, 710, 934 712, 86, 733, 718, 777, 711, 670, 670, 670, 670, 935 670, 670, 670, 670, 670, 670, 670, 670, 732, 86, 936 937 86, 737, 734, 86, 587, 736, 735, 587, 86, 86, 938 587, 738, 739, 587, 86, 86, 745, 851, 86, 671, 939 741, 740, 748, 86, 742, 725, 587, 86, 752, 86, 940 743, 587, 587, 86, 86, 86, 746, 587, 586, 586, 941 586, 586, 586, 586, 744, 86, 86, 86, 86, 86, 942 749, 86, 86, 86, 86, 747, 754, 756, 86, 751, 943 86, 86, 750, 755, 86, 753, 86, 86, 86, 760, 944 86, 672, 86, 757, 86, 761, 783, 778, 86, 776, 945 758, 759, 670, 670, 670, 670, 670, 670, 774, 775, 946 780, 86, 86, 779, 781, 86, 86, 86, 784, 785, 947 948 86, 790, 86, 86, 86, 782, 787, 786, 86, 86, 949 86, 788, 789, 86, 86, 725, 808, 86, 86, 86, 950 812, 810, 86, 86, 86, 791, 813, 815, 86, 86, 951 86, 806, 807, 816, 86, 86, 805, 811, 817, 809, 952 86, 86, 86, 86, 814, 830, 86, 829, 86, 828, 953 818, 819, 831, 86, 86, 86, 832, 834, 833, 86, 954 86, 86, 835, 86, 836, 86, 86, 86, 841, 837, 955 840, 86, 86, 86, 842, 843, 844, 86, 86, 86, 956 845, 847, 848, 86, 86, 846, 849, 851, 851, 850, 957 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 958 959 68, 68, 68, 74, 74, 74, 74, 74, 74, 74, 960 74, 74, 74, 74, 74, 74, 77, 77, 77, 77, 961 77, 77, 77, 77, 77, 77, 77, 77, 77, 85, 962 839, 851, 85, 851, 85, 85, 85, 85, 85, 139, 963 851, 851, 838, 139, 139, 139, 139, 139, 139, 197, 841 964 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 842 347, 350, 348, 347, 347, 348, 348, 104, 104, 104, 843 104, 104, 104, 340, 228, 228, 228, 228, 228, 228, 844 356, 256, 356, 257, 105, 357, 357, 357, 357, 357, 845 357, 229, 230, 229, 230, 230, 256, 230, 257, 248, 846 86, 86, 86, 86, 86, 105, 231, 392, 375, 402, 847 630, 86, 229, 230, 229, 230, 385, 358, 230, 387, 848 230, 239, 239, 239, 239, 239, 239, 361, 361, 361, 849 361, 361, 361, 238, 376, 238, 86, 398, 239, 239, 850 851 239, 239, 239, 239, 366, 230, 813, 825, 230, 104, 852 104, 104, 104, 104, 104, 86, 391, 86, 86, 362, 853 111, 111, 111, 111, 111, 111, 230, 368, 86, 369, 854 394, 230, 370, 388, 86, 389, 395, 396, 371, 86, 855 86, 248, 86, 86, 86, 86, 86, 408, 393, 399, 856 372, 86, 253, 404, 369, 409, 86, 397, 370, 400, 857 401, 86, 406, 407, 86, 86, 86, 86, 410, 86, 858 415, 411, 86, 86, 412, 418, 86, 86, 422, 86, 859 86, 420, 423, 419, 424, 413, 414, 86, 417, 86, 860 86, 421, 86, 86, 86, 86, 86, 86, 86, 426, 861 862 86, 425, 428, 429, 86, 427, 86, 431, 430, 436, 863 86, 86, 432, 141, 435, 86, 434, 86, 433, 441, 864 437, 86, 86, 86, 86, 86, 445, 438, 439, 440, 865 443, 444, 196, 442, 331, 196, 494, 446, 194, 331, 866 495, 332, 206, 206, 206, 206, 339, 339, 339, 339, 867 347, 347, 348, 348, 86, 825, 86, 357, 357, 357, 868 357, 357, 357, 467, 467, 467, 467, 467, 467, 479, 869 356, 86, 356, 497, 456, 357, 357, 357, 357, 357, 870 357, 230, 86, 86, 230, 228, 228, 228, 228, 228, 871 228, 498, 480, 501, 499, 468, 235, 235, 235, 235, 872 873 104, 104, 230, 86, 825, 471, 471, 230, 361, 361, 874 361, 361, 361, 361, 472, 473, 475, 359, 361, 361, 875 361, 361, 361, 361, 514, 86, 230, 86, 360, 230, 876 471, 471, 474, 366, 474, 86, 230, 475, 86, 230, 877 362, 504, 475, 86, 500, 86, 86, 230, 510, 505, 878 469, 825, 230, 496, 502, 812, 368, 230, 369, 503, 879 86, 370, 230, 475, 476, 825, 476, 371, 86, 477, 880 477, 477, 477, 477, 477, 86, 506, 507, 86, 372, 881 86, 86, 86, 369, 513, 86, 509, 370, 368, 86, 882 369, 86, 515, 370, 86, 511, 518, 508, 86, 481, 883 884 86, 478, 512, 86, 516, 86, 517, 86, 86, 86, 885 519, 372, 524, 86, 522, 369, 521, 526, 523, 370, 886 86, 520, 525, 527, 86, 86, 86, 86, 529, 86, 887 86, 528, 86, 86, 86, 533, 86, 86, 86, 531, 888 86, 540, 530, 86, 534, 532, 86, 543, 86, 549, 889 86, 536, 535, 537, 538, 541, 542, 544, 539, 86, 890 86, 86, 196, 548, 600, 471, 471, 546, 552, 551, 891 550, 206, 206, 206, 206, 472, 86, 547, 467, 467, 892 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 893 471, 471, 574, 591, 471, 86, 230, 86, 86, 230, 894 895 86, 86, 230, 573, 86, 230, 86, 86, 592, 86, 896 468, 595, 593, 86, 597, 86, 569, 230, 574, 471, 897 594, 86, 230, 230, 599, 602, 596, 601, 230, 361, 898 361, 361, 361, 361, 361, 570, 603, 570, 611, 86, 899 571, 571, 571, 571, 571, 571, 477, 477, 477, 477, 900 477, 477, 575, 575, 575, 575, 575, 575, 476, 86, 901 476, 469, 86, 477, 477, 477, 477, 477, 477, 86, 902 576, 604, 572, 576, 598, 86, 86, 86, 86, 86, 903 605, 610, 86, 86, 577, 86, 86, 606, 609, 86, 904 607, 576, 612, 86, 613, 614, 576, 86, 86, 616, 905 906 617, 86, 618, 86, 615, 86, 86, 86, 86, 86, 907 620, 623, 86, 86, 619, 86, 621, 624, 622, 86, 908 627, 625, 86, 629, 86, 86, 628, 626, 86, 631, 909 86, 633, 86, 634, 86, 632, 86, 86, 635, 668, 910 86, 673, 636, 637, 467, 467, 467, 467, 467, 467, 911 571, 571, 571, 571, 571, 571, 655, 655, 655, 655, 912 655, 655, 570, 672, 570, 86, 86, 571, 571, 571, 913 571, 571, 571, 86, 576, 669, 569, 576, 575, 575, 914 575, 575, 575, 575, 86, 686, 670, 86, 656, 86, 915 676, 86, 86, 86, 86, 576, 576, 674, 666, 576, 916 917 576, 671, 575, 575, 575, 575, 575, 575, 675, 678, 918 577, 667, 86, 86, 679, 86, 86, 576, 86, 682, 919 576, 684, 576, 576, 86, 677, 86, 86, 86, 86, 920 680, 86, 86, 86, 657, 683, 687, 681, 86, 685, 921 86, 576, 86, 86, 688, 86, 576, 86, 86, 697, 922 689, 690, 693, 698, 691, 692, 696, 695, 86, 86, 923 700, 86, 86, 86, 86, 694, 720, 699, 655, 655, 924 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 925 714, 86, 719, 86, 86, 726, 576, 716, 86, 576, 926 717, 715, 576, 718, 86, 576, 86, 721, 86, 727, 927 928 656, 86, 722, 730, 723, 724, 707, 576, 86, 86, 929 729, 725, 576, 576, 86, 86, 766, 728, 576, 575, 930 575, 575, 575, 575, 575, 86, 86, 86, 86, 731, 931 86, 86, 86, 86, 86, 738, 86, 86, 732, 733, 932 734, 86, 736, 86, 86, 735, 741, 86, 86, 740, 933 86, 657, 86, 86, 758, 756, 86, 737, 739, 655, 934 655, 655, 655, 655, 655, 755, 759, 754, 757, 86, 935 86, 763, 761, 86, 86, 86, 764, 765, 760, 86, 936 86, 86, 767, 762, 768, 86, 86, 86, 790, 86, 937 769, 707, 786, 86, 86, 86, 788, 86, 86, 86, 938 939 791, 86, 793, 86, 785, 86, 784, 783, 794, 787, 940 795, 86, 789, 86, 86, 86, 86, 792, 805, 806, 941 825, 825, 86, 807, 804, 808, 86, 86, 86, 810, 942 811, 86, 809, 86, 86, 86, 815, 814, 816, 86, 943 86, 86, 817, 818, 819, 86, 86, 86, 822, 821, 944 823, 803, 825, 820, 802, 825, 800, 825, 799, 825, 945 798, 825, 797, 86, 86, 86, 825, 782, 824, 68, 946 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 947 68, 74, 74, 74, 74, 74, 74, 74, 74, 74, 948 74, 74, 74, 77, 77, 77, 77, 77, 77, 77, 949 950 77, 77, 77, 77, 77, 85, 825, 781, 85, 85, 951 85, 85, 85, 85, 139, 779, 825, 777, 139, 139, 952 139, 139, 139, 194, 194, 194, 194, 194, 194, 194, 953 194, 194, 194, 194, 194, 199, 825, 775, 199, 199, 954 199, 199, 199, 199, 203, 825, 203, 203, 773, 203, 955 203, 203, 203, 203, 771, 203, 211, 86, 86, 211, 956 211, 211, 211, 211, 211, 211, 86, 211, 232, 232, 957 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 958 246, 246, 246, 86, 86, 86, 246, 262, 86, 86, 959 262, 262, 262, 262, 262, 262, 266, 266, 86, 86, 960 961 86, 266, 268, 268, 86, 825, 753, 268, 335, 335, 962 751, 825, 825, 335, 337, 337, 748, 746, 744, 337, 963 341, 341, 825, 86, 86, 341, 343, 343, 86, 86, 964 86, 343, 345, 345, 86, 86, 713, 345, 352, 352, 965 710, 709, 200, 352, 354, 354, 703, 702, 639, 354, 966 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 967 232, 232, 365, 365, 367, 367, 367, 367, 367, 86, 968 367, 246, 246, 246, 377, 377, 86, 86, 86, 377, 969 379, 379, 86, 86, 86, 379, 381, 381, 86, 86, 970 86, 381, 266, 266, 383, 383, 86, 86, 86, 383, 971 972 268, 268, 85, 86, 664, 85, 85, 85, 85, 85, 973 85, 194, 194, 194, 194, 194, 194, 194, 194, 194, 974 194, 194, 194, 447, 447, 447, 447, 447, 447, 447, 975 447, 447, 447, 447, 447, 448, 448, 663, 661, 659, 976 448, 450, 450, 573, 654, 653, 450, 452, 452, 651, 977 649, 647, 452, 335, 335, 454, 454, 645, 643, 641, 978 454, 337, 337, 457, 457, 639, 86, 86, 457, 341, 979 341, 459, 459, 86, 86, 86, 459, 343, 343, 461, 980 461, 86, 86, 86, 461, 345, 345, 463, 463, 86, 981 86, 86, 463, 352, 352, 465, 465, 590, 588, 586, 982 983 465, 354, 354, 470, 470, 584, 470, 582, 470, 365, 984 365, 580, 365, 481, 365, 367, 367, 367, 367, 367, 985 578, 367, 482, 482, 578, 568, 566, 482, 484, 484, 986 462, 462, 564, 484, 486, 486, 562, 560, 558, 486, 987 377, 377, 488, 488, 556, 554, 86, 488, 379, 379, 988 490, 490, 86, 86, 86, 490, 381, 381, 492, 492, 989 86, 86, 86, 492, 383, 383, 85, 86, 493, 85, 990 85, 85, 85, 85, 85, 447, 447, 447, 447, 447, 991 447, 447, 447, 447, 447, 447, 447, 553, 553, 491, 992 489, 487, 553, 448, 448, 555, 555, 485, 483, 466, 993 994 555, 450, 450, 557, 557, 464, 348, 348, 557, 452, 995 452, 559, 559, 462, 460, 458, 559, 454, 454, 561, 996 561, 455, 453, 451, 561, 457, 457, 563, 563, 449, 997 86, 86, 563, 459, 459, 461, 461, 86, 384, 382, 998 461, 565, 565, 380, 378, 263, 565, 463, 463, 567, 999 567, 258, 257, 374, 567, 465, 465, 470, 470, 374, 1000 470, 245, 470, 367, 367, 364, 364, 233, 367, 579, 1001 579, 359, 355, 353, 579, 482, 482, 581, 581, 351, 1002 347, 346, 581, 484, 484, 583, 583, 344, 342, 338, 1003 583, 486, 486, 585, 585, 336, 200, 196, 585, 488, 1004 1005 488, 587, 587, 86, 269, 267, 587, 490, 490, 589, 1006 589, 263, 258, 261, 589, 492, 492, 85, 258, 256, 1007 85, 85, 85, 85, 85, 85, 638, 638, 638, 638, 1008 638, 638, 638, 638, 638, 638, 638, 638, 640, 640, 1009 255, 254, 233, 640, 553, 553, 642, 642, 227, 84, 1010 84, 642, 555, 555, 644, 644, 86, 200, 198, 644, 1011 557, 557, 646, 646, 84, 146, 140, 646, 559, 559, 1012 648, 648, 121, 116, 86, 648, 561, 561, 650, 650, 1013 825, 69, 69, 650, 563, 563, 652, 652, 825, 825, 1014 825, 652, 565, 565, 85, 85, 825, 825, 825, 85, 1015 1016 567, 567, 470, 470, 825, 825, 825, 470, 658, 658, 1017 825, 825, 825, 658, 579, 579, 660, 660, 825, 825, 1018 825, 660, 581, 581, 662, 662, 825, 825, 825, 662, 1019 583, 583, 139, 139, 825, 825, 825, 139, 585, 585, 1020 665, 665, 587, 587, 85, 825, 825, 85, 85, 85, 1021 85, 85, 85, 589, 589, 638, 638, 638, 638, 638, 1022 638, 638, 638, 638, 638, 638, 638, 701, 701, 825, 1023 825, 825, 701, 640, 640, 199, 199, 825, 825, 825, 1024 199, 642, 642, 704, 704, 644, 644, 199, 825, 825, 1025 199, 199, 199, 199, 199, 199, 646, 646, 705, 705, 1026 1027 648, 648, 650, 650, 706, 706, 652, 652, 85, 85, 1028 708, 708, 825, 825, 825, 708, 658, 658, 262, 262, 1029 825, 825, 825, 262, 660, 660, 711, 711, 662, 662, 1030 139, 139, 712, 712, 825, 825, 825, 712, 85, 825, 1031 825, 85, 85, 85, 85, 85, 85, 742, 742, 701, 1032 701, 743, 743, 825, 825, 825, 743, 745, 745, 825, 1033 825, 825, 745, 747, 747, 825, 825, 825, 747, 749, 1034 749, 750, 750, 825, 825, 825, 750, 752, 752, 825, 1035 825, 825, 752, 770, 770, 825, 825, 825, 770, 772, 1036 772, 825, 825, 825, 772, 774, 774, 825, 825, 825, 1037 1038 774, 776, 776, 825, 825, 825, 776, 778, 778, 825, 1039 825, 825, 778, 780, 780, 825, 825, 825, 780, 589, 1040 589, 825, 825, 825, 589, 796, 796, 825, 825, 825, 1041 796, 646, 646, 825, 825, 825, 646, 650, 650, 825, 1042 825, 825, 650, 85, 85, 825, 825, 825, 85, 801, 1043 801, 825, 825, 825, 801, 139, 139, 825, 825, 825, 1044 139, 199, 199, 825, 825, 825, 199, 11, 825, 825, 1045 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1046 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1047 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1048 1049 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1050 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1051 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1052 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1053 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1054 825, 825 965 197, 197, 202, 86, 86, 202, 86, 202, 202, 202, 966 202, 202, 206, 86, 206, 206, 86, 206, 206, 206, 967 206, 206, 206, 851, 206, 214, 851, 827, 214, 214, 968 214, 214, 214, 214, 214, 214, 851, 214, 235, 235, 969 970 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 971 235, 249, 249, 826, 249, 851, 824, 851, 249, 265, 972 823, 851, 265, 822, 265, 265, 265, 265, 265, 269, 973 851, 269, 821, 86, 86, 269, 271, 86, 271, 851, 974 804, 851, 271, 341, 803, 341, 801, 851, 799, 341, 975 343, 851, 343, 797, 851, 795, 343, 347, 793, 347, 976 86, 86, 86, 347, 349, 86, 349, 86, 86, 86, 977 349, 351, 86, 351, 86, 86, 86, 351, 358, 86, 978 358, 851, 773, 771, 358, 360, 851, 360, 851, 768, 979 766, 360, 235, 235, 235, 235, 235, 235, 235, 235, 980 981 235, 235, 235, 235, 235, 371, 764, 371, 373, 373, 982 851, 373, 373, 373, 86, 373, 249, 249, 86, 249, 983 383, 86, 383, 86, 86, 86, 383, 385, 86, 385, 984 86, 731, 728, 385, 387, 727, 387, 203, 721, 720, 985 387, 269, 654, 269, 389, 86, 389, 86, 86, 86, 986 389, 271, 86, 271, 85, 86, 86, 85, 86, 85, 987 85, 85, 85, 85, 197, 197, 197, 197, 197, 197, 988 197, 197, 197, 197, 197, 197, 197, 456, 456, 456, 989 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 990 457, 86, 457, 86, 86, 86, 457, 459, 86, 459, 991 992 86, 86, 679, 459, 461, 678, 461, 676, 674, 584, 993 461, 341, 669, 341, 463, 668, 463, 666, 664, 662, 994 463, 343, 660, 343, 466, 658, 466, 656, 654, 86, 995 466, 347, 86, 347, 468, 86, 468, 86, 86, 86, 996 468, 349, 86, 349, 470, 86, 470, 86, 601, 599, 997 470, 351, 597, 351, 472, 595, 472, 593, 591, 490, 998 472, 358, 589, 358, 474, 589, 474, 579, 577, 471, 999 474, 360, 471, 360, 479, 575, 479, 573, 479, 571, 1000 479, 371, 569, 371, 567, 371, 565, 371, 373, 373, 1001 86, 373, 373, 373, 86, 373, 491, 86, 491, 86, 1002 1003 86, 86, 491, 493, 86, 493, 86, 502, 500, 493, 1004 495, 498, 495, 496, 494, 492, 495, 383, 475, 383, 1005 497, 473, 497, 354, 354, 471, 497, 385, 469, 385, 1006 499, 467, 499, 464, 462, 460, 499, 387, 458, 387, 1007 501, 86, 501, 86, 86, 391, 501, 389, 390, 389, 1008 85, 388, 386, 85, 384, 85, 85, 85, 85, 85, 1009 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 1010 456, 456, 456, 564, 266, 564, 261, 260, 380, 564, 1011 457, 380, 457, 566, 248, 566, 370, 370, 236, 566, 1012 459, 365, 459, 568, 361, 568, 359, 357, 353, 568, 1013 1014 461, 352, 461, 570, 350, 570, 348, 344, 342, 570, 1015 463, 203, 463, 572, 199, 572, 86, 273, 272, 572, 1016 466, 270, 466, 574, 266, 574, 261, 264, 261, 574, 1017 468, 259, 468, 470, 258, 470, 257, 236, 230, 470, 1018 576, 84, 576, 84, 86, 203, 576, 472, 201, 472, 1019 578, 84, 578, 121, 116, 86, 578, 474, 851, 474, 1020 479, 69, 479, 69, 479, 851, 479, 373, 851, 373, 1021 851, 851, 851, 373, 590, 851, 590, 851, 851, 851, 1022 590, 491, 851, 491, 592, 851, 592, 851, 851, 851, 1023 592, 493, 851, 493, 594, 851, 594, 851, 851, 851, 1024 1025 594, 495, 851, 495, 596, 851, 596, 851, 851, 851, 1026 596, 497, 851, 497, 598, 851, 598, 851, 851, 851, 1027 598, 499, 851, 499, 600, 851, 600, 851, 851, 851, 1028 600, 501, 851, 501, 85, 851, 851, 85, 851, 85, 1029 85, 85, 85, 85, 653, 653, 653, 653, 653, 653, 1030 653, 653, 653, 653, 653, 653, 653, 655, 851, 655, 1031 851, 851, 851, 655, 564, 851, 564, 657, 851, 657, 1032 851, 851, 851, 657, 566, 851, 566, 659, 851, 659, 1033 851, 851, 851, 659, 568, 851, 568, 661, 851, 661, 1034 851, 851, 851, 661, 570, 851, 570, 663, 851, 663, 1035 1036 851, 851, 851, 663, 572, 851, 572, 665, 851, 665, 1037 851, 851, 851, 665, 574, 851, 574, 667, 851, 667, 1038 851, 851, 851, 667, 576, 851, 576, 85, 851, 85, 1039 851, 851, 851, 85, 578, 851, 578, 479, 851, 479, 1040 851, 851, 851, 479, 673, 851, 673, 851, 851, 851, 1041 673, 590, 851, 590, 675, 851, 675, 851, 851, 851, 1042 675, 592, 851, 592, 677, 851, 677, 851, 851, 851, 1043 677, 594, 851, 594, 139, 851, 139, 851, 851, 851, 1044 139, 596, 851, 596, 680, 851, 680, 598, 851, 598, 1045 85, 851, 851, 85, 851, 85, 85, 85, 85, 85, 1046 1047 600, 851, 600, 653, 653, 653, 653, 653, 653, 653, 1048 653, 653, 653, 653, 653, 653, 719, 851, 719, 851, 1049 851, 851, 719, 655, 851, 655, 202, 851, 202, 851, 1050 851, 851, 202, 657, 851, 657, 722, 851, 722, 659, 1051 851, 659, 202, 851, 851, 202, 851, 202, 202, 202, 1052 202, 202, 661, 851, 661, 723, 851, 723, 663, 851, 1053 663, 665, 851, 665, 724, 851, 724, 667, 851, 667, 1054 85, 851, 85, 726, 851, 726, 851, 851, 851, 726, 1055 673, 851, 673, 265, 851, 265, 851, 851, 851, 265, 1056 675, 851, 675, 729, 851, 729, 677, 851, 677, 139, 1057 1058 851, 139, 730, 851, 730, 851, 851, 851, 730, 85, 1059 851, 851, 85, 851, 85, 85, 85, 85, 85, 762, 1060 851, 762, 719, 851, 719, 763, 851, 763, 851, 851, 1061 851, 763, 765, 851, 765, 851, 851, 851, 765, 767, 1062 851, 767, 851, 851, 851, 767, 769, 851, 769, 770, 1063 851, 770, 851, 851, 851, 770, 772, 851, 772, 851, 1064 851, 851, 772, 792, 851, 792, 851, 851, 851, 792, 1065 794, 851, 794, 851, 851, 851, 794, 796, 851, 796, 1066 851, 851, 851, 796, 798, 851, 798, 851, 851, 851, 1067 798, 800, 851, 800, 851, 851, 851, 800, 802, 851, 1068 1069 802, 851, 851, 851, 802, 600, 851, 600, 851, 851, 1070 851, 600, 820, 851, 820, 851, 851, 851, 820, 661, 1071 851, 661, 851, 851, 851, 661, 665, 851, 665, 851, 1072 851, 851, 665, 85, 851, 85, 851, 851, 851, 85, 1073 825, 851, 825, 851, 851, 851, 825, 139, 851, 139, 1074 851, 851, 851, 139, 202, 851, 202, 851, 851, 851, 1075 202, 11, 851, 851, 851, 851, 851, 851, 851, 851, 1076 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1077 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1078 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1079 1080 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1081 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1082 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1083 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1084 851, 851, 851, 851, 851, 851, 851 1055 1085 } ; 1056 1086 1057 static yyconst flex_int16_t yy_chk[2 653] =1087 static yyconst flex_int16_t yy_chk[2848] = 1058 1088 { 0, 1059 1089 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 1065 1095 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1066 1096 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1067 1, 1, 1, 1, 2, 16, 24, 16, 24, 2,1068 19, 19, 2, 5, 5, 5, 5, 5, 5, 5,1097 1, 1, 1, 1, 1, 2, 16, 24, 16, 24, 1098 2, 19, 19, 2, 5, 5, 5, 5, 5, 5, 1069 1099 1070 1100 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, … … 1075 1105 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1076 1106 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1077 5, 5, 5, 5, 5, 5, 5, 7, 8, 9, 1078 10, 37, 37, 20, 48, 9, 10, 512, 7, 8, 1079 13, 13, 13, 13, 13, 13, 15, 15, 15, 15, 1080 1081 15, 15, 20, 25, 48, 42, 53, 28, 27, 28, 1082 28, 28, 28, 28, 28, 512, 824, 25, 29, 25, 1083 27, 27, 27, 29, 53, 35, 7, 8, 9, 10, 1084 40, 42, 55, 29, 30, 40, 30, 30, 30, 30, 1085 30, 30, 35, 47, 35, 35, 125, 49, 125, 50, 1086 55, 56, 49, 30, 63, 51, 55, 30, 50, 49, 1087 56, 72, 30, 30, 47, 49, 47, 50, 30, 54, 1088 51, 50, 51, 40, 30, 60, 40, 86, 61, 54, 1089 30, 51, 107, 113, 823, 822, 54, 72, 30, 58, 1090 61, 30, 31, 60, 31, 31, 31, 31, 31, 31, 1091 1092 108, 58, 106, 86, 63, 107, 113, 106, 126, 58, 1093 126, 31, 45, 45, 45, 31, 58, 57, 45, 45, 1094 31, 45, 52, 45, 45, 821, 31, 52, 45, 57, 1095 57, 45, 31, 106, 108, 52, 140, 52, 31, 57, 1096 52, 128, 57, 128, 52, 59, 31, 38, 112, 819, 1097 59, 38, 38, 112, 38, 114, 38, 38, 131, 38, 1098 131, 38, 140, 59, 79, 79, 79, 79, 79, 79, 1099 38, 38, 38, 66, 66, 66, 66, 66, 66, 112, 1100 154, 66, 81, 81, 81, 81, 81, 81, 59, 114, 1101 38, 59, 154, 38, 82, 82, 82, 82, 82, 82, 1102 1103 129, 67, 67, 130, 818, 59, 67, 103, 103, 103, 1104 103, 133, 298, 133, 129, 130, 129, 130, 298, 109, 1105 38, 38, 67, 67, 67, 67, 67, 67, 76, 76, 1106 134, 134, 134, 76, 103, 76, 105, 171, 105, 103, 1107 76, 105, 105, 105, 105, 105, 105, 161, 109, 76, 1108 76, 76, 76, 109, 110, 132, 132, 171, 132, 115, 1109 76, 813, 103, 104, 161, 104, 104, 104, 104, 104, 1110 104, 147, 110, 105, 148, 76, 109, 115, 76, 136, 1111 110, 136, 104, 76, 76, 115, 147, 76, 76, 138, 1112 149, 138, 148, 147, 143, 76, 151, 104, 76, 143, 1113 1114 76, 76, 76, 104, 76, 84, 152, 150, 149, 84, 1115 84, 153, 151, 157, 84, 84, 150, 84, 158, 84, 1116 156, 165, 162, 163, 152, 812, 808, 158, 84, 84, 1117 84, 159, 162, 153, 155, 157, 156, 143, 164, 155, 1118 167, 155, 165, 155, 155, 160, 163, 155, 84, 155, 1119 160, 84, 159, 159, 155, 155, 155, 168, 155, 169, 1120 170, 172, 167, 160, 166, 164, 213, 173, 213, 177, 1121 806, 175, 168, 176, 177, 236, 169, 179, 170, 84, 1122 98, 98, 98, 98, 98, 98, 175, 166, 172, 173, 1123 176, 181, 178, 175, 180, 179, 181, 98, 98, 271, 1124 1125 183, 98, 182, 178, 184, 180, 186, 200, 189, 236, 1126 803, 181, 98, 178, 178, 182, 185, 271, 98, 98, 1127 183, 189, 180, 187, 98, 102, 102, 102, 102, 102, 1128 102, 184, 188, 200, 440, 185, 187, 214, 215, 214, 1129 215, 241, 102, 102, 187, 188, 102, 188, 275, 186, 1130 204, 204, 186, 275, 217, 204, 218, 102, 218, 440, 1131 193, 193, 287, 102, 102, 193, 217, 241, 217, 102, 1132 192, 192, 192, 192, 192, 192, 219, 219, 192, 219, 1133 249, 193, 193, 193, 193, 193, 193, 195, 195, 287, 1134 285, 216, 195, 197, 197, 220, 802, 220, 197, 285, 1135 1136 197, 207, 207, 207, 207, 216, 249, 216, 195, 195, 1137 195, 195, 195, 195, 197, 197, 197, 197, 197, 197, 1138 221, 221, 221, 223, 224, 223, 224, 237, 237, 237, 1139 237, 237, 237, 207, 228, 228, 228, 228, 228, 228, 1140 229, 259, 229, 259, 237, 229, 229, 229, 229, 229, 1141 229, 228, 228, 234, 234, 228, 260, 234, 260, 237, 1142 541, 272, 277, 270, 284, 237, 228, 277, 263, 284, 1143 541, 281, 228, 228, 234, 234, 270, 229, 228, 272, 1144 234, 238, 238, 238, 238, 238, 238, 239, 239, 239, 1145 239, 239, 239, 240, 263, 240, 276, 281, 240, 240, 1146 1147 240, 240, 240, 240, 246, 239, 801, 800, 239, 248, 1148 248, 248, 248, 248, 248, 279, 276, 273, 274, 239, 1149 253, 253, 253, 253, 253, 253, 239, 246, 278, 246, 1150 279, 239, 246, 273, 282, 274, 279, 279, 246, 280, 1151 286, 248, 291, 283, 288, 290, 292, 291, 278, 282, 1152 246, 294, 253, 286, 246, 292, 295, 280, 246, 283, 1153 283, 293, 288, 290, 296, 297, 300, 301, 293, 299, 1154 297, 294, 302, 304, 295, 300, 303, 305, 304, 306, 1155 307, 302, 305, 301, 306, 296, 296, 308, 299, 309, 1156 314, 303, 311, 312, 313, 315, 316, 317, 319, 307, 1157 1158 318, 306, 309, 311, 320, 308, 321, 313, 312, 318, 1159 324, 322, 314, 325, 317, 326, 316, 327, 315, 324, 1160 319, 329, 330, 328, 386, 385, 329, 320, 321, 322, 1161 327, 328, 332, 326, 331, 331, 385, 330, 332, 331, 1162 386, 331, 339, 339, 339, 339, 340, 340, 340, 340, 1163 349, 350, 349, 350, 388, 799, 325, 356, 356, 356, 1164 356, 356, 356, 357, 357, 357, 357, 357, 357, 370, 1165 358, 392, 358, 388, 339, 358, 358, 358, 358, 358, 1166 358, 357, 389, 390, 357, 359, 359, 359, 359, 359, 1167 359, 389, 370, 392, 390, 357, 360, 360, 360, 360, 1168 1169 360, 360, 357, 403, 798, 365, 366, 357, 361, 361, 1170 361, 361, 361, 361, 365, 366, 372, 359, 362, 362, 1171 362, 362, 362, 362, 403, 395, 361, 396, 360, 361, 1172 365, 366, 368, 367, 372, 391, 362, 368, 387, 362, 1173 361, 395, 372, 400, 391, 393, 394, 361, 400, 396, 1174 362, 797, 361, 387, 393, 796, 367, 362, 367, 394, 1175 397, 367, 362, 368, 369, 371, 369, 367, 399, 369, 1176 369, 369, 369, 369, 369, 398, 397, 397, 402, 367, 1177 401, 404, 408, 367, 402, 405, 399, 367, 371, 415, 1178 371, 406, 404, 371, 413, 401, 408, 398, 410, 371, 1179 1180 412, 369, 401, 420, 405, 414, 406, 416, 417, 421, 1181 410, 371, 415, 422, 414, 371, 413, 417, 414, 371, 1182 423, 412, 416, 420, 424, 425, 426, 428, 422, 430, 1183 431, 421, 435, 432, 433, 426, 434, 436, 443, 424, 1184 438, 435, 423, 437, 428, 425, 442, 438, 445, 443, 1185 439, 431, 430, 432, 433, 436, 437, 439, 434, 441, 1186 446, 504, 447, 442, 504, 473, 470, 441, 447, 446, 1187 445, 456, 456, 456, 456, 470, 494, 441, 467, 467, 1188 467, 467, 467, 467, 468, 468, 468, 468, 468, 468, 1189 473, 470, 474, 494, 472, 495, 467, 497, 499, 467, 1190 1191 498, 501, 468, 472, 500, 468, 506, 505, 495, 794, 1192 467, 499, 497, 503, 501, 507, 468, 467, 474, 472, 1193 498, 515, 467, 468, 503, 506, 500, 505, 468, 469, 1194 469, 469, 469, 469, 469, 471, 507, 471, 515, 793, 1195 471, 471, 471, 471, 471, 471, 476, 476, 476, 476, 1196 476, 476, 477, 477, 477, 477, 477, 477, 478, 514, 1197 478, 469, 508, 478, 478, 478, 478, 478, 478, 502, 1198 477, 508, 471, 477, 502, 509, 510, 511, 522, 513, 1199 509, 514, 523, 516, 477, 524, 520, 510, 513, 517, 1200 511, 477, 516, 525, 517, 520, 477, 527, 528, 523, 1201 1202 524, 529, 525, 531, 522, 536, 532, 537, 534, 538, 1203 528, 532, 535, 543, 527, 540, 529, 534, 531, 544, 1204 537, 535, 542, 540, 546, 549, 538, 536, 547, 542, 1205 550, 544, 592, 546, 597, 543, 791, 790, 547, 592, 1206 596, 597, 549, 550, 569, 569, 569, 569, 569, 569, 1207 570, 570, 570, 570, 570, 570, 571, 571, 571, 571, 1208 571, 571, 572, 596, 572, 610, 593, 572, 572, 572, 1209 572, 572, 572, 594, 571, 593, 569, 571, 575, 575, 1210 575, 575, 575, 575, 595, 610, 594, 600, 571, 598, 1211 600, 599, 603, 591, 602, 571, 575, 598, 591, 575, 1212 1213 571, 595, 577, 577, 577, 577, 577, 577, 599, 602, 1214 575, 591, 601, 604, 603, 605, 606, 575, 607, 606, 1215 577, 608, 575, 577, 609, 601, 612, 611, 613, 615, 1216 604, 616, 620, 617, 577, 607, 611, 605, 621, 609, 1217 623, 577, 627, 634, 612, 637, 577, 626, 608, 627, 1218 613, 615, 620, 634, 616, 617, 626, 623, 636, 666, 1219 637, 669, 672, 673, 680, 621, 673, 636, 655, 655, 1220 655, 655, 655, 655, 656, 656, 656, 656, 656, 656, 1221 666, 667, 672, 670, 675, 680, 655, 669, 671, 655, 1222 670, 667, 656, 671, 674, 656, 678, 674, 677, 681, 1223 1224 655, 683, 675, 684, 677, 678, 656, 655, 679, 732, 1225 683, 679, 655, 656, 682, 696, 732, 682, 656, 657, 1226 657, 657, 657, 657, 657, 686, 685, 681, 684, 685, 1227 688, 687, 689, 691, 693, 696, 697, 700, 686, 687, 1228 688, 699, 691, 723, 722, 689, 700, 718, 719, 699, 1229 720, 657, 724, 721, 722, 720, 783, 693, 697, 707, 1230 707, 707, 707, 707, 707, 719, 723, 718, 721, 725, 1231 726, 727, 725, 729, 731, 735, 729, 731, 724, 733, 1232 754, 734, 733, 726, 734, 756, 757, 759, 763, 758, 1233 735, 707, 758, 760, 762, 766, 760, 764, 727, 767, 1234 1235 764, 769, 767, 784, 757, 768, 756, 754, 768, 759, 1236 769, 785, 762, 763, 787, 789, 786, 766, 785, 786, 1237 782, 781, 788, 787, 784, 788, 792, 795, 804, 792, 1238 795, 805, 789, 814, 815, 807, 805, 804, 807, 809, 1239 810, 811, 809, 810, 811, 816, 820, 817, 816, 815, 1240 817, 780, 779, 814, 778, 777, 776, 775, 774, 773, 1241 772, 771, 770, 765, 761, 755, 753, 752, 820, 826, 1242 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 1243 826, 827, 827, 827, 827, 827, 827, 827, 827, 827, 1244 827, 827, 827, 828, 828, 828, 828, 828, 828, 828, 1245 1246 828, 828, 828, 828, 828, 829, 751, 750, 829, 829, 1247 829, 829, 829, 829, 830, 749, 748, 747, 830, 830, 1248 830, 830, 830, 831, 831, 831, 831, 831, 831, 831, 1249 831, 831, 831, 831, 831, 832, 746, 745, 832, 832, 1250 832, 832, 832, 832, 833, 744, 833, 833, 743, 833, 1251 833, 833, 833, 833, 742, 833, 834, 741, 740, 834, 1252 834, 834, 834, 834, 834, 834, 739, 834, 835, 835, 1253 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 1254 836, 836, 836, 738, 737, 736, 836, 837, 730, 728, 1255 837, 837, 837, 837, 837, 837, 838, 838, 717, 716, 1256 1257 715, 838, 839, 839, 714, 713, 712, 839, 840, 840, 1258 711, 710, 709, 840, 841, 841, 706, 705, 704, 841, 1259 842, 842, 703, 698, 695, 842, 843, 843, 694, 692, 1260 690, 843, 844, 844, 676, 668, 665, 844, 845, 845, 1261 660, 658, 646, 845, 846, 846, 642, 640, 638, 846, 1262 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 1263 847, 847, 848, 848, 849, 849, 849, 849, 849, 635, 1264 849, 850, 850, 850, 851, 851, 633, 632, 631, 851, 1265 852, 852, 630, 629, 628, 852, 853, 853, 625, 624, 1266 622, 853, 854, 854, 855, 855, 619, 618, 614, 855, 1267 1268 856, 856, 857, 589, 585, 857, 857, 857, 857, 857, 1269 857, 858, 858, 858, 858, 858, 858, 858, 858, 858, 1270 858, 858, 858, 859, 859, 859, 859, 859, 859, 859, 1271 859, 859, 859, 859, 859, 860, 860, 583, 581, 579, 1272 860, 861, 861, 573, 567, 565, 861, 862, 862, 563, 1273 561, 559, 862, 863, 863, 864, 864, 557, 555, 553, 1274 864, 865, 865, 866, 866, 552, 551, 548, 866, 867, 1275 867, 868, 868, 545, 539, 533, 868, 869, 869, 870, 1276 870, 530, 526, 521, 870, 871, 871, 872, 872, 519, 1277 518, 496, 872, 873, 873, 874, 874, 492, 490, 488, 1278 1279 874, 875, 875, 876, 876, 486, 876, 484, 876, 877, 1280 877, 482, 877, 481, 877, 878, 878, 878, 878, 878, 1281 480, 878, 879, 879, 479, 465, 463, 879, 880, 880, 1282 462, 461, 459, 880, 881, 881, 457, 454, 452, 881, 1283 882, 882, 883, 883, 450, 448, 444, 883, 884, 884, 1284 885, 885, 429, 427, 419, 885, 886, 886, 887, 887, 1285 418, 411, 409, 887, 888, 888, 889, 407, 383, 889, 1286 889, 889, 889, 889, 889, 890, 890, 890, 890, 890, 1287 890, 890, 890, 890, 890, 890, 890, 891, 891, 381, 1288 379, 377, 891, 892, 892, 893, 893, 376, 375, 354, 1289 1290 893, 894, 894, 895, 895, 352, 351, 347, 895, 896, 1291 896, 897, 897, 345, 343, 341, 897, 898, 898, 899, 1292 899, 337, 335, 334, 899, 900, 900, 901, 901, 333, 1293 323, 310, 901, 902, 902, 903, 903, 289, 268, 266, 1294 903, 904, 904, 265, 264, 262, 904, 905, 905, 906, 1295 906, 261, 256, 252, 906, 907, 907, 908, 908, 251, 1296 908, 247, 908, 909, 909, 244, 243, 232, 909, 910, 1297 910, 231, 226, 225, 910, 911, 911, 912, 912, 222, 1298 212, 210, 912, 913, 913, 914, 914, 209, 208, 202, 1299 914, 915, 915, 916, 916, 201, 199, 194, 916, 917, 1300 1301 917, 918, 918, 174, 145, 144, 918, 919, 919, 920, 1302 920, 139, 137, 135, 920, 921, 921, 922, 127, 124, 1303 922, 922, 922, 922, 922, 922, 923, 923, 923, 923, 1304 923, 923, 923, 923, 923, 923, 923, 923, 924, 924, 1305 123, 119, 100, 924, 925, 925, 926, 926, 97, 94, 1306 92, 926, 927, 927, 928, 928, 85, 71, 69, 928, 1307 929, 929, 930, 930, 65, 44, 39, 930, 931, 931, 1308 932, 932, 36, 33, 18, 932, 933, 933, 934, 934, 1309 11, 4, 3, 934, 935, 935, 936, 936, 0, 0, 1310 0, 936, 937, 937, 938, 938, 0, 0, 0, 938, 1311 1312 939, 939, 940, 940, 0, 0, 0, 940, 941, 941, 1313 0, 0, 0, 941, 942, 942, 943, 943, 0, 0, 1314 0, 943, 944, 944, 945, 945, 0, 0, 0, 945, 1315 946, 946, 947, 947, 0, 0, 0, 947, 948, 948, 1316 949, 949, 950, 950, 951, 0, 0, 951, 951, 951, 1317 951, 951, 951, 952, 952, 953, 953, 953, 953, 953, 1318 953, 953, 953, 953, 953, 953, 953, 954, 954, 0, 1319 0, 0, 954, 955, 955, 956, 956, 0, 0, 0, 1320 956, 957, 957, 958, 958, 959, 959, 960, 0, 0, 1321 960, 960, 960, 960, 960, 960, 961, 961, 962, 962, 1322 1323 963, 963, 964, 964, 965, 965, 966, 966, 967, 967, 1324 968, 968, 0, 0, 0, 968, 969, 969, 970, 970, 1325 0, 0, 0, 970, 971, 971, 972, 972, 973, 973, 1326 974, 974, 975, 975, 0, 0, 0, 975, 976, 0, 1327 0, 976, 976, 976, 976, 976, 976, 977, 977, 978, 1328 978, 979, 979, 0, 0, 0, 979, 980, 980, 0, 1329 0, 0, 980, 981, 981, 0, 0, 0, 981, 982, 1330 982, 983, 983, 0, 0, 0, 983, 984, 984, 0, 1331 0, 0, 984, 985, 985, 0, 0, 0, 985, 986, 1332 986, 0, 0, 0, 986, 987, 987, 0, 0, 0, 1333 1334 987, 988, 988, 0, 0, 0, 988, 989, 989, 0, 1335 0, 0, 989, 990, 990, 0, 0, 0, 990, 991, 1336 991, 0, 0, 0, 991, 992, 992, 0, 0, 0, 1337 992, 993, 993, 0, 0, 0, 993, 994, 994, 0, 1338 0, 0, 994, 995, 995, 0, 0, 0, 995, 996, 1339 996, 0, 0, 0, 996, 997, 997, 0, 0, 0, 1340 997, 998, 998, 0, 0, 0, 998, 825, 825, 825, 1341 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1342 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1343 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1344 1345 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1346 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1347 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1348 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1349 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1350 825, 825 1107 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 1108 8, 9, 10, 37, 37, 20, 39, 9, 10, 521, 1109 7, 8, 13, 13, 13, 13, 13, 13, 15, 15, 1110 1111 15, 15, 15, 15, 20, 25, 48, 39, 42, 28, 1112 27, 28, 28, 28, 28, 28, 28, 108, 521, 25, 1113 29, 25, 27, 27, 27, 29, 48, 35, 40, 7, 1114 8, 9, 10, 40, 42, 29, 30, 47, 30, 30, 1115 30, 30, 30, 30, 35, 56, 35, 35, 44, 334, 1116 44, 114, 108, 72, 56, 30, 63, 334, 47, 30, 1117 47, 45, 45, 45, 49, 30, 30, 45, 45, 49, 1118 45, 30, 40, 45, 45, 40, 49, 30, 45, 72, 1119 61, 45, 49, 30, 86, 513, 114, 53, 513, 51, 1120 60, 30, 61, 55, 30, 31, 107, 31, 31, 31, 1121 1122 31, 31, 31, 50, 51, 53, 51, 63, 60, 54, 1123 86, 55, 50, 109, 31, 51, 50, 55, 31, 54, 1124 107, 50, 52, 113, 31, 50, 54, 52, 317, 125, 1125 31, 125, 106, 156, 150, 52, 31, 52, 106, 317, 1126 52, 59, 31, 109, 52, 156, 59, 113, 109, 151, 1127 31, 38, 150, 174, 110, 38, 38, 57, 38, 59, 1128 38, 38, 112, 38, 106, 38, 58, 151, 112, 57, 1129 57, 109, 110, 174, 38, 38, 38, 166, 58, 57, 1130 110, 152, 57, 115, 141, 59, 58, 126, 59, 126, 1131 152, 67, 67, 58, 112, 38, 67, 128, 38, 128, 1132 1133 166, 115, 59, 66, 66, 66, 66, 66, 66, 115, 1134 141, 66, 67, 67, 67, 67, 67, 67, 79, 79, 1135 79, 79, 79, 79, 160, 38, 38, 76, 76, 131, 1136 163, 131, 76, 160, 76, 103, 103, 103, 103, 76, 1137 81, 81, 81, 81, 81, 81, 129, 163, 76, 76, 1138 76, 76, 82, 82, 82, 82, 82, 82, 130, 76, 1139 129, 153, 129, 103, 132, 132, 158, 132, 103, 133, 1140 130, 133, 130, 186, 136, 76, 136, 153, 76, 134, 1141 134, 134, 158, 76, 76, 165, 164, 76, 76, 154, 1142 138, 103, 138, 186, 155, 76, 164, 216, 76, 216, 1143 1144 76, 76, 76, 144, 76, 84, 165, 154, 144, 84, 1145 84, 168, 149, 173, 84, 84, 155, 84, 104, 84, 1146 104, 104, 104, 104, 104, 104, 159, 149, 84, 84, 1147 84, 173, 168, 105, 149, 105, 161, 104, 105, 105, 1148 105, 105, 105, 105, 170, 162, 167, 144, 159, 84, 1149 162, 169, 84, 104, 171, 157, 169, 161, 161, 104, 1150 157, 172, 157, 162, 157, 157, 170, 175, 157, 171, 1151 157, 105, 179, 167, 169, 157, 157, 157, 172, 157, 1152 84, 98, 98, 98, 98, 98, 98, 176, 178, 179, 1153 180, 185, 280, 182, 175, 180, 181, 183, 98, 98, 1154 1155 192, 850, 98, 178, 185, 189, 187, 181, 183, 176, 1156 178, 182, 280, 192, 98, 188, 203, 181, 181, 184, 1157 98, 98, 190, 191, 184, 183, 98, 102, 102, 102, 1158 102, 102, 102, 187, 188, 190, 191, 274, 191, 184, 1159 449, 275, 203, 190, 102, 102, 207, 207, 102, 189, 1160 274, 207, 189, 195, 195, 195, 195, 195, 195, 275, 1161 102, 195, 277, 196, 196, 449, 102, 102, 196, 198, 1162 198, 217, 102, 217, 198, 200, 200, 218, 277, 218, 1163 200, 221, 200, 221, 196, 196, 196, 196, 196, 196, 1164 198, 198, 198, 198, 198, 198, 200, 200, 200, 200, 1165 1166 200, 200, 210, 210, 210, 210, 219, 220, 222, 222, 1167 223, 222, 223, 224, 224, 224, 226, 239, 226, 220, 1168 219, 220, 219, 227, 232, 227, 232, 278, 849, 232, 1169 232, 232, 232, 232, 232, 210, 231, 231, 231, 231, 1170 231, 231, 237, 237, 278, 244, 237, 252, 262, 263, 1171 262, 263, 239, 231, 231, 279, 276, 231, 281, 282, 1172 279, 288, 232, 281, 237, 237, 288, 290, 266, 231, 1173 237, 244, 285, 252, 276, 231, 231, 848, 284, 282, 1174 290, 231, 240, 240, 240, 240, 240, 240, 241, 241, 1175 241, 241, 241, 241, 266, 283, 284, 286, 285, 240, 1176 1177 289, 242, 242, 242, 242, 242, 242, 249, 291, 289, 1178 283, 292, 286, 294, 847, 240, 283, 283, 243, 242, 1179 243, 240, 242, 243, 243, 243, 243, 243, 243, 292, 1180 249, 294, 249, 295, 242, 291, 249, 298, 295, 287, 1181 301, 242, 249, 299, 296, 301, 242, 251, 251, 251, 1182 251, 251, 251, 296, 249, 287, 287, 298, 249, 304, 1183 300, 299, 249, 256, 256, 256, 256, 256, 256, 297, 1184 302, 303, 307, 306, 305, 302, 297, 303, 304, 306, 1185 251, 300, 300, 305, 308, 309, 310, 311, 307, 312, 1186 313, 310, 311, 308, 312, 314, 256, 315, 320, 318, 1187 1188 309, 321, 319, 322, 323, 325, 326, 324, 327, 313, 1189 315, 312, 331, 314, 318, 319, 324, 328, 332, 330, 1190 320, 323, 336, 322, 321, 333, 335, 325, 330, 326, 1191 327, 335, 355, 396, 355, 328, 332, 336, 333, 337, 1192 337, 338, 396, 356, 337, 356, 337, 338, 345, 345, 1193 345, 345, 346, 346, 346, 346, 331, 362, 362, 362, 1194 362, 362, 362, 392, 363, 363, 363, 363, 363, 363, 1195 364, 376, 364, 552, 392, 364, 364, 364, 364, 364, 1196 364, 345, 363, 552, 371, 363, 365, 365, 365, 365, 1197 365, 365, 393, 401, 371, 376, 398, 363, 366, 366, 1198 1199 366, 366, 366, 366, 363, 398, 401, 372, 393, 363, 1200 371, 367, 367, 367, 367, 367, 367, 372, 395, 365, 1201 368, 368, 368, 368, 368, 368, 400, 417, 394, 367, 1202 374, 366, 367, 372, 373, 400, 374, 395, 368, 417, 1203 375, 368, 375, 394, 367, 375, 375, 375, 375, 375, 1204 375, 367, 399, 368, 378, 397, 367, 373, 406, 373, 1205 368, 377, 374, 373, 411, 368, 397, 402, 845, 373, 1206 403, 404, 378, 405, 399, 411, 406, 407, 375, 408, 1207 378, 373, 407, 402, 377, 373, 377, 404, 404, 373, 1208 377, 409, 403, 410, 408, 405, 377, 409, 412, 415, 1209 1210 413, 408, 419, 420, 422, 423, 424, 430, 377, 421, 1211 425, 423, 377, 415, 410, 413, 377, 412, 421, 425, 1212 427, 424, 421, 419, 429, 420, 431, 422, 432, 430, 1213 433, 434, 437, 435, 439, 427, 441, 440, 443, 442, 1214 446, 431, 435, 444, 429, 433, 445, 447, 448, 437, 1215 432, 434, 444, 446, 447, 448, 441, 439, 440, 442, 1216 443, 450, 452, 451, 445, 454, 455, 611, 456, 450, 1217 611, 844, 504, 452, 456, 455, 479, 482, 483, 450, 1218 451, 465, 465, 465, 465, 504, 479, 454, 476, 476, 1219 476, 476, 476, 476, 477, 477, 477, 477, 477, 477, 1220 1221 481, 503, 479, 482, 483, 506, 476, 839, 509, 476, 1222 481, 507, 477, 512, 516, 477, 508, 511, 503, 510, 1223 506, 476, 511, 531, 512, 519, 481, 477, 476, 508, 1224 509, 507, 510, 476, 477, 516, 519, 520, 517, 477, 1225 478, 478, 478, 478, 478, 478, 480, 517, 480, 531, 1226 520, 480, 480, 480, 480, 480, 480, 485, 485, 485, 1227 485, 485, 485, 514, 486, 486, 486, 486, 486, 486, 1228 487, 515, 487, 478, 524, 487, 487, 487, 487, 487, 1229 487, 518, 486, 514, 480, 486, 518, 522, 523, 525, 1230 515, 524, 533, 529, 526, 528, 522, 486, 525, 526, 1231 1232 532, 528, 529, 534, 486, 535, 537, 533, 538, 486, 1233 523, 539, 540, 542, 535, 537, 543, 532, 534, 547, 1234 545, 543, 546, 539, 548, 538, 549, 540, 542, 545, 1235 551, 546, 553, 554, 555, 557, 556, 548, 551, 553, 1236 558, 547, 556, 549, 557, 560, 555, 561, 604, 603, 1237 558, 617, 608, 609, 617, 554, 603, 604, 606, 608, 1238 561, 609, 560, 580, 580, 580, 580, 580, 580, 581, 1239 581, 581, 581, 581, 581, 606, 582, 582, 582, 582, 1240 582, 582, 583, 607, 583, 605, 641, 583, 583, 583, 1241 583, 583, 583, 641, 582, 612, 580, 582, 605, 586, 1242 1243 586, 586, 586, 586, 586, 610, 607, 614, 612, 582, 1244 588, 588, 588, 588, 588, 588, 582, 586, 602, 613, 1245 586, 582, 610, 602, 615, 616, 619, 620, 588, 614, 1246 623, 588, 586, 621, 613, 618, 602, 622, 624, 586, 1247 625, 615, 620, 588, 586, 627, 622, 616, 623, 625, 1248 588, 628, 618, 621, 619, 588, 629, 630, 635, 634, 1249 624, 640, 648, 637, 651, 649, 630, 627, 652, 739, 1250 640, 648, 682, 651, 628, 649, 684, 681, 629, 634, 1251 637, 687, 682, 652, 739, 635, 670, 670, 670, 670, 1252 670, 670, 671, 671, 671, 671, 671, 671, 681, 685, 1253 1254 686, 687, 684, 690, 670, 686, 685, 670, 688, 689, 1255 671, 688, 689, 671, 692, 693, 696, 838, 703, 670, 1256 692, 690, 699, 695, 693, 671, 670, 694, 703, 837, 1257 694, 670, 671, 697, 710, 705, 697, 671, 672, 672, 1258 672, 672, 672, 672, 695, 696, 698, 700, 699, 701, 1259 700, 702, 704, 713, 707, 698, 705, 710, 714, 702, 1260 715, 717, 701, 707, 742, 704, 718, 740, 736, 717, 1261 741, 672, 737, 713, 738, 718, 745, 740, 754, 738, 1262 714, 715, 725, 725, 725, 725, 725, 725, 736, 737, 1263 742, 743, 744, 741, 743, 747, 749, 753, 747, 749, 1264 1265 750, 754, 759, 751, 745, 744, 751, 750, 752, 774, 1266 776, 752, 753, 778, 777, 725, 778, 779, 780, 782, 1267 783, 780, 786, 784, 787, 759, 784, 787, 806, 789, 1268 788, 776, 777, 788, 790, 791, 774, 782, 789, 779, 1269 807, 811, 808, 809, 786, 808, 783, 807, 836, 806, 1270 790, 791, 809, 810, 814, 818, 810, 814, 811, 817, 1271 819, 828, 817, 829, 818, 840, 841, 846, 829, 819, 1272 828, 831, 833, 834, 831, 833, 834, 835, 832, 842, 1273 835, 841, 842, 843, 830, 840, 843, 827, 826, 846, 1274 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 1275 1276 852, 852, 852, 853, 853, 853, 853, 853, 853, 853, 1277 853, 853, 853, 853, 853, 853, 854, 854, 854, 854, 1278 854, 854, 854, 854, 854, 854, 854, 854, 854, 855, 1279 825, 824, 855, 823, 855, 855, 855, 855, 855, 856, 1280 822, 821, 820, 856, 856, 856, 856, 856, 856, 857, 1281 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 1282 857, 857, 858, 816, 815, 858, 813, 858, 858, 858, 1283 858, 858, 859, 812, 859, 859, 805, 859, 859, 859, 1284 859, 859, 859, 804, 859, 860, 803, 802, 860, 860, 1285 860, 860, 860, 860, 860, 860, 801, 860, 861, 861, 1286 1287 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 1288 861, 862, 862, 800, 862, 799, 798, 797, 862, 863, 1289 796, 795, 863, 794, 863, 863, 863, 863, 863, 864, 1290 793, 864, 792, 785, 781, 864, 865, 775, 865, 773, 1291 772, 771, 865, 866, 770, 866, 769, 768, 767, 866, 1292 867, 766, 867, 765, 764, 763, 867, 868, 762, 868, 1293 761, 760, 758, 868, 869, 757, 869, 756, 755, 748, 1294 869, 870, 746, 870, 735, 734, 733, 870, 871, 732, 1295 871, 731, 730, 729, 871, 872, 728, 872, 727, 724, 1296 723, 872, 873, 873, 873, 873, 873, 873, 873, 873, 1297 1298 873, 873, 873, 873, 873, 874, 722, 874, 875, 875, 1299 721, 875, 875, 875, 716, 875, 876, 876, 712, 876, 1300 877, 711, 877, 709, 708, 706, 877, 878, 691, 878, 1301 683, 680, 675, 878, 879, 673, 879, 661, 657, 655, 1302 879, 880, 653, 880, 881, 650, 881, 647, 646, 645, 1303 881, 882, 644, 882, 883, 643, 642, 883, 639, 883, 1304 883, 883, 883, 883, 884, 884, 884, 884, 884, 884, 1305 884, 884, 884, 884, 884, 884, 884, 885, 885, 885, 1306 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 1307 886, 638, 886, 636, 633, 632, 886, 887, 631, 887, 1308 1309 626, 600, 596, 887, 888, 594, 888, 592, 590, 584, 1310 888, 889, 578, 889, 890, 576, 890, 574, 572, 570, 1311 890, 891, 568, 891, 892, 566, 892, 564, 563, 562, 1312 892, 893, 559, 893, 894, 550, 894, 544, 541, 536, 1313 894, 895, 530, 895, 896, 527, 896, 505, 501, 499, 1314 896, 897, 497, 897, 898, 495, 898, 493, 491, 490, 1315 898, 899, 489, 899, 900, 488, 900, 474, 472, 471, 1316 900, 901, 470, 901, 902, 468, 902, 466, 902, 463, 1317 902, 903, 461, 903, 459, 903, 457, 903, 904, 904, 1318 453, 904, 904, 904, 438, 904, 905, 436, 905, 428, 1319 1320 426, 418, 905, 906, 416, 906, 414, 389, 387, 906, 1321 907, 385, 907, 383, 382, 381, 907, 908, 360, 908, 1322 909, 358, 909, 357, 353, 351, 909, 910, 349, 910, 1323 911, 347, 911, 343, 341, 340, 911, 912, 339, 912, 1324 913, 329, 913, 316, 293, 273, 913, 914, 271, 914, 1325 915, 269, 268, 915, 267, 915, 915, 915, 915, 915, 1326 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 1327 916, 916, 916, 917, 265, 917, 264, 259, 255, 917, 1328 918, 254, 918, 919, 250, 919, 247, 246, 235, 919, 1329 920, 234, 920, 921, 229, 921, 228, 225, 215, 921, 1330 1331 922, 213, 922, 923, 212, 923, 211, 205, 204, 923, 1332 924, 202, 924, 925, 197, 925, 177, 148, 146, 925, 1333 926, 145, 926, 927, 139, 927, 137, 135, 127, 927, 1334 928, 124, 928, 929, 123, 929, 119, 100, 97, 929, 1335 930, 94, 930, 92, 85, 71, 930, 931, 69, 931, 1336 932, 65, 932, 36, 33, 18, 932, 933, 11, 933, 1337 934, 4, 934, 3, 934, 0, 934, 935, 0, 935, 1338 0, 0, 0, 935, 936, 0, 936, 0, 0, 0, 1339 936, 937, 0, 937, 938, 0, 938, 0, 0, 0, 1340 938, 939, 0, 939, 940, 0, 940, 0, 0, 0, 1341 1342 940, 941, 0, 941, 942, 0, 942, 0, 0, 0, 1343 942, 943, 0, 943, 944, 0, 944, 0, 0, 0, 1344 944, 945, 0, 945, 946, 0, 946, 0, 0, 0, 1345 946, 947, 0, 947, 948, 0, 0, 948, 0, 948, 1346 948, 948, 948, 948, 949, 949, 949, 949, 949, 949, 1347 949, 949, 949, 949, 949, 949, 949, 950, 0, 950, 1348 0, 0, 0, 950, 951, 0, 951, 952, 0, 952, 1349 0, 0, 0, 952, 953, 0, 953, 954, 0, 954, 1350 0, 0, 0, 954, 955, 0, 955, 956, 0, 956, 1351 0, 0, 0, 956, 957, 0, 957, 958, 0, 958, 1352 1353 0, 0, 0, 958, 959, 0, 959, 960, 0, 960, 1354 0, 0, 0, 960, 961, 0, 961, 962, 0, 962, 1355 0, 0, 0, 962, 963, 0, 963, 964, 0, 964, 1356 0, 0, 0, 964, 965, 0, 965, 966, 0, 966, 1357 0, 0, 0, 966, 967, 0, 967, 0, 0, 0, 1358 967, 968, 0, 968, 969, 0, 969, 0, 0, 0, 1359 969, 970, 0, 970, 971, 0, 971, 0, 0, 0, 1360 971, 972, 0, 972, 973, 0, 973, 0, 0, 0, 1361 973, 974, 0, 974, 975, 0, 975, 976, 0, 976, 1362 977, 0, 0, 977, 0, 977, 977, 977, 977, 977, 1363 1364 978, 0, 978, 979, 979, 979, 979, 979, 979, 979, 1365 979, 979, 979, 979, 979, 979, 980, 0, 980, 0, 1366 0, 0, 980, 981, 0, 981, 982, 0, 982, 0, 1367 0, 0, 982, 983, 0, 983, 984, 0, 984, 985, 1368 0, 985, 986, 0, 0, 986, 0, 986, 986, 986, 1369 986, 986, 987, 0, 987, 988, 0, 988, 989, 0, 1370 989, 990, 0, 990, 991, 0, 991, 992, 0, 992, 1371 993, 0, 993, 994, 0, 994, 0, 0, 0, 994, 1372 995, 0, 995, 996, 0, 996, 0, 0, 0, 996, 1373 997, 0, 997, 998, 0, 998, 999, 0, 999, 1000, 1374 1375 0, 1000, 1001, 0, 1001, 0, 0, 0, 1001, 1002, 1376 0, 0, 1002, 0, 1002, 1002, 1002, 1002, 1002, 1003, 1377 0, 1003, 1004, 0, 1004, 1005, 0, 1005, 0, 0, 1378 0, 1005, 1006, 0, 1006, 0, 0, 0, 1006, 1007, 1379 0, 1007, 0, 0, 0, 1007, 1008, 0, 1008, 1009, 1380 0, 1009, 0, 0, 0, 1009, 1010, 0, 1010, 0, 1381 0, 0, 1010, 1011, 0, 1011, 0, 0, 0, 1011, 1382 1012, 0, 1012, 0, 0, 0, 1012, 1013, 0, 1013, 1383 0, 0, 0, 1013, 1014, 0, 1014, 0, 0, 0, 1384 1014, 1015, 0, 1015, 0, 0, 0, 1015, 1016, 0, 1385 1386 1016, 0, 0, 0, 1016, 1017, 0, 1017, 0, 0, 1387 0, 1017, 1018, 0, 1018, 0, 0, 0, 1018, 1019, 1388 0, 1019, 0, 0, 0, 1019, 1020, 0, 1020, 0, 1389 0, 0, 1020, 1021, 0, 1021, 0, 0, 0, 1021, 1390 1022, 0, 1022, 0, 0, 0, 1022, 1023, 0, 1023, 1391 0, 0, 0, 1023, 1024, 0, 1024, 0, 0, 0, 1392 1024, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1393 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1394 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1395 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1396 1397 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1398 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1399 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1400 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1401 851, 851, 851, 851, 851, 851, 851 1351 1402 } ; 1352 1403 1353 1404 /* Table of booleans, true if rule could match eol. */ 1354 static yyconst flex_int32_t yy_rule_can_match_eol[17 2] =1405 static yyconst flex_int32_t yy_rule_can_match_eol[179] = 1355 1406 { 0, 1356 1407 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … … 1359 1410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1360 1411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1361 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,1412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1362 1413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1363 1414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };1415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; 1365 1416 1366 1417 static yy_state_type yy_last_accepting_state; … … 1390 1441 * Created On : Sat Sep 22 08:58:10 2001 1391 1442 * Last Modified By : Peter A. Buhr 1392 * Last Modified On : Fri Jun 19 11:10:1420151393 * Update Count : 3921443 * Last Modified On : Thu Oct 8 16:13:07 2015 1444 * Update Count : 404 1394 1445 */ 1395 1446 #line 20 "lex.ll" … … 1448 1499 1449 1500 1450 #line 1 451"Parser/lex.cc"1501 #line 1502 "Parser/lex.cc" 1451 1502 1452 1503 #define INITIAL 0 … … 1643 1694 1644 1695 /* line directives */ 1645 #line 16 46"Parser/lex.cc"1696 #line 1697 "Parser/lex.cc" 1646 1697 1647 1698 if ( !(yy_init) ) … … 1697 1748 { 1698 1749 yy_current_state = (int) yy_def[yy_current_state]; 1699 if ( yy_current_state >= 8 26)1750 if ( yy_current_state >= 852 ) 1700 1751 yy_c = yy_meta[(unsigned int) yy_c]; 1701 1752 } … … 1703 1754 ++yy_cp; 1704 1755 } 1705 while ( yy_base[yy_current_state] != 2 568);1756 while ( yy_base[yy_current_state] != 2762 ); 1706 1757 1707 1758 yy_find_action: … … 1850 1901 YY_RULE_SETUP 1851 1902 #line 184 "lex.ll" 1903 { KEYWORD_RETURN(AT); } // CFA 1904 YY_BREAK 1905 case 18: 1906 YY_RULE_SETUP 1907 #line 185 "lex.ll" 1852 1908 { KEYWORD_RETURN(ATOMIC); } // C11 1853 YY_BREAK1854 case 18:1855 YY_RULE_SETUP1856 #line 185 "lex.ll"1857 { KEYWORD_RETURN(ATTRIBUTE); } // GCC1858 1909 YY_BREAK 1859 1910 case 19: … … 1865 1916 YY_RULE_SETUP 1866 1917 #line 187 "lex.ll" 1918 { KEYWORD_RETURN(ATTRIBUTE); } // GCC 1919 YY_BREAK 1920 case 21: 1921 YY_RULE_SETUP 1922 #line 188 "lex.ll" 1867 1923 { KEYWORD_RETURN(AUTO); } 1868 1924 YY_BREAK 1869 case 2 1:1870 YY_RULE_SETUP 1871 #line 18 8"lex.ll"1925 case 22: 1926 YY_RULE_SETUP 1927 #line 189 "lex.ll" 1872 1928 { KEYWORD_RETURN(BOOL); } // C99 1873 1929 YY_BREAK 1874 case 2 2:1875 YY_RULE_SETUP 1876 #line 1 89"lex.ll"1930 case 23: 1931 YY_RULE_SETUP 1932 #line 190 "lex.ll" 1877 1933 { KEYWORD_RETURN(BREAK); } 1878 1934 YY_BREAK 1879 case 2 3:1880 YY_RULE_SETUP 1881 #line 19 0"lex.ll"1935 case 24: 1936 YY_RULE_SETUP 1937 #line 191 "lex.ll" 1882 1938 { KEYWORD_RETURN(CASE); } 1883 1939 YY_BREAK 1884 case 2 4:1885 YY_RULE_SETUP 1886 #line 19 1"lex.ll"1940 case 25: 1941 YY_RULE_SETUP 1942 #line 192 "lex.ll" 1887 1943 { KEYWORD_RETURN(CATCH); } // CFA 1888 1944 YY_BREAK 1889 case 25: 1890 YY_RULE_SETUP 1891 #line 192 "lex.ll" 1945 case 26: 1946 YY_RULE_SETUP 1947 #line 193 "lex.ll" 1948 { KEYWORD_RETURN(CATCHRESUME); } // CFA 1949 YY_BREAK 1950 case 27: 1951 YY_RULE_SETUP 1952 #line 194 "lex.ll" 1892 1953 { KEYWORD_RETURN(CHAR); } 1893 1954 YY_BREAK 1894 case 2 6:1895 YY_RULE_SETUP 1896 #line 19 3"lex.ll"1955 case 28: 1956 YY_RULE_SETUP 1957 #line 195 "lex.ll" 1897 1958 { KEYWORD_RETURN(CHOOSE); } // CFA 1898 1959 YY_BREAK 1899 case 2 7:1900 YY_RULE_SETUP 1901 #line 19 4"lex.ll"1960 case 29: 1961 YY_RULE_SETUP 1962 #line 196 "lex.ll" 1902 1963 { KEYWORD_RETURN(COMPLEX); } // C99 1903 1964 YY_BREAK 1904 case 28:1905 YY_RULE_SETUP 1906 #line 19 5"lex.ll"1965 case 30: 1966 YY_RULE_SETUP 1967 #line 197 "lex.ll" 1907 1968 { KEYWORD_RETURN(COMPLEX); } // GCC 1908 1969 YY_BREAK 1909 case 29:1910 YY_RULE_SETUP 1911 #line 19 6"lex.ll"1970 case 31: 1971 YY_RULE_SETUP 1972 #line 198 "lex.ll" 1912 1973 { KEYWORD_RETURN(COMPLEX); } // GCC 1913 1974 YY_BREAK 1914 case 3 0:1915 YY_RULE_SETUP 1916 #line 19 7"lex.ll"1975 case 32: 1976 YY_RULE_SETUP 1977 #line 199 "lex.ll" 1917 1978 { KEYWORD_RETURN(CONST); } 1918 1979 YY_BREAK 1919 case 3 1:1920 YY_RULE_SETUP 1921 #line 198"lex.ll"1980 case 33: 1981 YY_RULE_SETUP 1982 #line 200 "lex.ll" 1922 1983 { KEYWORD_RETURN(CONST); } // GCC 1923 1984 YY_BREAK 1924 case 3 2:1925 YY_RULE_SETUP 1926 #line 199"lex.ll"1985 case 34: 1986 YY_RULE_SETUP 1987 #line 201 "lex.ll" 1927 1988 { KEYWORD_RETURN(CONST); } // GCC 1928 1989 YY_BREAK 1929 case 3 3:1930 YY_RULE_SETUP 1931 #line 20 0"lex.ll"1990 case 35: 1991 YY_RULE_SETUP 1992 #line 202 "lex.ll" 1932 1993 { KEYWORD_RETURN(CONTEXT); } // CFA 1933 1994 YY_BREAK 1934 case 3 4:1935 YY_RULE_SETUP 1936 #line 20 1"lex.ll"1995 case 36: 1996 YY_RULE_SETUP 1997 #line 203 "lex.ll" 1937 1998 { KEYWORD_RETURN(CONTINUE); } 1938 1999 YY_BREAK 1939 case 3 5:1940 YY_RULE_SETUP 1941 #line 20 2"lex.ll"2000 case 37: 2001 YY_RULE_SETUP 2002 #line 204 "lex.ll" 1942 2003 { KEYWORD_RETURN(DEFAULT); } 1943 2004 YY_BREAK 1944 case 36: 1945 YY_RULE_SETUP 1946 #line 203 "lex.ll" 2005 case 38: 2006 YY_RULE_SETUP 2007 #line 205 "lex.ll" 2008 { KEYWORD_RETURN(DISABLE); } // CFA 2009 YY_BREAK 2010 case 39: 2011 YY_RULE_SETUP 2012 #line 206 "lex.ll" 1947 2013 { KEYWORD_RETURN(DO); } 1948 2014 YY_BREAK 1949 case 37:1950 YY_RULE_SETUP 1951 #line 20 4"lex.ll"2015 case 40: 2016 YY_RULE_SETUP 2017 #line 207 "lex.ll" 1952 2018 { KEYWORD_RETURN(DOUBLE); } 1953 2019 YY_BREAK 1954 case 38:1955 YY_RULE_SETUP 1956 #line 20 5"lex.ll"2020 case 41: 2021 YY_RULE_SETUP 2022 #line 208 "lex.ll" 1957 2023 { KEYWORD_RETURN(DTYPE); } // CFA 1958 2024 YY_BREAK 1959 case 39:1960 YY_RULE_SETUP 1961 #line 20 6"lex.ll"2025 case 42: 2026 YY_RULE_SETUP 2027 #line 209 "lex.ll" 1962 2028 { KEYWORD_RETURN(ELSE); } 1963 2029 YY_BREAK 1964 case 40: 1965 YY_RULE_SETUP 1966 #line 207 "lex.ll" 2030 case 43: 2031 YY_RULE_SETUP 2032 #line 210 "lex.ll" 2033 { KEYWORD_RETURN(ENABLE); } // CFA 2034 YY_BREAK 2035 case 44: 2036 YY_RULE_SETUP 2037 #line 211 "lex.ll" 1967 2038 { KEYWORD_RETURN(ENUM); } 1968 2039 YY_BREAK 1969 case 4 1:1970 YY_RULE_SETUP 1971 #line 2 08"lex.ll"2040 case 45: 2041 YY_RULE_SETUP 2042 #line 212 "lex.ll" 1972 2043 { KEYWORD_RETURN(EXTENSION); } // GCC 1973 2044 YY_BREAK 1974 case 4 2:1975 YY_RULE_SETUP 1976 #line 2 09"lex.ll"2045 case 46: 2046 YY_RULE_SETUP 2047 #line 213 "lex.ll" 1977 2048 { KEYWORD_RETURN(EXTERN); } 1978 2049 YY_BREAK 1979 case 4 3:1980 YY_RULE_SETUP 1981 #line 21 0"lex.ll"2050 case 47: 2051 YY_RULE_SETUP 2052 #line 214 "lex.ll" 1982 2053 { KEYWORD_RETURN(FALLTHRU); } // CFA 1983 2054 YY_BREAK 1984 case 4 4:1985 YY_RULE_SETUP 1986 #line 21 1"lex.ll"2055 case 48: 2056 YY_RULE_SETUP 2057 #line 215 "lex.ll" 1987 2058 { KEYWORD_RETURN(FINALLY); } // CFA 1988 2059 YY_BREAK 1989 case 4 5:1990 YY_RULE_SETUP 1991 #line 21 2"lex.ll"2060 case 49: 2061 YY_RULE_SETUP 2062 #line 216 "lex.ll" 1992 2063 { KEYWORD_RETURN(FLOAT); } 1993 2064 YY_BREAK 1994 case 46:1995 YY_RULE_SETUP 1996 #line 21 3"lex.ll"2065 case 50: 2066 YY_RULE_SETUP 2067 #line 217 "lex.ll" 1997 2068 { KEYWORD_RETURN(FLOAT); } // GCC 1998 2069 YY_BREAK 1999 case 47:2000 YY_RULE_SETUP 2001 #line 21 4"lex.ll"2070 case 51: 2071 YY_RULE_SETUP 2072 #line 218 "lex.ll" 2002 2073 { KEYWORD_RETURN(FOR); } 2003 2074 YY_BREAK 2004 case 48:2005 YY_RULE_SETUP 2006 #line 21 5"lex.ll"2075 case 52: 2076 YY_RULE_SETUP 2077 #line 219 "lex.ll" 2007 2078 { KEYWORD_RETURN(FORALL); } // CFA 2008 2079 YY_BREAK 2009 case 49:2010 YY_RULE_SETUP 2011 #line 2 16"lex.ll"2080 case 53: 2081 YY_RULE_SETUP 2082 #line 220 "lex.ll" 2012 2083 { KEYWORD_RETURN(FORTRAN); } 2013 2084 YY_BREAK 2014 case 5 0:2015 YY_RULE_SETUP 2016 #line 2 17"lex.ll"2085 case 54: 2086 YY_RULE_SETUP 2087 #line 221 "lex.ll" 2017 2088 { KEYWORD_RETURN(FTYPE); } // CFA 2018 2089 YY_BREAK 2019 case 5 1:2020 YY_RULE_SETUP 2021 #line 2 18"lex.ll"2090 case 55: 2091 YY_RULE_SETUP 2092 #line 222 "lex.ll" 2022 2093 { KEYWORD_RETURN(GENERIC); } // C11 2023 2094 YY_BREAK 2024 case 5 2:2025 YY_RULE_SETUP 2026 #line 2 19"lex.ll"2095 case 56: 2096 YY_RULE_SETUP 2097 #line 223 "lex.ll" 2027 2098 { KEYWORD_RETURN(GOTO); } 2028 2099 YY_BREAK 2029 case 5 3:2030 YY_RULE_SETUP 2031 #line 22 0"lex.ll"2100 case 57: 2101 YY_RULE_SETUP 2102 #line 224 "lex.ll" 2032 2103 { KEYWORD_RETURN(IF); } 2033 2104 YY_BREAK 2034 case 5 4:2035 YY_RULE_SETUP 2036 #line 22 1"lex.ll"2105 case 58: 2106 YY_RULE_SETUP 2107 #line 225 "lex.ll" 2037 2108 { KEYWORD_RETURN(IMAGINARY); } // C99 2038 2109 YY_BREAK 2039 case 5 5:2040 YY_RULE_SETUP 2041 #line 22 2"lex.ll"2110 case 59: 2111 YY_RULE_SETUP 2112 #line 226 "lex.ll" 2042 2113 { KEYWORD_RETURN(IMAGINARY); } // GCC 2043 2114 YY_BREAK 2044 case 56:2045 YY_RULE_SETUP 2046 #line 22 3"lex.ll"2115 case 60: 2116 YY_RULE_SETUP 2117 #line 227 "lex.ll" 2047 2118 { KEYWORD_RETURN(IMAGINARY); } // GCC 2048 2119 YY_BREAK 2049 case 57:2050 YY_RULE_SETUP 2051 #line 22 4"lex.ll"2120 case 61: 2121 YY_RULE_SETUP 2122 #line 228 "lex.ll" 2052 2123 { KEYWORD_RETURN(INLINE); } // C99 2053 2124 YY_BREAK 2054 case 58:2055 YY_RULE_SETUP 2056 #line 22 5"lex.ll"2125 case 62: 2126 YY_RULE_SETUP 2127 #line 229 "lex.ll" 2057 2128 { KEYWORD_RETURN(INLINE); } // GCC 2058 2129 YY_BREAK 2059 case 59:2060 YY_RULE_SETUP 2061 #line 2 26"lex.ll"2130 case 63: 2131 YY_RULE_SETUP 2132 #line 230 "lex.ll" 2062 2133 { KEYWORD_RETURN(INLINE); } // GCC 2063 2134 YY_BREAK 2064 case 6 0:2065 YY_RULE_SETUP 2066 #line 2 27"lex.ll"2135 case 64: 2136 YY_RULE_SETUP 2137 #line 231 "lex.ll" 2067 2138 { KEYWORD_RETURN(INT); } 2068 2139 YY_BREAK 2069 case 6 1:2070 YY_RULE_SETUP 2071 #line 2 28"lex.ll"2140 case 65: 2141 YY_RULE_SETUP 2142 #line 232 "lex.ll" 2072 2143 { KEYWORD_RETURN(INT); } // GCC 2073 2144 YY_BREAK 2074 case 6 2:2075 YY_RULE_SETUP 2076 #line 2 29"lex.ll"2145 case 66: 2146 YY_RULE_SETUP 2147 #line 233 "lex.ll" 2077 2148 { KEYWORD_RETURN(LABEL); } // GCC 2078 2149 YY_BREAK 2079 case 6 3:2080 YY_RULE_SETUP 2081 #line 23 0"lex.ll"2150 case 67: 2151 YY_RULE_SETUP 2152 #line 234 "lex.ll" 2082 2153 { KEYWORD_RETURN(LONG); } 2083 2154 YY_BREAK 2084 case 6 4:2085 YY_RULE_SETUP 2086 #line 23 1"lex.ll"2155 case 68: 2156 YY_RULE_SETUP 2157 #line 235 "lex.ll" 2087 2158 { KEYWORD_RETURN(LVALUE); } // CFA 2088 2159 YY_BREAK 2089 case 6 5:2090 YY_RULE_SETUP 2091 #line 23 2"lex.ll"2160 case 69: 2161 YY_RULE_SETUP 2162 #line 236 "lex.ll" 2092 2163 { KEYWORD_RETURN(NORETURN); } // C11 2093 2164 YY_BREAK 2094 case 66:2095 YY_RULE_SETUP 2096 #line 23 3"lex.ll"2165 case 70: 2166 YY_RULE_SETUP 2167 #line 237 "lex.ll" 2097 2168 { KEYWORD_RETURN(REGISTER); } 2098 2169 YY_BREAK 2099 case 67:2100 YY_RULE_SETUP 2101 #line 23 4"lex.ll"2170 case 71: 2171 YY_RULE_SETUP 2172 #line 238 "lex.ll" 2102 2173 { KEYWORD_RETURN(RESTRICT); } // C99 2103 2174 YY_BREAK 2104 case 68:2105 YY_RULE_SETUP 2106 #line 23 5"lex.ll"2175 case 72: 2176 YY_RULE_SETUP 2177 #line 239 "lex.ll" 2107 2178 { KEYWORD_RETURN(RESTRICT); } // GCC 2108 2179 YY_BREAK 2109 case 69:2110 YY_RULE_SETUP 2111 #line 2 36"lex.ll"2180 case 73: 2181 YY_RULE_SETUP 2182 #line 240 "lex.ll" 2112 2183 { KEYWORD_RETURN(RESTRICT); } // GCC 2113 2184 YY_BREAK 2114 case 7 0:2115 YY_RULE_SETUP 2116 #line 2 37"lex.ll"2185 case 74: 2186 YY_RULE_SETUP 2187 #line 241 "lex.ll" 2117 2188 { KEYWORD_RETURN(RETURN); } 2118 2189 YY_BREAK 2119 case 7 1:2120 YY_RULE_SETUP 2121 #line 2 38"lex.ll"2190 case 75: 2191 YY_RULE_SETUP 2192 #line 242 "lex.ll" 2122 2193 { KEYWORD_RETURN(SHORT); } 2123 2194 YY_BREAK 2124 case 7 2:2125 YY_RULE_SETUP 2126 #line 2 39"lex.ll"2195 case 76: 2196 YY_RULE_SETUP 2197 #line 243 "lex.ll" 2127 2198 { KEYWORD_RETURN(SIGNED); } 2128 2199 YY_BREAK 2129 case 7 3:2130 YY_RULE_SETUP 2131 #line 24 0"lex.ll"2200 case 77: 2201 YY_RULE_SETUP 2202 #line 244 "lex.ll" 2132 2203 { KEYWORD_RETURN(SIGNED); } // GCC 2133 2204 YY_BREAK 2134 case 7 4:2135 YY_RULE_SETUP 2136 #line 24 1"lex.ll"2205 case 78: 2206 YY_RULE_SETUP 2207 #line 245 "lex.ll" 2137 2208 { KEYWORD_RETURN(SIGNED); } // GCC 2138 2209 YY_BREAK 2139 case 7 5:2140 YY_RULE_SETUP 2141 #line 24 2"lex.ll"2210 case 79: 2211 YY_RULE_SETUP 2212 #line 246 "lex.ll" 2142 2213 { KEYWORD_RETURN(SIZEOF); } 2143 2214 YY_BREAK 2144 case 76:2145 YY_RULE_SETUP 2146 #line 24 3"lex.ll"2215 case 80: 2216 YY_RULE_SETUP 2217 #line 247 "lex.ll" 2147 2218 { KEYWORD_RETURN(STATIC); } 2148 2219 YY_BREAK 2149 case 77:2150 YY_RULE_SETUP 2151 #line 24 4"lex.ll"2220 case 81: 2221 YY_RULE_SETUP 2222 #line 248 "lex.ll" 2152 2223 { KEYWORD_RETURN(STATICASSERT); } // C11 2153 2224 YY_BREAK 2154 case 78:2155 YY_RULE_SETUP 2156 #line 24 5"lex.ll"2225 case 82: 2226 YY_RULE_SETUP 2227 #line 249 "lex.ll" 2157 2228 { KEYWORD_RETURN(STRUCT); } 2158 2229 YY_BREAK 2159 case 79:2160 YY_RULE_SETUP 2161 #line 2 46"lex.ll"2230 case 83: 2231 YY_RULE_SETUP 2232 #line 250 "lex.ll" 2162 2233 { KEYWORD_RETURN(SWITCH); } 2163 2234 YY_BREAK 2164 case 8 0:2165 YY_RULE_SETUP 2166 #line 2 47"lex.ll"2235 case 84: 2236 YY_RULE_SETUP 2237 #line 251 "lex.ll" 2167 2238 { KEYWORD_RETURN(THREADLOCAL); } // C11 2168 2239 YY_BREAK 2169 case 8 1:2170 YY_RULE_SETUP 2171 #line 2 48"lex.ll"2240 case 85: 2241 YY_RULE_SETUP 2242 #line 252 "lex.ll" 2172 2243 { KEYWORD_RETURN(THROW); } // CFA 2173 2244 YY_BREAK 2174 case 82: 2175 YY_RULE_SETUP 2176 #line 249 "lex.ll" 2245 case 86: 2246 YY_RULE_SETUP 2247 #line 253 "lex.ll" 2248 { KEYWORD_RETURN(THROWRESUME); } // CFA 2249 YY_BREAK 2250 case 87: 2251 YY_RULE_SETUP 2252 #line 254 "lex.ll" 2177 2253 { KEYWORD_RETURN(TRY); } // CFA 2178 2254 YY_BREAK 2179 case 8 3:2180 YY_RULE_SETUP 2181 #line 25 0"lex.ll"2255 case 88: 2256 YY_RULE_SETUP 2257 #line 255 "lex.ll" 2182 2258 { KEYWORD_RETURN(TYPE); } // CFA 2183 2259 YY_BREAK 2184 case 8 4:2185 YY_RULE_SETUP 2186 #line 25 1"lex.ll"2260 case 89: 2261 YY_RULE_SETUP 2262 #line 256 "lex.ll" 2187 2263 { KEYWORD_RETURN(TYPEDEF); } 2188 2264 YY_BREAK 2189 case 85:2190 YY_RULE_SETUP 2191 #line 25 2"lex.ll"2265 case 90: 2266 YY_RULE_SETUP 2267 #line 257 "lex.ll" 2192 2268 { KEYWORD_RETURN(TYPEOF); } // GCC 2193 2269 YY_BREAK 2194 case 86:2195 YY_RULE_SETUP 2196 #line 25 3"lex.ll"2270 case 91: 2271 YY_RULE_SETUP 2272 #line 258 "lex.ll" 2197 2273 { KEYWORD_RETURN(TYPEOF); } // GCC 2198 2274 YY_BREAK 2199 case 87:2200 YY_RULE_SETUP 2201 #line 25 4"lex.ll"2275 case 92: 2276 YY_RULE_SETUP 2277 #line 259 "lex.ll" 2202 2278 { KEYWORD_RETURN(TYPEOF); } // GCC 2203 2279 YY_BREAK 2204 case 88:2205 YY_RULE_SETUP 2206 #line 2 55"lex.ll"2280 case 93: 2281 YY_RULE_SETUP 2282 #line 260 "lex.ll" 2207 2283 { KEYWORD_RETURN(UNION); } 2208 2284 YY_BREAK 2209 case 89:2210 YY_RULE_SETUP 2211 #line 2 56"lex.ll"2285 case 94: 2286 YY_RULE_SETUP 2287 #line 261 "lex.ll" 2212 2288 { KEYWORD_RETURN(UNSIGNED); } 2213 2289 YY_BREAK 2214 case 9 0:2215 YY_RULE_SETUP 2216 #line 2 57"lex.ll"2290 case 95: 2291 YY_RULE_SETUP 2292 #line 262 "lex.ll" 2217 2293 { KEYWORD_RETURN(VOID); } 2218 2294 YY_BREAK 2219 case 9 1:2220 YY_RULE_SETUP 2221 #line 2 58"lex.ll"2295 case 96: 2296 YY_RULE_SETUP 2297 #line 263 "lex.ll" 2222 2298 { KEYWORD_RETURN(VOLATILE); } 2223 2299 YY_BREAK 2224 case 9 2:2225 YY_RULE_SETUP 2226 #line 2 59"lex.ll"2300 case 97: 2301 YY_RULE_SETUP 2302 #line 264 "lex.ll" 2227 2303 { KEYWORD_RETURN(VOLATILE); } // GCC 2228 2304 YY_BREAK 2229 case 9 3:2230 YY_RULE_SETUP 2231 #line 26 0"lex.ll"2305 case 98: 2306 YY_RULE_SETUP 2307 #line 265 "lex.ll" 2232 2308 { KEYWORD_RETURN(VOLATILE); } // GCC 2233 2309 YY_BREAK 2234 case 9 4:2235 YY_RULE_SETUP 2236 #line 26 1"lex.ll"2310 case 99: 2311 YY_RULE_SETUP 2312 #line 266 "lex.ll" 2237 2313 { KEYWORD_RETURN(WHILE); } 2238 2314 YY_BREAK 2239 2315 /* identifier */ 2240 case 95:2241 YY_RULE_SETUP 2242 #line 26 4"lex.ll"2316 case 100: 2317 YY_RULE_SETUP 2318 #line 269 "lex.ll" 2243 2319 { IDENTIFIER_RETURN(); } 2244 2320 YY_BREAK 2245 case 96:2246 YY_RULE_SETUP 2247 #line 2 65"lex.ll"2321 case 101: 2322 YY_RULE_SETUP 2323 #line 270 "lex.ll" 2248 2324 { ATTRIBUTE_RETURN(); } 2249 2325 YY_BREAK 2250 case 97:2251 YY_RULE_SETUP 2252 #line 2 66"lex.ll"2326 case 102: 2327 YY_RULE_SETUP 2328 #line 271 "lex.ll" 2253 2329 { BEGIN BKQUOTE; } 2254 2330 YY_BREAK 2255 case 98:2256 YY_RULE_SETUP 2257 #line 2 67"lex.ll"2331 case 103: 2332 YY_RULE_SETUP 2333 #line 272 "lex.ll" 2258 2334 { IDENTIFIER_RETURN(); } 2259 2335 YY_BREAK 2260 case 99:2261 YY_RULE_SETUP 2262 #line 2 68"lex.ll"2336 case 104: 2337 YY_RULE_SETUP 2338 #line 273 "lex.ll" 2263 2339 { BEGIN 0; } 2264 2340 YY_BREAK 2265 2341 /* numeric constants */ 2266 case 10 0:2267 YY_RULE_SETUP 2268 #line 27 1"lex.ll"2342 case 105: 2343 YY_RULE_SETUP 2344 #line 276 "lex.ll" 2269 2345 { NUMERIC_RETURN(ZERO); } // CFA 2270 2346 YY_BREAK 2271 case 10 1:2272 YY_RULE_SETUP 2273 #line 27 2"lex.ll"2347 case 106: 2348 YY_RULE_SETUP 2349 #line 277 "lex.ll" 2274 2350 { NUMERIC_RETURN(ONE); } // CFA 2275 2351 YY_BREAK 2276 case 10 2:2277 YY_RULE_SETUP 2278 #line 27 3"lex.ll"2352 case 107: 2353 YY_RULE_SETUP 2354 #line 278 "lex.ll" 2279 2355 { NUMERIC_RETURN(INTEGERconstant); } 2280 2356 YY_BREAK 2281 case 10 3:2282 YY_RULE_SETUP 2283 #line 27 4"lex.ll"2357 case 108: 2358 YY_RULE_SETUP 2359 #line 279 "lex.ll" 2284 2360 { NUMERIC_RETURN(INTEGERconstant); } 2285 2361 YY_BREAK 2286 case 10 4:2287 YY_RULE_SETUP 2288 #line 2 75"lex.ll"2362 case 109: 2363 YY_RULE_SETUP 2364 #line 280 "lex.ll" 2289 2365 { NUMERIC_RETURN(INTEGERconstant); } 2290 2366 YY_BREAK 2291 case 1 05:2292 YY_RULE_SETUP 2293 #line 2 76"lex.ll"2367 case 110: 2368 YY_RULE_SETUP 2369 #line 281 "lex.ll" 2294 2370 { NUMERIC_RETURN(FLOATINGconstant); } 2295 2371 YY_BREAK 2296 case 1 06:2297 YY_RULE_SETUP 2298 #line 2 77"lex.ll"2372 case 111: 2373 YY_RULE_SETUP 2374 #line 282 "lex.ll" 2299 2375 { NUMERIC_RETURN(FLOATINGconstant); } 2300 2376 YY_BREAK 2301 2377 /* character constant, allows empty value */ 2302 case 1 07:2303 YY_RULE_SETUP 2304 #line 28 0"lex.ll"2378 case 112: 2379 YY_RULE_SETUP 2380 #line 285 "lex.ll" 2305 2381 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2306 2382 YY_BREAK 2307 case 1 08:2308 YY_RULE_SETUP 2309 #line 28 1"lex.ll"2383 case 113: 2384 YY_RULE_SETUP 2385 #line 286 "lex.ll" 2310 2386 { *strtext += std::string( yytext ); } 2311 2387 YY_BREAK 2312 case 1 09:2313 /* rule 1 09can match eol */2314 YY_RULE_SETUP 2315 #line 28 2"lex.ll"2388 case 114: 2389 /* rule 114 can match eol */ 2390 YY_RULE_SETUP 2391 #line 287 "lex.ll" 2316 2392 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); } 2317 2393 YY_BREAK 2318 2394 /* ' stop highlighting */ 2319 2395 /* string constant */ 2320 case 11 0:2321 YY_RULE_SETUP 2322 #line 2 86"lex.ll"2396 case 115: 2397 YY_RULE_SETUP 2398 #line 291 "lex.ll" 2323 2399 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2324 2400 YY_BREAK 2325 case 11 1:2326 YY_RULE_SETUP 2327 #line 2 87"lex.ll"2401 case 116: 2402 YY_RULE_SETUP 2403 #line 292 "lex.ll" 2328 2404 { *strtext += std::string( yytext ); } 2329 2405 YY_BREAK 2330 case 11 2:2331 /* rule 11 2can match eol */2332 YY_RULE_SETUP 2333 #line 2 88"lex.ll"2406 case 117: 2407 /* rule 117 can match eol */ 2408 YY_RULE_SETUP 2409 #line 293 "lex.ll" 2334 2410 { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); } 2335 2411 YY_BREAK 2336 2412 /* " stop highlighting */ 2337 2413 /* common character/string constant */ 2338 case 11 3:2339 YY_RULE_SETUP 2340 #line 29 2"lex.ll"2414 case 118: 2415 YY_RULE_SETUP 2416 #line 297 "lex.ll" 2341 2417 { rm_underscore(); *strtext += std::string( yytext ); } 2342 2418 YY_BREAK 2343 case 11 4:2344 /* rule 11 4can match eol */2345 YY_RULE_SETUP 2346 #line 29 3"lex.ll"2419 case 119: 2420 /* rule 119 can match eol */ 2421 YY_RULE_SETUP 2422 #line 298 "lex.ll" 2347 2423 {} // continuation (ALSO HANDLED BY CPP) 2348 2424 YY_BREAK 2349 case 1 15:2350 YY_RULE_SETUP 2351 #line 29 4"lex.ll"2425 case 120: 2426 YY_RULE_SETUP 2427 #line 299 "lex.ll" 2352 2428 { *strtext += std::string( yytext ); } // unknown escape character 2353 2429 YY_BREAK 2354 2430 /* punctuation */ 2355 case 116:2356 YY_RULE_SETUP2357 #line 297 "lex.ll"2358 { ASCIIOP_RETURN(); }2359 YY_BREAK2360 case 117:2361 YY_RULE_SETUP2362 #line 298 "lex.ll"2363 { ASCIIOP_RETURN(); }2364 YY_BREAK2365 case 118:2366 YY_RULE_SETUP2367 #line 299 "lex.ll"2368 { ASCIIOP_RETURN(); }2369 YY_BREAK2370 case 119:2371 YY_RULE_SETUP2372 #line 300 "lex.ll"2373 { ASCIIOP_RETURN(); }2374 YY_BREAK2375 case 120:2376 YY_RULE_SETUP2377 #line 301 "lex.ll"2378 { ASCIIOP_RETURN(); }2379 YY_BREAK2380 2431 case 121: 2381 2432 YY_RULE_SETUP … … 2386 2437 YY_RULE_SETUP 2387 2438 #line 303 "lex.ll" 2388 { ASCIIOP_RETURN(); } // also operator2439 { ASCIIOP_RETURN(); } 2389 2440 YY_BREAK 2390 2441 case 123: … … 2401 2452 YY_RULE_SETUP 2402 2453 #line 306 "lex.ll" 2454 { ASCIIOP_RETURN(); } 2455 YY_BREAK 2456 case 126: 2457 YY_RULE_SETUP 2458 #line 307 "lex.ll" 2459 { ASCIIOP_RETURN(); } 2460 YY_BREAK 2461 case 127: 2462 YY_RULE_SETUP 2463 #line 308 "lex.ll" 2403 2464 { ASCIIOP_RETURN(); } // also operator 2404 2465 YY_BREAK 2405 case 126: 2406 YY_RULE_SETUP 2407 #line 307 "lex.ll" 2466 case 128: 2467 YY_RULE_SETUP 2468 #line 309 "lex.ll" 2469 { ASCIIOP_RETURN(); } 2470 YY_BREAK 2471 case 129: 2472 YY_RULE_SETUP 2473 #line 310 "lex.ll" 2474 { ASCIIOP_RETURN(); } 2475 YY_BREAK 2476 case 130: 2477 YY_RULE_SETUP 2478 #line 311 "lex.ll" 2479 { ASCIIOP_RETURN(); } // also operator 2480 YY_BREAK 2481 case 131: 2482 YY_RULE_SETUP 2483 #line 312 "lex.ll" 2408 2484 { NAMEDOP_RETURN(ELLIPSIS); } 2409 2485 YY_BREAK 2410 2486 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */ 2411 case 1 27:2412 YY_RULE_SETUP 2413 #line 31 0"lex.ll"2487 case 132: 2488 YY_RULE_SETUP 2489 #line 315 "lex.ll" 2414 2490 { RETURN_VAL('['); } 2415 2491 YY_BREAK 2416 case 1 28:2417 YY_RULE_SETUP 2418 #line 31 1"lex.ll"2492 case 133: 2493 YY_RULE_SETUP 2494 #line 316 "lex.ll" 2419 2495 { RETURN_VAL(']'); } 2420 2496 YY_BREAK 2421 case 1 29:2422 YY_RULE_SETUP 2423 #line 31 2"lex.ll"2497 case 134: 2498 YY_RULE_SETUP 2499 #line 317 "lex.ll" 2424 2500 { RETURN_VAL('{'); } 2425 2501 YY_BREAK 2426 case 13 0:2427 YY_RULE_SETUP 2428 #line 31 3"lex.ll"2502 case 135: 2503 YY_RULE_SETUP 2504 #line 318 "lex.ll" 2429 2505 { RETURN_VAL('}'); } 2430 2506 YY_BREAK 2431 2507 /* operators */ 2432 case 131:2433 YY_RULE_SETUP2434 #line 316 "lex.ll"2435 { ASCIIOP_RETURN(); }2436 YY_BREAK2437 case 132:2438 YY_RULE_SETUP2439 #line 317 "lex.ll"2440 { ASCIIOP_RETURN(); }2441 YY_BREAK2442 case 133:2443 YY_RULE_SETUP2444 #line 318 "lex.ll"2445 { ASCIIOP_RETURN(); }2446 YY_BREAK2447 case 134:2448 YY_RULE_SETUP2449 #line 319 "lex.ll"2450 { ASCIIOP_RETURN(); }2451 YY_BREAK2452 case 135:2453 YY_RULE_SETUP2454 #line 320 "lex.ll"2455 { ASCIIOP_RETURN(); }2456 YY_BREAK2457 2508 case 136: 2458 2509 YY_RULE_SETUP … … 2502 2553 case 145: 2503 2554 YY_RULE_SETUP 2555 #line 330 "lex.ll" 2556 { ASCIIOP_RETURN(); } 2557 YY_BREAK 2558 case 146: 2559 YY_RULE_SETUP 2504 2560 #line 331 "lex.ll" 2561 { ASCIIOP_RETURN(); } 2562 YY_BREAK 2563 case 147: 2564 YY_RULE_SETUP 2565 #line 332 "lex.ll" 2566 { ASCIIOP_RETURN(); } 2567 YY_BREAK 2568 case 148: 2569 YY_RULE_SETUP 2570 #line 333 "lex.ll" 2571 { ASCIIOP_RETURN(); } 2572 YY_BREAK 2573 case 149: 2574 YY_RULE_SETUP 2575 #line 334 "lex.ll" 2576 { ASCIIOP_RETURN(); } 2577 YY_BREAK 2578 case 150: 2579 YY_RULE_SETUP 2580 #line 336 "lex.ll" 2505 2581 { NAMEDOP_RETURN(ICR); } 2506 2582 YY_BREAK 2507 case 1 46:2508 YY_RULE_SETUP 2509 #line 33 2"lex.ll"2583 case 151: 2584 YY_RULE_SETUP 2585 #line 337 "lex.ll" 2510 2586 { NAMEDOP_RETURN(DECR); } 2511 2587 YY_BREAK 2512 case 1 47:2513 YY_RULE_SETUP 2514 #line 33 3"lex.ll"2588 case 152: 2589 YY_RULE_SETUP 2590 #line 338 "lex.ll" 2515 2591 { NAMEDOP_RETURN(EQ); } 2516 2592 YY_BREAK 2517 case 1 48:2518 YY_RULE_SETUP 2519 #line 33 4"lex.ll"2593 case 153: 2594 YY_RULE_SETUP 2595 #line 339 "lex.ll" 2520 2596 { NAMEDOP_RETURN(NE); } 2521 2597 YY_BREAK 2522 case 1 49:2523 YY_RULE_SETUP 2524 #line 3 35"lex.ll"2598 case 154: 2599 YY_RULE_SETUP 2600 #line 340 "lex.ll" 2525 2601 { NAMEDOP_RETURN(LS); } 2526 2602 YY_BREAK 2527 case 15 0:2528 YY_RULE_SETUP 2529 #line 3 36"lex.ll"2603 case 155: 2604 YY_RULE_SETUP 2605 #line 341 "lex.ll" 2530 2606 { NAMEDOP_RETURN(RS); } 2531 2607 YY_BREAK 2532 case 15 1:2533 YY_RULE_SETUP 2534 #line 3 37"lex.ll"2608 case 156: 2609 YY_RULE_SETUP 2610 #line 342 "lex.ll" 2535 2611 { NAMEDOP_RETURN(LE); } 2536 2612 YY_BREAK 2537 case 15 2:2538 YY_RULE_SETUP 2539 #line 3 38"lex.ll"2613 case 157: 2614 YY_RULE_SETUP 2615 #line 343 "lex.ll" 2540 2616 { NAMEDOP_RETURN(GE); } 2541 2617 YY_BREAK 2542 case 15 3:2543 YY_RULE_SETUP 2544 #line 3 39"lex.ll"2618 case 158: 2619 YY_RULE_SETUP 2620 #line 344 "lex.ll" 2545 2621 { NAMEDOP_RETURN(ANDAND); } 2546 2622 YY_BREAK 2547 case 15 4:2548 YY_RULE_SETUP 2549 #line 34 0"lex.ll"2623 case 159: 2624 YY_RULE_SETUP 2625 #line 345 "lex.ll" 2550 2626 { NAMEDOP_RETURN(OROR); } 2551 2627 YY_BREAK 2552 case 1 55:2553 YY_RULE_SETUP 2554 #line 34 1"lex.ll"2628 case 160: 2629 YY_RULE_SETUP 2630 #line 346 "lex.ll" 2555 2631 { NAMEDOP_RETURN(ARROW); } 2556 2632 YY_BREAK 2557 case 1 56:2558 YY_RULE_SETUP 2559 #line 34 2"lex.ll"2633 case 161: 2634 YY_RULE_SETUP 2635 #line 347 "lex.ll" 2560 2636 { NAMEDOP_RETURN(PLUSassign); } 2561 2637 YY_BREAK 2562 case 1 57:2563 YY_RULE_SETUP 2564 #line 34 3"lex.ll"2638 case 162: 2639 YY_RULE_SETUP 2640 #line 348 "lex.ll" 2565 2641 { NAMEDOP_RETURN(MINUSassign); } 2566 2642 YY_BREAK 2567 case 1 58:2568 YY_RULE_SETUP 2569 #line 34 4"lex.ll"2643 case 163: 2644 YY_RULE_SETUP 2645 #line 349 "lex.ll" 2570 2646 { NAMEDOP_RETURN(MULTassign); } 2571 2647 YY_BREAK 2572 case 1 59:2573 YY_RULE_SETUP 2574 #line 3 45"lex.ll"2648 case 164: 2649 YY_RULE_SETUP 2650 #line 350 "lex.ll" 2575 2651 { NAMEDOP_RETURN(DIVassign); } 2576 2652 YY_BREAK 2577 case 16 0:2578 YY_RULE_SETUP 2579 #line 3 46"lex.ll"2653 case 165: 2654 YY_RULE_SETUP 2655 #line 351 "lex.ll" 2580 2656 { NAMEDOP_RETURN(MODassign); } 2581 2657 YY_BREAK 2582 case 16 1:2583 YY_RULE_SETUP 2584 #line 3 47"lex.ll"2658 case 166: 2659 YY_RULE_SETUP 2660 #line 352 "lex.ll" 2585 2661 { NAMEDOP_RETURN(ANDassign); } 2586 2662 YY_BREAK 2587 case 16 2:2588 YY_RULE_SETUP 2589 #line 3 48"lex.ll"2663 case 167: 2664 YY_RULE_SETUP 2665 #line 353 "lex.ll" 2590 2666 { NAMEDOP_RETURN(ORassign); } 2591 2667 YY_BREAK 2592 case 16 3:2593 YY_RULE_SETUP 2594 #line 3 49"lex.ll"2668 case 168: 2669 YY_RULE_SETUP 2670 #line 354 "lex.ll" 2595 2671 { NAMEDOP_RETURN(ERassign); } 2596 2672 YY_BREAK 2597 case 16 4:2598 YY_RULE_SETUP 2599 #line 35 0"lex.ll"2673 case 169: 2674 YY_RULE_SETUP 2675 #line 355 "lex.ll" 2600 2676 { NAMEDOP_RETURN(LSassign); } 2601 2677 YY_BREAK 2602 case 1 65:2603 YY_RULE_SETUP 2604 #line 35 1"lex.ll"2678 case 170: 2679 YY_RULE_SETUP 2680 #line 356 "lex.ll" 2605 2681 { NAMEDOP_RETURN(RSassign); } 2606 2682 YY_BREAK 2683 case 171: 2684 YY_RULE_SETUP 2685 #line 358 "lex.ll" 2686 { NAMEDOP_RETURN(ATassign); } 2687 YY_BREAK 2607 2688 /* CFA, operator identifier */ 2608 case 1 66:2609 YY_RULE_SETUP 2610 #line 3 54"lex.ll"2689 case 172: 2690 YY_RULE_SETUP 2691 #line 361 "lex.ll" 2611 2692 { IDENTIFIER_RETURN(); } // unary 2612 2693 YY_BREAK 2613 case 1 67:2614 YY_RULE_SETUP 2615 #line 3 55"lex.ll"2694 case 173: 2695 YY_RULE_SETUP 2696 #line 362 "lex.ll" 2616 2697 { IDENTIFIER_RETURN(); } 2617 2698 YY_BREAK 2618 case 168: 2619 YY_RULE_SETUP 2620 #line 356 "lex.ll" 2699 case 174: 2700 YY_RULE_SETUP 2701 #line 363 "lex.ll" 2702 { IDENTIFIER_RETURN(); } 2703 YY_BREAK 2704 case 175: 2705 YY_RULE_SETUP 2706 #line 364 "lex.ll" 2621 2707 { IDENTIFIER_RETURN(); } // binary 2622 2708 YY_BREAK … … 2647 2733 an argument list. 2648 2734 */ 2649 case 1 69:2650 YY_RULE_SETUP 2651 #line 3 83"lex.ll"2735 case 176: 2736 YY_RULE_SETUP 2737 #line 391 "lex.ll" 2652 2738 { 2653 2739 // 1 or 2 character unary operator ? … … 2662 2748 YY_BREAK 2663 2749 /* unknown characters */ 2664 case 17 0:2665 YY_RULE_SETUP 2666 #line 395"lex.ll"2750 case 177: 2751 YY_RULE_SETUP 2752 #line 403 "lex.ll" 2667 2753 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 2668 2754 YY_BREAK 2669 case 17 1:2670 YY_RULE_SETUP 2671 #line 397"lex.ll"2755 case 178: 2756 YY_RULE_SETUP 2757 #line 405 "lex.ll" 2672 2758 ECHO; 2673 2759 YY_BREAK 2674 #line 2 675"Parser/lex.cc"2760 #line 2761 "Parser/lex.cc" 2675 2761 case YY_STATE_EOF(INITIAL): 2676 2762 case YY_STATE_EOF(COMMENT): … … 2969 3055 { 2970 3056 yy_current_state = (int) yy_def[yy_current_state]; 2971 if ( yy_current_state >= 8 26)3057 if ( yy_current_state >= 852 ) 2972 3058 yy_c = yy_meta[(unsigned int) yy_c]; 2973 3059 } … … 2997 3083 { 2998 3084 yy_current_state = (int) yy_def[yy_current_state]; 2999 if ( yy_current_state >= 8 26)3085 if ( yy_current_state >= 852 ) 3000 3086 yy_c = yy_meta[(unsigned int) yy_c]; 3001 3087 } 3002 3088 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 3003 yy_is_jam = (yy_current_state == 8 25);3089 yy_is_jam = (yy_current_state == 851); 3004 3090 3005 3091 return yy_is_jam ? 0 : yy_current_state; … … 3647 3733 #define YYTABLES_NAME "yytables" 3648 3734 3649 #line 397"lex.ll"3735 #line 405 "lex.ll" 3650 3736 3651 3737 -
src/Parser/lex.ll
r698664b3 rd2ded3e7 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Fri Jun 19 11:10:14201513 * Update Count : 39212 * Last Modified On : Thu Oct 8 16:13:07 2015 13 * Update Count : 404 14 14 */ 15 15 … … 182 182 __asm { KEYWORD_RETURN(ASM); } // GCC 183 183 __asm__ { KEYWORD_RETURN(ASM); } // GCC 184 _At { KEYWORD_RETURN(AT); } // CFA 184 185 _Atomic { KEYWORD_RETURN(ATOMIC); } // C11 185 186 __attribute { KEYWORD_RETURN(ATTRIBUTE); } // GCC … … 190 191 case { KEYWORD_RETURN(CASE); } 191 192 catch { KEYWORD_RETURN(CATCH); } // CFA 193 catchResume { KEYWORD_RETURN(CATCHRESUME); } // CFA 192 194 char { KEYWORD_RETURN(CHAR); } 193 195 choose { KEYWORD_RETURN(CHOOSE); } // CFA … … 201 203 continue { KEYWORD_RETURN(CONTINUE); } 202 204 default { KEYWORD_RETURN(DEFAULT); } 205 disable { KEYWORD_RETURN(DISABLE); } // CFA 203 206 do { KEYWORD_RETURN(DO); } 204 207 double { KEYWORD_RETURN(DOUBLE); } 205 208 dtype { KEYWORD_RETURN(DTYPE); } // CFA 206 209 else { KEYWORD_RETURN(ELSE); } 210 enable { KEYWORD_RETURN(ENABLE); } // CFA 207 211 enum { KEYWORD_RETURN(ENUM); } 208 212 __extension__ { KEYWORD_RETURN(EXTENSION); } // GCC … … 247 251 _Thread_local { KEYWORD_RETURN(THREADLOCAL); } // C11 248 252 throw { KEYWORD_RETURN(THROW); } // CFA 253 throwResume { KEYWORD_RETURN(THROWRESUME); } // CFA 249 254 try { KEYWORD_RETURN(TRY); } // CFA 250 255 type { KEYWORD_RETURN(TYPE); } // CFA … … 351 356 ">>=" { NAMEDOP_RETURN(RSassign); } 352 357 358 "@=" { NAMEDOP_RETURN(ATassign); } 359 353 360 /* CFA, operator identifier */ 354 361 {op_unary}"?" { IDENTIFIER_RETURN(); } // unary 355 362 "?"({op_unary_pre_post}|"()"|"[?]"|"{}") { IDENTIFIER_RETURN(); } 363 "^?{}" { IDENTIFIER_RETURN(); } 356 364 "?"{op_binary_over}"?" { IDENTIFIER_RETURN(); } // binary 357 365 /* … … 381 389 an argument list. 382 390 */ 383 {op_unary}"?"( ({op_unary_pre_post}|"[?]")|({op_binary_over}"?")) {391 {op_unary}"?"({op_unary_pre_post}|"[?]"|{op_binary_over}"?") { 384 392 // 1 or 2 character unary operator ? 385 393 int i = yytext[1] == '?' ? 1 : 2; -
src/Parser/parser.cc
r698664b3 rd2ded3e7 166 166 RETURN = 305, 167 167 CHOOSE = 306, 168 FALLTHRU = 307, 169 TRY = 308, 170 CATCH = 309, 171 FINALLY = 310, 172 THROW = 311, 173 ASM = 312, 174 ALIGNAS = 313, 175 ALIGNOF = 314, 176 ATOMIC = 315, 177 GENERIC = 316, 178 NORETURN = 317, 179 STATICASSERT = 318, 180 THREADLOCAL = 319, 181 IDENTIFIER = 320, 182 QUOTED_IDENTIFIER = 321, 183 TYPEDEFname = 322, 184 TYPEGENname = 323, 185 ATTR_IDENTIFIER = 324, 186 ATTR_TYPEDEFname = 325, 187 ATTR_TYPEGENname = 326, 188 INTEGERconstant = 327, 189 FLOATINGconstant = 328, 190 CHARACTERconstant = 329, 191 STRINGliteral = 330, 192 ZERO = 331, 193 ONE = 332, 194 ARROW = 333, 195 ICR = 334, 196 DECR = 335, 197 LS = 336, 198 RS = 337, 199 LE = 338, 200 GE = 339, 201 EQ = 340, 202 NE = 341, 203 ANDAND = 342, 204 OROR = 343, 205 ELLIPSIS = 344, 206 MULTassign = 345, 207 DIVassign = 346, 208 MODassign = 347, 209 PLUSassign = 348, 210 MINUSassign = 349, 211 LSassign = 350, 212 RSassign = 351, 213 ANDassign = 352, 214 ERassign = 353, 215 ORassign = 354, 216 THEN = 355 168 DISABLE = 307, 169 ENABLE = 308, 170 FALLTHRU = 309, 171 TRY = 310, 172 CATCH = 311, 173 CATCHRESUME = 312, 174 FINALLY = 313, 175 THROW = 314, 176 THROWRESUME = 315, 177 AT = 316, 178 ASM = 317, 179 ALIGNAS = 318, 180 ALIGNOF = 319, 181 ATOMIC = 320, 182 GENERIC = 321, 183 NORETURN = 322, 184 STATICASSERT = 323, 185 THREADLOCAL = 324, 186 IDENTIFIER = 325, 187 QUOTED_IDENTIFIER = 326, 188 TYPEDEFname = 327, 189 TYPEGENname = 328, 190 ATTR_IDENTIFIER = 329, 191 ATTR_TYPEDEFname = 330, 192 ATTR_TYPEGENname = 331, 193 INTEGERconstant = 332, 194 FLOATINGconstant = 333, 195 CHARACTERconstant = 334, 196 STRINGliteral = 335, 197 ZERO = 336, 198 ONE = 337, 199 ARROW = 338, 200 ICR = 339, 201 DECR = 340, 202 LS = 341, 203 RS = 342, 204 LE = 343, 205 GE = 344, 206 EQ = 345, 207 NE = 346, 208 ANDAND = 347, 209 OROR = 348, 210 ELLIPSIS = 349, 211 MULTassign = 350, 212 DIVassign = 351, 213 MODassign = 352, 214 PLUSassign = 353, 215 MINUSassign = 354, 216 LSassign = 355, 217 RSassign = 356, 218 ANDassign = 357, 219 ERassign = 358, 220 ORassign = 359, 221 ATassign = 360, 222 THEN = 361 217 223 }; 218 224 #endif … … 267 273 #define RETURN 305 268 274 #define CHOOSE 306 269 #define FALLTHRU 307 270 #define TRY 308 271 #define CATCH 309 272 #define FINALLY 310 273 #define THROW 311 274 #define ASM 312 275 #define ALIGNAS 313 276 #define ALIGNOF 314 277 #define ATOMIC 315 278 #define GENERIC 316 279 #define NORETURN 317 280 #define STATICASSERT 318 281 #define THREADLOCAL 319 282 #define IDENTIFIER 320 283 #define QUOTED_IDENTIFIER 321 284 #define TYPEDEFname 322 285 #define TYPEGENname 323 286 #define ATTR_IDENTIFIER 324 287 #define ATTR_TYPEDEFname 325 288 #define ATTR_TYPEGENname 326 289 #define INTEGERconstant 327 290 #define FLOATINGconstant 328 291 #define CHARACTERconstant 329 292 #define STRINGliteral 330 293 #define ZERO 331 294 #define ONE 332 295 #define ARROW 333 296 #define ICR 334 297 #define DECR 335 298 #define LS 336 299 #define RS 337 300 #define LE 338 301 #define GE 339 302 #define EQ 340 303 #define NE 341 304 #define ANDAND 342 305 #define OROR 343 306 #define ELLIPSIS 344 307 #define MULTassign 345 308 #define DIVassign 346 309 #define MODassign 347 310 #define PLUSassign 348 311 #define MINUSassign 349 312 #define LSassign 350 313 #define RSassign 351 314 #define ANDassign 352 315 #define ERassign 353 316 #define ORassign 354 317 #define THEN 355 275 #define DISABLE 307 276 #define ENABLE 308 277 #define FALLTHRU 309 278 #define TRY 310 279 #define CATCH 311 280 #define CATCHRESUME 312 281 #define FINALLY 313 282 #define THROW 314 283 #define THROWRESUME 315 284 #define AT 316 285 #define ASM 317 286 #define ALIGNAS 318 287 #define ALIGNOF 319 288 #define ATOMIC 320 289 #define GENERIC 321 290 #define NORETURN 322 291 #define STATICASSERT 323 292 #define THREADLOCAL 324 293 #define IDENTIFIER 325 294 #define QUOTED_IDENTIFIER 326 295 #define TYPEDEFname 327 296 #define TYPEGENname 328 297 #define ATTR_IDENTIFIER 329 298 #define ATTR_TYPEDEFname 330 299 #define ATTR_TYPEGENname 331 300 #define INTEGERconstant 332 301 #define FLOATINGconstant 333 302 #define CHARACTERconstant 334 303 #define STRINGliteral 335 304 #define ZERO 336 305 #define ONE 337 306 #define ARROW 338 307 #define ICR 339 308 #define DECR 340 309 #define LS 341 310 #define RS 342 311 #define LE 343 312 #define GE 344 313 #define EQ 345 314 #define NE 346 315 #define ANDAND 347 316 #define OROR 348 317 #define ELLIPSIS 349 318 #define MULTassign 350 319 #define DIVassign 351 320 #define MODassign 352 321 #define PLUSassign 353 322 #define MINUSassign 354 323 #define LSassign 355 324 #define RSassign 356 325 #define ANDassign 357 326 #define ERassign 358 327 #define ORassign 359 328 #define ATassign 360 329 #define THEN 361 318 330 319 331 … … 325 337 326 338 /* Line 293 of yacc.c */ 327 #line 1 08"parser.yy"339 #line 110 "parser.yy" 328 340 329 341 Token tok; … … 342 354 343 355 /* Line 293 of yacc.c */ 344 #line 3 45"Parser/parser.cc"356 #line 357 "Parser/parser.cc" 345 357 } YYSTYPE; 346 358 # define YYSTYPE_IS_TRIVIAL 1 … … 354 366 355 367 /* Line 343 of yacc.c */ 356 #line 3 57"Parser/parser.cc"368 #line 369 "Parser/parser.cc" 357 369 358 370 #ifdef short … … 571 583 572 584 /* YYFINAL -- State number of the termination state. */ 573 #define YYFINAL 24 6585 #define YYFINAL 247 574 586 /* YYLAST -- Last index in YYTABLE. */ 575 #define YYLAST 1 1329587 #define YYLAST 10817 576 588 577 589 /* YYNTOKENS -- Number of terminals. */ 578 #define YYNTOKENS 1 25590 #define YYNTOKENS 131 579 591 /* YYNNTS -- Number of nonterminals. */ 580 592 #define YYNNTS 238 581 593 /* YYNRULES -- Number of rules. */ 582 #define YYNRULES 74 0594 #define YYNRULES 749 583 595 /* YYNRULES -- Number of states. */ 584 #define YYNSTATES 15 30596 #define YYNSTATES 1570 585 597 586 598 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 587 599 #define YYUNDEFTOK 2 588 #define YYMAXUTOK 3 55600 #define YYMAXUTOK 361 589 601 590 602 #define YYTRANSLATE(YYX) \ … … 597 609 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 598 610 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 599 2, 2, 2, 11 0, 2, 2, 2, 117, 112, 2,600 10 1, 102, 111, 113, 108, 114, 105, 116, 2, 2,601 2, 2, 2, 2, 2, 2, 2, 2, 1 09, 124,602 1 18, 123, 119, 122, 2, 2, 2, 2, 2, 2,611 2, 2, 2, 116, 2, 2, 2, 123, 118, 2, 612 107, 108, 117, 119, 114, 120, 111, 122, 2, 2, 613 2, 2, 2, 2, 2, 2, 2, 2, 115, 130, 614 124, 129, 125, 128, 2, 2, 2, 2, 2, 2, 603 615 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 604 616 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 605 2, 10 3, 2, 104, 120, 2, 2, 2, 2, 2,617 2, 109, 2, 110, 126, 2, 2, 2, 2, 2, 606 618 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 607 619 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 608 2, 2, 2, 1 06, 121, 107, 115, 2, 2, 2,620 2, 2, 2, 112, 127, 113, 121, 2, 2, 2, 609 621 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 610 622 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, … … 629 641 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 630 642 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 631 95, 96, 97, 98, 99, 100 643 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 644 105, 106 632 645 }; 633 646 … … 640 653 17, 19, 21, 23, 25, 27, 29, 32, 34, 36, 641 654 40, 44, 46, 53, 58, 62, 70, 74, 82, 85, 642 88, 96, 98, 102, 103, 105, 109, 117, 127, 129,643 13 3, 135, 139, 147, 151, 159, 161, 163, 165, 168,644 17 1, 174, 177, 180, 183, 186, 191, 193, 198, 203,645 20 6, 211, 214, 216, 218, 220, 222, 224, 229, 234,646 23 6, 240, 244, 248, 250, 254, 258, 260, 264, 268,647 27 0, 274, 278, 282, 286, 288, 292, 296, 298, 302,648 30 4, 308, 310, 314, 316, 320, 322, 326, 328, 334,649 339, 34 5, 347, 349, 353, 357, 360, 361, 363, 366,650 37 2, 379, 387, 389, 393, 395, 397, 399, 401, 403,651 40 5, 407, 409, 411, 413, 415, 419, 420, 422, 424,652 42 6, 428, 430, 432, 434, 436, 438, 443, 446, 454,653 45 6, 460, 462, 465, 467, 470, 472, 475, 478, 484,654 49 2, 498, 508, 514, 524, 526, 530, 532, 534, 538,655 54 2, 545, 547, 550, 553, 554, 556, 559, 563, 564,656 5 66, 569, 573, 577, 582, 583, 585, 587, 590, 596,657 60 4, 611, 618, 623, 627, 632, 635, 639, 642, 646,658 65 0, 654, 657, 661, 665, 670, 672, 678, 685, 695,659 706, 709, 711, 714, 717, 720, 722, 729, 738, 749,660 76 2, 777, 778, 780, 781, 783, 785, 789, 794, 802,661 8 03, 805, 809, 811, 815, 817, 819, 821, 825, 827,662 8 29, 831, 835, 836, 838, 842, 847, 849, 853, 855,663 8 57, 861, 865, 869, 873, 877, 880, 884, 891, 895,664 899, 904, 906, 909, 912, 916, 922, 931, 939, 947,665 9 53, 963, 966, 969, 975, 979, 985, 990, 994, 999,666 10 04, 1012, 1016, 1020, 1024, 1028, 1033, 1040, 1042, 1044,667 10 46, 1048, 1050, 1052, 1054, 1056, 1057, 1059, 1061, 1064,668 1 066, 1068, 1070, 1072, 1074, 1076, 1078, 1079, 1085, 1087,669 1 090, 1094, 1096, 1099, 1101, 1103, 1105, 1107, 1109, 1111,670 11 13, 1115, 1117, 1119, 1121, 1123, 1125, 1127, 1129, 1131,671 11 33, 1135, 1137, 1139, 1141, 1143, 1146, 1149, 1153, 1157,672 11 59, 1163, 1165, 1168, 1171, 1174, 1179, 1184, 1189, 1194,673 1 196, 1199, 1202, 1206, 1208, 1211, 1214, 1216, 1219, 1222,674 12 26, 1228, 1231, 1234, 1236, 1238, 1243, 1246, 1252, 1260,675 12 63, 1266, 1269, 1271, 1274, 1277, 1281, 1284, 1288, 1290,676 1 293, 1297, 1300, 1303, 1308, 1309, 1311, 1314, 1317, 1319,677 13 20, 1322, 1325, 1328, 1334, 1341, 1344, 1347, 1352, 1353,678 13 56, 1357, 1359, 1361, 1363, 1369, 1375, 1381, 1383, 1389,679 1 395, 1405, 1407, 1413, 1414, 1416, 1418, 1424, 1426, 1428,680 14 34, 1440, 1442, 1446, 1450, 1455, 1457, 1459, 1461, 1463,681 14 66, 1468, 1472, 1476, 1478, 1481, 1483, 1487, 1489, 1491,682 1 493, 1495, 1497, 1499, 1501, 1503, 1505, 1507, 1509, 1512,683 15 14, 1516, 1518, 1521, 1522, 1525, 1527, 1532, 1534, 1537,684 15 41, 1546, 1549, 1552, 1554, 1557, 1559, 1562, 1568, 1574,685 1 582, 1589, 1591, 1594, 1597, 1601, 1603, 1606, 1609, 1614,686 16 17, 1622, 1623, 1628, 1631, 1633, 1635, 1637, 1638, 1641,687 16 47, 1653, 1667, 1669, 1671, 1675, 1679, 1682, 1686, 1690,688 1 693, 1698, 1700, 1707, 1717, 1718, 1730, 1732, 1736, 1740,689 17 44, 1746, 1748, 1754, 1757, 1763, 1764, 1766, 1768, 1772,690 1 773, 1775, 1777, 1779, 1781, 1782, 1789, 1792, 1794, 1797,691 18 02, 1805, 1809, 1813, 1817, 1822, 1828, 1834, 1840, 1847,692 18 49, 1851, 1853, 1857, 1858, 1864, 1865, 1867, 1869, 1872,693 1 879, 1881, 1885, 1886, 1888, 1893, 1895, 1897, 1899, 1901,694 19 04, 1906, 1909, 1912, 1914, 1918, 1921, 1925, 1929, 1932,695 19 37, 1942, 1946, 1955, 1959, 1962, 1964, 1967, 1974, 1983,696 19 87, 1990, 1994, 1998, 2003, 2008, 2012, 2014, 2016, 2018,697 20 23, 2030, 2034, 2037, 2041, 2045, 2050, 2055, 2059, 2062,698 20 64, 2067, 2070, 2072, 2076, 2079, 2083, 2087, 2090, 2095,699 21 00, 2104, 2111, 2120, 2124, 2127, 2129, 2132, 2135, 2138,700 21 42, 2146, 2149, 2154, 2159, 2163, 2170, 2179, 2183, 2186,701 2 188, 2191, 2194, 2196, 2198, 2201, 2205, 2209, 2212, 2217,702 22 24, 2233, 2235, 2238, 2241, 2243, 2246, 2249, 2253, 2257,703 22 59, 2264, 2269, 2273, 2279, 2288, 2292, 2295, 2299, 2301,704 23 07, 2313, 2320, 2327, 2329, 2332, 2335, 2337, 2340, 2343,705 23 47, 2351, 2353, 2358, 2363, 2367, 2373, 2382, 2386, 2388,706 2 391, 2393, 2396, 2403, 2409, 2416, 2424, 2432, 2434, 2437,707 24 40, 2442, 2445, 2448, 2452, 2456, 2458, 2463, 2468, 2472,708 24 81, 2485, 2487, 2489, 2492, 2494, 2496, 2499, 2503, 2506,709 25 10, 2513, 2517, 2521, 2524, 2529, 2533, 2536, 2540, 2543,710 25 48, 2552, 2555, 2562, 2569, 2576, 2584, 2586, 2589, 2591,711 2 593, 2595, 2598, 2602, 2605, 2609, 2612, 2616, 2620, 2625,712 26 28, 2632, 2637, 2640, 2646, 2652, 2659, 2666, 2667, 2669,713 26 70655 88, 96, 101, 103, 107, 108, 110, 114, 122, 132, 656 134, 138, 140, 144, 152, 156, 164, 166, 168, 170, 657 173, 176, 179, 182, 185, 188, 191, 196, 198, 203, 658 208, 211, 216, 219, 221, 223, 225, 227, 229, 234, 659 239, 241, 245, 249, 253, 255, 259, 263, 265, 269, 660 273, 275, 279, 283, 287, 291, 293, 297, 301, 303, 661 307, 309, 313, 315, 319, 321, 325, 327, 331, 333, 662 339, 344, 350, 352, 354, 358, 362, 365, 366, 368, 663 371, 377, 384, 392, 394, 398, 400, 402, 404, 406, 664 408, 410, 412, 414, 416, 418, 420, 424, 425, 427, 665 429, 431, 433, 435, 437, 439, 441, 443, 450, 455, 666 458, 466, 468, 472, 474, 477, 479, 482, 484, 487, 667 490, 496, 504, 510, 520, 526, 536, 538, 542, 544, 668 546, 550, 554, 557, 559, 562, 565, 566, 568, 571, 669 575, 576, 578, 581, 585, 589, 594, 595, 597, 599, 670 602, 608, 616, 623, 630, 635, 639, 644, 647, 651, 671 654, 658, 662, 666, 670, 676, 680, 684, 689, 691, 672 697, 704, 710, 717, 727, 738, 748, 759, 762, 764, 673 767, 770, 773, 775, 782, 791, 802, 815, 830, 831, 674 833, 834, 836, 838, 842, 847, 855, 856, 858, 862, 675 864, 868, 870, 872, 874, 878, 880, 882, 884, 888, 676 889, 891, 895, 900, 902, 906, 908, 910, 914, 918, 677 922, 926, 930, 933, 937, 944, 948, 952, 957, 959, 678 962, 965, 969, 975, 984, 992, 1000, 1006, 1016, 1019, 679 1022, 1028, 1032, 1038, 1043, 1047, 1052, 1057, 1065, 1069, 680 1073, 1077, 1081, 1086, 1093, 1095, 1097, 1099, 1101, 1103, 681 1105, 1107, 1109, 1110, 1112, 1114, 1117, 1119, 1121, 1123, 682 1125, 1127, 1129, 1131, 1132, 1138, 1140, 1143, 1147, 1149, 683 1152, 1154, 1156, 1158, 1160, 1162, 1164, 1166, 1168, 1170, 684 1172, 1174, 1176, 1178, 1180, 1182, 1184, 1186, 1188, 1190, 685 1192, 1194, 1196, 1199, 1202, 1206, 1210, 1212, 1216, 1218, 686 1221, 1224, 1227, 1232, 1237, 1242, 1247, 1249, 1252, 1255, 687 1259, 1261, 1264, 1267, 1269, 1272, 1275, 1279, 1281, 1284, 688 1287, 1289, 1291, 1296, 1299, 1305, 1313, 1316, 1319, 1322, 689 1324, 1327, 1330, 1334, 1337, 1341, 1343, 1346, 1350, 1353, 690 1356, 1361, 1362, 1364, 1367, 1370, 1372, 1373, 1375, 1378, 691 1381, 1387, 1394, 1397, 1400, 1405, 1406, 1409, 1410, 1412, 692 1414, 1416, 1422, 1428, 1434, 1436, 1442, 1448, 1458, 1460, 693 1466, 1467, 1469, 1471, 1477, 1479, 1481, 1487, 1493, 1495, 694 1499, 1503, 1508, 1510, 1512, 1514, 1516, 1519, 1521, 1525, 695 1529, 1531, 1534, 1536, 1540, 1542, 1544, 1546, 1548, 1550, 696 1552, 1554, 1556, 1558, 1560, 1562, 1565, 1567, 1569, 1571, 697 1574, 1575, 1578, 1581, 1583, 1588, 1589, 1591, 1594, 1598, 698 1603, 1606, 1609, 1611, 1614, 1616, 1619, 1625, 1631, 1639, 699 1646, 1648, 1651, 1654, 1658, 1660, 1663, 1666, 1671, 1674, 700 1679, 1680, 1685, 1688, 1690, 1692, 1694, 1695, 1698, 1704, 701 1710, 1724, 1726, 1728, 1732, 1736, 1739, 1743, 1747, 1750, 702 1755, 1757, 1764, 1774, 1775, 1787, 1789, 1793, 1797, 1801, 703 1803, 1805, 1811, 1814, 1820, 1821, 1823, 1825, 1829, 1830, 704 1832, 1834, 1836, 1838, 1839, 1846, 1849, 1851, 1854, 1859, 705 1862, 1866, 1870, 1874, 1879, 1885, 1891, 1897, 1904, 1906, 706 1908, 1910, 1914, 1915, 1921, 1922, 1924, 1926, 1929, 1936, 707 1938, 1942, 1943, 1945, 1950, 1952, 1954, 1956, 1958, 1961, 708 1963, 1966, 1969, 1971, 1975, 1978, 1982, 1986, 1989, 1994, 709 1999, 2003, 2012, 2016, 2019, 2021, 2024, 2031, 2040, 2044, 710 2047, 2051, 2055, 2060, 2065, 2069, 2071, 2073, 2075, 2080, 711 2087, 2091, 2094, 2098, 2102, 2107, 2112, 2116, 2119, 2121, 712 2124, 2127, 2129, 2133, 2136, 2140, 2144, 2147, 2152, 2157, 713 2161, 2168, 2177, 2181, 2184, 2186, 2189, 2192, 2195, 2199, 714 2203, 2206, 2211, 2216, 2220, 2227, 2236, 2240, 2243, 2245, 715 2248, 2251, 2253, 2255, 2258, 2262, 2266, 2269, 2274, 2281, 716 2290, 2292, 2295, 2298, 2300, 2303, 2306, 2310, 2314, 2316, 717 2321, 2326, 2330, 2336, 2345, 2349, 2352, 2356, 2358, 2364, 718 2370, 2377, 2384, 2386, 2389, 2392, 2394, 2397, 2400, 2404, 719 2408, 2410, 2415, 2420, 2424, 2430, 2439, 2443, 2445, 2448, 720 2450, 2453, 2460, 2466, 2473, 2481, 2489, 2491, 2494, 2497, 721 2499, 2502, 2505, 2509, 2513, 2515, 2520, 2525, 2529, 2538, 722 2542, 2544, 2546, 2549, 2551, 2553, 2556, 2560, 2563, 2567, 723 2570, 2574, 2578, 2581, 2586, 2590, 2593, 2597, 2600, 2605, 724 2609, 2612, 2619, 2626, 2633, 2641, 2643, 2646, 2648, 2650, 725 2652, 2655, 2659, 2662, 2666, 2669, 2673, 2677, 2682, 2685, 726 2689, 2694, 2697, 2703, 2709, 2716, 2723, 2724, 2726, 2727 714 727 }; 715 728 … … 717 730 static const yytype_int16 yyrhs[] = 718 731 { 719 291, 0, -1, -1, -1, 72, -1, 73, -1, 74, 720 -1, 65, -1, 69, -1, 132, -1, 65, -1, 69, 721 -1, 65, -1, 76, -1, 77, -1, 75, -1, 133, 722 75, -1, 65, -1, 132, -1, 101, 160, 102, -1, 723 101, 164, 102, -1, 134, -1, 135, 103, 126, 155, 724 127, 104, -1, 135, 101, 136, 102, -1, 135, 105, 725 131, -1, 135, 105, 103, 126, 138, 127, 104, -1, 726 135, 78, 131, -1, 135, 78, 103, 126, 138, 127, 727 104, -1, 135, 79, -1, 135, 80, -1, 101, 264, 728 102, 106, 268, 361, 107, -1, 137, -1, 136, 108, 729 137, -1, -1, 155, -1, 131, 109, 155, -1, 103, 730 126, 155, 127, 104, 109, 155, -1, 103, 126, 155, 731 108, 158, 127, 104, 109, 155, -1, 139, -1, 138, 732 108, 139, -1, 131, -1, 131, 105, 139, -1, 131, 733 105, 103, 126, 138, 127, 104, -1, 131, 78, 139, 734 -1, 131, 78, 103, 126, 138, 127, 104, -1, 135, 735 -1, 128, -1, 133, -1, 79, 140, -1, 80, 140, 736 -1, 38, 142, -1, 141, 142, -1, 110, 142, -1, 737 111, 142, -1, 36, 140, -1, 36, 101, 264, 102, 738 -1, 69, -1, 69, 101, 265, 102, -1, 69, 101, 739 137, 102, -1, 59, 140, -1, 59, 101, 264, 102, 740 -1, 87, 131, -1, 112, -1, 113, -1, 114, -1, 741 115, -1, 140, -1, 101, 264, 102, 142, -1, 101, 742 264, 102, 157, -1, 142, -1, 143, 111, 142, -1, 743 143, 116, 142, -1, 143, 117, 142, -1, 143, -1, 744 144, 113, 143, -1, 144, 114, 143, -1, 144, -1, 745 145, 81, 144, -1, 145, 82, 144, -1, 145, -1, 746 146, 118, 145, -1, 146, 119, 145, -1, 146, 83, 747 145, -1, 146, 84, 145, -1, 146, -1, 147, 85, 748 146, -1, 147, 86, 146, -1, 147, -1, 148, 112, 749 147, -1, 148, -1, 149, 120, 148, -1, 149, -1, 750 150, 121, 149, -1, 150, -1, 151, 87, 150, -1, 751 151, -1, 152, 88, 151, -1, 152, -1, 152, 122, 752 160, 109, 153, -1, 152, 122, 109, 153, -1, 152, 753 122, 160, 109, 157, -1, 153, -1, 153, -1, 140, 754 123, 155, -1, 140, 159, 155, -1, 157, 362, -1, 755 -1, 155, -1, 103, 104, -1, 103, 126, 155, 127, 756 104, -1, 103, 126, 108, 158, 127, 104, -1, 103, 757 126, 155, 108, 158, 127, 104, -1, 156, -1, 158, 758 108, 156, -1, 90, -1, 91, -1, 92, -1, 93, 759 -1, 94, -1, 95, -1, 96, -1, 97, -1, 98, 760 -1, 99, -1, 155, -1, 160, 108, 155, -1, -1, 761 160, -1, 163, -1, 164, -1, 168, -1, 169, -1, 762 181, -1, 183, -1, 184, -1, 189, -1, 131, 109, 763 301, 162, -1, 106, 107, -1, 106, 126, 126, 200, 764 165, 127, 107, -1, 166, -1, 165, 126, 166, -1, 765 203, -1, 38, 203, -1, 297, -1, 162, 127, -1, 766 162, -1, 167, 162, -1, 161, 124, -1, 39, 101, 767 160, 102, 162, -1, 39, 101, 160, 102, 162, 40, 768 162, -1, 41, 101, 160, 102, 174, -1, 41, 101, 769 160, 102, 106, 126, 196, 175, 107, -1, 51, 101, 770 160, 102, 174, -1, 51, 101, 160, 102, 106, 126, 771 196, 177, 107, -1, 154, -1, 154, 89, 154, -1, 772 299, -1, 170, -1, 171, 108, 170, -1, 42, 171, 773 109, -1, 43, 109, -1, 172, -1, 173, 172, -1, 774 173, 162, -1, -1, 176, -1, 173, 167, -1, 176, 775 173, 167, -1, -1, 178, -1, 173, 180, -1, 173, 776 167, 179, -1, 178, 173, 180, -1, 178, 173, 167, 777 179, -1, -1, 180, -1, 52, -1, 52, 124, -1, 778 45, 101, 160, 102, 162, -1, 44, 162, 45, 101, 779 160, 102, 124, -1, 46, 101, 126, 182, 102, 162, 780 -1, 161, 127, 124, 161, 124, 161, -1, 203, 161, 781 124, 161, -1, 49, 131, 124, -1, 49, 111, 160, 782 124, -1, 48, 124, -1, 48, 131, 124, -1, 47, 783 124, -1, 47, 131, 124, -1, 50, 161, 124, -1, 784 56, 155, 124, -1, 56, 124, -1, 53, 164, 185, 785 -1, 53, 164, 187, -1, 53, 164, 185, 187, -1, 786 186, -1, 54, 101, 89, 102, 164, -1, 186, 54, 787 101, 89, 102, 164, -1, 54, 101, 126, 126, 188, 788 127, 102, 164, 127, -1, 186, 54, 101, 126, 126, 789 188, 127, 102, 164, 127, -1, 55, 164, -1, 216, 790 -1, 216, 298, -1, 216, 346, -1, 355, 131, -1, 791 355, -1, 57, 190, 101, 133, 102, 124, -1, 57, 792 190, 101, 133, 109, 191, 102, 124, -1, 57, 190, 793 101, 133, 109, 191, 109, 191, 102, 124, -1, 57, 794 190, 101, 133, 109, 191, 109, 191, 109, 194, 102, 795 124, -1, 57, 190, 49, 101, 133, 109, 109, 191, 796 109, 194, 109, 195, 102, 124, -1, -1, 11, -1, 797 -1, 192, -1, 193, -1, 192, 108, 193, -1, 133, 798 101, 154, 102, -1, 103, 154, 104, 133, 101, 154, 799 102, -1, -1, 133, -1, 194, 108, 133, -1, 131, 800 -1, 195, 108, 131, -1, 127, -1, 197, -1, 203, 801 -1, 197, 126, 203, -1, 127, -1, 199, -1, 213, 802 -1, 199, 126, 213, -1, -1, 201, -1, 28, 202, 803 124, -1, 201, 28, 202, 124, -1, 263, -1, 202, 804 108, 263, -1, 204, -1, 213, -1, 205, 127, 124, 805 -1, 210, 127, 124, -1, 207, 127, 124, -1, 282, 806 127, 124, -1, 285, 127, 124, -1, 206, 266, -1, 807 222, 206, 266, -1, 205, 127, 108, 126, 261, 266, 808 -1, 356, 261, 300, -1, 359, 261, 300, -1, 218, 809 359, 261, 300, -1, 208, -1, 218, 208, -1, 222, 810 208, -1, 222, 218, 208, -1, 207, 127, 108, 126, 811 261, -1, 103, 104, 261, 101, 126, 249, 127, 102, 812 -1, 359, 261, 101, 126, 249, 127, 102, -1, 209, 813 261, 101, 126, 249, 127, 102, -1, 103, 126, 251, 814 127, 104, -1, 103, 126, 251, 127, 108, 126, 252, 815 127, 104, -1, 3, 206, -1, 3, 208, -1, 210, 816 127, 108, 126, 131, -1, 3, 216, 298, -1, 211, 817 127, 108, 126, 298, -1, 218, 3, 216, 298, -1, 818 216, 3, 298, -1, 216, 3, 218, 298, -1, 3, 819 131, 123, 155, -1, 212, 127, 108, 126, 131, 123, 820 155, -1, 214, 127, 124, -1, 211, 127, 124, -1, 821 212, 127, 124, -1, 231, 127, 124, -1, 215, 298, 822 300, 266, -1, 214, 108, 301, 298, 300, 266, -1, 823 227, -1, 231, -1, 233, -1, 272, -1, 228, -1, 824 232, -1, 234, -1, 273, -1, -1, 218, -1, 219, 825 -1, 218, 219, -1, 220, -1, 303, -1, 10, -1, 826 12, -1, 11, -1, 14, -1, 60, -1, -1, 13, 827 101, 221, 275, 102, -1, 223, -1, 218, 223, -1, 828 222, 218, 223, -1, 224, -1, 223, 224, -1, 225, 829 -1, 5, -1, 7, -1, 4, -1, 6, -1, 8, 830 -1, 9, -1, 62, -1, 64, -1, 16, -1, 21, 831 -1, 20, -1, 18, -1, 19, -1, 17, -1, 22, 832 -1, 23, -1, 15, -1, 24, -1, 25, -1, 26, 833 -1, 228, -1, 222, 228, -1, 227, 224, -1, 227, 834 224, 218, -1, 227, 224, 228, -1, 229, -1, 217, 835 230, 217, -1, 226, -1, 218, 226, -1, 229, 219, 836 -1, 229, 226, -1, 27, 101, 265, 102, -1, 27, 837 101, 160, 102, -1, 71, 101, 265, 102, -1, 71, 838 101, 160, 102, -1, 232, -1, 222, 232, -1, 231, 839 224, -1, 231, 224, 218, -1, 235, -1, 218, 235, 840 -1, 232, 219, -1, 234, -1, 222, 234, -1, 233, 841 224, -1, 233, 224, 218, -1, 67, -1, 218, 67, 842 -1, 234, 219, -1, 236, -1, 246, -1, 237, 106, 843 238, 107, -1, 237, 263, -1, 237, 263, 106, 238, 844 107, -1, 237, 101, 281, 102, 106, 238, 107, -1, 845 237, 274, -1, 30, 301, -1, 31, 301, -1, 239, 846 -1, 238, 239, -1, 240, 124, -1, 38, 240, 124, 847 -1, 241, 124, -1, 38, 241, 124, -1, 355, -1, 848 355, 263, -1, 240, 108, 263, -1, 240, 108, -1, 849 216, 242, -1, 241, 108, 301, 242, -1, -1, 244, 850 -1, 307, 243, -1, 320, 243, -1, 346, -1, -1, 851 244, -1, 109, 154, -1, 29, 301, -1, 245, 106, 852 247, 361, 107, -1, 245, 263, 106, 247, 361, 107, 853 -1, 245, 263, -1, 263, 248, -1, 247, 108, 263, 854 248, -1, -1, 123, 154, -1, -1, 250, -1, 252, 855 -1, 251, -1, 251, 127, 108, 126, 252, -1, 252, 856 127, 108, 126, 89, -1, 251, 127, 108, 126, 89, 857 -1, 256, -1, 252, 127, 108, 126, 256, -1, 251, 858 127, 108, 126, 256, -1, 251, 127, 108, 126, 252, 859 127, 108, 126, 256, -1, 257, -1, 252, 127, 108, 860 126, 257, -1, -1, 254, -1, 255, -1, 255, 127, 861 108, 126, 89, -1, 259, -1, 258, -1, 255, 127, 862 108, 126, 259, -1, 255, 127, 108, 126, 258, -1, 863 258, -1, 351, 261, 362, -1, 359, 261, 362, -1, 864 218, 359, 261, 362, -1, 208, -1, 259, -1, 351, 865 -1, 359, -1, 218, 359, -1, 360, -1, 215, 325, 866 362, -1, 215, 329, 362, -1, 215, -1, 215, 340, 867 -1, 131, -1, 260, 108, 131, -1, 129, -1, 67, 868 -1, 68, -1, 130, -1, 67, -1, 68, -1, 131, 869 -1, 67, -1, 68, -1, 355, -1, 216, -1, 216, 870 346, -1, 355, -1, 360, -1, 216, -1, 216, 334, 871 -1, -1, 123, 267, -1, 155, -1, 106, 268, 361, 872 107, -1, 267, -1, 269, 267, -1, 268, 108, 267, 873 -1, 268, 108, 269, 267, -1, 270, 109, -1, 263, 874 109, -1, 271, -1, 270, 271, -1, 73, -1, 105, 875 263, -1, 103, 126, 155, 127, 104, -1, 103, 126, 876 299, 127, 104, -1, 103, 126, 154, 89, 154, 127, 877 104, -1, 105, 103, 126, 138, 127, 104, -1, 273, 878 -1, 222, 273, -1, 272, 224, -1, 272, 224, 218, 879 -1, 274, -1, 218, 274, -1, 273, 219, -1, 68, 880 101, 281, 102, -1, 276, 362, -1, 275, 108, 276, 881 362, -1, -1, 278, 263, 277, 279, -1, 216, 325, 882 -1, 32, -1, 34, -1, 33, -1, -1, 279, 280, 883 -1, 121, 263, 101, 281, 102, -1, 121, 106, 126, 884 287, 107, -1, 121, 101, 126, 275, 127, 102, 106, 885 126, 287, 107, 101, 281, 102, -1, 265, -1, 155, 886 -1, 281, 108, 265, -1, 281, 108, 155, -1, 32, 887 283, -1, 223, 32, 283, -1, 282, 108, 283, -1, 888 284, 279, -1, 284, 279, 123, 265, -1, 263, -1, 889 262, 101, 126, 275, 127, 102, -1, 35, 263, 101, 890 126, 275, 127, 102, 106, 107, -1, -1, 35, 263, 891 101, 126, 275, 127, 102, 106, 286, 287, 107, -1, 892 288, -1, 287, 126, 288, -1, 289, 127, 124, -1, 893 290, 127, 124, -1, 206, -1, 208, -1, 289, 127, 894 108, 126, 261, -1, 216, 298, -1, 290, 127, 108, 895 126, 298, -1, -1, 292, -1, 294, -1, 292, 126, 896 294, -1, -1, 292, -1, 203, -1, 296, -1, 189, 897 -1, -1, 5, 75, 295, 106, 293, 107, -1, 38, 898 294, -1, 297, -1, 312, 164, -1, 316, 126, 198, 899 164, -1, 207, 164, -1, 215, 312, 164, -1, 218, 900 312, 164, -1, 222, 312, 164, -1, 222, 218, 312, 901 164, -1, 215, 316, 126, 198, 164, -1, 218, 316, 902 126, 198, 164, -1, 222, 316, 126, 198, 164, -1, 903 222, 218, 316, 126, 198, 164, -1, 307, -1, 312, 904 -1, 320, -1, 154, 115, 154, -1, -1, 57, 101, 905 133, 102, 301, -1, -1, 302, -1, 303, -1, 302, 906 303, -1, 37, 101, 101, 304, 102, 102, -1, 305, 907 -1, 304, 108, 305, -1, -1, 306, -1, 306, 101, 908 161, 102, -1, 261, -1, 225, -1, 226, -1, 219, 909 -1, 308, 301, -1, 309, -1, 310, 301, -1, 311, 910 301, -1, 129, -1, 101, 308, 102, -1, 111, 307, 911 -1, 111, 218, 307, -1, 101, 309, 102, -1, 308, 912 338, -1, 101, 309, 102, 338, -1, 101, 310, 102, 913 339, -1, 101, 310, 102, -1, 101, 309, 102, 101, 914 126, 253, 127, 102, -1, 101, 311, 102, -1, 313, 915 301, -1, 314, -1, 315, 301, -1, 308, 101, 126, 916 253, 127, 102, -1, 101, 314, 102, 101, 126, 253, 917 127, 102, -1, 101, 313, 102, -1, 111, 312, -1, 918 111, 218, 312, -1, 101, 314, 102, -1, 101, 314, 919 102, 338, -1, 101, 315, 102, 339, -1, 101, 315, 920 102, -1, 317, -1, 318, -1, 319, -1, 308, 101, 921 260, 102, -1, 101, 318, 102, 101, 260, 102, -1, 922 101, 317, 102, -1, 111, 316, -1, 111, 218, 316, 923 -1, 101, 318, 102, -1, 101, 318, 102, 338, -1, 924 101, 319, 102, 339, -1, 101, 319, 102, -1, 321, 925 301, -1, 322, -1, 323, 301, -1, 324, 301, -1, 926 330, -1, 101, 321, 102, -1, 111, 320, -1, 111, 927 218, 320, -1, 101, 322, 102, -1, 321, 338, -1, 928 101, 322, 102, 338, -1, 101, 323, 102, 339, -1, 929 101, 323, 102, -1, 321, 101, 126, 253, 127, 102, 930 -1, 101, 322, 102, 101, 126, 253, 127, 102, -1, 931 101, 324, 102, -1, 308, 301, -1, 326, -1, 327, 932 301, -1, 328, 301, -1, 111, 325, -1, 111, 218, 933 325, -1, 101, 326, 102, -1, 308, 344, -1, 101, 934 326, 102, 338, -1, 101, 327, 102, 339, -1, 101, 935 327, 102, -1, 308, 101, 126, 253, 127, 102, -1, 936 101, 326, 102, 101, 126, 253, 127, 102, -1, 101, 937 328, 102, -1, 330, 301, -1, 331, -1, 332, 301, 938 -1, 333, 301, -1, 67, -1, 68, -1, 111, 329, 939 -1, 111, 218, 329, -1, 101, 331, 102, -1, 330, 940 344, -1, 101, 331, 102, 344, -1, 330, 101, 126, 941 253, 127, 102, -1, 101, 331, 102, 101, 126, 253, 942 127, 102, -1, 335, -1, 336, 301, -1, 337, 301, 943 -1, 111, -1, 111, 218, -1, 111, 334, -1, 111, 944 218, 334, -1, 101, 335, 102, -1, 338, -1, 101, 945 335, 102, 338, -1, 101, 336, 102, 339, -1, 101, 946 336, 102, -1, 101, 126, 253, 127, 102, -1, 101, 947 335, 102, 101, 126, 253, 127, 102, -1, 101, 337, 948 102, -1, 103, 104, -1, 103, 104, 339, -1, 339, 949 -1, 103, 126, 155, 127, 104, -1, 103, 126, 111, 950 127, 104, -1, 339, 103, 126, 155, 127, 104, -1, 951 339, 103, 126, 111, 127, 104, -1, 341, -1, 342, 952 301, -1, 343, 301, -1, 111, -1, 111, 218, -1, 953 111, 340, -1, 111, 218, 340, -1, 101, 341, 102, 954 -1, 344, -1, 101, 341, 102, 344, -1, 101, 342, 955 102, 339, -1, 101, 342, 102, -1, 101, 126, 253, 956 127, 102, -1, 101, 341, 102, 101, 126, 253, 127, 957 102, -1, 101, 343, 102, -1, 345, -1, 345, 339, 958 -1, 339, -1, 103, 104, -1, 103, 126, 218, 111, 959 127, 104, -1, 103, 126, 218, 127, 104, -1, 103, 960 126, 218, 155, 127, 104, -1, 103, 126, 7, 217, 961 155, 127, 104, -1, 103, 126, 218, 7, 155, 127, 962 104, -1, 347, -1, 348, 301, -1, 349, 301, -1, 963 111, -1, 111, 218, -1, 111, 346, -1, 111, 218, 964 346, -1, 101, 347, 102, -1, 338, -1, 101, 347, 965 102, 338, -1, 101, 348, 102, 339, -1, 101, 348, 966 102, -1, 101, 347, 102, 101, 126, 253, 127, 102, 967 -1, 101, 349, 102, -1, 351, -1, 359, -1, 218, 968 359, -1, 352, -1, 353, -1, 111, 216, -1, 218, 969 111, 216, -1, 111, 360, -1, 218, 111, 360, -1, 970 111, 350, -1, 218, 111, 350, -1, 103, 104, 216, 971 -1, 354, 216, -1, 103, 104, 339, 216, -1, 354, 972 339, 216, -1, 339, 216, -1, 103, 104, 352, -1, 973 354, 352, -1, 103, 104, 339, 352, -1, 354, 339, 974 352, -1, 339, 352, -1, 103, 126, 218, 111, 127, 975 104, -1, 103, 126, 218, 155, 127, 104, -1, 103, 976 126, 222, 155, 127, 104, -1, 103, 126, 222, 218, 977 155, 127, 104, -1, 359, -1, 218, 359, -1, 356, 978 -1, 357, -1, 358, -1, 111, 216, -1, 218, 111, 979 216, -1, 111, 360, -1, 218, 111, 360, -1, 111, 980 355, -1, 218, 111, 355, -1, 103, 104, 216, -1, 981 103, 104, 339, 216, -1, 339, 216, -1, 103, 104, 982 357, -1, 103, 104, 339, 357, -1, 339, 357, -1, 983 103, 126, 252, 127, 104, -1, 103, 104, 101, 249, 984 102, -1, 359, 101, 126, 249, 127, 102, -1, 209, 985 101, 126, 249, 127, 102, -1, -1, 108, -1, -1, 986 123, 155, -1 732 297, 0, -1, -1, -1, 77, -1, 78, -1, 79, 733 -1, 70, -1, 74, -1, 138, -1, 70, -1, 74, 734 -1, 70, -1, 81, -1, 82, -1, 80, -1, 139, 735 80, -1, 70, -1, 138, -1, 107, 166, 108, -1, 736 107, 170, 108, -1, 140, -1, 141, 109, 132, 161, 737 133, 110, -1, 141, 107, 142, 108, -1, 141, 111, 738 137, -1, 141, 111, 109, 132, 144, 133, 110, -1, 739 141, 83, 137, -1, 141, 83, 109, 132, 144, 133, 740 110, -1, 141, 84, -1, 141, 85, -1, 107, 270, 741 108, 112, 274, 367, 113, -1, 141, 112, 142, 113, 742 -1, 143, -1, 142, 114, 143, -1, -1, 161, -1, 743 137, 115, 161, -1, 109, 132, 161, 133, 110, 115, 744 161, -1, 109, 132, 161, 114, 164, 133, 110, 115, 745 161, -1, 145, -1, 144, 114, 145, -1, 137, -1, 746 137, 111, 145, -1, 137, 111, 109, 132, 144, 133, 747 110, -1, 137, 83, 145, -1, 137, 83, 109, 132, 748 144, 133, 110, -1, 141, -1, 134, -1, 139, -1, 749 84, 146, -1, 85, 146, -1, 38, 148, -1, 147, 750 148, -1, 116, 148, -1, 117, 148, -1, 36, 146, 751 -1, 36, 107, 270, 108, -1, 74, -1, 74, 107, 752 271, 108, -1, 74, 107, 143, 108, -1, 64, 146, 753 -1, 64, 107, 270, 108, -1, 92, 137, -1, 118, 754 -1, 119, -1, 120, -1, 121, -1, 146, -1, 107, 755 270, 108, 148, -1, 107, 270, 108, 163, -1, 148, 756 -1, 149, 117, 148, -1, 149, 122, 148, -1, 149, 757 123, 148, -1, 149, -1, 150, 119, 149, -1, 150, 758 120, 149, -1, 150, -1, 151, 86, 150, -1, 151, 759 87, 150, -1, 151, -1, 152, 124, 151, -1, 152, 760 125, 151, -1, 152, 88, 151, -1, 152, 89, 151, 761 -1, 152, -1, 153, 90, 152, -1, 153, 91, 152, 762 -1, 153, -1, 154, 118, 153, -1, 154, -1, 155, 763 126, 154, -1, 155, -1, 156, 127, 155, -1, 156, 764 -1, 157, 92, 156, -1, 157, -1, 158, 93, 157, 765 -1, 158, -1, 158, 128, 166, 115, 159, -1, 158, 766 128, 115, 159, -1, 158, 128, 166, 115, 163, -1, 767 159, -1, 159, -1, 146, 129, 161, -1, 146, 165, 768 161, -1, 163, 368, -1, -1, 161, -1, 109, 110, 769 -1, 109, 132, 161, 133, 110, -1, 109, 132, 114, 770 164, 133, 110, -1, 109, 132, 161, 114, 164, 133, 771 110, -1, 162, -1, 164, 114, 162, -1, 95, -1, 772 96, -1, 97, -1, 98, -1, 99, -1, 100, -1, 773 101, -1, 102, -1, 103, -1, 104, -1, 161, -1, 774 166, 114, 161, -1, -1, 166, -1, 169, -1, 170, 775 -1, 174, -1, 175, -1, 187, -1, 189, -1, 190, 776 -1, 195, -1, 126, 141, 112, 142, 113, 130, -1, 777 137, 115, 307, 168, -1, 112, 113, -1, 112, 132, 778 132, 206, 171, 133, 113, -1, 172, -1, 171, 132, 779 172, -1, 209, -1, 38, 209, -1, 303, -1, 168, 780 133, -1, 168, -1, 173, 168, -1, 167, 130, -1, 781 39, 107, 166, 108, 168, -1, 39, 107, 166, 108, 782 168, 40, 168, -1, 41, 107, 166, 108, 180, -1, 783 41, 107, 166, 108, 112, 132, 202, 181, 113, -1, 784 51, 107, 166, 108, 180, -1, 51, 107, 166, 108, 785 112, 132, 202, 183, 113, -1, 160, -1, 160, 94, 786 160, -1, 305, -1, 176, -1, 177, 114, 176, -1, 787 42, 177, 115, -1, 43, 115, -1, 178, -1, 179, 788 178, -1, 179, 168, -1, -1, 182, -1, 179, 173, 789 -1, 182, 179, 173, -1, -1, 184, -1, 179, 186, 790 -1, 179, 173, 185, -1, 184, 179, 186, -1, 184, 791 179, 173, 185, -1, -1, 186, -1, 54, -1, 54, 792 130, -1, 45, 107, 166, 108, 168, -1, 44, 168, 793 45, 107, 166, 108, 130, -1, 46, 107, 132, 188, 794 108, 168, -1, 167, 133, 130, 167, 130, 167, -1, 795 209, 167, 130, 167, -1, 49, 137, 130, -1, 49, 796 117, 166, 130, -1, 48, 130, -1, 48, 137, 130, 797 -1, 47, 130, -1, 47, 137, 130, -1, 50, 167, 798 130, -1, 59, 162, 130, -1, 60, 162, 130, -1, 799 60, 162, 61, 161, 130, -1, 55, 170, 191, -1, 800 55, 170, 193, -1, 55, 170, 191, 193, -1, 192, 801 -1, 56, 107, 94, 108, 170, -1, 192, 56, 107, 802 94, 108, 170, -1, 57, 107, 94, 108, 170, -1, 803 192, 57, 107, 94, 108, 170, -1, 56, 107, 132, 804 132, 194, 133, 108, 170, 133, -1, 192, 56, 107, 805 132, 132, 194, 133, 108, 170, 133, -1, 57, 107, 806 132, 132, 194, 133, 108, 170, 133, -1, 192, 57, 807 107, 132, 132, 194, 133, 108, 170, 133, -1, 58, 808 170, -1, 222, -1, 222, 304, -1, 222, 352, -1, 809 361, 137, -1, 361, -1, 62, 196, 107, 139, 108, 810 130, -1, 62, 196, 107, 139, 115, 197, 108, 130, 811 -1, 62, 196, 107, 139, 115, 197, 115, 197, 108, 812 130, -1, 62, 196, 107, 139, 115, 197, 115, 197, 813 115, 200, 108, 130, -1, 62, 196, 49, 107, 139, 814 115, 115, 197, 115, 200, 115, 201, 108, 130, -1, 815 -1, 11, -1, -1, 198, -1, 199, -1, 198, 114, 816 199, -1, 139, 107, 160, 108, -1, 109, 160, 110, 817 139, 107, 160, 108, -1, -1, 139, -1, 200, 114, 818 139, -1, 137, -1, 201, 114, 137, -1, 133, -1, 819 203, -1, 209, -1, 203, 132, 209, -1, 133, -1, 820 205, -1, 219, -1, 205, 132, 219, -1, -1, 207, 821 -1, 28, 208, 130, -1, 207, 28, 208, 130, -1, 822 269, -1, 208, 114, 269, -1, 210, -1, 219, -1, 823 211, 133, 130, -1, 216, 133, 130, -1, 213, 133, 824 130, -1, 288, 133, 130, -1, 291, 133, 130, -1, 825 212, 272, -1, 228, 212, 272, -1, 211, 133, 114, 826 132, 267, 272, -1, 362, 267, 306, -1, 365, 267, 827 306, -1, 224, 365, 267, 306, -1, 214, -1, 224, 828 214, -1, 228, 214, -1, 228, 224, 214, -1, 213, 829 133, 114, 132, 267, -1, 109, 110, 267, 107, 132, 830 255, 133, 108, -1, 365, 267, 107, 132, 255, 133, 831 108, -1, 215, 267, 107, 132, 255, 133, 108, -1, 832 109, 132, 257, 133, 110, -1, 109, 132, 257, 133, 833 114, 132, 258, 133, 110, -1, 3, 212, -1, 3, 834 214, -1, 216, 133, 114, 132, 137, -1, 3, 222, 835 304, -1, 217, 133, 114, 132, 304, -1, 224, 3, 836 222, 304, -1, 222, 3, 304, -1, 222, 3, 224, 837 304, -1, 3, 137, 129, 161, -1, 218, 133, 114, 838 132, 137, 129, 161, -1, 220, 133, 130, -1, 217, 839 133, 130, -1, 218, 133, 130, -1, 237, 133, 130, 840 -1, 221, 304, 306, 272, -1, 220, 114, 307, 304, 841 306, 272, -1, 233, -1, 237, -1, 239, -1, 278, 842 -1, 234, -1, 238, -1, 240, -1, 279, -1, -1, 843 224, -1, 225, -1, 224, 225, -1, 226, -1, 309, 844 -1, 10, -1, 12, -1, 11, -1, 14, -1, 65, 845 -1, -1, 13, 107, 227, 281, 108, -1, 229, -1, 846 224, 229, -1, 228, 224, 229, -1, 230, -1, 229, 847 230, -1, 231, -1, 5, -1, 7, -1, 4, -1, 848 6, -1, 8, -1, 9, -1, 67, -1, 69, -1, 849 16, -1, 21, -1, 20, -1, 18, -1, 19, -1, 850 17, -1, 22, -1, 23, -1, 15, -1, 24, -1, 851 25, -1, 26, -1, 234, -1, 228, 234, -1, 233, 852 230, -1, 233, 230, 224, -1, 233, 230, 234, -1, 853 235, -1, 223, 236, 223, -1, 232, -1, 224, 232, 854 -1, 235, 225, -1, 235, 232, -1, 27, 107, 271, 855 108, -1, 27, 107, 166, 108, -1, 76, 107, 271, 856 108, -1, 76, 107, 166, 108, -1, 238, -1, 228, 857 238, -1, 237, 230, -1, 237, 230, 224, -1, 241, 858 -1, 224, 241, -1, 238, 225, -1, 240, -1, 228, 859 240, -1, 239, 230, -1, 239, 230, 224, -1, 72, 860 -1, 224, 72, -1, 240, 225, -1, 242, -1, 252, 861 -1, 243, 112, 244, 113, -1, 243, 269, -1, 243, 862 269, 112, 244, 113, -1, 243, 107, 287, 108, 112, 863 244, 113, -1, 243, 280, -1, 30, 307, -1, 31, 864 307, -1, 245, -1, 244, 245, -1, 246, 130, -1, 865 38, 246, 130, -1, 247, 130, -1, 38, 247, 130, 866 -1, 361, -1, 361, 269, -1, 246, 114, 269, -1, 867 246, 114, -1, 222, 248, -1, 247, 114, 307, 248, 868 -1, -1, 250, -1, 313, 249, -1, 326, 249, -1, 869 352, -1, -1, 250, -1, 115, 160, -1, 29, 307, 870 -1, 251, 112, 253, 367, 113, -1, 251, 269, 112, 871 253, 367, 113, -1, 251, 269, -1, 269, 254, -1, 872 253, 114, 269, 254, -1, -1, 129, 160, -1, -1, 873 256, -1, 258, -1, 257, -1, 257, 133, 114, 132, 874 258, -1, 258, 133, 114, 132, 94, -1, 257, 133, 875 114, 132, 94, -1, 262, -1, 258, 133, 114, 132, 876 262, -1, 257, 133, 114, 132, 262, -1, 257, 133, 877 114, 132, 258, 133, 114, 132, 262, -1, 263, -1, 878 258, 133, 114, 132, 263, -1, -1, 260, -1, 261, 879 -1, 261, 133, 114, 132, 94, -1, 265, -1, 264, 880 -1, 261, 133, 114, 132, 265, -1, 261, 133, 114, 881 132, 264, -1, 264, -1, 357, 267, 368, -1, 365, 882 267, 368, -1, 224, 365, 267, 368, -1, 214, -1, 883 265, -1, 357, -1, 365, -1, 224, 365, -1, 366, 884 -1, 221, 331, 368, -1, 221, 335, 368, -1, 221, 885 -1, 221, 346, -1, 137, -1, 266, 114, 137, -1, 886 135, -1, 72, -1, 73, -1, 136, -1, 72, -1, 887 73, -1, 137, -1, 72, -1, 73, -1, 361, -1, 888 222, -1, 222, 352, -1, 361, -1, 366, -1, 222, 889 -1, 222, 340, -1, -1, 129, 273, -1, 105, 273, 890 -1, 161, -1, 112, 274, 367, 113, -1, -1, 273, 891 -1, 275, 273, -1, 274, 114, 273, -1, 274, 114, 892 275, 273, -1, 276, 115, -1, 269, 115, -1, 277, 893 -1, 276, 277, -1, 78, -1, 111, 269, -1, 109, 894 132, 161, 133, 110, -1, 109, 132, 305, 133, 110, 895 -1, 109, 132, 160, 94, 160, 133, 110, -1, 111, 896 109, 132, 144, 133, 110, -1, 279, -1, 228, 279, 897 -1, 278, 230, -1, 278, 230, 224, -1, 280, -1, 898 224, 280, -1, 279, 225, -1, 73, 107, 287, 108, 899 -1, 282, 368, -1, 281, 114, 282, 368, -1, -1, 900 284, 269, 283, 285, -1, 222, 331, -1, 32, -1, 901 34, -1, 33, -1, -1, 285, 286, -1, 127, 269, 902 107, 287, 108, -1, 127, 112, 132, 293, 113, -1, 903 127, 107, 132, 281, 133, 108, 112, 132, 293, 113, 904 107, 287, 108, -1, 271, -1, 161, -1, 287, 114, 905 271, -1, 287, 114, 161, -1, 32, 289, -1, 229, 906 32, 289, -1, 288, 114, 289, -1, 290, 285, -1, 907 290, 285, 129, 271, -1, 269, -1, 268, 107, 132, 908 281, 133, 108, -1, 35, 269, 107, 132, 281, 133, 909 108, 112, 113, -1, -1, 35, 269, 107, 132, 281, 910 133, 108, 112, 292, 293, 113, -1, 294, -1, 293, 911 132, 294, -1, 295, 133, 130, -1, 296, 133, 130, 912 -1, 212, -1, 214, -1, 295, 133, 114, 132, 267, 913 -1, 222, 304, -1, 296, 133, 114, 132, 304, -1, 914 -1, 298, -1, 300, -1, 298, 132, 300, -1, -1, 915 298, -1, 209, -1, 302, -1, 195, -1, -1, 5, 916 80, 301, 112, 299, 113, -1, 38, 300, -1, 303, 917 -1, 318, 170, -1, 322, 132, 204, 170, -1, 213, 918 170, -1, 221, 318, 170, -1, 224, 318, 170, -1, 919 228, 318, 170, -1, 228, 224, 318, 170, -1, 221, 920 322, 132, 204, 170, -1, 224, 322, 132, 204, 170, 921 -1, 228, 322, 132, 204, 170, -1, 228, 224, 322, 922 132, 204, 170, -1, 313, -1, 318, -1, 326, -1, 923 160, 121, 160, -1, -1, 62, 107, 139, 108, 307, 924 -1, -1, 308, -1, 309, -1, 308, 309, -1, 37, 925 107, 107, 310, 108, 108, -1, 311, -1, 310, 114, 926 311, -1, -1, 312, -1, 312, 107, 167, 108, -1, 927 267, -1, 231, -1, 232, -1, 225, -1, 314, 307, 928 -1, 315, -1, 316, 307, -1, 317, 307, -1, 135, 929 -1, 107, 314, 108, -1, 117, 313, -1, 117, 224, 930 313, -1, 107, 315, 108, -1, 314, 344, -1, 107, 931 315, 108, 344, -1, 107, 316, 108, 345, -1, 107, 932 316, 108, -1, 107, 315, 108, 107, 132, 259, 133, 933 108, -1, 107, 317, 108, -1, 319, 307, -1, 320, 934 -1, 321, 307, -1, 314, 107, 132, 259, 133, 108, 935 -1, 107, 320, 108, 107, 132, 259, 133, 108, -1, 936 107, 319, 108, -1, 117, 318, -1, 117, 224, 318, 937 -1, 107, 320, 108, -1, 107, 320, 108, 344, -1, 938 107, 321, 108, 345, -1, 107, 321, 108, -1, 323, 939 -1, 324, -1, 325, -1, 314, 107, 266, 108, -1, 940 107, 324, 108, 107, 266, 108, -1, 107, 323, 108, 941 -1, 117, 322, -1, 117, 224, 322, -1, 107, 324, 942 108, -1, 107, 324, 108, 344, -1, 107, 325, 108, 943 345, -1, 107, 325, 108, -1, 327, 307, -1, 328, 944 -1, 329, 307, -1, 330, 307, -1, 336, -1, 107, 945 327, 108, -1, 117, 326, -1, 117, 224, 326, -1, 946 107, 328, 108, -1, 327, 344, -1, 107, 328, 108, 947 344, -1, 107, 329, 108, 345, -1, 107, 329, 108, 948 -1, 327, 107, 132, 259, 133, 108, -1, 107, 328, 949 108, 107, 132, 259, 133, 108, -1, 107, 330, 108, 950 -1, 314, 307, -1, 332, -1, 333, 307, -1, 334, 951 307, -1, 117, 331, -1, 117, 224, 331, -1, 107, 952 332, 108, -1, 314, 350, -1, 107, 332, 108, 344, 953 -1, 107, 333, 108, 345, -1, 107, 333, 108, -1, 954 314, 107, 132, 259, 133, 108, -1, 107, 332, 108, 955 107, 132, 259, 133, 108, -1, 107, 334, 108, -1, 956 336, 307, -1, 337, -1, 338, 307, -1, 339, 307, 957 -1, 72, -1, 73, -1, 117, 335, -1, 117, 224, 958 335, -1, 107, 337, 108, -1, 336, 350, -1, 107, 959 337, 108, 350, -1, 336, 107, 132, 259, 133, 108, 960 -1, 107, 337, 108, 107, 132, 259, 133, 108, -1, 961 341, -1, 342, 307, -1, 343, 307, -1, 117, -1, 962 117, 224, -1, 117, 340, -1, 117, 224, 340, -1, 963 107, 341, 108, -1, 344, -1, 107, 341, 108, 344, 964 -1, 107, 342, 108, 345, -1, 107, 342, 108, -1, 965 107, 132, 259, 133, 108, -1, 107, 341, 108, 107, 966 132, 259, 133, 108, -1, 107, 343, 108, -1, 109, 967 110, -1, 109, 110, 345, -1, 345, -1, 109, 132, 968 161, 133, 110, -1, 109, 132, 117, 133, 110, -1, 969 345, 109, 132, 161, 133, 110, -1, 345, 109, 132, 970 117, 133, 110, -1, 347, -1, 348, 307, -1, 349, 971 307, -1, 117, -1, 117, 224, -1, 117, 346, -1, 972 117, 224, 346, -1, 107, 347, 108, -1, 350, -1, 973 107, 347, 108, 350, -1, 107, 348, 108, 345, -1, 974 107, 348, 108, -1, 107, 132, 259, 133, 108, -1, 975 107, 347, 108, 107, 132, 259, 133, 108, -1, 107, 976 349, 108, -1, 351, -1, 351, 345, -1, 345, -1, 977 109, 110, -1, 109, 132, 224, 117, 133, 110, -1, 978 109, 132, 224, 133, 110, -1, 109, 132, 224, 161, 979 133, 110, -1, 109, 132, 7, 223, 161, 133, 110, 980 -1, 109, 132, 224, 7, 161, 133, 110, -1, 353, 981 -1, 354, 307, -1, 355, 307, -1, 117, -1, 117, 982 224, -1, 117, 352, -1, 117, 224, 352, -1, 107, 983 353, 108, -1, 344, -1, 107, 353, 108, 344, -1, 984 107, 354, 108, 345, -1, 107, 354, 108, -1, 107, 985 353, 108, 107, 132, 259, 133, 108, -1, 107, 355, 986 108, -1, 357, -1, 365, -1, 224, 365, -1, 358, 987 -1, 359, -1, 117, 222, -1, 224, 117, 222, -1, 988 117, 366, -1, 224, 117, 366, -1, 117, 356, -1, 989 224, 117, 356, -1, 109, 110, 222, -1, 360, 222, 990 -1, 109, 110, 345, 222, -1, 360, 345, 222, -1, 991 345, 222, -1, 109, 110, 358, -1, 360, 358, -1, 992 109, 110, 345, 358, -1, 360, 345, 358, -1, 345, 993 358, -1, 109, 132, 224, 117, 133, 110, -1, 109, 994 132, 224, 161, 133, 110, -1, 109, 132, 228, 161, 995 133, 110, -1, 109, 132, 228, 224, 161, 133, 110, 996 -1, 365, -1, 224, 365, -1, 362, -1, 363, -1, 997 364, -1, 117, 222, -1, 224, 117, 222, -1, 117, 998 366, -1, 224, 117, 366, -1, 117, 361, -1, 224, 999 117, 361, -1, 109, 110, 222, -1, 109, 110, 345, 1000 222, -1, 345, 222, -1, 109, 110, 363, -1, 109, 1001 110, 345, 363, -1, 345, 363, -1, 109, 132, 258, 1002 133, 110, -1, 109, 110, 107, 255, 108, -1, 365, 1003 107, 132, 255, 133, 108, -1, 215, 107, 132, 255, 1004 133, 108, -1, -1, 114, -1, -1, 129, 161, -1 987 1005 }; 988 1006 … … 990 1008 static const yytype_uint16 yyrline[] = 991 1009 { 992 0, 2 88, 288, 294, 303, 304, 305, 309, 310, 311,993 31 5, 316, 320, 324, 325, 329, 330, 336, 338, 340,994 34 2, 347, 348, 354, 356, 358, 359, 361, 362, 364,995 36 7, 372, 373, 379, 380, 381, 386, 388, 393, 394,996 398, 400, 402, 404, 406, 411, 414, 416, 418, 420,997 42 2, 424, 426, 428, 434, 436, 438, 440, 442, 444,998 4 46, 448, 453, 454, 455, 456, 460, 461, 463, 468,999 4 69, 471, 473, 478, 479, 481, 486, 487, 489, 494,1000 495, 497, 499, 501, 506, 507, 509, 514, 515, 520,1001 52 1, 526, 527, 532, 533, 538, 539, 544, 545, 547,1002 5 49, 554, 559, 560, 562, 564, 570, 571, 577, 579,1003 58 1, 583, 588, 589, 594, 595, 596, 597, 598, 599,1004 60 0, 601, 602, 603, 607, 608, 614, 615, 621, 622,1005 62 3, 624, 625, 626, 627, 628, 632, 639, 641, 651,1006 65 2, 657, 659, 661, 663, 667, 668, 673, 678, 681,1007 6 83, 685, 690, 692, 700, 701, 703, 707, 708, 713,1008 7 14, 719, 720, 724, 729, 730, 734, 736, 742, 743,1009 7 47, 749, 751, 753, 759, 760, 764, 765, 769, 771,1010 7 73, 778, 780, 785, 787, 791, 794, 798, 801, 805,1011 8 07, 809, 814, 816, 818, 827, 829, 831, 836, 838,1012 8 43, 856, 857, 862, 864, 869, 873, 875, 877, 879,1013 88 1, 887, 888, 894, 895, 899, 900, 905, 907, 913,1014 9 14, 916, 921, 923, 930, 932, 936, 937, 942, 944,1015 9 48, 949, 953, 955, 959, 960, 964, 965, 969, 970,1016 98 5, 986, 987, 988, 989, 993, 998, 1005, 1015, 1020,1017 10 25, 1033, 1038, 1043, 1048, 1053, 1061, 1083, 1088, 1095,1018 10 97, 1104, 1109, 1114, 1125, 1130, 1135, 1140, 1145, 1154,1019 11 59, 1167, 1168, 1169, 1170, 1176, 1181, 1189, 1190, 1191,1020 119 2, 1196, 1197, 1198, 1199, 1204, 1205, 1214, 1215, 1220,1021 122 1, 1226, 1228, 1230, 1232, 1234, 1237, 1236, 1248, 1249,1022 125 1, 1261, 1262, 1267, 1271, 1273, 1275, 1277, 1279, 1281,1023 12 83, 1285, 1290, 1292, 1294, 1296, 1298, 1300, 1302, 1304,1024 13 06, 1308, 1310, 1312, 1318, 1319, 1321, 1323, 1325, 1330,1025 133 1, 1337, 1338, 1340, 1342, 1347, 1349, 1351, 1353, 1358,1026 13 59, 1361, 1363, 1368, 1369, 1371, 1376, 1377, 1379, 1381,1027 13 86, 1388, 1390, 1395, 1396, 1400, 1402, 1404, 1406, 1408,1028 14 13, 1415, 1420, 1422, 1427, 1428, 1430, 1431, 1436, 1437,1029 14 39, 1441, 1446, 1448, 1454, 1455, 1457, 1460, 1463, 1468,1030 14 69, 1474, 1479, 1483, 1485, 1487, 1492, 1494, 1500, 1501,1031 15 09, 1510, 1514, 1515, 1516, 1518, 1520, 1527, 1528, 1530,1032 15 32, 1537, 1538, 1544, 1545, 1549, 1550, 1555, 1556, 1557,1033 15 59, 1567, 1568, 1570, 1573, 1575, 1579, 1580, 1581, 1583,1034 15 85, 1589, 1594, 1602, 1603, 1612, 1614, 1619, 1620, 1621,1035 162 5, 1626, 1627, 1631, 1632, 1633, 1637, 1638, 1639, 1644,1036 16 45, 1646, 1647, 1653, 1654, 1659, 1660, 1664, 1665, 1666,1037 16 67, 1682, 1683, 1688, 1689, 1696, 1698, 1700, 1703, 1705,1038 17 07, 1730, 1731, 1733, 1735, 1740, 1741, 1743, 1748, 1753,1039 17 54, 1760, 1759, 1763, 1767, 1769, 1771, 1777, 1778, 1783,1040 17 88, 1790, 1795, 1797, 1798, 1800, 1805, 1807, 1809, 1814,1041 18 16, 1821, 1826, 1834, 1840, 1839, 1853, 1854, 1859, 1860,1042 18 64, 1869, 1874, 1882, 1887, 1898, 1899, 1910, 1911, 1917,1043 19 18, 1922, 1923, 1924, 1927, 1926, 1937, 1942, 1947, 1953,1044 19 62, 1968, 1974, 1980, 1986, 1994, 2000, 2008, 2014, 2023,1045 20 24, 2025, 2029, 2033, 2035, 2040, 2041, 2045, 2046, 2051,1046 2057, 20 58, 2061, 2063, 2064, 2068, 2069, 2070, 2071, 2105,1047 2 107, 2108, 2110, 2115, 2120, 2125, 2127, 2129, 2134, 2136,1048 21 38, 2140, 2145, 2147, 2157, 2159, 2160, 2165, 2167, 2169,1049 217 4, 2176, 2178, 2183, 2185, 2187, 2196, 2197, 2198, 2202,1050 220 4, 2206, 2211, 2213, 2215, 2220, 2222, 2224, 2239, 2241,1051 22 42, 2244, 2249, 2250, 2255, 2257, 2259, 2264, 2266, 2268,1052 227 0, 2275, 2277, 2279, 2289, 2291, 2292, 2294, 2299, 2301,1053 230 3, 2308, 2310, 2312, 2314, 2319, 2321, 2323, 2354, 2356,1054 23 57, 2359, 2364, 2369, 2377, 2379, 2381, 2386, 2388, 2393,1055 239 5, 2409, 2410, 2412, 2417, 2419, 2421, 2423, 2425, 2430,1056 24 31, 2433, 2435, 2440, 2442, 2444, 2450, 2452, 2454, 2458,1057 246 0, 2462, 2464, 2478, 2479, 2481, 2486, 2488, 2490, 2492,1058 2494, 249 9, 2500, 2502, 2504, 2509, 2511, 2513, 2519, 2520,1059 25 22, 2531, 2534, 2536, 2539, 2541, 2543, 2556, 2557, 2559,1060 256 4, 2566, 2568, 2570, 2572, 2577, 2578, 2580, 2582, 2587,1061 25 89, 2597, 2598, 2599, 2604, 2605, 2609, 2611, 2613, 2615,1062 26 17, 2619, 2626, 2628, 2630, 2632, 2634, 2636, 2638, 2640,1063 26 42, 2644, 2649, 2651, 2653, 2658, 2684, 2685, 2687, 2691,1064 26 92, 2696, 2698, 2700, 2702, 2704, 2706, 2713, 2715, 2717,1065 27 19, 2721, 2723, 2728, 2733, 2735, 2737, 2755, 2757, 2762,1066 27 631010 0, 290, 290, 296, 305, 306, 307, 311, 312, 313, 1011 317, 318, 323, 327, 328, 332, 333, 339, 341, 343, 1012 345, 350, 351, 357, 359, 361, 362, 364, 365, 367, 1013 369, 371, 379, 380, 386, 387, 388, 393, 395, 400, 1014 401, 405, 407, 409, 411, 413, 418, 421, 423, 425, 1015 427, 429, 431, 433, 435, 441, 443, 445, 447, 449, 1016 451, 453, 455, 460, 461, 462, 463, 467, 468, 470, 1017 475, 476, 478, 480, 485, 486, 488, 493, 494, 496, 1018 501, 502, 504, 506, 508, 513, 514, 516, 521, 522, 1019 527, 528, 533, 534, 539, 540, 545, 546, 551, 552, 1020 554, 556, 561, 566, 567, 569, 571, 577, 578, 584, 1021 586, 588, 590, 595, 596, 601, 602, 603, 604, 605, 1022 606, 607, 608, 609, 610, 614, 615, 621, 622, 628, 1023 629, 630, 631, 632, 633, 634, 635, 636, 645, 652, 1024 654, 664, 665, 670, 672, 674, 676, 680, 681, 686, 1025 691, 694, 696, 698, 703, 705, 713, 714, 716, 720, 1026 721, 726, 727, 732, 733, 737, 742, 743, 747, 749, 1027 755, 756, 760, 762, 764, 766, 772, 773, 777, 778, 1028 782, 784, 786, 791, 793, 798, 800, 804, 807, 811, 1029 814, 818, 820, 824, 826, 833, 835, 837, 846, 848, 1030 850, 852, 854, 859, 861, 863, 865, 870, 883, 884, 1031 889, 891, 896, 900, 902, 904, 906, 908, 914, 915, 1032 921, 922, 926, 927, 932, 934, 940, 941, 943, 948, 1033 950, 957, 959, 963, 964, 969, 971, 975, 976, 980, 1034 982, 986, 987, 991, 992, 996, 997, 1012, 1013, 1014, 1035 1015, 1016, 1020, 1025, 1032, 1042, 1047, 1052, 1060, 1065, 1036 1070, 1075, 1080, 1088, 1110, 1115, 1122, 1124, 1131, 1136, 1037 1141, 1152, 1157, 1162, 1167, 1172, 1181, 1186, 1194, 1195, 1038 1196, 1197, 1203, 1208, 1216, 1217, 1218, 1219, 1223, 1224, 1039 1225, 1226, 1231, 1232, 1241, 1242, 1247, 1248, 1253, 1255, 1040 1257, 1259, 1261, 1264, 1263, 1275, 1276, 1278, 1288, 1289, 1041 1294, 1298, 1300, 1302, 1304, 1306, 1308, 1310, 1312, 1317, 1042 1319, 1321, 1323, 1325, 1327, 1329, 1331, 1333, 1335, 1337, 1043 1339, 1345, 1346, 1348, 1350, 1352, 1357, 1358, 1364, 1365, 1044 1367, 1369, 1374, 1376, 1378, 1380, 1385, 1386, 1388, 1390, 1045 1395, 1396, 1398, 1403, 1404, 1406, 1408, 1413, 1415, 1417, 1046 1422, 1423, 1427, 1429, 1431, 1433, 1435, 1440, 1442, 1447, 1047 1449, 1454, 1455, 1457, 1458, 1463, 1464, 1466, 1468, 1473, 1048 1475, 1481, 1482, 1484, 1487, 1490, 1495, 1496, 1501, 1506, 1049 1510, 1512, 1514, 1519, 1521, 1527, 1528, 1536, 1537, 1541, 1050 1542, 1543, 1545, 1547, 1554, 1555, 1557, 1559, 1564, 1565, 1051 1571, 1572, 1576, 1577, 1582, 1583, 1584, 1586, 1594, 1595, 1052 1597, 1600, 1602, 1606, 1607, 1608, 1610, 1612, 1616, 1621, 1053 1629, 1630, 1639, 1641, 1646, 1647, 1648, 1652, 1653, 1654, 1054 1658, 1659, 1660, 1664, 1665, 1666, 1671, 1672, 1673, 1674, 1055 1680, 1681, 1683, 1688, 1689, 1694, 1695, 1696, 1697, 1698, 1056 1713, 1714, 1719, 1720, 1728, 1730, 1732, 1735, 1737, 1739, 1057 1762, 1763, 1765, 1767, 1772, 1773, 1775, 1780, 1785, 1786, 1058 1792, 1791, 1795, 1799, 1801, 1803, 1809, 1810, 1815, 1820, 1059 1822, 1827, 1829, 1830, 1832, 1837, 1839, 1841, 1846, 1848, 1060 1853, 1858, 1866, 1872, 1871, 1885, 1886, 1891, 1892, 1896, 1061 1901, 1906, 1914, 1919, 1930, 1931, 1942, 1943, 1949, 1950, 1062 1954, 1955, 1956, 1959, 1958, 1969, 1974, 1979, 1985, 1994, 1063 2000, 2006, 2012, 2018, 2026, 2032, 2040, 2046, 2055, 2056, 1064 2057, 2061, 2065, 2067, 2072, 2073, 2077, 2078, 2083, 2089, 1065 2090, 2093, 2095, 2096, 2100, 2101, 2102, 2103, 2137, 2139, 1066 2140, 2142, 2147, 2152, 2157, 2159, 2161, 2166, 2168, 2170, 1067 2172, 2177, 2179, 2189, 2191, 2192, 2197, 2199, 2201, 2206, 1068 2208, 2210, 2215, 2217, 2219, 2228, 2229, 2230, 2234, 2236, 1069 2238, 2243, 2245, 2247, 2252, 2254, 2256, 2271, 2273, 2274, 1070 2276, 2281, 2282, 2287, 2289, 2291, 2296, 2298, 2300, 2302, 1071 2307, 2309, 2311, 2321, 2323, 2324, 2326, 2331, 2333, 2335, 1072 2340, 2342, 2344, 2346, 2351, 2353, 2355, 2386, 2388, 2389, 1073 2391, 2396, 2401, 2409, 2411, 2413, 2418, 2420, 2425, 2427, 1074 2441, 2442, 2444, 2449, 2451, 2453, 2455, 2457, 2462, 2463, 1075 2465, 2467, 2472, 2474, 2476, 2482, 2484, 2486, 2490, 2492, 1076 2494, 2496, 2510, 2511, 2513, 2518, 2520, 2522, 2524, 2526, 1077 2531, 2532, 2534, 2536, 2541, 2543, 2545, 2551, 2552, 2554, 1078 2563, 2566, 2568, 2571, 2573, 2575, 2588, 2589, 2591, 2596, 1079 2598, 2600, 2602, 2604, 2609, 2610, 2612, 2614, 2619, 2621, 1080 2629, 2630, 2631, 2636, 2637, 2641, 2643, 2645, 2647, 2649, 1081 2651, 2658, 2660, 2662, 2664, 2666, 2668, 2670, 2672, 2674, 1082 2676, 2681, 2683, 2685, 2690, 2716, 2717, 2719, 2723, 2724, 1083 2728, 2730, 2732, 2734, 2736, 2738, 2745, 2747, 2749, 2751, 1084 2753, 2755, 2760, 2765, 2767, 2769, 2787, 2789, 2794, 2795 1067 1085 }; 1068 1086 #endif … … 1080 1098 "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", 1081 1099 "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", "CHOOSE", 1082 "FALLTHRU", "TRY", "CATCH", "FINALLY", "THROW", "ASM", "ALIGNAS", 1083 "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT", 1084 "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname", 1085 "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname", 1100 "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH", "CATCHRESUME", 1101 "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS", "ALIGNOF", 1102 "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT", "THREADLOCAL", 1103 "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname", "TYPEGENname", 1104 "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname", 1086 1105 "INTEGERconstant", "FLOATINGconstant", "CHARACTERconstant", 1087 1106 "STRINGliteral", "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE", 1088 1107 "GE", "EQ", "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign", 1089 1108 "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign", 1090 "RSassign", "ANDassign", "ERassign", "ORassign", " THEN", "'('", "')'",1091 "' ['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'", "'*'", "'&'",1092 "' +'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'",1093 "' ='", "';'", "$accept", "push", "pop", "constant", "identifier",1094 " no_01_identifier", "no_attr_identifier", "zero_one",1109 "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN", 1110 "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'", 1111 "'*'", "'&'", "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", 1112 "'|'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant", 1113 "identifier", "no_01_identifier", "no_attr_identifier", "zero_one", 1095 1114 "string_literal_list", "primary_expression", "postfix_expression", 1096 1115 "argument_expression_list", "argument_expression", "field_list", "field", … … 1195 1214 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 1196 1215 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 1197 355, 40, 41, 91, 93, 46, 123, 125, 44, 58, 1198 33, 42, 38, 43, 45, 126, 47, 37, 60, 62, 1199 94, 124, 63, 61, 59 1216 355, 356, 357, 358, 359, 360, 361, 40, 41, 91, 1217 93, 46, 123, 125, 44, 58, 33, 42, 38, 43, 1218 45, 126, 47, 37, 60, 62, 94, 124, 63, 61, 1219 59 1200 1220 }; 1201 1221 # endif … … 1204 1224 static const yytype_uint16 yyr1[] = 1205 1225 { 1206 0, 1 25, 126, 127, 128, 128, 128, 129, 129, 129,1207 13 0, 130, 131, 132, 132, 133, 133, 134, 134, 134,1208 1 34, 135, 135, 135, 135, 135, 135, 135, 135, 135,1209 1 35, 136, 136, 137, 137, 137, 137, 137, 138, 138,1210 1 39, 139, 139, 139, 139, 140, 140, 140, 140, 140,1211 14 0, 140, 140, 140, 140, 140, 140, 140, 140, 140,1212 14 0, 140, 141, 141, 141, 141, 142, 142, 142, 143,1213 14 3, 143, 143, 144, 144, 144, 145, 145, 145, 146,1214 1 46, 146, 146, 146, 147, 147, 147, 148, 148, 149,1215 1 49, 150, 150, 151, 151, 152, 152, 153, 153, 153,1216 15 3, 154, 155, 155, 155, 155, 156, 156, 157, 157,1217 1 57, 157, 158, 158, 159, 159, 159, 159, 159, 159,1218 1 59, 159, 159, 159, 160, 160, 161, 161, 162, 162,1219 16 2, 162, 162, 162, 162, 162, 163, 164, 164, 165,1220 1 65, 166, 166, 166, 166, 167, 167, 168, 169, 169,1221 1 69, 169, 169, 169, 170, 170, 170, 171, 171, 172,1222 17 2, 173, 173, 174, 175, 175, 176, 176, 177, 177,1223 1 78, 178, 178, 178, 179, 179, 180, 180, 181, 181,1224 18 1, 182, 182, 183, 183, 183, 183, 183, 183, 183,1225 18 3, 183, 184, 184, 184, 185, 185, 185, 186, 186,1226 1 87, 188, 188, 188, 188, 188, 189, 189, 189, 189,1227 1 89, 190, 190, 191, 191, 192, 192, 193, 193, 194,1228 19 4, 194, 195, 195, 196, 196, 197, 197, 198, 198,1229 199, 199, 200, 200, 201, 201, 202, 202, 203, 203,1230 20 4, 204, 204, 204, 204, 205, 205, 205, 206, 206,1231 2 06, 207, 207, 207, 207, 207, 208, 208, 208, 209,1232 2 09, 210, 210, 210, 211, 211, 211, 211, 211, 212,1233 21 2, 213, 213, 213, 213, 214, 214, 215, 215, 215,1234 21 5, 216, 216, 216, 216, 217, 217, 218, 218, 219,1235 2 19, 220, 220, 220, 220, 220, 221, 220, 222, 222,1236 22 2, 223, 223, 224, 225, 225, 225, 225, 225, 225,1237 2 25, 225, 226, 226, 226, 226, 226, 226, 226, 226,1238 2 26, 226, 226, 226, 227, 227, 227, 227, 227, 228,1239 2 28, 229, 229, 229, 229, 230, 230, 230, 230, 231,1240 23 1, 231, 231, 232, 232, 232, 233, 233, 233, 233,1241 23 4, 234, 234, 235, 235, 236, 236, 236, 236, 236,1242 2 37, 237, 238, 238, 239, 239, 239, 239, 240, 240,1243 24 0, 240, 241, 241, 242, 242, 242, 242, 242, 243,1244 24 3, 244, 245, 246, 246, 246, 247, 247, 248, 248,1245 2 49, 249, 250, 250, 250, 250, 250, 251, 251, 251,1246 25 1, 252, 252, 253, 253, 254, 254, 255, 255, 255,1247 25 5, 256, 256, 256, 256, 256, 257, 257, 257, 257,1248 2 57, 258, 258, 259, 259, 260, 260, 261, 261, 261,1249 26 2, 262, 262, 263, 263, 263, 264, 264, 264, 265,1250 26 5, 265, 265, 266, 266, 267, 267, 268, 268, 268,1251 2 68, 269, 269, 270, 270, 271, 271, 271, 271, 271,1252 27 1, 272, 272, 272, 272, 273, 273, 273, 274, 275,1253 27 5, 277, 276, 276, 278, 278, 278, 279, 279, 280,1254 28 0, 280, 281, 281, 281, 281, 282, 282, 282, 283,1255 28 3, 284, 284, 285, 286, 285, 287, 287, 288, 288,1256 2 89, 289, 289, 290, 290, 291, 291, 292, 292, 293,1257 29 3, 294, 294, 294, 295, 294, 294, 296, 296, 296,1258 297, 297, 297, 297, 297, 297, 297, 297, 297, 298,1259 298, 298, 299, 300, 300, 301, 301, 302, 302, 303,1260 304, 30 4, 305, 305, 305, 306, 306, 306, 306, 307,1261 3 07, 307, 307, 308, 308, 309, 309, 309, 310, 310,1262 31 0, 310, 311, 311, 312, 312, 312, 313, 313, 313,1263 31 4, 314, 314, 315, 315, 315, 316, 316, 316, 317,1264 3 17, 317, 318, 318, 318, 319, 319, 319, 320, 320,1265 32 0, 320, 321, 321, 322, 322, 322, 323, 323, 323,1266 32 3, 324, 324, 324, 325, 325, 325, 325, 326, 326,1267 3 26, 327, 327, 327, 327, 328, 328, 328, 329, 329,1268 3 29, 329, 330, 330, 331, 331, 331, 332, 332, 333,1269 33 3, 334, 334, 334, 335, 335, 335, 335, 335, 336,1270 3 36, 336, 336, 337, 337, 337, 338, 338, 338, 339,1271 3 39, 339, 339, 340, 340, 340, 341, 341, 341, 341,1272 34 1, 342, 342, 342, 342, 343, 343, 343, 344, 344,1273 34 4, 345, 345, 345, 345, 345, 345, 346, 346, 346,1274 3 47, 347, 347, 347, 347, 348, 348, 348, 348, 349,1275 3 49, 350, 350, 350, 351, 351, 352, 352, 352, 352,1276 35 2, 352, 353, 353, 353, 353, 353, 353, 353, 353,1277 35 3, 353, 354, 354, 354, 354, 355, 355, 355, 356,1278 35 6, 357, 357, 357, 357, 357, 357, 358, 358, 358,1279 3 58, 358, 358, 359, 360, 360, 360, 361, 361, 362,1280 36 21226 0, 131, 132, 133, 134, 134, 134, 135, 135, 135, 1227 136, 136, 137, 138, 138, 139, 139, 140, 140, 140, 1228 140, 141, 141, 141, 141, 141, 141, 141, 141, 141, 1229 141, 141, 142, 142, 143, 143, 143, 143, 143, 144, 1230 144, 145, 145, 145, 145, 145, 146, 146, 146, 146, 1231 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 1232 146, 146, 146, 147, 147, 147, 147, 148, 148, 148, 1233 149, 149, 149, 149, 150, 150, 150, 151, 151, 151, 1234 152, 152, 152, 152, 152, 153, 153, 153, 154, 154, 1235 155, 155, 156, 156, 157, 157, 158, 158, 159, 159, 1236 159, 159, 160, 161, 161, 161, 161, 162, 162, 163, 1237 163, 163, 163, 164, 164, 165, 165, 165, 165, 165, 1238 165, 165, 165, 165, 165, 166, 166, 167, 167, 168, 1239 168, 168, 168, 168, 168, 168, 168, 168, 169, 170, 1240 170, 171, 171, 172, 172, 172, 172, 173, 173, 174, 1241 175, 175, 175, 175, 175, 175, 176, 176, 176, 177, 1242 177, 178, 178, 179, 179, 180, 181, 181, 182, 182, 1243 183, 183, 184, 184, 184, 184, 185, 185, 186, 186, 1244 187, 187, 187, 188, 188, 189, 189, 189, 189, 189, 1245 189, 189, 189, 189, 189, 190, 190, 190, 191, 191, 1246 191, 191, 191, 192, 192, 192, 192, 193, 194, 194, 1247 194, 194, 194, 195, 195, 195, 195, 195, 196, 196, 1248 197, 197, 198, 198, 199, 199, 200, 200, 200, 201, 1249 201, 202, 202, 203, 203, 204, 204, 205, 205, 206, 1250 206, 207, 207, 208, 208, 209, 209, 210, 210, 210, 1251 210, 210, 211, 211, 211, 212, 212, 212, 213, 213, 1252 213, 213, 213, 214, 214, 214, 215, 215, 216, 216, 1253 216, 217, 217, 217, 217, 217, 218, 218, 219, 219, 1254 219, 219, 220, 220, 221, 221, 221, 221, 222, 222, 1255 222, 222, 223, 223, 224, 224, 225, 225, 226, 226, 1256 226, 226, 226, 227, 226, 228, 228, 228, 229, 229, 1257 230, 231, 231, 231, 231, 231, 231, 231, 231, 232, 1258 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 1259 232, 233, 233, 233, 233, 233, 234, 234, 235, 235, 1260 235, 235, 236, 236, 236, 236, 237, 237, 237, 237, 1261 238, 238, 238, 239, 239, 239, 239, 240, 240, 240, 1262 241, 241, 242, 242, 242, 242, 242, 243, 243, 244, 1263 244, 245, 245, 245, 245, 246, 246, 246, 246, 247, 1264 247, 248, 248, 248, 248, 248, 249, 249, 250, 251, 1265 252, 252, 252, 253, 253, 254, 254, 255, 255, 256, 1266 256, 256, 256, 256, 257, 257, 257, 257, 258, 258, 1267 259, 259, 260, 260, 261, 261, 261, 261, 262, 262, 1268 262, 262, 262, 263, 263, 263, 263, 263, 264, 264, 1269 265, 265, 266, 266, 267, 267, 267, 268, 268, 268, 1270 269, 269, 269, 270, 270, 270, 271, 271, 271, 271, 1271 272, 272, 272, 273, 273, 274, 274, 274, 274, 274, 1272 275, 275, 276, 276, 277, 277, 277, 277, 277, 277, 1273 278, 278, 278, 278, 279, 279, 279, 280, 281, 281, 1274 283, 282, 282, 284, 284, 284, 285, 285, 286, 286, 1275 286, 287, 287, 287, 287, 288, 288, 288, 289, 289, 1276 290, 290, 291, 292, 291, 293, 293, 294, 294, 295, 1277 295, 295, 296, 296, 297, 297, 298, 298, 299, 299, 1278 300, 300, 300, 301, 300, 300, 302, 302, 302, 303, 1279 303, 303, 303, 303, 303, 303, 303, 303, 304, 304, 1280 304, 305, 306, 306, 307, 307, 308, 308, 309, 310, 1281 310, 311, 311, 311, 312, 312, 312, 312, 313, 313, 1282 313, 313, 314, 314, 315, 315, 315, 316, 316, 316, 1283 316, 317, 317, 318, 318, 318, 319, 319, 319, 320, 1284 320, 320, 321, 321, 321, 322, 322, 322, 323, 323, 1285 323, 324, 324, 324, 325, 325, 325, 326, 326, 326, 1286 326, 327, 327, 328, 328, 328, 329, 329, 329, 329, 1287 330, 330, 330, 331, 331, 331, 331, 332, 332, 332, 1288 333, 333, 333, 333, 334, 334, 334, 335, 335, 335, 1289 335, 336, 336, 337, 337, 337, 338, 338, 339, 339, 1290 340, 340, 340, 341, 341, 341, 341, 341, 342, 342, 1291 342, 342, 343, 343, 343, 344, 344, 344, 345, 345, 1292 345, 345, 346, 346, 346, 347, 347, 347, 347, 347, 1293 348, 348, 348, 348, 349, 349, 349, 350, 350, 350, 1294 351, 351, 351, 351, 351, 351, 352, 352, 352, 353, 1295 353, 353, 353, 353, 354, 354, 354, 354, 355, 355, 1296 356, 356, 356, 357, 357, 358, 358, 358, 358, 358, 1297 358, 359, 359, 359, 359, 359, 359, 359, 359, 359, 1298 359, 360, 360, 360, 360, 361, 361, 361, 362, 362, 1299 363, 363, 363, 363, 363, 363, 364, 364, 364, 364, 1300 364, 364, 365, 366, 366, 366, 367, 367, 368, 368 1281 1301 }; 1282 1302 … … 1287 1307 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, 1288 1308 3, 1, 6, 4, 3, 7, 3, 7, 2, 2, 1289 7, 1, 3, 0, 1, 3, 7, 9, 1, 3,1290 1, 3, 7, 3, 7, 1, 1, 1, 2, 2,1291 2, 2, 2, 2, 2, 4, 1, 4, 4, 2,1292 4, 2, 1, 1, 1, 1, 1, 4, 4, 1,1293 3, 3, 3, 1, 3, 3, 1, 3, 3, 1,1294 3, 3, 3, 3, 1, 3, 3, 1, 3, 1,1295 3, 1, 3, 1, 3, 1, 3, 1, 5, 4,1296 5, 1, 1, 3, 3, 2, 0, 1, 2, 5,1297 6, 7, 1, 3, 1, 1, 1, 1, 1, 1,1298 1, 1, 1, 1, 1, 3, 0, 1, 1, 1,1299 1, 1, 1, 1, 1, 1, 4, 2, 7, 1,1300 3, 1, 2, 1, 2, 1, 2, 2, 5, 7,1301 5, 9, 5, 9, 1, 3, 1, 1, 3, 3,1302 2, 1, 2, 2, 0, 1, 2, 3, 0, 1,1303 2, 3, 3, 4, 0, 1, 1, 2, 5, 7,1304 6, 6, 4, 3, 4, 2, 3, 2, 3, 3,1305 3, 2, 3, 3, 4, 1, 5, 6, 9, 10,1306 2, 1, 2, 2, 2, 1, 6, 8, 10, 12,1307 14, 0, 1, 0, 1, 1, 3, 4, 7, 0,1308 1, 3, 1, 3, 1, 1, 1, 3, 1, 1,1309 1, 3, 0, 1, 3, 4, 1, 3, 1, 1,1310 3, 3, 3, 3, 3, 2, 3, 6, 3, 3,1311 4, 1, 2, 2, 3, 5, 8, 7, 7, 5,1312 9, 2, 2, 5, 3, 5, 4, 3, 4, 4,1313 7, 3, 3, 3, 3, 4, 6, 1, 1, 1,1314 1, 1, 1, 1, 1, 0, 1, 1, 2, 1,1315 1, 1, 1, 1, 1, 1, 0, 5, 1, 2,1316 3, 1, 2, 1, 1, 1, 1, 1, 1, 1,1309 7, 4, 1, 3, 0, 1, 3, 7, 9, 1, 1310 3, 1, 3, 7, 3, 7, 1, 1, 1, 2, 1311 2, 2, 2, 2, 2, 2, 4, 1, 4, 4, 1312 2, 4, 2, 1, 1, 1, 1, 1, 4, 4, 1313 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1314 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1315 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1316 4, 5, 1, 1, 3, 3, 2, 0, 1, 2, 1317 5, 6, 7, 1, 3, 1, 1, 1, 1, 1, 1318 1, 1, 1, 1, 1, 1, 3, 0, 1, 1, 1319 1, 1, 1, 1, 1, 1, 1, 6, 4, 2, 1320 7, 1, 3, 1, 2, 1, 2, 1, 2, 2, 1321 5, 7, 5, 9, 5, 9, 1, 3, 1, 1, 1322 3, 3, 2, 1, 2, 2, 0, 1, 2, 3, 1323 0, 1, 2, 3, 3, 4, 0, 1, 1, 2, 1324 5, 7, 6, 6, 4, 3, 4, 2, 3, 2, 1325 3, 3, 3, 3, 5, 3, 3, 4, 1, 5, 1326 6, 5, 6, 9, 10, 9, 10, 2, 1, 2, 1327 2, 2, 1, 6, 8, 10, 12, 14, 0, 1, 1328 0, 1, 1, 3, 4, 7, 0, 1, 3, 1, 1329 3, 1, 1, 1, 3, 1, 1, 1, 3, 0, 1330 1, 3, 4, 1, 3, 1, 1, 3, 3, 3, 1331 3, 3, 2, 3, 6, 3, 3, 4, 1, 2, 1332 2, 3, 5, 8, 7, 7, 5, 9, 2, 2, 1333 5, 3, 5, 4, 3, 4, 4, 7, 3, 3, 1334 3, 3, 4, 6, 1, 1, 1, 1, 1, 1, 1335 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1336 1, 1, 1, 0, 5, 1, 2, 3, 1, 2, 1317 1337 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1318 1, 1, 1, 1, 1, 2, 2, 3, 3, 1, 1319 3, 1, 2, 2, 2, 4, 4, 4, 4, 1, 1320 2, 2, 3, 1, 2, 2, 1, 2, 2, 3, 1321 1, 2, 2, 1, 1, 4, 2, 5, 7, 2, 1322 2, 2, 1, 2, 2, 3, 2, 3, 1, 2, 1323 3, 2, 2, 4, 0, 1, 2, 2, 1, 0, 1324 1, 2, 2, 5, 6, 2, 2, 4, 0, 2, 1325 0, 1, 1, 1, 5, 5, 5, 1, 5, 5, 1326 9, 1, 5, 0, 1, 1, 5, 1, 1, 5, 1327 5, 1, 3, 3, 4, 1, 1, 1, 1, 2, 1328 1, 3, 3, 1, 2, 1, 3, 1, 1, 1, 1329 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1330 1, 1, 2, 0, 2, 1, 4, 1, 2, 3, 1331 4, 2, 2, 1, 2, 1, 2, 5, 5, 7, 1332 6, 1, 2, 2, 3, 1, 2, 2, 4, 2, 1333 4, 0, 4, 2, 1, 1, 1, 0, 2, 5, 1334 5, 13, 1, 1, 3, 3, 2, 3, 3, 2, 1335 4, 1, 6, 9, 0, 11, 1, 3, 3, 3, 1336 1, 1, 5, 2, 5, 0, 1, 1, 3, 0, 1337 1, 1, 1, 1, 0, 6, 2, 1, 2, 4, 1338 2, 3, 3, 3, 4, 5, 5, 5, 6, 1, 1339 1, 1, 3, 0, 5, 0, 1, 1, 2, 6, 1340 1, 3, 0, 1, 4, 1, 1, 1, 1, 2, 1341 1, 2, 2, 1, 3, 2, 3, 3, 2, 4, 1342 4, 3, 8, 3, 2, 1, 2, 6, 8, 3, 1343 2, 3, 3, 4, 4, 3, 1, 1, 1, 4, 1344 6, 3, 2, 3, 3, 4, 4, 3, 2, 1, 1338 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1339 1, 1, 2, 2, 3, 3, 1, 3, 1, 2, 1340 2, 2, 4, 4, 4, 4, 1, 2, 2, 3, 1341 1, 2, 2, 1, 2, 2, 3, 1, 2, 2, 1342 1, 1, 4, 2, 5, 7, 2, 2, 2, 1, 1343 2, 2, 3, 2, 3, 1, 2, 3, 2, 2, 1344 4, 0, 1, 2, 2, 1, 0, 1, 2, 2, 1345 5, 6, 2, 2, 4, 0, 2, 0, 1, 1, 1346 1, 5, 5, 5, 1, 5, 5, 9, 1, 5, 1347 0, 1, 1, 5, 1, 1, 5, 5, 1, 3, 1348 3, 4, 1, 1, 1, 1, 2, 1, 3, 3, 1349 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1350 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1351 0, 2, 2, 1, 4, 0, 1, 2, 3, 4, 1352 2, 2, 1, 2, 1, 2, 5, 5, 7, 6, 1353 1, 2, 2, 3, 1, 2, 2, 4, 2, 4, 1354 0, 4, 2, 1, 1, 1, 0, 2, 5, 5, 1355 13, 1, 1, 3, 3, 2, 3, 3, 2, 4, 1356 1, 6, 9, 0, 11, 1, 3, 3, 3, 1, 1357 1, 5, 2, 5, 0, 1, 1, 3, 0, 1, 1358 1, 1, 1, 0, 6, 2, 1, 2, 4, 2, 1359 3, 3, 3, 4, 5, 5, 5, 6, 1, 1, 1360 1, 3, 0, 5, 0, 1, 1, 2, 6, 1, 1361 3, 0, 1, 4, 1, 1, 1, 1, 2, 1, 1345 1362 2, 2, 1, 3, 2, 3, 3, 2, 4, 4, 1346 3, 6, 8, 3, 2, 1, 2, 2, 2, 3, 1347 3, 2, 4, 4, 3, 6, 8, 3, 2, 1, 1348 2, 2, 1, 1, 2, 3, 3, 2, 4, 6, 1349 8, 1, 2, 2, 1, 2, 2, 3, 3, 1, 1350 4, 4, 3, 5, 8, 3, 2, 3, 1, 5, 1351 5, 6, 6, 1, 2, 2, 1, 2, 2, 3, 1352 3, 1, 4, 4, 3, 5, 8, 3, 1, 2, 1353 1, 2, 6, 5, 6, 7, 7, 1, 2, 2, 1354 1, 2, 2, 3, 3, 1, 4, 4, 3, 8, 1355 3, 1, 1, 2, 1, 1, 2, 3, 2, 3, 1356 2, 3, 3, 2, 4, 3, 2, 3, 2, 4, 1357 3, 2, 6, 6, 6, 7, 1, 2, 1, 1, 1358 1, 2, 3, 2, 3, 2, 3, 3, 4, 2, 1359 3, 4, 2, 5, 5, 6, 6, 0, 1, 0, 1360 2 1363 3, 8, 3, 2, 1, 2, 6, 8, 3, 2, 1364 3, 3, 4, 4, 3, 1, 1, 1, 4, 6, 1365 3, 2, 3, 3, 4, 4, 3, 2, 1, 2, 1366 2, 1, 3, 2, 3, 3, 2, 4, 4, 3, 1367 6, 8, 3, 2, 1, 2, 2, 2, 3, 3, 1368 2, 4, 4, 3, 6, 8, 3, 2, 1, 2, 1369 2, 1, 1, 2, 3, 3, 2, 4, 6, 8, 1370 1, 2, 2, 1, 2, 2, 3, 3, 1, 4, 1371 4, 3, 5, 8, 3, 2, 3, 1, 5, 5, 1372 6, 6, 1, 2, 2, 1, 2, 2, 3, 3, 1373 1, 4, 4, 3, 5, 8, 3, 1, 2, 1, 1374 2, 6, 5, 6, 7, 7, 1, 2, 2, 1, 1375 2, 2, 3, 3, 1, 4, 4, 3, 8, 3, 1376 1, 1, 2, 1, 1, 2, 3, 2, 3, 2, 1377 3, 3, 2, 4, 3, 2, 3, 2, 4, 3, 1378 2, 6, 6, 6, 7, 1, 2, 1, 1, 1, 1379 2, 3, 2, 3, 2, 3, 3, 4, 2, 3, 1380 4, 2, 5, 5, 6, 6, 0, 1, 0, 2 1361 1381 }; 1362 1382 … … 1366 1386 static const yytype_uint16 yydefact[] = 1367 1387 { 1368 285, 285, 306, 304, 307, 305, 308, 309, 291, 293, 1369 292, 0, 294, 320, 312, 317, 315, 316, 314, 313, 1370 318, 319, 321, 322, 323, 535, 535, 535, 0, 0, 1371 0, 285, 211, 295, 310, 311, 7, 350, 0, 8, 1372 13, 14, 0, 2, 285, 553, 9, 513, 511, 238, 1373 3, 443, 3, 251, 0, 3, 3, 3, 239, 3, 1374 0, 0, 0, 286, 287, 289, 285, 298, 301, 303, 1375 331, 277, 324, 329, 278, 339, 279, 346, 343, 353, 1376 0, 0, 354, 280, 461, 465, 3, 3, 0, 2, 1377 507, 512, 517, 290, 0, 0, 535, 565, 535, 2, 1378 576, 577, 578, 285, 0, 719, 720, 0, 12, 285, 1379 0, 261, 262, 0, 286, 281, 282, 283, 284, 514, 1380 296, 382, 536, 537, 360, 361, 12, 434, 435, 11, 1381 430, 433, 0, 491, 486, 477, 434, 435, 0, 0, 1382 516, 212, 0, 285, 0, 0, 0, 0, 0, 0, 1383 0, 0, 285, 285, 2, 0, 721, 286, 570, 582, 1384 725, 718, 716, 723, 0, 0, 245, 2, 0, 520, 1385 428, 429, 427, 0, 0, 0, 0, 535, 0, 622, 1386 623, 0, 0, 533, 529, 535, 550, 535, 535, 530, 1387 2, 531, 535, 589, 535, 535, 592, 0, 0, 0, 1388 285, 285, 304, 351, 2, 285, 252, 288, 299, 332, 1389 344, 466, 0, 2, 0, 443, 253, 286, 325, 340, 1390 347, 462, 0, 2, 0, 302, 326, 333, 334, 0, 1391 341, 345, 348, 352, 435, 285, 285, 356, 359, 0, 1392 385, 463, 467, 0, 0, 0, 1, 285, 2, 518, 1393 564, 566, 285, 2, 729, 286, 732, 533, 533, 286, 1394 0, 0, 0, 264, 535, 530, 2, 285, 0, 0, 1395 285, 538, 2, 489, 2, 542, 0, 0, 0, 0, 1396 0, 17, 56, 4, 5, 6, 15, 0, 0, 0, 1397 285, 2, 0, 285, 62, 63, 64, 65, 46, 18, 1398 47, 21, 45, 66, 0, 69, 73, 76, 79, 84, 1399 87, 89, 91, 93, 95, 97, 102, 483, 739, 441, 1400 482, 0, 439, 440, 0, 554, 569, 572, 575, 581, 1401 584, 587, 350, 0, 2, 727, 0, 285, 730, 2, 1402 285, 3, 415, 0, 423, 286, 285, 298, 324, 278, 1403 339, 346, 3, 3, 397, 401, 411, 416, 461, 285, 1404 417, 694, 695, 285, 418, 420, 285, 2, 571, 583, 1405 717, 2, 2, 240, 2, 0, 0, 445, 444, 137, 1406 2, 2, 242, 2, 2, 241, 2, 272, 2, 273, 1407 0, 271, 0, 0, 0, 0, 0, 0, 0, 0, 1408 0, 555, 594, 0, 443, 2, 549, 558, 648, 551, 1409 552, 521, 285, 2, 588, 597, 590, 591, 0, 267, 1410 285, 285, 330, 286, 0, 286, 0, 285, 722, 726, 1411 724, 522, 285, 533, 246, 254, 300, 0, 2, 523, 1412 285, 487, 327, 328, 274, 342, 349, 0, 285, 2, 1413 374, 285, 362, 0, 0, 368, 716, 285, 737, 388, 1414 0, 464, 488, 243, 244, 508, 285, 425, 0, 285, 1415 228, 0, 2, 230, 0, 286, 0, 248, 2, 249, 1416 269, 0, 0, 2, 285, 533, 285, 474, 476, 475, 1417 0, 0, 739, 0, 285, 0, 285, 478, 285, 548, 1418 546, 547, 545, 0, 540, 543, 0, 0, 285, 54, 1419 66, 50, 285, 59, 285, 285, 48, 49, 61, 2, 1420 124, 0, 0, 437, 0, 436, 108, 285, 52, 53, 1421 16, 0, 28, 29, 33, 2, 0, 114, 115, 116, 1422 117, 118, 119, 120, 121, 122, 123, 0, 0, 51, 1388 292, 292, 313, 311, 314, 312, 315, 316, 298, 300, 1389 299, 0, 301, 327, 319, 324, 322, 323, 321, 320, 1390 325, 326, 328, 329, 330, 544, 544, 544, 0, 0, 1391 0, 292, 218, 302, 317, 318, 7, 357, 0, 8, 1392 13, 14, 0, 2, 292, 562, 9, 522, 520, 245, 1393 3, 450, 3, 258, 0, 3, 3, 3, 246, 3, 1394 0, 0, 0, 293, 294, 296, 292, 305, 308, 310, 1395 338, 284, 331, 336, 285, 346, 286, 353, 350, 360, 1396 0, 0, 361, 287, 470, 474, 3, 3, 0, 2, 1397 516, 521, 526, 297, 0, 0, 544, 574, 544, 2, 1398 585, 586, 587, 292, 0, 728, 729, 0, 12, 292, 1399 0, 268, 269, 0, 293, 288, 289, 290, 291, 523, 1400 303, 389, 545, 546, 367, 368, 12, 441, 442, 11, 1401 437, 440, 0, 500, 495, 486, 441, 442, 0, 0, 1402 525, 219, 0, 292, 0, 0, 0, 0, 0, 0, 1403 0, 0, 292, 292, 2, 0, 730, 293, 579, 591, 1404 734, 727, 725, 732, 0, 0, 0, 252, 2, 0, 1405 529, 435, 436, 434, 0, 0, 0, 0, 544, 0, 1406 631, 632, 0, 0, 542, 538, 544, 559, 544, 544, 1407 539, 2, 540, 544, 598, 544, 544, 601, 0, 0, 1408 0, 292, 292, 311, 358, 2, 292, 259, 295, 306, 1409 339, 351, 475, 0, 2, 0, 450, 260, 293, 332, 1410 347, 354, 471, 0, 2, 0, 309, 333, 340, 341, 1411 0, 348, 352, 355, 359, 442, 292, 292, 363, 366, 1412 0, 392, 472, 476, 0, 0, 0, 1, 292, 2, 1413 527, 573, 575, 292, 2, 738, 293, 741, 542, 542, 1414 293, 0, 0, 0, 271, 544, 539, 2, 292, 0, 1415 0, 292, 547, 2, 498, 2, 551, 0, 0, 0, 1416 0, 0, 17, 57, 4, 5, 6, 15, 0, 0, 1417 0, 292, 2, 0, 292, 63, 64, 65, 66, 47, 1418 18, 48, 21, 46, 67, 0, 70, 74, 77, 80, 1419 85, 88, 90, 92, 94, 96, 98, 103, 492, 748, 1420 448, 491, 0, 446, 447, 0, 563, 578, 581, 584, 1421 590, 593, 596, 357, 0, 2, 736, 0, 292, 739, 1422 2, 292, 3, 422, 0, 430, 293, 292, 305, 331, 1423 285, 346, 353, 3, 3, 404, 408, 418, 423, 470, 1424 292, 424, 703, 704, 292, 425, 427, 292, 2, 580, 1425 592, 726, 2, 2, 247, 2, 455, 0, 453, 452, 1426 451, 139, 2, 2, 249, 2, 2, 248, 2, 279, 1427 2, 280, 0, 278, 0, 0, 0, 0, 0, 0, 1428 0, 0, 0, 564, 603, 0, 450, 2, 558, 567, 1429 657, 560, 561, 530, 292, 2, 597, 606, 599, 600, 1430 0, 274, 292, 292, 337, 293, 0, 293, 0, 292, 1431 731, 735, 733, 531, 292, 542, 253, 261, 307, 0, 1432 2, 532, 292, 496, 334, 335, 281, 349, 356, 0, 1433 292, 2, 381, 292, 369, 0, 0, 375, 725, 292, 1434 746, 395, 0, 473, 497, 250, 251, 517, 292, 432, 1435 0, 292, 235, 0, 2, 237, 0, 293, 0, 255, 1436 2, 256, 276, 0, 0, 2, 292, 542, 292, 483, 1437 485, 484, 0, 0, 748, 0, 292, 0, 292, 487, 1438 292, 557, 555, 556, 554, 0, 549, 552, 0, 0, 1439 292, 55, 67, 51, 292, 60, 292, 292, 49, 50, 1440 62, 2, 125, 0, 0, 444, 0, 443, 109, 292, 1441 53, 54, 16, 0, 28, 29, 34, 2, 0, 34, 1442 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 1443 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 1423 1444 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1425 105, 2, 634, 442, 631, 535, 535, 639, 468, 285, 1426 2, 573, 574, 0, 585, 586, 0, 2, 728, 731, 1427 108, 285, 2, 285, 0, 696, 286, 700, 691, 692, 1428 698, 0, 2, 2, 656, 535, 739, 605, 535, 535, 1429 739, 535, 619, 535, 535, 670, 424, 653, 535, 535, 1430 661, 668, 285, 419, 286, 0, 0, 285, 706, 286, 1431 711, 739, 703, 285, 708, 739, 285, 285, 285, 0, 1432 108, 0, 17, 5, 2, 0, 0, 447, 737, 0, 1433 0, 453, 232, 0, 285, 0, 0, 0, 533, 557, 1434 561, 563, 593, 596, 600, 603, 556, 595, 0, 275, 1435 646, 0, 285, 268, 0, 0, 0, 0, 266, 2, 1436 0, 250, 524, 285, 0, 0, 0, 0, 285, 285, 1437 0, 0, 680, 372, 375, 379, 535, 379, 685, 378, 1438 677, 535, 535, 355, 363, 371, 364, 535, 366, 369, 1439 285, 738, 0, 0, 386, 737, 286, 3, 404, 3, 1440 408, 407, 579, 0, 519, 285, 3, 3, 285, 423, 1441 286, 3, 417, 418, 2, 0, 0, 0, 473, 297, 1442 285, 469, 471, 3, 2, 2, 0, 490, 3, 0, 1443 542, 126, 0, 0, 213, 0, 0, 2, 0, 0, 1444 34, 0, 0, 108, 285, 19, 0, 20, 0, 680, 1445 438, 0, 106, 3, 2, 26, 2, 0, 31, 0, 1446 2, 24, 103, 104, 70, 71, 72, 74, 75, 77, 1447 78, 82, 83, 80, 81, 85, 86, 88, 90, 92, 1448 94, 96, 0, 0, 740, 285, 0, 0, 0, 635, 1449 636, 632, 633, 485, 484, 285, 0, 3, 285, 702, 1450 285, 707, 286, 285, 285, 285, 650, 693, 649, 2, 1451 285, 0, 0, 0, 0, 0, 0, 0, 0, 671, 1452 0, 657, 608, 624, 658, 2, 604, 611, 421, 606, 1453 607, 422, 2, 618, 627, 620, 621, 654, 655, 669, 1454 697, 701, 699, 739, 259, 2, 733, 2, 412, 705, 1455 710, 413, 0, 391, 3, 3, 3, 3, 443, 3, 1456 0, 2, 456, 452, 738, 0, 448, 455, 2, 451, 1457 454, 0, 285, 233, 255, 3, 263, 265, 0, 443, 1458 2, 559, 560, 2, 598, 599, 0, 647, 525, 3, 1459 336, 335, 338, 337, 285, 526, 0, 527, 285, 365, 1460 367, 2, 0, 0, 0, 0, 101, 381, 681, 682, 1461 376, 380, 377, 678, 679, 370, 374, 357, 388, 383, 1462 389, 0, 0, 0, 426, 231, 0, 0, 3, 2, 1463 656, 419, 0, 515, 0, 739, 477, 0, 285, 285, 1464 285, 0, 539, 541, 127, 0, 0, 206, 0, 0, 1465 0, 214, 215, 55, 60, 285, 0, 58, 57, 0, 1466 125, 681, 0, 67, 68, 107, 112, 3, 106, 0, 1467 0, 0, 23, 33, 3, 0, 99, 0, 3, 638, 1468 642, 645, 637, 3, 580, 3, 704, 709, 2, 285, 1469 3, 3, 286, 0, 3, 610, 614, 617, 626, 660, 1470 664, 667, 285, 3, 609, 625, 659, 285, 285, 414, 1471 285, 285, 734, 0, 0, 0, 0, 247, 0, 101, 1472 0, 3, 3, 0, 449, 0, 446, 0, 0, 236, 1473 285, 0, 0, 126, 0, 0, 0, 0, 0, 126, 1474 0, 0, 0, 2, 0, 0, 3, 128, 129, 2, 1475 139, 130, 131, 132, 133, 134, 135, 141, 143, 0, 1476 0, 0, 276, 285, 285, 535, 0, 528, 285, 108, 1477 684, 688, 690, 683, 373, 387, 384, 567, 2, 652, 1478 651, 0, 657, 2, 470, 472, 492, 3, 500, 501, 1479 0, 2, 496, 3, 3, 0, 0, 544, 213, 0, 1480 0, 0, 213, 0, 3, 35, 737, 106, 0, 3, 1481 649, 40, 3, 38, 3, 32, 0, 3, 98, 100, 1482 0, 2, 640, 641, 0, 0, 285, 0, 0, 0, 1483 3, 626, 0, 2, 612, 613, 2, 628, 2, 662, 1484 663, 0, 0, 3, 0, 3, 3, 3, 3, 399, 1485 398, 402, 2, 2, 736, 735, 109, 0, 0, 0, 1486 0, 3, 450, 3, 0, 234, 142, 3, 286, 285, 1487 0, 0, 0, 0, 2, 187, 0, 185, 0, 0, 1488 0, 0, 0, 0, 191, 0, 108, 535, 147, 144, 1489 285, 0, 0, 258, 270, 3, 3, 534, 601, 358, 1490 2, 686, 687, 285, 257, 285, 0, 503, 480, 285, 1491 0, 0, 479, 494, 0, 0, 0, 207, 0, 216, 1492 106, 0, 0, 113, 110, 0, 0, 0, 0, 0, 1493 0, 22, 0, 643, 285, 568, 256, 712, 713, 714, 1494 0, 665, 285, 285, 285, 3, 3, 0, 673, 0, 1495 0, 0, 0, 285, 285, 3, 532, 457, 458, 0, 1496 0, 237, 286, 0, 0, 0, 0, 285, 188, 186, 1497 0, 183, 189, 0, 0, 0, 192, 195, 193, 190, 1498 126, 140, 138, 235, 0, 0, 285, 406, 410, 409, 1499 0, 497, 2, 498, 2, 499, 493, 285, 219, 0, 1500 217, 0, 219, 3, 649, 30, 111, 2, 43, 2, 1501 41, 39, 27, 109, 25, 3, 715, 3, 3, 3, 1502 0, 0, 672, 674, 615, 629, 260, 2, 396, 3, 1503 395, 0, 460, 457, 126, 0, 0, 126, 3, 0, 1504 126, 184, 0, 2, 200, 194, 0, 136, 562, 602, 1505 3, 2, 0, 0, 2, 220, 0, 0, 208, 0, 1506 0, 0, 0, 0, 0, 0, 0, 0, 675, 676, 1507 285, 0, 459, 148, 0, 0, 2, 161, 126, 150, 1508 0, 178, 0, 126, 0, 2, 152, 0, 2, 2, 1509 0, 285, 502, 504, 495, 0, 0, 0, 0, 111, 1510 36, 3, 3, 644, 616, 630, 666, 400, 126, 154, 1511 157, 0, 156, 160, 3, 163, 162, 0, 126, 180, 1512 126, 3, 0, 285, 0, 2, 689, 2, 221, 222, 1513 0, 218, 209, 0, 0, 0, 149, 0, 0, 159, 1514 224, 164, 2, 226, 179, 0, 182, 168, 196, 3, 1515 201, 205, 0, 285, 0, 0, 0, 37, 44, 42, 1516 155, 158, 126, 0, 165, 285, 126, 126, 0, 169, 1517 0, 0, 680, 202, 203, 204, 197, 3, 285, 210, 1518 223, 145, 166, 151, 126, 227, 181, 176, 174, 170, 1519 153, 126, 0, 681, 0, 0, 146, 167, 177, 171, 1520 175, 174, 172, 3, 0, 481, 173, 198, 3, 199 1445 0, 0, 0, 106, 2, 643, 449, 640, 544, 544, 1446 648, 477, 292, 2, 582, 583, 0, 594, 595, 0, 1447 2, 737, 740, 109, 292, 2, 292, 0, 705, 293, 1448 709, 700, 701, 707, 0, 2, 2, 665, 544, 748, 1449 614, 544, 544, 748, 544, 628, 544, 544, 679, 431, 1450 662, 544, 544, 670, 677, 292, 426, 293, 0, 0, 1451 292, 715, 293, 720, 748, 712, 292, 717, 748, 292, 1452 292, 292, 0, 109, 0, 17, 5, 2, 0, 0, 1453 456, 746, 0, 0, 462, 239, 0, 292, 0, 0, 1454 0, 542, 566, 570, 572, 602, 605, 609, 612, 565, 1455 604, 0, 282, 655, 0, 292, 275, 0, 0, 0, 1456 0, 273, 2, 0, 257, 533, 292, 0, 0, 0, 1457 0, 292, 292, 0, 0, 689, 379, 382, 386, 544, 1458 386, 694, 385, 686, 544, 544, 362, 370, 378, 371, 1459 544, 373, 376, 292, 747, 0, 0, 393, 746, 293, 1460 3, 411, 3, 415, 414, 588, 0, 528, 292, 3, 1461 3, 292, 430, 293, 3, 424, 425, 2, 0, 0, 1462 0, 482, 304, 292, 478, 480, 3, 2, 2, 0, 1463 499, 3, 0, 551, 127, 0, 0, 220, 0, 0, 1464 2, 0, 0, 35, 0, 0, 109, 292, 19, 0, 1465 20, 0, 689, 445, 0, 107, 3, 2, 26, 2, 1466 0, 32, 0, 2, 24, 0, 104, 105, 71, 72, 1467 73, 75, 76, 78, 79, 83, 84, 81, 82, 86, 1468 87, 89, 91, 93, 95, 97, 0, 0, 749, 292, 1469 0, 0, 0, 644, 645, 641, 642, 494, 493, 292, 1470 0, 3, 292, 711, 292, 716, 293, 292, 292, 292, 1471 659, 702, 658, 2, 292, 0, 0, 0, 0, 0, 1472 0, 0, 0, 680, 0, 666, 617, 633, 667, 2, 1473 613, 620, 428, 615, 616, 429, 2, 627, 636, 629, 1474 630, 663, 664, 678, 706, 710, 708, 748, 266, 2, 1475 742, 2, 419, 714, 719, 420, 0, 398, 3, 3, 1476 3, 3, 450, 3, 0, 2, 465, 461, 747, 0, 1477 457, 464, 2, 460, 463, 0, 292, 240, 262, 3, 1478 270, 272, 0, 450, 2, 568, 569, 2, 607, 608, 1479 0, 656, 534, 3, 343, 342, 345, 344, 292, 535, 1480 0, 536, 292, 372, 374, 2, 0, 0, 0, 0, 1481 102, 388, 690, 691, 383, 387, 384, 687, 688, 377, 1482 381, 364, 395, 390, 396, 0, 0, 0, 433, 238, 1483 0, 0, 3, 2, 665, 426, 0, 524, 0, 748, 1484 486, 0, 292, 292, 292, 0, 548, 550, 128, 0, 1485 0, 213, 0, 0, 0, 221, 222, 56, 61, 292, 1486 0, 59, 58, 0, 126, 690, 455, 68, 69, 108, 1487 113, 3, 107, 0, 0, 0, 23, 34, 3, 0, 1488 31, 100, 0, 3, 647, 651, 654, 646, 3, 589, 1489 3, 713, 718, 2, 292, 3, 3, 293, 0, 3, 1490 619, 623, 626, 635, 669, 673, 676, 292, 3, 618, 1491 634, 668, 292, 292, 421, 292, 292, 743, 0, 0, 1492 0, 0, 254, 0, 102, 0, 3, 3, 0, 458, 1493 0, 454, 0, 0, 243, 292, 0, 0, 127, 0, 1494 0, 0, 0, 0, 127, 0, 0, 107, 107, 2, 1495 0, 0, 0, 3, 129, 130, 2, 141, 131, 132, 1496 133, 134, 135, 136, 143, 145, 0, 0, 0, 283, 1497 292, 292, 544, 0, 537, 292, 109, 693, 697, 699, 1498 692, 380, 394, 391, 576, 2, 661, 660, 0, 666, 1499 2, 479, 481, 501, 3, 509, 510, 0, 2, 505, 1500 3, 3, 0, 0, 553, 220, 0, 0, 0, 220, 1501 0, 3, 36, 746, 107, 0, 3, 658, 41, 3, 1502 39, 3, 33, 0, 3, 99, 101, 0, 2, 649, 1503 650, 0, 0, 292, 0, 0, 0, 3, 635, 0, 1504 2, 621, 622, 2, 637, 2, 671, 672, 0, 0, 1505 3, 0, 3, 3, 3, 3, 406, 405, 409, 2, 1506 2, 745, 744, 110, 0, 0, 0, 0, 3, 459, 1507 3, 0, 241, 144, 3, 293, 292, 0, 0, 0, 1508 0, 2, 189, 0, 187, 0, 0, 0, 0, 0, 1509 0, 0, 0, 109, 0, 544, 149, 146, 292, 0, 1510 0, 265, 277, 3, 3, 543, 610, 365, 2, 695, 1511 696, 292, 264, 292, 0, 512, 489, 292, 0, 0, 1512 488, 503, 0, 0, 0, 214, 0, 223, 107, 0, 1513 0, 114, 111, 0, 0, 0, 0, 0, 0, 22, 1514 0, 652, 292, 577, 263, 721, 722, 723, 0, 674, 1515 292, 292, 292, 3, 3, 0, 682, 0, 0, 0, 1516 0, 292, 292, 3, 541, 466, 467, 0, 0, 244, 1517 293, 0, 0, 0, 0, 292, 190, 188, 0, 185, 1518 191, 0, 0, 0, 0, 195, 198, 196, 192, 0, 1519 193, 34, 127, 142, 140, 242, 0, 0, 292, 413, 1520 417, 416, 0, 506, 2, 507, 2, 508, 502, 292, 1521 226, 0, 224, 0, 226, 3, 658, 30, 112, 2, 1522 44, 2, 42, 40, 27, 110, 25, 3, 724, 3, 1523 3, 3, 0, 0, 681, 683, 624, 638, 267, 2, 1524 403, 3, 402, 0, 469, 466, 127, 0, 0, 127, 1525 3, 0, 127, 186, 0, 2, 2, 207, 197, 0, 1526 0, 0, 0, 138, 571, 611, 3, 2, 0, 0, 1527 2, 227, 0, 0, 215, 0, 0, 0, 0, 0, 1528 0, 0, 0, 0, 684, 685, 292, 0, 468, 150, 1529 0, 0, 2, 163, 127, 152, 0, 180, 0, 127, 1530 0, 2, 154, 0, 2, 0, 2, 2, 2, 194, 1531 31, 0, 292, 511, 513, 504, 0, 0, 0, 0, 1532 112, 37, 3, 3, 653, 625, 639, 675, 407, 127, 1533 156, 159, 0, 158, 162, 3, 165, 164, 0, 127, 1534 182, 127, 3, 0, 292, 0, 292, 0, 2, 0, 1535 2, 137, 698, 2, 228, 229, 0, 225, 216, 0, 1536 0, 0, 151, 0, 0, 161, 231, 166, 2, 233, 1537 181, 0, 184, 170, 199, 3, 208, 212, 201, 3, 1538 0, 292, 0, 292, 0, 0, 0, 38, 45, 43, 1539 157, 160, 127, 0, 167, 292, 127, 127, 0, 171, 1540 0, 0, 689, 209, 210, 211, 0, 200, 3, 202, 1541 3, 292, 217, 230, 147, 168, 153, 127, 234, 183, 1542 178, 176, 172, 155, 127, 0, 690, 0, 0, 0, 1543 0, 148, 169, 179, 173, 177, 176, 174, 3, 3, 1544 0, 0, 490, 175, 203, 205, 3, 3, 204, 206 1521 1545 }; 1522 1546 … … 1524 1548 static const yytype_int16 yydefgoto[] = 1525 1549 { 1526 -1, 83 0, 470, 298, 45, 130, 131, 299, 300, 301,1527 30 2, 777, 759, 1132, 1133, 303, 304, 305, 306, 307,1528 30 8, 309, 310, 311, 312, 313, 314, 315, 316, 1040,1529 52 0, 986, 318, 987, 548, 964, 1065, 1501, 1067, 1068,1530 10 69, 1070, 1502, 1071, 1072, 1430, 1431, 1397, 1398, 1399,1531 1 483, 1484, 1488, 1489, 1519, 1520, 1073, 1359, 1074, 1075,1532 1 296, 1297, 1298, 1469, 1076, 142, 970, 971, 972, 1376,1533 14 50, 1461, 1462, 471, 472, 892, 893, 1048, 48, 49,1534 50, 51, 52, 34 2, 155, 55, 56, 57, 58, 59,1535 34 4, 61, 62, 259, 64, 65, 270, 346, 347, 68,1536 69, 70, 71, 115, 73, 20 0, 349, 116, 76, 117,1537 78, 79, 80, 45 1, 452, 453, 454, 693, 930, 694,1538 81, 82, 4 58, 714, 872, 873, 352, 353, 717, 718,1539 7 19, 354, 355, 356, 357, 468, 336, 132, 133, 524,1540 32 0, 166, 647, 648, 649, 650, 651, 83, 118, 85,1541 49 1, 492, 956, 493, 273, 497, 321, 86, 134, 135,1542 87, 13 17, 1111, 1112, 1113, 1114, 88, 89, 735, 90,1543 2 69, 91, 92, 183, 1042, 681, 406, 122, 93, 503,1544 50 4, 505, 184, 264, 186, 187, 188, 265, 96, 97,1545 98, 99, 100, 101, 102, 19 1, 192, 193, 194, 195,1546 84 2, 607, 608, 609, 610, 196, 612, 613, 614, 573,1547 57 4, 575, 576, 698, 103, 616, 617, 618, 619, 620,1548 62 1, 929, 700, 701, 702, 597, 360, 361, 362, 363,1549 32 2, 161, 105, 106, 107, 365, 712, 5701550 -1, 834, 472, 299, 45, 130, 131, 300, 301, 302, 1551 303, 780, 781, 1139, 1140, 304, 305, 306, 307, 308, 1552 309, 310, 311, 312, 313, 314, 315, 316, 317, 1045, 1553 522, 990, 319, 991, 551, 968, 1072, 1534, 1074, 1075, 1554 1076, 1077, 1535, 1078, 1079, 1451, 1452, 1413, 1414, 1415, 1555 1513, 1514, 1518, 1519, 1554, 1555, 1080, 1371, 1081, 1082, 1556 1305, 1306, 1307, 1495, 1083, 142, 974, 975, 976, 1392, 1557 1476, 1487, 1488, 473, 474, 896, 897, 1053, 48, 49, 1558 50, 51, 52, 343, 155, 55, 56, 57, 58, 59, 1559 345, 61, 62, 260, 64, 65, 271, 347, 348, 68, 1560 69, 70, 71, 115, 73, 201, 350, 116, 76, 117, 1561 78, 79, 80, 453, 454, 455, 456, 696, 934, 697, 1562 81, 82, 460, 717, 876, 877, 353, 354, 720, 721, 1563 722, 355, 356, 357, 358, 470, 337, 132, 133, 526, 1564 321, 167, 650, 651, 652, 653, 654, 83, 118, 85, 1565 493, 494, 960, 495, 274, 499, 322, 86, 134, 135, 1566 87, 1329, 1118, 1119, 1120, 1121, 88, 89, 738, 90, 1567 270, 91, 92, 184, 1047, 684, 408, 122, 93, 505, 1568 506, 507, 185, 265, 187, 188, 189, 266, 96, 97, 1569 98, 99, 100, 101, 102, 192, 193, 194, 195, 196, 1570 846, 610, 611, 612, 613, 197, 615, 616, 617, 576, 1571 577, 578, 579, 701, 103, 619, 620, 621, 622, 623, 1572 624, 933, 703, 704, 705, 600, 361, 362, 363, 364, 1573 323, 161, 105, 106, 107, 366, 715, 573 1550 1574 }; 1551 1575 1552 1576 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 1553 1577 STATE-NUM. */ 1554 #define YYPACT_NINF -13 181578 #define YYPACT_NINF -1362 1555 1579 static const yytype_int16 yypact[] = 1556 1580 { 1557 4413, 9104, -1318, 42, -1318, -1318, -1318, -1318, -1318, -1318, 1558 -1318, -27, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 1559 -1318, -1318, -1318, -1318, -1318, 95, 95, 95, 954, 850, 1560 71, 5300, 201, -1318, -1318, -1318, -1318, -1318, 123, -1318, 1561 -1318, -1318, 776, 164, 8401, -1318, -1318, -1318, -1318, -1318, 1562 -1318, 226, 169, -1318, 1184, -1318, -1318, -1318, -1318, 272, 1563 1531, 387, 89, 3759, -1318, -1318, 8469, 1998, -1318, -1318, 1564 -1318, 935, 392, 5420, 741, 1183, 935, 1282, -1318, -1318, 1565 356, 326, -1318, 935, 1429, -1318, 340, -1318, 453, 463, 1566 -1318, -1318, -1318, -1318, 370, 169, 95, -1318, 95, -1318, 1567 -1318, -1318, -1318, 9340, 1184, -1318, -1318, 1184, -1318, 9399, 1568 389, -1318, -1318, 1617, 9458, -1318, 1087, 1087, 1087, -1318, 1569 -1318, -1318, 95, -1318, -1318, -1318, 386, 435, 438, -1318, 1570 -1318, -1318, 498, -1318, -1318, -1318, -1318, -1318, 510, 531, 1571 -1318, -1318, 34, 7909, 1795, 48, 452, 575, 578, 583, 1572 588, 593, 8673, 6319, 543, 605, -1318, 8537, -1318, -1318, 1573 -1318, -1318, 652, -1318, 172, 5550, -1318, 473, 232, -1318, 1574 -1318, -1318, -1318, 661, 301, 325, 403, 95, 646, -1318, 1575 -1318, 1531, 2279, 739, -1318, 21, -1318, 95, 95, 169, 1576 -1318, -1318, 35, -1318, 95, 95, -1318, 2781, 700, 710, 1577 1087, 10200, -1318, -1318, 717, 8401, -1318, -1318, 935, -1318, 1578 -1318, -1318, 169, -1318, 1184, 226, -1318, 7011, -1318, 1087, 1579 1087, 1087, 169, -1318, 954, -1318, 3330, -1318, -1318, 704, 1580 1087, -1318, 1087, -1318, 123, 7909, 9163, 736, -1318, 850, 1581 769, 1087, -1318, 954, 737, 747, -1318, 5300, 814, -1318, 1582 -1318, -1318, 2451, -1318, -1318, 3603, -1318, 739, 61, 9458, 1583 10457, 1617, 2781, -1318, 68, -1318, -1318, 9399, 1184, 778, 1584 11233, -1318, -1318, 428, -1318, 10968, 787, 870, 10685, 10742, 1585 10799, -1318, 824, -1318, -1318, -1318, -1318, 10856, 10856, 814, 1586 7591, 827, 10742, 8015, -1318, -1318, -1318, -1318, -1318, -1318, 1587 874, -1318, 901, 2137, 10742, -1318, 237, 407, 632, 476, 1588 638, 859, 855, 869, 890, 101, -1318, -1318, 877, 616, 1589 -1318, 336, -1318, -1318, 1795, -1318, -1318, 518, 907, -1318, 1590 633, 907, 892, 123, -1318, -1318, 914, 9340, -1318, 916, 1591 7697, -1318, -1318, 1197, 771, 5233, 10200, 935, -1318, 935, 1592 1087, 1087, -1318, -1318, -1318, -1318, -1318, -1318, 1087, 9517, 1593 1184, -1318, -1318, 9576, 1658, -1318, 9222, -1318, -1318, -1318, 1594 -1318, -1318, -1318, -1318, 924, 4543, 10742, -1318, -1318, -1318, 1595 -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 1596 1617, -1318, 676, 942, 945, 946, 690, 947, 948, 958, 1597 2279, -1318, -1318, 952, 226, 957, -1318, -1318, 959, -1318, 1598 -1318, -1318, 2451, -1318, -1318, -1318, -1318, -1318, 2781, -1318, 1599 7909, 7909, -1318, 1087, 1617, 11261, 1184, 7402, -1318, -1318, 1600 -1318, -1318, 2451, 61, -1318, -1318, 935, 169, -1318, -1318, 1601 2451, -1318, 5128, -1318, -1318, 1087, 1087, 364, 9635, 960, 1602 2086, 8865, -1318, 432, 454, 850, -1318, 9163, 955, 944, 1603 850, 1087, -1318, -1318, -1318, -1318, 9936, -1318, 383, 7322, 1604 -1318, 169, 962, -1318, 1617, 11043, 10514, -1318, -1318, -1318, 1605 -1318, 755, 2781, -1318, 7467, 739, 6768, -1318, -1318, -1318, 1606 885, 414, 877, 850, 11233, 619, 9399, -1318, 11233, -1318, 1607 -1318, -1318, -1318, 479, -1318, 964, 870, 125, 7591, -1318, 1608 -1318, -1318, 7591, -1318, 7803, 7591, -1318, -1318, -1318, 969, 1609 -1318, 544, 972, 640, 974, -1318, 8741, 5983, -1318, -1318, 1610 -1318, 103, -1318, -1318, 10571, -1318, 112, -1318, -1318, -1318, 1611 -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10457, 10457, -1318, 1612 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 1613 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10343, 10457, 1614 -1318, 616, 900, -1318, -1318, 95, 95, -1318, -1318, 7909, 1615 -1318, -1318, 959, 814, -1318, 959, 10628, -1318, -1318, -1318, 1616 8333, 5983, 973, 8121, 976, -1318, 9694, -1318, -1318, 652, 1617 -1318, 978, 378, 980, 1782, 139, 877, -1318, 95, 95, 1618 877, 166, -1318, 95, 95, 959, -1318, -1318, 95, 95, 1619 -1318, 907, 9753, 1184, 11174, 137, 273, 9753, -1318, 4101, 1620 -1318, 877, -1318, 9517, -1318, 278, 7119, 7119, 7119, 1184, 1621 -1318, 3868, 982, 220, 924, 302, 984, -1318, 977, 5550, 1622 238, -1318, 1061, 1184, 7119, 814, 1617, 814, 739, 705, 1623 907, -1318, -1318, 765, 907, -1318, -1318, -1318, 870, -1318, 1624 907, 169, 9936, -1318, 570, 1000, 655, 1005, -1318, 1004, 1625 169, -1318, -1318, 2451, 169, 1003, 464, 465, 9812, 6431, 1626 1947, 10742, 2536, -1318, -1318, 1001, 20, 1001, -1318, -1318, 1627 -1318, 95, 95, -1318, -1318, 850, -1318, 95, -1318, -1318, 1628 8924, 850, 1006, 10742, -1318, 955, 11174, -1318, -1318, 1017, 1629 -1318, -1318, -1318, 814, -1318, 11109, 10742, -1318, 7119, 671, 1630 5233, -1318, -1318, 652, 1013, 1014, 885, 2927, -1318, -1318, 1631 11233, -1318, -1318, 1015, -1318, -1318, 1021, -1318, 1015, 1023, 1632 10968, 10457, 243, 1002, 53, 1025, 1026, 827, 1027, 1028, 1633 -1318, 1030, 1032, 8983, 6095, -1318, 10457, -1318, 640, 1104, 1634 -1318, 10400, 10457, 1034, -1318, -1318, 924, 678, -1318, 10457, 1635 -1318, -1318, -1318, -1318, -1318, -1318, -1318, 237, 237, 407, 1636 407, 632, 632, 632, 632, 476, 476, 638, 859, 855, 1637 869, 890, 10742, 716, -1318, 9936, 1038, 1041, 1042, 900, 1638 -1318, -1318, -1318, -1318, -1318, 9936, 679, 10742, 7119, -1318, 1639 9517, -1318, 6543, 8227, 9281, 6319, -1318, -1318, -1318, 378, 1640 9936, 820, 1047, 1051, 1052, 1057, 1058, 1059, 1060, -1318, 1641 3170, 1782, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 1642 -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 959, 1643 -1318, -1318, -1318, 877, -1318, -1318, -1318, -1318, -1318, -1318, 1644 -1318, -1318, 1063, -1318, 1064, 1065, -1318, -1318, 226, 1034, 1645 3868, -1318, -1318, -1318, 4543, 1066, -1318, -1318, -1318, -1318, 1646 -1318, 850, 5481, 1140, -1318, -1318, -1318, -1318, 1049, 226, 1647 -1318, -1318, 959, -1318, -1318, 959, 127, 959, -1318, -1318, 1648 -1318, -1318, -1318, -1318, 8605, -1318, 169, -1318, 9163, -1318, 1649 -1318, 1070, 856, 1073, 1076, 1077, -1318, -1318, 2536, -1318, 1650 -1318, -1318, -1318, -1318, -1318, -1318, 2086, -1318, 944, -1318, 1651 -1318, 1075, 1078, 1082, -1318, -1318, 1080, 1096, -1318, 671, 1652 1985, -1318, 514, -1318, 2927, 877, -1318, 1100, 11233, 9871, 1653 7909, 1102, -1318, -1318, 1098, 1110, 1107, -1318, 10742, 12, 1654 400, 1114, -1318, 1112, 1112, 5983, 10457, -1318, -1318, 1112, 1655 -1318, 1104, 4543, -1318, -1318, -1318, -1318, 1115, 10457, 1120, 1656 814, 3868, -1318, 10571, -1318, 814, -1318, 10457, -1318, 825, 1657 907, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 924, 7697, 1658 -1318, -1318, 6655, 1125, -1318, 833, 907, -1318, 845, 852, 1659 907, -1318, 1087, 4145, -1318, -1318, -1318, 9936, 9936, -1318, 1660 7402, 7402, -1318, 1123, 1124, 1126, 1133, -1318, 1134, 553, 1661 38, 1034, -1318, 814, -1318, 5550, -1318, 10457, 466, -1318, 1662 5871, 1136, 1141, 5631, 1149, 1155, 13, 17, 14, 10457, 1663 1156, 169, 3019, 1137, 1150, 1143, -1318, -1318, -1318, 1161, 1664 -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 850, 1665 1167, 10457, -1318, 9936, 9936, 95, 1169, -1318, 9045, 8803, 1666 867, 907, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 1667 -1318, 1174, 1985, -1318, -1318, 1158, -1318, 1015, -1318, -1318, 1668 1617, 1173, -1318, -1318, -1318, 686, 1175, -1318, 53, 1178, 1669 10742, 1159, 53, 53, 1176, -1318, 977, 10457, 1185, 1115, 1670 607, 130, 1192, -1318, 1176, -1318, 1198, 1192, -1318, -1318, 1671 1199, -1318, -1318, 959, 1201, 1203, 6207, 1202, 1205, 1207, 1672 -1318, -1318, 1210, -1318, -1318, 959, -1318, -1318, -1318, -1318, 1673 959, 10457, 10457, 10742, 1209, -1318, -1318, -1318, -1318, -1318, 1674 -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10742, 10742, 1212, 1675 1219, 1192, -1318, -1318, 850, -1318, -1318, -1318, 4876, 9871, 1676 10457, 10457, 1262, 10457, -1318, -1318, 1213, -1318, 1214, 10457, 1677 1216, 1220, 10457, 929, -1318, 1223, 5017, 95, -1318, -1318, 1678 5481, 1224, 469, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 1679 -1318, -1318, 959, 10172, -1318, 7467, 1232, -1318, -1318, 9871, 1680 478, 509, -1318, 1236, 1239, 870, 1248, -1318, 541, -1318, 1681 10457, 1250, 1245, -1318, -1318, 1251, 128, 133, 814, 1253, 1682 1254, -1318, 1256, -1318, 9936, -1318, -1318, -1318, -1318, -1318, 1683 1258, -1318, 9936, 9936, 9936, -1318, -1318, 1260, -1318, 1263, 1684 1269, 1270, 589, 7186, 7294, -1318, -1318, 351, -1318, 1273, 1685 1275, -1318, 7532, 721, 742, 1272, 752, 5749, -1318, -1318, 1686 545, -1318, -1318, 768, 1279, 169, 1330, 1332, -1318, -1318, 1687 5631, -1318, -1318, -1318, 1285, 1286, 9936, -1318, -1318, -1318, 1688 1283, -1318, -1318, -1318, -1318, -1318, -1318, 9871, 870, 206, 1689 -1318, 1268, 870, 1115, 327, -1318, -1318, -1318, -1318, -1318, 1690 -1318, -1318, -1318, 1284, -1318, -1318, -1318, -1318, -1318, -1318, 1691 1291, 1294, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 1297, 1692 -1318, 1296, -1318, -1318, 5631, 124, 10457, 5631, -1318, 1299, 1693 10457, -1318, 270, 1314, -1318, -1318, 1306, -1318, -1318, -1318, 1694 -1318, -1318, 1184, 1617, 1301, 874, 879, 10742, -1318, 790, 1695 1307, 10457, 814, 814, 1308, 1310, 1316, 1317, -1318, -1318, 1696 7402, 1320, -1318, 1376, 10742, 1313, -1318, -1318, 10286, -1318, 1697 791, -1318, 1300, 5631, 1305, -1318, -1318, 1323, -1318, 1341, 1698 1329, 9871, -1318, -1318, -1318, 870, 814, 1334, 1327, 1325, 1699 -1318, 1192, 1192, -1318, -1318, -1318, -1318, -1318, 5631, 246, 1700 -1318, 917, -1318, -1318, 6877, -1318, -1318, 1335, 10457, -1318, 1701 10457, 6877, 169, 9635, 1342, -1318, -1318, 1351, 874, -1318, 1702 793, -1318, -1318, 10457, 1357, 1359, -1318, 10742, 10742, -1318, 1703 -1318, 989, 88, -1318, -1318, 1340, -1318, 989, -1318, -1318, 1704 2035, 814, 169, 9635, 1364, 1345, 814, -1318, -1318, -1318, 1705 -1318, -1318, 10286, 1369, 989, 6946, 10457, 10206, 1373, 989, 1706 1380, 2035, 2697, -1318, -1318, -1318, -1318, -1318, 7909, -1318, 1707 -1318, -1318, 10051, -1318, 10286, -1318, -1318, 1347, 9970, -1318, 1708 -1318, 10206, 169, 2697, 1383, 794, -1318, 10051, -1318, -1318, 1709 -1318, 9970, -1318, -1318, 169, -1318, -1318, -1318, -1318, -1318 1581 5182, 8315, -1362, 65, -1362, -1362, -1362, -1362, -1362, -1362, 1582 -1362, 58, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1583 -1362, -1362, -1362, -1362, -1362, 82, 82, 82, 907, 818, 1584 118, 6817, 261, -1362, -1362, -1362, -1362, -1362, 194, -1362, 1585 -1362, -1362, 762, 245, 3620, -1362, -1362, -1362, -1362, -1362, 1586 -1362, 110, 286, -1362, 690, -1362, -1362, -1362, -1362, 307, 1587 1768, 457, 101, 6932, -1362, -1362, 4184, 407, -1362, -1362, 1588 -1362, 1616, 474, 5211, 816, 1213, 1616, 2188, -1362, -1362, 1589 386, 368, -1362, 1616, 2312, -1362, 370, -1362, 505, 519, 1590 -1362, -1362, -1362, -1362, 390, 286, 82, -1362, 82, -1362, 1591 -1362, -1362, -1362, 8539, 690, -1362, -1362, 690, -1362, 9099, 1592 393, -1362, -1362, 2123, 9180, -1362, 951, 951, 951, -1362, 1593 -1362, -1362, 82, -1362, -1362, -1362, 455, 470, 487, -1362, 1594 -1362, -1362, 492, -1362, -1362, -1362, -1362, -1362, 517, 553, 1595 -1362, -1362, 76, 8285, 1659, 753, 483, 539, 586, 596, 1596 599, 606, 7594, 6229, 641, 646, -1362, 8650, -1362, -1362, 1597 -1362, -1362, 673, -1362, 126, 3695, 3695, -1362, 682, 235, 1598 -1362, -1362, -1362, -1362, 693, 419, 442, 449, 82, 685, 1599 -1362, -1362, 1768, 2932, 768, -1362, 90, -1362, 82, 82, 1600 286, -1362, -1362, 121, -1362, 82, 82, -1362, 3090, 696, 1601 779, 951, 6612, -1362, -1362, 728, 3620, -1362, -1362, 1616, 1602 -1362, -1362, -1362, 286, -1362, 690, 110, -1362, 7263, -1362, 1603 951, 951, 951, 286, -1362, 907, -1362, 5761, -1362, -1362, 1604 745, 951, -1362, 951, -1362, 194, 8285, 8427, 777, -1362, 1605 818, 866, 951, -1362, 907, 775, 789, -1362, 6817, 874, 1606 -1362, -1362, -1362, 5519, -1362, -1362, 6022, -1362, 768, 173, 1607 9180, 10174, 2123, 3090, -1362, 265, -1362, -1362, 9099, 690, 1608 879, 6376, -1362, -1362, 507, -1362, 10523, 887, 920, 3349, 1609 10328, 10347, -1362, 895, -1362, -1362, -1362, -1362, 10405, 10405, 1610 874, 7949, 897, 10328, 8397, -1362, -1362, -1362, -1362, -1362, 1611 -1362, 930, -1362, 797, 2723, 10328, -1362, 688, 806, 843, 1612 301, 862, 899, 893, 906, 932, 20, -1362, -1362, 934, 1613 593, -1362, 402, -1362, -1362, 1659, -1362, -1362, 610, 919, 1614 -1362, 621, 919, 946, 194, -1362, -1362, 962, 8539, -1362, 1615 961, 8061, -1362, -1362, 1747, 1347, 7675, 6612, 1616, -1362, 1616 1616, 951, 951, -1362, -1362, -1362, -1362, -1362, -1362, 951, 1617 9209, 690, -1362, -1362, 9247, 1940, -1362, 9032, -1362, -1362, 1618 -1362, -1362, -1362, -1362, -1362, 966, 4295, 10328, -1362, -1362, 1619 -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1620 -1362, -1362, 2123, -1362, 446, 964, 972, 978, 719, 979, 1621 987, 990, 2932, -1362, -1362, 994, 110, 992, -1362, -1362, 1622 995, -1362, -1362, -1362, 5519, -1362, -1362, -1362, -1362, -1362, 1623 3090, -1362, 8285, 8285, -1362, 951, 2123, 6731, 690, 7745, 1624 -1362, -1362, -1362, -1362, 5519, 173, -1362, -1362, 1616, 286, 1625 -1362, -1362, 5519, -1362, 6258, -1362, -1362, 951, 951, 484, 1626 9317, 998, 1130, 4716, -1362, 459, 467, 818, -1362, 8427, 1627 991, 980, 818, 951, -1362, -1362, -1362, -1362, 9608, -1362, 1628 567, 6494, -1362, 286, 999, -1362, 2123, 10603, 10193, -1362, 1629 -1362, -1362, -1362, 793, 3090, -1362, 7815, 768, 6702, -1362, 1630 -1362, -1362, 842, 625, 934, 818, 6376, 494, 9099, -1362, 1631 6376, -1362, -1362, -1362, -1362, 636, -1362, 1005, 920, 328, 1632 7949, -1362, -1362, -1362, 7949, -1362, 8173, 7949, -1362, -1362, 1633 -1362, 1004, -1362, 644, 1013, 617, 1014, -1362, 8787, 5845, 1634 -1362, -1362, -1362, 93, -1362, -1362, 10251, -1362, 164, 10251, 1635 -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1636 10174, 10174, -1362, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 1637 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 1638 10328, 4995, 10174, -1362, 593, 1220, -1362, -1362, 82, 82, 1639 -1362, -1362, 8285, -1362, -1362, 995, 874, -1362, 995, 10270, 1640 -1362, -1362, -1362, 5874, 5845, 1015, 8509, 1017, -1362, 9355, 1641 -1362, -1362, 673, -1362, 1019, 506, 1020, 2624, 288, 934, 1642 -1362, 82, 82, 934, 294, -1362, 82, 82, 995, -1362, 1643 -1362, 82, 82, -1362, 919, 9384, 690, 10744, 254, 525, 1644 9384, -1362, 6140, -1362, 934, -1362, 9209, -1362, 255, 7377, 1645 7377, 7377, 690, -1362, 10097, 1009, 565, 966, 409, 1022, 1646 -1362, 1018, 3695, 612, -1362, 1103, 690, 7377, 874, 2123, 1647 874, 768, 628, 919, -1362, -1362, 744, 919, -1362, -1362, 1648 -1362, 920, -1362, 919, 286, 9608, -1362, 659, 1026, 668, 1649 1031, -1362, 1032, 286, -1362, -1362, 5519, 286, 1029, 497, 1650 511, 9465, 6347, 1465, 10328, 2769, -1362, -1362, 1039, 94, 1651 1039, -1362, -1362, -1362, 82, 82, -1362, -1362, 818, -1362, 1652 82, -1362, -1362, 8924, 818, 1033, 10328, -1362, 991, 10744, 1653 -1362, -1362, 1048, -1362, -1362, -1362, 874, -1362, 10674, 10328, 1654 -1362, 7377, 639, 7675, -1362, -1362, 673, 1034, 1044, 842, 1655 1987, -1362, -1362, 6376, -1362, -1362, 1045, -1362, -1362, 1051, 1656 -1362, 1045, 1054, 10523, 10174, 142, 1040, 53, 1055, 1056, 1657 897, 1057, 1061, -1362, 1063, 1066, 8203, 5993, -1362, 10174, 1658 -1362, 617, 1650, -1362, 10116, 10174, 1062, -1362, -1362, 966, 1659 676, -1362, 10174, -1362, -1362, 901, -1362, -1362, -1362, -1362, 1660 -1362, 688, 688, 806, 806, 843, 843, 843, 843, 301, 1661 301, 862, 899, 893, 906, 932, 10328, 912, -1362, 9608, 1662 1069, 1070, 1075, 1220, -1362, -1362, -1362, -1362, -1362, 9608, 1663 680, 10328, 7377, -1362, 9209, -1362, 6465, 8621, 9070, 6229, 1664 -1362, -1362, -1362, 506, 9608, 832, 1076, 1078, 1079, 1080, 1665 1082, 1083, 1088, -1362, 3884, 2624, -1362, -1362, -1362, -1362, 1666 -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1667 -1362, -1362, -1362, 995, -1362, -1362, -1362, 934, -1362, -1362, 1668 -1362, -1362, -1362, -1362, -1362, -1362, 1089, -1362, 1099, 1101, 1669 -1362, -1362, 110, 1062, 10097, -1362, -1362, -1362, 4295, 1100, 1670 -1362, -1362, -1362, -1362, -1362, 818, 5597, 1173, -1362, -1362, 1671 -1362, -1362, 1085, 110, -1362, -1362, 995, -1362, -1362, 995, 1672 28, 995, -1362, -1362, -1362, -1362, -1362, -1362, 8758, -1362, 1673 286, -1362, 8427, -1362, -1362, 1108, 913, 1111, 1112, 1120, 1674 -1362, -1362, 2769, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1675 1130, -1362, 980, -1362, -1362, 1116, 1128, 1124, -1362, -1362, 1676 1132, 1133, -1362, 639, 1695, -1362, 589, -1362, 1987, 934, 1677 -1362, 1138, 6376, 9494, 8285, 1140, -1362, -1362, 1137, 1144, 1678 1147, -1362, 10328, 146, 128, 1150, -1362, 1153, 1153, 5845, 1679 10174, -1362, -1362, 1153, -1362, 1650, 4295, -1362, -1362, -1362, 1680 -1362, 1152, 10174, 1158, 874, 10097, -1362, 10251, -1362, 874, 1681 -1362, -1362, 10174, -1362, 826, 919, -1362, -1362, -1362, -1362, 1682 -1362, -1362, -1362, 966, 8061, -1362, -1362, 6583, 1161, -1362, 1683 841, 919, -1362, 865, 883, 919, -1362, 951, 4042, -1362, 1684 -1362, -1362, 9608, 9608, -1362, 7745, 7745, -1362, 1156, 1157, 1685 1168, 1169, -1362, 1174, 677, 212, 1062, -1362, 874, -1362, 1686 3695, -1362, 10174, 515, -1362, 5727, 1176, 1179, 9970, 1180, 1687 1184, 11, 62, 64, 10174, 1185, 286, 10174, 10174, 1183, 1688 535, 1182, 1164, -1362, -1362, -1362, 1187, -1362, -1362, -1362, 1689 -1362, -1362, -1362, -1362, -1362, -1362, 818, 1190, 10174, -1362, 1690 9608, 9608, 82, 1194, -1362, 8962, 8895, 888, 919, -1362, 1691 -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1195, 1695, 1692 -1362, -1362, 1186, -1362, 1045, -1362, -1362, 2123, 1196, -1362, 1693 -1362, -1362, 684, 1203, -1362, 53, 1197, 10328, 1188, 53, 1694 53, 1205, -1362, 1018, 10174, 1207, 1152, 337, 130, 1206, 1695 -1362, 1205, -1362, 1214, 1206, -1362, -1362, 1217, -1362, -1362, 1696 995, 1218, 1222, 6111, 1221, 1223, 1225, -1362, -1362, 1224, 1697 -1362, -1362, 995, -1362, -1362, -1362, -1362, 995, 10174, 10174, 1698 10328, 1226, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1699 -1362, -1362, -1362, -1362, 10328, 10328, 1232, 1234, 1206, -1362, 1700 -1362, 818, -1362, -1362, -1362, 7193, 9494, 10174, 10174, 1283, 1701 10174, -1362, -1362, 1215, -1362, 1219, 10174, 1233, 1242, 10174, 1702 900, 1243, 37, 8091, 1006, 82, -1362, -1362, 5597, 1239, 1703 523, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1704 995, 10093, -1362, 7815, 1256, -1362, -1362, 9494, 540, 555, 1705 -1362, 1263, 1262, 920, 1270, -1362, 354, -1362, 10174, 1271, 1706 1269, -1362, -1362, 1273, 206, 262, 874, 1274, 1275, -1362, 1707 1276, -1362, 9608, -1362, -1362, -1362, -1362, -1362, 1277, -1362, 1708 9608, 9608, 9608, -1362, -1362, 1279, -1362, 1282, 1286, 1287, 1709 702, 7447, 7561, -1362, -1362, 388, -1362, 1291, 1292, -1362, 1710 7885, 700, 705, 1296, 731, 5363, -1362, -1362, 575, -1362, 1711 -1362, 741, 1297, 1299, 286, 1349, 974, -1362, -1362, 10174, 1712 -1362, 10251, 9970, -1362, -1362, -1362, 1303, 1304, 9608, -1362, 1713 -1362, -1362, 1312, -1362, -1362, -1362, -1362, -1362, -1362, 9494, 1714 920, 263, -1362, 1293, 920, 1152, 273, -1362, -1362, -1362, 1715 -1362, -1362, -1362, -1362, -1362, 1301, -1362, -1362, -1362, -1362, 1716 -1362, -1362, 1316, 1317, -1362, -1362, -1362, -1362, -1362, -1362, 1717 -1362, 1322, -1362, 1329, -1362, -1362, 9970, 107, 10174, 9970, 1718 -1362, 1332, 10174, -1362, 151, 1351, 1355, -1362, -1362, 1334, 1719 1335, 1320, 924, -1362, -1362, -1362, -1362, -1362, 690, 2123, 1720 1338, 930, 937, 10328, -1362, 742, 1343, 10174, 874, 874, 1721 1352, 1353, 1354, 1357, -1362, -1362, 7745, 1341, -1362, 1417, 1722 10328, 1344, -1362, -1362, 9884, -1362, 785, -1362, 1333, 9970, 1723 1340, -1362, -1362, 1363, -1362, 1364, -1362, 1379, 1382, -1362, 1724 1350, 1371, 9494, -1362, -1362, -1362, 920, 874, 1374, 1365, 1725 1370, -1362, 1206, 1206, -1362, -1362, -1362, -1362, -1362, 9970, 1726 258, -1362, 941, -1362, -1362, 7047, -1362, -1362, 1367, 10174, 1727 -1362, 10174, 7047, 286, 9317, 286, 9317, 1392, -1362, 1396, 1728 -1362, -1362, -1362, 1393, 930, -1362, 803, -1362, -1362, 10174, 1729 1397, 1398, -1362, 10328, 10328, -1362, -1362, 1016, 97, -1362, 1730 -1362, 1383, -1362, 1016, -1362, -1362, 2377, 874, -1362, -1362, 1731 286, 9317, 286, 9317, 1405, 1384, 874, -1362, -1362, -1362, 1732 -1362, -1362, 9884, 1402, 1016, 7122, 10174, 9798, 1406, 1016, 1733 1412, 2377, 2919, -1362, -1362, -1362, 1413, -1362, -1362, -1362, 1734 -1362, 8285, -1362, -1362, -1362, 9705, -1362, 9884, -1362, -1362, 1735 1400, 9612, -1362, -1362, 9798, 286, 2919, 286, 1414, 1419, 1736 807, -1362, 9705, -1362, -1362, -1362, 9612, -1362, -1362, -1362, 1737 286, 286, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362 1710 1738 }; 1711 1739 … … 1713 1741 static const yytype_int16 yypgoto[] = 1714 1742 { 1715 -13 18, 3762, 2543, -1318, 1454, -1318, -1, 2, -89, -1318,1716 -1318, -1318, -483, -942, -282, 4006, -1318, 1670, 483, 485,1717 347, 484, 927, 931, 926, 932, 937, -1318, 792, -594,1718 4587, 375, -691, -946, -1318, -112, -722, -695, -1318, 412,1719 -13 18, 304, -1184, -1318, -1318, 54, -1318, -1317, -763, 149,1720 -13 18, -1318, -1318, -1318, -3, -1151, -1318, -1318, -1318, -1318,1721 -13 18, -1318, 223, 51, 55, -1318, -364, -1318, 402, 204,1722 -13 18, 86, -1318, -320, -1318, -1318, -1318, 450, -745, -1318,1723 -13 18, 10, -865, 258, 180, -1318, -1318, -1318, -222, -1318,1724 126, 49, -187, 951, 3574, -1318, -1318, 213, 151, 363,1725 -25 1, 2053, -1318, 1304, -1318, -1318, 344, 1615, -1318, 1898,1726 1 496, -1318, -1318, -417, -439, 1083, 1084, 597, 837, 279,1727 -13 18, -1318, 1086, 598, -23, -1318, 37, -463, 807, -1318,1728 -13 18, -923, -977, 142, 669, 965, 280, -1318, 175, -35,1729 -257, -199, -156, 555, 651, -1318, 888, -1318, 1925, 1031,1730 -4 60, 803, -1318, -1318, 594, -1318, -228, -1318, 140, -1318,1731 -13 18, -1318, -1268, 320, -1318, -1318, -1318, 1067, -1318,6,1732 -13 18, -1318, -851, -86, -1303, -124, 2887, -1318, 2837, -1318,1733 8 12, -1318, -168, 585, -176, -173, -171, 4, -41, -39,1734 -3 6, 834, 47, 56, 79, -167, -162, -161, -159, -158,1735 -2 73, -557, -498, -458, -543, -318, -539, -1318, -1318, -499,1736 986, 992, 993, 1485, 4182, -565, -577, -550, -542, -536,1737 -13 18, -384, -672, -658, -654, -591, -211, -316, -1318, -1318,1738 152, 299, -75, -1318, 2880, 592, -631, -2001743 -1362, 3493, 1093, -1362, 1502, -1362, -1, 2, 435, -1362, 1744 458, -522, -509, -926, -270, 4585, -1362, 1298, 508, 516, 1745 480, 518, 965, 977, 985, 963, 975, -1362, 450, -552, 1746 3932, -889, -691, -949, -1362, 269, -657, -346, -1362, 1391, 1747 -1362, 339, -1080, -1362, -1362, 75, -1362, -1321, -831, 188, 1748 -1362, -1362, -1362, -1362, 7, -1083, -1362, -1362, -1362, -1362, 1749 -1362, -1362, 268, -1220, 39, -1362, -255, -1362, 439, 242, 1750 -1362, 117, -1362, -360, -1362, -1362, -1362, 498, -843, -1362, 1751 -1362, 12, -1020, 26, 1825, -1362, -1362, -1362, -118, -1362, 1752 513, 86, -185, 665, 2995, -1362, -1362, 55, 143, 302, 1753 -254, 1799, -1362, 1348, -1362, -1362, 259, 1704, -1362, 2086, 1754 1311, -1362, -1362, -430, -428, 1135, 1143, 640, 890, 313, 1755 -1362, -1362, 1126, 652, -484, -1362, -469, -299, 976, -1362, 1756 -1362, -931, -975, -226, 1098, 1011, 22, -1362, 189, 264, 1757 -13, -195, -156, 609, 711, -1362, 947, -1362, 2242, 541, 1758 -458, 859, -1362, -1362, 647, -1362, -235, -1362, 24, -1362, 1759 -1362, -1362, -1279, 371, -1362, -1362, -1362, 1122, -1362, 46, 1760 -1362, -1362, -859, -108, -1361, -83, 2954, -1362, 2772, -1362, 1761 858, -1362, -175, 138, -168, -167, -163, 3, -38, -31, 1762 -30, 910, 25, 70, 79, -147, -162, -159, -152, -151, 1763 -287, -573, -525, -485, -559, -293, -488, -1362, -1362, -496, 1764 1038, 1041, 1042, 2149, 4025, -548, -554, -520, -498, -453, 1765 -1362, -411, -687, -675, -653, -597, -296, -300, -1362, -1362, 1766 829, 71, -28, -1362, 3030, 124, -627, -190 1739 1767 }; 1740 1768 … … 1742 1770 positive, shift that token. If negative, reduce the rule which 1743 1771 number is the opposite. If YYTABLE_NINF, syntax error. */ 1744 #define YYTABLE_NINF -5 111772 #define YYTABLE_NINF -520 1745 1773 static const yytype_int16 yytable[] = 1746 1774 { 1747 110, 146, 46, 147, 95, 393, 148, 447, 394, 378, 1748 395, 111, 704, 422, 401, 402, 434, 885, 923, 396, 1749 397, 731, 398, 399, 500, 836, 611, 263, 256, 965, 1750 473, 861, 924, 46, 743, 95, 925, 140, 748, 844, 1751 710, 1078, 1129, 630, 46, 832, 46, 634, 158, 1374, 1752 113, 778, 837, 1137, 1171, 47, 46, 30, 30, 404, 1753 838, 843, 46, 835, 189, 46, 699, 212, 46, 847, 1754 222, 606, 30, 810, 120, 854, 215, 338, 108, 108, 1755 984, 1436, 108, 276, 941, 393, 47, 530, 394, 149, 1756 395, 1432, 671, 156, 401, 402, 923, 927, 150, 396, 1757 397, 1181, 398, 399, 833, 30, 46, 1169, 1170, 46, 1758 924, 419, 680, 1120, 925, 46, 198, 119, 403, 940, 1759 684, 151, 248, 405, 405, 1199, 60, 1177, 286, 598, 1760 -225, -225, 30, 477, 479, 277, 413, 1195, 405, 770, 1761 146, 1197, 147, 1447, 834, 148, 46, 1077, 158, 248, 1762 325, 67, 254, 1178, 46, 1432, 968, 60, 156, 46, 1763 199, 368, 478, 675, 677, 1436, 1394, 1395, 108, 483, 1764 1436, 405, 139, 875, 875, 875, 30, 108, 521, 832, 1765 54, 54, 67, 46, 46, 1187, 158, 1436, 507, 567, 1766 473, 875, 319, 108, 1436, -225, 160, 1066, 108, 46, 1767 530, 335, 530, 30, 138, 669, 774, 46, 1246, 158, 1768 473, 54, 141, 66, 208, 780, 46, 738, 473, 46, 1769 146, 437, 147, 568, 143, 148, 731, 753, 149, 1085, 1770 1396, 1327, 666, 667, 754, 1247, 1329, 150, 833, 747, 1771 845, 864, 603, 54, 66, 865, 54, 467, 1171, 46, 1772 424, 95, 836, 465, 428, 237, 240, 761, 53, 112, 1773 151, 160, 589, 46, 46, 875, 158, 852, 152, 603, 1774 46, 704, 832, 732, 821, 167, 1026, 46, 834, 837, 1775 372, 530, 695, 697, 319, 450, 611, 838, 518, 53, 1776 1013, 338, 741, -455, 1323, 847, 373, 1171, 1025, 104, 1777 104, 731, 47, 1508, 658, 1186, 1139, 1377, 674, 676, 1778 1002, 887, 1394, 1395, 666, 667, 428, 870, 530, 490, 1779 1517, 206, 814, -455, 216, -455, 46, 1521, 368, -455, 1780 104, 833, 673, 343, 173, 1457, 1509, 1201, 678, 523, 1781 381, 888, 156, 645, 74, 46, 46, 889, 550, 165, 1782 1169, 1170, 966, 551, 552, 875, 382, 429, 1192, 1078, 1783 1522, 1178, 46, 916, 441, 104, 46, 108, 436, 136, 1784 137, 834, 836, 60, 1119, 74, 1405, 866, 474, 478, 1785 177, 867, 598, 462, 257, 844, 588, 258, 455, 595, 1786 197, 108, 46, 136, 137, -281, 521, 54, 67, 837, 1787 521, 569, 46, 521, 368, 881, 848, 838, 628, 384, 1788 851, 598, 632, 1171, 459, 335, 598, 752, 861, 429, 1789 46, 108, 1187, 136, 234, 385, 46, 54, 46, -109, 1790 225, 868, 239, 386, 226, 871, 1381, 230, 578, 232, 1791 1421, 1422, 525, 36, 579, 160, 241, 39, 243, 387, 1792 -109, 338, 46, 246, 40, 41, 803, 235, -109, -109, 1793 66, 473, 236, -506, 169, 1077, 685, 1427, 110, 319, 1794 319, 248, 579, 755, -109, 435, 46, 756, 732, 829, 1795 762, 603, 1157, 1159, 46, 722, 368, -10, 46, 604, 1796 95, 723, 46, 886, 433, 1242, 208, 450, 1107, 500, 1797 450, 1088, 1121, 945, 1007, 53, 450, 249, 821, 1122, 1798 1135, 388, 260, 758, 393, 1066, 739, 394, 113, 395, 1799 553, 554, 740, 611, 401, 402, 1236, 389, 396, 397, 1800 775, 398, 399, 758, 899, 781, -431, 1026, 474, -432, 1801 705, 47, 1360, 490, 1093, 319, 104, 490, 485, 495, 1802 646, 496, 699, 732, 326, 502, 706, 523, 474, 557, 1803 558, 523, 707, 319, 523, 1358, 474, 1168, 1024, 1187, 1804 897, 225, 705, 707, 1184, 335, 1187, 1184, 708, 906, 1805 379, 749, 467, 1275, 1276, 94, 1312, 750, 919, 920, 1806 1185, 74, 46, 1303, 559, 560, 74, 1093, 821, 272, 1807 455, 411, 1313, 455, 46, 1367, 46, 343, 720, 455, 1808 729, 274, 60, 338, 876, 877, 94, 1314, 866, 580, 1809 1187, 405, 1103, 173, 431, 46, 208, 145, 319, 94, 1810 709, 895, 275, 1315, 439, 459, 163, 67, 1404, 819, 1811 631, 46, 595, 1321, 635, 185, 765, 366, 94, 704, 1812 1322, 94, 766, 766, 896, 46, 898, -102, 46, 1393, 1813 525, -102, 1401, 1029, 525, 969, 54, 525, 742, 1361, 1814 746, 860, 910, 874, 874, 874, 595, 327, 766, 1037, 1815 328, 1024, 869, 731, 108, 329, 136, 137, 338, 1463, 1816 330, 874, 46, 1346, 46, 331, 1463, 1347, 1482, 66, 1817 1082, 163, 522, 1435, 1487, 948, 367, 343, 1439, -109, 1818 225, -109, 230, 555, 556, -109, 1465, 571, 1466, 405, 1819 744, 1504, 944, 561, 562, 745, 1511, 572, 1044, 94, 1820 -109, -109, 1115, 1456, 583, 323, 405, 335, 46, 46, 1821 1505, 768, 94, 405, 53, 2, 202, 4, 5, 6, 1822 7, 769, 46, 371, 1234, 1104, 74, 912, 1238, 450, 1823 666, 667, 383, 766, 1506, 874, 392, 185, 695, 697, 1824 391, 343, 949, 821, 603, 436, 74, 248, 325, 405, 1825 992, 1004, 950, 1417, 74, 104, 993, 723, 1232, 490, 1826 94, 413, 662, 405, 579, 1005, 403, 430, 598, 225, 1827 1429, 420, 94, 34, 823, 35, 900, 1516, 405, 474, 1828 1349, 421, 335, 1516, 720, 729, 343, 343, 343, 923, 1829 882, 426, 1516, 1354, 766, 997, 1516, 323, 444, 766, 1830 74, 46, 94, 924, 343, 1161, 36, 925, 179, 180, 1831 39, 36, 457, 46, 1355, 39, 481, 40, 41, 682, 1832 766, 474, 40, 41, 1357, 874, 483, 325, 405, 430, 1833 766, 463, 455, 1480, 1429, -3, 903, 208, 405, 1006, 1834 1362, 464, 602, 819, 603, 460, 766, 42, 159, 108, 1835 935, 208, 604, 724, 486, 163, 938, 144, 506, 1182, 1836 729, 1064, 1418, 1437, 190, 1475, 1525, 213, 1415, 766, 1837 223, 1476, 579, 863, 791, 792, 793, 794, 343, 94, 1838 8, 9, 10, 11, 12, 108, 46, 136, 137, 878, 1839 522, 845, 325, 603, 522, 514, 1141, 522, 405, 605, 1840 46, 526, 600, 894, 1153, 732, 405, 30, 46, 2, 1841 202, 4, 5, 6, 7, 286, 1156, 720, 603, 530, 1842 36, 63, 114, 1158, 39, 603, 46, 720, 325, 405, 1843 33, 40, 41, 819, 1328, 1330, 1331, 450, 1220, 1108, 1844 405, 563, 720, 208, 931, 564, 931, 566, 159, 531, 1845 532, 533, 63, 1294, 1295, 185, 736, 1415, 1416, 1131, 1846 565, 369, 758, -428, 1131, 157, 737, 34, 343, 35, 1847 569, 571, 534, 405, 535, 343, 536, 490, 1110, 319, 1848 334, 572, 323, 323, 732, 587, 159, 217, 60, 126, 1849 590, 127, 128, 129, 1227, 1458, 1459, 74, 640, 969, 1850 502, 1394, 1395, 969, 969, 696, 787, 788, 823, 159, 1851 789, 790, 1131, 67, 659, 795, 796, 660, 661, 663, 1852 664, 438, 1064, 668, 255, 1196, 1198, 1200, 860, 646, 1853 665, 670, 253, 711, 688, 751, 1049, 713, -229, 74, 1854 455, 94, 54, 763, 767, 605, 771, 824, 1283, 1284, 1855 826, 1286, 828, 908, 839, 884, 1494, 1290, 323, 891, 1856 1293, -12, 915, 883, 211, 324, 917, 8, 9, 10, 1857 11, 12, 911, 255, 345, 66, 323, 913, 914, 918, 1858 691, 238, 46, 939, 8, 9, 10, 11, 12, -405, 1859 -510, 953, 960, 740, 30, 962, 967, 973, 974, 1093, 1860 977, 338, 978, 400, 979, 721, 976, 450, 819, 54, 1861 999, 30, 988, 1000, 1001, 211, 1319, 33, 418, 1015, 1862 53, 423, 425, 1016, 1017, 343, 157, 646, 369, 1018, 1863 1019, 1020, 1021, 436, 33, 1032, -393, -392, 1079, 720, 1864 720, 323, 1081, 1046, 1089, 1090, 474, 442, 1091, 1092, 1865 1097, 445, 1096, 446, 1099, 600, -282, 831, 211, 605, 1866 1098, 104, 461, 8, 9, 10, 11, 12, 63, 215, 1867 1100, 67, 1106, 475, 1116, 768, 766, 405, 46, 1064, 1868 343, 343, 1117, 482, 862, 769, 1118, 1109, 982, 600, 1869 30, 425, 1123, 1127, 1130, 720, 720, 1151, 1174, 1375, 1870 54, 1172, 1173, 1375, 369, 1175, 74, 1190, 1176, 1108, 1871 455, 1206, 1191, 33, 1400, 1131, 1131, 1131, 211, 36, 1872 1193, 170, 171, 39, 1049, 335, 1194, 1202, 104, 1207, 1873 40, 41, 36, 1189, 170, 171, 39, 1208, -3, 1213, 1874 1515, 1218, 729, 40, 41, 922, 1224, 696, 1110, 495, 1875 1228, 1233, 1235, 1237, 1240, -283, 211, 1413, 255, 1244, 1876 211, 596, 8, 9, 10, 11, 12, 624, 367, 1064, 1877 1248, 1253, 1251, 1255, 72, 1256, 1257, 1285, 53, 1258, 1878 629, 1259, 1261, 1268, 629, 393, 1277, 255, 394, 30, 1879 395, 831, 605, 1278, 401, 402, 1448, 1108, 1087, 396, 1880 397, 1302, 398, 399, 1310, 72, 60, 1288, 1289, 208, 1881 1291, 721, 33, 1316, 1292, 666, 667, 1299, 1318, 104, 1882 1320, 729, 1325, 1064, 1324, 1326, 1064, 1332, 1333, 1281, 1883 1334, 67, 1336, 475, 1342, 1308, 1110, 1343, 54, 54, 1884 218, 1344, 1345, 1356, 46, 46, 211, 1352, 345, 1353, 1885 1363, 1131, 1131, 475, 1493, 1295, 1366, 1368, 1369, 1371, 1886 54, 475, 1378, 1381, 74, 1388, 720, 1064, 1389, -394, 1887 1392, 1403, 1064, 1407, 720, 720, 720, 1409, 1414, 54, 1888 1423, 1419, 1424, 474, 831, 1449, 1428, 716, 1425, 1426, 1889 425, 1108, 1433, 66, 1438, 1442, 605, 1064, 1347, 1440, 1890 1444, 1446, -284, 436, 1453, 730, 1451, 63, 67, 8, 1891 9, 10, 11, 12, 1472, 425, 206, 216, 720, 425, 1892 146, 1452, 147, 343, 343, 148, 211, 348, 1474, 1464, 1893 1110, 1478, 54, 1479, 1486, 1498, 30, 54, 53, 1499, 1894 1495, 1518, 46, 1203, 721, 1500, 1503, 255, 345, 909, 1895 1510, 1064, 1512, 926, 721, 1524, 1064, 1109, 104, 33, 1896 797, 799, 1470, 46, 46, 798, 158, 54, 800, 721, 1897 1189, 1064, 1243, 1064, 801, 926, 211, 1064, 172, 104, 1898 1064, 1406, 1481, 696, 1301, 46, 1064, 368, 1526, 1365, 1899 1064, 696, 1470, 809, 1497, 1239, 1379, 1467, 104, 1212, 1900 443, 686, 687, 1094, 932, 1045, 1095, 1126, 890, 605, 1901 435, 629, 822, 955, 596, 53, 715, 319, 816, 1311, 1902 1105, 72, 323, 734, 74, 841, 72, 806, 172, 210, 1903 474, 172, 963, 807, 808, 0, 0, 474, 0, 0, 1904 343, 0, 0, 596, 0, 1109, 0, 0, 596, 0, 1905 0, 0, 0, 0, 629, 67, 104, 345, 345, 345, 1906 0, 54, 67, 0, 996, 1471, 36, 0, 179, 180, 1907 39, 862, 0, 0, 0, 345, 172, 40, 41, 0, 1908 210, 474, 998, 0, 54, 75, 104, 0, 0, 0, 1909 0, 54, 1003, 716, 0, 1471, 0, 211, 0, 0, 1910 0, 74, 181, 0, 475, 0, 67, 1014, 0, 255, 1911 730, 0, 182, 928, 0, 0, 75, 1189, 0, 0, 1912 218, 0, 1412, 210, 1189, 211, 0, 0, 0, 0, 1913 211, 0, 0, 0, 0, 54, 0, 0, 172, 1109, 1914 407, 0, 1039, 0, 0, 0, 475, 415, 0, 345, 1915 0, 219, 36, 0, 179, 180, 39, 0, 954, 0, 1916 0, 425, 53, 40, 41, 0, 721, 721, 1189, 53, 1917 0, 0, 0, 0, 0, 0, 0, 1364, 0, 0, 1918 104, 0, 0, 210, 255, 730, 72, 0, 261, 0, 1919 981, 0, 172, 36, 0, 170, 171, 39, 262, 172, 1920 0, 348, 0, 104, 40, 41, 72, 0, 0, 0, 1921 104, 0, 0, 53, 72, 0, 0, 211, 0, 407, 1922 0, 210, 721, 721, 0, 210, 716, 0, 0, 371, 1923 926, 211, 0, 0, 0, 0, 716, 0, 350, 345, 1924 348, 629, 0, 0, 1012, 629, 822, 0, 74, 0, 1925 0, 716, 0, 0, 104, 74, 0, 0, 348, 1138, 1926 72, 1023, 8, 9, 10, 11, 12, 172, 0, 0, 1927 0, 0, 0, 0, 577, 8, 9, 10, 11, 12, 1928 0, 0, 581, 0, 172, 584, 0, 0, 172, 30, 1929 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 1930 0, 348, 30, 0, 1166, 1167, 0, 0, 0, 1039, 1931 0, 210, 33, 63, 0, 0, 0, 36, 0, 179, 1932 180, 39, 0, 211, 1468, 33, 0, 0, 40, 41, 1933 36, 0, 75, 0, 39, 629, 0, 75, 0, 0, 1934 0, 40, 41, 0, 0, 0, 0, 407, 0, 0, 1935 172, 415, 0, 602, 1496, 603, 0, 0, 0, 0, 1936 1215, 1216, 1309, 604, 0, 348, 42, 0, 77, 0, 1937 0, 1102, 0, 0, 0, 0, 144, 0, 0, 425, 1938 114, 0, 926, 0, 0, 0, 0, 0, 0, 0, 1939 0, 210, 0, 721, 1523, 84, 345, 0, 0, 77, 1940 0, 721, 721, 721, 0, 0, 1528, 0, 0, 0, 1941 348, 348, 348, 0, 0, 0, 0, 0, 0, 511, 1942 0, 0, 0, 0, 0, 0, 84, 0, 348, 0, 1943 596, 219, 528, 529, 220, 0, 407, 0, 0, 926, 1944 926, 210, 0, 423, 549, 721, 348, 0, 716, 716, 1945 0, 345, 345, 0, 0, 0, 0, 72, 0, 0, 1946 0, 221, 0, 348, 0, 8, 9, 10, 11, 12, 1947 0, 1188, 2, 202, 4, 5, 6, 7, 0, 0, 1948 529, 0, 36, 0, 179, 180, 39, 0, 0, 0, 1949 0, 0, 30, 40, 41, 0, 0, 75, 0, 72, 1950 224, 0, 348, 0, 716, 716, 0, 0, 0, 0, 1951 629, 0, 350, 211, 172, 33, 529, 75, 690, 0, 1952 405, 351, 0, 0, 0, 75, 577, 577, 692, 0, 1953 34, 1335, 35, 0, 0, 0, 0, 0, 348, 1337, 1954 1338, 1339, 0, 0, 0, 0, 481, 172, 358, 0, 1955 0, 350, 0, 0, 0, 0, 949, 0, 603, 0, 1956 323, 0, 210, 172, 0, 0, 950, 730, 0, 350, 1957 36, 75, 179, 180, 39, 0, 0, 172, 0, 348, 1958 0, 40, 41, 1370, 0, 0, 209, 0, 0, 348, 1959 210, 0, 348, 0, 0, 210, 228, 218, 0, 348, 1960 0, 0, 0, 0, 348, 0, 1491, 0, 405, 0, 1961 1282, 0, 350, 0, 901, 77, 1492, 0, 904, 0, 1962 77, 36, 0, 179, 180, 39, 0, 255, 0, 0, 1963 0, 63, 40, 41, 0, 0, 0, 209, 0, 926, 1964 0, 0, 84, 0, 716, 0, 730, 84, 0, 0, 1965 114, 407, 0, 0, 0, 0, 926, 690, 0, 405, 1966 0, 0, 0, 0, 0, 691, 72, 692, 0, 0, 1967 0, 0, 0, 0, 172, 716, 350, 0, 0, 0, 1968 209, 0, 210, 716, 716, 716, 0, 0, 0, 211, 1969 784, 785, 786, 0, 345, 345, 210, 537, 538, 539, 1970 540, 541, 542, 543, 544, 545, 546, 0, 1188, 0, 1971 0, 0, 0, 0, 220, 0, 0, 0, 0, 926, 1972 926, 350, 350, 350, 0, 0, 0, 716, 0, 0, 1973 547, 0, 0, 529, 0, 0, 0, 0, 114, 350, 1974 209, 221, 0, 0, 0, 0, 0, 0, 0, 348, 1975 0, 0, 0, 0, 0, 0, 0, 350, 0, 8, 1976 9, 10, 11, 12, 577, 0, 0, 0, 75, 0, 1977 0, 0, 0, 0, 350, 0, 0, 0, 209, 0, 1978 77, 0, 209, 211, 0, 0, 30, 0, 210, 0, 1979 0, 0, 0, 0, 0, 351, 0, 0, 501, 0, 1980 77, 348, 348, 0, 348, 348, 0, 84, 77, 33, 1981 75, 345, 0, 350, 36, 0, 179, 180, 39, 0, 1982 0, 0, 358, 0, 72, 40, 41, 84, 0, 0, 1983 0, 0, 114, 0, 351, 84, 0, 0, 172, 0, 1984 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 1985 181, 0, 351, 0, 77, 1188, 0, 348, 348, 0, 1986 182, 358, 1188, 0, 0, 0, 529, 0, 209, 0, 1987 0, 0, 0, 0, 0, 0, 0, 407, 0, 358, 1988 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 1989 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, 1990 350, 0, 0, 350, 0, 0, 1188, 0, 219, 0, 1991 350, 983, 0, 1513, 0, 350, 0, 0, 0, 0, 1992 348, 0, 358, 0, 469, 2, 202, 4, 5, 6, 1993 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1994 17, 18, 19, 20, 21, 22, 23, 24, 209, 0, 1995 25, 26, 27, 0, 1142, 0, 0, 529, 30, 351, 1996 0, 0, 0, 218, 0, 209, 0, 0, 0, 0, 1997 1154, 0, 0, 0, 0, 0, 0, 75, 210, 0, 1998 0, 33, 0, 34, 72, 35, 358, 0, 37, 38, 1999 0, 0, 0, 0, 0, 0, 0, 348, 209, 348, 2000 0, 0, 0, 0, 351, 351, 351, 0, 0, 0, 2001 0, 0, 0, 0, 0, 0, 8, 9, 10, 11, 2002 12, 0, 351, 0, 0, 0, 0, -3, 348, 0, 2003 0, 358, 358, 358, 0, 0, 348, 348, 348, 0, 2004 351, 0, 0, 30, 0, 1221, 0, 348, 348, 358, 2005 0, 77, 0, 0, 0, 0, 0, 351, 0, 0, 2006 350, 72, 0, 164, 0, 168, 33, 358, 174, 175, 2007 176, 36, 178, 179, 180, 39, 0, 0, 84, 0, 2008 348, 0, 40, 41, 358, 0, 0, 229, 0, 0, 2009 0, 0, 0, 77, 0, 0, 351, 0, 0, 244, 2010 245, 0, 0, 0, 0, 0, 0, 690, 0, 405, 2011 0, 0, 350, 350, 0, 350, 350, 692, 0, 209, 2012 84, 0, 0, 358, 0, 0, 0, 0, 0, 0, 2013 172, 0, 351, 0, 0, 75, 0, 0, 0, 0, 2014 0, 0, 0, 0, 0, 0, 0, 209, 0, 529, 2015 0, 0, 209, 0, 210, 0, 0, 0, 0, 358, 2016 0, 0, 0, 0, 348, 0, 0, 0, 350, 350, 2017 0, 0, 0, 351, 0, 0, 0, 8, 9, 10, 2018 11, 12, 0, 351, 0, 0, 351, 0, 0, 0, 2019 511, 220, 0, 351, 0, 0, 0, 0, 351, 0, 2020 358, 0, 0, 0, 30, 0, 0, 0, 72, 0, 2021 358, 0, 0, 358, 0, 72, 0, 0, 221, 0, 2022 358, 0, 0, 0, 0, 358, 0, 33, 0, 0, 2023 0, 350, 36, 0, 179, 180, 39, 0, 0, 209, 2024 0, 0, 0, 40, 41, 0, 0, 0, 210, 0, 2025 0, 0, 0, 209, 0, 0, 0, 0, 0, 72, 2026 77, 8, 9, 10, 11, 12, 0, 0, 1491, 0, 2027 405, 0, 0, 501, 219, 0, 0, 0, 1492, 0, 2028 0, 0, 0, 0, 0, 0, 0, 84, 30, 0, 2029 0, 0, 0, 0, 0, 75, 172, 0, 0, 0, 2030 0, 0, 0, 529, 0, 0, 0, 0, 350, 0, 2031 350, 33, 0, 0, 0, 0, 36, 0, 179, 180, 2032 39, 0, 0, 0, 0, 0, 0, 40, 41, 0, 2033 0, 0, 123, 123, 123, 0, 0, 0, 0, 350, 2034 0, 0, 0, 351, 0, 209, 0, 350, 350, 350, 2035 0, 0, 261, 594, 601, 0, 0, 0, 350, 350, 2036 0, 0, 262, 0, 0, 625, 626, 0, 0, 0, 2037 358, 0, 75, 0, 0, 0, 0, 0, 0, 0, 2038 0, 0, 121, 124, 125, 0, 0, 0, 0, 0, 2039 0, 350, 0, 0, 162, 351, 351, 0, 351, 351, 2040 0, 0, 0, 123, 0, 123, 0, 8, 9, 10, 2041 11, 12, 0, 214, 0, 0, 0, 0, 77, 0, 2042 0, 0, 358, 358, 0, 358, 358, 0, 0, 271, 2043 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2044 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 2045 0, 351, 351, 250, 0, 251, 0, 33, 0, 162, 2046 0, 0, 36, 0, 268, 0, 39, 0, 0, 0, 2047 0, 0, 0, 40, 41, 350, 0, 0, 358, 358, 2048 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 2049 0, 0, 123, 162, 123, 123, 0, 0, 736, 123, 2050 0, 123, 123, 364, 0, 0, 0, 370, 737, 0, 2051 0, 0, 0, 0, 351, 0, 0, 0, 0, 75, 2052 0, 0, 0, 0, 0, 278, 75, 279, 0, 0, 2053 0, 0, 0, 0, 390, 209, 0, 0, 0, 0, 2054 0, 358, 0, 0, 409, 410, 0, 0, 280, 414, 2055 0, 416, 417, 0, 281, 162, 0, 220, 282, 0, 2056 0, 283, 284, 285, 286, 40, 41, 214, 287, 288, 2057 75, 123, 0, 0, 0, 0, 289, 0, 77, 0, 2058 0, 0, 0, 0, 221, 162, 456, 0, 0, 0, 2059 290, 351, 374, 351, 0, 0, 0, 0, 0, 292, 2060 376, 294, 295, 296, 297, 84, 0, 0, 0, 370, 2061 0, 0, 0, 1204, 0, 0, 0, 162, 358, 0, 2062 358, 0, 351, 0, 0, 0, 0, 0, 0, 0, 2063 351, 351, 351, 0, 0, 0, 0, 0, 0, 0, 2064 456, 351, 351, 162, 0, 0, 0, 1022, 0, 358, 2065 8, 9, 10, 11, 12, 77, 0, 358, 358, 358, 2066 0, 0, 0, 0, 0, 0, 0, 0, 358, 358, 2067 0, 0, 0, 0, 351, 0, 278, 30, 279, 0, 2068 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 2069 599, 0, 0, 0, 0, 623, 0, 0, 0, 280, 2070 33, 358, 0, 0, 0, 281, 0, 0, 0, 282, 2071 0, 209, 283, 284, 285, 286, 40, 41, 0, 287, 2072 288, 0, 0, 0, 0, 0, 0, 289, 0, 0, 2073 942, 0, 943, 0, 0, 0, 0, 0, 0, 946, 2074 947, 290, 0, 374, 952, 0, 0, 0, 0, 0, 2075 292, 817, 294, 295, 296, 297, 957, 0, 351, 0, 2076 0, 961, 0, 0, 0, 0, 0, 0, 0, 0, 2077 162, 162, 0, 0, 0, 0, 0, 364, 0, 0, 2078 0, 0, 0, 0, 0, 358, 989, 0, 0, 0, 2079 0, 0, 0, 0, 0, 0, 0, 0, 456, 0, 2080 0, 456, 77, 0, 0, 209, 0, 456, 0, 77, 1775 110, 449, 46, 95, 146, 264, 927, 762, 403, 379, 1776 380, 147, 148, 111, 395, 396, 424, 785, 928, 397, 1777 398, 436, 502, 399, 889, 707, 53, 112, 865, 713, 1778 400, 401, 836, 46, 95, 1194, 404, 1085, 746, 47, 1779 929, 702, 751, 1136, 46, 601, 46, 158, 847, 1453, 1780 1390, 840, 614, 1084, 674, 66, 46, 53, 609, 848, 1781 633, 1178, 46, 190, 637, 46, 213, 149, 46, 223, 1782 47, 104, 104, 1144, 683, 257, 174, 140, 216, 814, 1783 837, 108, 687, 988, 927, 841, 66, 113, 403, 207, 1784 421, 945, 217, 1457, 395, 396, 928, 969, 1309, 397, 1785 398, 406, 104, 399, 1176, 1177, 46, 842, 532, 46, 1786 400, 401, 150, 570, 773, 46, 404, 839, 929, 30, 1787 838, 151, 1188, 1453, 339, 277, 258, 30, 199, 259, 1788 156, 30, 108, 287, 108, 475, 1092, 104, 94, -232, 1789 -232, 1202, 931, 67, 146, 119, 46, 158, 571, 1410, 1790 1411, 147, 148, 1473, 46, 851, 880, 881, 30, 46, 1791 369, 858, 972, 108, 944, 120, 836, 1310, 163, 94, 1792 878, 878, 878, 899, 67, 479, 481, 200, 1211, 1212, 1793 145, 1206, 94, 278, 46, 46, 158, 734, 878, 255, 1794 735, 1457, 1204, 1410, 1411, 156, 1457, 249, 186, 407, 1795 46, 94, 777, 407, 94, 741, 209, 149, 46, 158, 1796 -232, 672, 1193, 1254, 837, 165, 1457, 46, 138, 1412, 1797 46, 439, 532, 1457, 146, 139, 532, 669, 415, 320, 1798 407, 147, 148, 163, 108, 405, 1128, 435, 336, 166, 1799 373, 1255, 723, 1129, 437, 1251, 1499, 952, 469, 443, 1800 46, 95, 150, 1127, 838, 670, 374, 970, 1178, 74, 1801 836, 151, 878, 1421, 46, 46, 158, 324, 464, 238, 1802 241, 46, 141, 783, 53, 1194, 108, 698, 46, 840, 1803 480, 1528, 94, 1530, 661, 707, 1030, 47, 426, 520, 1804 74, 487, 430, 825, 467, 94, 475, 1031, 504, 1335, 1805 601, 143, 30, 66, 744, 700, 1184, 1178, 837, 669, 1806 592, 1146, 676, 841, 614, 1339, 475, 1007, 681, 104, 1807 394, 186, 320, 452, 475, 30, 920, 46, 369, 601, 1808 432, 30, 108, 1185, 601, 842, 874, 670, 1010, 339, 1809 879, 879, 879, 532, 94, 1018, 46, 46, 838, 383, 1810 1176, 1177, 1483, 878, 430, 152, 94, 492, 879, 1085, 1811 324, 438, 480, 46, 868, 384, 174, 46, 869, 226, 1812 1393, 1341, 485, 227, 407, 1084, 231, 525, 233, 1185, 1813 156, -110, 851, 634, 572, 242, 94, 638, 1397, 560, 1814 561, 67, 432, 734, 46, 849, 735, 606, 168, 840, 1815 483, 856, -110, 606, 46, 369, 848, 1208, 532, 678, 1816 680, 2, 203, 4, 5, 6, 7, 865, 163, 852, 1817 1126, 178, 46, 855, 591, 562, 563, 598, 46, 461, 1818 46, 1178, 879, 841, 1542, 1194, 756, 1541, 108, 225, 1819 136, 137, 1194, 757, 872, -110, 631, -110, 875, 723, 1820 635, -110, 1372, 336, 46, 842, 108, 1552, 136, 235, 1821 198, 1557, 1333, 94, 1556, 603, -110, -110, 734, 1334, 1822 110, 735, 1442, 1443, 34, 1448, 35, -288, 46, 108, 1823 240, 136, 137, 608, 244, 750, 46, 369, 1142, 209, 1824 46, 95, 1095, 236, 46, 1194, 890, 249, 237, 502, 1825 339, -110, -110, 764, 1114, 247, 1250, 74, 320, 320, 1826 581, 226, 74, 60, 53, 761, 582, -110, 885, -515, 1827 403, 1100, 261, 879, 1012, 395, 396, 47, 825, 702, 1828 397, 398, 778, 386, 399, 761, 452, 784, 761, 452, 1829 186, 400, 401, 66, 60, 452, 324, 324, 404, 387, 1830 1073, 901, 614, 249, 326, 407, 388, 113, 1029, 104, 1831 523, 1031, -10, 390, 108, 649, 136, 137, 475, 818, 1832 1164, 1166, 389, 708, 1100, 1244, 36, -438, 903, 391, 1833 39, 710, 492, 723, 320, 469, 492, 40, 41, 709, 1834 699, 327, 688, 723, -439, 46, 525, 711, 582, 273, 1835 525, 747, 320, 525, 212, 282, 748, 46, 723, 46, 1836 949, 708, 1489, 833, 336, 606, 40, 41, 825, 1489, 1837 209, 239, 324, 607, 275, 710, 94, 923, 46, 1191, 1838 608, 67, 1283, 1284, 497, 870, 498, 1191, 1370, 871, 1839 324, 924, 517, -464, 46, 1192, 712, 328, 867, 827, 1840 226, 461, 231, 1315, 1324, 212, 1512, 900, 46, 902, 1841 276, 46, 1517, 339, 882, 63, 114, 707, 320, 1326, 1842 1325, 1029, 1538, 74, -464, 725, -464, 1034, 898, 823, 1843 -464, 726, 598, 1537, 745, 1327, 749, 1042, 1544, 769, 1844 891, 677, 679, 74, 329, 46, 63, 46, 212, 870, 1845 574, 74, 407, 1110, 330, 1373, 324, 331, 1089, 157, 1846 575, 864, 1199, 509, 332, 1420, 598, 583, 601, 407, 1847 603, 892, 873, 648, 771, 948, 407, 893, 586, 1122, 1848 407, 218, 1049, 742, 772, 904, 1175, 407, 339, 743, 1849 226, 46, 46, 835, 752, 608, 953, 74, 606, 866, 1850 753, 367, 768, 368, 603, 46, 954, 669, 769, 212, 1851 36, 60, 171, 172, 39, 698, 476, 914, 256, 1111, 1852 438, 40, 41, 769, 758, 504, 916, 336, 759, 523, 1853 372, 765, 769, 523, 996, 670, 523, -103, 1009, 1382, 1854 997, -103, 1240, 700, 726, 381, 825, 212, 582, 452, 1855 385, 212, 1491, 422, 1492, 553, 723, 723, 1366, 325, 1856 554, 555, 1358, 1367, 769, 393, 1359, 256, 346, 769, 1857 2, 203, 4, 5, 6, 7, 415, 665, 407, 492, 1858 405, 926, 36, 699, 927, 46, 39, 886, 428, 1369, 1859 807, 1438, 1168, 40, 41, 769, 928, 46, 402, 1374, 1860 1439, 907, 336, 407, 734, 769, 1436, 735, 1450, 1539, 1861 249, 326, 209, 420, 723, 723, 425, 427, 929, 42, 1862 1242, 157, 1073, 160, 1246, 446, 209, 835, 608, 144, 1863 533, 534, 535, 34, 827, 35, 423, 212, 108, 459, 1864 136, 137, 444, 1458, 1189, 1071, 447, 939, 448, 769, 1865 485, 326, 407, 942, 536, 465, 537, 463, 538, 539, 1866 1011, 1505, 36, 63, 823, 1562, 39, 1506, 477, 466, 1867 46, 582, 53, 40, 41, 556, 557, 476, 484, 558, 1868 559, 1510, 1450, 1148, 46, 407, 427, 735, 160, 849, 1869 326, 606, 46, 755, 108, 74, -3, 476, 1160, 739, 1870 407, 66, 564, 565, 159, 476, 1302, 1303, 1304, 740, 1871 46, 8, 9, 10, 11, 12, 1383, 104, 212, 209, 1872 191, 835, 1163, 214, 606, 1115, 224, 126, 462, 127, 1873 128, 129, 1361, 608, 1340, 1342, 1343, 74, 30, 1116, 1874 1165, 488, 606, 1138, 508, 1228, 761, 407, 1138, 732, 1875 287, 60, 516, 256, 823, 1320, 599, 528, 452, 1235, 1876 532, 935, 627, 935, 1000, 997, 33, 566, 212, 567, 1877 1409, 326, 407, 1417, 569, 632, 769, 1002, 335, 632, 1878 1379, 1380, 256, 568, 104, 431, 723, 1430, 997, 67, 1879 795, 796, 797, 798, 723, 723, 723, 1138, 492, 1117, 1880 320, 1436, 1437, -435, 159, 1484, 1485, 1071, 1410, 1411, 1881 1203, 1205, 1207, 572, 791, 792, 457, 370, 1456, 590, 1882 699, 593, 662, 1460, 793, 794, 643, 649, 699, 477, 1883 663, 53, 799, 800, 1054, 1524, 664, 666, 324, 533, 1884 534, 535, 723, 159, 346, 667, 608, 431, 668, 477, 1885 864, 671, 673, 1482, 254, 714, 910, 477, 691, 716, 1886 1196, -236, 754, 536, 766, 537, 159, 538, 1311, 46, 1887 527, 770, 774, 160, -12, 828, 104, 830, 440, 832, 1888 843, 895, 888, 719, 915, 1100, 427, 887, 866, 917, 1889 212, 922, 918, 164, 930, 169, 943, -519, 175, 176, 1890 177, 733, 179, 63, 694, 74, -412, 957, 964, 743, 1891 438, 427, 966, 977, 978, 427, 930, 230, 212, 981, 1892 971, 982, 980, 212, 983, 649, 992, 1004, 1005, 245, 1893 246, 452, 823, 1006, 1020, 339, 1021, 1022, 1023, 1551, 1894 1024, 1025, 973, 256, 346, 1551, 1026, 1037, 67, 476, 1895 36, 1086, 180, 181, 39, 732, 1551, -400, 216, -399, 1896 1551, 40, 41, 1051, 1088, 46, -289, 1071, 1096, 1097, 1897 1098, 207, 217, 8, 9, 10, 11, 12, 1099, 1103, 1898 8, 9, 10, 11, 12, 370, 1104, 693, 1105, 407, 1899 813, 476, 1106, 1107, 53, 694, 1113, 695, 1123, 1115, 1900 30, 769, 1124, 1138, 1138, 1138, 1001, 30, 632, 826, 1901 212, 599, 1125, 1116, 1130, 986, 1134, 104, 1137, 1158, 1902 1179, 1180, 845, 66, 212, 1054, 1181, 1182, 33, 457, 1903 732, 1434, 457, 1197, 1183, 33, 1198, 1200, 457, 104, 1904 599, 1201, 1209, 1213, 1216, 599, 1550, 1215, 1221, 336, 1905 -3, 632, 1226, 1232, 346, 346, 346, 1243, 104, 1236, 1906 761, 1071, 370, 497, 74, 1241, 437, 1252, 1245, 1248, 1907 1256, 53, 346, 1117, 1259, 1261, 1263, 574, 1293, 407, 1908 1264, 1265, 1269, 1266, 1044, 1267, 1276, 575, 209, 527, 1909 719, 1115, 1285, 527, 1286, 1296, 527, 403, 72, 1297, 1910 1196, 477, 1314, 395, 396, 1116, 256, 733, 397, 398, 1911 932, 67, 399, 1299, 1322, 1071, 104, 212, 1071, 400, 1912 401, 669, 1300, 1308, 211, 404, 1328, 1330, 1332, 72, 1913 1289, 1336, 1337, 1338, 1344, 1345, 1346, 1348, 1523, 1354, 1914 46, 46, 1355, 477, 1356, 1357, 346, 1138, 1138, 670, 1915 104, 1364, 1365, 1368, 1375, 958, 1376, 1304, 427, 60, 1916 1433, 1384, 1385, 1071, 219, 1117, 1397, 36, 1071, 180, 1917 181, 39, 930, 1394, 1387, 211, 1404, 1405, 40, 41, 1918 -401, 256, 733, 438, 597, 604, 1475, 985, 67, 1408, 1919 1419, 1427, 1428, 170, 1115, 1423, 628, 629, 1071, 1425, 1920 1429, 1435, 1145, 1440, 605, 1359, 606, 1449, 1116, 1454, 1921 1444, 1445, 1446, 1459, 607, 1447, 1291, 1292, 211, 1294, 1922 1461, 1463, 1465, 1467, 719, 1298, 1469, 74, 1301, 1472, 1923 1471, 53, 1477, 146, 719, 1479, 250, 346, 53, 632, 1924 147, 148, 1017, 632, 826, 1478, 1525, 1490, 46, 719, 1925 1500, 349, 1044, 104, 1502, 1533, 1504, 1508, 1509, 1028, 1926 1196, 1071, 1531, 1516, 1532, 1536, 1071, 1196, 1117, 1543, 1927 1545, 1547, 1560, 46, 46, 158, 104, 1561, 1214, 211, 1928 1553, 801, 804, 104, 1071, 36, 1071, 180, 181, 39, 1929 1071, 53, 457, 1071, 802, 805, 40, 41, 46, 369, 1930 1496, 1071, 1496, 803, 74, 1071, 173, 1313, 212, 1511, 1931 973, 63, 1422, 1563, 973, 973, 724, 211, 476, 1247, 1932 1196, 211, 693, 1378, 407, 445, 1395, 930, 513, 1493, 1933 1101, 413, 695, 632, 1220, 689, 104, 1496, 718, 1496, 1934 936, 530, 531, 690, 1102, 1133, 72, 820, 67, 1050, 1935 894, 72, 959, 552, 433, 67, 173, 1112, 1323, 173, 1936 737, 967, 810, 0, 441, 811, 812, 320, 0, 1109, 1937 2, 203, 4, 5, 6, 7, 0, 427, 114, 0, 1938 0, 0, 0, 0, 930, 930, 0, 1416, 0, 531, 1939 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 1940 0, 913, 0, 0, 173, 324, 0, 211, 67, 483, 1941 8, 9, 10, 11, 12, 0, 732, 0, 0, 8, 1942 9, 10, 11, 12, 0, 531, 0, 0, 1331, 599, 1943 0, 0, 524, 34, 0, 35, 0, 30, 0, 0, 1944 0, 0, 425, 0, 0, 219, 30, 719, 719, 0, 1945 346, 346, 0, 0, 75, 8, 9, 10, 11, 12, 1946 0, 0, 0, 0, 74, 33, 0, 173, 0, 0, 1947 1195, 74, 0, 0, 33, 0, 0, 0, 0, 36, 1948 0, 60, 30, 39, 0, 75, 212, 0, 211, 0, 1949 40, 41, 0, 0, 0, 0, 732, 0, 0, 0, 1950 0, 457, 0, 0, 0, 719, 719, 771, 0, 407, 1951 33, 632, 72, 0, 0, 1391, 42, 772, 0, 1391, 1952 220, 173, 0, 724, 74, 0, 144, 349, 173, 0, 1953 0, 0, 72, 0, 0, 1003, 0, 0, 211, 0, 1954 72, 0, 0, 0, 0, 1008, 0, 0, 0, 0, 1955 0, 0, 953, 0, 606, 0, 0, 0, 476, 0, 1956 1019, 0, 954, 946, 0, 947, 349, 36, 733, 171, 1957 172, 39, 950, 951, 0, 54, 54, 956, 40, 41, 1958 685, 212, 0, 0, 349, 0, 72, 0, 36, 961, 1959 180, 181, 39, 930, 965, 0, 173, 0, 0, 40, 1960 41, 788, 789, 790, 368, 0, 54, 351, 0, 0, 1961 930, 1290, 210, 173, 727, 0, 0, 173, 0, 993, 1962 0, 1474, 229, 0, 0, 182, 0, 349, 256, 0, 1963 0, 0, 0, 63, 0, 183, 0, 0, 54, 0, 1964 0, 54, 0, 0, 531, 0, 719, 0, 733, 0, 1965 0, 524, 114, 0, 0, 524, 0, 724, 524, 0, 1966 211, 0, 0, 210, 597, 0, 0, 724, 0, 0, 1967 0, 0, 0, 0, 457, 0, 0, 719, 0, 0, 1968 173, 0, 724, 930, 930, 719, 719, 719, 211, 0, 1969 0, 0, 349, 211, 0, 0, 346, 346, 0, 0, 1970 0, 0, 75, 0, 0, 0, 210, 75, 0, 0, 1971 1195, 0, 0, 0, 0, 0, 0, 0, 476, 0, 1972 0, 1038, 1039, 1040, 1041, 476, 1043, 0, 344, 0, 1973 0, 0, 0, 719, 0, 0, 0, 349, 349, 349, 1974 0, 0, 1087, 0, 114, 0, 0, 8, 9, 10, 1975 11, 12, 0, 0, 0, 349, 1093, 0, 1173, 1174, 1976 36, 0, 171, 172, 39, 0, 0, 210, 0, 0, 1977 0, 40, 41, 349, 30, 0, 0, 531, 476, 0, 1978 211, 0, 0, 0, 72, 0, 0, 0, 0, 0, 1979 349, 0, 0, 54, 211, 1108, 0, 372, 0, 0, 1980 0, 220, 33, 0, 0, 210, 0, 36, 0, 210, 1981 0, 39, 0, 0, 0, 912, 1223, 1224, 40, 41, 1982 0, 346, 987, 54, 919, 503, 72, 0, 921, 349, 1983 0, 0, 0, 0, 1135, 0, 77, 0, 0, 0, 1984 0, 1143, 0, 0, 739, 173, 1147, 114, 0, 0, 1985 0, 1151, 0, 1152, 740, 0, 0, 1154, 1155, 1156, 1986 0, 0, 1159, 0, 0, 349, 0, 77, 75, 531, 1987 1195, 1171, 0, 0, 0, 0, 0, 1195, 173, 0, 1988 724, 724, 0, 351, 0, 0, 0, 211, 75, 1186, 1989 1187, 0, 0, 0, 173, 210, 75, 0, 0, 0, 1990 0, 0, 221, 0, 0, 0, 0, 349, 173, 0, 1991 0, 0, 0, 0, 0, 0, 1217, 349, 0, 1219, 1992 349, 0, 351, 0, 0, 219, 0, 349, 0, 0, 1993 1195, 0, 349, 0, 0, 0, 0, 1546, 724, 724, 1994 351, -290, 75, 36, 0, 180, 181, 39, 8, 9, 1995 10, 11, 12, 0, 40, 41, 0, 1234, 0, 0, 1996 0, 0, 0, 1238, 1239, 0, 0, 0, 0, 0, 1997 0, 0, 0, 0, 1249, 30, 210, 0, 0, 1253, 1998 262, 0, 1257, 351, 1258, 0, 0, 1260, 1347, 352, 1999 263, 0, 84, 210, 72, 0, 1349, 1350, 1351, 0, 2000 1268, 0, 0, 33, 344, 173, 0, 0, 0, 0, 2001 0, 0, 0, 1275, 0, 1277, 1278, 1279, 1280, 0, 2002 0, 0, 0, 84, 0, 0, 210, 0, 0, 0, 2003 0, 1287, 0, 1288, 0, 0, 0, 169, 0, 0, 2004 0, 0, 0, 1497, 1386, 1497, 0, 0, 351, 0, 2005 0, 0, 0, 0, 0, 0, 0, 0, 222, 0, 2006 0, 1094, 531, 54, 0, -291, 1316, 1317, 0, 0, 2007 0, 0, 8, 9, 10, 11, 12, 349, 211, 1321, 2008 1497, 0, 1497, 0, 77, 409, 0, 0, 0, 77, 2009 0, 0, 417, 351, 351, 351, 0, 0, 0, 30, 2010 0, 0, 0, 513, 344, 0, 0, 0, 0, 0, 2011 724, 351, 0, 0, 0, 0, 1352, 1353, 724, 724, 2012 724, 0, 0, 0, 0, 0, 1363, 33, 0, 351, 2013 349, 349, 0, 349, 349, 0, 0, 0, 0, 0, 2014 75, 0, 0, 0, 0, 359, 351, 0, 210, 0, 2015 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 2016 0, 0, 0, 0, 409, 0, 724, 0, 0, 344, 2017 173, 0, 0, 0, 0, 0, 210, 0, 1396, 0, 2018 0, 210, 75, 221, 0, 351, 0, 0, 349, 349, 2019 1400, 0, 1401, 1402, 1403, 0, 0, 36, 0, 180, 2020 181, 39, 0, 0, 1407, 0, 0, 1210, 40, 41, 2021 0, 0, 0, 1418, 344, 344, 344, 0, 531, 580, 2022 0, 351, 0, 0, 0, 0, 0, 584, 0, 1431, 2023 587, 0, 344, 0, 1521, 0, 407, 0, 0, 0, 2024 84, 0, 0, 0, 1522, 84, 0, 0, 0, 0, 2025 77, 349, 0, 0, 0, 0, 211, 0, 0, 0, 2026 0, 0, 0, 351, 0, 352, 0, 0, 210, 0, 2027 77, 0, 0, 351, 0, 0, 351, 0, 77, 0, 2028 0, 220, 210, 351, 0, 1480, 1481, 0, 351, 0, 2029 0, 0, 0, 409, 219, 0, 0, 417, 1486, 0, 2030 0, 0, 503, 0, 352, 1486, 344, 0, 0, 0, 2031 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 2032 0, 0, 352, 0, 77, 0, 0, 0, 0, 349, 2033 0, 349, 0, 0, 0, 0, 0, 0, 1520, 222, 2034 0, 0, 1526, 0, 0, 0, 0, 0, 0, 0, 2035 75, 211, 0, 0, 0, 0, 0, 0, 0, 0, 2036 349, 0, 0, 0, 0, 352, 0, 0, 349, 349, 2037 349, 1548, 0, 1549, 0, 210, 0, 0, 0, 349, 2038 349, 0, 409, 0, 8, 9, 10, 11, 12, 0, 2039 0, 0, 0, 72, 0, 0, 0, 344, 0, 0, 2040 0, 1564, 1565, 0, 344, 0, 84, 0, 0, 1568, 2041 1569, 30, 0, 0, 0, 0, 349, 0, 0, 0, 2042 0, 359, 0, 0, 0, 0, 84, 0, 0, 0, 2043 352, 0, 0, 351, 84, 0, 0, 0, 0, 33, 2044 0, 0, 0, 0, 36, 1377, 180, 181, 39, 0, 2045 0, 0, 0, 0, 0, 40, 41, 0, 0, 0, 2046 359, 0, 0, 0, 0, 173, 0, 0, 0, 0, 2047 0, 54, 0, 580, 580, 352, 352, 352, 359, 0, 2048 84, 605, 0, 606, 0, 0, 351, 351, 0, 351, 2049 351, 607, 0, 352, 0, 0, 0, 0, 0, 0, 2050 0, 0, 0, 0, 349, 0, 0, 0, 0, 75, 2051 0, 352, 0, 0, 0, 0, 0, 0, 0, 0, 2052 0, 359, 77, 0, 0, 0, 0, 0, 352, 8, 2053 9, 10, 11, 12, 0, 0, 0, 0, 54, 0, 2054 0, 0, 0, 0, 351, 351, 0, 123, 123, 123, 2055 0, 0, 0, 72, 344, 0, 30, 0, 0, 0, 2056 72, 905, 0, 0, 77, 908, 210, 352, 540, 541, 2057 542, 543, 544, 545, 546, 547, 548, 549, 0, 0, 2058 0, 0, 0, 0, 33, 0, 359, 0, 0, 36, 2059 0, 180, 181, 39, 0, 0, 0, 0, 409, 0, 2060 40, 41, 550, 352, 1494, 0, 1498, 351, 0, 0, 2061 344, 344, 0, 72, 0, 0, 0, 0, 123, 0, 2062 123, 0, 0, 0, 0, 0, 693, 0, 407, 0, 2063 54, 359, 359, 359, 0, 0, 695, 0, 0, 0, 2064 173, 1527, 0, 1529, 272, 352, 0, 0, 0, 359, 2065 220, 0, 0, 0, 0, 352, 0, 0, 352, 0, 2066 0, 0, 0, 221, 0, 352, 0, 359, 0, 0, 2067 352, 0, 75, 0, 0, 0, 0, 0, 84, 8, 2068 9, 10, 11, 12, 359, 351, 1558, 351, 1559, 0, 2069 0, 0, 8, 9, 10, 11, 12, 0, 0, 0, 2070 123, 1566, 1567, 0, 0, 0, 30, 0, 123, 0, 2071 123, 123, 580, 0, 0, 123, 351, 123, 123, 30, 2072 84, 0, 0, 359, 351, 351, 351, 0, 0, 121, 2073 124, 125, 77, 0, 33, 351, 351, 0, 0, 36, 2074 0, 180, 181, 39, 210, 0, 0, 33, 0, 75, 2075 40, 41, 36, 0, 180, 181, 39, 0, 0, 359, 2076 0, 0, 0, 40, 41, 0, 0, 0, 0, 0, 2077 54, 54, 351, 0, 0, 0, 1521, 0, 407, 0, 2078 0, 0, 0, 0, 0, 0, 1522, 123, 0, 182, 2079 0, 0, 0, 54, 0, 0, 0, 0, 0, 183, 2080 251, 359, 252, 0, 0, 0, 0, 0, 208, 0, 2081 0, 359, 54, 0, 359, 352, 0, 0, 228, 222, 2082 232, 359, 234, 0, 162, 409, 359, 0, 0, 243, 2083 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 2084 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 2085 8, 9, 10, 11, 12, 0, 344, 344, 0, 208, 2086 351, 232, 234, 243, 0, 54, 0, 0, 352, 352, 2087 54, 352, 352, 0, 0, 0, 0, 30, 0, 0, 2088 0, 0, 392, 0, 0, 0, 0, 0, 84, 162, 2089 0, 77, 411, 412, 269, 0, 0, 416, 0, 418, 2090 419, 0, 208, 1149, 54, 33, 0, 0, 0, 75, 2091 36, 0, 180, 181, 39, 0, 75, 0, 0, 1161, 2092 0, 40, 41, 162, 0, 0, 352, 352, 0, 0, 2093 0, 0, 0, 365, 0, 0, 0, 371, 0, 0, 2094 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 2095 0, 0, 0, 0, 0, 0, 0, 263, 0, 0, 2096 0, 0, 0, 208, 0, 232, 234, 243, 0, 75, 2097 0, 359, 0, 0, 0, 0, 0, 0, 0, 0, 2098 0, 344, 0, 0, 0, 0, 162, 0, 0, 352, 2099 0, 0, 0, 0, 0, 0, 1229, 0, 215, 0, 2100 0, 208, 0, 0, 0, 208, 0, 54, 0, 0, 2101 0, 0, 0, 0, 0, 0, 162, 458, 0, 0, 2102 0, 501, 0, 0, 359, 359, 0, 359, 359, 0, 2103 54, 0, 221, 0, 0, 0, 0, 54, 0, 0, 2104 371, 0, 0, 0, 0, 0, 0, 84, 162, 0, 2105 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 2106 0, 0, 0, 0, 0, 0, 0, 352, 0, 352, 2107 208, 458, 0, 0, 162, 0, 0, 0, 0, 0, 2108 0, 0, 359, 359, 0, 0, 0, 0, 0, 0, 2109 54, 208, 0, 0, 0, 0, 232, 234, 352, 0, 2110 123, 123, 0, 0, 243, 0, 352, 352, 352, 0, 2111 0, 0, 0, 0, 0, 0, 0, 352, 352, 0, 2112 0, 602, 0, 0, 0, 0, 626, 0, 0, 0, 2113 123, 77, 0, 123, 123, 279, 123, 280, 123, 123, 2114 0, 0, 0, 123, 123, 359, 0, 208, 0, 0, 2115 0, 0, 0, 0, 352, 0, 0, 0, 0, 0, 2116 0, 0, 0, 281, 0, 208, 0, 0, 0, 282, 2117 208, 0, 208, 283, 0, 0, 284, 285, 286, 287, 2118 40, 41, 0, 288, 289, 0, 0, 0, 222, 208, 2119 0, 290, 208, 208, 0, 0, 0, 0, 0, 0, 2120 0, 0, 162, 162, 0, 0, 510, 0, 208, 365, 2121 84, 0, 0, 0, 0, 293, 377, 295, 296, 297, 2122 298, 123, 208, 359, 0, 359, 123, 123, 0, 208, 2123 458, 0, 123, 458, 0, 0, 0, 0, 0, 458, 2124 0, 0, 352, 0, 0, 0, 0, 0, 0, 0, 2125 0, 0, 0, 0, 359, 0, 0, 0, 0, 0, 2126 0, 0, 359, 359, 359, 0, 736, 0, 0, 0, 2127 0, 0, 0, 359, 359, 0, 0, 0, 162, 0, 2128 0, 0, 815, 816, 0, 0, 153, 84, 0, 0, 2129 458, 77, 0, 0, 458, 0, 162, 458, 77, 0, 2130 0, 0, 0, 0, 0, 0, 0, 0, 0, 365, 2131 359, 0, 850, 0, 0, 853, 854, 0, 857, 0, 2132 859, 860, 0, 0, 0, 861, 862, 0, 0, 0, 2133 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 2134 0, 0, 253, 0, 208, 0, 0, 0, 0, 0, 2135 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 2136 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 2137 0, 0, 208, 0, 365, 0, 602, 208, 0, 831, 2081 2138 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2082 18, 19, 20, 21, 22, 23, 24, -285, 0, 84, 2083 594, 0, 0, 0, 733, 0, 84, 30, 0, 0, 2084 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 2085 0, 0, 0, 77, 0, 0, 0, 0, 456, 0, 2086 33, 0, 456, 0, 162, 456, 0, 0, 0, 0, 2087 0, -285, 0, 0, 0, 0, 0, 364, 0, 0, 2088 84, 0, 123, 123, 0, 0, 0, 1033, 1034, 1035, 2089 1036, 0, 1038, 0, 0, 0, 0, 0, 0, 0, 2090 0, 0, 0, 0, 0, 0, 0, 0, 1080, 0, 2091 0, 0, 123, 0, 0, 123, 123, 0, 123, 0, 2092 123, 123, 1086, 0, 0, 123, 123, 0, 0, 162, 2093 0, 0, 811, 812, 0, 0, 0, 0, 0, 0, 2094 0, 364, 0, 599, 0, 0, 827, 0, 0, 0, 2139 18, 19, 20, 21, 22, 23, 24, 153, 359, 25, 2140 26, 27, 0, 0, 0, 602, 0, 30, 937, 938, 2141 602, 382, 0, 0, 940, 0, 0, 0, 0, 365, 2142 365, 365, 0, 0, 0, 0, 0, 0, 0, 0, 2143 0, 0, 0, 0, 414, 33, 0, 365, 0, 0, 2144 36, 0, 37, 38, 39, 0, 0, 84, 429, 0, 2145 0, 40, 41, 0, 84, 0, 0, 434, 0, 0, 2146 0, 0, 0, 0, 208, 0, 0, 442, 0, 0, 2147 0, 0, 736, 0, 0, 0, 0, 42, 208, 154, 2148 0, 279, 0, 280, 0, 0, 0, 44, 0, 0, 2149 0, 0, 468, 458, 0, 0, 0, 478, 501, 0, 2150 0, 0, 0, 0, 0, 0, 0, 84, 0, 281, 2151 486, 365, 0, 955, 0, 282, 496, 0, 500, 283, 2152 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2153 289, 0, 0, 0, 0, 529, 0, 290, 0, 0, 2154 0, 0, 0, 0, 0, 0, 0, 736, 0, 0, 2155 0, 0, 291, 0, 375, 0, 0, 376, 208, 0, 2156 0, 293, 377, 295, 296, 297, 298, 0, 0, 0, 2157 0, 208, 0, 0, 0, 0, 0, 0, 589, 0, 2158 0, 0, 0, 594, 0, 0, 0, 0, 0, 0, 2159 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2160 0, 0, 365, 0, 0, 0, 626, 0, 0, 365, 2161 0, 640, 0, 0, 123, 641, 642, 0, 644, 0, 2162 0, 0, 0, 0, 0, 655, 656, 0, 657, 658, 2163 0, 659, 0, 660, 0, 0, 0, 0, 0, 0, 2164 0, 1027, 0, 0, 8, 9, 10, 11, 12, 0, 2165 589, 0, 0, 0, 0, 0, 0, 0, 675, 0, 2095 2166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2096 0, 1101, 846, 0, 0, 849, 850, 0, 853, 0, 2097 855, 856, 599, 0, 0, 857, 858, 599, 0, 0, 2098 0, 0, 0, 0, 0, 0, 364, 364, 364, 0, 2167 279, 30, 280, 0, 0, 0, 0, 208, 0, 0, 2168 0, 0, 0, 686, 0, 0, 0, 0, 0, 0, 2169 0, 0, 0, 0, 692, 0, 0, 0, 281, 33, 2170 0, 0, 458, 208, 282, 0, 0, 0, 283, 0, 2171 0, 284, 285, 286, 287, 40, 41, 728, 288, 289, 2172 0, 0, 0, 731, 0, 0, 290, 0, 468, 0, 2173 208, 0, 0, 0, 0, 0, 0, 123, 0, 0, 2174 0, 291, 0, 375, 162, 0, 0, 0, 0, 0, 2175 293, 821, 295, 296, 297, 298, 0, 0, 0, 365, 2176 0, 0, 208, 0, 767, 0, 0, 0, 0, 0, 2177 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 2178 782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2179 0, 0, 0, 0, 602, 0, 1225, 0, 0, 1169, 2180 0, 0, 8, 9, 10, 11, 12, 0, 0, 0, 2181 0, 0, 0, 0, 0, 365, 365, 809, 0, 0, 2182 0, 0, 0, 0, 0, 318, 819, 0, 279, 30, 2183 280, 0, 0, 822, 0, 342, 0, 0, 829, 0, 2184 0, 0, 0, 0, 0, 0, 0, 378, 378, 844, 2185 0, 0, 0, 0, 208, 0, 281, 33, 0, 0, 2186 0, 0, 282, 0, 0, 0, 283, 0, 0, 284, 2187 285, 286, 287, 40, 41, 458, 288, 289, 0, 0, 2188 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 2189 884, 0, 0, 0, 0, 0, 0, 0, 0, 291, 2190 0, 375, 0, 0, 0, 0, 0, 0, 293, 1170, 2191 295, 296, 297, 298, 0, 0, 0, 0, 318, 1312, 2192 0, 0, 0, 0, 0, 829, 0, 338, 360, 0, 2193 0, 0, 0, 736, 0, 0, 0, 0, 0, 0, 2194 208, 0, 0, 482, 8, 9, 10, 11, 12, 13, 2195 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2196 24, 410, 0, 25, 26, 27, 0, 0, 410, 0, 2197 0, 30, 0, 0, 0, 215, 0, 0, 0, 0, 2198 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2199 962, 963, 0, 0, 0, 0, 0, 0, 0, 33, 2200 0, 0, 0, 979, 36, 0, 37, 38, 39, 0, 2201 0, 0, 0, 736, 0, 40, 41, 0, 0, 0, 2202 994, 0, 995, 0, 0, 0, 999, 0, 0, 0, 2203 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, 2204 410, 42, 0, 43, 0, 0, 0, 0, 0, 0, 2205 0, 44, 0, 0, 0, 0, 0, 0, 378, 0, 2206 0, 365, 365, 0, 0, 0, 0, 0, 0, 0, 2207 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2208 0, 279, 0, 280, 0, 0, 0, 0, 0, 0, 2209 0, 0, 1032, 0, 0, 410, 0, 0, 0, 1033, 2210 0, 0, 0, 410, 585, 0, 410, 588, 0, 281, 2211 0, 0, 1035, 0, 1036, 645, 360, 136, 137, 283, 2212 618, 0, 284, 646, 286, 287, 40, 41, 1048, 288, 2213 289, 0, 0, 0, 0, 1052, 0, 290, 0, 636, 2214 0, 0, 338, 0, 0, 0, 0, 1090, 0, 0, 2215 1091, 0, 291, 0, 647, 0, 648, 376, 0, 0, 2216 730, 293, 377, 295, 296, 297, 298, 0, 594, 410, 2217 0, 0, 0, 410, 0, 0, 0, 0, 0, 0, 2218 0, 0, 0, 0, 0, 0, 365, 0, 0, 0, 2219 0, 0, 0, 0, 0, 0, 0, 0, 763, 0, 2220 0, 0, 0, 0, 360, 0, 0, 0, 0, 0, 2221 0, 776, 0, 0, 0, 0, 0, 0, 763, 0, 2222 0, 763, 0, 0, 0, 0, 0, 410, 0, 0, 2223 0, 0, 786, 787, 0, 0, 0, 0, 0, 0, 2224 0, 0, 0, 0, 458, 0, 458, 0, 0, 0, 2225 0, 0, 0, 0, 808, 0, 1153, 0, 410, 0, 2226 0, 360, 0, 0, 817, 0, 0, 0, 0, 0, 2227 0, 342, 0, 0, 0, 0, 776, 0, 0, 0, 2228 0, 458, 0, 458, 0, 0, 0, 0, 0, 0, 2229 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 2230 410, 0, 0, 338, 360, 0, 0, 0, 0, 0, 2231 0, 162, 529, 0, 0, 0, 0, 0, 0, 1218, 2232 0, 0, 0, 0, 0, 0, 883, 0, 0, 0, 2233 0, 0, 0, 0, 378, 0, 0, 0, 0, 0, 2234 0, 0, 0, 0, 0, 0, 0, 0, 1231, 410, 2235 410, 0, 0, 1233, 0, 0, 0, 0, 0, 0, 2236 0, 1237, 0, 0, 0, 0, 0, 0, 824, 360, 2237 0, 360, 0, 0, 342, 0, 0, 0, 0, 0, 2238 618, 0, 618, 618, 0, 0, 0, 0, 0, 618, 2239 0, 1262, 0, 0, 0, 0, 0, 0, 0, 863, 2240 360, 0, 0, 1270, 0, 360, 1271, 0, 1272, 0, 2241 0, 0, 0, 0, 360, 360, 360, 0, 0, 0, 2242 0, 0, 1281, 1282, 0, 0, 0, 0, 0, 0, 2243 0, 0, 360, 0, 0, 0, 0, 410, 906, 0, 2244 0, 410, 909, 0, 1295, 0, 0, 0, 911, 776, 2245 0, 984, 0, 0, 0, 0, 0, 989, 0, 0, 2246 0, 0, 0, 0, 998, 0, 338, 360, 410, 0, 2247 410, 1318, 0, 0, 410, 0, 8, 9, 10, 11, 2248 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2249 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2250 0, 0, 0, 30, 450, 0, 360, 618, 1015, 1016, 2251 0, 342, 0, 0, 0, 0, 0, 0, 0, 0, 2252 0, 0, 0, 0, 0, 0, 342, 0, 0, 0, 2253 0, 33, 0, 0, 0, 0, 0, 0, 37, 38, 2254 0, 338, 360, 0, 0, 0, 410, 410, 0, 0, 2099 2255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2100 1128, 0, 0, 123, 364, 0, 0, 1136, 123, 123, 2101 0, 1140, 0, 0, 123, 0, 1144, 0, 1145, 0, 2102 0, 0, 1147, 1148, 1149, 0, 0, 1152, 0, 0, 2103 0, 0, 0, 0, 0, 0, 1164, 0, 0, 733, 2256 0, 0, 0, 0, 0, 0, 1046, 1388, 0, 1389, 2257 378, 0, 0, 0, 0, 451, 0, 0, 0, 706, 2258 0, 0, 1398, 109, 1399, 0, 0, 0, 410, 0, 2259 0, 0, 0, 0, 0, 0, 0, 360, 0, 0, 2260 0, 0, 1406, 824, 360, 0, 0, 0, 618, 0, 2261 618, 0, 0, 0, 511, 512, 515, 0, 1424, 1426, 2262 618, 0, 0, 518, 519, 0, 0, 0, 512, 512, 2263 1432, 0, 0, 1237, 0, 0, 0, 0, 0, 0, 2264 512, 0, 0, 0, 0, 0, 318, 0, 0, 0, 2265 0, 0, 0, 0, 0, 1455, 0, 0, 0, 0, 2266 0, 1131, 1132, 0, 1462, 0, 0, 1464, 378, 1466, 2267 1468, 1470, 0, 0, 989, 0, 512, 1141, 0, 763, 2104 2268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2105 0, 0, 0, 0, 1179, 1180, 0, 0, 933, 934, 2106 456, 0, 0, 0, 936, 0, 0, 0, 0, 0, 2107 0, 0, 0, 0, 0, 0, 0, 0, 364, 1209, 2108 951, 0, 1211, 8, 9, 10, 11, 12, 13, 14, 2109 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2110 0, 0, 25, 26, 27, 0, 0, 207, 0, 0, 2111 30, 0, 0, 0, 733, 0, 0, 227, 0, 231, 2112 1226, 233, 0, 0, 0, 0, 1230, 1231, 242, 0, 2113 0, 0, 0, 33, 0, 0, 0, 1241, 0, 0, 2114 203, 38, 1245, 0, 0, 1249, 0, 1250, 0, 0, 2115 1252, 0, 0, 0, 0, 0, 0, 0, 207, 0, 2116 231, 233, 242, 1260, 0, 0, 0, 0, 364, 0, 2117 0, 0, 623, 0, 0, 364, 1267, 0, 1269, 1270, 2118 1271, 1272, 0, 0, 267, 0, 0, 0, 0, 0, 2119 0, 0, 0, 0, 1279, 0, 1280, 0, 0, 0, 2120 168, 207, 0, 0, 0, 0, 0, 0, 0, 0, 2269 0, 0, 0, 824, 0, 0, 0, 0, 0, 1157, 2270 0, 410, 0, 0, 0, 0, 0, 410, 0, 0, 2271 1172, 1501, 512, 1503, 0, 410, 1237, 0, 0, 0, 2272 0, 0, 0, 0, 0, 0, 0, 0, 618, 618, 2273 0, 1515, 378, 0, 1190, 0, 0, 0, 0, 0, 2274 0, 0, 0, 0, 0, 0, 0, 0, 0, 989, 2275 989, 0, 0, 0, 360, 0, 0, 0, 0, 0, 2276 410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2277 1222, 0, 0, 0, 0, 0, 0, 0, 0, 410, 2278 1150, 279, 0, 280, 0, 0, 0, 0, 0, 360, 2279 0, 0, 0, 0, 0, 410, 1162, 0, 618, 618, 2280 1167, 0, 0, 0, 0, 0, 0, 0, 0, 281, 2281 360, 360, 0, 0, 0, 282, 989, 0, 0, 283, 2282 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2283 289, 0, 0, 0, 0, 883, 0, 290, 0, 0, 2121 2284 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2122 0, 0, 0, 0, 0, 0, 0, 0, 1304, 1305, 2123 0, 0, 201, 2, 202, 4, 5, 6, 7, 8, 2124 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2125 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2126 27, 207, 0, 231, 233, 242, 30, 0, 456, 0, 2127 0, 0, 0, 0, 0, 153, 0, 0, 1340, 1341, 2128 0, 0, 0, 0, 0, 0, 0, 0, 1351, 33, 2129 0, 34, 0, 35, 36, 0, 203, 38, 39, 207, 2130 0, 0, 0, 207, 0, 40, 41, 0, 0, 0, 2131 162, 0, 0, 0, 0, 0, 0, 0, 0, 499, 2132 0, 247, 0, 0, 0, 364, 0, 0, 0, 0, 2133 42, 252, 204, 0, 0, 0, 1380, 0, 0, 0, 2134 205, 0, 0, 0, 0, 0, 0, 0, 1384, 0, 2135 1385, 1386, 1387, 0, 0, 0, 0, 0, 0, 599, 2136 0, 0, 1391, 0, 0, 0, 0, 0, 207, 0, 2137 0, 1402, 0, 0, 278, 0, 279, 0, 0, 0, 2138 364, 364, 0, 1410, 0, 0, 153, 0, 0, 207, 2139 0, 0, 123, 0, 231, 233, 0, 280, 0, 380, 2140 0, 0, 242, 281, 0, 0, 0, 282, 0, 0, 2141 283, 284, 285, 286, 40, 41, 0, 287, 288, 0, 2142 0, 0, 412, 0, 0, 289, 0, 0, 0, 0, 2143 0, 0, 0, 0, 1454, 1455, 427, 0, 456, 290, 2144 0, 374, 1217, 0, 207, 432, 772, 1460, 292, 376, 2145 294, 295, 296, 297, 1460, 440, 0, 0, 0, 0, 2146 0, 0, 207, 0, 0, 0, 0, 207, 0, 207, 2285 1273, 1274, 291, 0, 375, 0, 0, 0, 0, 0, 2286 806, 293, 377, 295, 296, 297, 298, 0, 0, 0, 2287 0, 824, 410, 1230, 0, 0, 0, 0, 0, 0, 2288 0, 0, 0, 0, 618, 0, 0, 0, 512, 512, 2289 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 2290 512, 512, 512, 512, 512, 512, 0, 0, 0, 0, 2147 2291 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2148 466, 0, 1490, 0, 0, 476, 207, 0, 0, 207, 2149 207, 0, 0, 0, 0, 0, 733, 0, 484, 0, 2150 0, 0, 0, 0, 494, 207, 498, 0, 0, 0, 2151 1514, 0, 0, 0, 123, 0, 0, 0, 0, 207, 2152 0, 0, 0, 527, 0, 0, 207, 0, 0, 0, 2153 0, 0, 0, 0, 0, 0, 1527, 0, 214, 0, 2154 0, 1529, 0, 0, 0, 0, 0, 0, 0, 0, 2292 0, 0, 0, 0, 0, 0, 0, 0, 360, 0, 2293 989, 512, -514, 0, 0, 1, 2, 3, 4, 5, 2294 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2295 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2296 0, 25, 26, 27, 28, 0, 0, 29, 0, 30, 2297 31, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2298 17, 18, 19, 20, 21, 22, 23, 24, 338, 0, 2299 0, 1381, 0, 763, 32, 0, 0, 33, 30, 34, 2300 0, 35, 36, 0, 37, 38, 39, 0, 360, 0, 2301 0, 0, 0, 40, 41, 0, 0, 0, 0, 0, 2302 0, 0, 0, 0, 0, 0, 33, 0, 0, 512, 2303 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2304 0, 43, 0, 0, 0, 0, 0, 0, 0, 44, 2305 0, 512, 0, 0, 0, 0, 360, 360, 0, 0, 2306 0, 0, 0, 0, 512, 0, 0, 0, 0, 0, 2307 0, 0, 0, 0, 0, 0, 0, 0, 0, 1441, 2155 2308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2156 0, 0, 0, 0, 1300, 0, 586, 0, 0, 0, 2157 0, 591, 0, 0, 0, 733, 0, 0, 0, 0, 2158 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2159 17, 18, 19, 20, 21, 22, 23, 24, 0, 637, 2160 25, 26, 27, 638, 639, 0, 641, 0, 30, 0, 2161 0, 0, 652, 653, 0, 654, 655, 0, 656, 0, 2162 657, 0, 1162, 364, 364, 8, 9, 10, 11, 12, 2163 0, 33, 214, 0, 0, 0, 0, 586, 203, 38, 2164 207, 0, 0, 0, 0, 672, 0, 0, 0, 0, 2165 0, 278, 30, 279, 0, 0, 0, 0, 0, 0, 2166 0, 0, 0, 0, 0, 0, 0, 0, 207, 0, 2167 683, 0, 0, 207, 280, 33, 0, 0, 0, 0, 2168 281, 689, 622, 0, 282, 0, 0, 283, 284, 285, 2169 286, 40, 41, 0, 287, 288, 0, 0, 0, 0, 2170 0, 0, 289, 0, 725, 0, 0, 0, 0, 0, 2171 728, 0, 0, 0, 0, 466, 290, 0, 374, 0, 2172 0, 0, 0, 0, 0, 292, 1163, 294, 295, 296, 2173 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2174 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2175 0, 764, 0, 0, 509, 510, 513, 0, 0, 0, 2176 207, 0, 0, 516, 517, 0, 0, 779, 510, 510, 2177 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, 2178 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2179 0, 0, 0, 456, 499, 0, 0, 0, 0, 0, 2180 0, 0, 0, 805, 337, 359, 0, 0, 0, 0, 2181 0, 0, 815, 0, 0, 0, 510, 0, 0, 818, 2182 0, 0, 0, 456, 825, 0, 0, 0, 0, 0, 2183 0, 0, 0, 0, 0, 840, 0, 408, 0, 0, 2184 0, 0, 0, 0, 408, 0, 0, 0, 162, 0, 2185 0, 0, 510, 207, 0, 0, 0, 0, 0, 0, 2186 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 2187 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 2188 0, 0, 0, -505, 0, 207, 1, 2, 3, 4, 2309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2310 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 2311 0, 0, 0, 0, 0, 0, 1, 2, 203, 4, 2189 2312 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2190 2313 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2191 0, 825, 25, 26, 27, 28, 408, 0, 29, 0, 2192 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 2314 0, 512, 25, 26, 27, 28, 0, 0, 29, 279, 2315 30, 280, 0, 0, 0, 0, 512, 0, 0, 0, 2316 0, 1507, 0, 0, 0, 0, 0, 0, 0, 0, 2317 0, 0, 0, 0, 0, 0, 0, 281, 33, 0, 2318 34, 360, 35, 282, 0, 37, 38, 283, 0, 0, 2319 284, 285, 286, 287, 40, 41, 0, 288, 289, 0, 2320 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 2321 0, 0, 0, 318, 0, 0, 0, 0, 0, 0, 2322 291, 0, 1069, 0, 0, 0, 0, 0, 0, 293, 2323 294, 295, 296, 297, 298, 0, 0, 0, 0, 0, 2324 0, 0, 0, -127, 0, 0, 0, 0, 0, 0, 2193 2325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2194 32, 0, 0, 33, 0, 34, 0, 35, 36, 0,2195 37, 38, 39, 0, 0, 0, 0, 0, 0, 40,2196 41, 0, 0, 0, 0, 0, 247, 0, 0, 0,2197 0, 408, 207, 0, 0, 0, 958, 959, 0, 408,2198 582, 0, 408, 585, 42, 0, 43, 0, 0, 975,2199 0, 0, 359, 0, 44, 0, 615, 0, 207, 0,2200 0, 0, 0, 0, 0, 0, 990, 0, 991, 0,2201 0, 0, 995, 0, 0, 633, 0, 0, 337, 0,2202 0, 0, 0, 0, 0, 207, 510, 510, 510, 510,2203 510, 510, 510, 510, 510, 510, 510, 510, 510, 510,2204 510, 510, 510, 510, 408, 0, 0, 0, 408, 278,2205 0, 279, 0, 0, 0, 0, 207, 0, 0, 0,2206 0, 0, 0, 0, 0, 0, 0, 207, 0, 510,2207 0, 0, 280, 0, 0, 0, 0, 1027, 642, 359,2208 136, 137, 282, 0, 1028, 283, 643, 285, 286, 40,2209 41, 0, 287, 288, 0, 0, 0, 1030, 0, 1031,2210 289, 0, 408, 0, 0, 0, 0, 0, 0, 0,2211 0, 0, 0, 1043, 290, 0, 644, 0, 645, 375,2212 1047, 0, 0, 292, 376, 294, 295, 296, 297, 0,2213 0, 0, 1083, 408, 0, 1084, 359, 0, 0, 0,2214 0, 0, 0, 0, 0, 0, 207, 0, 0, 0,2215 0, 0, 0, 591, 0, 0, 0, 0, 0, 0,2216 0, 0, 0, 0, 0, 0, 0, 510, 0, 0,2217 0, 0, 0, 0, 0, 408, 0, 0, 337, 359,2218 0, 0, 0, 0, 0, 0, 0, 0, 0, 510,2219 2326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2220 317, 0, 510, 0, 0, 0, 0, 0, 0, 0, 2221 341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2222 0, 0, 377, 408, 408, 0, 0, 0, 0, 0, 2223 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 2224 1146, 0, 820, 359, 0, 359, 0, 510, 0, 0, 2225 0, 0, 0, 0, 615, 0, 615, 615, 0, 0, 2226 0, 0, 0, 615, 0, 0, 0, 0, 0, 0, 2227 0, 0, 0, 859, 359, 0, 0, 0, 510, 359, 2228 0, 0, 0, 0, 0, 0, 0, 0, 359, 359, 2229 359, 0, 317, 510, 0, 527, 0, 0, 0, 0, 2230 0, 1210, 0, 0, 0, 0, 359, 0, 0, 0, 2231 0, 408, 902, 0, 0, 408, 905, 480, 0, 0, 2232 0, 0, 907, 0, 0, 0, 207, 0, 0, 0, 2233 1223, 0, 0, 0, 0, 1225, 0, 0, 0, 0, 2234 337, 359, 408, 1229, 408, 0, 0, 0, 408, 201, 2235 2, 202, 4, 5, 6, 7, 8, 9, 10, 11, 2236 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2237 22, 23, 24, 1254, 0, 25, 26, 27, 0, 0, 2238 359, 615, 0, 30, 0, 1262, 0, 0, 1263, 0, 2239 1264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2240 0, 0, 0, 0, 1273, 1274, 33, 0, 34, 0, 2241 35, 0, 0, 203, 38, 337, 359, 0, 0, 0, 2242 408, 408, 0, 0, 0, 0, 1287, 0, 0, 0, 2243 0, 0, 377, 0, 0, 0, 0, 0, 0, 0, 2244 0, 0, 0, 0, 510, 0, 0, 0, 0, 204, 2245 0, 0, 1306, 0, 0, 0, 0, 267, 0, 0, 2246 0, 408, 0, 0, 0, 0, 0, 0, 0, 0, 2247 359, 0, 0, 510, 0, 0, 820, 359, 0, 0, 2248 0, 615, 0, 615, 0, 510, 0, 0, 0, 0, 2249 0, 0, 0, 615, 0, 0, 0, 8, 9, 10, 2327 0, 410, 471, 2, 203, 4, 5, 6, 7, 8, 2328 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2329 19, 20, 21, 22, 23, 24, 410, 410, 25, 26, 2330 27, 0, 0, 0, 0, 0, 30, 512, 0, 0, 2331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2332 0, 410, 0, 0, 0, 0, 0, 0, 0, 0, 2333 0, 0, 0, 0, 33, 0, 34, 512, 35, 0, 2334 0, 37, 38, 0, 0, 0, 0, 0, 0, 512, 2335 1, 2, 203, 4, 5, 6, 7, 8, 9, 10, 2250 2336 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2251 21, 22, 23, 24, -285, 0, 25, 26, 27, 0, 2252 0, 0, 0, 0, 30, 0, 510, 0, 0, 0, 2253 0, 0, 0, 727, 0, 0, 0, 0, 0, 0, 2254 0, 0, 0, 0, 1372, 0, 1373, 33, 0, 0, 2255 0, 0, 36, 0, 332, 333, 39, 207, -285, 1382, 2256 0, 1383, 0, 40, 41, 0, 820, 0, 0, 0, 2257 0, 760, 0, 0, 408, 0, 0, 0, 0, 1390, 2258 408, 0, 0, 0, 773, 0, 0, 0, 408, 0, 2259 334, 760, 0, 0, 0, 1408, 510, 0, 109, 0, 2260 0, 615, 615, 1411, 782, 783, 1229, 0, 8, 9, 2261 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2262 20, 21, 22, 23, 24, -286, 804, 359, 1434, 0, 2263 0, 0, 0, 408, 0, 30, 813, 1441, 0, 510, 2264 1443, 1445, 0, 341, 0, 0, 0, 0, 773, 0, 2265 0, 408, 1143, 510, 510, 0, 0, 0, 33, 0, 2266 0, 359, 0, 0, 0, 0, 0, 408, 1155, -286, 2267 615, 615, 1160, 0, 0, 0, 0, 1473, 0, 1229, 2268 0, 0, 359, 359, 0, 0, 0, 0, 0, 0, 2269 0, 0, 0, 0, 1485, 0, 0, 0, 879, 0, 2270 0, 0, 0, 0, 0, 0, 377, 2, 202, 4, 2337 21, 22, 23, 24, 0, 0, 25, 26, 27, 28, 2338 0, -3, 29, 279, 30, 1055, 1056, 0, 1057, 0, 2339 512, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 0, 2340 0, 0, 1066, 0, 0, 0, 1067, 1068, 0, 32, 2341 0, 281, 33, 0, 34, 0, 35, 645, 0, 37, 2342 38, 283, 0, 0, 284, 285, 286, 287, 40, 41, 2343 0, 288, 289, 0, 0, 0, 0, 0, 0, 290, 2344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2345 0, 0, 0, 0, 291, 0, 1069, 0, 0, 168, 2346 0, 0, 512, 293, 294, 295, 296, 297, 298, 0, 2347 0, 0, 0, 1070, 0, 0, 0, -127, 0, 0, 2348 1, 2, 203, 4, 5, 6, 7, 8, 9, 10, 2349 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2350 21, 22, 23, 24, 0, 512, 25, 26, 27, 28, 2351 0, 0, 29, 279, 30, 280, 0, 0, 0, 512, 2352 512, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2353 17, 18, 19, 20, 21, 22, 23, 24, -292, 0, 2354 0, 281, 33, 0, 34, 0, 35, 282, 30, 37, 2355 38, 283, 0, 0, 284, 285, 286, 287, 40, 41, 2356 0, 288, 289, 0, 0, 0, 0, 0, 0, 290, 2357 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 2358 0, 0, 0, 0, 291, 0, 43, -292, 0, 0, 2359 0, 0, 0, 293, 294, 295, 296, 297, 298, 2, 2360 203, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2361 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2362 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2363 0, 279, 30, 280, 8, 9, 10, 11, 12, 13, 2364 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2365 24, -292, 0, 25, 26, 27, 0, 0, 0, 281, 2366 33, 30, 34, 0, 35, 282, 0, 37, 38, 283, 2367 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2368 289, 0, 0, 0, 0, 0, 0, 290, 0, 33, 2369 0, 0, 0, 0, 36, 0, 333, 334, 39, 0, 2370 -292, 0, 291, 0, 340, 40, 41, 0, 0, 775, 2371 0, 293, 341, 295, 296, 297, 298, 0, 0, 0, 2372 0, 0, 0, 0, 0, 0, 0, 0, 512, 0, 2373 0, 639, 0, 335, 0, 0, 0, 0, 0, 0, 2374 0, 630, 0, 0, 0, 512, 0, 2, 203, 4, 2271 2375 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2272 2376 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2273 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2274 30, 820, 408, 1222, 0, 0, 341, 0, 0, 0, 2275 0, 0, 0, 0, 615, 0, 0, 0, 0, 0, 2276 0, 0, 0, 33, 0, 34, 0, 35, 0, 0, 2277 203, 38, 0, 1, 2, 3, 4, 5, 6, 7, 2377 0, 0, 25, 26, 27, 0, 0, 0, 0, 279, 2378 30, 280, 8, 9, 10, 11, 12, 13, 14, 15, 2379 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2380 0, 25, 26, 27, 0, 0, 0, 281, 33, 30, 2381 34, 0, 35, 282, 0, 37, 38, 283, 512, 512, 2382 284, 285, 286, 287, 40, 41, 0, 288, 289, 0, 2383 0, 0, 0, 0, 0, 290, 0, 33, 0, 0, 2384 0, 0, 0, 0, 204, 38, 0, 0, 0, 0, 2385 291, 0, 925, 0, 0, 0, 0, 775, 0, 293, 2386 341, 295, 296, 297, 298, 2, 203, 4, 5, 6, 2387 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2388 17, 18, 19, 20, 21, 22, 23, 24, 0, 268, 2389 25, 26, 27, 0, 0, 0, 0, 279, 30, 280, 2278 2390 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2279 18, 19, 20, 21, 22, 23, 24, 0, 359, 25, 2280 26, 27, 28, 0, 0, 29, 266, 30, 31, 0, 2281 0, 0, 0, 0, 622, 0, 0, 0, 0, 0, 2282 0, 773, 0, 980, 0, 0, 0, 32, 0, 985, 2283 33, 0, 34, 0, 35, 36, 994, 37, 38, 39, 2284 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, 2285 0, 0, 0, 510, 0, 0, 0, 0, 337, 0, 2391 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2392 26, 27, 0, 0, 0, 281, 33, 30, 34, 0, 2393 35, 282, 0, 37, 38, 283, 0, 0, 284, 285, 2394 286, 287, 40, 41, 0, 288, 289, 0, 0, 0, 2395 0, 0, 0, 290, 0, 33, 0, 0, 0, 0, 2396 0, 0, 204, 38, 0, 0, 0, 0, 291, 0, 2397 925, 0, 0, 0, 0, 775, 0, 293, 596, 295, 2398 296, 297, 298, 2, 203, 4, 5, 6, 7, 8, 2399 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2400 19, 20, 21, 22, 23, 24, 0, 625, 25, 26, 2401 27, 0, 0, 0, 0, 279, 30, 280, 8, 9, 2402 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2403 20, 21, 22, 23, 24, -293, 0, 0, 0, 0, 2404 0, 0, 0, 281, 33, 30, 34, 0, 35, 282, 2405 0, 37, 38, 283, 0, 0, 284, 285, 286, 287, 2406 40, 41, 0, 288, 289, 0, 0, 0, 0, 0, 2407 0, 290, 0, 33, 0, 0, 0, 0, 0, 0, 2408 0, 0, 0, 0, -293, 0, 291, 0, 340, 0, 2409 0, 0, 0, 0, 0, 293, 341, 295, 296, 297, 2410 298, 2, 203, 4, 5, 6, 7, 8, 9, 10, 2411 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2412 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2413 0, 0, 0, 279, 30, 280, 8, 9, 10, 11, 2414 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2415 22, 23, 24, 0, 0, 25, 26, 27, 489, 490, 2416 491, 281, 33, 30, 34, 0, 35, 282, 0, 37, 2417 38, 283, 0, 0, 284, 285, 286, 287, 40, 41, 2418 0, 288, 289, 0, 0, 0, 0, 0, 0, 290, 2419 0, 33, 0, 0, 0, 0, 0, 0, 37, 38, 2420 0, 0, 0, 0, 291, 0, 925, 0, 0, 0, 2421 0, 0, 0, 293, 341, 295, 296, 297, 298, 2, 2422 203, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2423 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2424 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2425 0, 279, 30, 280, 8, 9, 10, 11, 12, 13, 2426 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2427 24, 0, 0, 25, 26, 27, 0, 0, 0, 281, 2428 33, 30, 34, 0, 35, 282, 0, 204, 38, 283, 2429 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2430 289, 0, 0, 0, 0, 0, 0, 290, 0, 33, 2431 0, 0, 0, 0, 108, 0, 37, 38, 0, 0, 2432 0, 0, 291, 0, 1013, 0, 0, 0, 0, 0, 2433 0, 293, 1014, 295, 296, 297, 298, 2, 203, 4, 2434 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2435 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2436 0, 0, 25, 26, 27, 0, 0, 0, 0, 279, 2437 30, 280, 8, 9, 10, 11, 12, 13, 14, 15, 2438 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2439 0, 25, 26, 27, 0, 0, 0, 281, 33, 30, 2440 34, 0, 35, 282, 0, 204, 38, 283, 0, 0, 2441 284, 285, 286, 287, 40, 41, 0, 288, 289, 0, 2442 0, 0, 0, 0, 0, 290, 0, 33, 0, 0, 2443 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 2444 291, 0, 375, 0, 0, 0, 0, 0, 0, 293, 2445 377, 295, 296, 297, 298, 1, 2, 3, 4, 5, 2446 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2447 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2448 0, 25, 26, 27, 28, 0, 0, 29, 0, 30, 2449 31, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2450 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2451 25, 26, 27, 0, 32, 0, 0, 33, 30, 34, 2452 0, 35, 36, 0, 37, 38, 39, 0, 0, 0, 2453 0, 0, 0, 40, 41, 0, 0, 0, 0, 0, 2454 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 2455 0, 0, 0, 204, 38, 0, 0, 0, 0, 42, 2456 0, 43, 0, 0, 0, -518, 0, 0, 0, 44, 2457 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2458 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2459 21, 22, 23, 24, 0, 0, 25, 26, 27, 28, 2460 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 2286 2461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2287 510, 42, 0, 43, 0, 0, 0, 359, 0, 1010, 2288 1011, 44, 341, 0, 0, 0, 0, 0, 0, 0, 2289 0, 0, 0, 0, 0, 0, 0, 341, 0, 0, 2290 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2291 18, 19, 20, 21, 22, 23, 24, 0, 0, 0, 2292 0, 0, 0, 0, 0, 359, 359, 30, 0, 0, 2293 0, 0, 0, 510, 510, 0, 0, 1041, 0, 0, 2294 0, 377, 0, 0, 0, 0, 0, 0, 0, 0, 2295 33, 0, 0, 0, 1, 2, 202, 4, 5, 6, 2296 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2297 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2298 25, 26, 27, 28, 0, 0, 29, 278, 30, 1050, 2299 1051, 0, 1052, 0, 0, 1053, 1054, 1055, 1056, 1057, 2300 1058, 1059, 1060, 0, 1061, 0, 0, 1062, 32, 0, 2301 280, 33, 0, 34, 0, 35, 642, 317, 37, 38, 2302 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2303 287, 288, 1124, 1125, 0, 0, 0, 0, 289, 377, 2304 0, 0, 359, 0, 0, 985, 0, 0, 1134, 0, 2305 760, 0, 290, 0, 1063, 0, 278, 167, 279, 0, 2306 0, 292, 293, 294, 295, 296, 297, 0, 0, 1150, 2307 0, 0, 0, 0, 0, -126, 0, 0, 0, 280, 2308 1165, 0, 0, 0, 0, 281, 0, 0, 0, 282, 2309 0, 0, 283, 284, 285, 286, 40, 41, 0, 287, 2310 288, 0, 377, 0, 1183, 0, 0, 289, 0, 0, 2311 0, 0, 0, 0, 0, 0, 0, 0, 0, 1205, 2312 0, 290, 408, 374, 0, 0, 375, 0, 0, 0, 2313 292, 376, 294, 295, 296, 297, 0, 278, 1214, 279, 2314 1051, 0, 1052, 408, 408, 1053, 1054, 1055, 1056, 1057, 2315 1058, 1059, 1060, 0, 1061, 0, 0, 1062, 32, 0, 2316 280, 0, 0, 0, 0, 408, 642, 0, 0, 0, 2317 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2318 287, 288, 0, 0, 985, 0, 0, 0, 289, 0, 2319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2320 0, 0, 290, 879, 374, 0, 0, 167, 0, 0, 2321 0, 292, 376, 294, 295, 296, 297, 0, 1265, 1266, 2322 0, 0, 1, 2, 202, 4, 5, 6, 7, 8, 2323 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2324 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2325 27, 28, 0, 0, 29, 278, 30, 279, 0, 0, 2326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2327 0, 0, 0, 0, 0, 0, 0, 0, 280, 33, 2328 0, 34, 0, 35, 281, 0, 37, 38, 282, 0, 2329 0, 283, 284, 285, 286, 40, 41, 985, 287, 288, 2330 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 2331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2332 290, 0, 1063, 0, 0, 0, 0, 0, 0, 292, 2333 293, 294, 295, 296, 297, 0, 0, 0, 0, 0, 2334 0, 0, 0, -126, 1, 2, 202, 4, 5, 6, 2335 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2336 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2337 25, 26, 27, 28, 0, 0, 29, 278, 30, 279, 2462 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 2463 0, 0, 33, 0, 34, 0, 35, 36, 0, 37, 2464 38, 39, 0, 0, 0, 0, 0, 0, 40, 41, 2338 2465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2339 2466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2340 280, 33, 0, 34, 0, 35, 281, 0, 37, 38, 2341 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2342 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2343 0, 0, 0, 0, 0, 0, 0, 0, 1420, 0, 2344 0, 0, 290, 0, 43, 0, 0, 0, 0, 0, 2345 0, 292, 293, 294, 295, 296, 297, 2, 202, 4, 2346 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2347 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2348 0, 0, 25, 26, 27, 0, 0, 0, 0, 278, 2349 30, 279, 0, 0, 0, 0, 0, 0, 0, 0, 2350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2351 1477, 0, 280, 33, 0, 34, 0, 35, 281, 0, 2352 37, 38, 282, 0, 0, 283, 284, 285, 286, 40, 2353 41, 0, 287, 288, 0, 0, 0, 0, 0, 0, 2354 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2355 0, 0, 0, 0, 290, 317, 339, 0, 0, 0, 2356 0, 772, 0, 292, 340, 294, 295, 296, 297, 2, 2357 202, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2358 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2359 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2360 0, 278, 30, 279, 0, 0, 0, 0, 0, 0, 2361 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2362 0, 0, 0, 0, 280, 33, 0, 34, 0, 35, 2363 281, 0, 37, 38, 282, 0, 0, 283, 284, 285, 2364 286, 40, 41, 0, 287, 288, 0, 0, 0, 0, 2365 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 2366 0, 0, 0, 0, 0, 0, 290, 0, 921, 0, 2367 0, 0, 0, 772, 0, 292, 340, 294, 295, 296, 2368 297, 2, 202, 4, 5, 6, 7, 8, 9, 10, 2369 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2370 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2371 0, 0, 0, 278, 30, 279, 0, 0, 0, 0, 2372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373 0, 0, 0, 0, 0, 0, 280, 33, 0, 34, 2374 0, 35, 281, 0, 37, 38, 282, 0, 0, 283, 2375 284, 285, 286, 40, 41, 0, 287, 288, 0, 0, 2376 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 2377 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 2378 921, 0, 0, 0, 0, 772, 0, 292, 593, 294, 2379 295, 296, 297, 2, 202, 4, 5, 6, 7, 8, 2380 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2381 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2382 27, 0, 0, 0, 0, 278, 30, 279, 0, 0, 2383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2384 0, 0, 0, 0, 0, 0, 0, 0, 280, 33, 2385 0, 34, 0, 35, 281, 0, 37, 38, 282, 0, 2386 0, 283, 284, 285, 286, 40, 41, 0, 287, 288, 2387 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 2388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2389 290, 0, 339, 0, 0, 0, 0, 0, 0, 292, 2390 340, 294, 295, 296, 297, 2, 202, 4, 5, 6, 2391 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2392 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2393 25, 26, 27, 0, 0, 0, 0, 278, 30, 279, 2394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2396 280, 33, 0, 34, 0, 35, 281, 0, 37, 38, 2397 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2398 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2400 0, 0, 290, 0, 921, 0, 0, 0, 0, 0, 2401 0, 292, 340, 294, 295, 296, 297, 2, 202, 4, 2402 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2403 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2404 0, 0, 25, 26, 27, 0, 0, 0, 0, 278, 2405 30, 279, 0, 0, 0, 0, 0, 0, 0, 0, 2406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2407 0, 0, 280, 33, 0, 34, 0, 35, 281, 0, 2408 203, 38, 282, 0, 0, 283, 284, 285, 286, 40, 2409 41, 0, 287, 288, 0, 0, 0, 0, 0, 0, 2410 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2411 0, 0, 0, 0, 290, 0, 1008, 0, 0, 0, 2412 0, 0, 0, 292, 1009, 294, 295, 296, 297, 2, 2413 202, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2414 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2415 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2416 0, 278, 30, 279, 0, 0, 0, 0, 0, 0, 2417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2418 0, 0, 0, 0, 280, 33, 0, 34, 0, 35, 2419 281, 0, 203, 38, 282, 0, 0, 283, 284, 285, 2420 286, 40, 41, 0, 287, 288, 0, 0, 0, 0, 2421 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 2422 0, 0, 0, 0, 0, 0, 290, 0, 374, 0, 2423 0, 0, 0, 0, 0, 292, 376, 294, 295, 296, 2424 297, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2425 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2426 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2427 28, 0, 0, 29, 0, 30, 31, 0, 0, 0, 2428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2429 0, 0, 0, 0, 0, 32, 0, 0, 33, 0, 2430 34, 0, 35, 36, 0, 37, 38, 39, 0, 0, 2431 0, 0, 0, 0, 40, 41, 0, 0, 0, 0, 2432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2433 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2434 0, 43, 0, 0, 0, -509, 0, 0, 0, 44, 2435 1, 2, 202, 4, 5, 6, 7, 8, 9, 10, 2436 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2437 21, 22, 23, 24, -285, 0, 25, 26, 27, 28, 2438 0, 0, 29, 0, 30, 0, 0, 0, 0, 0, 2439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2440 0, 0, 0, 0, 0, 0, 0, 33, 0, 34, 2441 0, 35, 0, 0, 37, 38, 0, 0, -285, 1, 2442 2, 202, 4, 5, 6, 7, 8, 9, 10, 11, 2443 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2444 22, 23, 24, 0, 0, 25, 26, 27, 28, 0, 2445 43, 29, 0, 30, 0, 0, 0, 0, 109, 0, 2446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2447 0, 0, 0, 0, 0, 0, 33, 0, 34, 0, 2448 35, 0, 0, 37, 38, 2, 202, 4, 5, 6, 2449 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2450 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2451 25, 26, 27, 0, 0, 0, 0, 0, 30, 43, 2452 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 2453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2454 0, 33, 0, 34, 0, 35, 36, 0, 203, 38, 2455 39, 0, 0, 0, 0, 0, 0, 40, 41, 0, 2456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2458 0, 0, 42, 0, 204, 0, 0, 0, 0, 0, 2459 0, 0, 205, 2, 202, 4, 5, 6, 7, 8, 2460 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2461 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2462 27, 0, 0, 0, 0, 0, 30, 0, 0, 0, 2463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2464 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2465 0, 34, 0, 35, 0, 0, 37, 38, 0, 0, 2466 2, 202, 4, 5, 6, 7, 8, 9, 10, 11, 2467 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2468 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2469 0, -390, 679, 30, 0, 0, 0, 0, 0, 0, 2470 627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2471 0, 0, 0, 0, 0, 0, 33, 0, 34, 0, 2472 35, 0, 0, 37, 38, 0, 0, 0, 0, 0, 2473 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2474 0, 0, 0, 0, 0, 1348, 0, 0, 0, 0, 2475 0, 0, 0, 0, 0, 0, 0, 0, 0, 679, 2476 0, 0, 0, 0, 0, 0, 0, 627, 2, 202, 2477 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2478 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2479 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2480 0, 30, 8, 9, 10, 11, 12, 13, 14, 15, 2481 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2482 0, 25, 26, 27, 33, 0, 34, 0, 35, 30, 2483 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 2484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2485 0, 0, 33, 1350, 0, 0, 0, 108, 0, 37, 2486 38, 0, 0, 0, 0, 0, 0, 679, 0, 0, 2487 0, 0, 0, 0, 0, 627, 2, 202, 4, 5, 2467 0, 0, 0, 0, 42, 0, 43, 0, 0, 0, 2468 0, 0, 0, 0, 44, 202, 2, 203, 4, 5, 2488 2469 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2489 2470 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, … … 2491 2472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2492 2473 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2474 0, 0, 0, 0, 0, 0, 0, 33, 0, 34, 2475 0, 35, 36, 0, 204, 38, 39, 0, 0, 0, 2476 0, 0, 0, 40, 41, 0, 0, 0, 0, 0, 2477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2478 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2479 0, 205, 0, 0, 0, 0, 0, 0, 0, 206, 2480 1, 2, 203, 4, 5, 6, 7, 8, 9, 10, 2481 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2482 21, 22, 23, 24, -292, 0, 25, 26, 27, 28, 2483 0, 0, 29, 0, 30, 0, 0, 0, 0, 0, 2484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2493 2486 0, 0, 33, 0, 34, 0, 35, 0, 0, 37, 2494 38, 2, 202, 4, 5, 6, 7, 8, 9, 10, 2495 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2496 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2497 0, 0, 0, 0, 30, 679, 0, 0, 0, 0, 2498 0, 0, 0, 627, 0, 0, 0, 0, 0, 0, 2499 0, 0, 0, 0, 0, 0, 0, 33, 0, 34, 2500 0, 35, 0, 0, 37, 38, 2, 202, 4, 5, 2487 38, 0, 0, -292, 0, 1, 2, 203, 4, 5, 2501 2488 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2502 2489 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2503 0, 25, 26, 27, 0, 0, 0, 0, 0, 30,2504 592, 0, 0, 0, 0, 0, 0, 0, 627, 0,2490 0, 25, 26, 27, 28, 0, 43, 29, 0, 30, 2491 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 2505 2492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2506 0, 0, 33, 0, 34, 0, 35, 0, 0, 203, 2507 38, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2508 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2509 25, 26, 27, 0, 0, 0, 0, 278, 30, 279, 2510 0, 0, 0, 0, 0, 204, 0, 0, 0, 0, 2511 0, 0, 0, 267, 0, 0, 0, 0, 0, 0, 2512 280, 33, 0, 0, 0, 0, 281, 0, 37, 38, 2513 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2514 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2493 0, 0, 0, 0, 0, 0, 0, 33, 0, 34, 2494 0, 35, 0, 0, 37, 38, 202, 2, 203, 4, 2495 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2496 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2497 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2498 30, 43, 0, 0, 0, 0, 0, 0, 0, 109, 2515 2499 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2516 0, 0, 290, 0, 519, 0, 0, 167, 0, 0, 2517 0, 292, 293, 294, 295, 296, 297, 8, 9, 10, 2518 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2519 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2520 0, 0, 0, 278, 30, 279, 0, 0, 0, 0, 2521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2522 0, 0, 0, 0, 0, 0, 280, 33, 0, 0, 2523 0, 0, 281, 0, 37, 38, 282, 0, 0, 283, 2524 284, 285, 286, 40, 41, 0, 287, 288, 0, 0, 2525 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 2526 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 2527 592, -3, 0, 0, 0, 0, 0, 292, 593, 294, 2528 295, 296, 297, 8, 9, 10, 11, 12, 13, 14, 2500 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2501 34, 0, 35, 0, 0, 204, 38, 2, 203, 4, 2502 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2529 2503 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2530 0, 0, 25, 26, 27, 0, 0, 0, 0, 278, 2531 30, 279, 0, 0, 0, 0, 0, 0, 0, 0, 2532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2533 0, 0, 280, 33, 0, 0, 0, 0, 642, 0, 2534 37, 38, 282, 0, 0, 283, 284, 285, 286, 40, 2535 41, 0, 287, 288, 0, 0, 0, 0, 0, 0, 2536 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2537 0, 0, 0, 0, 290, -33, 757, 0, 0, 0, 2538 0, 0, 0, 292, 293, 294, 295, 296, 297, 8, 2539 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2540 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2541 27, 0, 0, 0, 0, 278, 30, 279, 0, 0, 2542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2543 0, 0, 0, 0, 0, 0, 0, 0, 280, 33, 2544 0, 0, 0, 0, 281, 0, 37, 38, 282, 0, 2545 0, 283, 284, 285, 286, 40, 41, 0, 287, 288, 2546 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 2547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2548 290, 0, 291, 0, 0, 0, 0, 0, 0, 292, 2549 293, 294, 295, 296, 297, 8, 9, 10, 11, 12, 2550 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2551 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2552 0, 278, 30, 279, 0, 0, 0, 0, 0, 0, 2553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2554 0, 0, 0, 0, 280, 33, 0, 0, 0, 0, 2555 281, 0, 37, 38, 282, 0, 0, 283, 284, 285, 2556 286, 40, 41, 0, 287, 288, 0, 0, 0, 0, 2557 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 2558 0, 0, 0, 0, 0, 0, 290, 0, 154, 0, 2559 0, 0, 0, 0, 0, 292, 293, 294, 295, 296, 2560 297, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2561 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2562 25, 26, 27, 0, 0, 0, 0, 278, 30, 279, 2504 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2505 30, 0, 205, 0, 0, 0, 0, 0, 0, 0, 2506 268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2507 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2508 34, 0, 35, 36, 0, 204, 38, 39, 0, 0, 2509 0, 0, 0, 0, 40, 41, 0, 0, 0, 0, 2563 2510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2564 2511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2565 280, 33, 0, 0, 0, 0, 281, 0, 37, 38, 2566 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2567 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2569 0, 0, 290, 0, 592, 0, 0, 0, 0, 0, 2570 0, 292, 593, 294, 295, 296, 297, 8, 9, 10, 2571 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2572 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2573 0, 0, 0, 278, 30, 279, 0, 0, 0, 0, 2574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2575 0, 0, 0, 0, 0, 0, 280, 33, 0, 0, 2576 0, 0, 281, 0, 37, 38, 282, 0, 0, 283, 2577 284, 285, 286, 40, 41, 0, 287, 288, 0, 0, 2578 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 2579 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 2580 374, 0, 0, 0, 0, 0, 0, 292, 376, 294, 2581 295, 296, 297, 8, 9, 10, 11, 12, 13, 14, 2582 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2583 -285, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2584 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2586 0, 0, 0, 33, 0, 0, 0, 0, 36, 0, 2587 332, 333, 39, 0, -285, 0, 0, 0, 0, 40, 2588 41, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2589 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2590 25, 26, 27, 0, 636, 0, 334, 0, 30, 0, 2591 0, 0, 0, 0, 627, 0, 0, 0, 0, 0, 2592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2593 0, 33, 0, 0, 0, 0, 36, 0, 37, 38, 2594 39, 0, 0, 0, 0, 0, 0, 40, 41, 8, 2595 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2596 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2597 27, 0, 42, 0, 154, 0, 30, 0, 0, 0, 2598 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 2599 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2600 0, 0, 0, 0, 36, 0, 37, 38, 39, 0, 2601 0, 0, 0, 0, 0, 40, 41, 8, 9, 10, 2602 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2603 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2604 42, 0, 43, 0, 30, 0, 0, 0, 0, 0, 2605 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2606 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 2607 0, 0, 36, 0, 203, 38, 39, 0, 0, 0, 2608 0, 0, 0, 40, 41, 8, 9, 10, 11, 12, 2609 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2610 23, 24, 0, 0, 25, 26, 27, 0, 42, 0, 2611 266, 0, 30, 0, 0, 0, 0, 0, 205, 0, 2612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2613 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 2614 36, 0, 332, 333, 39, 0, 0, 0, 0, 0, 2615 0, 40, 41, 8, 9, 10, 11, 12, 13, 14, 2616 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2617 0, 0, 25, 26, 27, 0, 636, 0, 334, 0, 2618 30, 0, 0, 0, 0, 0, 627, 0, 0, 0, 2619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2620 0, 0, 0, 33, 0, 0, 0, 0, 36, 0, 2621 332, 333, 39, 0, 0, 0, 0, 0, 0, 40, 2622 41, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2623 17, 18, 19, 20, 21, 22, 23, 24, -285, 0, 2624 25, 26, 27, 0, 0, 0, 334, 0, 30, 0, 2625 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 2626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2627 0, 33, 0, 0, 0, 0, 0, 0, 37, 38, 2628 0, 0, -285, 8, 9, 10, 11, 12, 13, 14, 2629 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2630 -285, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2631 30, 0, 636, 0, 334, 0, 0, 0, 0, 0, 2632 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 2633 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 2634 37, 38, 0, 0, -285, 8, 9, 10, 11, 12, 2635 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2636 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2637 0, 0, 30, 448, 636, 0, 334, 0, 0, 0, 2638 0, 0, 0, 0, 627, 0, 0, 0, 0, 0, 2639 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 2640 0, 0, 37, 38, 8, 9, 10, 11, 12, 13, 2641 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2642 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2643 0, 30, 448, 0, 0, 0, 0, 0, 449, 0, 2644 0, 0, 703, 0, 0, 0, 109, 0, 0, 0, 2645 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 2646 0, 37, 38, 8, 9, 10, 11, 12, 13, 14, 2647 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2648 -285, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2649 30, 0, 0, 0, 0, 0, 0, 449, 0, 0, 2650 0, 937, 0, 0, 0, 109, 0, 0, 0, 0, 2651 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 2652 37, 38, 0, 0, -285, 8, 9, 10, 11, 12, 2653 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2654 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2655 0, 0, 30, 448, 0, 0, 334, 0, 0, 0, 2656 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 2657 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 2658 0, 0, 37, 38, 8, 9, 10, 11, 12, 13, 2659 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2660 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2661 0, 30, 0, 0, 0, 0, 0, 0, 449, 0, 2662 0, 0, 1219, 0, 0, 0, 109, 0, 0, 0, 2663 0, 0, 0, 0, 33, 0, 0, 0, 0, 108, 2664 0, 37, 38, 8, 9, 10, 11, 12, 13, 14, 2665 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2666 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2667 30, 448, 0, 0, 0, 0, 0, 43, 0, 0, 2668 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 2669 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 2670 37, 38, 8, 9, 10, 11, 12, 13, 14, 15, 2671 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2672 0, 25, 26, 27, 0, 0, 0, 0, 0, 30, 2673 0, 0, 0, 0, 0, 0, 449, 0, 0, 0, 2674 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 2675 0, 0, 33, 0, 0, 0, 0, 0, 0, 37, 2676 38, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2677 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2678 25, 26, 27, 0, 0, 0, 0, 0, 30, 0, 2679 0, 0, 0, 636, 0, 334, 0, 0, 0, 0, 2680 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 2681 0, 33, 0, 0, 0, 0, 0, 0, 37, 38, 2682 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2683 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2684 26, 27, 0, 0, 0, 0, 0, 30, 0, 0, 2685 0, 0, 636, 0, 334, 0, 0, 0, 0, 0, 2686 0, 0, 627, 0, 0, 0, 0, 0, 0, 0, 2687 33, 0, 0, 0, 0, 0, 0, 37, 38, 8, 2688 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2689 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2690 27, 0, 0, 0, 0, 0, 30, 0, 0, 0, 2691 0, 0, 0, 253, 0, 0, 0, 0, 0, 0, 2692 0, 109, 0, 0, 0, 0, 0, 0, 0, 33, 2693 0, 0, 0, 0, 0, 0, 37, 38, 8, 9, 2694 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2695 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2696 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 2697 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 2698 109, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2699 0, 0, 0, 0, 0, 203, 38, 8, 9, 10, 2512 42, 0, 205, 0, 0, 0, 0, 0, 0, 0, 2513 206, 2, 203, 4, 5, 6, 7, 8, 9, 10, 2700 2514 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2701 2515 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2702 2516 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2703 0, 266, 0, 0, 0, 0, 0, 0, 0, 267, 2704 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 2705 0, 0, 0, 0, 37, 38, 8, 9, 10, 11, 2706 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2707 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2708 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 2709 253, 0, 0, 0, 0, 0, 0, 0, 627, 0, 2710 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 2711 0, 0, 0, 37, 38, 8, 9, 10, 11, 12, 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, 33, 0, 34, 0, 35, 0, 0, 37, 2520 38, 2, 203, 4, 5, 6, 7, 8, 9, 10, 2521 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2522 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2523 0, 0, 0, 0, 30, -397, 682, 0, 0, 0, 2524 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 2525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2526 0, 0, 33, 0, 34, 0, 35, 0, 0, 37, 2527 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2528 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2529 0, 1360, 0, 0, 0, 0, 0, 0, 0, 0, 2530 0, 0, 0, 0, 0, 0, 682, 0, 0, 0, 2531 0, 0, 0, 0, 630, 2, 203, 4, 5, 6, 2532 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2533 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2534 25, 26, 27, 0, 0, 0, 0, 0, 30, 0, 2535 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2536 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2537 24, 0, 0, 25, 26, 27, 33, 0, 34, 0, 2538 35, 30, 0, 37, 38, 0, 0, 0, 0, 0, 2539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2540 0, 0, 0, 0, 0, 1362, 0, 0, 0, 33, 2541 0, 0, 0, 0, 36, 0, 333, 334, 39, 0, 2542 682, 0, 0, 0, 0, 40, 41, 0, 630, 2, 2543 203, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2544 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2545 23, 24, 0, 335, 25, 26, 27, 0, 0, 0, 2546 0, 109, 30, 0, 0, 0, 0, 0, 0, 0, 2547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549 33, 0, 34, 0, 35, 0, 0, 204, 38, 2, 2550 203, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2712 2551 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2713 2552 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2714 0, 0, 30, 0, 0, 0, 0, 0, 0, 334, 2715 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, 2716 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 2717 0, 0, 37, 38, 8, 9, 10, 11, 12, 13, 2553 0, 0, 30, 0, 267, 0, 0, 0, 0, 0, 2554 0, 0, 625, 0, 0, 0, 0, 0, 0, 0, 2555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2556 33, 0, 34, 0, 35, 0, 0, 37, 38, 2, 2557 203, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2558 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2559 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2560 0, 0, 30, 0, 682, 0, 0, 0, 0, 0, 2561 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 2562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2563 33, 0, 34, 0, 35, 0, 0, 37, 38, 2, 2564 203, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2565 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2566 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2567 0, 0, 30, 0, 595, 0, 0, 0, 0, 0, 2568 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 2569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2570 33, 0, 34, 0, 35, 0, 0, 204, 38, 8, 2571 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2572 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2573 27, 0, 0, 0, 0, 279, 30, 280, 0, 0, 2574 0, 0, 0, 0, 205, 0, 0, 0, 0, 0, 2575 0, 0, 268, 0, 0, 0, 0, 0, 0, 0, 2576 0, 0, 0, 281, 33, 0, 0, 0, 0, 282, 2577 0, 37, 38, 283, 0, 0, 284, 285, 286, 287, 2578 40, 41, 0, 288, 289, 0, 0, 0, 0, 0, 2579 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 2580 0, 0, 0, 0, 0, 0, 291, 0, 521, 0, 2581 0, 168, 0, 0, 0, 293, 294, 295, 296, 297, 2582 298, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2583 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2584 25, 26, 27, 0, 0, 0, 0, 279, 30, 280, 2585 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2586 17, 18, 19, 20, 21, 22, 23, 24, -292, 0, 2587 25, 26, 27, 0, 0, 281, 33, 0, 30, 0, 2588 0, 282, 0, 37, 38, 283, 0, 0, 284, 285, 2589 286, 287, 40, 41, 0, 288, 289, 0, 0, 0, 2590 0, 0, 0, 290, 0, 0, 33, 0, 0, 0, 2591 0, 36, 0, 333, 334, 39, 0, -292, 291, 0, 2592 595, -3, 40, 41, 0, 0, 0, 293, 596, 295, 2593 296, 297, 298, 8, 9, 10, 11, 12, 13, 14, 2594 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2595 335, 0, 25, 26, 27, 0, 0, 0, 109, 279, 2596 30, 280, 0, 8, 9, 10, 11, 12, 13, 14, 2597 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2598 -292, 0, 25, 26, 27, 0, 0, 281, 33, 0, 2599 30, 0, 0, 645, 0, 37, 38, 283, 0, 0, 2600 284, 285, 286, 287, 40, 41, 0, 288, 289, 0, 2601 0, 0, 0, 0, 0, 290, 0, 0, 33, 0, 2602 0, 0, 0, 0, 0, 37, 38, 0, 0, -292, 2603 291, -34, 760, 0, 0, 0, 0, 0, 0, 293, 2604 294, 295, 296, 297, 298, 8, 9, 10, 11, 12, 2605 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2606 23, 24, 335, 0, 25, 26, 27, 0, 0, 0, 2607 109, 279, 30, 280, 0, 8, 9, 10, 11, 12, 2608 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2609 23, 24, 0, 0, 25, 26, 27, 0, 0, 281, 2610 33, 0, 30, 0, 0, 282, 0, 37, 38, 283, 2611 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2612 289, 0, 0, 0, 0, 0, 0, 290, 0, 0, 2613 33, 0, 0, 0, 0, 108, 0, 37, 38, 0, 2614 0, 0, 291, 0, 292, 0, 0, 0, 0, 0, 2615 0, 293, 294, 295, 296, 297, 298, 8, 9, 10, 2616 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2617 21, 22, 23, 24, 43, 0, 25, 26, 27, 0, 2618 0, 0, 109, 279, 30, 280, 0, 8, 9, 10, 2619 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2620 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2621 0, 281, 33, 0, 30, 450, 0, 282, 0, 37, 2622 38, 283, 0, 0, 284, 285, 286, 287, 40, 41, 2623 0, 288, 289, 0, 0, 0, 0, 0, 0, 290, 2624 0, 0, 33, 0, 0, 0, 0, 0, 0, 37, 2625 38, 0, 0, 0, 291, 0, 154, 0, 0, 0, 2626 0, 0, 0, 293, 294, 295, 296, 297, 298, 8, 2627 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2628 19, 20, 21, 22, 23, 24, 451, 0, 25, 26, 2629 27, 0, 0, 0, 109, 279, 30, 280, 0, 8, 2630 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2631 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2632 27, 0, 0, 281, 33, 0, 30, 0, 0, 282, 2633 0, 37, 38, 283, 0, 0, 284, 285, 286, 287, 2634 40, 41, 0, 288, 289, 0, 0, 0, 0, 0, 2635 0, 290, 0, 0, 33, 0, 0, 0, 0, 0, 2636 0, 37, 38, 0, 0, 0, 291, 0, 595, 0, 2637 0, 0, 0, 0, 0, 293, 596, 295, 296, 297, 2638 298, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2639 17, 18, 19, 20, 21, 22, 23, 24, 254, 0, 2640 25, 26, 27, 0, 0, 0, 109, 279, 30, 280, 2641 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2642 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2643 26, 27, 0, 0, 0, 281, 33, 30, 0, 0, 2644 0, 282, 0, 37, 38, 283, 0, 0, 284, 285, 2645 286, 287, 40, 41, 0, 288, 289, 0, 0, 0, 2646 0, 0, 0, 290, 0, 33, 0, 0, 0, 0, 2647 36, 0, 204, 38, 39, 0, 0, 0, 291, 0, 2648 375, 40, 41, 0, 0, 0, 0, 293, 377, 295, 2649 296, 297, 298, 0, 0, 0, 0, 0, 0, 0, 2650 0, 0, 0, 0, 0, 0, 0, 42, 0, 267, 2651 0, 0, 0, 0, 0, 0, 0, 206, 8, 9, 2652 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2653 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2654 0, 0, 0, 0, 0, 30, 0, 8, 9, 10, 2655 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2656 21, 22, 23, 24, -292, 0, 25, 26, 27, 0, 2657 0, 0, 0, 33, 30, 0, 0, 0, 36, 0, 2658 333, 334, 39, 0, 0, 0, 0, 0, 0, 40, 2659 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2660 0, 0, 33, 0, 0, 0, 0, 0, 0, 37, 2661 38, 0, 0, -292, 0, 639, 0, 335, 0, 0, 2662 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 2663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2664 0, 0, 0, 0, 639, 0, 335, 0, 0, 0, 2665 0, 0, 0, 0, 109, 8, 9, 10, 11, 12, 2666 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2667 23, 24, -292, 0, 25, 26, 27, 0, 0, 0, 2668 0, 0, 30, 0, 8, 9, 10, 11, 12, 13, 2718 2669 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2719 2670 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2720 0, 30, 0, 0, 0, 0, 0, 0, 449, 0, 2721 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 2671 33, 30, 450, 0, 0, 0, 0, 37, 38, 0, 2672 0, -292, 8, 9, 10, 11, 12, 13, 14, 15, 2673 16, 17, 18, 19, 20, 21, 22, 23, 24, 33, 2674 0, 25, 26, 27, 0, 0, 37, 38, 0, 30, 2675 450, 0, 639, 0, 335, 0, 0, 0, 0, 0, 2676 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 2677 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 2678 0, 0, 0, 451, 37, 38, 0, 941, 0, 0, 2679 0, 109, 8, 9, 10, 11, 12, 13, 14, 15, 2680 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2681 0, 25, 26, 27, 0, 0, 0, 0, 0, 30, 2682 0, 451, 0, 0, 0, 1227, 0, 0, 0, 109, 2683 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2684 18, 19, 20, 21, 22, 23, 24, 33, 0, 25, 2685 26, 27, 0, 0, 37, 38, 0, 30, 0, 8, 2686 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2687 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2688 27, 0, 0, 0, 0, 33, 30, 0, 0, 639, 2689 0, 335, 37, 38, 0, 0, 0, 0, 0, 109, 2690 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2722 2691 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 2723 0, 203, 38, 8, 9, 10, 11, 12, 13, 14, 2692 0, 37, 38, 0, 0, 0, 0, 639, 0, 335, 2693 0, 0, 0, 0, 0, 0, 0, 630, 0, 0, 2694 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2695 18, 19, 20, 21, 22, 23, 24, 0, 154, 25, 2696 26, 27, 0, 0, 0, 0, 109, 30, 0, 8, 2697 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2698 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2699 27, 0, 0, 0, 0, 33, 30, 0, 0, 0, 2700 0, 0, 204, 38, 0, 0, 0, 8, 9, 10, 2701 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2702 21, 22, 23, 24, 33, 0, 25, 26, 27, 0, 2703 0, 37, 38, 0, 30, 0, 0, 0, 0, 267, 2704 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, 2705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2706 0, 0, 33, 0, 0, 0, 0, 0, 254, 37, 2707 38, 0, 0, 0, 0, 0, 630, 8, 9, 10, 2708 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2709 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2710 0, 0, 0, 0, 30, 0, 335, 0, 0, 0, 2711 0, 0, 0, 0, 630, 8, 9, 10, 11, 12, 2712 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2713 23, 24, 33, 0, 25, 26, 27, 0, 0, 37, 2714 38, 0, 30, 0, 8, 9, 10, 11, 12, 13, 2715 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2716 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2717 33, 30, 0, 0, 0, 0, 451, 204, 38, 0, 2718 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 2719 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2720 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 2721 0, 0, 0, 0, 267, 0, 0, 0, 0, 0, 2722 0, 0, 625, 0, 0, 8, 9, 10, 11, 12, 2723 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2724 23, 24, 0, 595, 25, 26, 27, 0, 0, 0, 2725 0, 630, 30, 0, 8, 9, 10, 11, 12, 13, 2726 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2727 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2728 33, 30, 0, 0, 0, 0, 0, 37, 38, 0, 2729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2730 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2731 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 2732 0, 0, 0, 0, 335, 0, 0, 0, 0, 0, 2733 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 2734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2735 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 2736 0, 109, 2, 203, 4, 5, 6, 7, 8, 9, 2737 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2738 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2739 0, 0, 0, 0, 0, 30, 0, 0, 279, 0, 2740 280, 1056, 0, 1057, 0, 0, 1058, 1059, 1060, 1061, 2741 1062, 1063, 1064, 1065, 0, 0, 1540, 1066, 0, 0, 2742 0, 1067, 1068, 33, 32, 34, 281, 35, 0, 0, 2743 37, 38, 645, 0, 0, 0, 283, 0, 0, 284, 2744 285, 286, 287, 40, 41, 0, 288, 289, 0, 0, 2745 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 2746 0, 0, 0, 0, 0, 0, -410, 0, 0, 291, 2747 0, 375, 0, 0, 168, 0, 0, 0, 293, 377, 2748 295, 296, 297, 298, 0, 0, 0, 0, 1070, 0, 2749 0, 279, -127, 280, 1056, 0, 1057, 0, 0, 1058, 2750 1059, 1060, 1061, 1062, 1063, 1064, 1065, 0, 0, 0, 2751 1066, 0, 0, 0, 1067, 1068, 0, 32, 0, 281, 2752 0, 0, 0, 0, 0, 645, 0, 0, 0, 283, 2753 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2754 289, 0, 0, 0, 0, 0, 0, 290, 0, 0, 2755 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2756 0, 0, 291, 0, 375, 0, 0, 168, 0, 0, 2757 0, 293, 377, 295, 296, 297, 298, 0, 0, 0, 2758 0, 1070, 0, 0, 279, -127, 280, 1056, 0, 1057, 2759 1410, 1411, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 2760 0, 0, 1540, 1066, 0, 0, 0, 1067, 1068, 0, 2761 32, 0, 281, 0, 0, 0, 0, 0, 645, 0, 2762 0, 0, 283, 0, 0, 284, 285, 286, 287, 40, 2763 41, 0, 288, 289, 0, 0, 0, 0, 0, 0, 2764 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2765 0, 0, 0, 0, 0, 291, 0, 375, 0, 0, 2766 168, 0, 0, 0, 293, 377, 295, 296, 297, 298, 2767 279, 0, 280, 1056, 1070, 1057, 1410, 1411, 1058, 1059, 2768 1060, 1061, 1062, 1063, 1064, 1065, 0, 0, 0, 1066, 2769 0, 0, 0, 1067, 1068, 0, 32, 0, 281, 0, 2770 0, 0, 0, 0, 645, 0, 0, 0, 283, 0, 2771 0, 284, 285, 286, 287, 40, 41, 0, 288, 289, 2772 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 2773 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2774 0, 291, 0, 375, 0, 0, 168, 0, 0, 0, 2775 293, 377, 295, 296, 297, 298, 279, 0, 280, 1056, 2776 1070, 1057, 0, 0, 1058, 1059, 1060, 1061, 1062, 1063, 2777 1064, 1065, 0, 0, 0, 1066, 0, 0, 0, 1067, 2778 1068, 0, 32, 0, 281, 0, 0, 0, 0, 0, 2779 645, 0, 0, 0, 283, 0, 0, 284, 285, 286, 2780 287, 40, 41, 0, 288, 289, 0, 0, 0, 0, 2781 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 2782 0, 0, 0, 0, 0, 0, 0, 291, 0, 375, 2783 0, 0, 168, 0, 0, 0, 293, 377, 295, 296, 2784 297, 298, 0, 0, 0, 0, 1070, 2, 203, 4, 2785 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2724 2786 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2725 2787 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2726 30, 0, 0, 0, 0, 0, 0, 266, 0, 0, 2727 0, 0, 0, 0, 0, 622, 0, 0, 0, 0, 2728 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 2729 37, 38, 8, 9, 10, 11, 12, 13, 14, 15, 2730 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2731 0, 25, 26, 27, 0, 0, 0, 0, 0, 30, 2732 0, 0, 0, 0, 0, 0, 592, 0, 0, 0, 2733 0, 0, 0, 0, 627, 0, 0, 0, 0, 0, 2734 0, 0, 33, 0, 0, 0, 0, 0, 0, 37, 2735 38, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2736 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2737 25, 26, 27, 0, 0, 0, 0, 0, 30, 0, 2738 0, 0, 0, 0, 0, 334, 0, 0, 0, 0, 2739 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 2740 0, 33, 0, 0, 0, 0, 0, 0, 37, 38, 2741 2, 202, 4, 5, 6, 7, 8, 9, 10, 11, 2742 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2743 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2744 0, 0, 0, 30, 43, 0, 0, 0, 0, 0, 2745 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 2746 0, 0, 0, 0, 0, 0, 33, 0, 34, 0, 2747 35, 0, 0, 37, 38, 0, 278, 0, 279, 1051, 2748 0, 1052, 0, 0, 1053, 1054, 1055, 1056, 1057, 1058, 2749 1059, 1060, 1507, 1061, 0, 0, 1062, 32, 0, 280, 2750 0, 0, 0, 0, 0, 642, 0, 0, -403, 282, 2751 0, 0, 283, 284, 285, 286, 40, 41, 0, 287, 2752 288, 0, 0, 0, 0, 0, 0, 289, 0, 0, 2788 30, 0, 0, 279, 0, 280, 0, 0, 0, 0, 2753 2789 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2754 0, 290, 0, 374, 0, 0, 167, 0, 0, 0, 2755 292, 376, 294, 295, 296, 297, 0, 278, 0, 279, 2756 1051, 0, 1052, 0, -126, 1053, 1054, 1055, 1056, 1057, 2757 1058, 1059, 1060, 0, 1061, 0, 0, 1062, 32, 0, 2758 280, 0, 0, 0, 0, 0, 642, 0, 0, 0, 2759 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2760 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2790 0, 0, 279, 0, 280, 0, 0, 0, 33, 0, 2791 34, 281, 35, 0, 0, 37, 38, 282, 0, 0, 2792 0, 283, 0, 0, 284, 285, 286, 287, 40, 41, 2793 281, 288, 289, 0, 0, 0, 282, 1319, 0, 290, 2794 283, 0, 0, 284, 285, 286, 287, 40, 41, 0, 2795 288, 289, 0, 0, 291, 0, 375, 0, 290, 0, 2796 279, 775, 280, 293, 377, 295, 296, 297, 298, 0, 2797 0, 0, 0, 291, 0, 375, 0, 0, 986, 279, 2798 0, 280, 293, 377, 295, 296, 297, 298, 281, 0, 2799 0, 0, 0, 0, 282, 0, 0, 0, 283, 0, 2800 0, 284, 285, 286, 287, 40, 41, 281, 288, 289, 2801 0, 0, 0, 282, 0, 0, 290, 283, 0, 0, 2802 284, 285, 286, 287, 40, 41, 0, 288, 289, 0, 2803 0, 291, 0, 375, 0, 290, 0, 279, 0, 280, 2804 293, 377, 295, 296, 297, 298, 0, 0, 0, 0, 2805 291, 0, 375, 0, 0, 0, 279, 0, 280, 293, 2806 729, 295, 296, 297, 298, 281, 0, 0, 0, 0, 2807 0, 645, 0, 0, 0, 283, 0, 0, 284, 285, 2808 286, 287, 40, 41, 281, 288, 289, 0, 0, 0, 2809 282, 0, 0, 290, 283, 0, 0, 284, 285, 286, 2810 287, 40, 41, 0, 288, 289, 0, 0, 291, 0, 2811 779, 0, 290, 0, 279, 0, 280, 293, 377, 295, 2812 296, 297, 298, 0, 0, 0, 0, 291, 0, 375, 2813 0, 0, 0, 279, 0, 280, 293, 821, 295, 296, 2814 297, 298, 281, 0, 0, 0, 0, 0, 282, 0, 2815 0, 0, 283, 0, 0, 284, 285, 286, 287, 40, 2816 41, 281, 288, 289, 0, 0, 0, 282, 0, 0, 2817 290, 283, 0, 0, 284, 285, 286, 287, 40, 41, 2818 0, 288, 289, 0, 0, 291, 0, 0, 0, 290, 2819 0, 279, 0, 280, 293, 377, 295, 296, 297, 298, 2820 0, 0, 0, 0, 514, 0, 0, 0, 0, 0, 2821 0, 0, 0, 293, 377, 295, 296, 297, 298, 281, 2822 0, 0, 0, 0, 0, 282, 0, 0, 0, 283, 2823 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2824 289, 0, 0, 0, 0, 0, 0, 290, 0, 0, 2761 2825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2762 0, 0, 290, 0, 374, 0, 0, 167, 0, 0, 2763 0, 292, 376, 294, 295, 296, 297, 0, 0, 0, 2764 0, 0, 0, 0, 0, -126, 2, 202, 4, 5, 2765 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2766 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2767 0, 25, 26, 27, 0, 0, 0, 0, 0, 30, 2768 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2769 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2770 26, 27, 33, 0, 34, 0, 35, 30, 0, 37, 2771 38, 0, 278, 0, 279, 1051, 0, 1052, 1394, 1395, 2772 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1507, 1061, 2773 33, 1307, 1062, 32, 0, 280, 0, 37, 38, 0, 2774 0, 642, 0, 0, 0, 282, 0, 0, 283, 284, 2775 285, 286, 40, 41, 0, 287, 288, 0, 0, 0, 2776 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 2777 0, 0, 0, 0, 0, 0, 0, 290, 0, 374, 2778 0, 0, 167, 0, 0, 0, 292, 376, 294, 295, 2779 296, 297, 278, 0, 279, 1051, 0, 1052, 1394, 1395, 2780 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 0, 1061, 2781 0, 0, 1062, 32, 0, 280, 0, 0, 0, 0, 2782 0, 642, 0, 0, 0, 282, 0, 0, 283, 284, 2783 285, 286, 40, 41, 0, 287, 288, 0, 0, 0, 2784 0, 0, 0, 289, 0, 0, 0, 0, 0, 278, 2785 0, 279, 0, 0, 0, 0, 0, 290, 0, 374, 2786 0, 0, 167, 0, 0, 0, 292, 376, 294, 295, 2787 296, 297, 280, 0, 0, 0, 0, 0, 281, 0, 2788 0, 0, 282, 0, 0, 283, 284, 285, 286, 40, 2789 41, 0, 287, 288, 0, 0, 0, 0, 0, 0, 2790 289, 0, 0, 0, 0, 0, 278, 0, 279, 0, 2791 0, 0, 0, 0, 290, 0, 374, 0, 0, 0, 2792 0, 0, 802, 292, 376, 294, 295, 296, 297, 280, 2793 0, 0, 0, 0, 0, 281, 0, 0, 0, 282, 2794 0, 0, 283, 284, 285, 286, 40, 41, 0, 287, 2795 288, 0, 0, 0, 0, 0, 0, 289, 0, 0, 2796 0, 0, 0, 278, 0, 279, 0, 0, 0, 0, 2797 0, 290, 0, 374, 0, 0, 982, 0, 0, 0, 2798 292, 376, 294, 295, 296, 297, 280, 0, 0, 0, 2799 0, 0, 281, 0, 0, 0, 282, 0, 0, 283, 2800 284, 285, 286, 40, 41, 0, 287, 288, 0, 0, 2801 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 2802 278, 0, 279, 0, 0, 0, 0, 0, 290, 0, 2803 374, 0, 0, 0, 0, 0, 0, 292, 376, 294, 2804 295, 296, 297, 280, 0, 0, 0, 0, 0, 281, 2805 0, 0, 0, 282, 0, 0, 283, 284, 285, 286, 2806 40, 41, 0, 287, 288, 0, 0, 0, 0, 0, 2807 0, 289, 0, 0, 0, 0, 0, 278, 0, 279, 2808 0, 0, 0, 0, 0, 290, 0, 374, 0, 0, 2809 0, 0, 0, 0, 292, 726, 294, 295, 296, 297, 2810 280, 0, 0, 0, 0, 0, 642, 0, 0, 0, 2811 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2812 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2813 0, 0, 0, 0, 278, 0, 279, 0, 0, 0, 2814 0, 0, 290, 0, 776, 0, 0, 0, 0, 0, 2815 0, 292, 376, 294, 295, 296, 297, 280, 0, 0, 2816 0, 0, 0, 281, 0, 0, 0, 282, 0, 0, 2817 283, 284, 285, 286, 40, 41, 0, 287, 288, 0, 2818 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 2819 0, 278, 0, 279, 0, 0, 0, 0, 0, 290, 2820 0, 374, 0, 0, 0, 0, 0, 0, 292, 817, 2821 294, 295, 296, 297, 280, 0, 0, 0, 0, 0, 2822 281, 0, 0, 0, 282, 0, 0, 283, 284, 285, 2823 286, 40, 41, 0, 287, 288, 0, 0, 0, 0, 2824 0, 0, 289, 0, 0, 0, 0, 0, 278, 0, 2825 279, 0, 0, 0, 0, 0, 508, 0, 0, 0, 2826 0, 0, 0, 0, 0, 292, 376, 294, 295, 296, 2827 297, 280, 0, 0, 0, 0, 0, 281, 0, 0, 2828 0, 282, 0, 0, 283, 284, 285, 286, 40, 41, 2829 0, 287, 288, 0, 0, 0, 0, 0, 0, 289, 2830 0, 0, 0, 0, 0, 278, 0, 279, 0, 0, 2831 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 2832 0, 0, 292, 376, 294, 295, 296, 297, 280, 0, 2833 0, 0, 0, 0, 281, 0, 0, 0, 282, 0, 2834 0, 283, 284, 285, 286, 40, 41, 0, 287, 288, 2835 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 2836 0, 0, 278, 0, 279, 0, 0, 0, 0, 0, 2837 512, 0, 0, 0, 0, 0, 0, 0, 0, 292, 2838 376, 294, 295, 296, 297, 280, 0, 0, 0, 0, 2839 0, 281, 0, 0, 0, 282, 0, 0, 283, 284, 2840 285, 286, 40, 41, 0, 287, 288, 0, 0, 0, 2841 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 2842 0, 0, 0, 0, 0, 0, 0, 515, 0, 0, 2843 0, 0, 0, 0, 0, 0, 292, 376, 294, 295, 2844 296, 297, 2, 202, 4, 5, 6, 7, 8, 9, 2845 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2846 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, 2847 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 2826 0, 0, 517, 0, 0, 0, 0, 0, 0, 0, 2827 0, 293, 377, 295, 296, 297, 298, 2, 203, 4, 2828 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2829 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2831 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2848 2832 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2849 2833 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2850 34, 0, 35, 36, 0, 17 0, 171, 39, 0, 0,2851 0, 0, 0, 0, 40, 41, 20 1, 2, 202, 4,2834 34, 0, 35, 36, 0, 171, 172, 39, 0, 0, 2835 0, 0, 0, 0, 40, 41, 202, 2, 203, 4, 2852 2836 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2853 2837 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, … … 2855 2839 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2856 2840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2857 0, 0, 0, 33, 0, 34, 0, 35, 0, 0, 2858 203, 38, 469, 2, 202, 4, 5, 6, 7, 8, 2859 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2860 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2861 27, 0, 0, 0, 0, 0, 30, 0, 0, 0, 2862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2863 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2864 0, 34, 0, 35, 0, 0, 37, 38, 2, 202, 2841 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2842 34, 0, 35, 0, 0, 204, 38, 471, 2, 203, 2865 2843 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2866 2844 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, … … 2868 2846 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 2869 2847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2870 0, 0, 0, 0, 33, 0, 34, 0, 35, 0, 2871 0, 203, 38, 8, 9, 10, 11, 12, 13, 14, 2872 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2873 0, 0, 25, 26, 27, 487, 488, 489, 0, 0, 2874 30, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2875 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2876 25, 26, 27, 33, 0, 0, 0, 0, 30, 0, 2877 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 2848 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2849 0, 34, 0, 35, 0, 0, 37, 38, 2, 203, 2850 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2851 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2852 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2853 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 2878 2854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2879 0, 33, 0, 0, 0, 0, 0, 0, 203, 38 2855 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2856 0, 34, 0, 35, 0, 0, 204, 38 2880 2857 }; 2881 2858 2882 2859 #define yypact_value_is_default(yystate) \ 2883 ((yystate) == (-13 18))2860 ((yystate) == (-1362)) 2884 2861 2885 2862 #define yytable_value_is_error(yytable_value) \ … … 2888 2865 static const yytype_int16 yycheck[] = 2889 2866 { 2890 1, 42, 0, 42, 0, 181, 42, 235, 181, 165, 2891 181, 1, 451, 200, 182, 182, 215, 648, 690, 181, 2892 181, 484, 181, 181, 275, 602, 344, 113, 103, 751, 2893 252, 622, 690, 31, 494, 31, 690, 31, 498, 604, 2894 457, 892, 988, 359, 42, 602, 44, 363, 44, 1317, 2895 1, 534, 602, 995, 1031, 0, 54, 37, 37, 183, 2896 602, 604, 60, 602, 60, 63, 450, 63, 66, 605, 2897 66, 344, 37, 572, 101, 611, 66, 152, 65, 65, 2898 771, 1398, 65, 49, 715, 261, 31, 75, 261, 42, 2899 261, 1394, 412, 44, 262, 262, 768, 691, 42, 261, 2900 261, 1043, 261, 261, 602, 37, 104, 1030, 1031, 107, 2901 768, 197, 432, 101, 768, 113, 27, 75, 57, 713, 2902 440, 42, 101, 103, 103, 111, 0, 89, 75, 340, 2903 42, 43, 37, 257, 258, 101, 101, 124, 103, 523, 2904 181, 124, 181, 1411, 602, 181, 144, 892, 144, 101, 2905 102, 0, 103, 115, 152, 1458, 103, 31, 109, 157, 2906 71, 157, 101, 420, 421, 1482, 42, 43, 65, 101, 2907 1487, 103, 101, 636, 637, 638, 37, 65, 290, 736, 2908 0, 1, 31, 181, 182, 1050, 182, 1504, 277, 88, 2909 412, 654, 143, 65, 1511, 107, 44, 892, 65, 197, 2910 75, 152, 75, 37, 29, 404, 103, 205, 78, 205, 2911 432, 31, 11, 0, 63, 103, 214, 490, 440, 217, 2912 261, 217, 261, 122, 101, 261, 689, 102, 181, 102, 2913 106, 103, 400, 400, 109, 105, 103, 181, 736, 496, 2914 101, 104, 103, 63, 31, 108, 66, 248, 1225, 247, 2915 201, 247, 829, 247, 205, 80, 81, 514, 0, 1, 2916 181, 109, 337, 261, 262, 728, 262, 101, 104, 103, 2917 268, 710, 829, 484, 590, 106, 841, 275, 736, 829, 2918 108, 75, 450, 450, 235, 236, 604, 829, 289, 31, 2919 829, 366, 492, 73, 1240, 831, 124, 1274, 841, 0, 2920 1, 764, 247, 1487, 390, 1050, 997, 101, 420, 421, 2921 809, 73, 42, 43, 482, 482, 267, 633, 75, 270, 2922 1504, 63, 579, 103, 66, 105, 324, 1511, 324, 109, 2923 31, 829, 418, 153, 54, 89, 1487, 1059, 424, 290, 2924 108, 103, 293, 105, 0, 343, 344, 109, 111, 123, 2925 1273, 1274, 109, 116, 117, 818, 124, 205, 1053, 1210, 2926 1511, 115, 360, 683, 224, 66, 364, 65, 217, 67, 2927 68, 829, 949, 247, 968, 31, 106, 104, 252, 101, 2928 108, 108, 593, 243, 104, 950, 337, 107, 236, 340, 2929 3, 65, 390, 67, 68, 3, 508, 217, 247, 949, 2930 512, 123, 400, 515, 400, 103, 606, 949, 359, 108, 2931 610, 622, 363, 1390, 239, 366, 627, 506, 1009, 267, 2932 418, 65, 1287, 67, 68, 124, 424, 247, 426, 102, 2933 67, 631, 106, 108, 71, 635, 109, 74, 102, 76, 2934 1382, 1383, 290, 65, 108, 293, 83, 69, 108, 124, 2935 123, 526, 450, 0, 76, 77, 568, 101, 107, 108, 2936 247, 683, 106, 0, 52, 1210, 102, 1390, 469, 420, 2937 421, 101, 108, 508, 123, 217, 474, 512, 689, 101, 2938 515, 103, 1018, 1019, 482, 102, 482, 101, 486, 111, 2939 486, 108, 490, 649, 214, 1126, 345, 448, 958, 750, 2940 451, 918, 102, 725, 820, 247, 457, 95, 824, 109, 2941 993, 108, 123, 514, 690, 1210, 102, 690, 469, 690, 2942 113, 114, 108, 841, 692, 692, 1120, 124, 690, 690, 2943 531, 690, 690, 534, 658, 536, 101, 1102, 412, 101, 2944 108, 486, 1287, 494, 928, 496, 247, 498, 268, 121, 2945 375, 123, 936, 764, 102, 275, 124, 508, 432, 83, 2946 84, 512, 108, 514, 515, 1287, 440, 1030, 841, 1434, 2947 656, 208, 108, 108, 108, 526, 1441, 108, 124, 668, 2948 107, 102, 583, 1177, 1178, 0, 108, 108, 124, 124, 2949 124, 247, 590, 124, 118, 119, 252, 981, 914, 101, 2950 448, 189, 124, 451, 602, 1300, 604, 427, 466, 457, 2951 484, 101, 486, 688, 637, 638, 31, 108, 104, 101, 2952 1485, 103, 108, 343, 212, 623, 475, 42, 579, 44, 2953 455, 654, 101, 124, 222, 460, 44, 486, 1360, 590, 2954 360, 639, 593, 102, 364, 60, 102, 104, 63, 1088, 2955 109, 66, 108, 108, 655, 653, 657, 104, 656, 1354, 2956 508, 108, 1357, 863, 512, 754, 486, 515, 493, 124, 2957 495, 622, 102, 636, 637, 638, 627, 102, 108, 878, 2958 102, 954, 633, 1146, 65, 102, 67, 68, 763, 1434, 2959 102, 654, 690, 104, 692, 102, 1441, 108, 1461, 486, 2960 899, 109, 290, 1398, 1467, 728, 101, 527, 1403, 102, 2961 347, 104, 349, 81, 82, 108, 1438, 101, 1440, 103, 2962 101, 1484, 723, 85, 86, 106, 1489, 111, 884, 144, 2963 123, 124, 960, 1428, 101, 143, 103, 688, 736, 737, 2964 1485, 101, 157, 103, 486, 4, 5, 6, 7, 8, 2965 9, 111, 750, 101, 1118, 955, 412, 102, 1122, 710, 2966 928, 928, 101, 108, 1486, 728, 181, 182, 936, 936, 2967 124, 591, 101, 1089, 103, 624, 432, 101, 102, 103, 2968 102, 102, 111, 1377, 440, 486, 108, 108, 102, 740, 2969 205, 101, 102, 103, 108, 818, 57, 205, 1009, 436, 2970 1394, 101, 217, 62, 591, 64, 101, 1502, 103, 683, 2971 1273, 101, 763, 1508, 672, 689, 636, 637, 638, 1491, 2972 645, 104, 1517, 102, 108, 109, 1521, 235, 124, 108, 2973 486, 829, 247, 1491, 654, 1022, 65, 1491, 67, 68, 2974 69, 65, 106, 841, 102, 69, 261, 76, 77, 437, 2975 108, 725, 76, 77, 102, 818, 101, 102, 103, 267, 2976 108, 124, 710, 1457, 1458, 124, 101, 716, 103, 820, 2977 102, 124, 101, 824, 103, 106, 108, 101, 44, 65, 2978 705, 730, 111, 471, 106, 293, 711, 111, 101, 1045, 2979 764, 892, 102, 102, 60, 102, 102, 63, 108, 108, 2980 66, 108, 108, 623, 557, 558, 559, 560, 728, 324, 2981 10, 11, 12, 13, 14, 65, 914, 67, 68, 639, 2982 508, 101, 102, 103, 512, 101, 101, 515, 103, 344, 2983 928, 104, 340, 653, 101, 1146, 103, 37, 936, 4, 2984 5, 6, 7, 8, 9, 75, 101, 805, 103, 75, 2985 65, 0, 1, 101, 69, 103, 954, 815, 102, 103, 2986 60, 76, 77, 914, 1246, 1247, 1248, 918, 101, 959, 2987 103, 112, 830, 822, 695, 120, 697, 87, 144, 78, 2988 79, 80, 31, 54, 55, 400, 101, 108, 109, 990, 2989 121, 157, 993, 101, 995, 44, 111, 62, 818, 64, 2990 123, 101, 101, 103, 103, 825, 105, 958, 959, 960, 2991 103, 111, 420, 421, 1225, 101, 182, 66, 892, 65, 2992 104, 67, 68, 69, 1110, 108, 109, 683, 104, 1118, 2993 750, 42, 43, 1122, 1123, 450, 553, 554, 825, 205, 2994 555, 556, 1043, 892, 102, 561, 562, 102, 102, 102, 2995 102, 217, 1053, 101, 103, 1056, 1057, 1058, 1009, 884, 2996 102, 104, 103, 108, 104, 101, 891, 123, 106, 725, 2997 918, 486, 892, 104, 102, 490, 102, 104, 1190, 1191, 2998 104, 1193, 104, 671, 104, 108, 1470, 1199, 496, 28, 2999 1202, 109, 680, 109, 63, 144, 684, 10, 11, 12, 3000 13, 14, 102, 152, 153, 892, 514, 102, 104, 106, 3001 109, 80, 1110, 107, 10, 11, 12, 13, 14, 102, 3002 107, 107, 101, 108, 37, 102, 124, 102, 102, 1513, 3003 102, 1206, 102, 182, 102, 466, 109, 1088, 1089, 959, 3004 102, 37, 108, 102, 102, 114, 1235, 60, 197, 102, 3005 892, 200, 201, 102, 102, 975, 205, 982, 324, 102, 3006 102, 102, 102, 1012, 60, 102, 102, 102, 28, 1027, 3007 1028, 579, 123, 107, 104, 102, 1050, 226, 102, 102, 3008 102, 230, 107, 232, 104, 593, 3, 602, 157, 604, 3009 108, 892, 241, 10, 11, 12, 13, 14, 247, 1189, 3010 104, 1050, 102, 252, 102, 101, 108, 103, 1206, 1210, 3011 1030, 1031, 102, 262, 622, 111, 109, 959, 106, 627, 3012 37, 270, 108, 108, 104, 1083, 1084, 102, 102, 1318, 3013 1050, 108, 108, 1322, 400, 102, 892, 101, 104, 1229, 3014 1088, 104, 101, 60, 1356, 1246, 1247, 1248, 217, 65, 3015 101, 67, 68, 69, 1079, 1206, 101, 101, 959, 109, 3016 76, 77, 65, 1050, 67, 68, 69, 124, 107, 102, 3017 1498, 102, 1146, 76, 77, 690, 102, 692, 1229, 121, 3018 107, 106, 104, 124, 108, 3, 255, 1373, 337, 104, 3019 259, 340, 10, 11, 12, 13, 14, 346, 101, 1300, 3020 108, 102, 104, 102, 0, 102, 104, 45, 1050, 104, 3021 359, 104, 102, 104, 363, 1491, 104, 366, 1491, 37, 3022 1491, 736, 737, 104, 1492, 1492, 1415, 1317, 916, 1491, 3023 1491, 107, 1491, 1491, 102, 31, 1210, 124, 124, 1188, 3024 124, 672, 60, 107, 124, 1513, 1513, 124, 109, 1050, 3025 102, 1225, 107, 1354, 104, 104, 1357, 104, 104, 1184, 3026 104, 1210, 104, 412, 104, 1223, 1317, 104, 1188, 1189, 3027 66, 102, 102, 101, 1372, 1373, 345, 104, 427, 104, 3028 101, 1382, 1383, 432, 1470, 55, 54, 102, 102, 106, 3029 1210, 440, 124, 109, 1050, 104, 1254, 1398, 104, 102, 3030 104, 102, 1403, 89, 1262, 1263, 1264, 101, 107, 1229, 3031 102, 104, 102, 1287, 829, 1416, 40, 466, 102, 102, 3032 469, 1411, 109, 1210, 124, 102, 841, 1428, 108, 124, 3033 89, 102, 3, 1282, 109, 484, 102, 486, 1287, 10, 3034 11, 12, 13, 14, 102, 494, 1188, 1189, 1306, 498, 3035 1491, 124, 1491, 1273, 1274, 1491, 425, 153, 107, 124, 3036 1411, 104, 1282, 104, 124, 101, 37, 1287, 1210, 124, 3037 1471, 124, 1470, 1061, 805, 1476, 107, 526, 527, 672, 3038 107, 1482, 102, 691, 815, 102, 1487, 1229, 1189, 60, 3039 563, 565, 1443, 1491, 1492, 564, 1492, 1317, 566, 830, 3040 1287, 1502, 1127, 1504, 567, 713, 475, 1508, 54, 1210, 3041 1511, 1362, 1458, 928, 1210, 1513, 1517, 1513, 1521, 1296, 3042 1521, 936, 1473, 572, 1473, 1123, 1322, 1441, 1229, 1079, 3043 226, 448, 448, 936, 697, 884, 938, 982, 650, 954, 3044 1282, 590, 591, 740, 593, 1287, 460, 1498, 583, 1229, 3045 956, 247, 960, 486, 1210, 604, 252, 571, 104, 63, 3046 1434, 107, 750, 571, 571, -1, -1, 1441, -1, -1, 3047 1390, -1, -1, 622, -1, 1317, -1, -1, 627, -1, 3048 -1, -1, -1, -1, 633, 1434, 1287, 636, 637, 638, 3049 -1, 1411, 1441, -1, 802, 1443, 65, -1, 67, 68, 3050 69, 1009, -1, -1, -1, 654, 152, 76, 77, -1, 3051 114, 1485, 805, -1, 1434, 0, 1317, -1, -1, -1, 3052 -1, 1441, 815, 672, -1, 1473, -1, 596, -1, -1, 3053 -1, 1287, 101, -1, 683, -1, 1485, 830, -1, 688, 3054 689, -1, 111, 692, -1, -1, 31, 1434, -1, -1, 3055 346, -1, 1372, 157, 1441, 624, -1, -1, -1, -1, 3056 629, -1, -1, -1, -1, 1485, -1, -1, 214, 1411, 3057 185, -1, 880, -1, -1, -1, 725, 192, -1, 728, 3058 -1, 66, 65, -1, 67, 68, 69, -1, 737, -1, 3059 -1, 740, 1434, 76, 77, -1, 1027, 1028, 1485, 1441, 3060 -1, -1, -1, -1, -1, -1, -1, 1295, -1, -1, 3061 1411, -1, -1, 217, 763, 764, 412, -1, 101, -1, 3062 769, -1, 268, 65, -1, 67, 68, 69, 111, 275, 3063 -1, 427, -1, 1434, 76, 77, 432, -1, -1, -1, 3064 1441, -1, -1, 1485, 440, -1, -1, 716, -1, 264, 3065 -1, 255, 1083, 1084, -1, 259, 805, -1, -1, 101, 3066 968, 730, -1, -1, -1, -1, 815, -1, 153, 818, 3067 466, 820, -1, -1, 823, 824, 825, -1, 1434, -1, 3068 -1, 830, -1, -1, 1485, 1441, -1, -1, 484, 997, 3069 486, 840, 10, 11, 12, 13, 14, 343, -1, -1, 3070 -1, -1, -1, -1, 319, 10, 11, 12, 13, 14, 3071 -1, -1, 327, -1, 360, 330, -1, -1, 364, 37, 3072 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1485, 3073 -1, 527, 37, -1, 1027, 1028, -1, -1, -1, 1047, 3074 -1, 345, 60, 892, -1, -1, -1, 65, -1, 67, 3075 68, 69, -1, 822, 1442, 60, -1, -1, 76, 77, 3076 65, -1, 247, -1, 69, 914, -1, 252, -1, -1, 3077 -1, 76, 77, -1, -1, -1, -1, 392, -1, -1, 3078 426, 396, -1, 101, 1472, 103, -1, -1, -1, -1, 3079 1083, 1084, 1223, 111, -1, 591, 101, -1, 0, -1, 3080 -1, 950, -1, -1, -1, -1, 111, -1, -1, 958, 3081 959, -1, 1120, -1, -1, -1, -1, -1, -1, -1, 3082 -1, 425, -1, 1254, 1512, 0, 975, -1, -1, 31, 3083 -1, 1262, 1263, 1264, -1, -1, 1524, -1, -1, -1, 3084 636, 637, 638, -1, -1, -1, -1, -1, -1, 279, 3085 -1, -1, -1, -1, -1, -1, 31, -1, 654, -1, 3086 1009, 346, 292, 293, 66, -1, 481, -1, -1, 1177, 3087 1178, 475, -1, 1022, 304, 1306, 672, -1, 1027, 1028, 3088 -1, 1030, 1031, -1, -1, -1, -1, 683, -1, -1, 3089 -1, 66, -1, 689, -1, 10, 11, 12, 13, 14, 3090 -1, 1050, 4, 5, 6, 7, 8, 9, -1, -1, 3091 340, -1, 65, -1, 67, 68, 69, -1, -1, -1, 3092 -1, -1, 37, 76, 77, -1, -1, 412, -1, 725, 3093 32, -1, 728, -1, 1083, 1084, -1, -1, -1, -1, 3094 1089, -1, 427, 1012, 590, 60, 376, 432, 101, -1, 3095 103, 153, -1, -1, -1, 440, 571, 572, 111, -1, 3096 62, 1254, 64, -1, -1, -1, -1, -1, 764, 1262, 3097 1263, 1264, -1, -1, -1, -1, 1491, 623, 153, -1, 3098 -1, 466, -1, -1, -1, -1, 101, -1, 103, -1, 3099 1498, -1, 596, 639, -1, -1, 111, 1146, -1, 484, 3100 65, 486, 67, 68, 69, -1, -1, 653, -1, 805, 3101 -1, 76, 77, 1306, -1, -1, 63, -1, -1, 815, 3102 624, -1, 818, -1, -1, 629, 73, 823, -1, 825, 3103 -1, -1, -1, -1, 830, -1, 101, -1, 103, -1, 3104 1189, -1, 527, -1, 659, 247, 111, -1, 663, -1, 3105 252, 65, -1, 67, 68, 69, -1, 1206, -1, -1, 3106 -1, 1210, 76, 77, -1, -1, -1, 114, -1, 1377, 3107 -1, -1, 247, -1, 1223, -1, 1225, 252, -1, -1, 3108 1229, 696, -1, -1, -1, -1, 1394, 101, -1, 103, 3109 -1, -1, -1, -1, -1, 109, 892, 111, -1, -1, 3110 -1, -1, -1, -1, 750, 1254, 591, -1, -1, -1, 3111 157, -1, 716, 1262, 1263, 1264, -1, -1, -1, 1188, 3112 550, 551, 552, -1, 1273, 1274, 730, 90, 91, 92, 3113 93, 94, 95, 96, 97, 98, 99, -1, 1287, -1, 3114 -1, -1, -1, -1, 346, -1, -1, -1, -1, 1457, 3115 1458, 636, 637, 638, -1, -1, -1, 1306, -1, -1, 3116 123, -1, -1, 593, -1, -1, -1, -1, 1317, 654, 3117 217, 346, -1, -1, -1, -1, -1, -1, -1, 975, 3118 -1, -1, -1, -1, -1, -1, -1, 672, -1, 10, 3119 11, 12, 13, 14, 809, -1, -1, -1, 683, -1, 3120 -1, -1, -1, -1, 689, -1, -1, -1, 255, -1, 3121 412, -1, 259, 1282, -1, -1, 37, -1, 822, -1, 3122 -1, -1, -1, -1, -1, 427, -1, -1, 275, -1, 3123 432, 1027, 1028, -1, 1030, 1031, -1, 412, 440, 60, 3124 725, 1390, -1, 728, 65, -1, 67, 68, 69, -1, 3125 -1, -1, 427, -1, 1050, 76, 77, 432, -1, -1, 3126 -1, -1, 1411, -1, 466, 440, -1, -1, 914, -1, 3127 -1, -1, -1, -1, -1, -1, -1, -1, -1, 764, 3128 101, -1, 484, -1, 486, 1434, -1, 1083, 1084, -1, 3129 111, 466, 1441, -1, -1, -1, 726, -1, 345, -1, 3130 -1, -1, -1, -1, -1, -1, -1, 922, -1, 484, 3131 -1, 486, -1, -1, -1, -1, -1, -1, -1, -1, 3132 805, -1, -1, -1, -1, 527, -1, -1, -1, -1, 3133 815, -1, -1, 818, -1, -1, 1485, -1, 823, -1, 3134 825, 771, -1, 1492, -1, 830, -1, -1, -1, -1, 3135 1146, -1, 527, -1, 3, 4, 5, 6, 7, 8, 3136 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3137 19, 20, 21, 22, 23, 24, 25, 26, 425, -1, 3138 29, 30, 31, -1, 999, -1, -1, 817, 37, 591, 3139 -1, -1, -1, 1189, -1, 442, -1, -1, -1, -1, 3140 1015, -1, -1, -1, -1, -1, -1, 892, 1012, -1, 3141 -1, 60, -1, 62, 1210, 64, 591, -1, 67, 68, 3142 -1, -1, -1, -1, -1, -1, -1, 1223, 475, 1225, 3143 -1, -1, -1, -1, 636, 637, 638, -1, -1, -1, 3144 -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 3145 14, -1, 654, -1, -1, -1, -1, 106, 1254, -1, 3146 -1, 636, 637, 638, -1, -1, 1262, 1263, 1264, -1, 3147 672, -1, -1, 37, -1, 1090, -1, 1273, 1274, 654, 3148 -1, 683, -1, -1, -1, -1, -1, 689, -1, -1, 3149 975, 1287, -1, 50, -1, 52, 60, 672, 55, 56, 3150 57, 65, 59, 67, 68, 69, -1, -1, 683, -1, 3151 1306, -1, 76, 77, 689, -1, -1, 74, -1, -1, 3152 -1, -1, -1, 725, -1, -1, 728, -1, -1, 86, 3153 87, -1, -1, -1, -1, -1, -1, 101, -1, 103, 3154 -1, -1, 1027, 1028, -1, 1030, 1031, 111, -1, 596, 3155 725, -1, -1, 728, -1, -1, -1, -1, -1, -1, 3156 1206, -1, 764, -1, -1, 1050, -1, -1, -1, -1, 3157 -1, -1, -1, -1, -1, -1, -1, 624, -1, 1009, 3158 -1, -1, 629, -1, 1188, -1, -1, -1, -1, 764, 3159 -1, -1, -1, -1, 1390, -1, -1, -1, 1083, 1084, 3160 -1, -1, -1, 805, -1, -1, -1, 10, 11, 12, 3161 13, 14, -1, 815, -1, -1, 818, -1, -1, -1, 3162 1050, 823, -1, 825, -1, -1, -1, -1, 830, -1, 3163 805, -1, -1, -1, 37, -1, -1, -1, 1434, -1, 3164 815, -1, -1, 818, -1, 1441, -1, -1, 823, -1, 3165 825, -1, -1, -1, -1, 830, -1, 60, -1, -1, 3166 -1, 1146, 65, -1, 67, 68, 69, -1, -1, 716, 3167 -1, -1, -1, 76, 77, -1, -1, -1, 1282, -1, 3168 -1, -1, -1, 730, -1, -1, -1, -1, -1, 1485, 3169 892, 10, 11, 12, 13, 14, -1, -1, 101, -1, 3170 103, -1, -1, 750, 1189, -1, -1, -1, 111, -1, 3171 -1, -1, -1, -1, -1, -1, -1, 892, 37, -1, 3172 -1, -1, -1, -1, -1, 1210, 1372, -1, -1, -1, 3173 -1, -1, -1, 1163, -1, -1, -1, -1, 1223, -1, 3174 1225, 60, -1, -1, -1, -1, 65, -1, 67, 68, 3175 69, -1, -1, -1, -1, -1, -1, 76, 77, -1, 3176 -1, -1, 25, 26, 27, -1, -1, -1, -1, 1254, 3177 -1, -1, -1, 975, -1, 822, -1, 1262, 1263, 1264, 3178 -1, -1, 101, 340, 341, -1, -1, -1, 1273, 1274, 3179 -1, -1, 111, -1, -1, 352, 353, -1, -1, -1, 3180 975, -1, 1287, -1, -1, -1, -1, -1, -1, -1, 3181 -1, -1, 25, 26, 27, -1, -1, -1, -1, -1, 3182 -1, 1306, -1, -1, 44, 1027, 1028, -1, 1030, 1031, 3183 -1, -1, -1, 96, -1, 98, -1, 10, 11, 12, 3184 13, 14, -1, 63, -1, -1, -1, -1, 1050, -1, 3185 -1, -1, 1027, 1028, -1, 1030, 1031, -1, -1, 122, 3186 -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, 3187 -1, -1, -1, -1, -1, 1050, -1, -1, -1, -1, 3188 -1, 1083, 1084, 96, -1, 98, -1, 60, -1, 109, 3189 -1, -1, 65, -1, 114, -1, 69, -1, -1, -1, 3190 -1, -1, -1, 76, 77, 1390, -1, -1, 1083, 1084, 3191 -1, -1, -1, -1, 177, -1, -1, -1, -1, -1, 3192 -1, -1, 185, 143, 187, 188, -1, -1, 101, 192, 3193 -1, 194, 195, 153, -1, -1, -1, 157, 111, -1, 3194 -1, -1, -1, -1, 1146, -1, -1, -1, -1, 1434, 3195 -1, -1, -1, -1, -1, 36, 1441, 38, -1, -1, 3196 -1, -1, -1, -1, 177, 1012, -1, -1, -1, -1, 3197 -1, 1146, -1, -1, 187, 188, -1, -1, 59, 192, 3198 -1, 194, 195, -1, 65, 205, -1, 1189, 69, -1, 3199 -1, 72, 73, 74, 75, 76, 77, 217, 79, 80, 3200 1485, 264, -1, -1, -1, -1, 87, -1, 1210, -1, 3201 -1, -1, -1, -1, 1189, 235, 236, -1, -1, -1, 3202 101, 1223, 103, 1225, -1, -1, -1, -1, -1, 110, 3203 111, 112, 113, 114, 115, 1210, -1, -1, -1, 259, 3204 -1, -1, -1, 124, -1, -1, -1, 267, 1223, -1, 3205 1225, -1, 1254, -1, -1, -1, -1, -1, -1, -1, 3206 1262, 1263, 1264, -1, -1, -1, -1, -1, -1, -1, 3207 290, 1273, 1274, 293, -1, -1, -1, 7, -1, 1254, 3208 10, 11, 12, 13, 14, 1287, -1, 1262, 1263, 1264, 3209 -1, -1, -1, -1, -1, -1, -1, -1, 1273, 1274, 3210 -1, -1, -1, -1, 1306, -1, 36, 37, 38, -1, 3211 -1, -1, 1287, -1, -1, -1, -1, -1, -1, -1, 3212 340, -1, -1, -1, -1, 345, -1, -1, -1, 59, 3213 60, 1306, -1, -1, -1, 65, -1, -1, -1, 69, 3214 -1, 1188, 72, 73, 74, 75, 76, 77, -1, 79, 3215 80, -1, -1, -1, -1, -1, -1, 87, -1, -1, 3216 717, -1, 719, -1, -1, -1, -1, -1, -1, 726, 3217 727, 101, -1, 103, 731, -1, -1, -1, -1, -1, 3218 110, 111, 112, 113, 114, 115, 743, -1, 1390, -1, 3219 -1, 748, -1, -1, -1, -1, -1, -1, -1, -1, 3220 420, 421, -1, -1, -1, -1, -1, 427, -1, -1, 3221 -1, -1, -1, -1, -1, 1390, 773, -1, -1, -1, 3222 -1, -1, -1, -1, -1, -1, -1, -1, 448, -1, 3223 -1, 451, 1434, -1, -1, 1282, -1, 457, -1, 1441, 2867 1, 236, 0, 0, 42, 113, 693, 516, 183, 165, 2868 166, 42, 42, 1, 182, 182, 201, 539, 693, 182, 2869 182, 216, 276, 182, 651, 453, 0, 1, 625, 459, 2870 182, 182, 605, 31, 31, 1055, 183, 896, 496, 0, 2871 693, 452, 500, 992, 42, 341, 44, 44, 607, 1410, 2872 1329, 605, 345, 896, 414, 0, 54, 31, 345, 607, 2873 360, 1036, 60, 60, 364, 63, 63, 42, 66, 66, 2874 31, 0, 1, 999, 434, 103, 54, 31, 66, 575, 2875 605, 70, 442, 774, 771, 605, 31, 1, 263, 63, 2876 198, 718, 66, 1414, 262, 262, 771, 754, 61, 262, 2877 262, 184, 31, 262, 1035, 1036, 104, 605, 80, 107, 2878 262, 262, 42, 93, 525, 113, 263, 605, 771, 37, 2879 605, 42, 1048, 1484, 152, 49, 104, 37, 27, 107, 2880 44, 37, 70, 80, 70, 253, 108, 66, 0, 42, 2881 43, 130, 694, 0, 182, 80, 144, 144, 128, 42, 2882 43, 182, 182, 1432, 152, 608, 640, 641, 37, 157, 2883 157, 614, 109, 70, 716, 107, 739, 130, 44, 31, 2884 639, 640, 641, 657, 31, 258, 259, 76, 1067, 1068, 2885 42, 117, 44, 107, 182, 183, 183, 486, 657, 103, 2886 486, 1512, 130, 42, 43, 109, 1517, 107, 60, 109, 2887 198, 63, 109, 109, 66, 492, 63, 182, 206, 206, 2888 113, 406, 1055, 83, 739, 105, 1537, 215, 29, 112, 2889 218, 218, 80, 1544, 262, 107, 80, 402, 107, 143, 2890 109, 262, 262, 109, 70, 62, 108, 215, 152, 129, 2891 114, 111, 468, 115, 218, 1134, 1466, 731, 249, 225, 2892 248, 248, 182, 107, 739, 402, 130, 115, 1233, 0, 2893 833, 182, 731, 112, 262, 263, 263, 143, 244, 80, 2894 81, 269, 11, 109, 248, 1295, 70, 452, 276, 833, 2895 107, 1501, 144, 1503, 392, 713, 845, 248, 202, 290, 2896 31, 269, 206, 593, 248, 157, 414, 845, 276, 1248, 2897 596, 107, 37, 248, 494, 452, 94, 1282, 833, 484, 2898 338, 1002, 420, 833, 607, 109, 434, 813, 426, 248, 2899 182, 183, 236, 237, 442, 37, 686, 325, 325, 625, 2900 206, 37, 70, 121, 630, 833, 636, 484, 822, 367, 2901 639, 640, 641, 80, 206, 833, 344, 345, 833, 114, 2902 1281, 1282, 94, 822, 268, 110, 218, 271, 657, 1218, 2903 236, 218, 107, 361, 110, 130, 344, 365, 114, 67, 2904 107, 109, 107, 71, 109, 1218, 74, 291, 76, 121, 2905 294, 108, 835, 361, 129, 83, 248, 365, 115, 88, 2906 89, 248, 268, 692, 392, 107, 692, 109, 112, 953, 2907 262, 107, 129, 109, 402, 402, 954, 1064, 80, 422, 2908 423, 4, 5, 6, 7, 8, 9, 1014, 294, 609, 2909 972, 114, 420, 613, 338, 124, 125, 341, 426, 240, 2910 428, 1406, 731, 953, 1517, 1455, 108, 1517, 70, 32, 2911 72, 73, 1462, 115, 634, 108, 360, 110, 638, 675, 2912 364, 114, 1295, 367, 452, 953, 70, 1537, 72, 73, 2913 3, 1544, 108, 325, 1544, 341, 129, 130, 767, 115, 2914 471, 767, 1398, 1399, 67, 1406, 69, 3, 476, 70, 2915 112, 72, 73, 345, 114, 498, 484, 484, 997, 346, 2916 488, 488, 922, 107, 492, 1515, 652, 107, 112, 753, 2917 528, 113, 114, 516, 962, 0, 1133, 248, 422, 423, 2918 108, 209, 253, 0, 488, 516, 114, 129, 109, 0, 2919 695, 932, 129, 822, 824, 693, 693, 488, 828, 940, 2920 693, 693, 533, 114, 693, 536, 450, 538, 539, 453, 2921 402, 693, 693, 488, 31, 459, 422, 423, 695, 130, 2922 896, 659, 845, 107, 108, 109, 114, 471, 845, 488, 2923 291, 1109, 107, 114, 70, 376, 72, 73, 686, 582, 2924 1023, 1024, 130, 114, 985, 1127, 70, 107, 661, 130, 2925 74, 114, 496, 809, 498, 586, 500, 81, 82, 130, 2926 452, 108, 108, 819, 107, 593, 510, 130, 114, 107, 2927 514, 107, 516, 517, 63, 70, 112, 605, 834, 607, 2928 728, 114, 1455, 107, 528, 109, 81, 82, 918, 1462, 2929 477, 80, 498, 117, 107, 114, 488, 130, 626, 114, 2930 492, 488, 1184, 1185, 127, 110, 129, 114, 1295, 114, 2931 516, 130, 107, 78, 642, 130, 457, 108, 626, 594, 2932 348, 462, 350, 130, 114, 114, 1487, 658, 656, 660, 2933 107, 659, 1493, 691, 642, 0, 1, 1095, 582, 114, 2934 130, 958, 1515, 414, 109, 108, 111, 867, 656, 593, 2935 115, 114, 596, 1514, 495, 130, 497, 882, 1519, 114, 2936 78, 422, 423, 434, 108, 693, 31, 695, 157, 110, 2937 107, 442, 109, 114, 108, 130, 582, 108, 903, 44, 2938 117, 625, 1058, 278, 108, 1372, 630, 107, 1014, 109, 2939 596, 109, 636, 111, 107, 726, 109, 115, 107, 964, 2940 109, 66, 888, 108, 117, 107, 1035, 109, 766, 114, 2941 438, 739, 740, 605, 108, 607, 107, 488, 109, 625, 2942 114, 110, 108, 107, 630, 753, 117, 932, 114, 218, 2943 70, 248, 72, 73, 74, 940, 253, 108, 103, 959, 2944 627, 81, 82, 114, 510, 753, 108, 691, 514, 510, 2945 107, 517, 114, 514, 108, 932, 517, 110, 108, 1311, 2946 114, 114, 108, 940, 114, 113, 1096, 256, 114, 713, 2947 107, 260, 1459, 107, 1461, 117, 1032, 1033, 108, 144, 2948 122, 123, 110, 108, 114, 130, 114, 152, 153, 114, 2949 4, 5, 6, 7, 8, 9, 107, 108, 109, 743, 2950 62, 693, 70, 695, 1521, 833, 74, 648, 110, 108, 2951 571, 1393, 1027, 81, 82, 114, 1521, 845, 183, 108, 2952 108, 107, 766, 109, 1153, 114, 114, 1153, 1410, 1516, 2953 107, 108, 719, 198, 1090, 1091, 201, 202, 1521, 107, 2954 1125, 206, 1218, 44, 1129, 130, 733, 739, 740, 117, 2955 83, 84, 85, 67, 829, 69, 107, 346, 70, 112, 2956 72, 73, 227, 108, 1050, 896, 231, 708, 233, 114, 2957 107, 108, 109, 714, 107, 130, 109, 242, 111, 112, 2958 824, 108, 70, 248, 828, 108, 74, 114, 253, 130, 2959 918, 114, 896, 81, 82, 119, 120, 414, 263, 86, 2960 87, 1483, 1484, 107, 932, 109, 271, 1233, 109, 107, 2961 108, 109, 940, 508, 70, 686, 130, 434, 107, 107, 2962 109, 896, 90, 91, 44, 442, 56, 57, 58, 117, 2963 958, 10, 11, 12, 13, 14, 1312, 896, 427, 826, 2964 60, 833, 107, 63, 109, 963, 66, 70, 112, 72, 2965 73, 74, 1281, 845, 1254, 1255, 1256, 728, 37, 963, 2966 107, 112, 109, 994, 107, 107, 997, 109, 999, 486, 2967 80, 488, 107, 338, 918, 1231, 341, 110, 922, 1117, 2968 80, 698, 347, 700, 113, 114, 65, 118, 477, 126, 2969 1366, 108, 109, 1369, 92, 360, 114, 115, 109, 364, 2970 56, 57, 367, 127, 963, 206, 1262, 113, 114, 896, 2971 560, 561, 562, 563, 1270, 1271, 1272, 1048, 962, 963, 2972 964, 114, 115, 107, 144, 114, 115, 1058, 42, 43, 2973 1061, 1062, 1063, 129, 556, 557, 237, 157, 1414, 107, 2974 932, 110, 108, 1419, 558, 559, 110, 888, 940, 414, 2975 108, 1055, 564, 565, 895, 1496, 108, 108, 964, 83, 2976 84, 85, 1318, 183, 429, 108, 958, 268, 108, 434, 2977 1014, 107, 110, 1449, 109, 114, 671, 442, 110, 129, 2978 1055, 112, 107, 107, 110, 109, 206, 111, 112, 1117, 2979 291, 108, 108, 294, 115, 110, 1055, 110, 218, 110, 2980 110, 28, 114, 468, 108, 1546, 471, 115, 1014, 108, 2981 599, 112, 110, 50, 694, 52, 113, 113, 55, 56, 2982 57, 486, 59, 488, 115, 896, 108, 113, 107, 114, 2983 1017, 496, 108, 108, 108, 500, 716, 74, 627, 108, 2984 130, 108, 115, 632, 108, 986, 114, 108, 108, 86, 2985 87, 1095, 1096, 108, 108, 1213, 108, 108, 108, 1535, 2986 108, 108, 757, 528, 529, 1541, 108, 108, 1055, 686, 2987 70, 28, 72, 73, 74, 692, 1552, 108, 1196, 108, 2988 1556, 81, 82, 113, 129, 1213, 3, 1218, 110, 108, 2989 108, 1195, 1196, 10, 11, 12, 13, 14, 108, 113, 2990 10, 11, 12, 13, 14, 325, 108, 107, 114, 109, 2991 575, 728, 110, 110, 1218, 115, 108, 117, 108, 1237, 2992 37, 114, 108, 1254, 1255, 1256, 806, 37, 593, 594, 2993 719, 596, 115, 1237, 114, 112, 114, 1196, 110, 108, 2994 114, 114, 607, 1218, 733, 1086, 108, 108, 65, 450, 2995 767, 1389, 453, 107, 110, 65, 107, 107, 459, 1218, 2996 625, 107, 107, 110, 130, 630, 1531, 115, 108, 1213, 2997 113, 636, 108, 108, 639, 640, 641, 110, 1237, 113, 2998 1311, 1312, 402, 127, 1055, 112, 1290, 110, 130, 114, 2999 114, 1295, 657, 1237, 110, 108, 108, 107, 45, 109, 3000 108, 110, 108, 110, 884, 110, 110, 117, 1195, 510, 3001 675, 1329, 110, 514, 110, 130, 517, 1522, 0, 130, 3002 1295, 686, 113, 1521, 1521, 1329, 691, 692, 1521, 1521, 3003 695, 1218, 1521, 130, 108, 1366, 1295, 826, 1369, 1521, 3004 1521, 1546, 130, 130, 63, 1522, 113, 115, 108, 31, 3005 1191, 110, 113, 110, 110, 110, 110, 110, 1496, 110, 3006 1388, 1389, 110, 728, 108, 108, 731, 1398, 1399, 1546, 3007 1329, 110, 110, 107, 107, 740, 107, 58, 743, 896, 3008 1388, 108, 108, 1414, 66, 1329, 115, 70, 1419, 72, 3009 73, 74, 972, 130, 112, 114, 110, 110, 81, 82, 3010 108, 766, 767, 1290, 341, 342, 1437, 772, 1295, 110, 3011 108, 107, 107, 52, 1432, 94, 353, 354, 1449, 94, 3012 130, 113, 1002, 110, 107, 114, 109, 40, 1432, 115, 3013 108, 108, 108, 130, 117, 108, 1197, 1198, 157, 1200, 3014 130, 108, 108, 94, 809, 1206, 94, 1218, 1209, 108, 3015 130, 1455, 108, 1521, 819, 115, 95, 822, 1462, 824, 3016 1521, 1521, 827, 828, 829, 130, 1497, 130, 1496, 834, 3017 108, 153, 1052, 1432, 108, 1506, 113, 110, 110, 844, 3018 1455, 1512, 107, 130, 130, 113, 1517, 1462, 1432, 113, 3019 108, 108, 108, 1521, 1522, 1522, 1455, 108, 1070, 218, 3020 130, 566, 569, 1462, 1535, 70, 1537, 72, 73, 74, 3021 1541, 1515, 713, 1544, 567, 570, 81, 82, 1546, 1546, 3022 1464, 1552, 1466, 568, 1295, 1556, 54, 1218, 1017, 1484, 3023 1125, 896, 1374, 1556, 1129, 1130, 468, 256, 1055, 1130, 3024 1515, 260, 107, 1305, 109, 227, 1334, 1127, 280, 1462, 3025 940, 190, 117, 918, 1086, 450, 1515, 1501, 462, 1503, 3026 700, 293, 294, 450, 942, 986, 248, 586, 1455, 888, 3027 653, 253, 743, 305, 213, 1462, 104, 960, 1237, 107, 3028 488, 753, 574, -1, 223, 574, 574, 1531, -1, 954, 3029 4, 5, 6, 7, 8, 9, -1, 962, 963, -1, 3030 -1, -1, -1, -1, 1184, 1185, -1, 1368, -1, 341, 3031 -1, -1, -1, -1, 979, -1, -1, -1, -1, -1, 3032 -1, 675, -1, -1, 152, 1531, -1, 346, 1515, 1521, 3033 10, 11, 12, 13, 14, -1, 1153, -1, -1, 10, 3034 11, 12, 13, 14, -1, 377, -1, -1, 1243, 1014, 3035 -1, -1, 291, 67, -1, 69, -1, 37, -1, -1, 3036 -1, -1, 1027, -1, -1, 347, 37, 1032, 1033, -1, 3037 1035, 1036, -1, -1, 0, 10, 11, 12, 13, 14, 3038 -1, -1, -1, -1, 1455, 65, -1, 215, -1, -1, 3039 1055, 1462, -1, -1, 65, -1, -1, -1, -1, 70, 3040 -1, 1218, 37, 74, -1, 31, 1195, -1, 427, -1, 3041 81, 82, -1, -1, -1, -1, 1233, -1, -1, -1, 3042 -1, 922, -1, -1, -1, 1090, 1091, 107, -1, 109, 3043 65, 1096, 414, -1, -1, 1330, 107, 117, -1, 1334, 3044 66, 269, -1, 675, 1515, -1, 117, 429, 276, -1, 3045 -1, -1, 434, -1, -1, 809, -1, -1, 477, -1, 3046 442, -1, -1, -1, -1, 819, -1, -1, -1, -1, 3047 -1, -1, 107, -1, 109, -1, -1, -1, 1295, -1, 3048 834, -1, 117, 720, -1, 722, 468, 70, 1153, 72, 3049 73, 74, 729, 730, -1, 0, 1, 734, 81, 82, 3050 439, 1290, -1, -1, 486, -1, 488, -1, 70, 746, 3051 72, 73, 74, 1393, 751, -1, 344, -1, -1, 81, 3052 82, 553, 554, 555, 107, -1, 31, 153, -1, -1, 3053 1410, 1196, 63, 361, 473, -1, -1, 365, -1, 776, 3054 -1, 1436, 73, -1, -1, 107, -1, 529, 1213, -1, 3055 -1, -1, -1, 1218, -1, 117, -1, -1, 63, -1, 3056 -1, 66, -1, -1, 596, -1, 1231, -1, 1233, -1, 3057 -1, 510, 1237, -1, -1, 514, -1, 809, 517, -1, 3058 599, -1, -1, 114, 821, -1, -1, 819, -1, -1, 3059 -1, -1, -1, -1, 1095, -1, -1, 1262, -1, -1, 3060 428, -1, 834, 1483, 1484, 1270, 1271, 1272, 627, -1, 3061 -1, -1, 594, 632, -1, -1, 1281, 1282, -1, -1, 3062 -1, -1, 248, -1, -1, -1, 157, 253, -1, -1, 3063 1295, -1, -1, -1, -1, -1, -1, -1, 1455, -1, 3064 -1, 878, 879, 880, 881, 1462, 883, -1, 153, -1, 3065 -1, -1, -1, 1318, -1, -1, -1, 639, 640, 641, 3066 -1, -1, 899, -1, 1329, -1, -1, 10, 11, 12, 3067 13, 14, -1, -1, -1, 657, 913, -1, 1032, 1033, 3068 70, -1, 72, 73, 74, -1, -1, 218, -1, -1, 3069 -1, 81, 82, 675, 37, -1, -1, 729, 1515, -1, 3070 719, -1, -1, -1, 686, -1, -1, -1, -1, -1, 3071 692, -1, -1, 218, 733, 952, -1, 107, -1, -1, 3072 -1, 347, 65, -1, -1, 256, -1, 70, -1, 260, 3073 -1, 74, -1, -1, -1, 674, 1090, 1091, 81, 82, 3074 -1, 1406, 774, 248, 683, 276, 728, -1, 687, 731, 3075 -1, -1, -1, -1, 991, -1, 0, -1, -1, -1, 3076 -1, 998, -1, -1, 107, 593, 1003, 1432, -1, -1, 3077 -1, 1008, -1, 1010, 117, -1, -1, 1014, 1015, 1016, 3078 -1, -1, 1019, -1, -1, 767, -1, 31, 414, 821, 3079 1455, 1028, -1, -1, -1, -1, -1, 1462, 626, -1, 3080 1032, 1033, -1, 429, -1, -1, -1, 826, 434, 1046, 3081 1047, -1, -1, -1, 642, 346, 442, -1, -1, -1, 3082 -1, -1, 66, -1, -1, -1, -1, 809, 656, -1, 3083 -1, -1, -1, -1, -1, -1, 1073, 819, -1, 1076, 3084 822, -1, 468, -1, -1, 827, -1, 829, -1, -1, 3085 1515, -1, 834, -1, -1, -1, -1, 1522, 1090, 1091, 3086 486, 3, 488, 70, -1, 72, 73, 74, 10, 11, 3087 12, 13, 14, -1, 81, 82, -1, 1114, -1, -1, 3088 -1, -1, -1, 1120, 1121, -1, -1, -1, -1, -1, 3089 -1, -1, -1, -1, 1131, 37, 427, -1, -1, 1136, 3090 107, -1, 1139, 529, 1141, -1, -1, 1144, 1262, 153, 3091 117, -1, 0, 444, 896, -1, 1270, 1271, 1272, -1, 3092 1157, -1, -1, 65, 429, 753, -1, -1, -1, -1, 3093 -1, -1, -1, 1170, -1, 1172, 1173, 1174, 1175, -1, 3094 -1, -1, -1, 31, -1, -1, 477, -1, -1, -1, 3095 -1, 1188, -1, 1190, -1, -1, -1, 1194, -1, -1, 3096 -1, -1, -1, 1464, 1318, 1466, -1, -1, 594, -1, 3097 -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, 3098 -1, 920, 1014, 488, -1, 3, 1223, 1224, -1, -1, 3099 -1, -1, 10, 11, 12, 13, 14, 979, 1017, 1231, 3100 1501, -1, 1503, -1, 248, 186, -1, -1, -1, 253, 3101 -1, -1, 193, 639, 640, 641, -1, -1, -1, 37, 3102 -1, -1, -1, 1055, 529, -1, -1, -1, -1, -1, 3103 1262, 657, -1, -1, -1, -1, 1273, 1274, 1270, 1271, 3104 1272, -1, -1, -1, -1, -1, 1283, 65, -1, 675, 3105 1032, 1033, -1, 1035, 1036, -1, -1, -1, -1, -1, 3106 686, -1, -1, -1, -1, 153, 692, -1, 599, -1, 3107 -1, -1, -1, 1055, -1, -1, -1, -1, -1, -1, 3108 -1, -1, -1, -1, 265, -1, 1318, -1, -1, 594, 3109 918, -1, -1, -1, -1, -1, 627, -1, 1335, -1, 3110 -1, 632, 728, 347, -1, 731, -1, -1, 1090, 1091, 3111 1347, -1, 1349, 1350, 1351, -1, -1, 70, -1, 72, 3112 73, 74, -1, -1, 1361, -1, -1, 1066, 81, 82, 3113 -1, -1, -1, 1370, 639, 640, 641, -1, 1170, 320, 3114 -1, 767, -1, -1, -1, -1, -1, 328, -1, 1386, 3115 331, -1, 657, -1, 107, -1, 109, -1, -1, -1, 3116 248, -1, -1, -1, 117, 253, -1, -1, -1, -1, 3117 414, 1153, -1, -1, -1, -1, 1195, -1, -1, -1, 3118 -1, -1, -1, 809, -1, 429, -1, -1, 719, -1, 3119 434, -1, -1, 819, -1, -1, 822, -1, 442, -1, 3120 -1, 827, 733, 829, -1, 1442, 1443, -1, 834, -1, 3121 -1, -1, -1, 394, 1196, -1, -1, 398, 1455, -1, 3122 -1, -1, 753, -1, 468, 1462, 731, -1, -1, -1, 3123 -1, -1, -1, -1, -1, -1, 1218, -1, -1, -1, 3124 -1, -1, 486, -1, 488, -1, -1, -1, -1, 1231, 3125 -1, 1233, -1, -1, -1, -1, -1, -1, 1495, 347, 3126 -1, -1, 1499, -1, -1, -1, -1, -1, -1, -1, 3127 896, 1290, -1, -1, -1, -1, -1, -1, -1, -1, 3128 1262, -1, -1, -1, -1, 529, -1, -1, 1270, 1271, 3129 1272, 1528, -1, 1530, -1, 826, -1, -1, -1, 1281, 3130 1282, -1, 483, -1, 10, 11, 12, 13, 14, -1, 3131 -1, -1, -1, 1295, -1, -1, -1, 822, -1, -1, 3132 -1, 1558, 1559, -1, 829, -1, 414, -1, -1, 1566, 3133 1567, 37, -1, -1, -1, -1, 1318, -1, -1, -1, 3134 -1, 429, -1, -1, -1, -1, 434, -1, -1, -1, 3135 594, -1, -1, 979, 442, -1, -1, -1, -1, 65, 3136 -1, -1, -1, -1, 70, 1304, 72, 73, 74, -1, 3137 -1, -1, -1, -1, -1, 81, 82, -1, -1, -1, 3138 468, -1, -1, -1, -1, 1213, -1, -1, -1, -1, 3139 -1, 896, -1, 574, 575, 639, 640, 641, 486, -1, 3140 488, 107, -1, 109, -1, -1, 1032, 1033, -1, 1035, 3141 1036, 117, -1, 657, -1, -1, -1, -1, -1, -1, 3142 -1, -1, -1, -1, 1406, -1, -1, -1, -1, 1055, 3143 -1, 675, -1, -1, -1, -1, -1, -1, -1, -1, 3144 -1, 529, 686, -1, -1, -1, -1, -1, 692, 10, 3145 11, 12, 13, 14, -1, -1, -1, -1, 963, -1, 3146 -1, -1, -1, -1, 1090, 1091, -1, 25, 26, 27, 3147 -1, -1, -1, 1455, 979, -1, 37, -1, -1, -1, 3148 1462, 662, -1, -1, 728, 666, 1017, 731, 95, 96, 3149 97, 98, 99, 100, 101, 102, 103, 104, -1, -1, 3150 -1, -1, -1, -1, 65, -1, 594, -1, -1, 70, 3151 -1, 72, 73, 74, -1, -1, -1, -1, 699, -1, 3152 81, 82, 129, 767, 1463, -1, 1465, 1153, -1, -1, 3153 1035, 1036, -1, 1515, -1, -1, -1, -1, 96, -1, 3154 98, -1, -1, -1, -1, -1, 107, -1, 109, -1, 3155 1055, 639, 640, 641, -1, -1, 117, -1, -1, -1, 3156 1388, 1500, -1, 1502, 122, 809, -1, -1, -1, 657, 3157 1196, -1, -1, -1, -1, 819, -1, -1, 822, -1, 3158 -1, -1, -1, 827, -1, 829, -1, 675, -1, -1, 3159 834, -1, 1218, -1, -1, -1, -1, -1, 686, 10, 3160 11, 12, 13, 14, 692, 1231, 1545, 1233, 1547, -1, 3161 -1, -1, 10, 11, 12, 13, 14, -1, -1, -1, 3162 178, 1560, 1561, -1, -1, -1, 37, -1, 186, -1, 3163 188, 189, 813, -1, -1, 193, 1262, 195, 196, 37, 3164 728, -1, -1, 731, 1270, 1271, 1272, -1, -1, 25, 3165 26, 27, 896, -1, 65, 1281, 1282, -1, -1, 70, 3166 -1, 72, 73, 74, 1195, -1, -1, 65, -1, 1295, 3167 81, 82, 70, -1, 72, 73, 74, -1, -1, 767, 3168 -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 3169 1195, 1196, 1318, -1, -1, -1, 107, -1, 109, -1, 3170 -1, -1, -1, -1, -1, -1, 117, 265, -1, 107, 3171 -1, -1, -1, 1218, -1, -1, -1, -1, -1, 117, 3172 96, 809, 98, -1, -1, -1, -1, -1, 63, -1, 3173 -1, 819, 1237, -1, 822, 979, -1, -1, 73, 827, 3174 75, 829, 77, -1, 44, 926, 834, -1, -1, 84, 3175 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1290, 3176 -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, 3177 10, 11, 12, 13, 14, -1, 1281, 1282, -1, 114, 3178 1406, 116, 117, 118, -1, 1290, -1, -1, 1032, 1033, 3179 1295, 1035, 1036, -1, -1, -1, -1, 37, -1, -1, 3180 -1, -1, 178, -1, -1, -1, -1, -1, 896, 109, 3181 -1, 1055, 188, 189, 114, -1, -1, 193, -1, 195, 3182 196, -1, 157, 1004, 1329, 65, -1, -1, -1, 1455, 3183 70, -1, 72, 73, 74, -1, 1462, -1, -1, 1020, 3184 -1, 81, 82, 143, -1, -1, 1090, 1091, -1, -1, 3185 -1, -1, -1, 153, -1, -1, -1, 157, -1, -1, 3186 -1, -1, -1, -1, -1, -1, -1, 107, -1, -1, 3187 -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, 3188 -1, -1, -1, 218, -1, 220, 221, 222, -1, 1515, 3189 -1, 979, -1, -1, -1, -1, -1, -1, -1, -1, 3190 -1, 1406, -1, -1, -1, -1, 206, -1, -1, 1153, 3191 -1, -1, -1, -1, -1, -1, 1097, -1, 218, -1, 3192 -1, 256, -1, -1, -1, 260, -1, 1432, -1, -1, 3193 -1, -1, -1, -1, -1, -1, 236, 237, -1, -1, 3194 -1, 276, -1, -1, 1032, 1033, -1, 1035, 1036, -1, 3195 1455, -1, 1196, -1, -1, -1, -1, 1462, -1, -1, 3196 260, -1, -1, -1, -1, -1, -1, 1055, 268, -1, 3197 -1, -1, -1, -1, 1218, -1, -1, -1, -1, -1, 3198 -1, -1, -1, -1, -1, -1, -1, 1231, -1, 1233, 3199 325, 291, -1, -1, 294, -1, -1, -1, -1, -1, 3200 -1, -1, 1090, 1091, -1, -1, -1, -1, -1, -1, 3201 1515, 346, -1, -1, -1, -1, 351, 352, 1262, -1, 3202 578, 579, -1, -1, 359, -1, 1270, 1271, 1272, -1, 3203 -1, -1, -1, -1, -1, -1, -1, 1281, 1282, -1, 3204 -1, 341, -1, -1, -1, -1, 346, -1, -1, -1, 3205 608, 1295, -1, 611, 612, 36, 614, 38, 616, 617, 3206 -1, -1, -1, 621, 622, 1153, -1, 402, -1, -1, 3207 -1, -1, -1, -1, 1318, -1, -1, -1, -1, -1, 3208 -1, -1, -1, 64, -1, 420, -1, -1, -1, 70, 3209 425, -1, 427, 74, -1, -1, 77, 78, 79, 80, 3210 81, 82, -1, 84, 85, -1, -1, -1, 1196, 444, 3211 -1, 92, 447, 448, -1, -1, -1, -1, -1, -1, 3212 -1, -1, 422, 423, -1, -1, 107, -1, 463, 429, 3213 1218, -1, -1, -1, -1, 116, 117, 118, 119, 120, 3214 121, 699, 477, 1231, -1, 1233, 704, 705, -1, 484, 3215 450, -1, 710, 453, -1, -1, -1, -1, -1, 459, 3216 -1, -1, 1406, -1, -1, -1, -1, -1, -1, -1, 3217 -1, -1, -1, -1, 1262, -1, -1, -1, -1, -1, 3218 -1, -1, 1270, 1271, 1272, -1, 486, -1, -1, -1, 3219 -1, -1, -1, 1281, 1282, -1, -1, -1, 498, -1, 3220 -1, -1, 578, 579, -1, -1, 43, 1295, -1, -1, 3221 510, 1455, -1, -1, 514, -1, 516, 517, 1462, -1, 3222 -1, -1, -1, -1, -1, -1, -1, -1, -1, 529, 3223 1318, -1, 608, -1, -1, 611, 612, -1, 614, -1, 3224 616, 617, -1, -1, -1, 621, 622, -1, -1, -1, 3225 -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, 3226 -1, -1, 99, -1, 599, -1, -1, -1, -1, -1, 3227 -1, 1515, -1, -1, -1, -1, -1, -1, -1, -1, 3228 -1, -1, 582, -1, -1, -1, -1, -1, -1, -1, 3229 -1, -1, 627, -1, 594, -1, 596, 632, -1, 599, 3224 3230 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3225 20, 21, 22, 23, 24, 25, 26, 27, -1, 1434, 3226 817, -1, -1, -1, 484, -1, 1441, 37, -1, -1, 3227 -1, -1, -1, -1, -1, -1, 496, -1, -1, -1, 3228 -1, -1, -1, 1485, -1, -1, -1, -1, 508, -1, 3229 60, -1, 512, -1, 514, 515, -1, -1, -1, -1, 3230 -1, 71, -1, -1, -1, -1, -1, 527, -1, -1, 3231 1485, -1, 575, 576, -1, -1, -1, 874, 875, 876, 3232 877, -1, 879, -1, -1, -1, -1, -1, -1, -1, 3233 -1, -1, -1, -1, -1, -1, -1, -1, 895, -1, 3234 -1, -1, 605, -1, -1, 608, 609, -1, 611, -1, 3235 613, 614, 909, -1, -1, 618, 619, -1, -1, 579, 3236 -1, -1, 575, 576, -1, -1, -1, -1, -1, -1, 3237 -1, 591, -1, 593, -1, -1, 596, -1, -1, -1, 3231 20, 21, 22, 23, 24, 25, 26, 154, 1406, 29, 3232 30, 31, -1, -1, -1, 625, -1, 37, 704, 705, 3233 630, 168, -1, -1, 710, -1, -1, -1, -1, 639, 3234 640, 641, -1, -1, -1, -1, -1, -1, -1, -1, 3235 -1, -1, -1, -1, 191, 65, -1, 657, -1, -1, 3236 70, -1, 72, 73, 74, -1, -1, 1455, 205, -1, 3237 -1, 81, 82, -1, 1462, -1, -1, 214, -1, -1, 3238 -1, -1, -1, -1, 719, -1, -1, 224, -1, -1, 3239 -1, -1, 692, -1, -1, -1, -1, 107, 733, 109, 3240 -1, 36, -1, 38, -1, -1, -1, 117, -1, -1, 3241 -1, -1, 249, 713, -1, -1, -1, 254, 753, -1, 3242 -1, -1, -1, -1, -1, -1, -1, 1515, -1, 64, 3243 267, 731, -1, 733, -1, 70, 273, -1, 275, 74, 3244 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3245 85, -1, -1, -1, -1, 292, -1, 92, -1, -1, 3246 -1, -1, -1, -1, -1, -1, -1, 767, -1, -1, 3247 -1, -1, 107, -1, 109, -1, -1, 112, 813, -1, 3248 -1, 116, 117, 118, 119, 120, 121, -1, -1, -1, 3249 -1, 826, -1, -1, -1, -1, -1, -1, 335, -1, 3250 -1, -1, -1, 340, -1, -1, -1, -1, -1, -1, 3251 845, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3252 -1, -1, 822, -1, -1, -1, 826, -1, -1, 829, 3253 -1, 368, -1, -1, 1092, 372, 373, -1, 375, -1, 3254 -1, -1, -1, -1, -1, 382, 383, -1, 385, 386, 3255 -1, 388, -1, 390, -1, -1, -1, -1, -1, -1, 3256 -1, 7, -1, -1, 10, 11, 12, 13, 14, -1, 3257 407, -1, -1, -1, -1, -1, -1, -1, 415, -1, 3238 3258 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3239 -1, 948, 605, -1, -1, 608, 609, -1, 611, -1, 3240 613, 614, 622, -1, -1, 618, 619, 627, -1, -1, 3241 -1, -1, -1, -1, -1, -1, 636, 637, 638, -1, 3259 36, 37, 38, -1, -1, -1, -1, 932, -1, -1, 3260 -1, -1, -1, 440, -1, -1, -1, -1, -1, -1, 3261 -1, -1, -1, -1, 451, -1, -1, -1, 64, 65, 3262 -1, -1, 922, 958, 70, -1, -1, -1, 74, -1, 3263 -1, 77, 78, 79, 80, 81, 82, 474, 84, 85, 3264 -1, -1, -1, 480, -1, -1, 92, -1, 485, -1, 3265 985, -1, -1, -1, -1, -1, -1, 1215, -1, -1, 3266 -1, 107, -1, 109, 964, -1, -1, -1, -1, -1, 3267 116, 117, 118, 119, 120, 121, -1, -1, -1, 979, 3268 -1, -1, 1017, -1, 521, -1, -1, -1, -1, -1, 3269 -1, -1, -1, 1028, -1, -1, -1, -1, -1, -1, 3270 537, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3271 -1, -1, -1, -1, 1014, -1, 1092, -1, -1, 7, 3272 -1, -1, 10, 11, 12, 13, 14, -1, -1, -1, 3273 -1, -1, -1, -1, -1, 1035, 1036, 574, -1, -1, 3274 -1, -1, -1, -1, -1, 143, 583, -1, 36, 37, 3275 38, -1, -1, 590, -1, 153, -1, -1, 595, -1, 3276 -1, -1, -1, -1, -1, -1, -1, 165, 166, 606, 3277 -1, -1, -1, -1, 1109, -1, 64, 65, -1, -1, 3278 -1, -1, 70, -1, -1, -1, 74, -1, -1, 77, 3279 78, 79, 80, 81, 82, 1095, 84, 85, -1, -1, 3280 -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, 3281 647, -1, -1, -1, -1, -1, -1, -1, -1, 107, 3282 -1, 109, -1, -1, -1, -1, -1, -1, 116, 117, 3283 118, 119, 120, 121, -1, -1, -1, -1, 236, 1215, 3284 -1, -1, -1, -1, -1, 682, -1, 152, 153, -1, 3285 -1, -1, -1, 1153, -1, -1, -1, -1, -1, -1, 3286 1195, -1, -1, 261, 10, 11, 12, 13, 14, 15, 3287 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3288 26, 186, -1, 29, 30, 31, -1, -1, 193, -1, 3289 -1, 37, -1, -1, -1, 1195, -1, -1, -1, -1, 3290 737, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3291 747, 748, -1, -1, -1, -1, -1, -1, -1, 65, 3292 -1, -1, -1, 760, 70, -1, 72, 73, 74, -1, 3293 -1, -1, -1, 1233, -1, 81, 82, -1, -1, -1, 3294 777, -1, 779, -1, -1, -1, 783, -1, -1, -1, 3295 -1, -1, -1, -1, -1, 1290, -1, -1, -1, -1, 3296 265, 107, -1, 109, -1, -1, -1, -1, -1, -1, 3297 -1, 117, -1, -1, -1, -1, -1, -1, 376, -1, 3298 -1, 1281, 1282, -1, -1, -1, -1, -1, -1, -1, 3299 1290, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3300 -1, 36, -1, 38, -1, -1, -1, -1, -1, -1, 3301 -1, -1, 849, -1, -1, 320, -1, -1, -1, 856, 3302 -1, -1, -1, 328, 329, -1, 331, 332, -1, 64, 3303 -1, -1, 869, -1, 871, 70, 341, 72, 73, 74, 3304 345, -1, 77, 78, 79, 80, 81, 82, 885, 84, 3305 85, -1, -1, -1, -1, 892, -1, 92, -1, 364, 3306 -1, -1, 367, -1, -1, -1, -1, 904, -1, -1, 3307 907, -1, 107, -1, 109, -1, 111, 112, -1, -1, 3308 478, 116, 117, 118, 119, 120, 121, -1, 925, 394, 3309 -1, -1, -1, 398, -1, -1, -1, -1, -1, -1, 3310 -1, -1, -1, -1, -1, -1, 1406, -1, -1, -1, 3311 -1, -1, -1, -1, -1, -1, -1, -1, 516, -1, 3312 -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, 3313 -1, 529, -1, -1, -1, -1, -1, -1, 536, -1, 3314 -1, 539, -1, -1, -1, -1, -1, 452, -1, -1, 3315 -1, -1, 550, 551, -1, -1, -1, -1, -1, -1, 3316 -1, -1, -1, -1, 1464, -1, 1466, -1, -1, -1, 3317 -1, -1, -1, -1, 572, -1, 1013, -1, 483, -1, 3318 -1, 486, -1, -1, 582, -1, -1, -1, -1, -1, 3319 -1, 589, -1, -1, -1, -1, 594, -1, -1, -1, 3320 -1, 1501, -1, 1503, -1, -1, -1, -1, -1, -1, 3321 -1, 1546, -1, -1, -1, -1, -1, -1, -1, -1, 3322 525, -1, -1, 528, 529, -1, -1, -1, -1, -1, 3323 -1, 1531, 1069, -1, -1, -1, -1, -1, -1, 1076, 3324 -1, -1, -1, -1, -1, -1, 644, -1, -1, -1, 3325 -1, -1, -1, -1, 652, -1, -1, -1, -1, -1, 3326 -1, -1, -1, -1, -1, -1, -1, -1, 1105, 574, 3327 575, -1, -1, 1110, -1, -1, -1, -1, -1, -1, 3328 -1, 1118, -1, -1, -1, -1, -1, -1, 593, 594, 3329 -1, 596, -1, -1, 692, -1, -1, -1, -1, -1, 3330 605, -1, 607, 608, -1, -1, -1, -1, -1, 614, 3331 -1, 1148, -1, -1, -1, -1, -1, -1, -1, 624, 3332 625, -1, -1, 1160, -1, 630, 1163, -1, 1165, -1, 3333 -1, -1, -1, -1, 639, 640, 641, -1, -1, -1, 3334 -1, -1, 1179, 1180, -1, -1, -1, -1, -1, -1, 3335 -1, -1, 657, -1, -1, -1, -1, 662, 663, -1, 3336 -1, 666, 667, -1, 1201, -1, -1, -1, 673, 767, 3337 -1, 769, -1, -1, -1, -1, -1, 775, -1, -1, 3338 -1, -1, -1, -1, 782, -1, 691, 692, 693, -1, 3339 695, 1228, -1, -1, 699, -1, 10, 11, 12, 13, 3340 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3341 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3342 -1, -1, -1, 37, 38, -1, 731, 732, 826, 827, 3343 -1, 829, -1, -1, -1, -1, -1, -1, -1, -1, 3344 -1, -1, -1, -1, -1, -1, 844, -1, -1, -1, 3345 -1, 65, -1, -1, -1, -1, -1, -1, 72, 73, 3346 -1, 766, 767, -1, -1, -1, 771, 772, -1, -1, 3242 3347 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3243 987, -1, -1, 696, 654, -1, -1, 994, 701, 702, 3244 -1, 998, -1, -1, 707, -1, 1003, -1, 1005, -1, 3245 -1, -1, 1009, 1010, 1011, -1, -1, 1014, -1, -1, 3246 -1, -1, -1, -1, -1, -1, 1023, -1, -1, 689, 3348 -1, -1, -1, -1, -1, -1, 884, 1324, -1, 1326, 3349 888, -1, -1, -1, -1, 109, -1, -1, -1, 113, 3350 -1, -1, 1339, 117, 1341, -1, -1, -1, 813, -1, 3351 -1, -1, -1, -1, -1, -1, -1, 822, -1, -1, 3352 -1, -1, 1359, 828, 829, -1, -1, -1, 833, -1, 3353 835, -1, -1, -1, 279, 280, 281, -1, 1375, 1376, 3354 845, -1, -1, 288, 289, -1, -1, -1, 293, 294, 3355 1387, -1, -1, 1390, -1, -1, -1, -1, -1, -1, 3356 305, -1, -1, -1, -1, -1, 964, -1, -1, -1, 3357 -1, -1, -1, -1, -1, 1412, -1, -1, -1, -1, 3358 -1, 979, 980, -1, 1421, -1, -1, 1424, 986, 1426, 3359 1427, 1428, -1, -1, 992, -1, 341, 995, -1, 997, 3247 3360 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3248 -1, -1, -1, -1, 1041, 1042, -1, -1, 701, 702, 3249 710, -1, -1, -1, 707, -1, -1, -1, -1, -1, 3250 -1, -1, -1, -1, -1, -1, -1, -1, 728, 1066, 3251 730, -1, 1069, 10, 11, 12, 13, 14, 15, 16, 3252 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3253 -1, -1, 29, 30, 31, -1, -1, 63, -1, -1, 3254 37, -1, -1, -1, 764, -1, -1, 73, -1, 75, 3255 1107, 77, -1, -1, -1, -1, 1113, 1114, 84, -1, 3256 -1, -1, -1, 60, -1, -1, -1, 1124, -1, -1, 3257 67, 68, 1129, -1, -1, 1132, -1, 1134, -1, -1, 3258 1137, -1, -1, -1, -1, -1, -1, -1, 114, -1, 3259 116, 117, 118, 1150, -1, -1, -1, -1, 818, -1, 3260 -1, -1, 822, -1, -1, 825, 1163, -1, 1165, 1166, 3261 1167, 1168, -1, -1, 111, -1, -1, -1, -1, -1, 3262 -1, -1, -1, -1, 1181, -1, 1183, -1, -1, -1, 3263 1187, 157, -1, -1, -1, -1, -1, -1, -1, -1, 3361 -1, -1, -1, 918, -1, -1, -1, -1, -1, 1017, 3362 -1, 926, -1, -1, -1, -1, -1, 932, -1, -1, 3363 1028, 1468, 377, 1470, -1, 940, 1473, -1, -1, -1, 3364 -1, -1, -1, -1, -1, -1, -1, -1, 953, 954, 3365 -1, 1488, 1050, -1, 1052, -1, -1, -1, -1, -1, 3366 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1067, 3367 1068, -1, -1, -1, 979, -1, -1, -1, -1, -1, 3368 985, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3369 1088, -1, -1, -1, -1, -1, -1, -1, -1, 1004, 3370 1005, 36, -1, 38, -1, -1, -1, -1, -1, 1014, 3371 -1, -1, -1, -1, -1, 1020, 1021, -1, 1023, 1024, 3372 1025, -1, -1, -1, -1, -1, -1, -1, -1, 64, 3373 1035, 1036, -1, -1, -1, 70, 1134, -1, -1, 74, 3374 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3375 85, -1, -1, -1, -1, 1153, -1, 92, -1, -1, 3264 3376 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3265 -1, -1, -1, -1, -1, -1, -1, -1, 1215, 1216, 3266 -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 3267 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3268 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3269 31, 217, -1, 219, 220, 221, 37, -1, 918, -1, 3270 -1, -1, -1, -1, -1, 43, -1, -1, 1265, 1266, 3271 -1, -1, -1, -1, -1, -1, -1, -1, 1275, 60, 3272 -1, 62, -1, 64, 65, -1, 67, 68, 69, 255, 3273 -1, -1, -1, 259, -1, 76, 77, -1, -1, -1, 3274 960, -1, -1, -1, -1, -1, -1, -1, -1, 275, 3275 -1, 89, -1, -1, -1, 975, -1, -1, -1, -1, 3276 101, 99, 103, -1, -1, -1, 1323, -1, -1, -1, 3277 111, -1, -1, -1, -1, -1, -1, -1, 1335, -1, 3278 1337, 1338, 1339, -1, -1, -1, -1, -1, -1, 1009, 3279 -1, -1, 1349, -1, -1, -1, -1, -1, 324, -1, 3280 -1, 1358, -1, -1, 36, -1, 38, -1, -1, -1, 3281 1030, 1031, -1, 1370, -1, -1, 154, -1, -1, 345, 3282 -1, -1, 1085, -1, 350, 351, -1, 59, -1, 167, 3283 -1, -1, 358, 65, -1, -1, -1, 69, -1, -1, 3284 72, 73, 74, 75, 76, 77, -1, 79, 80, -1, 3285 -1, -1, 190, -1, -1, 87, -1, -1, -1, -1, 3286 -1, -1, -1, -1, 1421, 1422, 204, -1, 1088, 101, 3287 -1, 103, 1085, -1, 400, 213, 108, 1434, 110, 111, 3288 112, 113, 114, 115, 1441, 223, -1, -1, -1, -1, 3289 -1, -1, 418, -1, -1, -1, -1, 423, -1, 425, 3377 1168, 1169, 107, -1, 109, -1, -1, -1, -1, -1, 3378 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, 3379 -1, 1096, 1097, 1098, -1, -1, -1, -1, -1, -1, 3380 -1, -1, -1, -1, 1109, -1, -1, -1, 553, 554, 3381 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 3382 565, 566, 567, 568, 569, 570, -1, -1, -1, -1, 3290 3383 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3291 248, -1, 1469, -1, -1, 253, 442, -1, -1, 445, 3292 446, -1, -1, -1, -1, -1, 1146, -1, 266, -1, 3293 -1, -1, -1, -1, 272, 461, 274, -1, -1, -1, 3294 1497, -1, -1, -1, 1207, -1, -1, -1, -1, 475, 3295 -1, -1, -1, 291, -1, -1, 482, -1, -1, -1, 3296 -1, -1, -1, -1, -1, -1, 1523, -1, 1188, -1, 3297 -1, 1528, -1, -1, -1, -1, -1, -1, -1, -1, 3384 -1, -1, -1, -1, -1, -1, -1, -1, 1153, -1, 3385 1248, 596, 0, -1, -1, 3, 4, 5, 6, 7, 3386 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3387 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3388 -1, 29, 30, 31, 32, -1, -1, 35, -1, 37, 3389 38, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3390 19, 20, 21, 22, 23, 24, 25, 26, 1213, -1, 3391 -1, 1309, -1, 1311, 62, -1, -1, 65, 37, 67, 3392 -1, 69, 70, -1, 72, 73, 74, -1, 1233, -1, 3393 -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 3394 -1, -1, -1, -1, -1, -1, 65, -1, -1, 694, 3395 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107, 3396 -1, 109, -1, -1, -1, -1, -1, -1, -1, 117, 3397 -1, 716, -1, -1, -1, -1, 1281, 1282, -1, -1, 3398 -1, -1, -1, -1, 729, -1, -1, -1, -1, -1, 3399 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1397, 3298 3400 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3299 -1, -1, -1, -1, 1207, -1, 334, -1, -1, -1, 3300 -1, 339, -1, -1, -1, 1225, -1, -1, -1, -1, 3301 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3302 19, 20, 21, 22, 23, 24, 25, 26, -1, 367, 3303 29, 30, 31, 371, 372, -1, 374, -1, 37, -1, 3304 -1, -1, 380, 381, -1, 383, 384, -1, 386, -1, 3305 388, -1, 7, 1273, 1274, 10, 11, 12, 13, 14, 3306 -1, 60, 1282, -1, -1, -1, -1, 405, 67, 68, 3307 596, -1, -1, -1, -1, 413, -1, -1, -1, -1, 3308 -1, 36, 37, 38, -1, -1, -1, -1, -1, -1, 3309 -1, -1, -1, -1, -1, -1, -1, -1, 624, -1, 3310 438, -1, -1, 629, 59, 60, -1, -1, -1, -1, 3311 65, 449, 111, -1, 69, -1, -1, 72, 73, 74, 3312 75, 76, 77, -1, 79, 80, -1, -1, -1, -1, 3313 -1, -1, 87, -1, 472, -1, -1, -1, -1, -1, 3314 478, -1, -1, -1, -1, 483, 101, -1, 103, -1, 3315 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114, 3316 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3317 1390, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3318 -1, 519, -1, -1, 278, 279, 280, -1, -1, -1, 3319 716, -1, -1, 287, 288, -1, -1, 535, 292, 293, 3320 -1, -1, -1, -1, 730, -1, -1, -1, -1, -1, 3321 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3322 -1, -1, -1, 1443, 750, -1, -1, -1, -1, -1, 3323 -1, -1, -1, 571, 152, 153, -1, -1, -1, -1, 3324 -1, -1, 580, -1, -1, -1, 340, -1, -1, 587, 3325 -1, -1, -1, 1473, 592, -1, -1, -1, -1, -1, 3326 -1, -1, -1, -1, -1, 603, -1, 185, -1, -1, 3327 -1, -1, -1, -1, 192, -1, -1, -1, 1498, -1, 3328 -1, -1, 376, 809, -1, -1, -1, -1, -1, -1, 3329 -1, -1, -1, -1, -1, -1, 822, -1, -1, -1, 3330 -1, -1, -1, -1, -1, -1, 644, -1, -1, -1, 3331 -1, -1, -1, 0, -1, 841, 3, 4, 5, 6, 3401 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3402 -1, -1, -1, -1, -1, -1, -1, -1, -1, 774, 3403 -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 3332 3404 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3333 3405 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3334 -1, 679, 29, 30, 31, 32, 264, -1, 35, -1, 3335 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, 3336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3337 57, -1, -1, 60, -1, 62, -1, 64, 65, -1, 3338 67, 68, 69, -1, -1, -1, -1, -1, -1, 76, 3339 77, -1, -1, -1, -1, -1, 734, -1, -1, -1, 3340 -1, 319, 928, -1, -1, -1, 744, 745, -1, 327, 3341 328, -1, 330, 331, 101, -1, 103, -1, -1, 757, 3342 -1, -1, 340, -1, 111, -1, 344, -1, 954, -1, 3343 -1, -1, -1, -1, -1, -1, 774, -1, 776, -1, 3344 -1, -1, 780, -1, -1, 363, -1, -1, 366, -1, 3345 -1, -1, -1, -1, -1, 981, 550, 551, 552, 553, 3346 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 3347 564, 565, 566, 567, 392, -1, -1, -1, 396, 36, 3348 -1, 38, -1, -1, -1, -1, 1012, -1, -1, -1, 3349 -1, -1, -1, -1, -1, -1, -1, 1023, -1, 593, 3350 -1, -1, 59, -1, -1, -1, -1, 845, 65, 427, 3351 67, 68, 69, -1, 852, 72, 73, 74, 75, 76, 3352 77, -1, 79, 80, -1, -1, -1, 865, -1, 867, 3353 87, -1, 450, -1, -1, -1, -1, -1, -1, -1, 3354 -1, -1, -1, 881, 101, -1, 103, -1, 105, 106, 3355 888, -1, -1, 110, 111, 112, 113, 114, 115, -1, 3356 -1, -1, 900, 481, -1, 903, 484, -1, -1, -1, 3357 -1, -1, -1, -1, -1, -1, 1102, -1, -1, -1, 3358 -1, -1, -1, 921, -1, -1, -1, -1, -1, -1, 3359 -1, -1, -1, -1, -1, -1, -1, 691, -1, -1, 3360 -1, -1, -1, -1, -1, 523, -1, -1, 526, 527, 3361 -1, -1, -1, -1, -1, -1, -1, -1, -1, 713, 3362 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3363 143, -1, 726, -1, -1, -1, -1, -1, -1, -1, 3364 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3365 -1, -1, 165, 571, 572, -1, -1, -1, -1, -1, 3366 -1, -1, 1188, -1, -1, -1, -1, -1, -1, -1, 3367 1008, -1, 590, 591, -1, 593, -1, 771, -1, -1, 3368 -1, -1, -1, -1, 602, -1, 604, 605, -1, -1, 3369 -1, -1, -1, 611, -1, -1, -1, -1, -1, -1, 3370 -1, -1, -1, 621, 622, -1, -1, -1, 802, 627, 3371 -1, -1, -1, -1, -1, -1, -1, -1, 636, 637, 3372 638, -1, 235, 817, -1, 1063, -1, -1, -1, -1, 3373 -1, 1069, -1, -1, -1, -1, 654, -1, -1, -1, 3374 -1, 659, 660, -1, -1, 663, 664, 260, -1, -1, 3375 -1, -1, 670, -1, -1, -1, 1282, -1, -1, -1, 3376 1098, -1, -1, -1, -1, 1103, -1, -1, -1, -1, 3377 688, 689, 690, 1111, 692, -1, -1, -1, 696, 3, 3378 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3379 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3380 24, 25, 26, 1141, -1, 29, 30, 31, -1, -1, 3381 728, 729, -1, 37, -1, 1153, -1, -1, 1156, -1, 3382 1158, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3383 -1, -1, -1, -1, 1172, 1173, 60, -1, 62, -1, 3384 64, -1, -1, 67, 68, 763, 764, -1, -1, -1, 3385 768, 769, -1, -1, -1, -1, 1194, -1, -1, -1, 3386 -1, -1, 375, -1, -1, -1, -1, -1, -1, -1, 3387 -1, -1, -1, -1, 968, -1, -1, -1, -1, 103, 3388 -1, -1, 1220, -1, -1, -1, -1, 111, -1, -1, 3389 -1, 809, -1, -1, -1, -1, -1, -1, -1, -1, 3390 818, -1, -1, 997, -1, -1, 824, 825, -1, -1, 3391 -1, 829, -1, 831, -1, 1009, -1, -1, -1, -1, 3392 -1, -1, -1, 841, -1, -1, -1, 10, 11, 12, 3393 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3394 23, 24, 25, 26, 27, -1, 29, 30, 31, -1, 3395 -1, -1, -1, -1, 37, -1, 1050, -1, -1, -1, 3396 -1, -1, -1, 476, -1, -1, -1, -1, -1, -1, 3397 -1, -1, -1, -1, 1312, -1, 1314, 60, -1, -1, 3398 -1, -1, 65, -1, 67, 68, 69, 1513, 71, 1327, 3399 -1, 1329, -1, 76, 77, -1, 914, -1, -1, -1, 3400 -1, 514, -1, -1, 922, -1, -1, -1, -1, 1347, 3401 928, -1, -1, -1, 527, -1, -1, -1, 936, -1, 3402 103, 534, -1, -1, -1, 1363, 1120, -1, 111, -1, 3403 -1, 949, 950, 1371, 547, 548, 1374, -1, 10, 11, 3404 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3405 22, 23, 24, 25, 26, 27, 569, 975, 1396, -1, 3406 -1, -1, -1, 981, -1, 37, 579, 1405, -1, 1163, 3407 1408, 1409, -1, 586, -1, -1, -1, -1, 591, -1, 3408 -1, 999, 1000, 1177, 1178, -1, -1, -1, 60, -1, 3409 -1, 1009, -1, -1, -1, -1, -1, 1015, 1016, 71, 3410 1018, 1019, 1020, -1, -1, -1, -1, 1445, -1, 1447, 3411 -1, -1, 1030, 1031, -1, -1, -1, -1, -1, -1, 3412 -1, -1, -1, -1, 1462, -1, -1, -1, 641, -1, 3413 -1, -1, -1, -1, -1, -1, 649, 4, 5, 6, 3414 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3415 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3416 -1, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3417 37, 1089, 1090, 1091, -1, -1, 689, -1, -1, -1, 3418 -1, -1, -1, -1, 1102, -1, -1, -1, -1, -1, 3419 -1, -1, -1, 60, -1, 62, -1, 64, -1, -1, 3420 67, 68, -1, 3, 4, 5, 6, 7, 8, 9, 3421 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3422 20, 21, 22, 23, 24, 25, 26, -1, 1146, 29, 3423 30, 31, 32, -1, -1, 35, 103, 37, 38, -1, 3424 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3425 -1, 764, -1, 766, -1, -1, -1, 57, -1, 772, 3426 60, -1, 62, -1, 64, 65, 779, 67, 68, 69, 3427 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1, 3428 -1, -1, -1, 1377, -1, -1, -1, -1, 1206, -1, 3429 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3430 1394, 101, -1, 103, -1, -1, -1, 1225, -1, 822, 3431 823, 111, 825, -1, -1, -1, -1, -1, -1, -1, 3432 -1, -1, -1, -1, -1, -1, -1, 840, -1, -1, 3433 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3434 20, 21, 22, 23, 24, 25, 26, -1, -1, -1, 3435 -1, -1, -1, -1, -1, 1273, 1274, 37, -1, -1, 3436 -1, -1, -1, 1457, 1458, -1, -1, 880, -1, -1, 3437 -1, 884, -1, -1, -1, -1, -1, -1, -1, -1, 3438 60, -1, -1, -1, 3, 4, 5, 6, 7, 8, 3439 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3440 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3441 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, 3442 39, -1, 41, -1, -1, 44, 45, 46, 47, 48, 3443 49, 50, 51, -1, 53, -1, -1, 56, 57, -1, 3444 59, 60, -1, 62, -1, 64, 65, 960, 67, 68, 3445 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3446 79, 80, 975, 976, -1, -1, -1, -1, 87, 982, 3447 -1, -1, 1390, -1, -1, 988, -1, -1, 991, -1, 3448 993, -1, 101, -1, 103, -1, 36, 106, 38, -1, 3449 -1, 110, 111, 112, 113, 114, 115, -1, -1, 1012, 3450 -1, -1, -1, -1, -1, 124, -1, -1, -1, 59, 3451 1023, -1, -1, -1, -1, 65, -1, -1, -1, 69, 3452 -1, -1, 72, 73, 74, 75, 76, 77, -1, 79, 3453 80, -1, 1045, -1, 1047, -1, -1, 87, -1, -1, 3454 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1062, 3455 -1, 101, 1470, 103, -1, -1, 106, -1, -1, -1, 3456 110, 111, 112, 113, 114, 115, -1, 36, 1081, 38, 3457 39, -1, 41, 1491, 1492, 44, 45, 46, 47, 48, 3458 49, 50, 51, -1, 53, -1, -1, 56, 57, -1, 3459 59, -1, -1, -1, -1, 1513, 65, -1, -1, -1, 3460 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3461 79, 80, -1, -1, 1127, -1, -1, -1, 87, -1, 3462 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3463 -1, -1, 101, 1146, 103, -1, -1, 106, -1, -1, 3464 -1, 110, 111, 112, 113, 114, 115, -1, 1161, 1162, 3465 -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 3466 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3467 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3468 31, 32, -1, -1, 35, 36, 37, 38, -1, -1, 3469 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3470 -1, -1, -1, -1, -1, -1, -1, -1, 59, 60, 3471 -1, 62, -1, 64, 65, -1, 67, 68, 69, -1, 3472 -1, 72, 73, 74, 75, 76, 77, 1240, 79, 80, 3473 -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, 3474 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3475 101, -1, 103, -1, -1, -1, -1, -1, -1, 110, 3476 111, 112, 113, 114, 115, -1, -1, -1, -1, -1, 3477 -1, -1, -1, 124, 3, 4, 5, 6, 7, 8, 3478 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3479 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3480 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, 3406 -1, 806, 29, 30, 31, 32, -1, -1, 35, 36, 3407 37, 38, -1, -1, -1, -1, 821, -1, -1, -1, 3408 -1, 1479, -1, -1, -1, -1, -1, -1, -1, -1, 3409 -1, -1, -1, -1, -1, -1, -1, 64, 65, -1, 3410 67, 1406, 69, 70, -1, 72, 73, 74, -1, -1, 3411 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3412 -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, 3413 -1, -1, -1, 1531, -1, -1, -1, -1, -1, -1, 3414 107, -1, 109, -1, -1, -1, -1, -1, -1, 116, 3415 117, 118, 119, 120, 121, -1, -1, -1, -1, -1, 3416 -1, -1, -1, 130, -1, -1, -1, -1, -1, -1, 3481 3417 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3482 3418 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3483 59, 60, -1, 62, -1, 64, 65, -1, 67, 68, 3484 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3485 79, 80, -1, -1, -1, -1, -1, -1, 87, -1, 3486 -1, -1, -1, -1, -1, -1, -1, -1, 1381, -1, 3487 -1, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3488 -1, 110, 111, 112, 113, 114, 115, 4, 5, 6, 3419 -1, 1496, 3, 4, 5, 6, 7, 8, 9, 10, 3420 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3421 21, 22, 23, 24, 25, 26, 1521, 1522, 29, 30, 3422 31, -1, -1, -1, -1, -1, 37, 972, -1, -1, 3423 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3424 -1, 1546, -1, -1, -1, -1, -1, -1, -1, -1, 3425 -1, -1, -1, -1, 65, -1, 67, 1002, 69, -1, 3426 -1, 72, 73, -1, -1, -1, -1, -1, -1, 1014, 3427 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3428 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3429 23, 24, 25, 26, -1, -1, 29, 30, 31, 32, 3430 -1, 112, 35, 36, 37, 38, 39, -1, 41, -1, 3431 1055, 44, 45, 46, 47, 48, 49, 50, 51, -1, 3432 -1, -1, 55, -1, -1, -1, 59, 60, -1, 62, 3433 -1, 64, 65, -1, 67, -1, 69, 70, -1, 72, 3434 73, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3435 -1, 84, 85, -1, -1, -1, -1, -1, -1, 92, 3436 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3437 -1, -1, -1, -1, 107, -1, 109, -1, -1, 112, 3438 -1, -1, 1127, 116, 117, 118, 119, 120, 121, -1, 3439 -1, -1, -1, 126, -1, -1, -1, 130, -1, -1, 3440 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3441 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3442 23, 24, 25, 26, -1, 1170, 29, 30, 31, 32, 3443 -1, -1, 35, 36, 37, 38, -1, -1, -1, 1184, 3444 1185, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3445 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3446 -1, 64, 65, -1, 67, -1, 69, 70, 37, 72, 3447 73, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3448 -1, 84, 85, -1, -1, -1, -1, -1, -1, 92, 3449 -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, 3450 -1, -1, -1, -1, 107, -1, 109, 76, -1, -1, 3451 -1, -1, -1, 116, 117, 118, 119, 120, 121, 4, 3452 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3453 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3454 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3455 -1, 36, 37, 38, 10, 11, 12, 13, 14, 15, 3456 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3457 26, 27, -1, 29, 30, 31, -1, -1, -1, 64, 3458 65, 37, 67, -1, 69, 70, -1, 72, 73, 74, 3459 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3460 85, -1, -1, -1, -1, -1, -1, 92, -1, 65, 3461 -1, -1, -1, -1, 70, -1, 72, 73, 74, -1, 3462 76, -1, 107, -1, 109, 81, 82, -1, -1, 114, 3463 -1, 116, 117, 118, 119, 120, 121, -1, -1, -1, 3464 -1, -1, -1, -1, -1, -1, -1, -1, 1393, -1, 3465 -1, 107, -1, 109, -1, -1, -1, -1, -1, -1, 3466 -1, 117, -1, -1, -1, 1410, -1, 4, 5, 6, 3489 3467 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3490 3468 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3491 3469 -1, -1, 29, 30, 31, -1, -1, -1, -1, 36, 3492 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, 3493 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3494 1453, -1, 59, 60, -1, 62, -1, 64, 65, -1, 3495 67, 68, 69, -1, -1, 72, 73, 74, 75, 76, 3496 77, -1, 79, 80, -1, -1, -1, -1, -1, -1, 3497 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3498 -1, -1, -1, -1, 101, 1498, 103, -1, -1, -1, 3499 -1, 108, -1, 110, 111, 112, 113, 114, 115, 4, 3470 37, 38, 10, 11, 12, 13, 14, 15, 16, 17, 3471 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3472 -1, 29, 30, 31, -1, -1, -1, 64, 65, 37, 3473 67, -1, 69, 70, -1, 72, 73, 74, 1483, 1484, 3474 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3475 -1, -1, -1, -1, -1, 92, -1, 65, -1, -1, 3476 -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, 3477 107, -1, 109, -1, -1, -1, -1, 114, -1, 116, 3478 117, 118, 119, 120, 121, 4, 5, 6, 7, 8, 3479 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3480 19, 20, 21, 22, 23, 24, 25, 26, -1, 117, 3481 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3482 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3483 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3484 30, 31, -1, -1, -1, 64, 65, 37, 67, -1, 3485 69, 70, -1, 72, 73, 74, -1, -1, 77, 78, 3486 79, 80, 81, 82, -1, 84, 85, -1, -1, -1, 3487 -1, -1, -1, 92, -1, 65, -1, -1, -1, -1, 3488 -1, -1, 72, 73, -1, -1, -1, -1, 107, -1, 3489 109, -1, -1, -1, -1, 114, -1, 116, 117, 118, 3490 119, 120, 121, 4, 5, 6, 7, 8, 9, 10, 3491 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3492 21, 22, 23, 24, 25, 26, -1, 117, 29, 30, 3493 31, -1, -1, -1, -1, 36, 37, 38, 10, 11, 3494 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3495 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, 3496 -1, -1, -1, 64, 65, 37, 67, -1, 69, 70, 3497 -1, 72, 73, 74, -1, -1, 77, 78, 79, 80, 3498 81, 82, -1, 84, 85, -1, -1, -1, -1, -1, 3499 -1, 92, -1, 65, -1, -1, -1, -1, -1, -1, 3500 -1, -1, -1, -1, 76, -1, 107, -1, 109, -1, 3501 -1, -1, -1, -1, -1, 116, 117, 118, 119, 120, 3502 121, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3503 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3504 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3505 -1, -1, -1, 36, 37, 38, 10, 11, 12, 13, 3506 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3507 24, 25, 26, -1, -1, 29, 30, 31, 32, 33, 3508 34, 64, 65, 37, 67, -1, 69, 70, -1, 72, 3509 73, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3510 -1, 84, 85, -1, -1, -1, -1, -1, -1, 92, 3511 -1, 65, -1, -1, -1, -1, -1, -1, 72, 73, 3512 -1, -1, -1, -1, 107, -1, 109, -1, -1, -1, 3513 -1, -1, -1, 116, 117, 118, 119, 120, 121, 4, 3500 3514 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3501 3515 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3502 3516 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3503 -1, 36, 37, 38, -1, -1, -1, -1, -1, -1, 3504 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3505 -1, -1, -1, -1, 59, 60, -1, 62, -1, 64, 3506 65, -1, 67, 68, 69, -1, -1, 72, 73, 74, 3507 75, 76, 77, -1, 79, 80, -1, -1, -1, -1, 3508 -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, 3509 -1, -1, -1, -1, -1, -1, 101, -1, 103, -1, 3510 -1, -1, -1, 108, -1, 110, 111, 112, 113, 114, 3511 115, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3512 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3513 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3514 -1, -1, -1, 36, 37, 38, -1, -1, -1, -1, 3515 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3516 -1, -1, -1, -1, -1, -1, 59, 60, -1, 62, 3517 -1, 64, 65, -1, 67, 68, 69, -1, -1, 72, 3518 73, 74, 75, 76, 77, -1, 79, 80, -1, -1, 3519 -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, 3520 -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, 3521 103, -1, -1, -1, -1, 108, -1, 110, 111, 112, 3522 113, 114, 115, 4, 5, 6, 7, 8, 9, 10, 3523 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3524 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3525 31, -1, -1, -1, -1, 36, 37, 38, -1, -1, 3526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3527 -1, -1, -1, -1, -1, -1, -1, -1, 59, 60, 3528 -1, 62, -1, 64, 65, -1, 67, 68, 69, -1, 3529 -1, 72, 73, 74, 75, 76, 77, -1, 79, 80, 3530 -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, 3531 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3532 101, -1, 103, -1, -1, -1, -1, -1, -1, 110, 3533 111, 112, 113, 114, 115, 4, 5, 6, 7, 8, 3534 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3535 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3536 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3537 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3538 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3539 59, 60, -1, 62, -1, 64, 65, -1, 67, 68, 3540 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3541 79, 80, -1, -1, -1, -1, -1, -1, 87, -1, 3542 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3543 -1, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3544 -1, 110, 111, 112, 113, 114, 115, 4, 5, 6, 3517 -1, 36, 37, 38, 10, 11, 12, 13, 14, 15, 3518 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3519 26, -1, -1, 29, 30, 31, -1, -1, -1, 64, 3520 65, 37, 67, -1, 69, 70, -1, 72, 73, 74, 3521 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3522 85, -1, -1, -1, -1, -1, -1, 92, -1, 65, 3523 -1, -1, -1, -1, 70, -1, 72, 73, -1, -1, 3524 -1, -1, 107, -1, 109, -1, -1, -1, -1, -1, 3525 -1, 116, 117, 118, 119, 120, 121, 4, 5, 6, 3545 3526 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3546 3527 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3547 3528 -1, -1, 29, 30, 31, -1, -1, -1, -1, 36, 3548 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, 3529 37, 38, 10, 11, 12, 13, 14, 15, 16, 17, 3530 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3531 -1, 29, 30, 31, -1, -1, -1, 64, 65, 37, 3532 67, -1, 69, 70, -1, 72, 73, 74, -1, -1, 3533 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3534 -1, -1, -1, -1, -1, 92, -1, 65, -1, -1, 3535 -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, 3536 107, -1, 109, -1, -1, -1, -1, -1, -1, 116, 3537 117, 118, 119, 120, 121, 3, 4, 5, 6, 7, 3538 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3539 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3540 -1, 29, 30, 31, 32, -1, -1, 35, -1, 37, 3541 38, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3542 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3543 29, 30, 31, -1, 62, -1, -1, 65, 37, 67, 3544 -1, 69, 70, -1, 72, 73, 74, -1, -1, -1, 3545 -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 3546 -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, 3547 -1, -1, -1, 72, 73, -1, -1, -1, -1, 107, 3548 -1, 109, -1, -1, -1, 113, -1, -1, -1, 117, 3549 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3550 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3551 23, 24, 25, 26, -1, -1, 29, 30, 31, 32, 3552 -1, -1, 35, -1, 37, 38, -1, -1, -1, -1, 3549 3553 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3550 -1, -1, 59, 60, -1, 62, -1, 64, 65, -1, 3551 67, 68, 69, -1, -1, 72, 73, 74, 75, 76, 3552 77, -1, 79, 80, -1, -1, -1, -1, -1, -1, 3553 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3554 -1, -1, -1, -1, 101, -1, 103, -1, -1, -1, 3555 -1, -1, -1, 110, 111, 112, 113, 114, 115, 4, 3556 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3557 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3558 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3559 -1, 36, 37, 38, -1, -1, -1, -1, -1, -1, 3554 -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, 3555 -1, -1, 65, -1, 67, -1, 69, 70, -1, 72, 3556 73, 74, -1, -1, -1, -1, -1, -1, 81, 82, 3560 3557 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3561 -1, -1, -1, -1, 59, 60, -1, 62, -1, 64,3562 65, -1, 67, 68, 69, -1, -1, 72, 73, 74,3563 75, 76, 77, -1, 79, 80, -1, -1, -1, -1,3564 -1, -1, 87, -1, -1, -1, -1, -1, -1, -1,3565 -1, -1, -1, -1, -1, -1, 101, -1, 103, -1,3566 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114,3567 115, 3, 4, 5, 6, 7, 8, 9, 10, 11,3568 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,3569 22, 23, 24, 25, 26, -1, -1, 29, 30, 31,3570 32, -1, -1, 35, -1, 37, 38, -1, -1, -1,3571 3558 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3572 -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, 3573 62, -1, 64, 65, -1, 67, 68, 69, -1, -1, 3574 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1, 3559 -1, -1, -1, -1, 107, -1, 109, -1, -1, -1, 3560 -1, -1, -1, -1, 117, 3, 4, 5, 6, 7, 3561 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3562 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3563 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3575 3564 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3576 -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, 3577 -1, 103, -1, -1, -1, 107, -1, -1, -1, 111, 3565 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3566 -1, -1, -1, -1, -1, -1, -1, 65, -1, 67, 3567 -1, 69, 70, -1, 72, 73, 74, -1, -1, -1, 3568 -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 3569 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3570 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107, 3571 -1, 109, -1, -1, -1, -1, -1, -1, -1, 117, 3578 3572 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3579 3573 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, … … 3581 3575 -1, -1, 35, -1, 37, -1, -1, -1, -1, -1, 3582 3576 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3583 -1, -1, -1, -1, -1, -1, -1, 60, -1, 62,3584 -1, 64, -1, -1, 67, 68, -1, -1, 71, 3,3585 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,3586 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,3587 24, 25, 26, -1, -1, 29, 30, 31, 32, -1,3588 103, 35, -1, 37, -1, -1, -1, -1, 111, -1,3589 3577 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3590 -1, -1, -1, -1, -1, -1, 60, -1, 62, -1, 3591 64, -1, -1, 67, 68, 4, 5, 6, 7, 8, 3578 -1, -1, 65, -1, 67, -1, 69, -1, -1, 72, 3579 73, -1, -1, 76, -1, 3, 4, 5, 6, 7, 3580 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3581 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3582 -1, 29, 30, 31, 32, -1, 109, 35, -1, 37, 3583 -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, 3584 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3585 -1, -1, -1, -1, -1, -1, -1, 65, -1, 67, 3586 -1, 69, -1, -1, 72, 73, 3, 4, 5, 6, 3587 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3588 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3589 -1, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3590 37, 109, -1, -1, -1, -1, -1, -1, -1, 117, 3591 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3592 -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 3593 67, -1, 69, -1, -1, 72, 73, 4, 5, 6, 3594 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3595 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3596 -1, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3597 37, -1, 109, -1, -1, -1, -1, -1, -1, -1, 3598 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3599 -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 3600 67, -1, 69, 70, -1, 72, 73, 74, -1, -1, 3601 -1, -1, -1, -1, 81, 82, -1, -1, -1, -1, 3602 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3603 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3604 107, -1, 109, -1, -1, -1, -1, -1, -1, -1, 3605 117, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3606 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3607 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3608 -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, 3609 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3610 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3611 -1, -1, 65, -1, 67, -1, 69, -1, -1, 72, 3612 73, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3613 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3614 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3615 -1, -1, -1, -1, 37, 108, 109, -1, -1, -1, 3616 -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, 3617 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3618 -1, -1, 65, -1, 67, -1, 69, -1, -1, 72, 3619 73, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3620 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3621 -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, 3622 -1, -1, -1, -1, -1, -1, 109, -1, -1, -1, 3623 -1, -1, -1, -1, 117, 4, 5, 6, 7, 8, 3592 3624 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3593 3625 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3594 29, 30, 31, -1, -1, -1, -1, -1, 37, 103, 3595 -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, 3626 29, 30, 31, -1, -1, -1, -1, -1, 37, -1, 3627 -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 3628 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3629 26, -1, -1, 29, 30, 31, 65, -1, 67, -1, 3630 69, 37, -1, 72, 73, -1, -1, -1, -1, -1, 3596 3631 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3597 -1, 60, -1, 62, -1, 64, 65, -1, 67, 68, 3598 69, -1, -1, -1, -1, -1, -1, 76, 77, -1, 3632 -1, -1, -1, -1, -1, 94, -1, -1, -1, 65, 3633 -1, -1, -1, -1, 70, -1, 72, 73, 74, -1, 3634 109, -1, -1, -1, -1, 81, 82, -1, 117, 4, 3635 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3636 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3637 25, 26, -1, 109, 29, 30, 31, -1, -1, -1, 3638 -1, 117, 37, -1, -1, -1, -1, -1, -1, -1, 3599 3639 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3600 3640 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3601 -1, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3602 -1, -1, 111, 4, 5, 6, 7, 8, 9, 10, 3603 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3604 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3605 31, -1, -1, -1, -1, -1, 37, -1, -1, -1, 3641 65, -1, 67, -1, 69, -1, -1, 72, 73, 4, 3642 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3643 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3644 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3645 -1, -1, 37, -1, 109, -1, -1, -1, -1, -1, 3646 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 3606 3647 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3607 -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, 3608 -1, 62, -1, 64, -1, -1, 67, 68, -1, -1, 3609 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3610 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3611 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3612 -1, 102, 103, 37, -1, -1, -1, -1, -1, -1, 3613 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3614 -1, -1, -1, -1, -1, -1, 60, -1, 62, -1, 3615 64, -1, -1, 67, 68, -1, -1, -1, -1, -1, 3648 65, -1, 67, -1, 69, -1, -1, 72, 73, 4, 3649 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3650 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3651 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3652 -1, -1, 37, -1, 109, -1, -1, -1, -1, -1, 3653 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 3616 3654 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3617 -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, 3618 -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, 3619 -1, -1, -1, -1, -1, -1, -1, 111, 4, 5, 3620 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3621 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3622 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3623 -1, 37, 10, 11, 12, 13, 14, 15, 16, 17, 3624 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3625 -1, 29, 30, 31, 60, -1, 62, -1, 64, 37, 3626 -1, 67, 68, -1, -1, -1, -1, -1, -1, -1, 3655 65, -1, 67, -1, 69, -1, -1, 72, 73, 4, 3656 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3657 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3658 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3659 -1, -1, 37, -1, 109, -1, -1, -1, -1, -1, 3660 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 3627 3661 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3628 -1, -1, 60, 89, -1, -1, -1, 65, -1, 67, 3629 68, -1, -1, -1, -1, -1, -1, 103, -1, -1, 3630 -1, -1, -1, -1, -1, 111, 4, 5, 6, 7, 3631 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3632 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3633 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3634 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3635 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3636 -1, -1, 60, -1, 62, -1, 64, -1, -1, 67, 3637 68, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3638 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3639 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3640 -1, -1, -1, -1, 37, 103, -1, -1, -1, -1, 3641 -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, 3642 -1, -1, -1, -1, -1, -1, -1, 60, -1, 62, 3643 -1, 64, -1, -1, 67, 68, 4, 5, 6, 7, 3644 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3645 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3646 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3647 103, -1, -1, -1, -1, -1, -1, -1, 111, -1, 3648 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3649 -1, -1, 60, -1, 62, -1, 64, -1, -1, 67, 3650 68, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3651 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3652 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3653 -1, -1, -1, -1, -1, 103, -1, -1, -1, -1, 3654 -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, 3655 59, 60, -1, -1, -1, -1, 65, -1, 67, 68, 3656 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3657 79, 80, -1, -1, -1, -1, -1, -1, 87, -1, 3658 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3659 -1, -1, 101, -1, 103, -1, -1, 106, -1, -1, 3660 -1, 110, 111, 112, 113, 114, 115, 10, 11, 12, 3661 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3662 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3663 -1, -1, -1, 36, 37, 38, -1, -1, -1, -1, 3664 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3665 -1, -1, -1, -1, -1, -1, 59, 60, -1, -1, 3666 -1, -1, 65, -1, 67, 68, 69, -1, -1, 72, 3667 73, 74, 75, 76, 77, -1, 79, 80, -1, -1, 3668 -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, 3669 -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, 3670 103, 104, -1, -1, -1, -1, -1, 110, 111, 112, 3671 113, 114, 115, 10, 11, 12, 13, 14, 15, 16, 3672 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3673 -1, -1, 29, 30, 31, -1, -1, -1, -1, 36, 3674 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, 3675 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3676 -1, -1, 59, 60, -1, -1, -1, -1, 65, -1, 3677 67, 68, 69, -1, -1, 72, 73, 74, 75, 76, 3678 77, -1, 79, 80, -1, -1, -1, -1, -1, -1, 3679 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3680 -1, -1, -1, -1, 101, 102, 103, -1, -1, -1, 3681 -1, -1, -1, 110, 111, 112, 113, 114, 115, 10, 3662 65, -1, 67, -1, 69, -1, -1, 72, 73, 10, 3682 3663 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3683 3664 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3684 3665 31, -1, -1, -1, -1, 36, 37, 38, -1, -1, 3685 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3686 -1, -1, -1, -1, -1, -1, -1, -1, 59, 60, 3687 -1, -1, -1, -1, 65, -1, 67, 68, 69, -1, 3688 -1, 72, 73, 74, 75, 76, 77, -1, 79, 80, 3689 -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, 3690 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3691 101, -1, 103, -1, -1, -1, -1, -1, -1, 110, 3692 111, 112, 113, 114, 115, 10, 11, 12, 13, 14, 3693 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3694 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3695 -1, 36, 37, 38, -1, -1, -1, -1, -1, -1, 3696 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3697 -1, -1, -1, -1, 59, 60, -1, -1, -1, -1, 3698 65, -1, 67, 68, 69, -1, -1, 72, 73, 74, 3699 75, 76, 77, -1, 79, 80, -1, -1, -1, -1, 3700 -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, 3701 -1, -1, -1, -1, -1, -1, 101, -1, 103, -1, 3702 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114, 3703 115, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3666 -1, -1, -1, -1, 109, -1, -1, -1, -1, -1, 3667 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 3668 -1, -1, -1, 64, 65, -1, -1, -1, -1, 70, 3669 -1, 72, 73, 74, -1, -1, 77, 78, 79, 80, 3670 81, 82, -1, 84, 85, -1, -1, -1, -1, -1, 3671 -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, 3672 -1, -1, -1, -1, -1, -1, 107, -1, 109, -1, 3673 -1, 112, -1, -1, -1, 116, 117, 118, 119, 120, 3674 121, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3704 3675 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3705 3676 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3706 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3707 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3708 59, 60, -1, -1, -1, -1, 65, -1, 67, 68, 3709 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3710 79, 80, -1, -1, -1, -1, -1, -1, 87, -1, 3711 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3712 -1, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3713 -1, 110, 111, 112, 113, 114, 115, 10, 11, 12, 3677 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3678 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3679 29, 30, 31, -1, -1, 64, 65, -1, 37, -1, 3680 -1, 70, -1, 72, 73, 74, -1, -1, 77, 78, 3681 79, 80, 81, 82, -1, 84, 85, -1, -1, -1, 3682 -1, -1, -1, 92, -1, -1, 65, -1, -1, -1, 3683 -1, 70, -1, 72, 73, 74, -1, 76, 107, -1, 3684 109, 110, 81, 82, -1, -1, -1, 116, 117, 118, 3685 119, 120, 121, 10, 11, 12, 13, 14, 15, 16, 3686 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3687 109, -1, 29, 30, 31, -1, -1, -1, 117, 36, 3688 37, 38, -1, 10, 11, 12, 13, 14, 15, 16, 3689 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3690 27, -1, 29, 30, 31, -1, -1, 64, 65, -1, 3691 37, -1, -1, 70, -1, 72, 73, 74, -1, -1, 3692 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3693 -1, -1, -1, -1, -1, 92, -1, -1, 65, -1, 3694 -1, -1, -1, -1, -1, 72, 73, -1, -1, 76, 3695 107, 108, 109, -1, -1, -1, -1, -1, -1, 116, 3696 117, 118, 119, 120, 121, 10, 11, 12, 13, 14, 3697 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3698 25, 26, 109, -1, 29, 30, 31, -1, -1, -1, 3699 117, 36, 37, 38, -1, 10, 11, 12, 13, 14, 3700 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3701 25, 26, -1, -1, 29, 30, 31, -1, -1, 64, 3702 65, -1, 37, -1, -1, 70, -1, 72, 73, 74, 3703 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3704 85, -1, -1, -1, -1, -1, -1, 92, -1, -1, 3705 65, -1, -1, -1, -1, 70, -1, 72, 73, -1, 3706 -1, -1, 107, -1, 109, -1, -1, -1, -1, -1, 3707 -1, 116, 117, 118, 119, 120, 121, 10, 11, 12, 3708 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3709 23, 24, 25, 26, 109, -1, 29, 30, 31, -1, 3710 -1, -1, 117, 36, 37, 38, -1, 10, 11, 12, 3714 3711 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3715 3712 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3716 -1, -1, -1, 36, 37, 38, -1, -1, -1, -1, 3713 -1, 64, 65, -1, 37, 38, -1, 70, -1, 72, 3714 73, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3715 -1, 84, 85, -1, -1, -1, -1, -1, -1, 92, 3716 -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, 3717 73, -1, -1, -1, 107, -1, 109, -1, -1, -1, 3718 -1, -1, -1, 116, 117, 118, 119, 120, 121, 10, 3719 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3720 21, 22, 23, 24, 25, 26, 109, -1, 29, 30, 3721 31, -1, -1, -1, 117, 36, 37, 38, -1, 10, 3722 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3723 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3724 31, -1, -1, 64, 65, -1, 37, -1, -1, 70, 3725 -1, 72, 73, 74, -1, -1, 77, 78, 79, 80, 3726 81, 82, -1, 84, 85, -1, -1, -1, -1, -1, 3727 -1, 92, -1, -1, 65, -1, -1, -1, -1, -1, 3728 -1, 72, 73, -1, -1, -1, 107, -1, 109, -1, 3729 -1, -1, -1, -1, -1, 116, 117, 118, 119, 120, 3730 121, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3731 19, 20, 21, 22, 23, 24, 25, 26, 109, -1, 3732 29, 30, 31, -1, -1, -1, 117, 36, 37, 38, 3733 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3734 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3735 30, 31, -1, -1, -1, 64, 65, 37, -1, -1, 3736 -1, 70, -1, 72, 73, 74, -1, -1, 77, 78, 3737 79, 80, 81, 82, -1, 84, 85, -1, -1, -1, 3738 -1, -1, -1, 92, -1, 65, -1, -1, -1, -1, 3739 70, -1, 72, 73, 74, -1, -1, -1, 107, -1, 3740 109, 81, 82, -1, -1, -1, -1, 116, 117, 118, 3741 119, 120, 121, -1, -1, -1, -1, -1, -1, -1, 3742 -1, -1, -1, -1, -1, -1, -1, 107, -1, 109, 3743 -1, -1, -1, -1, -1, -1, -1, 117, 10, 11, 3744 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3745 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3746 -1, -1, -1, -1, -1, 37, -1, 10, 11, 12, 3747 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3748 23, 24, 25, 26, 27, -1, 29, 30, 31, -1, 3749 -1, -1, -1, 65, 37, -1, -1, -1, 70, -1, 3750 72, 73, 74, -1, -1, -1, -1, -1, -1, 81, 3751 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3752 -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, 3753 73, -1, -1, 76, -1, 107, -1, 109, -1, -1, 3754 -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, 3717 3755 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3718 -1, -1, -1, -1, -1, -1, 59, 60, -1, -1, 3719 -1, -1, 65, -1, 67, 68, 69, -1, -1, 72, 3720 73, 74, 75, 76, 77, -1, 79, 80, -1, -1, 3721 -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, 3722 -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, 3723 103, -1, -1, -1, -1, -1, -1, 110, 111, 112, 3724 113, 114, 115, 10, 11, 12, 13, 14, 15, 16, 3756 -1, -1, -1, -1, 107, -1, 109, -1, -1, -1, 3757 -1, -1, -1, -1, 117, 10, 11, 12, 13, 14, 3758 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3759 25, 26, 27, -1, 29, 30, 31, -1, -1, -1, 3760 -1, -1, 37, -1, 10, 11, 12, 13, 14, 15, 3761 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3762 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3763 65, 37, 38, -1, -1, -1, -1, 72, 73, -1, 3764 -1, 76, 10, 11, 12, 13, 14, 15, 16, 17, 3765 18, 19, 20, 21, 22, 23, 24, 25, 26, 65, 3766 -1, 29, 30, 31, -1, -1, 72, 73, -1, 37, 3767 38, -1, 107, -1, 109, -1, -1, -1, -1, -1, 3768 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 3769 -1, -1, -1, -1, -1, -1, -1, 65, -1, -1, 3770 -1, -1, -1, 109, 72, 73, -1, 113, -1, -1, 3771 -1, 117, 10, 11, 12, 13, 14, 15, 16, 17, 3772 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3773 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3774 -1, 109, -1, -1, -1, 113, -1, -1, -1, 117, 3775 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3776 20, 21, 22, 23, 24, 25, 26, 65, -1, 29, 3777 30, 31, -1, -1, 72, 73, -1, 37, -1, 10, 3778 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3779 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3780 31, -1, -1, -1, -1, 65, 37, -1, -1, 107, 3781 -1, 109, 72, 73, -1, -1, -1, -1, -1, 117, 3782 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3783 -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, 3784 -1, 72, 73, -1, -1, -1, -1, 107, -1, 109, 3785 -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, 3786 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3787 20, 21, 22, 23, 24, 25, 26, -1, 109, 29, 3788 30, 31, -1, -1, -1, -1, 117, 37, -1, 10, 3789 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3790 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3791 31, -1, -1, -1, -1, 65, 37, -1, -1, -1, 3792 -1, -1, 72, 73, -1, -1, -1, 10, 11, 12, 3793 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3794 23, 24, 25, 26, 65, -1, 29, 30, 31, -1, 3795 -1, 72, 73, -1, 37, -1, -1, -1, -1, 109, 3796 -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, 3797 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3798 -1, -1, 65, -1, -1, -1, -1, -1, 109, 72, 3799 73, -1, -1, -1, -1, -1, 117, 10, 11, 12, 3800 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3801 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3802 -1, -1, -1, -1, 37, -1, 109, -1, -1, -1, 3803 -1, -1, -1, -1, 117, 10, 11, 12, 13, 14, 3804 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3805 25, 26, 65, -1, 29, 30, 31, -1, -1, 72, 3806 73, -1, 37, -1, 10, 11, 12, 13, 14, 15, 3807 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3808 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3809 65, 37, -1, -1, -1, -1, 109, 72, 73, -1, 3810 -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, 3811 -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 3812 -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, 3813 -1, -1, -1, -1, 109, -1, -1, -1, -1, -1, 3814 -1, -1, 117, -1, -1, 10, 11, 12, 13, 14, 3815 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3816 25, 26, -1, 109, 29, 30, 31, -1, -1, -1, 3817 -1, 117, 37, -1, 10, 11, 12, 13, 14, 15, 3818 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3819 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3820 65, 37, -1, -1, -1, -1, -1, 72, 73, -1, 3821 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3822 -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 3823 -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, 3824 -1, -1, -1, -1, 109, -1, -1, -1, -1, -1, 3825 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 3826 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3827 -1, -1, -1, 109, -1, -1, -1, -1, -1, -1, 3828 -1, 117, 4, 5, 6, 7, 8, 9, 10, 11, 3829 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3830 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3831 -1, -1, -1, -1, -1, 37, -1, -1, 36, -1, 3832 38, 39, -1, 41, -1, -1, 44, 45, 46, 47, 3833 48, 49, 50, 51, -1, -1, 54, 55, -1, -1, 3834 -1, 59, 60, 65, 62, 67, 64, 69, -1, -1, 3835 72, 73, 70, -1, -1, -1, 74, -1, -1, 77, 3836 78, 79, 80, 81, 82, -1, 84, 85, -1, -1, 3837 -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, 3838 -1, -1, -1, -1, -1, -1, 108, -1, -1, 107, 3839 -1, 109, -1, -1, 112, -1, -1, -1, 116, 117, 3840 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, 3841 -1, 36, 130, 38, 39, -1, 41, -1, -1, 44, 3842 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, 3843 55, -1, -1, -1, 59, 60, -1, 62, -1, 64, 3844 -1, -1, -1, -1, -1, 70, -1, -1, -1, 74, 3845 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3846 85, -1, -1, -1, -1, -1, -1, 92, -1, -1, 3847 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3848 -1, -1, 107, -1, 109, -1, -1, 112, -1, -1, 3849 -1, 116, 117, 118, 119, 120, 121, -1, -1, -1, 3850 -1, 126, -1, -1, 36, 130, 38, 39, -1, 41, 3851 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 3852 -1, -1, 54, 55, -1, -1, -1, 59, 60, -1, 3853 62, -1, 64, -1, -1, -1, -1, -1, 70, -1, 3854 -1, -1, 74, -1, -1, 77, 78, 79, 80, 81, 3855 82, -1, 84, 85, -1, -1, -1, -1, -1, -1, 3856 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3857 -1, -1, -1, -1, -1, 107, -1, 109, -1, -1, 3858 112, -1, -1, -1, 116, 117, 118, 119, 120, 121, 3859 36, -1, 38, 39, 126, 41, 42, 43, 44, 45, 3860 46, 47, 48, 49, 50, 51, -1, -1, -1, 55, 3861 -1, -1, -1, 59, 60, -1, 62, -1, 64, -1, 3862 -1, -1, -1, -1, 70, -1, -1, -1, 74, -1, 3863 -1, 77, 78, 79, 80, 81, 82, -1, 84, 85, 3864 -1, -1, -1, -1, -1, -1, 92, -1, -1, -1, 3865 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3866 -1, 107, -1, 109, -1, -1, 112, -1, -1, -1, 3867 116, 117, 118, 119, 120, 121, 36, -1, 38, 39, 3868 126, 41, -1, -1, 44, 45, 46, 47, 48, 49, 3869 50, 51, -1, -1, -1, 55, -1, -1, -1, 59, 3870 60, -1, 62, -1, 64, -1, -1, -1, -1, -1, 3871 70, -1, -1, -1, 74, -1, -1, 77, 78, 79, 3872 80, 81, 82, -1, 84, 85, -1, -1, -1, -1, 3873 -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, 3874 -1, -1, -1, -1, -1, -1, -1, 107, -1, 109, 3875 -1, -1, 112, -1, -1, -1, 116, 117, 118, 119, 3876 120, 121, -1, -1, -1, -1, 126, 4, 5, 6, 3877 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3725 3878 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3726 27, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3879 -1, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3880 37, -1, -1, 36, -1, 38, -1, -1, -1, -1, 3881 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3882 -1, -1, 36, -1, 38, -1, -1, -1, 65, -1, 3883 67, 64, 69, -1, -1, 72, 73, 70, -1, -1, 3884 -1, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3885 64, 84, 85, -1, -1, -1, 70, 94, -1, 92, 3886 74, -1, -1, 77, 78, 79, 80, 81, 82, -1, 3887 84, 85, -1, -1, 107, -1, 109, -1, 92, -1, 3888 36, 114, 38, 116, 117, 118, 119, 120, 121, -1, 3889 -1, -1, -1, 107, -1, 109, -1, -1, 112, 36, 3890 -1, 38, 116, 117, 118, 119, 120, 121, 64, -1, 3891 -1, -1, -1, -1, 70, -1, -1, -1, 74, -1, 3892 -1, 77, 78, 79, 80, 81, 82, 64, 84, 85, 3893 -1, -1, -1, 70, -1, -1, 92, 74, -1, -1, 3894 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3895 -1, 107, -1, 109, -1, 92, -1, 36, -1, 38, 3896 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, 3897 107, -1, 109, -1, -1, -1, 36, -1, 38, 116, 3898 117, 118, 119, 120, 121, 64, -1, -1, -1, -1, 3899 -1, 70, -1, -1, -1, 74, -1, -1, 77, 78, 3900 79, 80, 81, 82, 64, 84, 85, -1, -1, -1, 3901 70, -1, -1, 92, 74, -1, -1, 77, 78, 79, 3902 80, 81, 82, -1, 84, 85, -1, -1, 107, -1, 3903 109, -1, 92, -1, 36, -1, 38, 116, 117, 118, 3904 119, 120, 121, -1, -1, -1, -1, 107, -1, 109, 3905 -1, -1, -1, 36, -1, 38, 116, 117, 118, 119, 3906 120, 121, 64, -1, -1, -1, -1, -1, 70, -1, 3907 -1, -1, 74, -1, -1, 77, 78, 79, 80, 81, 3908 82, 64, 84, 85, -1, -1, -1, 70, -1, -1, 3909 92, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3910 -1, 84, 85, -1, -1, 107, -1, -1, -1, 92, 3911 -1, 36, -1, 38, 116, 117, 118, 119, 120, 121, 3912 -1, -1, -1, -1, 107, -1, -1, -1, -1, -1, 3913 -1, -1, -1, 116, 117, 118, 119, 120, 121, 64, 3914 -1, -1, -1, -1, -1, 70, -1, -1, -1, 74, 3915 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3916 85, -1, -1, -1, -1, -1, -1, 92, -1, -1, 3917 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3918 -1, -1, 107, -1, -1, -1, -1, -1, -1, -1, 3919 -1, 116, 117, 118, 119, 120, 121, 4, 5, 6, 3920 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3921 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3922 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3727 3923 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3728 3924 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3729 -1, -1, -1, 60, -1, -1, -1, -1, 65, -1, 3730 67, 68, 69, -1, 71, -1, -1, -1, -1, 76, 3731 77, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3732 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3733 29, 30, 31, -1, 101, -1, 103, -1, 37, -1, 3734 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3735 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3736 -1, 60, -1, -1, -1, -1, 65, -1, 67, 68, 3737 69, -1, -1, -1, -1, -1, -1, 76, 77, 10, 3738 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3739 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3740 31, -1, 101, -1, 103, -1, 37, -1, -1, -1, 3741 -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, 3742 -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, 3743 -1, -1, -1, -1, 65, -1, 67, 68, 69, -1, 3744 -1, -1, -1, -1, -1, 76, 77, 10, 11, 12, 3745 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3746 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3747 101, -1, 103, -1, 37, -1, -1, -1, -1, -1, 3748 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3749 -1, -1, -1, -1, -1, -1, -1, 60, -1, -1, 3750 -1, -1, 65, -1, 67, 68, 69, -1, -1, -1, 3751 -1, -1, -1, 76, 77, 10, 11, 12, 13, 14, 3752 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3753 25, 26, -1, -1, 29, 30, 31, -1, 101, -1, 3754 103, -1, 37, -1, -1, -1, -1, -1, 111, -1, 3755 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3756 -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, 3757 65, -1, 67, 68, 69, -1, -1, -1, -1, -1, 3758 -1, 76, 77, 10, 11, 12, 13, 14, 15, 16, 3759 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3760 -1, -1, 29, 30, 31, -1, 101, -1, 103, -1, 3761 37, -1, -1, -1, -1, -1, 111, -1, -1, -1, 3762 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3763 -1, -1, -1, 60, -1, -1, -1, -1, 65, -1, 3764 67, 68, 69, -1, -1, -1, -1, -1, -1, 76, 3765 77, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3766 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3767 29, 30, 31, -1, -1, -1, 103, -1, 37, -1, 3768 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3769 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3770 -1, 60, -1, -1, -1, -1, -1, -1, 67, 68, 3771 -1, -1, 71, 10, 11, 12, 13, 14, 15, 16, 3772 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3773 27, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3774 37, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3775 -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, 3776 -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, 3777 67, 68, -1, -1, 71, 10, 11, 12, 13, 14, 3778 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3779 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3780 -1, -1, 37, 38, 101, -1, 103, -1, -1, -1, 3781 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3782 -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, 3783 -1, -1, 67, 68, 10, 11, 12, 13, 14, 15, 3784 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3785 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3786 -1, 37, 38, -1, -1, -1, -1, -1, 103, -1, 3787 -1, -1, 107, -1, -1, -1, 111, -1, -1, -1, 3788 -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, 3789 -1, 67, 68, 10, 11, 12, 13, 14, 15, 16, 3790 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3791 27, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3792 37, -1, -1, -1, -1, -1, -1, 103, -1, -1, 3793 -1, 107, -1, -1, -1, 111, -1, -1, -1, -1, 3794 -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, 3795 67, 68, -1, -1, 71, 10, 11, 12, 13, 14, 3796 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3797 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3798 -1, -1, 37, 38, -1, -1, 103, -1, -1, -1, 3799 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3800 -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, 3801 -1, -1, 67, 68, 10, 11, 12, 13, 14, 15, 3802 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3803 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3804 -1, 37, -1, -1, -1, -1, -1, -1, 103, -1, 3805 -1, -1, 107, -1, -1, -1, 111, -1, -1, -1, 3806 -1, -1, -1, -1, 60, -1, -1, -1, -1, 65, 3807 -1, 67, 68, 10, 11, 12, 13, 14, 15, 16, 3808 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3809 -1, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3810 37, 38, -1, -1, -1, -1, -1, 103, -1, -1, 3811 -1, -1, -1, -1, -1, 111, -1, -1, -1, -1, 3812 -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, 3813 67, 68, 10, 11, 12, 13, 14, 15, 16, 17, 3814 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3815 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3816 -1, -1, -1, -1, -1, -1, 103, -1, -1, -1, 3817 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3818 -1, -1, 60, -1, -1, -1, -1, -1, -1, 67, 3819 68, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3820 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3821 29, 30, 31, -1, -1, -1, -1, -1, 37, -1, 3822 -1, -1, -1, 101, -1, 103, -1, -1, -1, -1, 3823 -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, 3824 -1, 60, -1, -1, -1, -1, -1, -1, 67, 68, 3825 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3826 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3827 30, 31, -1, -1, -1, -1, -1, 37, -1, -1, 3828 -1, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3829 -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, 3830 60, -1, -1, -1, -1, -1, -1, 67, 68, 10, 3831 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3832 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3833 31, -1, -1, -1, -1, -1, 37, -1, -1, -1, 3834 -1, -1, -1, 103, -1, -1, -1, -1, -1, -1, 3835 -1, 111, -1, -1, -1, -1, -1, -1, -1, 60, 3836 -1, -1, -1, -1, -1, -1, 67, 68, 10, 11, 3837 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3838 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3839 -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, 3840 -1, -1, 103, -1, -1, -1, -1, -1, -1, -1, 3841 111, -1, -1, -1, -1, -1, -1, -1, 60, -1, 3842 -1, -1, -1, -1, -1, 67, 68, 10, 11, 12, 3843 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3844 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3845 -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, 3846 -1, 103, -1, -1, -1, -1, -1, -1, -1, 111, 3847 -1, -1, -1, -1, -1, -1, -1, 60, -1, -1, 3848 -1, -1, -1, -1, 67, 68, 10, 11, 12, 13, 3849 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3850 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3851 -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, 3852 103, -1, -1, -1, -1, -1, -1, -1, 111, -1, 3853 -1, -1, -1, -1, -1, -1, 60, -1, -1, -1, 3854 -1, -1, -1, 67, 68, 10, 11, 12, 13, 14, 3855 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3856 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3857 -1, -1, 37, -1, -1, -1, -1, -1, -1, 103, 3858 -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, 3859 -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, 3860 -1, -1, 67, 68, 10, 11, 12, 13, 14, 15, 3861 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3862 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3863 -1, 37, -1, -1, -1, -1, -1, -1, 103, -1, 3864 -1, -1, -1, -1, -1, -1, 111, -1, -1, -1, 3865 -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, 3866 -1, 67, 68, 10, 11, 12, 13, 14, 15, 16, 3867 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3868 -1, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3869 37, -1, -1, -1, -1, -1, -1, 103, -1, -1, 3870 -1, -1, -1, -1, -1, 111, -1, -1, -1, -1, 3871 -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, 3872 67, 68, 10, 11, 12, 13, 14, 15, 16, 17, 3873 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3874 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3875 -1, -1, -1, -1, -1, -1, 103, -1, -1, -1, 3876 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3877 -1, -1, 60, -1, -1, -1, -1, -1, -1, 67, 3878 68, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3879 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3880 29, 30, 31, -1, -1, -1, -1, -1, 37, -1, 3881 -1, -1, -1, -1, -1, 103, -1, -1, -1, -1, 3882 -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, 3883 -1, 60, -1, -1, -1, -1, -1, -1, 67, 68, 3884 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3885 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3886 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3887 -1, -1, -1, 37, 103, -1, -1, -1, -1, -1, 3888 -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, 3889 -1, -1, -1, -1, -1, -1, 60, -1, 62, -1, 3890 64, -1, -1, 67, 68, -1, 36, -1, 38, 39, 3891 -1, 41, -1, -1, 44, 45, 46, 47, 48, 49, 3892 50, 51, 52, 53, -1, -1, 56, 57, -1, 59, 3893 -1, -1, -1, -1, -1, 65, -1, -1, 102, 69, 3894 -1, -1, 72, 73, 74, 75, 76, 77, -1, 79, 3895 80, -1, -1, -1, -1, -1, -1, 87, -1, -1, 3896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3897 -1, 101, -1, 103, -1, -1, 106, -1, -1, -1, 3898 110, 111, 112, 113, 114, 115, -1, 36, -1, 38, 3899 39, -1, 41, -1, 124, 44, 45, 46, 47, 48, 3900 49, 50, 51, -1, 53, -1, -1, 56, 57, -1, 3901 59, -1, -1, -1, -1, -1, 65, -1, -1, -1, 3902 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3903 79, 80, -1, -1, -1, -1, -1, -1, 87, -1, 3904 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3905 -1, -1, 101, -1, 103, -1, -1, 106, -1, -1, 3906 -1, 110, 111, 112, 113, 114, 115, -1, -1, -1, 3907 -1, -1, -1, -1, -1, 124, 4, 5, 6, 7, 3908 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3909 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3910 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3911 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3912 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3913 30, 31, 60, -1, 62, -1, 64, 37, -1, 67, 3914 68, -1, 36, -1, 38, 39, -1, 41, 42, 43, 3915 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 3916 60, 89, 56, 57, -1, 59, -1, 67, 68, -1, 3917 -1, 65, -1, -1, -1, 69, -1, -1, 72, 73, 3918 74, 75, 76, 77, -1, 79, 80, -1, -1, -1, 3919 -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, 3920 -1, -1, -1, -1, -1, -1, -1, 101, -1, 103, 3921 -1, -1, 106, -1, -1, -1, 110, 111, 112, 113, 3922 114, 115, 36, -1, 38, 39, -1, 41, 42, 43, 3923 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, 3924 -1, -1, 56, 57, -1, 59, -1, -1, -1, -1, 3925 -1, 65, -1, -1, -1, 69, -1, -1, 72, 73, 3926 74, 75, 76, 77, -1, 79, 80, -1, -1, -1, 3927 -1, -1, -1, 87, -1, -1, -1, -1, -1, 36, 3928 -1, 38, -1, -1, -1, -1, -1, 101, -1, 103, 3929 -1, -1, 106, -1, -1, -1, 110, 111, 112, 113, 3930 114, 115, 59, -1, -1, -1, -1, -1, 65, -1, 3931 -1, -1, 69, -1, -1, 72, 73, 74, 75, 76, 3932 77, -1, 79, 80, -1, -1, -1, -1, -1, -1, 3933 87, -1, -1, -1, -1, -1, 36, -1, 38, -1, 3934 -1, -1, -1, -1, 101, -1, 103, -1, -1, -1, 3935 -1, -1, 109, 110, 111, 112, 113, 114, 115, 59, 3936 -1, -1, -1, -1, -1, 65, -1, -1, -1, 69, 3937 -1, -1, 72, 73, 74, 75, 76, 77, -1, 79, 3938 80, -1, -1, -1, -1, -1, -1, 87, -1, -1, 3939 -1, -1, -1, 36, -1, 38, -1, -1, -1, -1, 3940 -1, 101, -1, 103, -1, -1, 106, -1, -1, -1, 3941 110, 111, 112, 113, 114, 115, 59, -1, -1, -1, 3942 -1, -1, 65, -1, -1, -1, 69, -1, -1, 72, 3943 73, 74, 75, 76, 77, -1, 79, 80, -1, -1, 3944 -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, 3945 36, -1, 38, -1, -1, -1, -1, -1, 101, -1, 3946 103, -1, -1, -1, -1, -1, -1, 110, 111, 112, 3947 113, 114, 115, 59, -1, -1, -1, -1, -1, 65, 3948 -1, -1, -1, 69, -1, -1, 72, 73, 74, 75, 3949 76, 77, -1, 79, 80, -1, -1, -1, -1, -1, 3950 -1, 87, -1, -1, -1, -1, -1, 36, -1, 38, 3951 -1, -1, -1, -1, -1, 101, -1, 103, -1, -1, 3952 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115, 3953 59, -1, -1, -1, -1, -1, 65, -1, -1, -1, 3954 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3955 79, 80, -1, -1, -1, -1, -1, -1, 87, -1, 3956 -1, -1, -1, -1, 36, -1, 38, -1, -1, -1, 3957 -1, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3958 -1, 110, 111, 112, 113, 114, 115, 59, -1, -1, 3959 -1, -1, -1, 65, -1, -1, -1, 69, -1, -1, 3960 72, 73, 74, 75, 76, 77, -1, 79, 80, -1, 3961 -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, 3962 -1, 36, -1, 38, -1, -1, -1, -1, -1, 101, 3963 -1, 103, -1, -1, -1, -1, -1, -1, 110, 111, 3964 112, 113, 114, 115, 59, -1, -1, -1, -1, -1, 3965 65, -1, -1, -1, 69, -1, -1, 72, 73, 74, 3966 75, 76, 77, -1, 79, 80, -1, -1, -1, -1, 3967 -1, -1, 87, -1, -1, -1, -1, -1, 36, -1, 3968 38, -1, -1, -1, -1, -1, 101, -1, -1, -1, 3969 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114, 3970 115, 59, -1, -1, -1, -1, -1, 65, -1, -1, 3971 -1, 69, -1, -1, 72, 73, 74, 75, 76, 77, 3972 -1, 79, 80, -1, -1, -1, -1, -1, -1, 87, 3973 -1, -1, -1, -1, -1, 36, -1, 38, -1, -1, 3974 -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, 3975 -1, -1, 110, 111, 112, 113, 114, 115, 59, -1, 3976 -1, -1, -1, -1, 65, -1, -1, -1, 69, -1, 3977 -1, 72, 73, 74, 75, 76, 77, -1, 79, 80, 3978 -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, 3979 -1, -1, 36, -1, 38, -1, -1, -1, -1, -1, 3980 101, -1, -1, -1, -1, -1, -1, -1, -1, 110, 3981 111, 112, 113, 114, 115, 59, -1, -1, -1, -1, 3982 -1, 65, -1, -1, -1, 69, -1, -1, 72, 73, 3983 74, 75, 76, 77, -1, 79, 80, -1, -1, -1, 3984 -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, 3985 -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, 3986 -1, -1, -1, -1, -1, -1, 110, 111, 112, 113, 3987 114, 115, 4, 5, 6, 7, 8, 9, 10, 11, 3988 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3989 22, 23, 24, 25, 26, -1, -1, -1, -1, -1, 3990 -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, 3991 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3992 -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, 3993 62, -1, 64, 65, -1, 67, 68, 69, -1, -1, 3994 -1, -1, -1, -1, 76, 77, 3, 4, 5, 6, 3925 -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 3926 67, -1, 69, 70, -1, 72, 73, 74, -1, -1, 3927 -1, -1, -1, -1, 81, 82, 3, 4, 5, 6, 3995 3928 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3996 3929 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, … … 3998 3931 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3999 3932 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4000 -1, -1, -1, 60, -1, 62, -1, 64, -1, -1, 4001 67, 68, 3, 4, 5, 6, 7, 8, 9, 10, 4002 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 4003 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 4004 31, -1, -1, -1, -1, -1, 37, -1, -1, -1, 4005 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4006 -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, 4007 -1, 62, -1, 64, -1, -1, 67, 68, 4, 5, 3933 -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 3934 67, -1, 69, -1, -1, 72, 73, 3, 4, 5, 4008 3935 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 4009 3936 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, … … 4011 3938 -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, 4012 3939 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4013 -1, -1, -1, -1, 60, -1, 62, -1, 64, -1, 4014 -1, 67, 68, 10, 11, 12, 13, 14, 15, 16, 4015 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 4016 -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, 4017 37, 10, 11, 12, 13, 14, 15, 16, 17, 18, 4018 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 4019 29, 30, 31, 60, -1, -1, -1, -1, 37, -1, 4020 67, 68, -1, -1, -1, -1, -1, -1, -1, -1, 3940 -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 3941 -1, 67, -1, 69, -1, -1, 72, 73, 4, 5, 3942 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3943 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3944 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3945 -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, 4021 3946 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4022 -1, 60, -1, -1, -1, -1, -1, -1, 67, 68 3947 -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 3948 -1, 67, -1, 69, -1, -1, 72, 73 4023 3949 }; 4024 3950 … … 4030 3956 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 4031 3957 22, 23, 24, 25, 26, 29, 30, 31, 32, 35, 4032 37, 38, 57, 60, 62, 64, 65, 67, 68, 69, 4033 76, 77, 101, 103, 111, 129, 132, 189, 203, 204, 4034 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 4035 215, 216, 217, 218, 219, 220, 222, 223, 224, 225, 4036 226, 227, 228, 229, 231, 232, 233, 234, 235, 236, 4037 237, 245, 246, 272, 273, 274, 282, 285, 291, 292, 4038 294, 296, 297, 303, 308, 312, 313, 314, 315, 316, 4039 317, 318, 319, 339, 356, 357, 358, 359, 65, 111, 4040 131, 206, 208, 216, 218, 228, 232, 234, 273, 75, 4041 101, 301, 302, 303, 301, 301, 65, 67, 68, 69, 4042 130, 131, 262, 263, 283, 284, 67, 68, 263, 101, 4043 294, 11, 190, 101, 111, 308, 313, 314, 315, 317, 4044 318, 319, 104, 126, 103, 209, 216, 218, 312, 316, 4045 355, 356, 359, 360, 127, 123, 266, 106, 127, 164, 4046 67, 68, 129, 261, 127, 127, 127, 108, 127, 67, 4047 68, 101, 111, 298, 307, 308, 309, 310, 311, 312, 4048 316, 320, 321, 322, 323, 324, 330, 3, 27, 71, 4049 230, 3, 5, 67, 103, 111, 208, 219, 223, 226, 4050 235, 274, 312, 316, 359, 206, 208, 218, 228, 232, 4051 234, 273, 312, 316, 32, 224, 224, 219, 226, 127, 4052 224, 219, 224, 219, 68, 101, 106, 263, 274, 106, 4053 263, 224, 219, 108, 127, 127, 0, 126, 101, 164, 4054 301, 301, 126, 103, 216, 218, 357, 261, 261, 218, 4055 123, 101, 111, 298, 308, 312, 103, 111, 359, 295, 4056 221, 303, 101, 279, 101, 101, 49, 101, 36, 38, 4057 59, 65, 69, 72, 73, 74, 75, 79, 80, 87, 4058 101, 103, 110, 111, 112, 113, 114, 115, 128, 132, 4059 133, 134, 135, 140, 141, 142, 143, 144, 145, 146, 4060 147, 148, 149, 150, 151, 152, 153, 155, 157, 216, 4061 265, 281, 355, 360, 218, 102, 102, 102, 102, 102, 4062 102, 102, 67, 68, 103, 216, 261, 339, 357, 103, 4063 111, 155, 208, 209, 215, 218, 222, 223, 228, 231, 4064 232, 234, 251, 252, 256, 257, 258, 259, 273, 339, 4065 351, 352, 353, 354, 359, 360, 104, 101, 312, 316, 4066 359, 101, 108, 124, 103, 106, 111, 155, 267, 107, 4067 126, 108, 124, 101, 108, 124, 108, 124, 108, 124, 4068 301, 124, 308, 309, 310, 311, 321, 322, 323, 324, 4069 218, 307, 320, 57, 300, 103, 301, 338, 339, 301, 4070 301, 164, 126, 101, 301, 338, 301, 301, 218, 298, 4071 101, 101, 217, 218, 216, 218, 104, 126, 216, 355, 4072 360, 164, 126, 261, 266, 208, 223, 312, 316, 164, 4073 126, 283, 218, 228, 124, 218, 218, 281, 38, 103, 4074 216, 238, 239, 240, 241, 355, 359, 106, 247, 263, 4075 106, 218, 283, 124, 124, 294, 126, 131, 260, 3, 4076 127, 198, 199, 213, 215, 218, 126, 300, 101, 300, 4077 155, 308, 218, 101, 126, 261, 106, 32, 33, 34, 4078 216, 275, 276, 278, 126, 121, 123, 280, 126, 219, 4079 225, 226, 261, 304, 305, 306, 101, 133, 101, 140, 4080 140, 142, 101, 140, 101, 101, 140, 140, 131, 103, 4081 155, 160, 164, 216, 264, 355, 104, 126, 142, 142, 4082 75, 78, 79, 80, 101, 103, 105, 90, 91, 92, 4083 93, 94, 95, 96, 97, 98, 99, 123, 159, 142, 4084 111, 116, 117, 113, 114, 81, 82, 83, 84, 118, 4085 119, 85, 86, 112, 120, 121, 87, 88, 122, 123, 4086 362, 101, 111, 334, 335, 336, 337, 338, 102, 108, 4087 101, 338, 339, 101, 338, 339, 126, 101, 216, 357, 4088 104, 126, 103, 111, 127, 216, 218, 350, 351, 359, 4089 360, 127, 101, 103, 111, 308, 325, 326, 327, 328, 4090 329, 330, 331, 332, 333, 339, 340, 341, 342, 343, 4091 344, 345, 111, 359, 218, 127, 127, 111, 216, 218, 4092 352, 261, 216, 339, 352, 261, 101, 126, 126, 126, 4093 104, 126, 65, 73, 103, 105, 263, 267, 268, 269, 4094 270, 271, 126, 126, 126, 126, 126, 126, 298, 102, 4095 102, 102, 102, 102, 102, 102, 307, 320, 101, 266, 4096 104, 198, 126, 298, 160, 265, 160, 265, 298, 103, 4097 198, 300, 164, 126, 198, 102, 240, 241, 104, 126, 4098 101, 109, 111, 242, 244, 307, 308, 320, 338, 346, 4099 347, 348, 349, 107, 239, 108, 124, 108, 124, 263, 4100 238, 108, 361, 123, 248, 247, 218, 253, 254, 255, 4101 258, 259, 102, 108, 164, 126, 111, 155, 126, 215, 4102 218, 252, 351, 359, 292, 293, 101, 111, 325, 102, 4103 108, 362, 263, 275, 101, 106, 263, 265, 275, 102, 4104 108, 101, 133, 102, 109, 264, 264, 103, 131, 137, 4105 155, 265, 264, 104, 126, 102, 108, 102, 101, 111, 4106 346, 102, 108, 155, 103, 131, 103, 136, 137, 126, 4107 103, 131, 155, 155, 142, 142, 142, 143, 143, 144, 4108 144, 145, 145, 145, 145, 146, 146, 147, 148, 149, 4109 150, 151, 109, 160, 155, 126, 335, 336, 337, 218, 4110 334, 301, 301, 155, 265, 126, 260, 111, 126, 216, 4111 339, 352, 218, 222, 104, 126, 104, 359, 104, 101, 4112 126, 308, 326, 327, 328, 331, 341, 342, 343, 104, 4113 126, 218, 325, 329, 340, 101, 301, 344, 362, 301, 4114 301, 362, 101, 301, 344, 301, 301, 301, 301, 339, 4115 216, 350, 360, 261, 104, 108, 104, 108, 362, 216, 4116 352, 362, 249, 250, 251, 252, 249, 249, 261, 155, 4117 126, 103, 263, 109, 108, 361, 267, 73, 103, 109, 4118 271, 28, 200, 201, 261, 249, 131, 298, 131, 300, 4119 101, 338, 339, 101, 338, 339, 133, 339, 164, 253, 4120 102, 102, 102, 102, 104, 164, 198, 164, 106, 124, 4121 124, 103, 308, 347, 348, 349, 153, 154, 218, 346, 4122 243, 244, 243, 301, 301, 263, 301, 107, 263, 107, 4123 154, 361, 127, 127, 131, 213, 127, 127, 249, 101, 4124 111, 359, 127, 107, 218, 276, 277, 127, 126, 126, 4125 101, 127, 102, 305, 160, 161, 109, 124, 103, 133, 4126 191, 192, 193, 102, 102, 126, 109, 102, 102, 102, 4127 155, 218, 106, 142, 157, 155, 156, 158, 108, 127, 4128 126, 126, 102, 108, 155, 126, 153, 109, 253, 102, 4129 102, 102, 334, 253, 102, 249, 216, 352, 103, 111, 4130 155, 155, 218, 331, 253, 102, 102, 102, 102, 102, 4131 102, 102, 7, 218, 325, 329, 340, 126, 126, 362, 4132 126, 126, 102, 127, 127, 127, 127, 266, 127, 153, 4133 154, 155, 299, 126, 267, 269, 107, 126, 202, 263, 4134 38, 39, 41, 44, 45, 46, 47, 48, 49, 50, 4135 51, 53, 56, 103, 131, 161, 162, 163, 164, 165, 4136 166, 168, 169, 181, 183, 184, 189, 203, 297, 28, 4137 127, 123, 266, 126, 126, 102, 127, 164, 238, 104, 4138 102, 102, 102, 346, 242, 248, 107, 102, 108, 104, 4139 104, 127, 218, 108, 362, 279, 102, 275, 206, 208, 4140 216, 287, 288, 289, 290, 281, 102, 102, 109, 154, 4141 101, 102, 109, 108, 155, 155, 268, 108, 127, 158, 4142 104, 131, 138, 139, 155, 137, 127, 138, 153, 157, 4143 127, 101, 338, 339, 127, 127, 126, 127, 127, 127, 4144 155, 102, 127, 101, 338, 339, 101, 344, 101, 344, 4145 339, 217, 7, 111, 127, 155, 253, 253, 252, 256, 4146 256, 257, 108, 108, 102, 102, 104, 89, 115, 127, 4147 127, 138, 267, 155, 108, 124, 203, 207, 218, 222, 4148 101, 101, 162, 101, 101, 124, 131, 124, 131, 111, 4149 131, 161, 101, 164, 124, 155, 104, 109, 124, 127, 4150 126, 127, 202, 102, 155, 253, 253, 301, 102, 107, 4151 101, 338, 339, 126, 102, 126, 127, 298, 107, 126, 4152 127, 127, 102, 106, 191, 104, 154, 124, 191, 193, 4153 108, 127, 361, 156, 104, 127, 78, 105, 108, 127, 4154 127, 104, 127, 102, 126, 102, 102, 104, 104, 104, 4155 127, 102, 126, 126, 126, 155, 155, 127, 104, 127, 4156 127, 127, 127, 126, 126, 154, 154, 104, 104, 127, 4157 127, 263, 218, 160, 160, 45, 160, 126, 124, 124, 4158 160, 124, 124, 160, 54, 55, 185, 186, 187, 124, 4159 301, 166, 107, 124, 127, 127, 126, 89, 258, 259, 4160 102, 288, 108, 124, 108, 124, 107, 286, 109, 133, 4161 102, 102, 109, 158, 104, 107, 104, 103, 139, 103, 4162 139, 139, 104, 104, 104, 253, 104, 253, 253, 253, 4163 127, 127, 104, 104, 102, 102, 104, 108, 89, 252, 4164 89, 127, 104, 104, 102, 102, 101, 102, 161, 182, 4165 203, 124, 102, 101, 164, 187, 54, 162, 102, 102, 4166 253, 106, 126, 126, 287, 133, 194, 101, 124, 194, 4167 127, 109, 126, 126, 127, 127, 127, 127, 104, 104, 4168 126, 127, 104, 162, 42, 43, 106, 172, 173, 174, 4169 160, 162, 127, 102, 161, 106, 174, 89, 126, 101, 4170 127, 126, 261, 298, 107, 108, 109, 154, 102, 104, 4171 155, 138, 138, 102, 102, 102, 102, 256, 40, 154, 4172 170, 171, 299, 109, 126, 162, 172, 102, 124, 162, 4173 124, 126, 102, 126, 89, 126, 102, 287, 133, 131, 4174 195, 102, 124, 109, 127, 127, 162, 89, 108, 109, 4175 127, 196, 197, 203, 124, 161, 161, 196, 164, 188, 4176 216, 355, 102, 126, 107, 102, 108, 155, 104, 104, 4177 154, 170, 173, 175, 176, 126, 124, 173, 177, 178, 4178 127, 101, 111, 298, 346, 131, 164, 188, 101, 124, 4179 131, 162, 167, 107, 173, 203, 161, 52, 167, 180, 4180 107, 173, 102, 218, 127, 281, 162, 167, 124, 179, 4181 180, 167, 180, 164, 102, 102, 179, 127, 164, 127 3958 37, 38, 62, 65, 67, 69, 70, 72, 73, 74, 3959 81, 82, 107, 109, 117, 135, 138, 195, 209, 210, 3960 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 3961 221, 222, 223, 224, 225, 226, 228, 229, 230, 231, 3962 232, 233, 234, 235, 237, 238, 239, 240, 241, 242, 3963 243, 251, 252, 278, 279, 280, 288, 291, 297, 298, 3964 300, 302, 303, 309, 314, 318, 319, 320, 321, 322, 3965 323, 324, 325, 345, 362, 363, 364, 365, 70, 117, 3966 137, 212, 214, 222, 224, 234, 238, 240, 279, 80, 3967 107, 307, 308, 309, 307, 307, 70, 72, 73, 74, 3968 136, 137, 268, 269, 289, 290, 72, 73, 269, 107, 3969 300, 11, 196, 107, 117, 314, 319, 320, 321, 323, 3970 324, 325, 110, 132, 109, 215, 222, 224, 318, 322, 3971 361, 362, 365, 366, 133, 105, 129, 272, 112, 133, 3972 170, 72, 73, 135, 267, 133, 133, 133, 114, 133, 3973 72, 73, 107, 117, 304, 313, 314, 315, 316, 317, 3974 318, 322, 326, 327, 328, 329, 330, 336, 3, 27, 3975 76, 236, 3, 5, 72, 109, 117, 214, 225, 229, 3976 232, 241, 280, 318, 322, 365, 212, 214, 224, 234, 3977 238, 240, 279, 318, 322, 32, 230, 230, 225, 232, 3978 133, 230, 225, 230, 225, 73, 107, 112, 269, 280, 3979 112, 269, 230, 225, 114, 133, 133, 0, 132, 107, 3980 170, 307, 307, 132, 109, 222, 224, 363, 267, 267, 3981 224, 129, 107, 117, 304, 314, 318, 109, 117, 365, 3982 301, 227, 309, 107, 285, 107, 107, 49, 107, 36, 3983 38, 64, 70, 74, 77, 78, 79, 80, 84, 85, 3984 92, 107, 109, 116, 117, 118, 119, 120, 121, 134, 3985 138, 139, 140, 141, 146, 147, 148, 149, 150, 151, 3986 152, 153, 154, 155, 156, 157, 158, 159, 161, 163, 3987 222, 271, 287, 361, 366, 224, 108, 108, 108, 108, 3988 108, 108, 108, 72, 73, 109, 222, 267, 345, 363, 3989 109, 117, 161, 214, 215, 221, 224, 228, 229, 234, 3990 237, 238, 240, 257, 258, 262, 263, 264, 265, 279, 3991 345, 357, 358, 359, 360, 365, 366, 110, 107, 318, 3992 322, 365, 107, 114, 130, 109, 112, 117, 161, 273, 3993 273, 113, 132, 114, 130, 107, 114, 130, 114, 130, 3994 114, 130, 307, 130, 314, 315, 316, 317, 327, 328, 3995 329, 330, 224, 313, 326, 62, 306, 109, 307, 344, 3996 345, 307, 307, 170, 132, 107, 307, 344, 307, 307, 3997 224, 304, 107, 107, 223, 224, 222, 224, 110, 132, 3998 222, 361, 366, 170, 132, 267, 272, 214, 229, 318, 3999 322, 170, 132, 289, 224, 234, 130, 224, 224, 287, 4000 38, 109, 222, 244, 245, 246, 247, 361, 365, 112, 4001 253, 269, 112, 224, 289, 130, 130, 300, 132, 137, 4002 266, 3, 133, 204, 205, 219, 221, 224, 132, 306, 4003 107, 306, 161, 314, 224, 107, 132, 267, 112, 32, 4004 33, 34, 222, 281, 282, 284, 132, 127, 129, 286, 4005 132, 225, 231, 232, 267, 310, 311, 312, 107, 139, 4006 107, 146, 146, 148, 107, 146, 107, 107, 146, 146, 4007 137, 109, 161, 166, 170, 222, 270, 361, 110, 132, 4008 148, 148, 80, 83, 84, 85, 107, 109, 111, 112, 4009 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 4010 129, 165, 148, 117, 122, 123, 119, 120, 86, 87, 4011 88, 89, 124, 125, 90, 91, 118, 126, 127, 92, 4012 93, 128, 129, 368, 107, 117, 340, 341, 342, 343, 4013 344, 108, 114, 107, 344, 345, 107, 344, 345, 132, 4014 107, 222, 363, 110, 132, 109, 117, 133, 222, 224, 4015 356, 357, 365, 366, 133, 107, 109, 117, 314, 331, 4016 332, 333, 334, 335, 336, 337, 338, 339, 345, 346, 4017 347, 348, 349, 350, 351, 117, 365, 224, 133, 133, 4018 117, 222, 224, 358, 267, 222, 345, 358, 267, 107, 4019 132, 132, 132, 110, 132, 70, 78, 109, 111, 269, 4020 273, 274, 275, 276, 277, 132, 132, 132, 132, 132, 4021 132, 304, 108, 108, 108, 108, 108, 108, 108, 313, 4022 326, 107, 272, 110, 204, 132, 304, 166, 271, 166, 4023 271, 304, 109, 204, 306, 170, 132, 204, 108, 246, 4024 247, 110, 132, 107, 115, 117, 248, 250, 313, 314, 4025 326, 344, 352, 353, 354, 355, 113, 245, 114, 130, 4026 114, 130, 269, 244, 114, 367, 129, 254, 253, 224, 4027 259, 260, 261, 264, 265, 108, 114, 170, 132, 117, 4028 161, 132, 221, 224, 258, 357, 365, 298, 299, 107, 4029 117, 331, 108, 114, 368, 269, 281, 107, 112, 269, 4030 271, 281, 108, 114, 107, 139, 108, 115, 270, 270, 4031 109, 137, 143, 161, 271, 270, 110, 132, 108, 114, 4032 108, 107, 117, 352, 108, 114, 161, 109, 137, 109, 4033 142, 143, 132, 109, 137, 142, 161, 161, 148, 148, 4034 148, 149, 149, 150, 150, 151, 151, 151, 151, 152, 4035 152, 153, 154, 155, 156, 157, 115, 166, 161, 132, 4036 341, 342, 343, 224, 340, 307, 307, 161, 271, 132, 4037 266, 117, 132, 222, 345, 358, 224, 228, 110, 132, 4038 110, 365, 110, 107, 132, 314, 332, 333, 334, 337, 4039 347, 348, 349, 110, 132, 224, 331, 335, 346, 107, 4040 307, 350, 368, 307, 307, 368, 107, 307, 350, 307, 4041 307, 307, 307, 345, 222, 356, 366, 267, 110, 114, 4042 110, 114, 368, 222, 358, 368, 255, 256, 257, 258, 4043 255, 255, 267, 161, 132, 109, 269, 115, 114, 367, 4044 273, 78, 109, 115, 277, 28, 206, 207, 267, 255, 4045 137, 304, 137, 306, 107, 344, 345, 107, 344, 345, 4046 139, 345, 170, 259, 108, 108, 108, 108, 110, 170, 4047 204, 170, 112, 130, 130, 109, 314, 353, 354, 355, 4048 159, 160, 224, 352, 249, 250, 249, 307, 307, 269, 4049 307, 113, 269, 113, 160, 367, 133, 133, 137, 219, 4050 133, 133, 255, 107, 117, 365, 133, 113, 224, 282, 4051 283, 133, 132, 132, 107, 133, 108, 311, 166, 167, 4052 115, 130, 109, 139, 197, 198, 199, 108, 108, 132, 4053 115, 108, 108, 108, 161, 224, 112, 148, 163, 161, 4054 162, 164, 114, 133, 132, 132, 108, 114, 161, 132, 4055 113, 159, 115, 259, 108, 108, 108, 340, 259, 108, 4056 255, 222, 358, 109, 117, 161, 161, 224, 337, 259, 4057 108, 108, 108, 108, 108, 108, 108, 7, 224, 331, 4058 335, 346, 132, 132, 368, 132, 132, 108, 133, 133, 4059 133, 133, 272, 133, 159, 160, 161, 305, 132, 273, 4060 275, 113, 132, 208, 269, 38, 39, 41, 44, 45, 4061 46, 47, 48, 49, 50, 51, 55, 59, 60, 109, 4062 126, 137, 167, 168, 169, 170, 171, 172, 174, 175, 4063 187, 189, 190, 195, 209, 303, 28, 133, 129, 272, 4064 132, 132, 108, 133, 170, 244, 110, 108, 108, 108, 4065 352, 248, 254, 113, 108, 114, 110, 110, 133, 224, 4066 114, 368, 285, 108, 281, 212, 214, 222, 293, 294, 4067 295, 296, 287, 108, 108, 115, 160, 107, 108, 115, 4068 114, 161, 161, 274, 114, 133, 164, 110, 137, 144, 4069 145, 161, 143, 133, 144, 159, 163, 133, 107, 344, 4070 345, 133, 133, 132, 133, 133, 133, 161, 108, 133, 4071 107, 344, 345, 107, 350, 107, 350, 345, 223, 7, 4072 117, 133, 161, 259, 259, 258, 262, 262, 263, 114, 4073 114, 108, 108, 110, 94, 121, 133, 133, 144, 273, 4074 161, 114, 130, 209, 213, 224, 228, 107, 107, 168, 4075 107, 107, 130, 137, 130, 137, 117, 137, 167, 107, 4076 170, 162, 162, 110, 141, 115, 130, 133, 132, 133, 4077 208, 108, 161, 259, 259, 307, 108, 113, 107, 344, 4078 345, 132, 108, 132, 133, 304, 113, 132, 133, 133, 4079 108, 112, 197, 110, 160, 130, 197, 199, 114, 133, 4080 367, 162, 110, 133, 83, 111, 114, 133, 133, 110, 4081 133, 108, 132, 108, 108, 110, 110, 110, 133, 108, 4082 132, 132, 132, 161, 161, 133, 110, 133, 133, 133, 4083 133, 132, 132, 160, 160, 110, 110, 133, 133, 269, 4084 224, 166, 166, 45, 166, 132, 130, 130, 166, 130, 4085 130, 166, 56, 57, 58, 191, 192, 193, 130, 61, 4086 130, 112, 307, 172, 113, 130, 133, 133, 132, 94, 4087 264, 265, 108, 294, 114, 130, 114, 130, 113, 292, 4088 115, 139, 108, 108, 115, 164, 110, 113, 110, 109, 4089 145, 109, 145, 145, 110, 110, 110, 259, 110, 259, 4090 259, 259, 133, 133, 110, 110, 108, 108, 110, 114, 4091 94, 258, 94, 133, 110, 110, 108, 108, 107, 108, 4092 167, 188, 209, 130, 108, 107, 107, 170, 193, 56, 4093 57, 161, 142, 168, 108, 108, 259, 112, 132, 132, 4094 293, 139, 200, 107, 130, 200, 133, 115, 132, 132, 4095 133, 133, 133, 133, 110, 110, 132, 133, 110, 168, 4096 42, 43, 112, 178, 179, 180, 166, 168, 133, 108, 4097 167, 112, 180, 94, 132, 94, 132, 107, 107, 130, 4098 113, 133, 132, 267, 304, 113, 114, 115, 160, 108, 4099 110, 161, 144, 144, 108, 108, 108, 108, 262, 40, 4100 160, 176, 177, 305, 115, 132, 168, 178, 108, 130, 4101 168, 130, 132, 108, 132, 108, 132, 94, 132, 94, 4102 132, 130, 108, 293, 139, 137, 201, 108, 130, 115, 4103 133, 133, 168, 94, 114, 115, 133, 202, 203, 209, 4104 130, 167, 167, 202, 170, 194, 222, 361, 170, 194, 4105 108, 132, 108, 132, 113, 108, 114, 161, 110, 110, 4106 160, 176, 179, 181, 182, 132, 130, 179, 183, 184, 4107 133, 107, 117, 304, 352, 137, 133, 170, 194, 170, 4108 194, 107, 130, 137, 168, 173, 113, 179, 209, 167, 4109 54, 173, 186, 113, 179, 108, 224, 108, 133, 133, 4110 287, 168, 173, 130, 185, 186, 173, 186, 170, 170, 4111 108, 108, 108, 185, 133, 133, 170, 170, 133, 133 4182 4112 }; 4183 4113 … … 5016 4946 5017 4947 /* Line 1806 of yacc.c */ 5018 #line 2 88"parser.yy"4948 #line 290 "parser.yy" 5019 4949 { 5020 4950 typedefTable.enterScope(); … … 5025 4955 5026 4956 /* Line 1806 of yacc.c */ 5027 #line 29 4"parser.yy"4957 #line 296 "parser.yy" 5028 4958 { 5029 4959 typedefTable.leaveScope(); … … 5034 4964 5035 4965 /* Line 1806 of yacc.c */ 5036 #line 30 3"parser.yy"4966 #line 305 "parser.yy" 5037 4967 { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); } 5038 4968 break; … … 5041 4971 5042 4972 /* Line 1806 of yacc.c */ 5043 #line 30 4"parser.yy"4973 #line 306 "parser.yy" 5044 4974 { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); } 5045 4975 break; … … 5048 4978 5049 4979 /* Line 1806 of yacc.c */ 5050 #line 30 5"parser.yy"4980 #line 307 "parser.yy" 5051 4981 { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); } 5052 4982 break; … … 5055 4985 5056 4986 /* Line 1806 of yacc.c */ 5057 #line 3 29"parser.yy"4987 #line 332 "parser.yy" 5058 4988 { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); } 5059 4989 break; … … 5062 4992 5063 4993 /* Line 1806 of yacc.c */ 5064 #line 33 0"parser.yy"4994 #line 333 "parser.yy" 5065 4995 { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); } 5066 4996 break; … … 5069 4999 5070 5000 /* Line 1806 of yacc.c */ 5071 #line 3 37"parser.yy"5001 #line 340 "parser.yy" 5072 5002 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5073 5003 break; … … 5076 5006 5077 5007 /* Line 1806 of yacc.c */ 5078 #line 3 39"parser.yy"5008 #line 342 "parser.yy" 5079 5009 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5080 5010 break; … … 5083 5013 5084 5014 /* Line 1806 of yacc.c */ 5085 #line 34 1"parser.yy"5015 #line 344 "parser.yy" 5086 5016 { (yyval.en) = (yyvsp[(2) - (3)].en); } 5087 5017 break; … … 5090 5020 5091 5021 /* Line 1806 of yacc.c */ 5092 #line 34 3"parser.yy"5022 #line 346 "parser.yy" 5093 5023 { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); } 5094 5024 break; … … 5097 5027 5098 5028 /* Line 1806 of yacc.c */ 5099 #line 35 3"parser.yy"5029 #line 356 "parser.yy" 5100 5030 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); } 5101 5031 break; … … 5104 5034 5105 5035 /* Line 1806 of yacc.c */ 5106 #line 35 5"parser.yy"5036 #line 358 "parser.yy" 5107 5037 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); } 5108 5038 break; … … 5111 5041 5112 5042 /* Line 1806 of yacc.c */ 5113 #line 3 57"parser.yy"5043 #line 360 "parser.yy" 5114 5044 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5115 5045 break; … … 5118 5048 5119 5049 /* Line 1806 of yacc.c */ 5120 #line 36 0"parser.yy"5050 #line 363 "parser.yy" 5121 5051 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5122 5052 break; … … 5125 5055 5126 5056 /* Line 1806 of yacc.c */ 5127 #line 36 3"parser.yy"5057 #line 366 "parser.yy" 5128 5058 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); } 5129 5059 break; … … 5132 5062 5133 5063 /* Line 1806 of yacc.c */ 5134 #line 36 5"parser.yy"5064 #line 368 "parser.yy" 5135 5065 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); } 5136 5066 break; … … 5139 5069 5140 5070 /* Line 1806 of yacc.c */ 5141 #line 3 68"parser.yy"5071 #line 370 "parser.yy" 5142 5072 { (yyval.en) = 0; } 5143 5073 break; 5144 5074 5145 case 32: 5146 5147 /* Line 1806 of yacc.c */ 5148 #line 374 "parser.yy" 5075 case 31: 5076 5077 /* Line 1806 of yacc.c */ 5078 #line 372 "parser.yy" 5079 { 5080 Token fn; fn.str = new std::string( "?{}" ); // location undefined 5081 (yyval.en) = new CompositeExprNode( new VarRefNode( fn ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_link( (yyvsp[(3) - (4)].en) ) ); 5082 } 5083 break; 5084 5085 case 33: 5086 5087 /* Line 1806 of yacc.c */ 5088 #line 381 "parser.yy" 5149 5089 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 5150 5090 break; 5151 5091 5152 case 3 3:5153 5154 /* Line 1806 of yacc.c */ 5155 #line 3 79"parser.yy"5092 case 34: 5093 5094 /* Line 1806 of yacc.c */ 5095 #line 386 "parser.yy" 5156 5096 { (yyval.en) = 0; } 5157 5097 break; 5158 5098 5159 case 3 5:5160 5161 /* Line 1806 of yacc.c */ 5162 #line 38 2"parser.yy"5099 case 36: 5100 5101 /* Line 1806 of yacc.c */ 5102 #line 389 "parser.yy" 5163 5103 { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); } 5164 5104 break; 5165 5105 5166 case 3 6:5167 5168 /* Line 1806 of yacc.c */ 5169 #line 3 87"parser.yy"5106 case 37: 5107 5108 /* Line 1806 of yacc.c */ 5109 #line 394 "parser.yy" 5170 5110 { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); } 5171 5111 break; 5172 5112 5173 case 3 7:5174 5175 /* Line 1806 of yacc.c */ 5176 #line 3 89"parser.yy"5113 case 38: 5114 5115 /* Line 1806 of yacc.c */ 5116 #line 396 "parser.yy" 5177 5117 { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); } 5178 5118 break; 5179 5119 5180 case 39:5181 5182 /* Line 1806 of yacc.c */ 5183 #line 394"parser.yy"5120 case 40: 5121 5122 /* Line 1806 of yacc.c */ 5123 #line 401 "parser.yy" 5184 5124 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5185 5125 break; 5186 5126 5187 case 4 0:5188 5189 /* Line 1806 of yacc.c */ 5190 #line 399"parser.yy"5127 case 41: 5128 5129 /* Line 1806 of yacc.c */ 5130 #line 406 "parser.yy" 5191 5131 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5192 5132 break; 5193 5133 5194 case 4 1:5195 5196 /* Line 1806 of yacc.c */ 5197 #line 40 1"parser.yy"5134 case 42: 5135 5136 /* Line 1806 of yacc.c */ 5137 #line 408 "parser.yy" 5198 5138 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5199 5139 break; 5200 5140 5201 case 4 2:5202 5203 /* Line 1806 of yacc.c */ 5204 #line 4 03"parser.yy"5141 case 43: 5142 5143 /* Line 1806 of yacc.c */ 5144 #line 410 "parser.yy" 5205 5145 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5206 5146 break; 5207 5147 5208 case 4 3:5209 5210 /* Line 1806 of yacc.c */ 5211 #line 4 05"parser.yy"5148 case 44: 5149 5150 /* Line 1806 of yacc.c */ 5151 #line 412 "parser.yy" 5212 5152 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5213 5153 break; 5214 5154 5215 case 4 4:5216 5217 /* Line 1806 of yacc.c */ 5218 #line 4 07"parser.yy"5155 case 45: 5156 5157 /* Line 1806 of yacc.c */ 5158 #line 414 "parser.yy" 5219 5159 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5220 5160 break; 5221 5161 5222 case 4 6:5223 5224 /* Line 1806 of yacc.c */ 5225 #line 4 15"parser.yy"5162 case 47: 5163 5164 /* Line 1806 of yacc.c */ 5165 #line 422 "parser.yy" 5226 5166 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5227 5167 break; 5228 5168 5229 case 4 7:5230 5231 /* Line 1806 of yacc.c */ 5232 #line 4 17"parser.yy"5169 case 48: 5170 5171 /* Line 1806 of yacc.c */ 5172 #line 424 "parser.yy" 5233 5173 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5234 5174 break; 5235 5175 5236 case 4 8:5237 5238 /* Line 1806 of yacc.c */ 5239 #line 4 19"parser.yy"5176 case 49: 5177 5178 /* Line 1806 of yacc.c */ 5179 #line 426 "parser.yy" 5240 5180 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); } 5241 5181 break; 5242 5182 5243 case 49:5244 5245 /* Line 1806 of yacc.c */ 5246 #line 42 1"parser.yy"5183 case 50: 5184 5185 /* Line 1806 of yacc.c */ 5186 #line 428 "parser.yy" 5247 5187 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); } 5248 5188 break; 5249 5189 5250 case 5 0:5251 5252 /* Line 1806 of yacc.c */ 5253 #line 4 23"parser.yy"5190 case 51: 5191 5192 /* Line 1806 of yacc.c */ 5193 #line 430 "parser.yy" 5254 5194 { (yyval.en) = (yyvsp[(2) - (2)].en); } 5255 5195 break; 5256 5196 5257 case 5 1:5258 5259 /* Line 1806 of yacc.c */ 5260 #line 4 25"parser.yy"5197 case 52: 5198 5199 /* Line 1806 of yacc.c */ 5200 #line 432 "parser.yy" 5261 5201 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); } 5262 5202 break; 5263 5203 5264 case 5 2:5265 5266 /* Line 1806 of yacc.c */ 5267 #line 4 27"parser.yy"5204 case 53: 5205 5206 /* Line 1806 of yacc.c */ 5207 #line 434 "parser.yy" 5268 5208 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); } 5269 5209 break; 5270 5210 5271 case 5 3:5272 5273 /* Line 1806 of yacc.c */ 5274 #line 4 29"parser.yy"5211 case 54: 5212 5213 /* Line 1806 of yacc.c */ 5214 #line 436 "parser.yy" 5275 5215 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); } 5276 5216 break; 5277 5217 5278 case 5 4:5279 5280 /* Line 1806 of yacc.c */ 5281 #line 4 35"parser.yy"5218 case 55: 5219 5220 /* Line 1806 of yacc.c */ 5221 #line 442 "parser.yy" 5282 5222 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); } 5283 5223 break; 5284 5224 5285 case 5 5:5286 5287 /* Line 1806 of yacc.c */ 5288 #line 4 37"parser.yy"5225 case 56: 5226 5227 /* Line 1806 of yacc.c */ 5228 #line 444 "parser.yy" 5289 5229 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5290 5230 break; 5291 5231 5292 case 5 6:5293 5294 /* Line 1806 of yacc.c */ 5295 #line 4 39"parser.yy"5232 case 57: 5233 5234 /* Line 1806 of yacc.c */ 5235 #line 446 "parser.yy" 5296 5236 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); } 5297 5237 break; 5298 5238 5299 case 5 7:5300 5301 /* Line 1806 of yacc.c */ 5302 #line 44 1"parser.yy"5239 case 58: 5240 5241 /* Line 1806 of yacc.c */ 5242 #line 448 "parser.yy" 5303 5243 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5304 5244 break; 5305 5245 5306 case 5 8:5307 5308 /* Line 1806 of yacc.c */ 5309 #line 4 43"parser.yy"5246 case 59: 5247 5248 /* Line 1806 of yacc.c */ 5249 #line 450 "parser.yy" 5310 5250 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); } 5311 5251 break; 5312 5252 5313 case 59:5314 5315 /* Line 1806 of yacc.c */ 5316 #line 4 45"parser.yy"5253 case 60: 5254 5255 /* Line 1806 of yacc.c */ 5256 #line 452 "parser.yy" 5317 5257 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); } 5318 5258 break; 5319 5259 5320 case 60:5321 5322 /* Line 1806 of yacc.c */5323 #line 447 "parser.yy"5324 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }5325 break;5326 5327 5260 case 61: 5328 5261 5329 5262 /* Line 1806 of yacc.c */ 5330 #line 4 49"parser.yy"5331 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode:: LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }5263 #line 454 "parser.yy" 5264 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); } 5332 5265 break; 5333 5266 … … 5335 5268 5336 5269 /* Line 1806 of yacc.c */ 5337 #line 453 "parser.yy" 5270 #line 456 "parser.yy" 5271 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); } 5272 break; 5273 5274 case 63: 5275 5276 /* Line 1806 of yacc.c */ 5277 #line 460 "parser.yy" 5338 5278 { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); } 5339 5279 break; 5340 5280 5341 case 6 3:5342 5343 /* Line 1806 of yacc.c */ 5344 #line 4 54"parser.yy"5281 case 64: 5282 5283 /* Line 1806 of yacc.c */ 5284 #line 461 "parser.yy" 5345 5285 { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); } 5346 5286 break; 5347 5287 5348 case 6 4:5349 5350 /* Line 1806 of yacc.c */ 5351 #line 4 55"parser.yy"5288 case 65: 5289 5290 /* Line 1806 of yacc.c */ 5291 #line 462 "parser.yy" 5352 5292 { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); } 5353 5293 break; 5354 5294 5355 case 6 5:5356 5357 /* Line 1806 of yacc.c */ 5358 #line 4 56"parser.yy"5295 case 66: 5296 5297 /* Line 1806 of yacc.c */ 5298 #line 463 "parser.yy" 5359 5299 { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); } 5360 5300 break; 5361 5301 5362 case 6 7:5363 5364 /* Line 1806 of yacc.c */ 5365 #line 46 2"parser.yy"5302 case 68: 5303 5304 /* Line 1806 of yacc.c */ 5305 #line 469 "parser.yy" 5366 5306 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5367 5307 break; 5368 5308 5369 case 6 8:5370 5371 /* Line 1806 of yacc.c */ 5372 #line 4 64"parser.yy"5309 case 69: 5310 5311 /* Line 1806 of yacc.c */ 5312 #line 471 "parser.yy" 5373 5313 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5374 5314 break; 5375 5315 5376 case 7 0:5377 5378 /* Line 1806 of yacc.c */ 5379 #line 47 0"parser.yy"5316 case 71: 5317 5318 /* Line 1806 of yacc.c */ 5319 #line 477 "parser.yy" 5380 5320 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5381 5321 break; 5382 5322 5383 case 7 1:5384 5385 /* Line 1806 of yacc.c */ 5386 #line 47 2"parser.yy"5323 case 72: 5324 5325 /* Line 1806 of yacc.c */ 5326 #line 479 "parser.yy" 5387 5327 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5388 5328 break; 5389 5329 5390 case 7 2:5391 5392 /* Line 1806 of yacc.c */ 5393 #line 4 74"parser.yy"5330 case 73: 5331 5332 /* Line 1806 of yacc.c */ 5333 #line 481 "parser.yy" 5394 5334 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5395 5335 break; 5396 5336 5397 case 7 4:5398 5399 /* Line 1806 of yacc.c */ 5400 #line 48 0"parser.yy"5337 case 75: 5338 5339 /* Line 1806 of yacc.c */ 5340 #line 487 "parser.yy" 5401 5341 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5402 5342 break; 5403 5343 5404 case 7 5:5405 5406 /* Line 1806 of yacc.c */ 5407 #line 48 2"parser.yy"5344 case 76: 5345 5346 /* Line 1806 of yacc.c */ 5347 #line 489 "parser.yy" 5408 5348 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5409 5349 break; 5410 5350 5411 case 7 7:5412 5413 /* Line 1806 of yacc.c */ 5414 #line 4 88"parser.yy"5351 case 78: 5352 5353 /* Line 1806 of yacc.c */ 5354 #line 495 "parser.yy" 5415 5355 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5416 5356 break; 5417 5357 5418 case 7 8:5419 5420 /* Line 1806 of yacc.c */ 5421 #line 49 0"parser.yy"5358 case 79: 5359 5360 /* Line 1806 of yacc.c */ 5361 #line 497 "parser.yy" 5422 5362 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5423 5363 break; 5424 5364 5425 case 8 0:5426 5427 /* Line 1806 of yacc.c */ 5428 #line 496"parser.yy"5365 case 81: 5366 5367 /* Line 1806 of yacc.c */ 5368 #line 503 "parser.yy" 5429 5369 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5430 5370 break; 5431 5371 5432 case 8 1:5433 5434 /* Line 1806 of yacc.c */ 5435 #line 498"parser.yy"5372 case 82: 5373 5374 /* Line 1806 of yacc.c */ 5375 #line 505 "parser.yy" 5436 5376 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5437 5377 break; 5438 5378 5439 case 8 2:5440 5441 /* Line 1806 of yacc.c */ 5442 #line 50 0"parser.yy"5379 case 83: 5380 5381 /* Line 1806 of yacc.c */ 5382 #line 507 "parser.yy" 5443 5383 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5444 5384 break; 5445 5385 5446 case 8 3:5447 5448 /* Line 1806 of yacc.c */ 5449 #line 50 2"parser.yy"5386 case 84: 5387 5388 /* Line 1806 of yacc.c */ 5389 #line 509 "parser.yy" 5450 5390 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5451 5391 break; 5452 5392 5453 case 8 5:5454 5455 /* Line 1806 of yacc.c */ 5456 #line 5 08"parser.yy"5393 case 86: 5394 5395 /* Line 1806 of yacc.c */ 5396 #line 515 "parser.yy" 5457 5397 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5458 5398 break; 5459 5399 5460 case 8 6:5461 5462 /* Line 1806 of yacc.c */ 5463 #line 51 0"parser.yy"5400 case 87: 5401 5402 /* Line 1806 of yacc.c */ 5403 #line 517 "parser.yy" 5464 5404 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5465 5405 break; 5466 5406 5467 case 8 8:5468 5469 /* Line 1806 of yacc.c */ 5470 #line 5 16"parser.yy"5407 case 89: 5408 5409 /* Line 1806 of yacc.c */ 5410 #line 523 "parser.yy" 5471 5411 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5472 5412 break; 5473 5413 5474 case 9 0:5475 5476 /* Line 1806 of yacc.c */ 5477 #line 52 2"parser.yy"5414 case 91: 5415 5416 /* Line 1806 of yacc.c */ 5417 #line 529 "parser.yy" 5478 5418 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5479 5419 break; 5480 5420 5481 case 9 2:5482 5483 /* Line 1806 of yacc.c */ 5484 #line 5 28"parser.yy"5421 case 93: 5422 5423 /* Line 1806 of yacc.c */ 5424 #line 535 "parser.yy" 5485 5425 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5486 5426 break; 5487 5427 5488 case 9 4:5489 5490 /* Line 1806 of yacc.c */ 5491 #line 5 34"parser.yy"5428 case 95: 5429 5430 /* Line 1806 of yacc.c */ 5431 #line 541 "parser.yy" 5492 5432 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5493 5433 break; 5494 5434 5495 case 9 6:5496 5497 /* Line 1806 of yacc.c */ 5498 #line 54 0"parser.yy"5435 case 97: 5436 5437 /* Line 1806 of yacc.c */ 5438 #line 547 "parser.yy" 5499 5439 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5500 5440 break; 5501 5441 5502 case 9 8:5503 5504 /* Line 1806 of yacc.c */ 5505 #line 5 46"parser.yy"5442 case 99: 5443 5444 /* Line 1806 of yacc.c */ 5445 #line 553 "parser.yy" 5506 5446 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5507 5447 break; 5508 5448 5509 case 99:5510 5511 /* Line 1806 of yacc.c */ 5512 #line 5 48"parser.yy"5449 case 100: 5450 5451 /* Line 1806 of yacc.c */ 5452 #line 555 "parser.yy" 5513 5453 { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5514 5454 break; 5515 5455 5516 case 10 0:5517 5518 /* Line 1806 of yacc.c */ 5519 #line 55 0"parser.yy"5456 case 101: 5457 5458 /* Line 1806 of yacc.c */ 5459 #line 557 "parser.yy" 5520 5460 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5521 5461 break; 5522 5462 5523 case 10 3:5524 5525 /* Line 1806 of yacc.c */ 5526 #line 56 1"parser.yy"5463 case 104: 5464 5465 /* Line 1806 of yacc.c */ 5466 #line 568 "parser.yy" 5527 5467 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5528 5468 break; 5529 5469 5530 case 10 4:5531 5532 /* Line 1806 of yacc.c */ 5533 #line 5 63"parser.yy"5470 case 105: 5471 5472 /* Line 1806 of yacc.c */ 5473 #line 570 "parser.yy" 5534 5474 { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5535 5475 break; 5536 5476 5537 case 10 5:5538 5539 /* Line 1806 of yacc.c */ 5540 #line 5 65"parser.yy"5477 case 106: 5478 5479 /* Line 1806 of yacc.c */ 5480 #line 572 "parser.yy" 5541 5481 { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); } 5542 5482 break; 5543 5483 5544 case 10 6:5545 5546 /* Line 1806 of yacc.c */ 5547 #line 57 0"parser.yy"5484 case 107: 5485 5486 /* Line 1806 of yacc.c */ 5487 #line 577 "parser.yy" 5548 5488 { (yyval.en) = new NullExprNode; } 5549 5489 break; 5550 5490 5551 case 10 8:5552 5553 /* Line 1806 of yacc.c */ 5554 #line 5 78"parser.yy"5491 case 109: 5492 5493 /* Line 1806 of yacc.c */ 5494 #line 585 "parser.yy" 5555 5495 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); } 5556 5496 break; 5557 5497 5558 case 1 09:5559 5560 /* Line 1806 of yacc.c */ 5561 #line 58 0"parser.yy"5498 case 110: 5499 5500 /* Line 1806 of yacc.c */ 5501 #line 587 "parser.yy" 5562 5502 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); } 5563 5503 break; 5564 5504 5565 case 11 0:5566 5567 /* Line 1806 of yacc.c */ 5568 #line 58 2"parser.yy"5505 case 111: 5506 5507 /* Line 1806 of yacc.c */ 5508 #line 589 "parser.yy" 5569 5509 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); } 5570 5510 break; 5571 5511 5572 case 11 1:5573 5574 /* Line 1806 of yacc.c */ 5575 #line 5 84"parser.yy"5512 case 112: 5513 5514 /* Line 1806 of yacc.c */ 5515 #line 591 "parser.yy" 5576 5516 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); } 5577 5517 break; 5578 5518 5579 case 11 3:5580 5581 /* Line 1806 of yacc.c */ 5582 #line 59 0"parser.yy"5519 case 114: 5520 5521 /* Line 1806 of yacc.c */ 5522 #line 597 "parser.yy" 5583 5523 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5584 5524 break; 5585 5525 5586 case 11 4:5587 5588 /* Line 1806 of yacc.c */ 5589 #line 594"parser.yy"5526 case 115: 5527 5528 /* Line 1806 of yacc.c */ 5529 #line 601 "parser.yy" 5590 5530 { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); } 5591 5531 break; 5592 5532 5593 case 11 5:5594 5595 /* Line 1806 of yacc.c */ 5596 #line 595"parser.yy"5533 case 116: 5534 5535 /* Line 1806 of yacc.c */ 5536 #line 602 "parser.yy" 5597 5537 { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); } 5598 5538 break; 5599 5539 5600 case 11 6:5601 5602 /* Line 1806 of yacc.c */ 5603 #line 596"parser.yy"5540 case 117: 5541 5542 /* Line 1806 of yacc.c */ 5543 #line 603 "parser.yy" 5604 5544 { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); } 5605 5545 break; 5606 5546 5607 case 11 7:5608 5609 /* Line 1806 of yacc.c */ 5610 #line 597"parser.yy"5547 case 118: 5548 5549 /* Line 1806 of yacc.c */ 5550 #line 604 "parser.yy" 5611 5551 { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); } 5612 5552 break; 5613 5553 5614 case 11 8:5615 5616 /* Line 1806 of yacc.c */ 5617 #line 598"parser.yy"5554 case 119: 5555 5556 /* Line 1806 of yacc.c */ 5557 #line 605 "parser.yy" 5618 5558 { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); } 5619 5559 break; 5620 5560 5621 case 1 19:5622 5623 /* Line 1806 of yacc.c */ 5624 #line 599"parser.yy"5561 case 120: 5562 5563 /* Line 1806 of yacc.c */ 5564 #line 606 "parser.yy" 5625 5565 { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); } 5626 5566 break; 5627 5567 5628 case 12 0:5629 5630 /* Line 1806 of yacc.c */ 5631 #line 60 0"parser.yy"5568 case 121: 5569 5570 /* Line 1806 of yacc.c */ 5571 #line 607 "parser.yy" 5632 5572 { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); } 5633 5573 break; 5634 5574 5635 case 12 1:5636 5637 /* Line 1806 of yacc.c */ 5638 #line 60 1"parser.yy"5575 case 122: 5576 5577 /* Line 1806 of yacc.c */ 5578 #line 608 "parser.yy" 5639 5579 { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); } 5640 5580 break; 5641 5581 5642 case 12 2:5643 5644 /* Line 1806 of yacc.c */ 5645 #line 60 2"parser.yy"5582 case 123: 5583 5584 /* Line 1806 of yacc.c */ 5585 #line 609 "parser.yy" 5646 5586 { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); } 5647 5587 break; 5648 5588 5649 case 12 3:5650 5651 /* Line 1806 of yacc.c */ 5652 #line 6 03"parser.yy"5589 case 124: 5590 5591 /* Line 1806 of yacc.c */ 5592 #line 610 "parser.yy" 5653 5593 { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); } 5654 5594 break; 5655 5595 5656 case 12 5:5657 5658 /* Line 1806 of yacc.c */ 5659 #line 6 09"parser.yy"5596 case 126: 5597 5598 /* Line 1806 of yacc.c */ 5599 #line 616 "parser.yy" 5660 5600 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5661 5601 break; 5662 5602 5663 case 12 6:5664 5665 /* Line 1806 of yacc.c */ 5666 #line 6 14"parser.yy"5603 case 127: 5604 5605 /* Line 1806 of yacc.c */ 5606 #line 621 "parser.yy" 5667 5607 { (yyval.en) = 0; } 5668 5608 break; 5669 5609 5670 case 13 0:5671 5672 /* Line 1806 of yacc.c */ 5673 #line 6 23"parser.yy"5610 case 131: 5611 5612 /* Line 1806 of yacc.c */ 5613 #line 630 "parser.yy" 5674 5614 { (yyval.sn) = (yyvsp[(1) - (1)].sn); } 5675 5615 break; 5676 5616 5677 case 136: 5678 5679 /* Line 1806 of yacc.c */ 5680 #line 633 "parser.yy" 5617 case 137: 5618 5619 /* Line 1806 of yacc.c */ 5620 #line 637 "parser.yy" 5621 { 5622 Token fn; fn.str = new std::string( "^?{}" ); // location undefined 5623 (yyval.sn) = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ), 5624 (ExpressionNode *)(new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), (yyvsp[(2) - (6)].en) ))->set_link( (yyvsp[(4) - (6)].en) ) ), 0 ); 5625 } 5626 break; 5627 5628 case 138: 5629 5630 /* Line 1806 of yacc.c */ 5631 #line 646 "parser.yy" 5681 5632 { 5682 5633 (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) ); … … 5684 5635 break; 5685 5636 5686 case 13 7:5687 5688 /* Line 1806 of yacc.c */ 5689 #line 6 40"parser.yy"5637 case 139: 5638 5639 /* Line 1806 of yacc.c */ 5640 #line 653 "parser.yy" 5690 5641 { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); } 5691 5642 break; 5692 5643 5693 case 1 38:5694 5695 /* Line 1806 of yacc.c */ 5696 #line 6 47"parser.yy"5644 case 140: 5645 5646 /* Line 1806 of yacc.c */ 5647 #line 660 "parser.yy" 5697 5648 { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); } 5698 5649 break; 5699 5650 5700 case 14 0:5701 5702 /* Line 1806 of yacc.c */ 5703 #line 6 53"parser.yy"5651 case 142: 5652 5653 /* Line 1806 of yacc.c */ 5654 #line 666 "parser.yy" 5704 5655 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5705 5656 break; 5706 5657 5707 case 14 1:5708 5709 /* Line 1806 of yacc.c */ 5710 #line 6 58"parser.yy"5658 case 143: 5659 5660 /* Line 1806 of yacc.c */ 5661 #line 671 "parser.yy" 5711 5662 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5712 5663 break; 5713 5664 5714 case 14 2:5715 5716 /* Line 1806 of yacc.c */ 5717 #line 6 60"parser.yy"5665 case 144: 5666 5667 /* Line 1806 of yacc.c */ 5668 #line 673 "parser.yy" 5718 5669 { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); } 5719 5670 break; 5720 5671 5721 case 14 3:5722 5723 /* Line 1806 of yacc.c */ 5724 #line 6 62"parser.yy"5672 case 145: 5673 5674 /* Line 1806 of yacc.c */ 5675 #line 675 "parser.yy" 5725 5676 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5726 5677 break; 5727 5678 5728 case 14 6:5729 5730 /* Line 1806 of yacc.c */ 5731 #line 6 69"parser.yy"5679 case 148: 5680 5681 /* Line 1806 of yacc.c */ 5682 #line 682 "parser.yy" 5732 5683 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5733 5684 break; 5734 5685 5735 case 14 7:5736 5737 /* Line 1806 of yacc.c */ 5738 #line 6 74"parser.yy"5686 case 149: 5687 5688 /* Line 1806 of yacc.c */ 5689 #line 687 "parser.yy" 5739 5690 { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); } 5740 5691 break; 5741 5692 5742 case 1 48:5743 5744 /* Line 1806 of yacc.c */ 5745 #line 6 80"parser.yy"5693 case 150: 5694 5695 /* Line 1806 of yacc.c */ 5696 #line 693 "parser.yy" 5746 5697 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5747 5698 break; 5748 5699 5749 case 1 49:5750 5751 /* Line 1806 of yacc.c */ 5752 #line 6 82"parser.yy"5700 case 151: 5701 5702 /* Line 1806 of yacc.c */ 5703 #line 695 "parser.yy" 5753 5704 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); } 5754 5705 break; 5755 5706 5756 case 15 0:5757 5758 /* Line 1806 of yacc.c */ 5759 #line 6 84"parser.yy"5707 case 152: 5708 5709 /* Line 1806 of yacc.c */ 5710 #line 697 "parser.yy" 5760 5711 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5761 5712 break; 5762 5713 5763 case 15 1:5764 5765 /* Line 1806 of yacc.c */ 5766 #line 6 86"parser.yy"5714 case 153: 5715 5716 /* Line 1806 of yacc.c */ 5717 #line 699 "parser.yy" 5767 5718 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ } 5768 5719 break; 5769 5720 5770 case 15 2:5771 5772 /* Line 1806 of yacc.c */ 5773 #line 691"parser.yy"5721 case 154: 5722 5723 /* Line 1806 of yacc.c */ 5724 #line 704 "parser.yy" 5774 5725 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5775 5726 break; 5776 5727 5777 case 15 3:5778 5779 /* Line 1806 of yacc.c */ 5780 #line 693"parser.yy"5728 case 155: 5729 5730 /* Line 1806 of yacc.c */ 5731 #line 706 "parser.yy" 5781 5732 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); } 5782 5733 break; 5783 5734 5784 case 15 4:5785 5786 /* Line 1806 of yacc.c */ 5787 #line 7 00"parser.yy"5735 case 156: 5736 5737 /* Line 1806 of yacc.c */ 5738 #line 713 "parser.yy" 5788 5739 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5789 5740 break; 5790 5741 5791 case 15 5:5792 5793 /* Line 1806 of yacc.c */ 5794 #line 7 02"parser.yy"5742 case 157: 5743 5744 /* Line 1806 of yacc.c */ 5745 #line 715 "parser.yy" 5795 5746 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5796 5747 break; 5797 5748 5798 case 1 58:5799 5800 /* Line 1806 of yacc.c */ 5801 #line 7 09"parser.yy"5749 case 160: 5750 5751 /* Line 1806 of yacc.c */ 5752 #line 722 "parser.yy" 5802 5753 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); } 5803 5754 break; 5804 5755 5805 case 1 59:5806 5807 /* Line 1806 of yacc.c */ 5808 #line 7 13"parser.yy"5756 case 161: 5757 5758 /* Line 1806 of yacc.c */ 5759 #line 726 "parser.yy" 5809 5760 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); } 5810 5761 break; 5811 5762 5812 case 16 0:5813 5814 /* Line 1806 of yacc.c */ 5815 #line 7 14"parser.yy"5763 case 162: 5764 5765 /* Line 1806 of yacc.c */ 5766 #line 727 "parser.yy" 5816 5767 { (yyval.sn) = new StatementNode( StatementNode::Default ); } 5817 5768 break; 5818 5769 5819 case 16 2:5820 5821 /* Line 1806 of yacc.c */ 5822 #line 7 20"parser.yy"5770 case 164: 5771 5772 /* Line 1806 of yacc.c */ 5773 #line 733 "parser.yy" 5823 5774 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); } 5824 5775 break; 5825 5776 5826 case 16 3:5827 5828 /* Line 1806 of yacc.c */ 5829 #line 7 24"parser.yy"5777 case 165: 5778 5779 /* Line 1806 of yacc.c */ 5780 #line 737 "parser.yy" 5830 5781 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5831 5782 break; 5832 5783 5833 case 164:5834 5835 /* Line 1806 of yacc.c */5836 #line 729 "parser.yy"5837 { (yyval.sn) = 0; }5838 break;5839 5840 5784 case 166: 5841 5842 /* Line 1806 of yacc.c */5843 #line 735 "parser.yy"5844 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }5845 break;5846 5847 case 167:5848 5849 /* Line 1806 of yacc.c */5850 #line 737 "parser.yy"5851 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }5852 break;5853 5854 case 168:5855 5785 5856 5786 /* Line 1806 of yacc.c */ … … 5859 5789 break; 5860 5790 5861 case 1 70:5791 case 168: 5862 5792 5863 5793 /* Line 1806 of yacc.c */ … … 5866 5796 break; 5867 5797 5868 case 1 71:5798 case 169: 5869 5799 5870 5800 /* Line 1806 of yacc.c */ 5871 5801 #line 750 "parser.yy" 5802 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5803 break; 5804 5805 case 170: 5806 5807 /* Line 1806 of yacc.c */ 5808 #line 755 "parser.yy" 5809 { (yyval.sn) = 0; } 5810 break; 5811 5812 case 172: 5813 5814 /* Line 1806 of yacc.c */ 5815 #line 761 "parser.yy" 5816 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5817 break; 5818 5819 case 173: 5820 5821 /* Line 1806 of yacc.c */ 5822 #line 763 "parser.yy" 5872 5823 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); } 5873 5824 break; 5874 5825 5875 case 17 2:5876 5877 /* Line 1806 of yacc.c */ 5878 #line 7 52"parser.yy"5826 case 174: 5827 5828 /* Line 1806 of yacc.c */ 5829 #line 765 "parser.yy" 5879 5830 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5880 5831 break; 5881 5832 5882 case 17 3:5883 5884 /* Line 1806 of yacc.c */ 5885 #line 7 54"parser.yy"5833 case 175: 5834 5835 /* Line 1806 of yacc.c */ 5836 #line 767 "parser.yy" 5886 5837 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); } 5887 5838 break; 5888 5839 5889 case 17 4:5890 5891 /* Line 1806 of yacc.c */ 5892 #line 7 59"parser.yy"5840 case 176: 5841 5842 /* Line 1806 of yacc.c */ 5843 #line 772 "parser.yy" 5893 5844 { (yyval.sn) = 0; } 5894 5845 break; 5895 5846 5896 case 17 6:5897 5898 /* Line 1806 of yacc.c */ 5899 #line 7 64"parser.yy"5847 case 178: 5848 5849 /* Line 1806 of yacc.c */ 5850 #line 777 "parser.yy" 5900 5851 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); } 5901 5852 break; 5902 5853 5903 case 17 7:5904 5905 /* Line 1806 of yacc.c */ 5906 #line 7 65"parser.yy"5854 case 179: 5855 5856 /* Line 1806 of yacc.c */ 5857 #line 778 "parser.yy" 5907 5858 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); } 5908 5859 break; 5909 5860 5910 case 1 78:5911 5912 /* Line 1806 of yacc.c */ 5913 #line 7 70"parser.yy"5861 case 180: 5862 5863 /* Line 1806 of yacc.c */ 5864 #line 783 "parser.yy" 5914 5865 { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5915 5866 break; 5916 5867 5917 case 1 79:5918 5919 /* Line 1806 of yacc.c */ 5920 #line 7 72"parser.yy"5868 case 181: 5869 5870 /* Line 1806 of yacc.c */ 5871 #line 785 "parser.yy" 5921 5872 { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); } 5922 5873 break; 5923 5874 5924 case 18 0:5925 5926 /* Line 1806 of yacc.c */ 5927 #line 7 74"parser.yy"5875 case 182: 5876 5877 /* Line 1806 of yacc.c */ 5878 #line 787 "parser.yy" 5928 5879 { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); } 5929 5880 break; 5930 5881 5931 case 18 1:5932 5933 /* Line 1806 of yacc.c */ 5934 #line 7 79"parser.yy"5882 case 183: 5883 5884 /* Line 1806 of yacc.c */ 5885 #line 792 "parser.yy" 5935 5886 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); } 5936 5887 break; 5937 5888 5938 case 18 2:5939 5940 /* Line 1806 of yacc.c */ 5941 #line 7 81"parser.yy"5889 case 184: 5890 5891 /* Line 1806 of yacc.c */ 5892 #line 794 "parser.yy" 5942 5893 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5943 5894 break; 5944 5895 5945 case 18 3:5946 5947 /* Line 1806 of yacc.c */ 5948 #line 7 86"parser.yy"5896 case 185: 5897 5898 /* Line 1806 of yacc.c */ 5899 #line 799 "parser.yy" 5949 5900 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); } 5950 5901 break; 5951 5902 5952 case 18 4:5953 5954 /* Line 1806 of yacc.c */ 5955 #line 790"parser.yy"5903 case 186: 5904 5905 /* Line 1806 of yacc.c */ 5906 #line 803 "parser.yy" 5956 5907 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); } 5957 5908 break; 5958 5909 5959 case 18 5:5960 5961 /* Line 1806 of yacc.c */ 5962 #line 793"parser.yy"5910 case 187: 5911 5912 /* Line 1806 of yacc.c */ 5913 #line 806 "parser.yy" 5963 5914 { (yyval.sn) = new StatementNode( StatementNode::Continue ); } 5964 5915 break; 5965 5916 5966 case 18 6:5967 5968 /* Line 1806 of yacc.c */ 5969 #line 797"parser.yy"5917 case 188: 5918 5919 /* Line 1806 of yacc.c */ 5920 #line 810 "parser.yy" 5970 5921 { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); } 5971 5922 break; 5972 5923 5973 case 18 7:5974 5975 /* Line 1806 of yacc.c */ 5976 #line 8 00"parser.yy"5924 case 189: 5925 5926 /* Line 1806 of yacc.c */ 5927 #line 813 "parser.yy" 5977 5928 { (yyval.sn) = new StatementNode( StatementNode::Break ); } 5978 5929 break; 5979 5930 5980 case 1 88:5981 5982 /* Line 1806 of yacc.c */ 5983 #line 8 04"parser.yy"5931 case 190: 5932 5933 /* Line 1806 of yacc.c */ 5934 #line 817 "parser.yy" 5984 5935 { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); } 5985 5936 break; 5986 5937 5987 case 1 89:5988 5989 /* Line 1806 of yacc.c */ 5990 #line 8 06"parser.yy"5938 case 191: 5939 5940 /* Line 1806 of yacc.c */ 5941 #line 819 "parser.yy" 5991 5942 { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); } 5992 5943 break; 5993 5944 5994 case 19 0:5995 5996 /* Line 1806 of yacc.c */ 5997 #line 8 08"parser.yy"5945 case 192: 5946 5947 /* Line 1806 of yacc.c */ 5948 #line 821 "parser.yy" 5998 5949 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 5999 5950 break; 6000 5951 6001 case 191: 6002 6003 /* Line 1806 of yacc.c */ 6004 #line 810 "parser.yy" 6005 { (yyval.sn) = new StatementNode( StatementNode::Throw ); } 6006 break; 6007 6008 case 192: 6009 6010 /* Line 1806 of yacc.c */ 6011 #line 815 "parser.yy" 5952 case 193: 5953 5954 /* Line 1806 of yacc.c */ 5955 #line 825 "parser.yy" 5956 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 5957 break; 5958 5959 case 194: 5960 5961 /* Line 1806 of yacc.c */ 5962 #line 827 "parser.yy" 5963 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); } 5964 break; 5965 5966 case 195: 5967 5968 /* Line 1806 of yacc.c */ 5969 #line 834 "parser.yy" 6012 5970 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6013 5971 break; 6014 5972 6015 case 19 3:6016 6017 /* Line 1806 of yacc.c */ 6018 #line 8 17"parser.yy"5973 case 196: 5974 5975 /* Line 1806 of yacc.c */ 5976 #line 836 "parser.yy" 6019 5977 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6020 5978 break; 6021 5979 6022 case 19 4:6023 6024 /* Line 1806 of yacc.c */ 6025 #line 8 19"parser.yy"5980 case 197: 5981 5982 /* Line 1806 of yacc.c */ 5983 #line 838 "parser.yy" 6026 5984 { 6027 5985 (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) ); … … 6030 5988 break; 6031 5989 6032 case 19 6:6033 6034 /* Line 1806 of yacc.c */ 6035 #line 8 30"parser.yy"5990 case 199: 5991 5992 /* Line 1806 of yacc.c */ 5993 #line 849 "parser.yy" 6036 5994 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6037 5995 break; 6038 5996 6039 case 197:6040 6041 /* Line 1806 of yacc.c */ 6042 #line 8 32"parser.yy"5997 case 200: 5998 5999 /* Line 1806 of yacc.c */ 6000 #line 851 "parser.yy" 6043 6001 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6044 6002 break; 6045 6003 6046 case 198: 6047 6048 /* Line 1806 of yacc.c */ 6049 #line 837 "parser.yy" 6004 case 201: 6005 6006 /* Line 1806 of yacc.c */ 6007 #line 853 "parser.yy" 6008 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6009 break; 6010 6011 case 202: 6012 6013 /* Line 1806 of yacc.c */ 6014 #line 855 "parser.yy" 6015 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6016 break; 6017 6018 case 203: 6019 6020 /* Line 1806 of yacc.c */ 6021 #line 860 "parser.yy" 6050 6022 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6051 6023 break; 6052 6024 6053 case 199:6054 6055 /* Line 1806 of yacc.c */ 6056 #line 8 39"parser.yy"6025 case 204: 6026 6027 /* Line 1806 of yacc.c */ 6028 #line 862 "parser.yy" 6057 6029 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6058 6030 break; 6059 6031 6060 case 200: 6061 6062 /* Line 1806 of yacc.c */ 6063 #line 844 "parser.yy" 6032 case 205: 6033 6034 /* Line 1806 of yacc.c */ 6035 #line 864 "parser.yy" 6036 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6037 break; 6038 6039 case 206: 6040 6041 /* Line 1806 of yacc.c */ 6042 #line 866 "parser.yy" 6043 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6044 break; 6045 6046 case 207: 6047 6048 /* Line 1806 of yacc.c */ 6049 #line 871 "parser.yy" 6064 6050 { 6065 6051 (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) ); … … 6068 6054 break; 6069 6055 6070 case 20 2:6071 6072 /* Line 1806 of yacc.c */ 6073 #line 8 58"parser.yy"6056 case 209: 6057 6058 /* Line 1806 of yacc.c */ 6059 #line 885 "parser.yy" 6074 6060 { 6075 6061 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6078 6064 break; 6079 6065 6080 case 2 03:6081 6082 /* Line 1806 of yacc.c */ 6083 #line 8 63"parser.yy"6066 case 210: 6067 6068 /* Line 1806 of yacc.c */ 6069 #line 890 "parser.yy" 6084 6070 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6085 6071 break; 6086 6072 6087 case 2 04:6088 6089 /* Line 1806 of yacc.c */ 6090 #line 8 65"parser.yy"6073 case 211: 6074 6075 /* Line 1806 of yacc.c */ 6076 #line 892 "parser.yy" 6091 6077 { 6092 6078 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6095 6081 break; 6096 6082 6097 case 2 06:6098 6099 /* Line 1806 of yacc.c */ 6100 #line 874"parser.yy"6083 case 213: 6084 6085 /* Line 1806 of yacc.c */ 6086 #line 901 "parser.yy" 6101 6087 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); } 6102 6088 break; 6103 6089 6104 case 2 07:6105 6106 /* Line 1806 of yacc.c */ 6107 #line 876"parser.yy"6090 case 214: 6091 6092 /* Line 1806 of yacc.c */ 6093 #line 903 "parser.yy" 6108 6094 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); } 6109 6095 break; 6110 6096 6111 case 2 08:6112 6113 /* Line 1806 of yacc.c */ 6114 #line 878"parser.yy"6097 case 215: 6098 6099 /* Line 1806 of yacc.c */ 6100 #line 905 "parser.yy" 6115 6101 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); } 6116 6102 break; 6117 6103 6118 case 2 09:6119 6120 /* Line 1806 of yacc.c */ 6121 #line 880"parser.yy"6104 case 216: 6105 6106 /* Line 1806 of yacc.c */ 6107 #line 907 "parser.yy" 6122 6108 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); } 6123 6109 break; 6124 6110 6125 case 21 0:6126 6127 /* Line 1806 of yacc.c */ 6128 #line 882"parser.yy"6111 case 217: 6112 6113 /* Line 1806 of yacc.c */ 6114 #line 909 "parser.yy" 6129 6115 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); } 6130 6116 break; 6131 6117 6132 case 21 1:6133 6134 /* Line 1806 of yacc.c */ 6135 #line 887"parser.yy"6118 case 218: 6119 6120 /* Line 1806 of yacc.c */ 6121 #line 914 "parser.yy" 6136 6122 { (yyval.flag) = false; } 6137 6123 break; 6138 6124 6139 case 21 2:6140 6141 /* Line 1806 of yacc.c */ 6142 #line 889"parser.yy"6125 case 219: 6126 6127 /* Line 1806 of yacc.c */ 6128 #line 916 "parser.yy" 6143 6129 { (yyval.flag) = true; } 6144 6130 break; 6145 6131 6146 case 2 13:6147 6148 /* Line 1806 of yacc.c */ 6149 #line 894"parser.yy"6132 case 220: 6133 6134 /* Line 1806 of yacc.c */ 6135 #line 921 "parser.yy" 6150 6136 { (yyval.en) = 0; } 6151 6137 break; 6152 6138 6153 case 2 16:6154 6155 /* Line 1806 of yacc.c */ 6156 #line 9 01"parser.yy"6139 case 223: 6140 6141 /* Line 1806 of yacc.c */ 6142 #line 928 "parser.yy" 6157 6143 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 6158 6144 break; 6159 6145 6160 case 2 17:6161 6162 /* Line 1806 of yacc.c */ 6163 #line 9 06"parser.yy"6146 case 224: 6147 6148 /* Line 1806 of yacc.c */ 6149 #line 933 "parser.yy" 6164 6150 { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); } 6165 6151 break; 6166 6152 6167 case 2 18:6168 6169 /* Line 1806 of yacc.c */ 6170 #line 9 08"parser.yy"6153 case 225: 6154 6155 /* Line 1806 of yacc.c */ 6156 #line 935 "parser.yy" 6171 6157 { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); } 6172 6158 break; 6173 6159 6174 case 2 19:6175 6176 /* Line 1806 of yacc.c */ 6177 #line 9 13"parser.yy"6160 case 226: 6161 6162 /* Line 1806 of yacc.c */ 6163 #line 940 "parser.yy" 6178 6164 { (yyval.constant) = 0; } 6179 6165 break; 6180 6166 6181 case 22 0:6182 6183 /* Line 1806 of yacc.c */ 6184 #line 9 15"parser.yy"6167 case 227: 6168 6169 /* Line 1806 of yacc.c */ 6170 #line 942 "parser.yy" 6185 6171 { (yyval.constant) = (yyvsp[(1) - (1)].constant); } 6186 6172 break; 6187 6173 6188 case 22 1:6189 6190 /* Line 1806 of yacc.c */ 6191 #line 9 17"parser.yy"6174 case 228: 6175 6176 /* Line 1806 of yacc.c */ 6177 #line 944 "parser.yy" 6192 6178 { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); } 6193 6179 break; 6194 6180 6195 case 22 2:6196 6197 /* Line 1806 of yacc.c */ 6198 #line 9 22"parser.yy"6181 case 229: 6182 6183 /* Line 1806 of yacc.c */ 6184 #line 949 "parser.yy" 6199 6185 { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); } 6200 6186 break; 6201 6187 6202 case 2 23:6203 6204 /* Line 1806 of yacc.c */ 6205 #line 9 24"parser.yy"6188 case 230: 6189 6190 /* Line 1806 of yacc.c */ 6191 #line 951 "parser.yy" 6206 6192 { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); } 6207 6193 break; 6208 6194 6209 case 2 24:6210 6211 /* Line 1806 of yacc.c */ 6212 #line 9 31"parser.yy"6195 case 231: 6196 6197 /* Line 1806 of yacc.c */ 6198 #line 958 "parser.yy" 6213 6199 { (yyval.decl) = 0; } 6214 6200 break; 6215 6201 6216 case 2 27:6217 6218 /* Line 1806 of yacc.c */ 6219 #line 9 38"parser.yy"6202 case 234: 6203 6204 /* Line 1806 of yacc.c */ 6205 #line 965 "parser.yy" 6220 6206 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6221 6207 break; 6222 6208 6223 case 2 28:6224 6225 /* Line 1806 of yacc.c */ 6226 #line 9 43"parser.yy"6209 case 235: 6210 6211 /* Line 1806 of yacc.c */ 6212 #line 970 "parser.yy" 6227 6213 { (yyval.decl) = 0; } 6228 6214 break; 6229 6215 6230 case 23 1:6231 6232 /* Line 1806 of yacc.c */ 6233 #line 9 50"parser.yy"6216 case 238: 6217 6218 /* Line 1806 of yacc.c */ 6219 #line 977 "parser.yy" 6234 6220 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6235 6221 break; 6236 6222 6237 case 2 36:6238 6239 /* Line 1806 of yacc.c */ 6240 #line 9 64"parser.yy"6223 case 243: 6224 6225 /* Line 1806 of yacc.c */ 6226 #line 991 "parser.yy" 6241 6227 {} 6242 6228 break; 6243 6229 6244 case 2 37:6245 6246 /* Line 1806 of yacc.c */ 6247 #line 9 65"parser.yy"6230 case 244: 6231 6232 /* Line 1806 of yacc.c */ 6233 #line 992 "parser.yy" 6248 6234 {} 6249 6235 break; 6250 6236 6251 case 2 45:6252 6253 /* Line 1806 of yacc.c */ 6254 #line 994"parser.yy"6237 case 252: 6238 6239 /* Line 1806 of yacc.c */ 6240 #line 1021 "parser.yy" 6255 6241 { 6256 6242 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6259 6245 break; 6260 6246 6261 case 2 46:6262 6263 /* Line 1806 of yacc.c */ 6264 #line 10 01"parser.yy"6247 case 253: 6248 6249 /* Line 1806 of yacc.c */ 6250 #line 1028 "parser.yy" 6265 6251 { 6266 6252 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6269 6255 break; 6270 6256 6271 case 2 47:6272 6273 /* Line 1806 of yacc.c */ 6274 #line 10 06"parser.yy"6257 case 254: 6258 6259 /* Line 1806 of yacc.c */ 6260 #line 1033 "parser.yy" 6275 6261 { 6276 6262 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID ); … … 6279 6265 break; 6280 6266 6281 case 2 48:6282 6283 /* Line 1806 of yacc.c */ 6284 #line 10 16"parser.yy"6267 case 255: 6268 6269 /* Line 1806 of yacc.c */ 6270 #line 1043 "parser.yy" 6285 6271 { 6286 6272 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6289 6275 break; 6290 6276 6291 case 2 49:6292 6293 /* Line 1806 of yacc.c */ 6294 #line 10 21"parser.yy"6277 case 256: 6278 6279 /* Line 1806 of yacc.c */ 6280 #line 1048 "parser.yy" 6295 6281 { 6296 6282 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6299 6285 break; 6300 6286 6301 case 25 0:6302 6303 /* Line 1806 of yacc.c */ 6304 #line 10 26"parser.yy"6287 case 257: 6288 6289 /* Line 1806 of yacc.c */ 6290 #line 1053 "parser.yy" 6305 6291 { 6306 6292 typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) ); … … 6309 6295 break; 6310 6296 6311 case 25 1:6312 6313 /* Line 1806 of yacc.c */ 6314 #line 10 34"parser.yy"6297 case 258: 6298 6299 /* Line 1806 of yacc.c */ 6300 #line 1061 "parser.yy" 6315 6301 { 6316 6302 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6319 6305 break; 6320 6306 6321 case 25 2:6322 6323 /* Line 1806 of yacc.c */ 6324 #line 10 39"parser.yy"6307 case 259: 6308 6309 /* Line 1806 of yacc.c */ 6310 #line 1066 "parser.yy" 6325 6311 { 6326 6312 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6329 6315 break; 6330 6316 6331 case 2 53:6332 6333 /* Line 1806 of yacc.c */ 6334 #line 10 44"parser.yy"6317 case 260: 6318 6319 /* Line 1806 of yacc.c */ 6320 #line 1071 "parser.yy" 6335 6321 { 6336 6322 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6339 6325 break; 6340 6326 6341 case 2 54:6342 6343 /* Line 1806 of yacc.c */ 6344 #line 10 49"parser.yy"6327 case 261: 6328 6329 /* Line 1806 of yacc.c */ 6330 #line 1076 "parser.yy" 6345 6331 { 6346 6332 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6349 6335 break; 6350 6336 6351 case 2 55:6352 6353 /* Line 1806 of yacc.c */ 6354 #line 10 54"parser.yy"6337 case 262: 6338 6339 /* Line 1806 of yacc.c */ 6340 #line 1081 "parser.yy" 6355 6341 { 6356 6342 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 6359 6345 break; 6360 6346 6361 case 2 56:6362 6363 /* Line 1806 of yacc.c */ 6364 #line 10 62"parser.yy"6347 case 263: 6348 6349 /* Line 1806 of yacc.c */ 6350 #line 1089 "parser.yy" 6365 6351 { 6366 6352 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true ); … … 6368 6354 break; 6369 6355 6370 case 2 57:6371 6372 /* Line 1806 of yacc.c */ 6373 #line 1 085"parser.yy"6356 case 264: 6357 6358 /* Line 1806 of yacc.c */ 6359 #line 1112 "parser.yy" 6374 6360 { 6375 6361 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6377 6363 break; 6378 6364 6379 case 2 58:6380 6381 /* Line 1806 of yacc.c */ 6382 #line 1 089"parser.yy"6365 case 265: 6366 6367 /* Line 1806 of yacc.c */ 6368 #line 1116 "parser.yy" 6383 6369 { 6384 6370 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6386 6372 break; 6387 6373 6388 case 2 59:6389 6390 /* Line 1806 of yacc.c */ 6391 #line 1 096"parser.yy"6374 case 266: 6375 6376 /* Line 1806 of yacc.c */ 6377 #line 1123 "parser.yy" 6392 6378 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 6393 6379 break; 6394 6380 6395 case 26 0:6396 6397 /* Line 1806 of yacc.c */ 6398 #line 11 00"parser.yy"6381 case 267: 6382 6383 /* Line 1806 of yacc.c */ 6384 #line 1127 "parser.yy" 6399 6385 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); } 6400 6386 break; 6401 6387 6402 case 26 1:6403 6404 /* Line 1806 of yacc.c */ 6405 #line 11 05"parser.yy"6388 case 268: 6389 6390 /* Line 1806 of yacc.c */ 6391 #line 1132 "parser.yy" 6406 6392 { 6407 6393 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6410 6396 break; 6411 6397 6412 case 26 2:6413 6414 /* Line 1806 of yacc.c */ 6415 #line 11 10"parser.yy"6398 case 269: 6399 6400 /* Line 1806 of yacc.c */ 6401 #line 1137 "parser.yy" 6416 6402 { 6417 6403 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6420 6406 break; 6421 6407 6422 case 2 63:6423 6424 /* Line 1806 of yacc.c */ 6425 #line 11 15"parser.yy"6408 case 270: 6409 6410 /* Line 1806 of yacc.c */ 6411 #line 1142 "parser.yy" 6426 6412 { 6427 6413 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD ); … … 6430 6416 break; 6431 6417 6432 case 2 64:6433 6434 /* Line 1806 of yacc.c */ 6435 #line 11 26"parser.yy"6418 case 271: 6419 6420 /* Line 1806 of yacc.c */ 6421 #line 1153 "parser.yy" 6436 6422 { 6437 6423 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6440 6426 break; 6441 6427 6442 case 2 65:6443 6444 /* Line 1806 of yacc.c */ 6445 #line 11 31"parser.yy"6428 case 272: 6429 6430 /* Line 1806 of yacc.c */ 6431 #line 1158 "parser.yy" 6446 6432 { 6447 6433 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6450 6436 break; 6451 6437 6452 case 2 66:6453 6454 /* Line 1806 of yacc.c */ 6455 #line 11 36"parser.yy"6438 case 273: 6439 6440 /* Line 1806 of yacc.c */ 6441 #line 1163 "parser.yy" 6456 6442 { 6457 6443 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6460 6446 break; 6461 6447 6462 case 2 67:6463 6464 /* Line 1806 of yacc.c */ 6465 #line 11 41"parser.yy"6448 case 274: 6449 6450 /* Line 1806 of yacc.c */ 6451 #line 1168 "parser.yy" 6466 6452 { 6467 6453 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6470 6456 break; 6471 6457 6472 case 2 68:6473 6474 /* Line 1806 of yacc.c */ 6475 #line 11 46"parser.yy"6458 case 275: 6459 6460 /* Line 1806 of yacc.c */ 6461 #line 1173 "parser.yy" 6476 6462 { 6477 6463 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6480 6466 break; 6481 6467 6482 case 2 69:6483 6484 /* Line 1806 of yacc.c */ 6485 #line 11 55"parser.yy"6468 case 276: 6469 6470 /* Line 1806 of yacc.c */ 6471 #line 1182 "parser.yy" 6486 6472 { 6487 6473 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD ); … … 6490 6476 break; 6491 6477 6492 case 27 0:6493 6494 /* Line 1806 of yacc.c */ 6495 #line 11 60"parser.yy"6478 case 277: 6479 6480 /* Line 1806 of yacc.c */ 6481 #line 1187 "parser.yy" 6496 6482 { 6497 6483 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD ); … … 6500 6486 break; 6501 6487 6502 case 2 75:6503 6504 /* Line 1806 of yacc.c */ 6505 #line 1 177"parser.yy"6488 case 282: 6489 6490 /* Line 1806 of yacc.c */ 6491 #line 1204 "parser.yy" 6506 6492 { 6507 6493 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6510 6496 break; 6511 6497 6512 case 2 76:6513 6514 /* Line 1806 of yacc.c */ 6515 #line 1 182"parser.yy"6498 case 283: 6499 6500 /* Line 1806 of yacc.c */ 6501 #line 1209 "parser.yy" 6516 6502 { 6517 6503 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6520 6506 break; 6521 6507 6522 case 2 85:6523 6524 /* Line 1806 of yacc.c */ 6525 #line 12 04"parser.yy"6508 case 292: 6509 6510 /* Line 1806 of yacc.c */ 6511 #line 1231 "parser.yy" 6526 6512 { (yyval.decl) = 0; } 6527 6513 break; 6528 6514 6529 case 2 88:6530 6531 /* Line 1806 of yacc.c */ 6532 #line 12 16"parser.yy"6515 case 295: 6516 6517 /* Line 1806 of yacc.c */ 6518 #line 1243 "parser.yy" 6533 6519 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6534 6520 break; 6535 6521 6536 case 29 1:6537 6538 /* Line 1806 of yacc.c */ 6539 #line 12 27"parser.yy"6522 case 298: 6523 6524 /* Line 1806 of yacc.c */ 6525 #line 1254 "parser.yy" 6540 6526 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); } 6541 6527 break; 6542 6528 6543 case 29 2:6544 6545 /* Line 1806 of yacc.c */ 6546 #line 12 29"parser.yy"6529 case 299: 6530 6531 /* Line 1806 of yacc.c */ 6532 #line 1256 "parser.yy" 6547 6533 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); } 6548 6534 break; 6549 6535 6550 case 293:6551 6552 /* Line 1806 of yacc.c */ 6553 #line 12 31"parser.yy"6536 case 300: 6537 6538 /* Line 1806 of yacc.c */ 6539 #line 1258 "parser.yy" 6554 6540 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); } 6555 6541 break; 6556 6542 6557 case 294:6558 6559 /* Line 1806 of yacc.c */ 6560 #line 12 33"parser.yy"6543 case 301: 6544 6545 /* Line 1806 of yacc.c */ 6546 #line 1260 "parser.yy" 6561 6547 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); } 6562 6548 break; 6563 6549 6564 case 295:6565 6566 /* Line 1806 of yacc.c */ 6567 #line 12 35"parser.yy"6550 case 302: 6551 6552 /* Line 1806 of yacc.c */ 6553 #line 1262 "parser.yy" 6568 6554 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); } 6569 6555 break; 6570 6556 6571 case 296:6572 6573 /* Line 1806 of yacc.c */ 6574 #line 12 37"parser.yy"6557 case 303: 6558 6559 /* Line 1806 of yacc.c */ 6560 #line 1264 "parser.yy" 6575 6561 { 6576 6562 typedefTable.enterScope(); … … 6578 6564 break; 6579 6565 6580 case 297:6581 6582 /* Line 1806 of yacc.c */ 6583 #line 12 41"parser.yy"6566 case 304: 6567 6568 /* Line 1806 of yacc.c */ 6569 #line 1268 "parser.yy" 6584 6570 { 6585 6571 typedefTable.leaveScope(); … … 6588 6574 break; 6589 6575 6590 case 299:6591 6592 /* Line 1806 of yacc.c */ 6593 #line 12 50"parser.yy"6576 case 306: 6577 6578 /* Line 1806 of yacc.c */ 6579 #line 1277 "parser.yy" 6594 6580 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6595 6581 break; 6596 6582 6597 case 30 0:6598 6599 /* Line 1806 of yacc.c */ 6600 #line 12 52"parser.yy"6583 case 307: 6584 6585 /* Line 1806 of yacc.c */ 6586 #line 1279 "parser.yy" 6601 6587 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6602 6588 break; 6603 6589 6604 case 30 2:6605 6606 /* Line 1806 of yacc.c */ 6607 #line 12 63"parser.yy"6590 case 309: 6591 6592 /* Line 1806 of yacc.c */ 6593 #line 1290 "parser.yy" 6608 6594 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6609 6595 break; 6610 6596 6611 case 3 04:6612 6613 /* Line 1806 of yacc.c */ 6614 #line 12 72"parser.yy"6597 case 311: 6598 6599 /* Line 1806 of yacc.c */ 6600 #line 1299 "parser.yy" 6615 6601 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } 6616 6602 break; 6617 6603 6618 case 3 05:6619 6620 /* Line 1806 of yacc.c */ 6621 #line 1 274"parser.yy"6604 case 312: 6605 6606 /* Line 1806 of yacc.c */ 6607 #line 1301 "parser.yy" 6622 6608 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); } 6623 6609 break; 6624 6610 6625 case 3 06:6626 6627 /* Line 1806 of yacc.c */ 6628 #line 1 276"parser.yy"6611 case 313: 6612 6613 /* Line 1806 of yacc.c */ 6614 #line 1303 "parser.yy" 6629 6615 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); } 6630 6616 break; 6631 6617 6632 case 3 07:6633 6634 /* Line 1806 of yacc.c */ 6635 #line 1 278"parser.yy"6618 case 314: 6619 6620 /* Line 1806 of yacc.c */ 6621 #line 1305 "parser.yy" 6636 6622 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 6637 6623 break; 6638 6624 6639 case 3 08:6640 6641 /* Line 1806 of yacc.c */ 6642 #line 1 280"parser.yy"6625 case 315: 6626 6627 /* Line 1806 of yacc.c */ 6628 #line 1307 "parser.yy" 6643 6629 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); } 6644 6630 break; 6645 6631 6646 case 3 09:6647 6648 /* Line 1806 of yacc.c */ 6649 #line 1 282"parser.yy"6632 case 316: 6633 6634 /* Line 1806 of yacc.c */ 6635 #line 1309 "parser.yy" 6650 6636 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 6651 6637 break; 6652 6638 6653 case 31 0:6654 6655 /* Line 1806 of yacc.c */ 6656 #line 1 284"parser.yy"6639 case 317: 6640 6641 /* Line 1806 of yacc.c */ 6642 #line 1311 "parser.yy" 6657 6643 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); } 6658 6644 break; 6659 6645 6660 case 31 1:6661 6662 /* Line 1806 of yacc.c */ 6663 #line 1 286"parser.yy"6646 case 318: 6647 6648 /* Line 1806 of yacc.c */ 6649 #line 1313 "parser.yy" 6664 6650 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); } 6665 6651 break; 6666 6652 6667 case 31 2:6668 6669 /* Line 1806 of yacc.c */ 6670 #line 1 291"parser.yy"6653 case 319: 6654 6655 /* Line 1806 of yacc.c */ 6656 #line 1318 "parser.yy" 6671 6657 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); } 6672 6658 break; 6673 6659 6674 case 3 13:6675 6676 /* Line 1806 of yacc.c */ 6677 #line 1 293"parser.yy"6660 case 320: 6661 6662 /* Line 1806 of yacc.c */ 6663 #line 1320 "parser.yy" 6678 6664 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); } 6679 6665 break; 6680 6666 6681 case 3 14:6682 6683 /* Line 1806 of yacc.c */ 6684 #line 1 295"parser.yy"6667 case 321: 6668 6669 /* Line 1806 of yacc.c */ 6670 #line 1322 "parser.yy" 6685 6671 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); } 6686 6672 break; 6687 6673 6688 case 3 15:6689 6690 /* Line 1806 of yacc.c */ 6691 #line 1 297"parser.yy"6674 case 322: 6675 6676 /* Line 1806 of yacc.c */ 6677 #line 1324 "parser.yy" 6692 6678 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); } 6693 6679 break; 6694 6680 6695 case 3 16:6696 6697 /* Line 1806 of yacc.c */ 6698 #line 1 299"parser.yy"6681 case 323: 6682 6683 /* Line 1806 of yacc.c */ 6684 #line 1326 "parser.yy" 6699 6685 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); } 6700 6686 break; 6701 6687 6702 case 3 17:6703 6704 /* Line 1806 of yacc.c */ 6705 #line 13 01"parser.yy"6688 case 324: 6689 6690 /* Line 1806 of yacc.c */ 6691 #line 1328 "parser.yy" 6706 6692 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); } 6707 6693 break; 6708 6694 6709 case 3 18:6710 6711 /* Line 1806 of yacc.c */ 6712 #line 13 03"parser.yy"6695 case 325: 6696 6697 /* Line 1806 of yacc.c */ 6698 #line 1330 "parser.yy" 6713 6699 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); } 6714 6700 break; 6715 6701 6716 case 3 19:6717 6718 /* Line 1806 of yacc.c */ 6719 #line 13 05"parser.yy"6702 case 326: 6703 6704 /* Line 1806 of yacc.c */ 6705 #line 1332 "parser.yy" 6720 6706 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); } 6721 6707 break; 6722 6708 6723 case 32 0:6724 6725 /* Line 1806 of yacc.c */ 6726 #line 13 07"parser.yy"6709 case 327: 6710 6711 /* Line 1806 of yacc.c */ 6712 #line 1334 "parser.yy" 6727 6713 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); } 6728 6714 break; 6729 6715 6730 case 32 1:6731 6732 /* Line 1806 of yacc.c */ 6733 #line 13 09"parser.yy"6716 case 328: 6717 6718 /* Line 1806 of yacc.c */ 6719 #line 1336 "parser.yy" 6734 6720 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); } 6735 6721 break; 6736 6722 6737 case 32 2:6738 6739 /* Line 1806 of yacc.c */ 6740 #line 13 11"parser.yy"6723 case 329: 6724 6725 /* Line 1806 of yacc.c */ 6726 #line 1338 "parser.yy" 6741 6727 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); } 6742 6728 break; 6743 6729 6744 case 3 23:6745 6746 /* Line 1806 of yacc.c */ 6747 #line 13 13"parser.yy"6730 case 330: 6731 6732 /* Line 1806 of yacc.c */ 6733 #line 1340 "parser.yy" 6748 6734 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); } 6749 6735 break; 6750 6736 6751 case 3 25:6752 6753 /* Line 1806 of yacc.c */ 6754 #line 13 20"parser.yy"6737 case 332: 6738 6739 /* Line 1806 of yacc.c */ 6740 #line 1347 "parser.yy" 6755 6741 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6756 6742 break; 6757 6743 6758 case 3 26:6759 6760 /* Line 1806 of yacc.c */ 6761 #line 13 22"parser.yy"6744 case 333: 6745 6746 /* Line 1806 of yacc.c */ 6747 #line 1349 "parser.yy" 6762 6748 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6763 6749 break; 6764 6750 6765 case 3 27:6766 6767 /* Line 1806 of yacc.c */ 6768 #line 13 24"parser.yy"6751 case 334: 6752 6753 /* Line 1806 of yacc.c */ 6754 #line 1351 "parser.yy" 6769 6755 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6770 6756 break; 6771 6757 6772 case 3 28:6773 6774 /* Line 1806 of yacc.c */ 6775 #line 13 26"parser.yy"6758 case 335: 6759 6760 /* Line 1806 of yacc.c */ 6761 #line 1353 "parser.yy" 6776 6762 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); } 6777 6763 break; 6778 6764 6779 case 33 0:6780 6781 /* Line 1806 of yacc.c */ 6782 #line 13 32"parser.yy"6765 case 337: 6766 6767 /* Line 1806 of yacc.c */ 6768 #line 1359 "parser.yy" 6783 6769 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6784 6770 break; 6785 6771 6786 case 33 2:6787 6788 /* Line 1806 of yacc.c */ 6789 #line 13 39"parser.yy"6772 case 339: 6773 6774 /* Line 1806 of yacc.c */ 6775 #line 1366 "parser.yy" 6790 6776 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6791 6777 break; 6792 6778 6793 case 3 33:6794 6795 /* Line 1806 of yacc.c */ 6796 #line 13 41"parser.yy"6779 case 340: 6780 6781 /* Line 1806 of yacc.c */ 6782 #line 1368 "parser.yy" 6797 6783 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6798 6784 break; 6799 6785 6800 case 3 34:6801 6802 /* Line 1806 of yacc.c */ 6803 #line 13 43"parser.yy"6786 case 341: 6787 6788 /* Line 1806 of yacc.c */ 6789 #line 1370 "parser.yy" 6804 6790 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); } 6805 6791 break; 6806 6792 6807 case 3 35:6808 6809 /* Line 1806 of yacc.c */ 6810 #line 13 48"parser.yy"6793 case 342: 6794 6795 /* Line 1806 of yacc.c */ 6796 #line 1375 "parser.yy" 6811 6797 { (yyval.decl) = (yyvsp[(3) - (4)].decl); } 6812 6798 break; 6813 6799 6814 case 3 36:6815 6816 /* Line 1806 of yacc.c */ 6817 #line 13 50"parser.yy"6800 case 343: 6801 6802 /* Line 1806 of yacc.c */ 6803 #line 1377 "parser.yy" 6818 6804 { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); } 6819 6805 break; 6820 6806 6821 case 3 37:6822 6823 /* Line 1806 of yacc.c */ 6824 #line 13 52"parser.yy"6807 case 344: 6808 6809 /* Line 1806 of yacc.c */ 6810 #line 1379 "parser.yy" 6825 6811 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); } 6826 6812 break; 6827 6813 6828 case 3 38:6829 6830 /* Line 1806 of yacc.c */ 6831 #line 13 54"parser.yy"6814 case 345: 6815 6816 /* Line 1806 of yacc.c */ 6817 #line 1381 "parser.yy" 6832 6818 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 6833 6819 break; 6834 6820 6835 case 34 0:6836 6837 /* Line 1806 of yacc.c */ 6838 #line 13 60"parser.yy"6821 case 347: 6822 6823 /* Line 1806 of yacc.c */ 6824 #line 1387 "parser.yy" 6839 6825 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6840 6826 break; 6841 6827 6842 case 34 1:6843 6844 /* Line 1806 of yacc.c */ 6845 #line 13 62"parser.yy"6828 case 348: 6829 6830 /* Line 1806 of yacc.c */ 6831 #line 1389 "parser.yy" 6846 6832 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6847 6833 break; 6848 6834 6849 case 34 2:6850 6851 /* Line 1806 of yacc.c */ 6852 #line 13 64"parser.yy"6835 case 349: 6836 6837 /* Line 1806 of yacc.c */ 6838 #line 1391 "parser.yy" 6853 6839 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6854 6840 break; 6855 6841 6856 case 3 44:6857 6858 /* Line 1806 of yacc.c */ 6859 #line 13 70"parser.yy"6842 case 351: 6843 6844 /* Line 1806 of yacc.c */ 6845 #line 1397 "parser.yy" 6860 6846 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6861 6847 break; 6862 6848 6863 case 3 45:6864 6865 /* Line 1806 of yacc.c */ 6866 #line 13 72"parser.yy"6849 case 352: 6850 6851 /* Line 1806 of yacc.c */ 6852 #line 1399 "parser.yy" 6867 6853 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6868 6854 break; 6869 6855 6870 case 3 47:6871 6872 /* Line 1806 of yacc.c */ 6873 #line 1 378"parser.yy"6856 case 354: 6857 6858 /* Line 1806 of yacc.c */ 6859 #line 1405 "parser.yy" 6874 6860 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6875 6861 break; 6876 6862 6877 case 3 48:6878 6879 /* Line 1806 of yacc.c */ 6880 #line 1 380"parser.yy"6863 case 355: 6864 6865 /* Line 1806 of yacc.c */ 6866 #line 1407 "parser.yy" 6881 6867 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6882 6868 break; 6883 6869 6884 case 3 49:6885 6886 /* Line 1806 of yacc.c */ 6887 #line 1 382"parser.yy"6870 case 356: 6871 6872 /* Line 1806 of yacc.c */ 6873 #line 1409 "parser.yy" 6888 6874 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6889 6875 break; 6890 6876 6891 case 35 0:6892 6893 /* Line 1806 of yacc.c */ 6894 #line 1 387"parser.yy"6877 case 357: 6878 6879 /* Line 1806 of yacc.c */ 6880 #line 1414 "parser.yy" 6895 6881 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); } 6896 6882 break; 6897 6883 6898 case 35 1:6899 6900 /* Line 1806 of yacc.c */ 6901 #line 1 389"parser.yy"6884 case 358: 6885 6886 /* Line 1806 of yacc.c */ 6887 #line 1416 "parser.yy" 6902 6888 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6903 6889 break; 6904 6890 6905 case 35 2:6906 6907 /* Line 1806 of yacc.c */ 6908 #line 1 391"parser.yy"6891 case 359: 6892 6893 /* Line 1806 of yacc.c */ 6894 #line 1418 "parser.yy" 6909 6895 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6910 6896 break; 6911 6897 6912 case 3 55:6913 6914 /* Line 1806 of yacc.c */ 6915 #line 14 01"parser.yy"6898 case 362: 6899 6900 /* Line 1806 of yacc.c */ 6901 #line 1428 "parser.yy" 6916 6902 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); } 6917 6903 break; 6918 6904 6919 case 3 56:6920 6921 /* Line 1806 of yacc.c */ 6922 #line 14 03"parser.yy"6905 case 363: 6906 6907 /* Line 1806 of yacc.c */ 6908 #line 1430 "parser.yy" 6923 6909 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); } 6924 6910 break; 6925 6911 6926 case 3 57:6927 6928 /* Line 1806 of yacc.c */ 6929 #line 14 05"parser.yy"6912 case 364: 6913 6914 /* Line 1806 of yacc.c */ 6915 #line 1432 "parser.yy" 6930 6916 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); } 6931 6917 break; 6932 6918 6933 case 3 58:6934 6935 /* Line 1806 of yacc.c */ 6936 #line 14 07"parser.yy"6919 case 365: 6920 6921 /* Line 1806 of yacc.c */ 6922 #line 1434 "parser.yy" 6937 6923 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); } 6938 6924 break; 6939 6925 6940 case 3 59:6941 6942 /* Line 1806 of yacc.c */ 6943 #line 14 09"parser.yy"6926 case 366: 6927 6928 /* Line 1806 of yacc.c */ 6929 #line 1436 "parser.yy" 6944 6930 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 6945 6931 break; 6946 6932 6947 case 36 0:6948 6949 /* Line 1806 of yacc.c */ 6950 #line 14 14"parser.yy"6933 case 367: 6934 6935 /* Line 1806 of yacc.c */ 6936 #line 1441 "parser.yy" 6951 6937 { (yyval.aggKey) = DeclarationNode::Struct; } 6952 6938 break; 6953 6939 6954 case 36 1:6955 6956 /* Line 1806 of yacc.c */ 6957 #line 14 16"parser.yy"6940 case 368: 6941 6942 /* Line 1806 of yacc.c */ 6943 #line 1443 "parser.yy" 6958 6944 { (yyval.aggKey) = DeclarationNode::Union; } 6959 6945 break; 6960 6946 6961 case 36 2:6962 6963 /* Line 1806 of yacc.c */ 6964 #line 14 21"parser.yy"6947 case 369: 6948 6949 /* Line 1806 of yacc.c */ 6950 #line 1448 "parser.yy" 6965 6951 { (yyval.decl) = (yyvsp[(1) - (1)].decl); } 6966 6952 break; 6967 6953 6968 case 3 63:6969 6970 /* Line 1806 of yacc.c */ 6971 #line 14 23"parser.yy"6954 case 370: 6955 6956 /* Line 1806 of yacc.c */ 6957 #line 1450 "parser.yy" 6972 6958 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 6973 6959 break; 6974 6960 6975 case 3 65:6976 6977 /* Line 1806 of yacc.c */ 6978 #line 14 29"parser.yy"6961 case 372: 6962 6963 /* Line 1806 of yacc.c */ 6964 #line 1456 "parser.yy" 6979 6965 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 6980 6966 break; 6981 6967 6982 case 3 67:6983 6984 /* Line 1806 of yacc.c */ 6985 #line 14 32"parser.yy"6968 case 374: 6969 6970 /* Line 1806 of yacc.c */ 6971 #line 1459 "parser.yy" 6986 6972 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 6987 6973 break; 6988 6974 6989 case 3 69:6990 6991 /* Line 1806 of yacc.c */ 6992 #line 14 38"parser.yy"6975 case 376: 6976 6977 /* Line 1806 of yacc.c */ 6978 #line 1465 "parser.yy" 6993 6979 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); } 6994 6980 break; 6995 6981 6996 case 37 0:6997 6998 /* Line 1806 of yacc.c */ 6999 #line 14 40"parser.yy"6982 case 377: 6983 6984 /* Line 1806 of yacc.c */ 6985 #line 1467 "parser.yy" 7000 6986 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); } 7001 6987 break; 7002 6988 7003 case 37 1:7004 7005 /* Line 1806 of yacc.c */ 7006 #line 14 42"parser.yy"6989 case 378: 6990 6991 /* Line 1806 of yacc.c */ 6992 #line 1469 "parser.yy" 7007 6993 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); } 7008 6994 break; 7009 6995 7010 case 37 2:7011 7012 /* Line 1806 of yacc.c */ 7013 #line 14 47"parser.yy"6996 case 379: 6997 6998 /* Line 1806 of yacc.c */ 6999 #line 1474 "parser.yy" 7014 7000 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7015 7001 break; 7016 7002 7017 case 3 73:7018 7019 /* Line 1806 of yacc.c */ 7020 #line 14 49"parser.yy"7003 case 380: 7004 7005 /* Line 1806 of yacc.c */ 7006 #line 1476 "parser.yy" 7021 7007 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); } 7022 7008 break; 7023 7009 7024 case 3 74:7025 7026 /* Line 1806 of yacc.c */ 7027 #line 14 54"parser.yy"7010 case 381: 7011 7012 /* Line 1806 of yacc.c */ 7013 #line 1481 "parser.yy" 7028 7014 { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ } 7029 7015 break; 7030 7016 7031 case 3 75:7032 7033 /* Line 1806 of yacc.c */ 7034 #line 14 56"parser.yy"7017 case 382: 7018 7019 /* Line 1806 of yacc.c */ 7020 #line 1483 "parser.yy" 7035 7021 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); } 7036 7022 break; 7037 7023 7038 case 3 76:7039 7040 /* Line 1806 of yacc.c */ 7041 #line 14 59"parser.yy"7024 case 383: 7025 7026 /* Line 1806 of yacc.c */ 7027 #line 1486 "parser.yy" 7042 7028 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7043 7029 break; 7044 7030 7045 case 3 77:7046 7047 /* Line 1806 of yacc.c */ 7048 #line 14 62"parser.yy"7031 case 384: 7032 7033 /* Line 1806 of yacc.c */ 7034 #line 1489 "parser.yy" 7049 7035 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7050 7036 break; 7051 7037 7052 case 3 79:7053 7054 /* Line 1806 of yacc.c */ 7055 #line 14 68"parser.yy"7038 case 386: 7039 7040 /* Line 1806 of yacc.c */ 7041 #line 1495 "parser.yy" 7056 7042 { (yyval.en) = 0; } 7057 7043 break; 7058 7044 7059 case 38 0:7060 7061 /* Line 1806 of yacc.c */ 7062 #line 14 70"parser.yy"7045 case 387: 7046 7047 /* Line 1806 of yacc.c */ 7048 #line 1497 "parser.yy" 7063 7049 { (yyval.en) = (yyvsp[(1) - (1)].en); } 7064 7050 break; 7065 7051 7066 case 381:7067 7068 /* Line 1806 of yacc.c */7069 #line 1475 "parser.yy"7070 { (yyval.en) = (yyvsp[(2) - (2)].en); }7071 break;7072 7073 case 383:7074 7075 /* Line 1806 of yacc.c */7076 #line 1484 "parser.yy"7077 { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }7078 break;7079 7080 case 384:7081 7082 /* Line 1806 of yacc.c */7083 #line 1486 "parser.yy"7084 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }7085 break;7086 7087 case 385:7088 7089 /* Line 1806 of yacc.c */7090 #line 1488 "parser.yy"7091 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }7092 break;7093 7094 case 386:7095 7096 /* Line 1806 of yacc.c */7097 #line 1493 "parser.yy"7098 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }7099 break;7100 7101 case 387:7102 7103 /* Line 1806 of yacc.c */7104 #line 1495 "parser.yy"7105 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }7106 break;7107 7108 7052 case 388: 7109 7110 /* Line 1806 of yacc.c */7111 #line 1500 "parser.yy"7112 { (yyval.en) = 0; }7113 break;7114 7115 case 389:7116 7053 7117 7054 /* Line 1806 of yacc.c */ … … 7123 7060 7124 7061 /* Line 1806 of yacc.c */ 7125 #line 1509 "parser.yy" 7062 #line 1511 "parser.yy" 7063 { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); } 7064 break; 7065 7066 case 391: 7067 7068 /* Line 1806 of yacc.c */ 7069 #line 1513 "parser.yy" 7070 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); } 7071 break; 7072 7073 case 392: 7074 7075 /* Line 1806 of yacc.c */ 7076 #line 1515 "parser.yy" 7077 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); } 7078 break; 7079 7080 case 393: 7081 7082 /* Line 1806 of yacc.c */ 7083 #line 1520 "parser.yy" 7084 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); } 7085 break; 7086 7087 case 394: 7088 7089 /* Line 1806 of yacc.c */ 7090 #line 1522 "parser.yy" 7091 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); } 7092 break; 7093 7094 case 395: 7095 7096 /* Line 1806 of yacc.c */ 7097 #line 1527 "parser.yy" 7098 { (yyval.en) = 0; } 7099 break; 7100 7101 case 396: 7102 7103 /* Line 1806 of yacc.c */ 7104 #line 1529 "parser.yy" 7105 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7106 break; 7107 7108 case 397: 7109 7110 /* Line 1806 of yacc.c */ 7111 #line 1536 "parser.yy" 7126 7112 { (yyval.decl) = 0; } 7127 7113 break; 7128 7114 7129 case 394:7130 7131 /* Line 1806 of yacc.c */ 7132 #line 15 17"parser.yy"7115 case 401: 7116 7117 /* Line 1806 of yacc.c */ 7118 #line 1544 "parser.yy" 7133 7119 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7134 7120 break; 7135 7121 7136 case 395:7137 7138 /* Line 1806 of yacc.c */ 7139 #line 15 19"parser.yy"7122 case 402: 7123 7124 /* Line 1806 of yacc.c */ 7125 #line 1546 "parser.yy" 7140 7126 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7141 7127 break; 7142 7128 7143 case 396:7144 7145 /* Line 1806 of yacc.c */ 7146 #line 15 21"parser.yy"7129 case 403: 7130 7131 /* Line 1806 of yacc.c */ 7132 #line 1548 "parser.yy" 7147 7133 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7148 7134 break; 7149 7135 7150 case 398:7151 7152 /* Line 1806 of yacc.c */ 7153 #line 15 29"parser.yy"7136 case 405: 7137 7138 /* Line 1806 of yacc.c */ 7139 #line 1556 "parser.yy" 7154 7140 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7155 7141 break; 7156 7142 7157 case 399:7158 7159 /* Line 1806 of yacc.c */7160 #line 1531 "parser.yy"7161 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }7162 break;7163 7164 case 400:7165 7166 /* Line 1806 of yacc.c */7167 #line 1533 "parser.yy"7168 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }7169 break;7170 7171 case 402:7172 7173 /* Line 1806 of yacc.c */7174 #line 1539 "parser.yy"7175 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }7176 break;7177 7178 case 403:7179 7180 /* Line 1806 of yacc.c */7181 #line 1544 "parser.yy"7182 { (yyval.decl) = 0; }7183 break;7184 7185 7143 case 406: 7186 7187 /* Line 1806 of yacc.c */7188 #line 1551 "parser.yy"7189 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }7190 break;7191 7192 case 409:7193 7144 7194 7145 /* Line 1806 of yacc.c */ … … 7197 7148 break; 7198 7149 7150 case 407: 7151 7152 /* Line 1806 of yacc.c */ 7153 #line 1560 "parser.yy" 7154 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); } 7155 break; 7156 7157 case 409: 7158 7159 /* Line 1806 of yacc.c */ 7160 #line 1566 "parser.yy" 7161 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7162 break; 7163 7199 7164 case 410: 7200 7165 7201 7166 /* Line 1806 of yacc.c */ 7202 #line 1560 "parser.yy" 7167 #line 1571 "parser.yy" 7168 { (yyval.decl) = 0; } 7169 break; 7170 7171 case 413: 7172 7173 /* Line 1806 of yacc.c */ 7174 #line 1578 "parser.yy" 7175 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7176 break; 7177 7178 case 416: 7179 7180 /* Line 1806 of yacc.c */ 7181 #line 1585 "parser.yy" 7203 7182 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7204 7183 break; 7205 7184 7206 case 412: 7207 7208 /* Line 1806 of yacc.c */ 7209 #line 1569 "parser.yy" 7185 case 417: 7186 7187 /* Line 1806 of yacc.c */ 7188 #line 1587 "parser.yy" 7189 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7190 break; 7191 7192 case 419: 7193 7194 /* Line 1806 of yacc.c */ 7195 #line 1596 "parser.yy" 7210 7196 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7211 7197 break; 7212 7198 7213 case 4 13:7214 7215 /* Line 1806 of yacc.c */ 7216 #line 15 72"parser.yy"7199 case 420: 7200 7201 /* Line 1806 of yacc.c */ 7202 #line 1599 "parser.yy" 7217 7203 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7218 7204 break; 7219 7205 7220 case 4 14:7221 7222 /* Line 1806 of yacc.c */ 7223 #line 1 574"parser.yy"7206 case 421: 7207 7208 /* Line 1806 of yacc.c */ 7209 #line 1601 "parser.yy" 7224 7210 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); } 7225 7211 break; 7226 7212 7227 case 4 19:7228 7229 /* Line 1806 of yacc.c */ 7230 #line 1 584"parser.yy"7213 case 426: 7214 7215 /* Line 1806 of yacc.c */ 7216 #line 1611 "parser.yy" 7231 7217 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7232 7218 break; 7233 7219 7234 case 42 1:7235 7236 /* Line 1806 of yacc.c */ 7237 #line 1 590"parser.yy"7220 case 428: 7221 7222 /* Line 1806 of yacc.c */ 7223 #line 1617 "parser.yy" 7238 7224 { 7239 7225 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7242 7228 break; 7243 7229 7244 case 42 2:7245 7246 /* Line 1806 of yacc.c */ 7247 #line 1 595"parser.yy"7230 case 429: 7231 7232 /* Line 1806 of yacc.c */ 7233 #line 1622 "parser.yy" 7248 7234 { 7249 7235 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7252 7238 break; 7253 7239 7254 case 4 24:7255 7256 /* Line 1806 of yacc.c */ 7257 #line 16 04"parser.yy"7240 case 431: 7241 7242 /* Line 1806 of yacc.c */ 7243 #line 1631 "parser.yy" 7258 7244 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7259 7245 break; 7260 7246 7261 case 4 25:7262 7263 /* Line 1806 of yacc.c */ 7264 #line 16 13"parser.yy"7247 case 432: 7248 7249 /* Line 1806 of yacc.c */ 7250 #line 1640 "parser.yy" 7265 7251 { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); } 7266 7252 break; 7267 7253 7268 case 4 26:7269 7270 /* Line 1806 of yacc.c */ 7271 #line 16 15"parser.yy"7254 case 433: 7255 7256 /* Line 1806 of yacc.c */ 7257 #line 1642 "parser.yy" 7272 7258 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); } 7273 7259 break; 7274 7260 7275 case 4 38:7276 7277 /* Line 1806 of yacc.c */ 7278 #line 16 40"parser.yy"7261 case 445: 7262 7263 /* Line 1806 of yacc.c */ 7264 #line 1667 "parser.yy" 7279 7265 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7280 7266 break; 7281 7267 7282 case 44 2:7283 7284 /* Line 1806 of yacc.c */ 7285 #line 16 48"parser.yy"7268 case 449: 7269 7270 /* Line 1806 of yacc.c */ 7271 #line 1675 "parser.yy" 7286 7272 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7287 7273 break; 7288 7274 7289 case 4 43:7290 7291 /* Line 1806 of yacc.c */ 7292 #line 16 53"parser.yy"7275 case 450: 7276 7277 /* Line 1806 of yacc.c */ 7278 #line 1680 "parser.yy" 7293 7279 { (yyval.in) = 0; } 7294 7280 break; 7295 7281 7296 case 4 44:7297 7298 /* Line 1806 of yacc.c */ 7299 #line 16 55"parser.yy"7282 case 451: 7283 7284 /* Line 1806 of yacc.c */ 7285 #line 1682 "parser.yy" 7300 7286 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7301 7287 break; 7302 7288 7303 case 445: 7304 7305 /* Line 1806 of yacc.c */ 7306 #line 1659 "parser.yy" 7289 case 452: 7290 7291 /* Line 1806 of yacc.c */ 7292 #line 1684 "parser.yy" 7293 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7294 break; 7295 7296 case 453: 7297 7298 /* Line 1806 of yacc.c */ 7299 #line 1688 "parser.yy" 7307 7300 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); } 7308 7301 break; 7309 7302 7310 case 4 46:7311 7312 /* Line 1806 of yacc.c */ 7313 #line 16 60"parser.yy"7303 case 454: 7304 7305 /* Line 1806 of yacc.c */ 7306 #line 1689 "parser.yy" 7314 7307 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); } 7315 7308 break; 7316 7309 7317 case 448: 7318 7319 /* Line 1806 of yacc.c */ 7320 #line 1665 "parser.yy" 7310 case 455: 7311 7312 /* Line 1806 of yacc.c */ 7313 #line 1694 "parser.yy" 7314 { (yyval.in) = 0; } 7315 break; 7316 7317 case 457: 7318 7319 /* Line 1806 of yacc.c */ 7320 #line 1696 "parser.yy" 7321 7321 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); } 7322 7322 break; 7323 7323 7324 case 4 49:7325 7326 /* Line 1806 of yacc.c */ 7327 #line 16 66"parser.yy"7324 case 458: 7325 7326 /* Line 1806 of yacc.c */ 7327 #line 1697 "parser.yy" 7328 7328 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); } 7329 7329 break; 7330 7330 7331 case 45 0:7332 7333 /* Line 1806 of yacc.c */ 7334 #line 16 68"parser.yy"7331 case 459: 7332 7333 /* Line 1806 of yacc.c */ 7334 #line 1699 "parser.yy" 7335 7335 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); } 7336 7336 break; 7337 7337 7338 case 4 52:7339 7340 /* Line 1806 of yacc.c */ 7341 #line 1 684"parser.yy"7338 case 461: 7339 7340 /* Line 1806 of yacc.c */ 7341 #line 1715 "parser.yy" 7342 7342 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); } 7343 7343 break; 7344 7344 7345 case 4 54:7346 7347 /* Line 1806 of yacc.c */ 7348 #line 1 690"parser.yy"7345 case 463: 7346 7347 /* Line 1806 of yacc.c */ 7348 #line 1721 "parser.yy" 7349 7349 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); } 7350 7350 break; 7351 7351 7352 case 4 55:7353 7354 /* Line 1806 of yacc.c */ 7355 #line 1 697"parser.yy"7352 case 464: 7353 7354 /* Line 1806 of yacc.c */ 7355 #line 1729 "parser.yy" 7356 7356 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); } 7357 7357 break; 7358 7358 7359 case 4 56:7360 7361 /* Line 1806 of yacc.c */ 7362 #line 1 699"parser.yy"7359 case 465: 7360 7361 /* Line 1806 of yacc.c */ 7362 #line 1731 "parser.yy" 7363 7363 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); } 7364 7364 break; 7365 7365 7366 case 4 57:7367 7368 /* Line 1806 of yacc.c */ 7369 #line 17 02"parser.yy"7366 case 466: 7367 7368 /* Line 1806 of yacc.c */ 7369 #line 1734 "parser.yy" 7370 7370 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); } 7371 7371 break; 7372 7372 7373 case 4 58:7374 7375 /* Line 1806 of yacc.c */ 7376 #line 17 04"parser.yy"7373 case 467: 7374 7375 /* Line 1806 of yacc.c */ 7376 #line 1736 "parser.yy" 7377 7377 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); } 7378 7378 break; 7379 7379 7380 case 4 59:7381 7382 /* Line 1806 of yacc.c */ 7383 #line 17 06"parser.yy"7380 case 468: 7381 7382 /* Line 1806 of yacc.c */ 7383 #line 1738 "parser.yy" 7384 7384 { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); } 7385 7385 break; 7386 7386 7387 case 46 0:7388 7389 /* Line 1806 of yacc.c */ 7390 #line 17 08"parser.yy"7387 case 469: 7388 7389 /* Line 1806 of yacc.c */ 7390 #line 1740 "parser.yy" 7391 7391 { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); } 7392 7392 break; 7393 7393 7394 case 4 62:7395 7396 /* Line 1806 of yacc.c */ 7397 #line 17 32"parser.yy"7394 case 471: 7395 7396 /* Line 1806 of yacc.c */ 7397 #line 1764 "parser.yy" 7398 7398 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7399 7399 break; 7400 7400 7401 case 4 63:7402 7403 /* Line 1806 of yacc.c */ 7404 #line 17 34"parser.yy"7401 case 472: 7402 7403 /* Line 1806 of yacc.c */ 7404 #line 1766 "parser.yy" 7405 7405 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7406 7406 break; 7407 7407 7408 case 4 64:7409 7410 /* Line 1806 of yacc.c */ 7411 #line 17 36"parser.yy"7408 case 473: 7409 7410 /* Line 1806 of yacc.c */ 7411 #line 1768 "parser.yy" 7412 7412 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 7413 7413 break; 7414 7414 7415 case 4 66:7416 7417 /* Line 1806 of yacc.c */ 7418 #line 17 42"parser.yy"7415 case 475: 7416 7417 /* Line 1806 of yacc.c */ 7418 #line 1774 "parser.yy" 7419 7419 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7420 7420 break; 7421 7421 7422 case 4 67:7423 7424 /* Line 1806 of yacc.c */ 7425 #line 17 44"parser.yy"7422 case 476: 7423 7424 /* Line 1806 of yacc.c */ 7425 #line 1776 "parser.yy" 7426 7426 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7427 7427 break; 7428 7428 7429 case 4 68:7430 7431 /* Line 1806 of yacc.c */ 7432 #line 17 49"parser.yy"7429 case 477: 7430 7431 /* Line 1806 of yacc.c */ 7432 #line 1781 "parser.yy" 7433 7433 { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 7434 7434 break; 7435 7435 7436 case 47 0:7437 7438 /* Line 1806 of yacc.c */ 7439 #line 17 55"parser.yy"7436 case 479: 7437 7438 /* Line 1806 of yacc.c */ 7439 #line 1787 "parser.yy" 7440 7440 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); } 7441 7441 break; 7442 7442 7443 case 4 71:7444 7445 /* Line 1806 of yacc.c */ 7446 #line 17 60"parser.yy"7443 case 480: 7444 7445 /* Line 1806 of yacc.c */ 7446 #line 1792 "parser.yy" 7447 7447 { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); } 7448 7448 break; 7449 7449 7450 case 4 72:7451 7452 /* Line 1806 of yacc.c */ 7453 #line 17 62"parser.yy"7450 case 481: 7451 7452 /* Line 1806 of yacc.c */ 7453 #line 1794 "parser.yy" 7454 7454 { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); } 7455 7455 break; 7456 7456 7457 case 4 74:7458 7459 /* Line 1806 of yacc.c */ 7460 #line 1 768"parser.yy"7457 case 483: 7458 7459 /* Line 1806 of yacc.c */ 7460 #line 1800 "parser.yy" 7461 7461 { (yyval.tclass) = DeclarationNode::Type; } 7462 7462 break; 7463 7463 7464 case 4 75:7465 7466 /* Line 1806 of yacc.c */ 7467 #line 1 770"parser.yy"7464 case 484: 7465 7466 /* Line 1806 of yacc.c */ 7467 #line 1802 "parser.yy" 7468 7468 { (yyval.tclass) = DeclarationNode::Ftype; } 7469 7469 break; 7470 7470 7471 case 4 76:7472 7473 /* Line 1806 of yacc.c */ 7474 #line 1 772"parser.yy"7471 case 485: 7472 7473 /* Line 1806 of yacc.c */ 7474 #line 1804 "parser.yy" 7475 7475 { (yyval.tclass) = DeclarationNode::Dtype; } 7476 7476 break; 7477 7477 7478 case 4 77:7479 7480 /* Line 1806 of yacc.c */ 7481 #line 1 777"parser.yy"7478 case 486: 7479 7480 /* Line 1806 of yacc.c */ 7481 #line 1809 "parser.yy" 7482 7482 { (yyval.decl) = 0; } 7483 7483 break; 7484 7484 7485 case 4 78:7486 7487 /* Line 1806 of yacc.c */ 7488 #line 1 779"parser.yy"7485 case 487: 7486 7487 /* Line 1806 of yacc.c */ 7488 #line 1811 "parser.yy" 7489 7489 { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 7490 7490 break; 7491 7491 7492 case 4 79:7493 7494 /* Line 1806 of yacc.c */ 7495 #line 1 784"parser.yy"7492 case 488: 7493 7494 /* Line 1806 of yacc.c */ 7495 #line 1816 "parser.yy" 7496 7496 { 7497 7497 typedefTable.openContext( *(yyvsp[(2) - (5)].tok) ); … … 7500 7500 break; 7501 7501 7502 case 48 0:7503 7504 /* Line 1806 of yacc.c */ 7505 #line 1 789"parser.yy"7502 case 489: 7503 7504 /* Line 1806 of yacc.c */ 7505 #line 1821 "parser.yy" 7506 7506 { (yyval.decl) = (yyvsp[(4) - (5)].decl); } 7507 7507 break; 7508 7508 7509 case 4 81:7510 7511 /* Line 1806 of yacc.c */ 7512 #line 1 791"parser.yy"7509 case 490: 7510 7511 /* Line 1806 of yacc.c */ 7512 #line 1823 "parser.yy" 7513 7513 { (yyval.decl) = 0; } 7514 7514 break; 7515 7515 7516 case 4 82:7517 7518 /* Line 1806 of yacc.c */ 7519 #line 1 796"parser.yy"7516 case 491: 7517 7518 /* Line 1806 of yacc.c */ 7519 #line 1828 "parser.yy" 7520 7520 { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); } 7521 7521 break; 7522 7522 7523 case 4 84:7524 7525 /* Line 1806 of yacc.c */ 7526 #line 1 799"parser.yy"7523 case 493: 7524 7525 /* Line 1806 of yacc.c */ 7526 #line 1831 "parser.yy" 7527 7527 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); } 7528 7528 break; 7529 7529 7530 case 4 85:7531 7532 /* Line 1806 of yacc.c */ 7533 #line 18 01"parser.yy"7530 case 494: 7531 7532 /* Line 1806 of yacc.c */ 7533 #line 1833 "parser.yy" 7534 7534 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 7535 7535 break; 7536 7536 7537 case 4 86:7538 7539 /* Line 1806 of yacc.c */ 7540 #line 18 06"parser.yy"7537 case 495: 7538 7539 /* Line 1806 of yacc.c */ 7540 #line 1838 "parser.yy" 7541 7541 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7542 7542 break; 7543 7543 7544 case 4 87:7545 7546 /* Line 1806 of yacc.c */ 7547 #line 18 08"parser.yy"7544 case 496: 7545 7546 /* Line 1806 of yacc.c */ 7547 #line 1840 "parser.yy" 7548 7548 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); } 7549 7549 break; 7550 7550 7551 case 4 88:7552 7553 /* Line 1806 of yacc.c */ 7554 #line 18 10"parser.yy"7551 case 497: 7552 7553 /* Line 1806 of yacc.c */ 7554 #line 1842 "parser.yy" 7555 7555 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); } 7556 7556 break; 7557 7557 7558 case 4 89:7559 7560 /* Line 1806 of yacc.c */ 7561 #line 18 15"parser.yy"7558 case 498: 7559 7560 /* Line 1806 of yacc.c */ 7561 #line 1847 "parser.yy" 7562 7562 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); } 7563 7563 break; 7564 7564 7565 case 49 0:7566 7567 /* Line 1806 of yacc.c */ 7568 #line 18 17"parser.yy"7565 case 499: 7566 7567 /* Line 1806 of yacc.c */ 7568 #line 1849 "parser.yy" 7569 7569 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7570 7570 break; 7571 7571 7572 case 491:7573 7574 /* Line 1806 of yacc.c */ 7575 #line 18 22"parser.yy"7572 case 500: 7573 7574 /* Line 1806 of yacc.c */ 7575 #line 1854 "parser.yy" 7576 7576 { 7577 7577 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD ); … … 7580 7580 break; 7581 7581 7582 case 492:7583 7584 /* Line 1806 of yacc.c */ 7585 #line 18 27"parser.yy"7582 case 501: 7583 7584 /* Line 1806 of yacc.c */ 7585 #line 1859 "parser.yy" 7586 7586 { 7587 7587 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG ); … … 7590 7590 break; 7591 7591 7592 case 493:7593 7594 /* Line 1806 of yacc.c */ 7595 #line 18 35"parser.yy"7592 case 502: 7593 7594 /* Line 1806 of yacc.c */ 7595 #line 1867 "parser.yy" 7596 7596 { 7597 7597 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID ); … … 7600 7600 break; 7601 7601 7602 case 494:7603 7604 /* Line 1806 of yacc.c */ 7605 #line 18 40"parser.yy"7602 case 503: 7603 7604 /* Line 1806 of yacc.c */ 7605 #line 1872 "parser.yy" 7606 7606 { 7607 7607 typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) ); … … 7610 7610 break; 7611 7611 7612 case 495:7613 7614 /* Line 1806 of yacc.c */ 7615 #line 18 45"parser.yy"7612 case 504: 7613 7614 /* Line 1806 of yacc.c */ 7615 #line 1877 "parser.yy" 7616 7616 { 7617 7617 typedefTable.leaveContext(); … … 7621 7621 break; 7622 7622 7623 case 497:7624 7625 /* Line 1806 of yacc.c */ 7626 #line 18 55"parser.yy"7623 case 506: 7624 7625 /* Line 1806 of yacc.c */ 7626 #line 1887 "parser.yy" 7627 7627 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 7628 7628 break; 7629 7629 7630 case 50 0:7631 7632 /* Line 1806 of yacc.c */ 7633 #line 18 65"parser.yy"7630 case 509: 7631 7632 /* Line 1806 of yacc.c */ 7633 #line 1897 "parser.yy" 7634 7634 { 7635 7635 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7638 7638 break; 7639 7639 7640 case 5 01:7641 7642 /* Line 1806 of yacc.c */ 7643 #line 1 870"parser.yy"7640 case 510: 7641 7642 /* Line 1806 of yacc.c */ 7643 #line 1902 "parser.yy" 7644 7644 { 7645 7645 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7648 7648 break; 7649 7649 7650 case 5 02:7651 7652 /* Line 1806 of yacc.c */ 7653 #line 1 875"parser.yy"7650 case 511: 7651 7652 /* Line 1806 of yacc.c */ 7653 #line 1907 "parser.yy" 7654 7654 { 7655 7655 typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 7658 7658 break; 7659 7659 7660 case 5 03:7661 7662 /* Line 1806 of yacc.c */ 7663 #line 1 883"parser.yy"7660 case 512: 7661 7662 /* Line 1806 of yacc.c */ 7663 #line 1915 "parser.yy" 7664 7664 { 7665 7665 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7668 7668 break; 7669 7669 7670 case 5 04:7671 7672 /* Line 1806 of yacc.c */ 7673 #line 1 888"parser.yy"7670 case 513: 7671 7672 /* Line 1806 of yacc.c */ 7673 #line 1920 "parser.yy" 7674 7674 { 7675 7675 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7678 7678 break; 7679 7679 7680 case 5 05:7681 7682 /* Line 1806 of yacc.c */ 7683 #line 1 898"parser.yy"7680 case 514: 7681 7682 /* Line 1806 of yacc.c */ 7683 #line 1930 "parser.yy" 7684 7684 {} 7685 7685 break; 7686 7686 7687 case 5 06:7688 7689 /* Line 1806 of yacc.c */ 7690 #line 19 00"parser.yy"7687 case 515: 7688 7689 /* Line 1806 of yacc.c */ 7690 #line 1932 "parser.yy" 7691 7691 { 7692 7692 if ( theTree ) { … … 7698 7698 break; 7699 7699 7700 case 5 08:7701 7702 /* Line 1806 of yacc.c */ 7703 #line 19 12"parser.yy"7700 case 517: 7701 7702 /* Line 1806 of yacc.c */ 7703 #line 1944 "parser.yy" 7704 7704 { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7705 7705 break; 7706 7706 7707 case 5 09:7708 7709 /* Line 1806 of yacc.c */ 7710 #line 19 17"parser.yy"7707 case 518: 7708 7709 /* Line 1806 of yacc.c */ 7710 #line 1949 "parser.yy" 7711 7711 { (yyval.decl) = 0; } 7712 7712 break; 7713 7713 7714 case 5 13:7715 7716 /* Line 1806 of yacc.c */ 7717 #line 19 25"parser.yy"7714 case 522: 7715 7716 /* Line 1806 of yacc.c */ 7717 #line 1957 "parser.yy" 7718 7718 {} 7719 7719 break; 7720 7720 7721 case 5 14:7722 7723 /* Line 1806 of yacc.c */ 7724 #line 19 27"parser.yy"7721 case 523: 7722 7723 /* Line 1806 of yacc.c */ 7724 #line 1959 "parser.yy" 7725 7725 { 7726 7726 linkageStack.push( linkage ); … … 7729 7729 break; 7730 7730 7731 case 5 15:7732 7733 /* Line 1806 of yacc.c */ 7734 #line 19 32"parser.yy"7731 case 524: 7732 7733 /* Line 1806 of yacc.c */ 7734 #line 1964 "parser.yy" 7735 7735 { 7736 7736 linkage = linkageStack.top(); … … 7740 7740 break; 7741 7741 7742 case 5 16:7743 7744 /* Line 1806 of yacc.c */ 7745 #line 19 38"parser.yy"7742 case 525: 7743 7744 /* Line 1806 of yacc.c */ 7745 #line 1970 "parser.yy" 7746 7746 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7747 7747 break; 7748 7748 7749 case 5 18:7750 7751 /* Line 1806 of yacc.c */ 7752 #line 19 48"parser.yy"7749 case 527: 7750 7751 /* Line 1806 of yacc.c */ 7752 #line 1980 "parser.yy" 7753 7753 { 7754 7754 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7758 7758 break; 7759 7759 7760 case 5 19:7761 7762 /* Line 1806 of yacc.c */ 7763 #line 19 54"parser.yy"7760 case 528: 7761 7762 /* Line 1806 of yacc.c */ 7763 #line 1986 "parser.yy" 7764 7764 { 7765 7765 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7769 7769 break; 7770 7770 7771 case 52 0:7772 7773 /* Line 1806 of yacc.c */ 7774 #line 19 63"parser.yy"7771 case 529: 7772 7773 /* Line 1806 of yacc.c */ 7774 #line 1995 "parser.yy" 7775 7775 { 7776 7776 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7780 7780 break; 7781 7781 7782 case 5 21:7783 7784 /* Line 1806 of yacc.c */ 7785 #line 1969"parser.yy"7782 case 530: 7783 7784 /* Line 1806 of yacc.c */ 7785 #line 2001 "parser.yy" 7786 7786 { 7787 7787 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7791 7791 break; 7792 7792 7793 case 5 22:7794 7795 /* Line 1806 of yacc.c */ 7796 #line 1975"parser.yy"7793 case 531: 7794 7795 /* Line 1806 of yacc.c */ 7796 #line 2007 "parser.yy" 7797 7797 { 7798 7798 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7802 7802 break; 7803 7803 7804 case 5 23:7805 7806 /* Line 1806 of yacc.c */ 7807 #line 1981"parser.yy"7804 case 532: 7805 7806 /* Line 1806 of yacc.c */ 7807 #line 2013 "parser.yy" 7808 7808 { 7809 7809 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7813 7813 break; 7814 7814 7815 case 5 24:7816 7817 /* Line 1806 of yacc.c */ 7818 #line 1987"parser.yy"7815 case 533: 7816 7817 /* Line 1806 of yacc.c */ 7818 #line 2019 "parser.yy" 7819 7819 { 7820 7820 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7824 7824 break; 7825 7825 7826 case 5 25:7827 7828 /* Line 1806 of yacc.c */ 7829 #line 1995"parser.yy"7826 case 534: 7827 7828 /* Line 1806 of yacc.c */ 7829 #line 2027 "parser.yy" 7830 7830 { 7831 7831 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7835 7835 break; 7836 7836 7837 case 5 26:7838 7839 /* Line 1806 of yacc.c */ 7840 #line 20 01"parser.yy"7837 case 535: 7838 7839 /* Line 1806 of yacc.c */ 7840 #line 2033 "parser.yy" 7841 7841 { 7842 7842 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7846 7846 break; 7847 7847 7848 case 5 27:7849 7850 /* Line 1806 of yacc.c */ 7851 #line 20 09"parser.yy"7848 case 536: 7849 7850 /* Line 1806 of yacc.c */ 7851 #line 2041 "parser.yy" 7852 7852 { 7853 7853 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7857 7857 break; 7858 7858 7859 case 5 28:7860 7861 /* Line 1806 of yacc.c */ 7862 #line 20 15"parser.yy"7859 case 537: 7860 7861 /* Line 1806 of yacc.c */ 7862 #line 2047 "parser.yy" 7863 7863 { 7864 7864 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7868 7868 break; 7869 7869 7870 case 5 32:7871 7872 /* Line 1806 of yacc.c */ 7873 #line 20 30"parser.yy"7870 case 541: 7871 7872 /* Line 1806 of yacc.c */ 7873 #line 2062 "parser.yy" 7874 7874 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 7875 7875 break; 7876 7876 7877 case 5 35:7878 7879 /* Line 1806 of yacc.c */ 7880 #line 20 40"parser.yy"7877 case 544: 7878 7879 /* Line 1806 of yacc.c */ 7880 #line 2072 "parser.yy" 7881 7881 { (yyval.decl) = 0; } 7882 7882 break; 7883 7883 7884 case 5 38:7885 7886 /* Line 1806 of yacc.c */ 7887 #line 20 47"parser.yy"7884 case 547: 7885 7886 /* Line 1806 of yacc.c */ 7887 #line 2079 "parser.yy" 7888 7888 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7889 7889 break; 7890 7890 7891 case 5 39:7892 7893 /* Line 1806 of yacc.c */ 7894 #line 20 53"parser.yy"7891 case 548: 7892 7893 /* Line 1806 of yacc.c */ 7894 #line 2085 "parser.yy" 7895 7895 { (yyval.decl) = 0; } 7896 7896 break; 7897 7897 7898 case 5 45:7899 7900 /* Line 1806 of yacc.c */ 7901 #line 2 068"parser.yy"7898 case 554: 7899 7900 /* Line 1806 of yacc.c */ 7901 #line 2100 "parser.yy" 7902 7902 {} 7903 7903 break; 7904 7904 7905 case 5 46:7906 7907 /* Line 1806 of yacc.c */ 7908 #line 2 069"parser.yy"7905 case 555: 7906 7907 /* Line 1806 of yacc.c */ 7908 #line 2101 "parser.yy" 7909 7909 {} 7910 7910 break; 7911 7911 7912 case 5 47:7913 7914 /* Line 1806 of yacc.c */ 7915 #line 2 070"parser.yy"7912 case 556: 7913 7914 /* Line 1806 of yacc.c */ 7915 #line 2102 "parser.yy" 7916 7916 {} 7917 7917 break; 7918 7918 7919 case 5 48:7920 7921 /* Line 1806 of yacc.c */ 7922 #line 2 071"parser.yy"7919 case 557: 7920 7921 /* Line 1806 of yacc.c */ 7922 #line 2103 "parser.yy" 7923 7923 {} 7924 7924 break; 7925 7925 7926 case 5 49:7927 7928 /* Line 1806 of yacc.c */ 7929 #line 21 06"parser.yy"7926 case 558: 7927 7928 /* Line 1806 of yacc.c */ 7929 #line 2138 "parser.yy" 7930 7930 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7931 7931 break; 7932 7932 7933 case 5 51:7934 7935 /* Line 1806 of yacc.c */ 7936 #line 21 09"parser.yy"7933 case 560: 7934 7935 /* Line 1806 of yacc.c */ 7936 #line 2141 "parser.yy" 7937 7937 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7938 7938 break; 7939 7939 7940 case 5 52:7941 7942 /* Line 1806 of yacc.c */ 7943 #line 21 11"parser.yy"7940 case 561: 7941 7942 /* Line 1806 of yacc.c */ 7943 #line 2143 "parser.yy" 7944 7944 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7945 7945 break; 7946 7946 7947 case 5 53:7948 7949 /* Line 1806 of yacc.c */ 7950 #line 21 16"parser.yy"7947 case 562: 7948 7949 /* Line 1806 of yacc.c */ 7950 #line 2148 "parser.yy" 7951 7951 { 7952 7952 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 7955 7955 break; 7956 7956 7957 case 5 54:7958 7959 /* Line 1806 of yacc.c */ 7960 #line 21 21"parser.yy"7957 case 563: 7958 7959 /* Line 1806 of yacc.c */ 7960 #line 2153 "parser.yy" 7961 7961 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7962 7962 break; 7963 7963 7964 case 5 55:7965 7966 /* Line 1806 of yacc.c */ 7967 #line 21 26"parser.yy"7964 case 564: 7965 7966 /* Line 1806 of yacc.c */ 7967 #line 2158 "parser.yy" 7968 7968 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 7969 7969 break; 7970 7970 7971 case 5 56:7972 7973 /* Line 1806 of yacc.c */ 7974 #line 21 28"parser.yy"7971 case 565: 7972 7973 /* Line 1806 of yacc.c */ 7974 #line 2160 "parser.yy" 7975 7975 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 7976 7976 break; 7977 7977 7978 case 5 57:7979 7980 /* Line 1806 of yacc.c */ 7981 #line 21 30"parser.yy"7978 case 566: 7979 7980 /* Line 1806 of yacc.c */ 7981 #line 2162 "parser.yy" 7982 7982 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7983 7983 break; 7984 7984 7985 case 5 58:7986 7987 /* Line 1806 of yacc.c */ 7988 #line 21 35"parser.yy"7985 case 567: 7986 7987 /* Line 1806 of yacc.c */ 7988 #line 2167 "parser.yy" 7989 7989 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 7990 7990 break; 7991 7991 7992 case 5 59:7993 7994 /* Line 1806 of yacc.c */ 7995 #line 21 37"parser.yy"7992 case 568: 7993 7994 /* Line 1806 of yacc.c */ 7995 #line 2169 "parser.yy" 7996 7996 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 7997 7997 break; 7998 7998 7999 case 56 0:8000 8001 /* Line 1806 of yacc.c */ 8002 #line 21 39"parser.yy"7999 case 569: 8000 8001 /* Line 1806 of yacc.c */ 8002 #line 2171 "parser.yy" 8003 8003 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8004 8004 break; 8005 8005 8006 case 5 61:8007 8008 /* Line 1806 of yacc.c */ 8009 #line 21 41"parser.yy"8006 case 570: 8007 8008 /* Line 1806 of yacc.c */ 8009 #line 2173 "parser.yy" 8010 8010 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8011 8011 break; 8012 8012 8013 case 5 62:8014 8015 /* Line 1806 of yacc.c */ 8016 #line 21 46"parser.yy"8013 case 571: 8014 8015 /* Line 1806 of yacc.c */ 8016 #line 2178 "parser.yy" 8017 8017 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8018 8018 break; 8019 8019 8020 case 5 63:8021 8022 /* Line 1806 of yacc.c */ 8023 #line 21 48"parser.yy"8020 case 572: 8021 8022 /* Line 1806 of yacc.c */ 8023 #line 2180 "parser.yy" 8024 8024 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8025 8025 break; 8026 8026 8027 case 5 64:8028 8029 /* Line 1806 of yacc.c */ 8030 #line 21 58"parser.yy"8027 case 573: 8028 8029 /* Line 1806 of yacc.c */ 8030 #line 2190 "parser.yy" 8031 8031 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8032 8032 break; 8033 8033 8034 case 5 66:8035 8036 /* Line 1806 of yacc.c */ 8037 #line 21 61"parser.yy"8034 case 575: 8035 8036 /* Line 1806 of yacc.c */ 8037 #line 2193 "parser.yy" 8038 8038 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8039 8039 break; 8040 8040 8041 case 5 67:8042 8043 /* Line 1806 of yacc.c */ 8044 #line 21 66"parser.yy"8041 case 576: 8042 8043 /* Line 1806 of yacc.c */ 8044 #line 2198 "parser.yy" 8045 8045 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8046 8046 break; 8047 8047 8048 case 5 68:8049 8050 /* Line 1806 of yacc.c */ 8051 #line 2 168"parser.yy"8048 case 577: 8049 8050 /* Line 1806 of yacc.c */ 8051 #line 2200 "parser.yy" 8052 8052 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8053 8053 break; 8054 8054 8055 case 5 69:8056 8057 /* Line 1806 of yacc.c */ 8058 #line 2 170"parser.yy"8055 case 578: 8056 8057 /* Line 1806 of yacc.c */ 8058 #line 2202 "parser.yy" 8059 8059 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8060 8060 break; 8061 8061 8062 case 57 0:8063 8064 /* Line 1806 of yacc.c */ 8065 #line 2 175"parser.yy"8062 case 579: 8063 8064 /* Line 1806 of yacc.c */ 8065 #line 2207 "parser.yy" 8066 8066 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8067 8067 break; 8068 8068 8069 case 5 71:8070 8071 /* Line 1806 of yacc.c */ 8072 #line 2 177"parser.yy"8069 case 580: 8070 8071 /* Line 1806 of yacc.c */ 8072 #line 2209 "parser.yy" 8073 8073 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8074 8074 break; 8075 8075 8076 case 5 72:8077 8078 /* Line 1806 of yacc.c */ 8079 #line 2 179"parser.yy"8076 case 581: 8077 8078 /* Line 1806 of yacc.c */ 8079 #line 2211 "parser.yy" 8080 8080 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8081 8081 break; 8082 8082 8083 case 5 73:8084 8085 /* Line 1806 of yacc.c */ 8086 #line 2 184"parser.yy"8083 case 582: 8084 8085 /* Line 1806 of yacc.c */ 8086 #line 2216 "parser.yy" 8087 8087 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8088 8088 break; 8089 8089 8090 case 5 74:8091 8092 /* Line 1806 of yacc.c */ 8093 #line 2 186"parser.yy"8090 case 583: 8091 8092 /* Line 1806 of yacc.c */ 8093 #line 2218 "parser.yy" 8094 8094 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8095 8095 break; 8096 8096 8097 case 5 75:8098 8099 /* Line 1806 of yacc.c */ 8100 #line 2 188"parser.yy"8097 case 584: 8098 8099 /* Line 1806 of yacc.c */ 8100 #line 2220 "parser.yy" 8101 8101 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8102 8102 break; 8103 8103 8104 case 5 79:8105 8106 /* Line 1806 of yacc.c */ 8107 #line 22 03"parser.yy"8104 case 588: 8105 8106 /* Line 1806 of yacc.c */ 8107 #line 2235 "parser.yy" 8108 8108 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8109 8109 break; 8110 8110 8111 case 58 0:8112 8113 /* Line 1806 of yacc.c */ 8114 #line 22 05"parser.yy"8111 case 589: 8112 8113 /* Line 1806 of yacc.c */ 8114 #line 2237 "parser.yy" 8115 8115 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8116 8116 break; 8117 8117 8118 case 5 81:8119 8120 /* Line 1806 of yacc.c */ 8121 #line 22 07"parser.yy"8118 case 590: 8119 8120 /* Line 1806 of yacc.c */ 8121 #line 2239 "parser.yy" 8122 8122 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8123 8123 break; 8124 8124 8125 case 5 82:8126 8127 /* Line 1806 of yacc.c */ 8128 #line 22 12"parser.yy"8125 case 591: 8126 8127 /* Line 1806 of yacc.c */ 8128 #line 2244 "parser.yy" 8129 8129 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8130 8130 break; 8131 8131 8132 case 5 83:8133 8134 /* Line 1806 of yacc.c */ 8135 #line 22 14"parser.yy"8132 case 592: 8133 8134 /* Line 1806 of yacc.c */ 8135 #line 2246 "parser.yy" 8136 8136 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8137 8137 break; 8138 8138 8139 case 5 84:8140 8141 /* Line 1806 of yacc.c */ 8142 #line 22 16"parser.yy"8139 case 593: 8140 8141 /* Line 1806 of yacc.c */ 8142 #line 2248 "parser.yy" 8143 8143 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8144 8144 break; 8145 8145 8146 case 5 85:8147 8148 /* Line 1806 of yacc.c */ 8149 #line 22 21"parser.yy"8146 case 594: 8147 8148 /* Line 1806 of yacc.c */ 8149 #line 2253 "parser.yy" 8150 8150 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8151 8151 break; 8152 8152 8153 case 5 86:8154 8155 /* Line 1806 of yacc.c */ 8156 #line 22 23"parser.yy"8153 case 595: 8154 8155 /* Line 1806 of yacc.c */ 8156 #line 2255 "parser.yy" 8157 8157 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8158 8158 break; 8159 8159 8160 case 5 87:8161 8162 /* Line 1806 of yacc.c */ 8163 #line 22 25"parser.yy"8160 case 596: 8161 8162 /* Line 1806 of yacc.c */ 8163 #line 2257 "parser.yy" 8164 8164 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8165 8165 break; 8166 8166 8167 case 5 88:8168 8169 /* Line 1806 of yacc.c */ 8170 #line 22 40"parser.yy"8167 case 597: 8168 8169 /* Line 1806 of yacc.c */ 8170 #line 2272 "parser.yy" 8171 8171 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8172 8172 break; 8173 8173 8174 case 59 0:8175 8176 /* Line 1806 of yacc.c */ 8177 #line 22 43"parser.yy"8174 case 599: 8175 8176 /* Line 1806 of yacc.c */ 8177 #line 2275 "parser.yy" 8178 8178 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8179 8179 break; 8180 8180 8181 case 591:8182 8183 /* Line 1806 of yacc.c */ 8184 #line 22 45"parser.yy"8181 case 600: 8182 8183 /* Line 1806 of yacc.c */ 8184 #line 2277 "parser.yy" 8185 8185 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8186 8186 break; 8187 8187 8188 case 593:8189 8190 /* Line 1806 of yacc.c */ 8191 #line 22 51"parser.yy"8188 case 602: 8189 8190 /* Line 1806 of yacc.c */ 8191 #line 2283 "parser.yy" 8192 8192 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8193 8193 break; 8194 8194 8195 case 594:8196 8197 /* Line 1806 of yacc.c */ 8198 #line 22 56"parser.yy"8195 case 603: 8196 8197 /* Line 1806 of yacc.c */ 8198 #line 2288 "parser.yy" 8199 8199 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8200 8200 break; 8201 8201 8202 case 595:8203 8204 /* Line 1806 of yacc.c */ 8205 #line 22 58"parser.yy"8202 case 604: 8203 8204 /* Line 1806 of yacc.c */ 8205 #line 2290 "parser.yy" 8206 8206 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8207 8207 break; 8208 8208 8209 case 596:8210 8211 /* Line 1806 of yacc.c */ 8212 #line 22 60"parser.yy"8209 case 605: 8210 8211 /* Line 1806 of yacc.c */ 8212 #line 2292 "parser.yy" 8213 8213 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8214 8214 break; 8215 8215 8216 case 597:8217 8218 /* Line 1806 of yacc.c */ 8219 #line 22 65"parser.yy"8216 case 606: 8217 8218 /* Line 1806 of yacc.c */ 8219 #line 2297 "parser.yy" 8220 8220 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8221 8221 break; 8222 8222 8223 case 598:8224 8225 /* Line 1806 of yacc.c */ 8226 #line 22 67"parser.yy"8223 case 607: 8224 8225 /* Line 1806 of yacc.c */ 8226 #line 2299 "parser.yy" 8227 8227 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8228 8228 break; 8229 8229 8230 case 599:8231 8232 /* Line 1806 of yacc.c */ 8233 #line 2 269"parser.yy"8230 case 608: 8231 8232 /* Line 1806 of yacc.c */ 8233 #line 2301 "parser.yy" 8234 8234 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8235 8235 break; 8236 8236 8237 case 60 0:8238 8239 /* Line 1806 of yacc.c */ 8240 #line 2 271"parser.yy"8237 case 609: 8238 8239 /* Line 1806 of yacc.c */ 8240 #line 2303 "parser.yy" 8241 8241 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8242 8242 break; 8243 8243 8244 case 6 01:8245 8246 /* Line 1806 of yacc.c */ 8247 #line 2 276"parser.yy"8244 case 610: 8245 8246 /* Line 1806 of yacc.c */ 8247 #line 2308 "parser.yy" 8248 8248 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8249 8249 break; 8250 8250 8251 case 6 02:8252 8253 /* Line 1806 of yacc.c */ 8254 #line 2 278"parser.yy"8251 case 611: 8252 8253 /* Line 1806 of yacc.c */ 8254 #line 2310 "parser.yy" 8255 8255 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8256 8256 break; 8257 8257 8258 case 6 03:8259 8260 /* Line 1806 of yacc.c */ 8261 #line 2 280"parser.yy"8258 case 612: 8259 8260 /* Line 1806 of yacc.c */ 8261 #line 2312 "parser.yy" 8262 8262 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8263 8263 break; 8264 8264 8265 case 6 04:8266 8267 /* Line 1806 of yacc.c */ 8268 #line 2 290"parser.yy"8265 case 613: 8266 8267 /* Line 1806 of yacc.c */ 8268 #line 2322 "parser.yy" 8269 8269 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8270 8270 break; 8271 8271 8272 case 6 06:8273 8274 /* Line 1806 of yacc.c */ 8275 #line 2 293"parser.yy"8272 case 615: 8273 8274 /* Line 1806 of yacc.c */ 8275 #line 2325 "parser.yy" 8276 8276 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8277 8277 break; 8278 8278 8279 case 6 07:8280 8281 /* Line 1806 of yacc.c */ 8282 #line 2 295"parser.yy"8279 case 616: 8280 8281 /* Line 1806 of yacc.c */ 8282 #line 2327 "parser.yy" 8283 8283 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8284 8284 break; 8285 8285 8286 case 6 08:8287 8288 /* Line 1806 of yacc.c */ 8289 #line 23 00"parser.yy"8286 case 617: 8287 8288 /* Line 1806 of yacc.c */ 8289 #line 2332 "parser.yy" 8290 8290 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8291 8291 break; 8292 8292 8293 case 6 09:8294 8295 /* Line 1806 of yacc.c */ 8296 #line 23 02"parser.yy"8293 case 618: 8294 8295 /* Line 1806 of yacc.c */ 8296 #line 2334 "parser.yy" 8297 8297 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8298 8298 break; 8299 8299 8300 case 61 0:8301 8302 /* Line 1806 of yacc.c */ 8303 #line 23 04"parser.yy"8300 case 619: 8301 8302 /* Line 1806 of yacc.c */ 8303 #line 2336 "parser.yy" 8304 8304 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8305 8305 break; 8306 8306 8307 case 6 11:8308 8309 /* Line 1806 of yacc.c */ 8310 #line 23 09"parser.yy"8307 case 620: 8308 8309 /* Line 1806 of yacc.c */ 8310 #line 2341 "parser.yy" 8311 8311 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8312 8312 break; 8313 8313 8314 case 6 12:8315 8316 /* Line 1806 of yacc.c */ 8317 #line 23 11"parser.yy"8314 case 621: 8315 8316 /* Line 1806 of yacc.c */ 8317 #line 2343 "parser.yy" 8318 8318 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8319 8319 break; 8320 8320 8321 case 6 13:8322 8323 /* Line 1806 of yacc.c */ 8324 #line 23 13"parser.yy"8321 case 622: 8322 8323 /* Line 1806 of yacc.c */ 8324 #line 2345 "parser.yy" 8325 8325 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8326 8326 break; 8327 8327 8328 case 6 14:8329 8330 /* Line 1806 of yacc.c */ 8331 #line 23 15"parser.yy"8328 case 623: 8329 8330 /* Line 1806 of yacc.c */ 8331 #line 2347 "parser.yy" 8332 8332 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8333 8333 break; 8334 8334 8335 case 6 15:8336 8337 /* Line 1806 of yacc.c */ 8338 #line 23 20"parser.yy"8335 case 624: 8336 8337 /* Line 1806 of yacc.c */ 8338 #line 2352 "parser.yy" 8339 8339 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8340 8340 break; 8341 8341 8342 case 6 16:8343 8344 /* Line 1806 of yacc.c */ 8345 #line 23 22"parser.yy"8342 case 625: 8343 8344 /* Line 1806 of yacc.c */ 8345 #line 2354 "parser.yy" 8346 8346 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8347 8347 break; 8348 8348 8349 case 6 17:8350 8351 /* Line 1806 of yacc.c */ 8352 #line 23 24"parser.yy"8349 case 626: 8350 8351 /* Line 1806 of yacc.c */ 8352 #line 2356 "parser.yy" 8353 8353 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8354 8354 break; 8355 8355 8356 case 6 18:8357 8358 /* Line 1806 of yacc.c */ 8359 #line 23 55"parser.yy"8356 case 627: 8357 8358 /* Line 1806 of yacc.c */ 8359 #line 2387 "parser.yy" 8360 8360 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8361 8361 break; 8362 8362 8363 case 62 0:8364 8365 /* Line 1806 of yacc.c */ 8366 #line 23 58"parser.yy"8363 case 629: 8364 8365 /* Line 1806 of yacc.c */ 8366 #line 2390 "parser.yy" 8367 8367 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8368 8368 break; 8369 8369 8370 case 6 21:8371 8372 /* Line 1806 of yacc.c */ 8373 #line 23 60"parser.yy"8370 case 630: 8371 8372 /* Line 1806 of yacc.c */ 8373 #line 2392 "parser.yy" 8374 8374 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8375 8375 break; 8376 8376 8377 case 6 22:8378 8379 /* Line 1806 of yacc.c */ 8380 #line 23 65"parser.yy"8377 case 631: 8378 8379 /* Line 1806 of yacc.c */ 8380 #line 2397 "parser.yy" 8381 8381 { 8382 8382 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8385 8385 break; 8386 8386 8387 case 6 23:8388 8389 /* Line 1806 of yacc.c */ 8390 #line 2 370"parser.yy"8387 case 632: 8388 8389 /* Line 1806 of yacc.c */ 8390 #line 2402 "parser.yy" 8391 8391 { 8392 8392 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8395 8395 break; 8396 8396 8397 case 6 24:8398 8399 /* Line 1806 of yacc.c */ 8400 #line 2 378"parser.yy"8397 case 633: 8398 8399 /* Line 1806 of yacc.c */ 8400 #line 2410 "parser.yy" 8401 8401 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8402 8402 break; 8403 8403 8404 case 6 25:8405 8406 /* Line 1806 of yacc.c */ 8407 #line 2 380"parser.yy"8404 case 634: 8405 8406 /* Line 1806 of yacc.c */ 8407 #line 2412 "parser.yy" 8408 8408 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8409 8409 break; 8410 8410 8411 case 6 26:8412 8413 /* Line 1806 of yacc.c */ 8414 #line 2 382"parser.yy"8411 case 635: 8412 8413 /* Line 1806 of yacc.c */ 8414 #line 2414 "parser.yy" 8415 8415 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8416 8416 break; 8417 8417 8418 case 6 27:8419 8420 /* Line 1806 of yacc.c */ 8421 #line 2 387"parser.yy"8418 case 636: 8419 8420 /* Line 1806 of yacc.c */ 8421 #line 2419 "parser.yy" 8422 8422 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8423 8423 break; 8424 8424 8425 case 6 28:8426 8427 /* Line 1806 of yacc.c */ 8428 #line 2 389"parser.yy"8425 case 637: 8426 8427 /* Line 1806 of yacc.c */ 8428 #line 2421 "parser.yy" 8429 8429 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8430 8430 break; 8431 8431 8432 case 6 29:8433 8434 /* Line 1806 of yacc.c */ 8435 #line 2 394"parser.yy"8432 case 638: 8433 8434 /* Line 1806 of yacc.c */ 8435 #line 2426 "parser.yy" 8436 8436 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8437 8437 break; 8438 8438 8439 case 63 0:8440 8441 /* Line 1806 of yacc.c */ 8442 #line 2 396"parser.yy"8439 case 639: 8440 8441 /* Line 1806 of yacc.c */ 8442 #line 2428 "parser.yy" 8443 8443 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8444 8444 break; 8445 8445 8446 case 6 32:8447 8448 /* Line 1806 of yacc.c */ 8449 #line 24 11"parser.yy"8446 case 641: 8447 8448 /* Line 1806 of yacc.c */ 8449 #line 2443 "parser.yy" 8450 8450 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8451 8451 break; 8452 8452 8453 case 6 33:8454 8455 /* Line 1806 of yacc.c */ 8456 #line 24 13"parser.yy"8453 case 642: 8454 8455 /* Line 1806 of yacc.c */ 8456 #line 2445 "parser.yy" 8457 8457 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8458 8458 break; 8459 8459 8460 case 6 34:8461 8462 /* Line 1806 of yacc.c */ 8463 #line 24 18"parser.yy"8460 case 643: 8461 8462 /* Line 1806 of yacc.c */ 8463 #line 2450 "parser.yy" 8464 8464 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8465 8465 break; 8466 8466 8467 case 6 35:8468 8469 /* Line 1806 of yacc.c */ 8470 #line 24 20"parser.yy"8467 case 644: 8468 8469 /* Line 1806 of yacc.c */ 8470 #line 2452 "parser.yy" 8471 8471 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8472 8472 break; 8473 8473 8474 case 6 36:8475 8476 /* Line 1806 of yacc.c */ 8477 #line 24 22"parser.yy"8474 case 645: 8475 8476 /* Line 1806 of yacc.c */ 8477 #line 2454 "parser.yy" 8478 8478 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8479 8479 break; 8480 8480 8481 case 6 37:8482 8483 /* Line 1806 of yacc.c */ 8484 #line 24 24"parser.yy"8481 case 646: 8482 8483 /* Line 1806 of yacc.c */ 8484 #line 2456 "parser.yy" 8485 8485 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8486 8486 break; 8487 8487 8488 case 6 38:8489 8490 /* Line 1806 of yacc.c */ 8491 #line 24 26"parser.yy"8488 case 647: 8489 8490 /* Line 1806 of yacc.c */ 8491 #line 2458 "parser.yy" 8492 8492 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8493 8493 break; 8494 8494 8495 case 64 0:8496 8497 /* Line 1806 of yacc.c */ 8498 #line 24 32"parser.yy"8495 case 649: 8496 8497 /* Line 1806 of yacc.c */ 8498 #line 2464 "parser.yy" 8499 8499 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8500 8500 break; 8501 8501 8502 case 6 41:8503 8504 /* Line 1806 of yacc.c */ 8505 #line 24 34"parser.yy"8502 case 650: 8503 8504 /* Line 1806 of yacc.c */ 8505 #line 2466 "parser.yy" 8506 8506 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8507 8507 break; 8508 8508 8509 case 6 42:8510 8511 /* Line 1806 of yacc.c */ 8512 #line 24 36"parser.yy"8509 case 651: 8510 8511 /* Line 1806 of yacc.c */ 8512 #line 2468 "parser.yy" 8513 8513 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8514 8514 break; 8515 8515 8516 case 6 43:8517 8518 /* Line 1806 of yacc.c */ 8519 #line 24 41"parser.yy"8516 case 652: 8517 8518 /* Line 1806 of yacc.c */ 8519 #line 2473 "parser.yy" 8520 8520 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8521 8521 break; 8522 8522 8523 case 6 44:8524 8525 /* Line 1806 of yacc.c */ 8526 #line 24 43"parser.yy"8523 case 653: 8524 8525 /* Line 1806 of yacc.c */ 8526 #line 2475 "parser.yy" 8527 8527 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8528 8528 break; 8529 8529 8530 case 6 45:8531 8532 /* Line 1806 of yacc.c */ 8533 #line 24 45"parser.yy"8530 case 654: 8531 8532 /* Line 1806 of yacc.c */ 8533 #line 2477 "parser.yy" 8534 8534 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8535 8535 break; 8536 8536 8537 case 6 46:8538 8539 /* Line 1806 of yacc.c */ 8540 #line 24 51"parser.yy"8537 case 655: 8538 8539 /* Line 1806 of yacc.c */ 8540 #line 2483 "parser.yy" 8541 8541 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8542 8542 break; 8543 8543 8544 case 6 47:8545 8546 /* Line 1806 of yacc.c */ 8547 #line 24 53"parser.yy"8544 case 656: 8545 8546 /* Line 1806 of yacc.c */ 8547 #line 2485 "parser.yy" 8548 8548 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8549 8549 break; 8550 8550 8551 case 6 49:8552 8553 /* Line 1806 of yacc.c */ 8554 #line 24 59"parser.yy"8551 case 658: 8552 8553 /* Line 1806 of yacc.c */ 8554 #line 2491 "parser.yy" 8555 8555 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8556 8556 break; 8557 8557 8558 case 65 0:8559 8560 /* Line 1806 of yacc.c */ 8561 #line 24 61"parser.yy"8558 case 659: 8559 8560 /* Line 1806 of yacc.c */ 8561 #line 2493 "parser.yy" 8562 8562 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8563 8563 break; 8564 8564 8565 case 6 51:8566 8567 /* Line 1806 of yacc.c */ 8568 #line 24 63"parser.yy"8565 case 660: 8566 8567 /* Line 1806 of yacc.c */ 8568 #line 2495 "parser.yy" 8569 8569 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8570 8570 break; 8571 8571 8572 case 6 52:8573 8574 /* Line 1806 of yacc.c */ 8575 #line 24 65"parser.yy"8572 case 661: 8573 8574 /* Line 1806 of yacc.c */ 8575 #line 2497 "parser.yy" 8576 8576 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8577 8577 break; 8578 8578 8579 case 6 54:8580 8581 /* Line 1806 of yacc.c */ 8582 #line 2 480"parser.yy"8579 case 663: 8580 8581 /* Line 1806 of yacc.c */ 8582 #line 2512 "parser.yy" 8583 8583 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8584 8584 break; 8585 8585 8586 case 6 55:8587 8588 /* Line 1806 of yacc.c */ 8589 #line 2 482"parser.yy"8586 case 664: 8587 8588 /* Line 1806 of yacc.c */ 8589 #line 2514 "parser.yy" 8590 8590 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8591 8591 break; 8592 8592 8593 case 6 56:8594 8595 /* Line 1806 of yacc.c */ 8596 #line 2 487"parser.yy"8593 case 665: 8594 8595 /* Line 1806 of yacc.c */ 8596 #line 2519 "parser.yy" 8597 8597 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8598 8598 break; 8599 8599 8600 case 6 57:8601 8602 /* Line 1806 of yacc.c */ 8603 #line 2 489"parser.yy"8600 case 666: 8601 8602 /* Line 1806 of yacc.c */ 8603 #line 2521 "parser.yy" 8604 8604 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8605 8605 break; 8606 8606 8607 case 6 58:8608 8609 /* Line 1806 of yacc.c */ 8610 #line 2 491"parser.yy"8607 case 667: 8608 8609 /* Line 1806 of yacc.c */ 8610 #line 2523 "parser.yy" 8611 8611 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8612 8612 break; 8613 8613 8614 case 6 59:8615 8616 /* Line 1806 of yacc.c */ 8617 #line 2 493"parser.yy"8614 case 668: 8615 8616 /* Line 1806 of yacc.c */ 8617 #line 2525 "parser.yy" 8618 8618 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8619 8619 break; 8620 8620 8621 case 66 0:8622 8623 /* Line 1806 of yacc.c */ 8624 #line 2 495"parser.yy"8621 case 669: 8622 8623 /* Line 1806 of yacc.c */ 8624 #line 2527 "parser.yy" 8625 8625 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8626 8626 break; 8627 8627 8628 case 6 62:8629 8630 /* Line 1806 of yacc.c */ 8631 #line 25 01"parser.yy"8628 case 671: 8629 8630 /* Line 1806 of yacc.c */ 8631 #line 2533 "parser.yy" 8632 8632 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8633 8633 break; 8634 8634 8635 case 6 63:8636 8637 /* Line 1806 of yacc.c */ 8638 #line 25 03"parser.yy"8635 case 672: 8636 8637 /* Line 1806 of yacc.c */ 8638 #line 2535 "parser.yy" 8639 8639 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8640 8640 break; 8641 8641 8642 case 6 64:8643 8644 /* Line 1806 of yacc.c */ 8645 #line 25 05"parser.yy"8642 case 673: 8643 8644 /* Line 1806 of yacc.c */ 8645 #line 2537 "parser.yy" 8646 8646 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8647 8647 break; 8648 8648 8649 case 6 65:8650 8651 /* Line 1806 of yacc.c */ 8652 #line 25 10"parser.yy"8649 case 674: 8650 8651 /* Line 1806 of yacc.c */ 8652 #line 2542 "parser.yy" 8653 8653 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8654 8654 break; 8655 8655 8656 case 6 66:8657 8658 /* Line 1806 of yacc.c */ 8659 #line 25 12"parser.yy"8656 case 675: 8657 8658 /* Line 1806 of yacc.c */ 8659 #line 2544 "parser.yy" 8660 8660 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8661 8661 break; 8662 8662 8663 case 6 67:8664 8665 /* Line 1806 of yacc.c */ 8666 #line 25 14"parser.yy"8663 case 676: 8664 8665 /* Line 1806 of yacc.c */ 8666 #line 2546 "parser.yy" 8667 8667 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8668 8668 break; 8669 8669 8670 case 6 69:8671 8672 /* Line 1806 of yacc.c */ 8673 #line 25 21"parser.yy"8670 case 678: 8671 8672 /* Line 1806 of yacc.c */ 8673 #line 2553 "parser.yy" 8674 8674 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8675 8675 break; 8676 8676 8677 case 6 71:8678 8679 /* Line 1806 of yacc.c */ 8680 #line 25 32"parser.yy"8677 case 680: 8678 8679 /* Line 1806 of yacc.c */ 8680 #line 2564 "parser.yy" 8681 8681 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8682 8682 break; 8683 8683 8684 case 6 72:8685 8686 /* Line 1806 of yacc.c */ 8687 #line 25 35"parser.yy"8684 case 681: 8685 8686 /* Line 1806 of yacc.c */ 8687 #line 2567 "parser.yy" 8688 8688 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8689 8689 break; 8690 8690 8691 case 6 73:8692 8693 /* Line 1806 of yacc.c */ 8694 #line 25 37"parser.yy"8691 case 682: 8692 8693 /* Line 1806 of yacc.c */ 8694 #line 2569 "parser.yy" 8695 8695 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8696 8696 break; 8697 8697 8698 case 6 74:8699 8700 /* Line 1806 of yacc.c */ 8701 #line 25 40"parser.yy"8698 case 683: 8699 8700 /* Line 1806 of yacc.c */ 8701 #line 2572 "parser.yy" 8702 8702 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8703 8703 break; 8704 8704 8705 case 6 75:8706 8707 /* Line 1806 of yacc.c */ 8708 #line 25 42"parser.yy"8705 case 684: 8706 8707 /* Line 1806 of yacc.c */ 8708 #line 2574 "parser.yy" 8709 8709 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8710 8710 break; 8711 8711 8712 case 6 76:8713 8714 /* Line 1806 of yacc.c */ 8715 #line 25 44"parser.yy"8712 case 685: 8713 8714 /* Line 1806 of yacc.c */ 8715 #line 2576 "parser.yy" 8716 8716 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8717 8717 break; 8718 8718 8719 case 6 78:8720 8721 /* Line 1806 of yacc.c */ 8722 #line 25 58"parser.yy"8719 case 687: 8720 8721 /* Line 1806 of yacc.c */ 8722 #line 2590 "parser.yy" 8723 8723 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8724 8724 break; 8725 8725 8726 case 6 79:8727 8728 /* Line 1806 of yacc.c */ 8729 #line 25 60"parser.yy"8726 case 688: 8727 8728 /* Line 1806 of yacc.c */ 8729 #line 2592 "parser.yy" 8730 8730 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8731 8731 break; 8732 8732 8733 case 68 0:8734 8735 /* Line 1806 of yacc.c */ 8736 #line 25 65"parser.yy"8733 case 689: 8734 8735 /* Line 1806 of yacc.c */ 8736 #line 2597 "parser.yy" 8737 8737 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8738 8738 break; 8739 8739 8740 case 6 81:8741 8742 /* Line 1806 of yacc.c */ 8743 #line 25 67"parser.yy"8740 case 690: 8741 8742 /* Line 1806 of yacc.c */ 8743 #line 2599 "parser.yy" 8744 8744 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8745 8745 break; 8746 8746 8747 case 6 82:8748 8749 /* Line 1806 of yacc.c */ 8750 #line 2 569"parser.yy"8747 case 691: 8748 8749 /* Line 1806 of yacc.c */ 8750 #line 2601 "parser.yy" 8751 8751 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8752 8752 break; 8753 8753 8754 case 6 83:8755 8756 /* Line 1806 of yacc.c */ 8757 #line 2 571"parser.yy"8754 case 692: 8755 8756 /* Line 1806 of yacc.c */ 8757 #line 2603 "parser.yy" 8758 8758 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8759 8759 break; 8760 8760 8761 case 6 84:8762 8763 /* Line 1806 of yacc.c */ 8764 #line 2 573"parser.yy"8761 case 693: 8762 8763 /* Line 1806 of yacc.c */ 8764 #line 2605 "parser.yy" 8765 8765 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8766 8766 break; 8767 8767 8768 case 6 86:8769 8770 /* Line 1806 of yacc.c */ 8771 #line 2 579"parser.yy"8768 case 695: 8769 8770 /* Line 1806 of yacc.c */ 8771 #line 2611 "parser.yy" 8772 8772 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8773 8773 break; 8774 8774 8775 case 6 87:8776 8777 /* Line 1806 of yacc.c */ 8778 #line 2 581"parser.yy"8775 case 696: 8776 8777 /* Line 1806 of yacc.c */ 8778 #line 2613 "parser.yy" 8779 8779 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8780 8780 break; 8781 8781 8782 case 6 88:8783 8784 /* Line 1806 of yacc.c */ 8785 #line 2 583"parser.yy"8782 case 697: 8783 8784 /* Line 1806 of yacc.c */ 8785 #line 2615 "parser.yy" 8786 8786 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8787 8787 break; 8788 8788 8789 case 6 89:8790 8791 /* Line 1806 of yacc.c */ 8792 #line 2 588"parser.yy"8789 case 698: 8790 8791 /* Line 1806 of yacc.c */ 8792 #line 2620 "parser.yy" 8793 8793 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8794 8794 break; 8795 8795 8796 case 69 0:8797 8798 /* Line 1806 of yacc.c */ 8799 #line 2 590"parser.yy"8796 case 699: 8797 8798 /* Line 1806 of yacc.c */ 8799 #line 2622 "parser.yy" 8800 8800 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8801 8801 break; 8802 8802 8803 case 693:8804 8805 /* Line 1806 of yacc.c */ 8806 #line 26 00"parser.yy"8803 case 702: 8804 8805 /* Line 1806 of yacc.c */ 8806 #line 2632 "parser.yy" 8807 8807 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8808 8808 break; 8809 8809 8810 case 696:8811 8812 /* Line 1806 of yacc.c */ 8813 #line 26 10"parser.yy"8810 case 705: 8811 8812 /* Line 1806 of yacc.c */ 8813 #line 2642 "parser.yy" 8814 8814 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8815 8815 break; 8816 8816 8817 case 697:8818 8819 /* Line 1806 of yacc.c */ 8820 #line 26 12"parser.yy"8817 case 706: 8818 8819 /* Line 1806 of yacc.c */ 8820 #line 2644 "parser.yy" 8821 8821 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8822 8822 break; 8823 8823 8824 case 698:8825 8826 /* Line 1806 of yacc.c */ 8827 #line 26 14"parser.yy"8824 case 707: 8825 8826 /* Line 1806 of yacc.c */ 8827 #line 2646 "parser.yy" 8828 8828 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8829 8829 break; 8830 8830 8831 case 699:8832 8833 /* Line 1806 of yacc.c */ 8834 #line 26 16"parser.yy"8831 case 708: 8832 8833 /* Line 1806 of yacc.c */ 8834 #line 2648 "parser.yy" 8835 8835 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8836 8836 break; 8837 8837 8838 case 70 0:8839 8840 /* Line 1806 of yacc.c */ 8841 #line 26 18"parser.yy"8838 case 709: 8839 8840 /* Line 1806 of yacc.c */ 8841 #line 2650 "parser.yy" 8842 8842 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8843 8843 break; 8844 8844 8845 case 7 01:8846 8847 /* Line 1806 of yacc.c */ 8848 #line 26 20"parser.yy"8845 case 710: 8846 8847 /* Line 1806 of yacc.c */ 8848 #line 2652 "parser.yy" 8849 8849 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8850 8850 break; 8851 8851 8852 case 7 02:8853 8854 /* Line 1806 of yacc.c */ 8855 #line 26 27"parser.yy"8852 case 711: 8853 8854 /* Line 1806 of yacc.c */ 8855 #line 2659 "parser.yy" 8856 8856 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8857 8857 break; 8858 8858 8859 case 7 03:8860 8861 /* Line 1806 of yacc.c */ 8862 #line 26 29"parser.yy"8859 case 712: 8860 8861 /* Line 1806 of yacc.c */ 8862 #line 2661 "parser.yy" 8863 8863 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8864 8864 break; 8865 8865 8866 case 7 04:8867 8868 /* Line 1806 of yacc.c */ 8869 #line 26 31"parser.yy"8866 case 713: 8867 8868 /* Line 1806 of yacc.c */ 8869 #line 2663 "parser.yy" 8870 8870 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8871 8871 break; 8872 8872 8873 case 7 05:8874 8875 /* Line 1806 of yacc.c */ 8876 #line 26 33"parser.yy"8873 case 714: 8874 8875 /* Line 1806 of yacc.c */ 8876 #line 2665 "parser.yy" 8877 8877 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8878 8878 break; 8879 8879 8880 case 7 06:8881 8882 /* Line 1806 of yacc.c */ 8883 #line 26 35"parser.yy"8880 case 715: 8881 8882 /* Line 1806 of yacc.c */ 8883 #line 2667 "parser.yy" 8884 8884 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8885 8885 break; 8886 8886 8887 case 7 07:8888 8889 /* Line 1806 of yacc.c */ 8890 #line 26 37"parser.yy"8887 case 716: 8888 8889 /* Line 1806 of yacc.c */ 8890 #line 2669 "parser.yy" 8891 8891 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8892 8892 break; 8893 8893 8894 case 7 08:8895 8896 /* Line 1806 of yacc.c */ 8897 #line 26 39"parser.yy"8894 case 717: 8895 8896 /* Line 1806 of yacc.c */ 8897 #line 2671 "parser.yy" 8898 8898 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8899 8899 break; 8900 8900 8901 case 7 09:8902 8903 /* Line 1806 of yacc.c */ 8904 #line 26 41"parser.yy"8901 case 718: 8902 8903 /* Line 1806 of yacc.c */ 8904 #line 2673 "parser.yy" 8905 8905 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8906 8906 break; 8907 8907 8908 case 71 0:8909 8910 /* Line 1806 of yacc.c */ 8911 #line 26 43"parser.yy"8908 case 719: 8909 8910 /* Line 1806 of yacc.c */ 8911 #line 2675 "parser.yy" 8912 8912 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8913 8913 break; 8914 8914 8915 case 7 11:8916 8917 /* Line 1806 of yacc.c */ 8918 #line 26 45"parser.yy"8915 case 720: 8916 8917 /* Line 1806 of yacc.c */ 8918 #line 2677 "parser.yy" 8919 8919 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8920 8920 break; 8921 8921 8922 case 7 12:8923 8924 /* Line 1806 of yacc.c */ 8925 #line 26 50"parser.yy"8922 case 721: 8923 8924 /* Line 1806 of yacc.c */ 8925 #line 2682 "parser.yy" 8926 8926 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8927 8927 break; 8928 8928 8929 case 7 13:8930 8931 /* Line 1806 of yacc.c */ 8932 #line 26 52"parser.yy"8929 case 722: 8930 8931 /* Line 1806 of yacc.c */ 8932 #line 2684 "parser.yy" 8933 8933 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8934 8934 break; 8935 8935 8936 case 7 14:8937 8938 /* Line 1806 of yacc.c */ 8939 #line 26 57"parser.yy"8936 case 723: 8937 8938 /* Line 1806 of yacc.c */ 8939 #line 2689 "parser.yy" 8940 8940 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 8941 8941 break; 8942 8942 8943 case 7 15:8944 8945 /* Line 1806 of yacc.c */ 8946 #line 26 59"parser.yy"8943 case 724: 8944 8945 /* Line 1806 of yacc.c */ 8946 #line 2691 "parser.yy" 8947 8947 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 8948 8948 break; 8949 8949 8950 case 7 17:8951 8952 /* Line 1806 of yacc.c */ 8953 #line 2 686"parser.yy"8950 case 726: 8951 8952 /* Line 1806 of yacc.c */ 8953 #line 2718 "parser.yy" 8954 8954 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8955 8955 break; 8956 8956 8957 case 7 21:8958 8959 /* Line 1806 of yacc.c */ 8960 #line 2 697"parser.yy"8957 case 730: 8958 8959 /* Line 1806 of yacc.c */ 8960 #line 2729 "parser.yy" 8961 8961 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8962 8962 break; 8963 8963 8964 case 7 22:8965 8966 /* Line 1806 of yacc.c */ 8967 #line 2 699"parser.yy"8964 case 731: 8965 8966 /* Line 1806 of yacc.c */ 8967 #line 2731 "parser.yy" 8968 8968 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8969 8969 break; 8970 8970 8971 case 7 23:8972 8973 /* Line 1806 of yacc.c */ 8974 #line 27 01"parser.yy"8971 case 732: 8972 8973 /* Line 1806 of yacc.c */ 8974 #line 2733 "parser.yy" 8975 8975 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8976 8976 break; 8977 8977 8978 case 7 24:8979 8980 /* Line 1806 of yacc.c */ 8981 #line 27 03"parser.yy"8978 case 733: 8979 8980 /* Line 1806 of yacc.c */ 8981 #line 2735 "parser.yy" 8982 8982 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8983 8983 break; 8984 8984 8985 case 7 25:8986 8987 /* Line 1806 of yacc.c */ 8988 #line 27 05"parser.yy"8985 case 734: 8986 8987 /* Line 1806 of yacc.c */ 8988 #line 2737 "parser.yy" 8989 8989 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8990 8990 break; 8991 8991 8992 case 7 26:8993 8994 /* Line 1806 of yacc.c */ 8995 #line 27 07"parser.yy"8992 case 735: 8993 8994 /* Line 1806 of yacc.c */ 8995 #line 2739 "parser.yy" 8996 8996 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8997 8997 break; 8998 8998 8999 case 7 27:9000 9001 /* Line 1806 of yacc.c */ 9002 #line 27 14"parser.yy"8999 case 736: 9000 9001 /* Line 1806 of yacc.c */ 9002 #line 2746 "parser.yy" 9003 9003 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9004 9004 break; 9005 9005 9006 case 7 28:9007 9008 /* Line 1806 of yacc.c */ 9009 #line 27 16"parser.yy"9006 case 737: 9007 9008 /* Line 1806 of yacc.c */ 9009 #line 2748 "parser.yy" 9010 9010 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9011 9011 break; 9012 9012 9013 case 7 29:9014 9015 /* Line 1806 of yacc.c */ 9016 #line 27 18"parser.yy"9013 case 738: 9014 9015 /* Line 1806 of yacc.c */ 9016 #line 2750 "parser.yy" 9017 9017 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9018 9018 break; 9019 9019 9020 case 73 0:9021 9022 /* Line 1806 of yacc.c */ 9023 #line 27 20"parser.yy"9020 case 739: 9021 9022 /* Line 1806 of yacc.c */ 9023 #line 2752 "parser.yy" 9024 9024 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9025 9025 break; 9026 9026 9027 case 7 31:9028 9029 /* Line 1806 of yacc.c */ 9030 #line 27 22"parser.yy"9027 case 740: 9028 9029 /* Line 1806 of yacc.c */ 9030 #line 2754 "parser.yy" 9031 9031 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9032 9032 break; 9033 9033 9034 case 7 32:9035 9036 /* Line 1806 of yacc.c */ 9037 #line 27 24"parser.yy"9034 case 741: 9035 9036 /* Line 1806 of yacc.c */ 9037 #line 2756 "parser.yy" 9038 9038 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9039 9039 break; 9040 9040 9041 case 7 33:9042 9043 /* Line 1806 of yacc.c */ 9044 #line 27 29"parser.yy"9041 case 742: 9042 9043 /* Line 1806 of yacc.c */ 9044 #line 2761 "parser.yy" 9045 9045 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 9046 9046 break; 9047 9047 9048 case 7 34:9049 9050 /* Line 1806 of yacc.c */ 9051 #line 27 34"parser.yy"9048 case 743: 9049 9050 /* Line 1806 of yacc.c */ 9051 #line 2766 "parser.yy" 9052 9052 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); } 9053 9053 break; 9054 9054 9055 case 7 35:9056 9057 /* Line 1806 of yacc.c */ 9058 #line 27 36"parser.yy"9055 case 744: 9056 9057 /* Line 1806 of yacc.c */ 9058 #line 2768 "parser.yy" 9059 9059 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9060 9060 break; 9061 9061 9062 case 7 36:9063 9064 /* Line 1806 of yacc.c */ 9065 #line 27 38"parser.yy"9062 case 745: 9063 9064 /* Line 1806 of yacc.c */ 9065 #line 2770 "parser.yy" 9066 9066 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9067 9067 break; 9068 9068 9069 case 7 39:9070 9071 /* Line 1806 of yacc.c */ 9072 #line 27 62"parser.yy"9069 case 748: 9070 9071 /* Line 1806 of yacc.c */ 9072 #line 2794 "parser.yy" 9073 9073 { (yyval.en) = 0; } 9074 9074 break; 9075 9075 9076 case 74 0:9077 9078 /* Line 1806 of yacc.c */ 9079 #line 27 64"parser.yy"9076 case 749: 9077 9078 /* Line 1806 of yacc.c */ 9079 #line 2796 "parser.yy" 9080 9080 { (yyval.en) = (yyvsp[(2) - (2)].en); } 9081 9081 break; … … 9315 9315 9316 9316 /* Line 2067 of yacc.c */ 9317 #line 27 67"parser.yy"9317 #line 2799 "parser.yy" 9318 9318 9319 9319 // ----end of grammar---- -
src/Parser/parser.h
r698664b3 rd2ded3e7 87 87 RETURN = 305, 88 88 CHOOSE = 306, 89 FALLTHRU = 307, 90 TRY = 308, 91 CATCH = 309, 92 FINALLY = 310, 93 THROW = 311, 94 ASM = 312, 95 ALIGNAS = 313, 96 ALIGNOF = 314, 97 ATOMIC = 315, 98 GENERIC = 316, 99 NORETURN = 317, 100 STATICASSERT = 318, 101 THREADLOCAL = 319, 102 IDENTIFIER = 320, 103 QUOTED_IDENTIFIER = 321, 104 TYPEDEFname = 322, 105 TYPEGENname = 323, 106 ATTR_IDENTIFIER = 324, 107 ATTR_TYPEDEFname = 325, 108 ATTR_TYPEGENname = 326, 109 INTEGERconstant = 327, 110 FLOATINGconstant = 328, 111 CHARACTERconstant = 329, 112 STRINGliteral = 330, 113 ZERO = 331, 114 ONE = 332, 115 ARROW = 333, 116 ICR = 334, 117 DECR = 335, 118 LS = 336, 119 RS = 337, 120 LE = 338, 121 GE = 339, 122 EQ = 340, 123 NE = 341, 124 ANDAND = 342, 125 OROR = 343, 126 ELLIPSIS = 344, 127 MULTassign = 345, 128 DIVassign = 346, 129 MODassign = 347, 130 PLUSassign = 348, 131 MINUSassign = 349, 132 LSassign = 350, 133 RSassign = 351, 134 ANDassign = 352, 135 ERassign = 353, 136 ORassign = 354, 137 THEN = 355 89 DISABLE = 307, 90 ENABLE = 308, 91 FALLTHRU = 309, 92 TRY = 310, 93 CATCH = 311, 94 CATCHRESUME = 312, 95 FINALLY = 313, 96 THROW = 314, 97 THROWRESUME = 315, 98 AT = 316, 99 ASM = 317, 100 ALIGNAS = 318, 101 ALIGNOF = 319, 102 ATOMIC = 320, 103 GENERIC = 321, 104 NORETURN = 322, 105 STATICASSERT = 323, 106 THREADLOCAL = 324, 107 IDENTIFIER = 325, 108 QUOTED_IDENTIFIER = 326, 109 TYPEDEFname = 327, 110 TYPEGENname = 328, 111 ATTR_IDENTIFIER = 329, 112 ATTR_TYPEDEFname = 330, 113 ATTR_TYPEGENname = 331, 114 INTEGERconstant = 332, 115 FLOATINGconstant = 333, 116 CHARACTERconstant = 334, 117 STRINGliteral = 335, 118 ZERO = 336, 119 ONE = 337, 120 ARROW = 338, 121 ICR = 339, 122 DECR = 340, 123 LS = 341, 124 RS = 342, 125 LE = 343, 126 GE = 344, 127 EQ = 345, 128 NE = 346, 129 ANDAND = 347, 130 OROR = 348, 131 ELLIPSIS = 349, 132 MULTassign = 350, 133 DIVassign = 351, 134 MODassign = 352, 135 PLUSassign = 353, 136 MINUSassign = 354, 137 LSassign = 355, 138 RSassign = 356, 139 ANDassign = 357, 140 ERassign = 358, 141 ORassign = 359, 142 ATassign = 360, 143 THEN = 361 138 144 }; 139 145 #endif … … 188 194 #define RETURN 305 189 195 #define CHOOSE 306 190 #define FALLTHRU 307 191 #define TRY 308 192 #define CATCH 309 193 #define FINALLY 310 194 #define THROW 311 195 #define ASM 312 196 #define ALIGNAS 313 197 #define ALIGNOF 314 198 #define ATOMIC 315 199 #define GENERIC 316 200 #define NORETURN 317 201 #define STATICASSERT 318 202 #define THREADLOCAL 319 203 #define IDENTIFIER 320 204 #define QUOTED_IDENTIFIER 321 205 #define TYPEDEFname 322 206 #define TYPEGENname 323 207 #define ATTR_IDENTIFIER 324 208 #define ATTR_TYPEDEFname 325 209 #define ATTR_TYPEGENname 326 210 #define INTEGERconstant 327 211 #define FLOATINGconstant 328 212 #define CHARACTERconstant 329 213 #define STRINGliteral 330 214 #define ZERO 331 215 #define ONE 332 216 #define ARROW 333 217 #define ICR 334 218 #define DECR 335 219 #define LS 336 220 #define RS 337 221 #define LE 338 222 #define GE 339 223 #define EQ 340 224 #define NE 341 225 #define ANDAND 342 226 #define OROR 343 227 #define ELLIPSIS 344 228 #define MULTassign 345 229 #define DIVassign 346 230 #define MODassign 347 231 #define PLUSassign 348 232 #define MINUSassign 349 233 #define LSassign 350 234 #define RSassign 351 235 #define ANDassign 352 236 #define ERassign 353 237 #define ORassign 354 238 #define THEN 355 196 #define DISABLE 307 197 #define ENABLE 308 198 #define FALLTHRU 309 199 #define TRY 310 200 #define CATCH 311 201 #define CATCHRESUME 312 202 #define FINALLY 313 203 #define THROW 314 204 #define THROWRESUME 315 205 #define AT 316 206 #define ASM 317 207 #define ALIGNAS 318 208 #define ALIGNOF 319 209 #define ATOMIC 320 210 #define GENERIC 321 211 #define NORETURN 322 212 #define STATICASSERT 323 213 #define THREADLOCAL 324 214 #define IDENTIFIER 325 215 #define QUOTED_IDENTIFIER 326 216 #define TYPEDEFname 327 217 #define TYPEGENname 328 218 #define ATTR_IDENTIFIER 329 219 #define ATTR_TYPEDEFname 330 220 #define ATTR_TYPEGENname 331 221 #define INTEGERconstant 332 222 #define FLOATINGconstant 333 223 #define CHARACTERconstant 334 224 #define STRINGliteral 335 225 #define ZERO 336 226 #define ONE 337 227 #define ARROW 338 228 #define ICR 339 229 #define DECR 340 230 #define LS 341 231 #define RS 342 232 #define LE 343 233 #define GE 344 234 #define EQ 345 235 #define NE 346 236 #define ANDAND 347 237 #define OROR 348 238 #define ELLIPSIS 349 239 #define MULTassign 350 240 #define DIVassign 351 241 #define MODassign 352 242 #define PLUSassign 353 243 #define MINUSassign 354 244 #define LSassign 355 245 #define RSassign 356 246 #define ANDassign 357 247 #define ERassign 358 248 #define ORassign 359 249 #define ATassign 360 250 #define THEN 361 239 251 240 252 … … 246 258 247 259 /* Line 2068 of yacc.c */ 248 #line 1 08"parser.yy"260 #line 110 "parser.yy" 249 261 250 262 Token tok; … … 263 275 264 276 /* Line 2068 of yacc.c */ 265 #line 2 66"Parser/parser.h"277 #line 278 "Parser/parser.h" 266 278 } YYSTYPE; 267 279 # define YYSTYPE_IS_TRIVIAL 1 -
src/Parser/parser.yy
r698664b3 rd2ded3e7 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T ue Aug 11 16:01:49201513 // Update Count : 1 35012 // Last Modified On : Thu Oct 8 17:17:54 2015 13 // Update Count : 1473 14 14 // 15 15 … … 81 81 %token ATTRIBUTE EXTENSION // GCC 82 82 %token IF ELSE SWITCH CASE DEFAULT DO WHILE FOR BREAK CONTINUE GOTO RETURN 83 %token CHOOSE FALLTHRU TRY CATCH FINALLY THROW// CFA83 %token CHOOSE DISABLE ENABLE FALLTHRU TRY CATCH CATCHRESUME FINALLY THROW THROWRESUME AT // CFA 84 84 %token ASM // C99, extension ISO/IEC 9899:1999 Section J.5.10(1) 85 85 %token ALIGNAS ALIGNOF ATOMIC GENERIC NORETURN STATICASSERT THREADLOCAL // C11 … … 103 103 %token LSassign RSassign // <<= >>= 104 104 %token ANDassign ERassign ORassign // &= ^= |= 105 106 %token ATassign // @= 105 107 106 108 // Types declaration … … 120 122 } 121 123 122 %type<tok> zero_one identifier no_attr_identifier no_01_identifier124 %type<tok> identifier no_01_identifier no_attr_identifier zero_one 123 125 %type<tok> identifier_or_type_name no_attr_identifier_or_type_name no_01_identifier_or_type_name 124 126 %type<constant> string_literal_list … … 317 319 ; 318 320 321 // no zero_one because ambiguity with 0.0 : double constant or field selection 319 322 no_attr_identifier: 320 323 IDENTIFIER … … 364 367 | postfix_expression DECR 365 368 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), $1 ); } 366 // GCC has priority: cast_expression367 369 | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99 368 370 { $$ = 0; } 371 | postfix_expression '{' argument_expression_list '}' // CFA 372 { 373 Token fn; fn.str = new std::string( "?{}" ); // location undefined 374 $$ = new CompositeExprNode( new VarRefNode( fn ), (ExpressionNode *)( $1 )->set_link( $3 ) ); 375 } 369 376 ; 370 377 … … 445 452 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), $2 ); } 446 453 | ALIGNOF '(' type_name_no_function ')' // GCC, type alignment 447 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 ) ); }454 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 ) ); } 448 455 | ANDAND no_attr_identifier // GCC, address of label 449 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); }456 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); } 450 457 ; 451 458 … … 627 634 | exception_statement 628 635 | asm_statement 636 | '^' postfix_expression '{' argument_expression_list '}' ';' // CFA 637 { 638 Token fn; fn.str = new std::string( "^?{}" ); // location undefined 639 $$ = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ), 640 (ExpressionNode *)(new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), $2 ))->set_link( $4 ) ), 0 ); 641 } 629 642 ; 630 643 … … 805 818 | RETURN comma_expression_opt ';' 806 819 { $$ = new StatementNode( StatementNode::Return, $2, 0 ); } 807 | THROW assignment_expression ';'820 | THROW assignment_expression_opt ';' 808 821 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); } 809 | THROW ';' 810 { $$ = new StatementNode( StatementNode::Throw ); } 822 // | THROW ';' 823 // { $$ = new StatementNode( StatementNode::Throw ); } 824 | THROWRESUME assignment_expression_opt ';' 825 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); } 826 | THROWRESUME assignment_expression_opt AT assignment_expression ';' 827 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); } 828 // | THROWRESUME ';' 829 // { $$ = new StatementNode( StatementNode::Throw ); } 811 830 ; 812 831 … … 831 850 | handler_clause CATCH '(' ELLIPSIS ')' compound_statement 832 851 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); } 852 | CATCHRESUME '(' ELLIPSIS ')' compound_statement 853 { $$ = StatementNode::newCatchStmt( 0, $5, true ); } 854 | handler_clause CATCHRESUME '(' ELLIPSIS ')' compound_statement 855 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); } 833 856 ; 834 857 … … 837 860 { $$ = StatementNode::newCatchStmt( $5, $8 ); } 838 861 | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop 862 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); } 863 | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop 864 { $$ = StatementNode::newCatchStmt( $5, $8 ); } 865 | handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop 839 866 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); } 840 867 ; … … 1654 1681 | '=' initializer 1655 1682 { $$ = $2; } 1683 | ATassign initializer 1684 { $$ = $2; } 1656 1685 ; 1657 1686 … … 1662 1691 1663 1692 initializer_list: 1664 initializer 1693 // empty 1694 { $$ = 0; } 1695 | initializer 1665 1696 | designation initializer { $$ = $2->set_designators( $1 ); } 1666 1697 | initializer_list ',' initializer { $$ = (InitializerNode *)( $1->set_link( $3 ) ); } … … 1693 1724 1694 1725 designator: 1726 // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0 1695 1727 // only ".0" and ".1" allowed => semantic check 1696 1728 FLOATINGconstant -
src/SymTab/Indexer.h
r698664b3 rd2ded3e7 10 10 // Created On : Sun May 17 21:38:55 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Aug 05 13:51:39201513 // Update Count : 412 // Last Modified On : Thu Sep 17 16:05:38 2015 13 // Update Count : 5 14 14 // 15 15 … … 19 19 #include <list> 20 20 #include <string> 21 #include <map>22 21 23 22 #include "SynTree/Visitor.h" -
src/SymTab/Validate.cc
r698664b3 rd2ded3e7 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 21:50:04 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Aug 05 14:00:24201513 // Update Count : 19 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Aug 11 16:59:35 2015 13 // Update Count : 196 14 14 // 15 15 … … 894 894 DeclarationWithType *ret = Mutator::mutate( objDecl ); 895 895 typedefNames = oldNames; 896 // is the type a function? 896 897 if ( FunctionType *funtype = dynamic_cast<FunctionType *>( ret->get_type() ) ) { 898 // replace the current object declaration with a function declaration 897 899 return new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, ret->get_isInline(), ret->get_isNoreturn() ); 898 900 } else if ( objDecl->get_isInline() || objDecl->get_isNoreturn() ) { -
src/SynTree/ArrayType.cc
r698664b3 rd2ded3e7 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Sat Jun 6 14:11:48201513 // Update Count : 911 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Aug 12 14:19:07 2015 13 // Update Count : 11 14 14 // 15 15 … … 50 50 } // if 51 51 if ( dimension ) { 52 os << " with dimension of ";53 dimension->print( os, indent);52 os << " with dimension of "; 53 dimension->print( os, 0 ); 54 54 } // if 55 55 } -
src/SynTree/BasicType.cc
r698664b3 rd2ded3e7 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Sun Jun 7 08:44:36201513 // Update Count : 511 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Aug 12 14:15:45 2015 13 // Update Count : 6 14 14 // 15 15 … … 28 28 29 29 Type::print( os, indent ); 30 os << kindNames[ kind ] << ' ';30 os << kindNames[ kind ]; 31 31 } 32 32 -
src/SynTree/Expression.cc
r698664b3 rd2ded3e7 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Tue Jul 28 16:27:17201513 // Update Count : 2211 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Sep 02 12:07:10 2015 13 // Update Count : 33 14 14 // 15 15 … … 31 31 Expression::Expression( Expression *_aname ) : env( 0 ), argName( _aname ) {} 32 32 33 Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ) {33 Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ), argName( maybeClone( other.get_argName() ) ) { 34 34 cloneAll( other.results, results ); 35 argName = other.get_argName();36 35 } 37 36 … … 72 71 73 72 void ConstantExpr::print( std::ostream &os, int indent ) const { 74 os << "constant expression " ;73 os << std::string( indent, ' ' ) << "constant expression " ; 75 74 constant.print( os ); 76 75 Expression::print( os, indent ); 76 os << std::endl; 77 77 } 78 78 -
src/SynTree/Initializer.cc
r698664b3 rd2ded3e7 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Mon May 18 09:02:45 201513 // Update Count : 211 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Aug 12 14:05:25 2015 13 // Update Count : 14 14 14 // 15 15 … … 43 43 44 44 void SingleInit::print( std::ostream &os, int indent ) { 45 os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: " ;46 value->print( os, indent+ 2);45 os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: " << std::endl; 46 value->print( os, indent+4 ); 47 47 48 48 if ( ! designators.empty() ) { 49 os << std::endl << std::string(indent + 2, ' ' ) << "designated by: " ;50 for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) 49 os << std::endl << std::string(indent + 2, ' ' ) << "designated by: " << std::endl; 50 for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) { 51 51 ( *i )->print(os, indent + 4 ); 52 } 52 53 } // if 53 54 } -
src/driver/cfa.cc
r698664b3 rd2ded3e7 10 10 // Created On : Tue Aug 20 13:44:49 2002 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 16 17:09:23201513 // Update Count : 12 412 // Last Modified On : Mon Aug 17 15:24:30 2015 13 // Update Count : 126 14 14 // 15 15 … … 263 263 args[nargs] = ( *new string( string("-D__CFA_PATCHLEVEL__=") + Patch ) ).c_str(); 264 264 nargs += 1; 265 args[nargs] = "-D__CFORALL__=1"; 266 nargs += 1; 265 267 266 268 if ( cpp_flag ) { -
src/examples/control_structures.c
r698664b3 rd2ded3e7 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jun 4 14:02:50201513 // Update Count : 2 412 // Last Modified On : Fri Sep 18 08:12:17 2015 13 // Update Count : 28 14 14 // 15 15 … … 26 26 break L3; 27 27 break L4; 28 //continue L1; // labelled continue - should be an error29 //continue L2; // should be an error28 //continue L1; // error: not enclosing loop 29 //continue L2; // error: not enclosing loop 30 30 continue L3; 31 31 continue L4; -
src/examples/sum.c
r698664b3 rd2ded3e7 7 7 // sum.c -- 8 8 // 9 // Author : Richard C. Bilson9 // Author : Peter A. Buhr 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jun 1 20:46:35 201513 // Update Count : 1 812 // Last Modified On : Mon Sep 28 15:09:55 2015 13 // Update Count : 118 14 14 // 15 15 16 16 extern "C" { 17 int printf( c onst char *, ... );17 int printf( char *, ... ); 18 18 } 19 #include "fstream.h" 19 20 20 21 context sumable( type T ) { 21 22 const T 0; 22 23 T ?+?( T, T ); 24 T ?+=?( T *, T ); 25 T ++?( T * ); 23 26 T ?++( T * ); 24 T ?+=?( T *, T );25 27 }; 26 28 27 29 forall( type T | sumable( T ) ) 28 T sum( int n, T a[] ) { 29 T total; // instantiate T, select 0 30 total = 0; 31 for ( int i = 0; i < n; i += 1 ) 32 total = total + a[i]; // select + 30 T sum( unsigned int n, T a[] ) { 31 T total = 0; // instantiate T, select 0 32 for ( unsigned int i = 0; i < n; i += 1 ) 33 total += a[i]; // select + 33 34 return total; 34 35 } … … 36 37 // Required to satisfy sumable as char does not have addition. 37 38 const char 0; 38 char ?+?( char op1, char op2 ) { return op1 + op2; } 39 char ?++( char *op ) { return *op + 1; } 40 41 const double 0; // TEMPORARY, incorrect use of int 0 39 char ?+?( char op1, char op2 ) { return (int)op1 + op2; } // cast forces integer addition or recursion 40 char ++?( char *op ) { *op += 1; return *op; } 41 char ?++( char *op ) { char temp = *op; *op += 1; return temp; } 42 42 43 43 int main() { 44 44 const int low = 5, High = 15, size = High - low; 45 int si = 0, ai[size]; 45 46 ofstream *sout = ofstream_stdout(); 47 48 char s = 0, a[size]; 49 char v = low; 50 for ( int i = 0; i < size; i += 1, v += 1 ) { 51 s += v; 52 a[i] = v; 53 } 54 sout << "sum from " << low << " to " << High << " is " 55 << (int)sum( size, a ) << ", check " << (int)s << "\n"; 56 57 int s = 0, a[size]; 46 58 int v = low; 47 59 for ( int i = 0; i < size; i += 1, v += 1 ) { 48 s i +=v;49 a i[i] =v;60 s += (int)v; 61 a[i] = (int)v; 50 62 } 51 printf( "sum from %d to %d is %d, check %d\n",52 low, High, sum( size, ai ), si );63 sout << "sum from " << low << " to " << High << " is " 64 << sum( size, (int *)a ) << ", check " << (int)s << "\n"; 53 65 54 // char ci[size]; 55 // char c = sum( size, ci ); 56 // float fi[size]; 57 // float f = sum( size, fi ); 58 59 double sd = 0.0, ad[size]; 66 double s = 0.0, a[size]; 60 67 double v = low / 10.0; 61 68 for ( int i = 0; i < size; i += 1, v += 0.1 ) { 62 s d +=v;63 a d[i] =v;69 s += (double)v; 70 a[i] = (double)v; 64 71 } 65 printf( "sum from %g to %g is %g, check %g\n", 66 low / 10.0, High / 10.0, sum( size, ad ), sd ); 72 printf( "%g\n", sum( size, (double *)a ) ); 73 // sout << "sum from " << low / 10.0 << " to " << High / 10.0 << " is " 74 // << sum( size, (double *)a ) << ", check " << (double)s << "\n"; 75 76 float s = 0.0, a[size]; 77 float v = low / 10.0; 78 for ( int i = 0; i < size; i += 1, v += 0.1f ) { 79 s += (float)v; 80 a[i] = (float)v; 81 } 82 printf( "%g\n", sum( size, (float *)a ) ); 83 // sout << "sum from " << low / 10.0 << " to " << High / 10.0 << " is " 84 // << sum( size, (float *)a ) << ", check " << (float)s << "\n"; 67 85 } 68 86 69 87 // Local Variables: // 70 88 // tab-width: 4 // 71 // compile-command: "cfa sum.c " //89 // compile-command: "cfa sum.c fstream.o iostream.o" // 72 90 // End: //
Note:
See TracChangeset
for help on using the changeset viewer.