Changeset f28a53a
- Timestamp:
- Oct 7, 2015, 12:42:10 PM (10 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
- Children:
- 0800284, 50eac1b
- Parents:
- 59cde21 (diff), 1521de20 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 4 added
- 3 deleted
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
.gitignore
r59cde21 rf28a53a 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
r59cde21 rf28a53a 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,_At,_Atomic,catch,catchResume,choose,_Complex,context,disable,dtype,enable, 108 fallthru,finally,forall,ftype,_Imaginary,lvalue,restrict,throw,throwResume,try,type,}, 109 }% 110 111 \lstset{ 112 language=CFA, 113 columns=fullflexible, 114 basicstyle=\sf\small, 115 tabsize=4, 116 xleftmargin=\parindent, 117 escapechar=@, 118 %fancyvrb=true, 119 %showtabs=true, 120 keepspaces=true, 121 showtabs=true, 122 tab=, 123 }% 124 125 \makeatletter 126 % replace/adjust listings characters that look bad in sanserif 127 \lst@CCPutMacro 128 \lst@ProcessOther{"2D}{\lst@ttfamily{-{}}{{\ttfamily\upshape -}}} % replace minus 129 \lst@ProcessOther{"3C}{\lst@ttfamily{<}{\texttt{<}}} % replace less than 130 \lst@ProcessOther{"3E}{\lst@ttfamily{<}{\texttt{>}}} % replace greater than 131 \lst@ProcessOther{"5E}{\raisebox{0.4ex}{$\scriptstyle\land\,$}} % replace circumflex 132 \lst@ProcessLetter{"5F}{\lst@ttfamily{\char95}{{\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}}} % replace underscore 133 \lst@ProcessOther{"7E}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}} % replace tilde 134 %\lst@ProcessOther{"7E}{\raisebox{-.4ex}[1ex][0pt]{\textasciitilde}} % lower tilde 135 \@empty\z@\@empty 136 \makeatother 137 138 \setcounter{secnumdepth}{3} % number subsubsections 139 \setcounter{tocdepth}{3} % subsubsections in table of contents 140 \makeindex 141 142 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 143 144 \begin{document} 145 \pagestyle{headings} 146 \linenumbers % comment out to turn off line numbering 147 148 \title{\CFA (\CFAA) Reference Manual and Rationale} 149 \author{Glen Ditchfield \and Peter A. Buhr} 150 \date{DRAFT\\\today} 151 152 \pagenumbering{roman} 153 \pagestyle{plain} 154 155 \maketitle 156 157 \vspace*{\fill} 158 \thispagestyle{empty} 159 \noindent 160 \copyright\,2015 Glen Ditchfield \\ \\ 161 \noindent 162 This work is licensed under the Creative Commons Attribution 4.0 International License. To view a 163 copy of this license, visit {\small\url{http://creativecommons.org/licenses/by/4.0}}. 164 \vspace*{1in} 165 166 \clearpage 167 \pdfbookmark[1]{Contents}{section} 168 \tableofcontents 169 170 \clearpage 171 \pagenumbering{arabic} 172 173 174 \chapter*{Introduction}\addcontentsline{toc}{chapter}{Introduction} 175 176 This document is a reference manual and rationale for \CFA, a polymorphic extension of the C 177 programming language. It makes frequent reference to the {\c11} standard \cite{ANS:C11}, and 178 occasionally compares \CFA to {\CC} \cite{c++}. 179 180 The manual deliberately imitates the ordering of the {\c11} standard (although the section numbering 181 differs). Unfortunately, this means the manual contains more ``forward references'' than usual, 182 making it harder to follow if the reader does not have a copy of the {\c11} standard. For a simple 183 introduction to \CFA, see the companion document ``An Overview of \CFA'' 184 \cite{Ditchfield96:Overview}. 185 186 \begin{rationale} 187 Commentary (like this) is quoted with quads. Commentary usually deals with subtle points, the 188 rationale behind a rule, and design decisions. 189 \end{rationale} 190 191 % No ``Scope'' or ``Normative references'' chapters yet. 192 193 194 \setcounter{chapter}{2} 195 \chapter{Terms, definitions, and symbols} 196 197 Terms from the {\c11} standard used in this document have the same meaning as in the {\c11} 198 standard. 199 200 % No ``Conformance'' or ``Environment'' chapters yet. 201 202 203 \setcounter{chapter}{5} 204 \chapter{Language} 205 206 207 \section{Notation} 208 The syntax notation used in this document is the same as in the {\c11} standard, with one exception: 209 ellipsis in the definition of a nonterminal, as in ``\emph{declaration:} \ldots'', indicates that 210 these rules extend a previous definition, which occurs in this document or in the {\c11} standard. 211 212 213 \section{Concepts} 214 215 216 \subsection{Scopes of identifiers}\index{scopes} 217 218 \CFA's scope rules differ from C's in one major respect: a declaration of an identifier may 219 overload\index{overloading} outer declarations of lexically identical identifiers in the same 220 \Index{name space}, instead of hiding them. The outer declaration is hidden if the two declarations 221 have \Index{compatible type}, or if one declares an array type and the other declares a pointer type 222 and the element type and pointed-at type are compatible, or if one has function type and the other 223 is a pointer to a compatible function type, or if one declaration is a \lstinline$type$\use{type} or 224 \lstinline$typedef$\use{typedef} declaration and the other is not. The outer declaration becomes 225 \Index{visible} when the scope of the inner declaration terminates. 226 \begin{rationale} 227 Hence, a \CFA program can declare an \lstinline$int v$ and a \lstinline$float v$ in the same 228 scope; a {\CC} program can not. 229 \end{rationale} 230 231 232 \subsection{Linkage of identifiers} 233 \index{linkage} 234 235 \CFA's linkage rules differ from C's in only one respect: instances of a particular identifier with 236 external or internal linkage do not necessarily denote the same object or function. Instead, in the 237 set of translation units and libraries that constitutes an entire program, any two instances of a 238 particular identifier with \Index{external linkage} denote the same object or function if they have 239 \Index{compatible type}s, or if one declares an array type and the other declares a pointer type and 240 the element type and pointed-at type are compatible, or if one has function type and the other is a 241 pointer to a compatible function type. Within one translation unit, each instance of an identifier 242 with \Index{internal linkage} denotes the same object or function in the same circumstances. 243 Identifiers with \Index{no linkage} always denote unique entities. 244 \begin{rationale} 245 A \CFA program can declare an \lstinline$extern int v$ and an \lstinline$extern float v$; a C 246 program cannot. 247 \end{rationale} 248 249 250 \setcounter{subsection}{8} 251 \subsection{Generic Types} 252 253 254 \subsubsection{Semantics} 255 256 \CFA provides a capability for generic types; using this capability a single "generic type 257 generator" can be written that can represent multiple concrete type instantiations by substitution 258 of the "type parameters" of the generic type for concrete types. Syntactically a generic type 259 generator is represented by putting a forall specifier on a struct or union declaration, as defined 260 in \VRef{forall}. An instantiation of the generic type is written by specifying the type parameters 261 in parentheses after the name of the generic type generator: 262 \begin{lstlisting} 263 forall( type T | sumable( T ) ) struct pair { 264 T x; 265 T y; 266 }; 267 pair( int ) p = { 3, 14 }; 268 \end{lstlisting} 269 270 The type parameters in an instantiation of a generic type must satisfy any constraints in the forall 271 specifier on the type generator declaration, e.g., \lstinline$sumable$. The instantiation then has 272 the semantics that would result if the type parameters were substituted into the type generator 273 declaration by macro substitution. 274 275 Polymorphic functions may have generic types as parameters, and those generic types may use type 276 parameters of the polymorphic function as type parameters of the generic type: 277 \begin{lstlisting} 278 forall( type T ) void swap( pair(T) *p ) { 279 T z = p->x; 280 p->x = p->y; 281 p->y = z; 282 } 283 \end{lstlisting} 284 285 286 \subsubsection{Constraints} 287 288 To avoid unduly constraining implementors, the generic type generator definition must be visible at 289 any point where it is instantiated. Forward declarations of generic type generators are not 290 forbidden, but the definition must be visible to instantiate the generic type. Equivalently, 291 instantiations of generic types are not allowed to be incomplete types. 292 293 \examples 294 \begin{lstlisting} 295 forall( type T ) struct A; 296 297 forall( type T ) struct B { 298 A(T) *a; // legal, but cannot instantiate B(T) 299 }; 300 301 B(T) x; // illegal, *x.a is of an incomplete generic type 302 303 forall( type T ) struct A { 304 B( T ) *b; 305 }; 306 307 B( T ) y; // legal, *x.a is now of a complete generic type 308 309 310 // box.h: 311 forall( type T ) struct box; 312 forall( type T ) box( T ) *make_box( T ); 313 forall( type T ) void use_box( box( T ) *b ); 314 315 // main.c: 316 box( int ) *b = make_box( 42 ); // illegal, def'n of box not visible 317 use_box( b ); // illegal 318 \end{lstlisting} 319 320 321 \section{Conversions} 322 \CFA defines situations where values of one type are automatically converted to another type. 323 These conversions are called \define{implicit conversion}s. The programmer can request 324 \define{explicit conversion}s using cast expressions. 325 326 327 \subsection{Arithmetic operands} 328 329 330 \setcounter{subsubsection}{8} 331 \subsubsection{Safe arithmetic conversions} 332 333 In C, a pattern of conversions known as the \define{usual arithmetic conversion}s is used with most 334 binary arithmetic operators to convert the operands to a common type and determine the type of the 335 operator's result. In \CFA, these conversions play a role in overload resolution, and 336 collectively are called the \define{safe arithmetic conversion}s. 337 338 Let \(int_r\) and \(unsigned_r\) be the signed and unsigned integer types with integer conversion 339 rank\index{integer conversion rank}\index{rank|see{integer conversion rank}} $r$. Let 340 \(unsigned_{mr}\) be the unsigned integer type with maximal rank. 341 342 The following conversions are \emph{direct} safe arithmetic conversions. 343 \begin{itemize} 344 \item 345 The \Index{integer promotion}s. 346 347 \item 348 For every rank $r$ greater than or equal to the rank of \lstinline$int$, conversion from \(int_r\) 349 to \(unsigned_r\). 350 351 \item 352 For every rank $r$ greater than or equal to the rank of \lstinline$int$, where \(int_{r+1}\) exists 353 and can represent all values of \(unsigned_r\), conversion from \(unsigned_r\) to \(int_{r+1}\). 354 355 \item 356 Conversion from \(unsigned_{mr}\) to \lstinline$float$. 357 358 \item 359 Conversion from an enumerated type to its compatible integer type. 360 361 \item 362 Conversion from \lstinline$float$ to \lstinline$double$, and from \lstinline$double$ to 363 \lstinline$long double$. 364 365 \item 366 Conversion from \lstinline$float _Complex$ to \lstinline$double _Complex$, 367 and from \lstinline$double _Complex$ to \lstinline$long double _Complex$. 368 369 \begin{sloppypar} 370 \item 371 Conversion from \lstinline$float _Imaginary$ to \lstinline$double _Imaginary$, and from 372 \lstinline$double _Imaginary$ to \lstinline$long double$ \lstinline$_Imaginary$, if the 373 implementation supports imaginary types. 374 \end{sloppypar} 375 \end{itemize} 376 377 If type \lstinline$T$ can be converted to type \lstinline$U$ by a safe direct arithmetic conversion 378 and type \lstinline$U$ can be converted to type \lstinline$V$ by a safe arithmetic conversion, then 379 the conversion from \lstinline$T$ to type \lstinline$V$ is an \emph{indirect} safe arithmetic 380 conversion. 381 382 \begin{rationale} 383 Note that {\c11} does not include conversion from \Index{real type}s to \Index{complex type}s in the 384 usual arithmetic conversions, and \CFA does not include them as safe conversions. 385 \end{rationale} 386 387 388 \subsection{Other operands} 389 390 391 \setcounter{subsubsection}{3} 392 \subsubsection{Anonymous structures and unions} 393 \label{anon-conv} 394 395 If an expression's type is a pointer to a structure or union type that has a member that is an 396 \Index{anonymous structure} or an \Index{anonymous union}, it can be implicitly 397 converted\index{implicit conversion} to a pointer to the anonymous structure's or anonymous union's 398 type. The result of the conversion is a pointer to the member. 399 400 \examples 401 \begin{lstlisting} 402 struct point { 403 int x, y; 404 }; 405 void move_by(struct point * p1, struct point * p2) {@\impl{move_by}@ 406 p1->x += p2.x; 407 p1->y += p2.y; 408 } 409 410 struct color_point { 411 enum { RED, BLUE, GREEN } color; 412 struct point; 413 } cp1, cp2; 414 move_to(&cp1, &cp2); 415 \end{lstlisting} 416 Thanks to implicit conversion, the two arguments that \lstinline$move_by()$ receives are pointers to 417 \lstinline$cp1$'s second member and \lstinline$cp2$'s second member. 418 419 420 \subsubsection{Specialization} 421 A function or value whose type is polymorphic may be implicitly converted to one whose type is 422 \Index{less polymorphic} by binding values to one or more of its \Index{inferred parameter}. Any 423 value that is legal for the inferred parameter may be used, including other inferred parameters. 424 425 If, after the inferred parameter binding, an \Index{assertion parameter} has no inferred parameters 426 in its type, then an object or function must be visible at the point of the specialization that has 427 the same identifier as the assertion parameter and has a type that is compatible\index{compatible 428 type} with or can be specialized to the type of the assertion parameter. The assertion parameter 429 is bound to that object or function. 430 431 The type of the specialization is the type of the original with the bound inferred parameters and 432 the bound assertion parameters replaced by their bound values. 433 434 \examples 435 The type 436 \begin{lstlisting} 437 forall( type T, type U ) void (*)( T, U ); 438 \end{lstlisting} 439 can be specialized to (among other things) 440 \begin{lstlisting} 441 forall( type T ) void (*)( T, T ); // U bound to T 442 forall( type T ) void (*)( T, real ); // U bound to real 443 forall( type U ) void (*)( real, U ); // T bound to real 444 void f( real, real ); // both bound to real 445 \end{lstlisting} 446 447 The type 448 \begin{lstlisting} 449 forall( type T | T ?+?( T, T )) T (*)( T ); 450 \end{lstlisting} 451 can be specialized to (among other things) 452 \begin{lstlisting} 453 int (*)( int ); // T bound to int, and T ?+?(T, T ) bound to int ?+?( int, int ) 454 \end{lstlisting} 455 456 457 \subsubsection{Safe conversions} 458 459 A \define{direct safe conversion} is one of the following conversions: 460 \begin{itemize} 461 \item 462 a direct safe arithmetic conversion; 463 \item 464 from any object type or incomplete type to \lstinline$void$; 465 \item 466 from a pointer to any non-\lstinline$void$ type to a pointer to \lstinline$void$; 467 \item 468 from a pointer to any type to a pointer to a more qualified version of the type\index{qualified 469 type}; 470 \item 471 from a pointer to a structure or union type to a pointer to the type of a member of the structure or 472 union that is an \Index{anonymous structure} or an \Index{anonymous union}; 473 \item 474 within the scope of an initialized \Index{type declaration}, conversions between a type and its 475 implementation or between a pointer to a type and a pointer to its implementation. 476 \end{itemize} 477 478 Conversions that are not safe conversions are \define{unsafe conversion}s. 479 \begin{rationale} 480 As in C, there is an implicit conversion from \lstinline$void *$ to any pointer type. This is 481 clearly dangerous, and {\CC} does not have this implicit conversion. 482 \CFA\index{deficiencies!void * conversion} keeps it, in the interest of remaining as pure a 483 superset of C as possible, but discourages it by making it unsafe. 484 \end{rationale} 485 486 487 \subsection{Conversion cost} 488 489 The \define{conversion cost} of a safe\index{safe conversion} 490 conversion\footnote{Unsafe\index{unsafe conversion} conversions do not have defined conversion 491 costs.} is a measure of how desirable or undesirable it is. It is defined as follows. 492 \begin{itemize} 493 \item 494 The cost of a conversion from any type to itself is 0. 495 496 \item 497 The cost of a direct safe conversion is 1. 498 499 \item 500 The cost of an indirect safe arithmetic conversion is the smallest number of direct conversions 501 needed to make up the conversion. 502 \end{itemize} 503 504 \examples 505 In the following, assume an implementation that does not provide any extended integer types. 506 507 \begin{itemize} 508 \item 509 The cost of an implicit conversion from \lstinline$int$ to \lstinline$long$ is 1. The cost of an 510 implicit conversion from \lstinline$long$ to \lstinline$double$ is 3, because it is defined in terms 511 of conversions from \lstinline$long$ to \lstinline$unsigned long$, then to \lstinline$float$, and 512 then to \lstinline$double$. 513 514 \item 515 If \lstinline$int$ can represent all the values of \lstinline$unsigned short$, then the cost of an 516 implicit conversion from \lstinline$unsigned short$ to \lstinline$unsigned$ is 2: 517 \lstinline$unsigned short$ to \lstinline$int$ to \lstinline$unsigned$. Otherwise, 518 \lstinline$unsigned short$ is converted directly to \lstinline$unsigned$, and the cost is 1. 519 520 \item 521 If \lstinline$long$ can represent all the values of \lstinline$unsigned$, then the conversion cost 522 of \lstinline$unsigned$ to \lstinline$long$ is 1. Otherwise, the conversion is an unsafe 523 conversion, and its conversion cost is undefined. 524 \end{itemize} 525 526 \section{Lexical elements} 527 \subsection{Keywords} 528 \begin{syntax} 529 \oldlhs{keyword} 530 \rhs \lstinline$forall$ 531 \rhs \lstinline$lvalue$ 532 \rhs \lstinline$context$ 533 \rhs \lstinline$dtype$ 534 \rhs \lstinline$ftype$ 535 \rhs \lstinline$type$ 536 \end{syntax} 537 538 539 \subsection{Identifiers} 540 541 \CFA allows operator \Index{overloading} by associating operators with special function 542 identifiers. Furthermore, the constants ``\lstinline$0$'' and ``\lstinline$1$'' have special status 543 for many of C's data types (and for many programmer-defined data types as well), so \CFA treats them 544 as overloadable identifiers. Programmers can use these identifiers to declare functions and objects 545 that implement operators and constants for their own types. 546 547 548 \setcounter{subsubsection}{2} 549 \subsubsection{Constant identifiers} 550 551 \begin{syntax} 552 \oldlhs{identifier} 553 \rhs \lstinline$0$ 554 \rhs \lstinline$1$ 555 \end{syntax} 556 557 \index{constant identifiers}\index{identifiers!for constants} The tokens ``\lstinline$0$''\impl{0} 558 and ``\lstinline$1$''\impl{1} are identifiers. No other tokens defined by the rules for integer 559 constants are considered to be identifiers. 560 \begin{rationale} 561 Why ``\lstinline$0$'' and ``\lstinline$1$''? Those integers have special status in C. All scalar 562 types can be incremented and decremented, which is defined in terms of adding or subtracting 1. The 563 operations ``\lstinline$&&$'', ``\lstinline$||$'', and ``\lstinline$!$'' can be applied to any 564 scalar arguments, and are defined in terms of comparison against 0. A \nonterm{constant-expression} 565 that evaluates to 0 is effectively compatible with every pointer type. 566 567 In C, the integer constants 0 and 1 suffice because the integer promotion rules can convert them to 568 any arithmetic type, and the rules for pointer expressions treat constant expressions evaluating to 569 0 as a special case. However, user-defined arithmetic types often need the equivalent of a 1 or 0 570 for their functions or operators, polymorphic functions often need 0 and 1 constants of a type 571 matching their polymorphic parameters, and user-defined pointer-like types may need a null value. 572 Defining special constants for a user-defined type is more efficient than defining a conversion to 573 the type from \lstinline$_Bool$. 574 575 Why \emph{just} ``\lstinline$0$'' and ``\lstinline$1$''? Why not other integers? No other integers 576 have special status in C. A facility that let programmers declare specific 577 constants---``\lstinline$const Rational 12$'', for instance---would not be much of an improvement. 578 Some facility for defining the creation of values of programmer-defined types from arbitrary integer 579 tokens would be needed. The complexity of such a feature doesn't seem worth the gain. 580 \end{rationale} 581 582 583 \subsubsection{Operator identifiers} 584 585 \index{operator identifiers}\index{identifiers!for operators} Table \ref{opids} lists the 586 programmer-definable operator identifiers and the operations they are associated with. Functions 587 that are declared with (or pointed at by function pointers that are declared with) these identifiers 588 can be called by expressions that use the operator tokens and syntax, or the operator identifiers 589 and ``function call'' syntax. The relationships between operators and function calls are discussed 590 in descriptions of the operators. 591 592 \begin{table}[hbt] 593 \hfil 594 \begin{tabular}[t]{ll} 595 %identifier & operation \\ \hline 596 \lstinline$?[?]$ & subscripting \impl{?[?]}\\ 597 \lstinline$?()$ & function call \impl{?()}\\ 598 \lstinline$?++$ & postfix increment \impl{?++}\\ 599 \lstinline$?--$ & postfix decrement \impl{?--}\\ 600 \lstinline$++?$ & prefix increment \impl{++?}\\ 601 \lstinline$--?$ & prefix decrement \impl{--?}\\ 602 \lstinline$*?$ & dereference \impl{*?}\\ 603 \lstinline$+?$ & unary plus \impl{+?}\\ 604 \lstinline$-?$ & arithmetic negation \impl{-?}\\ 605 \lstinline$~?$ & bitwise negation \impl{~?}\\ 606 \lstinline$!?$ & logical complement \impl{"!?}\\ 607 \lstinline$?*?$ & multiplication \impl{?*?}\\ 608 \lstinline$?/?$ & division \impl{?/?}\\ 609 \end{tabular}\hfil 610 \begin{tabular}[t]{ll} 611 %identifier & operation \\ \hline 612 \lstinline$?%?$ & remainder \impl{?%?}\\ 613 \lstinline$?+?$ & addition \impl{?+?}\\ 614 \lstinline$?-?$ & subtraction \impl{?-?}\\ 615 \lstinline$?<<?$ & left shift \impl{?<<?}\\ 616 \lstinline$?>>?$ & right shift \impl{?>>?}\\ 617 \lstinline$?<?$ & less than \impl{?<?}\\ 618 \lstinline$?<=?$ & less than or equal \impl{?<=?}\\ 619 \lstinline$?>=?$ & greater than or equal \impl{?>=?}\\ 620 \lstinline$?>?$ & greater than \impl{?>?}\\ 621 \lstinline$?==?$ & equality \impl{?==?}\\ 622 \lstinline$?!=?$ & inequality \impl{?"!=?}\\ 623 \lstinline$?&?$ & bitwise AND \impl{?&?}\\ 624 \end{tabular}\hfil 625 \begin{tabular}[t]{ll} 626 %identifier & operation \\ \hline 627 \lstinline$?^?$ & exclusive OR \impl{?^?}\\ 628 \lstinline$?|?$ & inclusive OR \impl{?"|?}\\ 629 \lstinline$?=?$ & simple assignment \impl{?=?}\\ 630 \lstinline$?*=?$ & multiplication assignment \impl{?*=?}\\ 631 \lstinline$?/=?$ & division assignment \impl{?/=?}\\ 632 \lstinline$?%=?$ & remainder assignment \impl{?%=?}\\ 633 \lstinline$?+=?$ & addition assignment \impl{?+=?}\\ 634 \lstinline$?-=?$ & subtraction assignment \impl{?-=?}\\ 635 \lstinline$?<<=?$ & left-shift assignment \impl{?<<=?}\\ 636 \lstinline$?>>=?$ & right-shift assignment \impl{?>>=?}\\ 637 \lstinline$?&=?$ & bitwise AND assignment \impl{?&=?}\\ 638 \lstinline$?^=?$ & exclusive OR assignment \impl{?^=?}\\ 639 \lstinline$?|=?$ & inclusive OR assignment \impl{?"|=?}\\ 640 \end{tabular} 641 \hfil 642 \caption{Operator Identifiers} 643 \label{opids} 644 \end{table} 645 646 \begin{rationale} 647 Operator identifiers are made up of the characters of the operator token, with question marks added 648 to mark the positions of the arguments of operators. The question marks serve as mnemonic devices; 649 programmers can not create new operators by arbitrarily mixing question marks and other 650 non-alphabetic characters. Note that prefix and postfix versions of the increment and decrement 651 operators are distinguished by the position of the question mark. 652 \end{rationale} 653 654 \begin{rationale} 655 The use of ``\lstinline$?$'' in identifiers means that some C programs are not \CFA programs. For 656 instance, the sequence of characters ``\lstinline$(i < 0)?--i:i$'' is legal in a C program, but a 657 \CFA compiler detects a syntax error because it treats ``\lstinline$?--$'' as an identifier, not 658 as the two tokens ``\lstinline$?$'' and ``\lstinline$--$''. 659 \end{rationale} 660 661 \begin{rationale} 662 Certain operators \emph{cannot} be defined by the programmer: 663 \begin{itemize} 664 \item 665 The logical operators ``\lstinline$&&$'' and ``\lstinline$||$'', and the conditional operator 666 ``\lstinline$?:$''. These operators do not always evaluate their operands, and hence can not be 667 properly defined by functions unless some mechanism like call-by-name is added to the language. 668 Note that the definitions of ``\lstinline$&&$'' and ``\lstinline$||$'' say that they work by 669 checking that their arguments are unequal to 0, so defining ``\lstinline$!=$'' and ``\lstinline$0$'' 670 for user-defined types is enough to allow them to be used in logical expressions. 671 672 \item 673 The comma operator\index{comma expression}. It is a control-flow operator like those above. 674 Changing its meaning seems pointless and confusing. 675 676 \item 677 The ``address of'' operator. It would seem useful to define a unary ``\lstinline$&$'' operator that 678 returns values of some programmer-defined pointer-like type. The problem lies with the type of the 679 operator. Consider the expression ``\lstinline$p = &x$'', where \lstinline$x$ is of type 680 \lstinline$T$ and \lstinline$p$ has the programmer-defined type \lstinline$T_ptr$. The expression 681 might be treated as a call to the unary function ``\lstinline$&?$''. Now what is the type of the 682 function's parameter? It can not be \lstinline$T$, because then \lstinline$x$ would be passed by 683 value, and there is no way to create a useful pointer-like result from a value. Hence the parameter 684 must have type \lstinline$T *$. But then the expression must be rewritten as ``\lstinline$p = &?( &x )$'' 685 ---which doesn't seem like progress! 686 687 The rule for address-of expressions would have to be something like ``keep applying address-of 688 functions until you get one that takes a pointer argument, then use the built-in operator and 689 stop''. It seems simpler to define a conversion function from \lstinline$T *$ to \lstinline$T_ptr$. 690 691 \item 692 The \lstinline$sizeof$ operator. It is already defined for every object type, and intimately tied 693 into the language's storage allocation model. Redefining it seems pointless. 694 695 \item 696 The ``member of'' operators ``\lstinline$.$'' and ``\lstinline$->$''. These are not really infix 697 operators, since their right ``operand'' is not a value or object. 698 699 \item 700 Cast operators\index{cast expression}. Anything that can be done with an explicit cast can be done 701 with a function call. The difference in syntax is small. 702 \end{itemize} 703 \end{rationale} 704 705 706 \section{Expressions} 707 708 \CFA allows operators and identifiers to be overloaded. Hence, each expression can have a number 709 of \define{interpretation}s, each of which has a different type. The interpretations that are 710 potentially executable are called \define{valid interpretation}s. The set of interpretations 711 depends on the kind of expression and on the interpretations of the subexpressions that it contains. 712 The rules for determining the valid interpretations of an expression are discussed below for each 713 kind of expression. Eventually the context of the outermost expression chooses one interpretation 714 of that expression. 715 716 An \define{ambiguous interpretation} is an interpretation which does not specify the exact object or 717 function denoted by every identifier in the expression. An expression can have some interpretations 718 that are ambiguous and others that are unambiguous. An expression that is chosen to be executed 719 shall not be ambiguous. 720 721 The \define{best valid interpretations} are the valid interpretations that use the fewest 722 unsafe\index{unsafe conversion} conversions. Of these, the best are those where the functions and 723 objects involved are the least polymorphic\index{less polymorphic}. Of these, the best have the 724 lowest total \Index{conversion cost}, including all implicit conversions in the argument 725 expressions. Of these, the best have the highest total conversion cost for the implicit conversions 726 (if any) applied to the argument expressions. If there is no single best valid interpretation, or if 727 the best valid interpretation is ambiguous, then the resulting interpretation is 728 ambiguous\index{ambiguous interpretation}. 729 730 \begin{rationale} 731 \CFA's rules for selecting the best interpretation are designed to allow overload resolution to 732 mimic C's operator semantics. In C, the ``usual arithmetic conversions'' are applied to the 733 operands of binary operators if necessary to convert the operands to types with a common real type. 734 In \CFA, those conversions are ``safe''. The ``fewest unsafe conversions'' rule ensures that the 735 usual conversions are done, if possible. The ``lowest total expression cost'' rule chooses the 736 proper common type. The odd-looking ``highest argument conversion cost'' rule ensures that, when 737 unary expressions must be converted, conversions of function results are preferred to conversion of 738 function arguments: \lstinline$(double)-i$ will be preferred to \lstinline$-(double)i$. 739 740 The ``least polymorphic'' rule reduces the number of polymorphic function calls, since such 741 functions are presumably more expensive than monomorphic functions and since the more specific 742 function is presumably more appropriate. It also gives preference to monomorphic values (such as the 743 \lstinline$int$ \lstinline$0$) over polymorphic values (such as the \Index{null pointer} 744 \lstinline$0$\use{0}). However, interpretations that call polymorphic functions are preferred to 745 interpretations that perform unsafe conversions, because those conversions potentially lose accuracy 746 or violate strong typing. 747 748 There are two notable differences between \CFA's overload resolution rules and the rules for 749 {\CC} defined in \cite{c++}. First, the result type of a function plays a role. In {\CC}, a 750 function call must be completely resolved based on the arguments to the call in most circumstances. 751 In \CFA, a function call may have several interpretations, each with a different result type, and 752 the interpretations of the containing context choose among them. Second, safe conversions are used 753 to choose among interpretations of all sorts of functions; in {\CC}, the ``usual arithmetic 754 conversions'' are a separate set of rules that apply only to the built-in operators. 755 \end{rationale} 756 757 Expressions involving certain operators\index{operator identifiers} are considered to be equivalent 758 to function calls. A transformation from ``operator'' syntax to ``function call'' syntax is defined 759 by \define{rewrite rules}. Each operator has a set of predefined functions that overload its 760 identifier. Overload resolution determines which member of the set is executed in a given 761 expression. The functions have \Index{internal linkage} and are implicitly declared with \Index{file 762 scope}. The predefined functions and rewrite rules are discussed below for each of these 763 operators. 764 \begin{rationale} 765 Predefined functions and constants have internal linkage because that simplifies optimization in 766 traditional compile-and-link environments. For instance, ``\lstinline$an_int + an_int$'' is 767 equivalent to ``\lstinline$?+?(an_int, an_int)$''. If integer addition has not been redefined in 768 the current scope, a compiler can generate code to perform the addition directly. If predefined 769 functions had external linkage, this optimization would be difficult. 770 \end{rationale} 771 772 \begin{rationale} 773 Since each subsection describes the interpretations of an expression in terms of the interpretations 774 of its subexpressions, this chapter can be taken as describing an overload resolution algorithm that 775 uses one bottom-up pass over an expression tree. Such an algorithm was first described (for Ada) by 776 Baker~\cite{Bak:overload}. It is extended here to handle polymorphic functions and arithmetic 777 conversions. The overload resolution rules and the predefined functions have been chosen so that, in 778 programs that do not introduce overloaded declarations, expressions will have the same meaning in C 779 and in \CFA. 780 \end{rationale} 781 782 \begin{rationale} 783 Expression syntax is quoted from the {\c11} standard. The syntax itself defines the precedence and 784 associativity of operators. The sections are arranged in decreasing order of precedence, with all 785 operators in a section having the same precedence. 786 \end{rationale} 787 788 789 \subsection{Primary expressions} 790 791 \begin{syntax} 792 \lhs{primary-expression} 793 \rhs \nonterm{identifier} 794 \rhs \nonterm{constant} 795 \rhs \nonterm{string-literal} 796 \rhs \lstinline$($ \nonterm{expression} \lstinline$)$ 797 \rhs \nonterm{generic-selection} 798 \end{syntax} 799 800 \predefined 801 \begin{lstlisting} 802 const int 1;@\use{1}@ 803 const int 0;@\use{0}@ 804 forall( dtype DT ) DT *const 0; 805 forall( ftype FT ) FT *const 0; 806 \end{lstlisting} 807 808 \semantics 809 The \Index{valid interpretation} of an \nonterm{identifier} are given by the visible\index{visible} 810 declarations of the identifier. 811 812 A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type 813 and value defined by {\c11}. The predefined integer identifiers ``\lstinline$1$'' and 814 ``\lstinline$0$'' have the integer values 1 and 0, respectively. The other two predefined 815 ``\lstinline$0$'' identifiers are bound to polymorphic pointer values that, when 816 specialized\index{specialization} with a data type or function type respectively, produce a null 817 pointer of that type. 818 819 A parenthesised expression has the same interpretations as the contained \nonterm{expression}. 820 821 \examples 822 The expression \lstinline$(void *)0$\use{0} specializes the (polymorphic) null pointer to a null 823 pointer to \lstinline$void$. \lstinline$(const void *)0$ does the same, and also uses a safe 824 conversion from \lstinline$void *$ to \lstinline$const void *$. In each case, the null pointer 825 conversion is better\index{best valid interpretations} than the unsafe conversion of the integer 826 \lstinline$0$ to a pointer. 827 828 \begin{rationale} 829 Note that the predefined identifiers have addresses. 830 831 \CFA does not have C's concept of ``null pointer constants'', which are not typed values but 832 special strings of tokens. The C token ``\lstinline$0$'' is an expression of type \lstinline$int$ 833 with the value ``zero'', and it \emph{also} is a null pointer constant. Similarly, 834 ``\lstinline$(void *)0$ is an expression of type \lstinline$(void *)$ whose value is a null pointer, 835 and it also is a null pointer constant. However, in C, ``\lstinline$(void *)(void *)0$'' is 836 \emph{not} a null pointer constant, even though it is null-valued, a pointer, and constant! The 837 semantics of C expressions contain many special cases to deal with subexpressions that are null 838 pointer constants. 839 840 \CFA handles these cases through overload resolution. The declaration 841 \begin{lstlisting} 842 forall( dtype DT ) DT *const 0; 843 \end{lstlisting} 844 means that \lstinline$0$ is a polymorphic object, and contains a value that can have \emph{any} 845 pointer-to-object type or pointer-to-incomplete type. The only such value is the null pointer. 846 Therefore the type \emph{alone} is enough to identify a null pointer. Where C defines an operator 847 with a special case for the null pointer constant, \CFA defines predefined functions with a 848 polymorphic object parameter. 849 \end{rationale} 850 851 852 \subsubsection{Generic selection} 853 854 \constraints The best interpretation of the controlling expression shall be 855 unambiguous\index{ambiguous interpretation}, and shall have type compatible with at most one of the 856 types named in its generic association list. If a generic selection has no \lstinline$default$ 857 generic association, the best interpretation of its controlling expression shall have type 858 compatible with exactly one of the types named in its generic association list. 859 860 \semantics 861 A generic selection has the same interpretations as its result expression. 862 863 864 \subsection{Postfix operators} 865 866 \begin{syntax} 867 \lhs{postfix-expression} 868 \rhs \nonterm{primary-expression} 869 \rhs \nonterm{postfix-expression} \lstinline$[$ \nonterm{expression} \lstinline$]$ 870 \rhs \nonterm{postfix-expression} \lstinline$($ 871 \nonterm{argument-expression-list}\opt \lstinline$)$ 872 \rhs \nonterm{postfix-expression} \lstinline$.$ \nonterm{identifier} 873 \rhs \nonterm{postfix-expression} \lstinline$->$ \nonterm{identifier} 874 \rhs \nonterm{postfix-expression} \lstinline$++$ 875 \rhs \nonterm{postfix-expression} \lstinline$--$ 876 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$}$ 877 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$,$ \lstinline$}$ 878 \lhs{argument-expression-list} 879 \rhs \nonterm{assignment-expression} 880 \rhs \nonterm{argument-expression-list} \lstinline$,$ 881 \nonterm{assignment-expression} 882 \end{syntax} 883 884 \rewriterules 885 \begin{lstlisting} 886 a[b] @\rewrite@ ?[?]( b, a ) // if a has integer type */@\use{?[?]}@ 887 a[b] @\rewrite@ ?[?]( a, b ) // otherwise 888 a( ${\em arguments }$ ) @\rewrite@ ?()( a, ${\em arguments} )$@\use{?()}@ 889 a++ @\rewrite@ ?++(&( a ))@\use{?++}@ 890 a-- @\rewrite@ ?--(&( a ))@\use{?--}@ 891 \end{lstlisting} 892 893 894 \subsubsection{Array subscripting} 895 896 \predefined 897 \begin{lstlisting} 898 forall( type T ) lvalue T ?[?]( T *, ptrdiff_t );@\use{ptrdiff_t}@ 899 forall( type T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t ); 900 forall( type T ) lvalue const T ?[?]( const T *, ptrdiff_t ); 901 forall( type T ) lvalue restrict T ?[?]( restrict T *, ptrdiff_t ); 902 forall( type T ) lvalue volatile T ?[?]( volatile T *, ptrdiff_t ); 903 forall( type T ) lvalue _Atomic const T ?[?]( _Atomic const T *, ptrdiff_t ); 904 forall( type T ) lvalue _Atomic restrict T ?[?]( _Atomic restrict T *, ptrdiff_t ); 905 forall( type T ) lvalue _Atomic volatile T ?[?]( _Atomic volatile T *, ptrdiff_t ); 906 forall( type T ) lvalue const restrict T ?[?]( const restrict T *, ptrdiff_t ); 907 forall( type T ) lvalue const volatile T ?[?]( const volatile T *, ptrdiff_t ); 908 forall( type T ) lvalue restrict volatile T ?[?]( restrict volatile T *, ptrdiff_t ); 909 forall( type T ) lvalue _Atomic const restrict T ?[?]( _Atomic const restrict T *, ptrdiff_t ); 910 forall( type T ) lvalue _Atomic const volatile T ?[?]( _Atomic const volatile T *, ptrdiff_t ); 911 forall( type T ) lvalue _Atomic restrict volatile T ?[?]( _Atomic restrict volatile T *, ptrdiff_t ); 912 forall( type T ) lvalue const restrict volatile T ?[?]( const restrict volatile T *, ptrdiff_t ); 913 forall( type T ) lvalue _Atomic const restrict volatile T ?[?]( _Atomic const restrict volatile T *, ptrdiff_t ); 914 \end{lstlisting} 915 \semantics 916 The interpretations of subscript expressions are the interpretations of the corresponding function 917 call expressions. 918 \begin{rationale} 919 C defines subscripting as pointer arithmetic in a way that makes \lstinline$a[i]$ and 920 \lstinline$i[a]$ equivalent. \CFA provides the equivalence through a rewrite rule to reduce the 921 number of overloadings of \lstinline$?[?]$. 922 923 Subscript expressions are rewritten as function calls that pass the first parameter by value. This 924 is somewhat unfortunate, since array-like types tend to be large. The alternative is to use the 925 rewrite rule ``\lstinline$a[b]$ \rewrite \lstinline$?[?](&(a), b)$''. However, C semantics forbid 926 this approach: the \lstinline$a$ in ``\lstinline$a[b]$'' can be an arbitrary pointer value, which 927 does not have an address. 928 929 The repetitive form of the predefined identifiers shows up a deficiency\index{deficiencies!pointers 930 to qualified types} of \CFA's type system. Type qualifiers are not included in type values, so 931 polymorphic functions that take pointers to arbitrary types often come in one flavor for each 932 possible qualification of the pointed-at type. 933 \end{rationale} 934 935 936 \subsubsection{Function calls} 937 938 \semantics 939 A \define{function designator} is an interpretation of an expression that has function type. The 940 \nonterm{postfix-expression} in a function call may have some interpretations that are function 941 designators and some that are not. 942 943 For those interpretations of the \nonterm{postfix-expression} that are not function designators, the 944 expression is rewritten and becomes a call of a function named ``\lstinline$?()$''. The valid 945 interpretations of the rewritten expression are determined in the manner described below. 946 947 Each combination of function designators and argument interpretations is considered. For those 948 interpretations of the \nonterm{postfix-expression} that are \Index{monomorphic function} 949 designators, the combination has a \Index{valid interpretation} if the function designator accepts 950 the number of arguments given, and each argument interpretation matches the corresponding explicit 951 parameter: 952 \begin{itemize} 953 \item 954 if the argument corresponds to a parameter in the function designator's prototype, the argument 955 interpretation must have the same type as the corresponding parameter, or be implicitly convertible 956 to the parameter's type 957 \item 958 if the function designator's type does not include a prototype or if the argument corresponds to 959 ``\lstinline$...$'' in a prototype, a \Index{default argument promotion} is applied to it. 960 \end{itemize} 961 The type of the valid interpretation is the return type of the function designator. 962 963 For those combinations where the interpretation of the \nonterm{postfix-expression} is a 964 \Index{polymorphic function} designator and the function designator accepts the number of arguments 965 given, there shall be at least one set of \define{implicit argument}s for the implicit parameters 966 such that 967 \begin{itemize} 968 \item 969 If the declaration of the implicit parameter uses \Index{type-class} \lstinline$type$\use{type}, the 970 implicit argument must be an object type; if it uses \lstinline$dtype$, the implicit argument must 971 be an object type or an incomplete type; and if it uses \lstinline$ftype$, the implicit argument 972 must be a function type. 973 974 \item 975 if an explicit parameter's type uses any implicit parameters, then the corresponding explicit 976 argument must have a type that is (or can be safely converted\index{safe conversion} to) the type 977 produced by substituting the implicit arguments for the implicit parameters in the explicit 978 parameter type. 979 980 \item 981 the remaining explicit arguments must match the remaining explicit parameters, as described for 982 monomorphic function designators. 983 984 \item 985 for each \Index{assertion parameter} in the function designator's type, there must be an object or 986 function with the same identifier that is visible at the call site and whose type is compatible with 987 or can be specialized to the type of the assertion declaration. 988 \end{itemize} 989 There is a valid interpretation for each such set of implicit parameters. The type of each valid 990 interpretation is the return type of the function designator with implicit parameter values 991 substituted for the implicit arguments. 992 993 A valid interpretation is ambiguous\index{ambiguous interpretation} if the function designator or 994 any of the argument interpretations is ambiguous. 995 996 Every valid interpretation whose return type is not compatible with any other valid interpretation's 997 return type is an interpretation of the function call expression. 998 999 Every set of valid interpretations that have mutually compatible\index{compatible type} result types 1000 also produces an interpretation of the function call expression. The type of the interpretation is 1001 the \Index{composite type} of the types of the valid interpretations, and the value of the 1002 interpretation is that of the \Index{best valid interpretation}. 1003 \begin{rationale} 1004 One desirable property of a polymorphic programming language is \define{generalizability}: the 1005 ability to replace an abstraction with a more general but equivalent abstraction without requiring 1006 changes in any of the uses of the original\cite{Cormack90}. For instance, it should be possible to 1007 replace a function ``\lstinline$int f( int );$'' with ``\lstinline$forall( type T ) T f( T );$'' 1008 without affecting any calls of \lstinline$f$. 1009 1010 \CFA\index{deficiencies!generalizability} does not fully possess this property, because 1011 \Index{unsafe conversion} are not done when arguments are passed to polymorphic parameters. 1012 Consider 1013 \begin{lstlisting} 1014 float g( float, float ); 1015 int i; 1016 float f; 1017 double d; 1018 f = g( f, f ); // (1) 1019 f = g( i, f ); // (2) (safe conversion to float) 1020 f = g( d, f ); // (3) (unsafe conversion to float) 1021 \end{lstlisting} 1022 If \lstinline$g$ was replaced by ``\lstinline$forall( type T ) T g( T, T );$'', the first and second 1023 calls would be unaffected, but the third would change: \lstinline$f$ would be converted to 1024 \lstinline$double$, and the result would be a \lstinline$double$. 1025 1026 Another example is the function ``\lstinline$void h( int *);$''. This function can be passed a 1027 \lstinline$void *$ argument, but the generalization ``\lstinline$forall( type T ) void h( T *);$'' 1028 can not. In this case, \lstinline$void$ is not a valid value for \lstinline$T$ because it is not an 1029 object type. If unsafe conversions were allowed, \lstinline$T$ could be inferred to be \emph{any} 1030 object type, which is undesirable. 1031 \end{rationale} 1032 1033 \examples 1034 A function called ``\lstinline$?()$'' might be part of a numerical differentiation package. 1035 \begin{lstlisting} 1036 extern type Derivative; 1037 extern double ?()( Derivative, double ); 1038 extern Derivative derivative_of( double (*f)( double ) ); 1039 extern double sin( double ); 1040 1041 Derivative sin_dx = derivative_of( sin ); 1042 double d; 1043 d = sin_dx( 12.9 ); 1044 \end{lstlisting} 1045 Here, the only interpretation of \lstinline$sin_dx$ is as an object of type \lstinline$Derivative$. 1046 For that interpretation, the function call is treated as ``\lstinline$?()( sin_dx, 12.9 )$''. 1047 \begin{lstlisting} 1048 int f( long ); // (1) 1049 int f( int, int ); // (2) 1050 int f( int *); // (3) 1051 1052 int i = f( 5 ); // calls (1) 1053 \end{lstlisting} 1054 Function (1) provides a valid interpretation of ``\lstinline$f( 5 )$'', using an implicit 1055 \lstinline$int$ to \lstinline$long$ conversion. The other functions do not, since the second 1056 requires two arguments, and since there is no implicit conversion from \lstinline$int$ to 1057 \lstinline$int *$ that could be used with the third function. 1058 1059 \begin{lstlisting} 1060 forall( type T ) T h( T ); 1061 double d = h( 1.5 ); 1062 \end{lstlisting} 1063 ``\lstinline$1.5$'' is a \lstinline$double$ constant, so \lstinline$T$ is inferred to be 1064 \lstinline$double$, and the result of the function call is a \lstinline$double$. 1065 1066 \begin{lstlisting} 1067 forall( type T, type U ) void g( T, U ); // (4) 1068 forall( type T ) void g( T, T ); // (5) 1069 forall( type T ) void g( T, long ); // (6) 1070 void g( long, long ); // (7) 1071 double d; 1072 int i; 1073 int *p; 1074 1075 g( d, d ); // calls (5) 1076 g( d, i ); // calls (6) 1077 g( i, i ); // calls (7) 1078 g( i, p ); // calls (4) 1079 \end{lstlisting} 1080 The first call has valid interpretations for all four versions of \lstinline$g$. (6) and (7) are 1081 discarded because they involve unsafe \lstinline$double$-to-\lstinline$long$ conversions. (5) is 1082 chosen because it is less polymorphic than (4). 1083 1084 For the second call, (7) is again discarded. Of the remaining interpretations for (4), (5), and (6) 1085 (with \lstinline$i$ converted to \lstinline$long$), (6) is chosen because it is the least 1086 polymorphic. 1087 1088 The third call has valid interpretations for all of the functions; (7) is chosen since it is not 1089 polymorphic at all. 1090 1091 The fourth call has no interpretation for (5), because its arguments must have compatible type. (4) 1092 is chosen because it does not involve unsafe conversions. 1093 \begin{lstlisting} 1094 forall( type T ) T min( T, T ); 1095 double max( double, double ); 1096 context min_max( T ) {@\impl{min_max}@ 1097 T min( T, T ); 1098 T max( T, T ); 1099 } 1100 forall( type U | min_max( U ) ) void shuffle( U, U ); 1101 shuffle(9, 10); 1102 \end{lstlisting} 1103 The only possibility for \lstinline$U$ is \lstinline$double$, because that is the type used in the 1104 only visible \lstinline$max$ function. 9 and 10 must be converted to \lstinline$double$, and 1105 \lstinline$min$ must be specialized with \lstinline$T$ bound to \lstinline$double$. 1106 \begin{lstlisting} 1107 extern void q( int ); // (8) 1108 extern void q( void * ); // (9) 1109 extern void r(); 1110 q( 0 ); 1111 r( 0 ); 1112 \end{lstlisting} 1113 The \lstinline$int 0$ could be passed to (8), or the \lstinline$(void *)$ \Index{specialization} of 1114 the null pointer\index{null pointer} \lstinline$0$\use{0} could be passed to (9). The former is 1115 chosen because the \lstinline$int$ \lstinline$0$ is \Index{less polymorphic}. For 1116 the same reason, \lstinline$int$ \lstinline$0$ is passed to \lstinline$r()$, even though it has 1117 \emph{no} declared parameter types. 1118 1119 1120 \subsubsection{Structure and union members} 1121 1122 \semantics In the member selection expression ``\lstinline$s$.\lstinline$m$'', there shall be at 1123 least one interpretation of \lstinline$s$ whose type is a structure type or union type containing a 1124 member named \lstinline$m$. If two or more interpretations of \lstinline$s$ have members named 1125 \lstinline$m$ with mutually compatible types, then the expression has an \Index{ambiguous 1126 interpretation} whose type is the composite type of the types of the members. If an interpretation 1127 of \lstinline$s$ has a member \lstinline$m$ whose type is not compatible with any other 1128 \lstinline$s$'s \lstinline$m$, then the expression has an interpretation with the member's type. The 1129 expression has no other interpretations. 1130 1131 The expression ``\lstinline$p->m$'' has the same interpretations as the expression 1132 ``\lstinline$(*p).m$''. 1133 1134 1135 \subsubsection{Postfix increment and decrement operators} 1136 1137 \predefined 1138 \begin{lstlisting} 1139 _Bool ?++( volatile _Bool * ), 1140 ?++( _Atomic volatile _Bool * ); 1141 char ?++( volatile char * ), 1142 ?++( _Atomic volatile char * ); 1143 signed char ?++( volatile signed char * ), 1144 ?++( _Atomic volatile signed char * ); 1145 unsigned char ?++( volatile signed char * ), 1146 ?++( _Atomic volatile signed char * ); 1147 short int ?++( volatile short int * ), 1148 ?++( _Atomic volatile short int * ); 1149 unsigned short int ?++( volatile unsigned short int * ), 1150 ?++( _Atomic volatile unsigned short int * ); 1151 int ?++( volatile int * ), 1152 ?++( _Atomic volatile int * ); 1153 unsigned int ?++( volatile unsigned int * ), 1154 ?++( _Atomic volatile unsigned int * ); 1155 long int ?++( volatile long int * ), 1156 ?++( _Atomic volatile long int * ); 1157 long unsigned int ?++( volatile long unsigned int * ), 1158 ?++( _Atomic volatile long unsigned int * ); 1159 long long int ?++( volatile long long int * ), 1160 ?++( _Atomic volatile long long int * ); 1161 long long unsigned ?++( volatile long long unsigned int * ), 1162 ?++( _Atomic volatile long long unsigned int * ); 1163 float ?++( volatile float * ), 1164 ?++( _Atomic volatile float * ); 1165 double ?++( volatile double * ), 1166 ?++( _Atomic volatile double * ); 1167 long double ?++( volatile long double * ), 1168 ?++( _Atomic volatile long double * ); 1169 1170 forall( type T ) T * ?++( T * restrict volatile * ), 1171 * ?++( T * _Atomic restrict volatile * ); 1172 1173 forall( type T ) _Atomic T * ?++( _Atomic T * restrict volatile * ), 1174 * ?++( _Atomic T * _Atomic restrict volatile * ); 1175 1176 forall( type T ) const T * ?++( const T * restrict volatile * ), 1177 * ?++( const T * _Atomic restrict volatile * ); 1178 1179 forall( type T ) volatile T * ?++( volatile T * restrict volatile * ), 1180 * ?++( volatile T * _Atomic restrict volatile * ); 1181 1182 forall( type T ) restrict T * ?++( restrict T * restrict volatile * ), 1183 * ?++( restrict T * _Atomic restrict volatile * ); 1184 1185 forall( type T ) _Atomic const T * ?++( _Atomic const T * restrict volatile * ), 1186 * ?++( _Atomic const T * _Atomic restrict volatile * ); 1187 1188 forall( type T ) _Atomic restrict T * ?++( _Atomic restrict T * restrict volatile * ), 1189 * ?++( _Atomic restrict T * _Atomic restrict volatile * ); 1190 1191 forall( type T ) _Atomic volatile T * ?++( _Atomic volatile T * restrict volatile * ), 1192 * ?++( _Atomic volatile T * _Atomic restrict volatile * ); 1193 1194 forall( type T ) const restrict T * ?++( const restrict T * restrict volatile * ), 1195 * ?++( const restrict T * _Atomic restrict volatile * ); 1196 1197 forall( type T ) const volatile T * ?++( const volatile T * restrict volatile * ), 1198 * ?++( const volatile T * _Atomic restrict volatile * ); 1199 1200 forall( type T ) restrict volatile T * ?++( restrict volatile T * restrict volatile * ), 1201 * ?++( restrict volatile T * _Atomic restrict volatile * ); 1202 1203 forall( type T ) _Atomic const restrict T * ?++( _Atomic const restrict T * restrict volatile * ), 1204 * ?++( _Atomic const restrict T * _Atomic restrict volatile * ); 1205 1206 forall( type T ) _Atomic const volatile T * ?++( _Atomic const volatile T * restrict volatile * ), 1207 * ?++( _Atomic const volatile T * _Atomic restrict volatile * ); 1208 1209 forall( type T ) _Atomic restrict volatile T * ?++( _Atomic restrict volatile T * restrict volatile * ), 1210 * ?++( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1211 1212 forall( type T ) const restrict volatile T * ?++( const restrict volatile T * restrict volatile * ), 1213 * ?++( const restrict volatile T * _Atomic restrict volatile * ); 1214 1215 forall( type T ) _Atomic const restrict volatile T * ?++( _Atomic const restrict volatile T * restrict volatile * ), 1216 * ?++( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1217 1218 _Bool ?--( volatile _Bool * ), 1219 ?--( _Atomic volatile _Bool * ); 1220 char ?--( volatile char * ), 1221 ?--( _Atomic volatile char * ); 1222 signed char ?--( volatile signed char * ), 1223 ?--( _Atomic volatile signed char * ); 1224 unsigned char ?--( volatile signed char * ), 1225 ?--( _Atomic volatile signed char * ); 1226 short int ?--( volatile short int * ), 1227 ?--( _Atomic volatile short int * ); 1228 unsigned short int ?--( volatile unsigned short int * ), 1229 ?--( _Atomic volatile unsigned short int * ); 1230 int ?--( volatile int * ), 1231 ?--( _Atomic volatile int * ); 1232 unsigned int ?--( volatile unsigned int * ), 1233 ?--( _Atomic volatile unsigned int * ); 1234 long int ?--( volatile long int * ), 1235 ?--( _Atomic volatile long int * ); 1236 long unsigned int ?--( volatile long unsigned int * ), 1237 ?--( _Atomic volatile long unsigned int * ); 1238 long long int ?--( volatile long long int * ), 1239 ?--( _Atomic volatile long long int * ); 1240 long long unsigned ?--( volatile long long unsigned int * ), 1241 ?--( _Atomic volatile long long unsigned int * ); 1242 float ?--( volatile float * ), 1243 ?--( _Atomic volatile float * ); 1244 double ?--( volatile double * ), 1245 ?--( _Atomic volatile double * ); 1246 long double ?--( volatile long double * ), 1247 ?--( _Atomic volatile long double * ); 1248 1249 forall( type T ) T * ?--( T * restrict volatile * ), 1250 * ?--( T * _Atomic restrict volatile * ); 1251 1252 forall( type T ) _Atomic T * ?--( _Atomic T * restrict volatile * ), 1253 * ?--( _Atomic T * _Atomic restrict volatile * ); 1254 1255 forall( type T ) const T * ?--( const T * restrict volatile * ), 1256 * ?--( const T * _Atomic restrict volatile * ); 1257 1258 forall( type T ) volatile T * ?--( volatile T * restrict volatile * ), 1259 * ?--( volatile T * _Atomic restrict volatile * ); 1260 1261 forall( type T ) restrict T * ?--( restrict T * restrict volatile * ), 1262 * ?--( restrict T * _Atomic restrict volatile * ); 1263 1264 forall( type T ) _Atomic const T * ?--( _Atomic const T * restrict volatile * ), 1265 * ?--( _Atomic const T * _Atomic restrict volatile * ); 1266 1267 forall( type T ) _Atomic restrict T * ?--( _Atomic restrict T * restrict volatile * ), 1268 * ?--( _Atomic restrict T * _Atomic restrict volatile * ); 1269 1270 forall( type T ) _Atomic volatile T * ?--( _Atomic volatile T * restrict volatile * ), 1271 * ?--( _Atomic volatile T * _Atomic restrict volatile * ); 1272 1273 forall( type T ) const restrict T * ?--( const restrict T * restrict volatile * ), 1274 * ?--( const restrict T * _Atomic restrict volatile * ); 1275 1276 forall( type T ) const volatile T * ?--( const volatile T * restrict volatile * ), 1277 * ?--( const volatile T * _Atomic restrict volatile * ); 1278 1279 forall( type T ) restrict volatile T * ?--( restrict volatile T * restrict volatile * ), 1280 * ?--( restrict volatile T * _Atomic restrict volatile * ); 1281 1282 forall( type T ) _Atomic const restrict T * ?--( _Atomic const restrict T * restrict volatile * ), 1283 * ?--( _Atomic const restrict T * _Atomic restrict volatile * ); 1284 1285 forall( type T ) _Atomic const volatile T * ?--( _Atomic const volatile T * restrict volatile * ), 1286 * ?--( _Atomic const volatile T * _Atomic restrict volatile * ); 1287 1288 forall( type T ) _Atomic restrict volatile T * ?--( _Atomic restrict volatile T * restrict volatile * ), 1289 * ?--( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1290 1291 forall( type T ) const restrict volatile T * ?--( const restrict volatile T * restrict volatile * ), 1292 * ?--( const restrict volatile T * _Atomic restrict volatile * ); 1293 1294 forall( type T ) _Atomic const restrict volatile T * ?--( _Atomic const restrict volatile T * restrict volatile * ), 1295 * ?--( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1296 \end{lstlisting} 1297 For every extended integer type \lstinline$X$ there exist 1298 % Don't use predefined: keep this out of prelude.cf. 1299 \begin{lstlisting} 1300 X ?++( volatile X * ), ?++( _Atomic volatile X * ), 1301 ?--( volatile X * ), ?--( _Atomic volatile X * ); 1302 \end{lstlisting} 1303 For every complete enumerated type \lstinline$E$ there exist 1304 % Don't use predefined: keep this out of prelude.cf. 1305 \begin{lstlisting} 1306 E ?++( volatile E * ), ?++( _Atomic volatile E * ), 1307 ?--( volatile E * ), ?--( _Atomic volatile E * ); 1308 \end{lstlisting} 1309 1310 \begin{rationale} 1311 Note that ``\lstinline$++$'' and ``\lstinline$--$'' are rewritten as function calls that are given a 1312 pointer to that operand. (This is true of all operators that modify an operand.) As Hamish Macdonald 1313 has pointed out, this forces the modified operand of such expressions to be an lvalue. This 1314 partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues. 1315 \end{rationale} 1316 1317 \begin{rationale} 1318 In C, a semantic rule requires that pointer operands of increment and decrement be pointers to 1319 object types. Hence, \lstinline$void *$ objects cannot be incremented. In \CFA, the restriction 1320 follows from the use of a \lstinline$type$ parameter in the predefined function definitions, as 1321 opposed to \lstinline$dtype$, since only object types can be inferred arguments corresponding to the 1322 type parameter \lstinline$T$. 1323 \end{rationale} 1324 1325 \semantics 1326 First, each interpretation of the operand of an increment or decrement expression is considered 1327 separately. For each interpretation that is a bit-field or is declared with the 1328 \lstinline$register$\index{register@{\lstinline$register$}} \index{Itorage-class specifier}, the 1329 expression has one valid interpretation, with the type of the operand, and the expression is 1330 ambiguous if the operand is. 1331 1332 For the remaining interpretations, the expression is rewritten, and the interpretations of the 1333 expression are the interpretations of the corresponding function call. Finally, all interpretations 1334 of the expression produced for the different interpretations of the operand are combined to produce 1335 the interpretations of the expression as a whole; where interpretations have compatible result 1336 types, the best interpretations are selected in the manner described for function call expressions. 1337 1338 \examples 1339 \begin{lstlisting} 1340 volatile short int vs; vs++; // rewritten as ?++( &(vs) ) 1341 short int s; s++; 1342 const short int cs; cs++; 1343 _Atomic short int as; as++; 1344 \end{lstlisting} 1345 \begin{sloppypar} 1346 Since \lstinline$&(vs)$ has type \lstinline$volatile short int *$, the best valid interpretation of 1347 \lstinline$vs++$ calls the \lstinline$?++$ function with the \lstinline$volatile short *$ parameter. 1348 \lstinline$s++$ does the same, applying the safe conversion from \lstinline$short int *$ to 1349 \lstinline$volatile short int *$. Note that there is no conversion that adds an \lstinline$_Atomic$ 1350 qualifier, so the \lstinline$_Atomic volatile short int$ overloading does not provide a valid 1351 interpretation. 1352 \end{sloppypar} 1353 1354 There is no safe conversion from \lstinline$const short int *$ to \lstinline$volatile short int *$, 1355 and no \lstinline$?++$ function that accepts a \lstinline$const *$ parameter, so \lstinline$cs++$ 1356 has no valid interpretations. 1357 1358 The best valid interpretation of \lstinline$as++$ calls the \lstinline$short ?++$ function with the 1359 \lstinline$_Atomic volatile short int *$ parameter, applying a safe conversion to add the 1360 \lstinline$volatile$ qualifier. 1361 1362 \begin{lstlisting} 1363 char * const restrict volatile * restrict volatile pqpc; pqpc++ 1364 char * * restrict volatile ppc; ppc++; 1365 \end{lstlisting} 1366 Since \lstinline$&(pqpc)$ has type \lstinline$char * const restrict volatile * restrict volatile *$, 1367 the best valid interpretation of \lstinline$pqpc++$ calls the polymorphic \lstinline$?++$ function 1368 with the \lstinline$const restrict volatile T * restrict volatile *$ parameter, inferring 1369 \lstinline$T$ to be \lstinline$char *$. 1370 1371 \begin{sloppypar} 1372 \lstinline$ppc++$ calls the same function, again inferring \lstinline$T$ to be \lstinline$char *$, 1373 and using the safe conversions from \lstinline$T$ to \lstinline$T const restrict volatile$. 1374 \end{sloppypar} 1375 1376 \begin{rationale} 1377 Increment and decrement expressions show up a deficiency of \CFA's type system. There is no such 1378 thing as a pointer to a register object or bit-field\index{deficiencies!pointers to bit-fields}. 1379 Therefore, there is no way to define a function that alters them, and hence no way to define 1380 increment and decrement functions for them. As a result, the semantics of increment and decrement 1381 expressions must treat them specially. This holds true for all of the operators that may modify 1382 such objects. 1383 \end{rationale} 1384 1385 \begin{rationale} 1386 The polymorphic overloadings for pointer increment and decrement can be understood by considering 1387 increasingly complex types. 1388 \begin{enumerate} 1389 \item 1390 ``\lstinline$char * p; p++;$''. The argument to \lstinline$?++$ has type \lstinline$char * *$, and 1391 the result has type \lstinline$char *$. The expression would be valid if \lstinline$?++$ were 1392 declared by 1393 \begin{lstlisting} 1394 forall( type T ) T * ?++( T * * ); 1395 \end{lstlisting} 1396 with \lstinline$T$ inferred to be \lstinline$char$. 1397 1398 \item 1399 ``\lstinline$char *restrict volatile qp; qp++$''. The result again has type \lstinline$char *$, but 1400 the argument now has type \lstinline$char *restrict volatile *$, so it cannot be passed to the 1401 hypothetical function declared in point 1. Hence the actual predefined function is 1402 \begin{lstlisting} 1403 forall( type T ) T * ?++( T * restrict volatile * ); 1404 \end{lstlisting} 1405 which also accepts a \lstinline$char * *$ argument, because of the safe conversions that add 1406 \lstinline$volatile$ and \lstinline$restrict$ qualifiers. (The parameter is not const-qualified, so 1407 constant pointers cannot be incremented.) 1408 1409 \item 1410 ``\lstinline$char *_Atomic ap; ap++$''. The result again has type \lstinline$char *$, but no safe 1411 conversion adds an \lstinline$_Atomic$ qualifier, so the function in point 2 is not applicable. A 1412 separate overloading of \lstinline$?++$ is required. 1413 1414 \item 1415 ``\lstinline$char const volatile * pq; pq++$''. Here the result has type 1416 \lstinline$char const volatile *$, so a new overloading is needed: 1417 \begin{lstlisting} 1418 forall( type T ) T const volatile * ?++( T const volatile *restrict volatile * ); 1419 \end{lstlisting} 1420 One overloading is needed for each combination of qualifiers in the pointed-at 1421 type\index{deficiencies!pointers to qualified types}. 1422 1423 \item 1424 ``\lstinline$float *restrict * prp; prp++$''. The \lstinline$restrict$ qualifier is handled just 1425 like \lstinline$const$ and \lstinline$volatile$ in the previous case: 1426 \begin{lstlisting} 1427 forall( type T ) T restrict * ?++( T restrict *restrict volatile * ); 1428 \end{lstlisting} 1429 with \lstinline$T$ inferred to be \lstinline$float *$. This looks odd, because {\c11} contains a 1430 constraint that requires restrict-qualified types to be pointer-to-object types, and \lstinline$T$ 1431 is not syntactically a pointer type. \CFA loosens the constraint. 1432 \end{enumerate} 1433 \end{rationale} 1434 1435 1436 \subsubsection{Compound literals} 1437 1438 \semantics 1439 A compound literal has one interpretation, with the type given by the \nonterm{type-name} of the 1440 compound literal. 1441 1442 1443 \subsection{Unary operators} 1444 1445 \begin{syntax} 1446 \lhs{unary-expression} 1447 \rhs \nonterm{postfix-expression} 1448 \rhs \lstinline$++$ \nonterm{unary-expression} 1449 \rhs \lstinline$--$ \nonterm{unary-expression} 1450 \rhs \nonterm{unary-operator} \nonterm{cast-expression} 1451 \rhs \lstinline$sizeof$ \nonterm{unary-expression} 1452 \rhs \lstinline$sizeof$ \lstinline$($ \nonterm{type-name} \lstinline$)$ 1453 \lhs{unary-operator} one of \rhs \lstinline$&$ \lstinline$*$ \lstinline$+$ \lstinline$-$ \lstinline$~$ \lstinline$!$ 1454 \end{syntax} 1455 1456 \rewriterules 1457 \begin{lstlisting} 1458 *a @\rewrite@ *?(a) @\use{*?}@ 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 \end{lstlisting} 1466 1467 1468 \subsubsection{Prefix increment and decrement operators} 1469 1470 \predefined 1471 \begin{lstlisting} 1472 _Bool ++?( volatile _Bool * ), 1473 ++?( _Atomic volatile _Bool * ); 1474 char ++?( volatile char * ), 1475 ++?( _Atomic volatile char * ); 1476 signed char ++?( volatile signed char * ), 1477 ++?( _Atomic volatile signed char * ); 1478 unsigned char ++?( volatile signed char * ), 1479 ++?( _Atomic volatile signed char * ); 1480 short int ++?( volatile short int * ), 1481 ++?( _Atomic volatile short int * ); 1482 unsigned short int ++?( volatile unsigned short int * ), 1483 ++?( _Atomic volatile unsigned short int * ); 1484 int ++?( volatile int * ), 1485 ++?( _Atomic volatile int * ); 1486 unsigned int ++?( volatile unsigned int * ), 1487 ++?( _Atomic volatile unsigned int * ); 1488 long int ++?( volatile long int * ), 1489 ++?( _Atomic volatile long int * ); 1490 long unsigned int ++?( volatile long unsigned int * ), 1491 ++?( _Atomic volatile long unsigned int * ); 1492 long long int ++?( volatile long long int * ), 1493 ++?( _Atomic volatile long long int * ); 1494 long long unsigned ++?( volatile long long unsigned int * ), 1495 ++?( _Atomic volatile long long unsigned int * ); 1496 float ++?( volatile float * ), 1497 ++?( _Atomic volatile float * ); 1498 double ++?( volatile double * ), 1499 ++?( _Atomic volatile double * ); 1500 long double ++?( volatile long double * ), 1501 ++?( _Atomic volatile long double * ); 1502 1503 forall( type T ) T * ++?( T * restrict volatile * ), 1504 * ++?( T * _Atomic restrict volatile * ); 1505 1506 forall( type T ) _Atomic T * ++?( _Atomic T * restrict volatile * ), 1507 * ++?( _Atomic T * _Atomic restrict volatile * ); 1508 1509 forall( type T ) const T * ++?( const T * restrict volatile * ), 1510 * ++?( const T * _Atomic restrict volatile * ); 1511 1512 forall( type T ) volatile T * ++?( volatile T * restrict volatile * ), 1513 * ++?( volatile T * _Atomic restrict volatile * ); 1514 1515 forall( type T ) restrict T * ++?( restrict T * restrict volatile * ), 1516 * ++?( restrict T * _Atomic restrict volatile * ); 1517 1518 forall( type T ) _Atomic const T * ++?( _Atomic const T * restrict volatile * ), 1519 * ++?( _Atomic const T * _Atomic restrict volatile * ); 1520 1521 forall( type T ) _Atomic volatile T * ++?( _Atomic volatile T * restrict volatile * ), 1522 * ++?( _Atomic volatile T * _Atomic restrict volatile * ); 1523 1524 forall( type T ) _Atomic restrict T * ++?( _Atomic restrict T * restrict volatile * ), 1525 * ++?( _Atomic restrict T * _Atomic restrict volatile * ); 1526 1527 forall( type T ) const volatile T * ++?( const volatile T * restrict volatile * ), 1528 * ++?( const volatile T * _Atomic restrict volatile * ); 1529 1530 forall( type T ) const restrict T * ++?( const restrict T * restrict volatile * ), 1531 * ++?( const restrict T * _Atomic restrict volatile * ); 1532 1533 forall( type T ) restrict volatile T * ++?( restrict volatile T * restrict volatile * ), 1534 * ++?( restrict volatile T * _Atomic restrict volatile * ); 1535 1536 forall( type T ) _Atomic const volatile T * ++?( _Atomic const volatile T * restrict volatile * ), 1537 * ++?( _Atomic const volatile T * _Atomic restrict volatile * ); 1538 1539 forall( type T ) _Atomic const restrict T * ++?( _Atomic const restrict T * restrict volatile * ), 1540 * ++?( _Atomic const restrict T * _Atomic restrict volatile * ); 1541 1542 forall( type T ) _Atomic restrict volatile T * ++?( _Atomic restrict volatile T * restrict volatile * ), 1543 * ++?( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1544 1545 forall( type T ) const restrict volatile T * ++?( const restrict volatile T * restrict volatile * ), 1546 * ++?( const restrict volatile T * _Atomic restrict volatile * ); 1547 1548 forall( type T ) _Atomic const restrict volatile T * ++?( _Atomic const restrict volatile T * restrict volatile * ), 1549 * ++?( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1550 1551 _Bool --?( volatile _Bool * ), 1552 --?( _Atomic volatile _Bool * ); 1553 char --?( volatile char * ), 1554 --?( _Atomic volatile char * ); 1555 signed char --?( volatile signed char * ), 1556 --?( _Atomic volatile signed char * ); 1557 unsigned char --?( volatile signed char * ), 1558 --?( _Atomic volatile signed char * ); 1559 short int --?( volatile short int * ), 1560 --?( _Atomic volatile short int * ); 1561 unsigned short int --?( volatile unsigned short int * ), 1562 --?( _Atomic volatile unsigned short int * ); 1563 int --?( volatile int * ), 1564 --?( _Atomic volatile int * ); 1565 unsigned int --?( volatile unsigned int * ), 1566 --?( _Atomic volatile unsigned int * ); 1567 long int --?( volatile long int * ), 1568 --?( _Atomic volatile long int * ); 1569 long unsigned int --?( volatile long unsigned int * ), 1570 --?( _Atomic volatile long unsigned int * ); 1571 long long int --?( volatile long long int * ), 1572 --?( _Atomic volatile long long int * ); 1573 long long unsigned --?( volatile long long unsigned int * ), 1574 --?( _Atomic volatile long long unsigned int * ); 1575 float --?( volatile float * ), 1576 --?( _Atomic volatile float * ); 1577 double --?( volatile double * ), 1578 --?( _Atomic volatile double * ); 1579 long double --?( volatile long double * ), 1580 --?( _Atomic volatile long double * ); 1581 1582 forall( type T ) T * --?( T * restrict volatile * ), 1583 * --?( T * _Atomic restrict volatile * ); 1584 1585 forall( type T ) _Atomic T * --?( _Atomic T * restrict volatile * ), 1586 * --?( _Atomic T * _Atomic restrict volatile * ); 1587 1588 forall( type T ) const T * --?( const T * restrict volatile * ), 1589 * --?( const T * _Atomic restrict volatile * ); 1590 1591 forall( type T ) volatile T * --?( volatile T * restrict volatile * ), 1592 * --?( volatile T * _Atomic restrict volatile * ); 1593 1594 forall( type T ) restrict T * --?( restrict T * restrict volatile * ), 1595 * --?( restrict T * _Atomic restrict volatile * ); 1596 1597 forall( type T ) _Atomic const T * --?( _Atomic const T * restrict volatile * ), 1598 * --?( _Atomic const T * _Atomic restrict volatile * ); 1599 1600 forall( type T ) _Atomic volatile T * --?( _Atomic volatile T * restrict volatile * ), 1601 * --?( _Atomic volatile T * _Atomic restrict volatile * ); 1602 1603 forall( type T ) _Atomic restrict T * --?( _Atomic restrict T * restrict volatile * ), 1604 * --?( _Atomic restrict T * _Atomic restrict volatile * ); 1605 1606 forall( type T ) const volatile T * --?( const volatile T * restrict volatile * ), 1607 * --?( const volatile T * _Atomic restrict volatile * ); 1608 1609 forall( type T ) const restrict T * --?( const restrict T * restrict volatile * ), 1610 * --?( const restrict T * _Atomic restrict volatile * ); 1611 1612 forall( type T ) restrict volatile T * --?( restrict volatile T * restrict volatile * ), 1613 * --?( restrict volatile T * _Atomic restrict volatile * ); 1614 1615 forall( type T ) _Atomic const volatile T * --?( _Atomic const volatile T * restrict volatile * ), 1616 * --?( _Atomic const volatile T * _Atomic restrict volatile * ); 1617 1618 forall( type T ) _Atomic const restrict T * --?( _Atomic const restrict T * restrict volatile * ), 1619 * --?( _Atomic const restrict T * _Atomic restrict volatile * ); 1620 1621 forall( type T ) _Atomic restrict volatile T * --?( _Atomic restrict volatile T * restrict volatile * ), 1622 * --?( _Atomic restrict volatile T * _Atomic restrict volatile * ); 1623 1624 forall( type T ) const restrict volatile T * --?( const restrict volatile T * restrict volatile * ), 1625 * --?( const restrict volatile T * _Atomic restrict volatile * ); 1626 1627 forall( type T ) _Atomic const restrict volatile T * --?( _Atomic const restrict volatile T * restrict volatile * ), 1628 * --?( _Atomic const restrict volatile T * _Atomic restrict volatile * ); 1629 \end{lstlisting} 1630 For every extended integer type \lstinline$X$ there exist 1631 % Don't use predefined: keep this out of prelude.cf. 1632 \begin{lstlisting} 1633 X ++?( volatile X * ), 1634 ++?( _Atomic volatile X * ), 1635 --?( volatile X * ), 1636 --?( _Atomic volatile X * ); 1637 \end{lstlisting} 1638 For every complete enumerated type \lstinline$E$ there exist 1639 % Don't use predefined: keep this out of prelude.cf. 1640 \begin{lstlisting} 1641 E ++?( volatile E * ), 1642 ++?( _Atomic volatile E * ), 1643 ?--( volatile E * ), 1644 ?--( _Atomic volatile E * ); 1645 \end{lstlisting} 1646 1647 \semantics 1648 The interpretations of prefix increment and decrement expressions are 1649 determined in the same way as the interpretations of postfix increment and 1650 decrement expressions. 1651 1652 1653 \subsubsection{Address and indirection operators} 1654 1655 \predefined 1656 \begin{lstlisting} 1657 forall( type T ) lvalue T *?( T * ); 1658 forall( type T ) _Atomic lvalue T *?( _Atomic T * ); 1659 forall( type T ) const lvalue T *?( const T * ); 1660 forall( type T ) volatile lvalue T *?( volatile T * ); 1661 forall( type T ) restrict lvalue T *?( restrict T * ); 1662 forall( type T ) _Atomic const lvalue T *?( _Atomic const T * ); 1663 forall( type T ) _Atomic volatile lvalue T *?( _Atomic volatile T * ); 1664 forall( type T ) _Atomic restrict lvalue T *?( _Atomic restrict T * ); 1665 forall( type T ) const volatile lvalue T *?( const volatile T * ); 1666 forall( type T ) const restrict lvalue T *?( const restrict T * ); 1667 forall( type T ) restrict volatile lvalue T *?( restrict volatile T * ); 1668 forall( type T ) _Atomic const volatile lvalue T *?( _Atomic const volatile T * ); 1669 forall( type T ) _Atomic const restrict lvalue T *?( _Atomic const restrict T * ); 1670 forall( type T ) _Atomic restrict volatile lvalue T *?( _Atomic restrict volatile T * ); 1671 forall( type T ) const restrict volatile lvalue T *?( const restrict volatile T * ); 1672 forall( type T ) _Atomic const restrict volatile lvalue T *?( _Atomic const restrict volatile T * ); 1673 1674 forall( ftype FT ) FT *?( FT * ); 1675 \end{lstlisting} 1676 1677 \constraints 1678 The operand of the unary ``\lstinline$&$'' operator shall have exactly one 1679 \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous. 1680 1681 \semantics 1682 The ``\lstinline$&$'' expression has one interpretation which is of type \lstinline$T *$, where 1683 \lstinline$T$ is the type of the operand. 1684 1685 The interpretations of an indirection expression are the interpretations of the corresponding 1686 function call. 1687 1688 1689 \subsubsection{Unary arithmetic operators} 1690 1691 \predefined 1692 \begin{lstlisting} 1693 int 1694 +?( int ), 1695 -?( int ), 1696 ~?( int ); 1697 unsigned int 1698 +?( unsigned int ), 1699 -?( unsigned int ), 1700 ~?( unsigned int ); 1701 long int 1702 +?( long int ), 1703 -?( long int ), 1704 ~?( long int ); 1705 long unsigned int 1706 +?( long unsigned int ), 1707 -?( long unsigned int ), 1708 ~?( long unsigned int ); 1709 long long int 1710 +?( long long int ), 1711 -?( long long int ), 1712 ~?( long long int ); 1713 long long unsigned int 1714 +?( long long unsigned int ), 1715 -?( long long unsigned int ), 1716 ~?( long long unsigned int ); 1717 float 1718 +?( float ), 1719 -?( float ); 1720 double 1721 +?( double ), 1722 -?( double ); 1723 long double 1724 +?( long double ), 1725 -?( long double ); 1726 _Complex float 1727 +?( _Complex float ), 1728 -?( _Complex float ); 1729 _Complex double 1730 +?( _Complex double ), 1731 -?( _Complex double ); 1732 _Complex long double 1733 +?( _Complex long double ), 1734 -?( _Complex long double ); 1735 1736 int !?( int ), 1737 !?( unsigned int ), 1738 !?( long ), 1739 !?( long unsigned int ), 1740 !?( long long int ), 1741 !?( long long unsigned int ), 1742 !?( float ), 1743 !?( double ), 1744 !?( long double ), 1745 !?( _Complex float ), 1746 !?( _Complex double ), 1747 !?( _Complex long double ); 1748 1749 forall( dtype DT ) int !?( const restrict volatile DT * ); 1750 forall( dtype DT ) int !?( _Atomic const restrict volatile DT * ); 1751 forall( ftype FT ) int !?( FT * ); 1752 \end{lstlisting} 1753 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 1754 rank of \lstinline$int$ there exist 1755 % Don't use predefined: keep this out of prelude.cf. 1756 \begin{lstlisting} 1757 X +?( X ), -?( X ), ~?( X ); 1758 int !?( X ); 1759 \end{lstlisting} 1760 1761 \semantics 1762 The interpretations of a unary arithmetic expression are the interpretations of the corresponding 1763 function call. 1764 1765 \examples 1766 \begin{lstlisting} 1767 long int li; 1768 void eat_double( double );@\use{eat_double}@ 1769 1770 eat_double(-li ); // @\rewrite@ eat_double( -?( li ) ); 1771 \end{lstlisting} 1772 The valid interpretations of ``\lstinline$-li$'' (assuming no extended integer types exist) are 1773 \begin{center} 1774 \begin{tabular}{llc} 1775 interpretation & result type & expression conversion cost \\ 1776 \hline 1777 \lstinline$-?( (int)li )$ & \lstinline$int$ & (unsafe) \\ 1778 \lstinline$-?( (unsigned)li)$ & \lstinline$unsigned int$ & (unsafe) \\ 1779 \lstinline$-?( (long)li)$ & \lstinline$long$ & 0 \\ 1780 \lstinline$-?( (long unsigned int)li)$ & \lstinline$long unsigned int$ & 1 \\ 1781 \lstinline$-?( (long long int)li)$ & \lstinline$long long int$ & 2 \\ 1782 \lstinline$-?( (long long unsigned int)li)$ & \lstinline$long long unsigned int$& 3 \\ 1783 \lstinline$-?( (float)li)$ & \lstinline$float$ & 4 \\ 1784 \lstinline$-?( (double)li)$ & \lstinline$double$ & 5 \\ 1785 \lstinline$-?( (long double)li)$ & \lstinline$long double$ & 6 \\ 1786 \lstinline$-?( (_Complex float)li)$ & \lstinline$float$ & (unsafe) \\ 1787 \lstinline$-?( (_Complex double)li)$ & \lstinline$double$ & (unsafe) \\ 1788 \lstinline$-?( (_Complex long double)li)$ & \lstinline$long double$ & (unsafe) \\ 1789 \end{tabular} 1790 \end{center} 1791 The valid interpretations of the \lstinline$eat_double$ call, with the cost of the argument 1792 conversion and the cost of the entire expression, are 1793 \begin{center} 1794 \begin{tabular}{lcc} 1795 interpretation & argument cost & expression cost \\ 1796 \hline 1797 \lstinline$eat_double( (double)-?( (int)li) )$ & 7 & (unsafe) \\ 1798 \lstinline$eat_double( (double)-?( (unsigned)li) )$ & 6 & (unsafe) \\ 1799 \lstinline$eat_double( (double)-?(li) )$ & 5 & \(0+5=5\) \\ 1800 \lstinline$eat_double( (double)-?( (long unsigned int)li) )$ & 4 & \(1+4=5\) \\ 1801 \lstinline$eat_double( (double)-?( (long long int)li) )$ & 3 & \(2+3=5\) \\ 1802 \lstinline$eat_double( (double)-?( (long long unsigned int)li) )$& 2 & \(3+2=5\) \\ 1803 \lstinline$eat_double( (double)-?( (float)li) )$ & 1 & \(4+1=5\) \\ 1804 \lstinline$eat_double( (double)-?( (double)li) )$ & 0 & \(5+0=5\) \\ 1805 \lstinline$eat_double( (double)-?( (long double)li) )$ & (unsafe) & (unsafe) \\ 1806 \lstinline$eat_double( (double)-?( (_Complex float)li) )$ & (unsafe) & (unsafe) \\ 1807 \lstinline$eat_double( (double)-?( (_Complex double)li) )$ & (unsafe) & (unsafe) \\ 1808 \lstinline$eat_double( (double)-?( (_Complex long double)li) )$ & (unsafe) & (unsafe) \\ 1809 \end{tabular} 1810 \end{center} 1811 Each has result type \lstinline$void$, so the best must be selected. The interpretations involving 1812 unsafe conversions are discarded. The remainder have equal expression conversion costs, so the 1813 ``highest argument conversion cost'' rule is invoked, and the chosen interpretation is 1814 \lstinline$eat_double( (double)-?(li) )$. 1815 1816 1817 \subsubsection{The \lstinline$sizeof$ and \lstinline$_Alignof$ operators} 1818 1819 \constraints 1820 The operand of \lstinline$sizeof$ or \lstinline$_Alignof$ shall not be \lstinline$type$, 1821 \lstinline$dtype$, or \lstinline$ftype$. 1822 1823 When the \lstinline$sizeof$\use{sizeof} operator is applied to an expression, the expression shall 1824 have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall 1825 be unambiguous. \semantics A \lstinline$sizeof$ or \lstinline$_Alignof$ expression has one 1826 interpretation, of type \lstinline$size_t$. 1827 1828 When \lstinline$sizeof$ is applied to an identifier declared by a \nonterm{type-declaration} or a 1829 \nonterm{type-parameter}, it yields the size in bytes of the type that implements the operand. When 1830 the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the 1831 expression is not a constant expression. 1832 1833 When \lstinline$_Alignof$ is applied to an identifier declared by a \nonterm{type-declaration} or a 1834 \nonterm{type-parameter}, it yields the alignment requirement of the type that implements the 1835 operand. When the operand is an opaque type or an inferred type parameter\index{inferred 1836 parameter}, the expression is not a constant expression. 1837 \begin{rationale} 1838 \begin{lstlisting} 1839 type Pair = struct { int first, second; }; 1840 size_t p_size = sizeof(Pair); // constant expression 1841 1842 extern type Rational;@\use{Rational}@ 1843 size_t c_size = sizeof(Rational); // non-constant expression 1844 1845 forall(type T) T f(T p1, T p2) { 1846 size_t t_size = sizeof(T); // non-constant expression 1847 ... 1848 } 1849 \end{lstlisting} 1850 ``\lstinline$sizeof Rational$'', although not statically known, is fixed. Within \lstinline$f()$, 1851 ``\lstinline$sizeof(T)$'' is fixed for each call of \lstinline$f()$, but may vary from call to call. 1852 \end{rationale} 1853 1854 1855 \subsection{Cast operators} 1856 1857 \begin{syntax} 1858 \lhs{cast-expression} 1859 \rhs \nonterm{unary-expression} 1860 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \nonterm{cast-expression} 1861 \end{syntax} 1862 1863 \constraints 1864 The \nonterm{type-name} in a \nonterm{cast-expression} shall not be \lstinline$type$, 1865 \lstinline$dtype$, or \lstinline$ftype$. 1866 1867 \semantics 1868 1869 In a \Index{cast expression} ``\lstinline$($\nonterm{type-name}\lstinline$)e$'', if 1870 \nonterm{type-name} is the type of an interpretation of \lstinline$e$, then that interpretation is 1871 the only interpretation of the cast expression; otherwise, \lstinline$e$ shall have some 1872 interpretation that can be converted to \nonterm{type-name}, and the interpretation of the cast 1873 expression is the cast of the interpretation that can be converted at the lowest cost. The cast 1874 expression's interpretation is ambiguous\index{ambiguous interpretation} if more than one 1875 interpretation can be converted at the lowest cost or if the selected interpretation is ambiguous. 1876 1877 \begin{rationale} 1878 Casts can be used to eliminate ambiguity in expressions by selecting interpretations of 1879 subexpressions, and to specialize polymorphic functions and values. 1880 \end{rationale} 1881 1882 1883 \subsection{Multiplicative operators} 1884 1885 \begin{syntax} 1886 \lhs{multiplicative-expression} 1887 \rhs \nonterm{cast-expression} 1888 \rhs \nonterm{multiplicative-expression} \lstinline$*$ \nonterm{cast-expression} 1889 \rhs \nonterm{multiplicative-expression} \lstinline$/$ \nonterm{cast-expression} 1890 \rhs \nonterm{multiplicative-expression} \lstinline$%$ \nonterm{cast-expression} 1891 \end{syntax} 1892 1893 \rewriterules 1894 \begin{lstlisting} 1895 a * b @\rewrite@ ?*?( a, b )@\use{?*?}@ 1896 a / b @\rewrite@ ?/?( a, b )@\use{?/?}@ 1897 a % b @\rewrite@ ?%?( a, b )@\use{?%?}@ 1898 \end{lstlisting} 1899 1900 \predefined 1901 \begin{lstlisting} 1902 int?*?( int, int ), 1903 ?/?( int, int ), 1904 ?%?( int, int ); 1905 unsigned int?*?( unsigned int, unsigned int ), 1906 ?/?( unsigned int, unsigned int ), 1907 ?%?( unsigned int, unsigned int ); 1908 long int?*?( long int, long int ), 1909 ?/?( long, long ), 1910 ?%?( long, long ); 1911 long unsigned int?*?( long unsigned int, long unsigned int ), 1912 ?/?( long unsigned int, long unsigned int ), 1913 ?%?( long unsigned int, long unsigned int ); 1914 long long int?*?( long long int, long long int ), 1915 ?/?( long long int, long long int ), 1916 ?%?( long long int, long long int ); 1917 long long unsigned int ?*?( long long unsigned int, long long unsigned int ), 1918 ?/?( long long unsigned int, long long unsigned int ), 1919 ?%?( long long unsigned int, long long unsigned int ); 1920 float?*?( float, float ), 1921 ?/?( float, float ); 1922 double?*?( double, double ), 1923 ?/?( double, double ); 1924 long double?*?( long double, long double ), 1925 ?/?( long double, long double ); 1926 _Complex float?*?( float, _Complex float ), 1927 ?/?( float, _Complex float ), 1928 ?*?( _Complex float, float ), 1929 ?/?( _Complex float, float ), 1930 ?*?( _Complex float, _Complex float ), 1931 ?/?( _Complex float, _Complex float ); 1932 _Complex double?*?( double, _Complex double ), 1933 ?/?( double, _Complex double ), 1934 ?*?( _Complex double, double ), 1935 ?/?( _Complex double, double ), 1936 ?*?( _Complex double, _Complex double ), 1937 ?/?( _Complex double, _Complex double ); 1938 _Complex long double?*?( long double, _Complex long double ), 1939 ?/?( long double, _Complex long double ), 1940 ?*?( _Complex long double, long double ), 1941 ?/?( _Complex long double, long double ), 1942 ?*?( _Complex long double, _Complex long double ), 1943 ?/?( _Complex long double, _Complex long double ); 1944 \end{lstlisting} 1945 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 1946 rank of \lstinline$int$ there exist 1947 % Don't use predefined: keep this out of prelude.cf. 1948 \begin{lstlisting} 1949 X ?*?( X ), ?/?( X ), ?%?( X ); 1950 \end{lstlisting} 1951 1952 \begin{rationale} 1953 {\c11} does not include conversions from the \Index{real type}s to \Index{complex type}s in the 1954 \Index{usual arithmetic conversion}s. Instead it specifies conversion of the result of binary 1955 operations on arguments from mixed type domains. \CFA's predefined operators match that pattern. 1956 \end{rationale} 1957 1958 \semantics 1959 The interpretations of multiplicative expressions are the interpretations of the corresponding 1960 function call. 1961 1962 \examples 1963 \begin{lstlisting} 1964 int i; 1965 long li; 1966 void eat_double( double );@\use{eat_double}@ 1967 eat_double( li % i ); 1968 \end{lstlisting} 1969 ``\lstinline$li % i$'' is rewritten as ``\lstinline$?%?(li, i )$''. The valid interpretations 1970 of \lstinline$?%?(li, i )$, the cost\index{conversion cost} of converting their arguments, and 1971 the cost of converting the result to \lstinline$double$ (assuming no extended integer types are 1972 present ) are 1973 \begin{center} 1974 \begin{tabular}{lcc} 1975 interpretation & argument cost & result cost \\ 1976 \hline 1977 \lstinline$ ?%?( (int)li, i )$ & (unsafe) & 6 \\ 1978 \lstinline$ ?%?( (unsigned)li,(unsigned)i )$ & (unsafe) & 5 \\ 1979 \lstinline$ ?%?(li,(long)i )$ & 1 & 4 \\ 1980 \lstinline$ ?%?( (long unsigned)li,(long unsigned)i )$ & 3 & 3 \\ 1981 \lstinline$ ?%?( (long long)li,(long long)i )$ & 5 & 2 \\ 1982 \lstinline$ ?%?( (long long unsigned)li, (long long unsigned)i )$ & 7 & 1 \\ 1983 \end{tabular} 1984 \end{center} 1985 The best interpretation of \lstinline$eat_double( li, i )$ is 1986 \lstinline$eat_double( (double)?%?(li, (long)i ))$, which has no unsafe conversions and the 1987 lowest total cost. 1988 1989 \begin{rationale} 1990 {\c11} defines most arithmetic operations to apply an \Index{integer promotion} to any argument that 1991 belongs to a type that has an \Index{integer conversion rank} less than that of \lstinline$int$.If 1992 \lstinline$s$ is a \lstinline$short int$, ``\lstinline$s *s$'' does not have type \lstinline$short int$; 1993 it is treated as ``\lstinline$( (int)s ) * ( (int)s )$'', and has type \lstinline$int$. \CFA matches 1994 that pattern; it does not predefine ``\lstinline$short ?*?( short, short )$''. 1995 1996 These ``missing'' operators limit polymorphism. Consider 1997 \begin{lstlisting} 1998 forall( type T | T ?*?( T, T ) ) T square( T ); 1999 short s; 2000 square( s ); 2001 \end{lstlisting} 2002 Since \CFA does not define a multiplication operator for \lstinline$short int$, 2003 \lstinline$square( s )$ is treated as \lstinline$square( (int)s )$, and the result has type 2004 \lstinline$int$. This is mildly surprising, but it follows the {\c11} operator pattern. 2005 2006 A more troubling example is 2007 \begin{lstlisting} 2008 forall( type T | ?*?( T, T ) ) T product( T[], int n ); 2009 short sa[5]; 2010 product( sa, 5); 2011 \end{lstlisting} 2012 This has no valid interpretations, because \CFA has no conversion from ``array of 2013 \lstinline$short int$'' to ``array of \lstinline$int$''. The alternatives in such situations 2014 include 2015 \begin{itemize} 2016 \item 2017 Defining monomorphic overloadings of \lstinline$product$ for \lstinline$short$ and the other 2018 ``small'' types. 2019 \item 2020 Defining ``\lstinline$short ?*?( short, short )$'' within the scope containing the call to 2021 \lstinline$product$. 2022 \item 2023 Defining \lstinline$product$ to take as an argument a conversion function from the ``small'' type to 2024 the operator's argument type. 2025 \end{itemize} 2026 \end{rationale} 2027 2028 2029 \subsection{Additive operators} 2030 2031 \begin{syntax} 2032 \lhs{additive-expression} 2033 \rhs \nonterm{multiplicative-expression} 2034 \rhs \nonterm{additive-expression} \lstinline$+$ \nonterm{multiplicative-expression} 2035 \rhs \nonterm{additive-expression} \lstinline$-$ \nonterm{multiplicative-expression} 2036 \end{syntax} 2037 2038 \rewriterules 2039 \begin{lstlisting} 2040 a + b @\rewrite@ ?+?( a, b )@\use{?+?}@ 2041 a - b @\rewrite@ ?-?( a, b )@\use{?-?}@ 2042 \end{lstlisting} 2043 2044 \predefined 2045 \begin{lstlisting} 2046 int?+?( int, int ), 2047 ?-?( int, int ); 2048 unsigned int?+?( unsigned int, unsigned int ), 2049 ?-?( unsigned int, unsigned int ); 2050 long int?+?( long int, long int ), 2051 ?-?( long int, long int ); 2052 long unsigned int?+?( long unsigned int, long unsigned int ), 2053 ?-?( long unsigned int, long unsigned int ); 2054 long long int?+?( long long int, long long int ), 2055 ?-?( long long int, long long int ); 2056 long long unsigned int ?+?( long long unsigned int, long long unsigned int ), 2057 ?-?( long long unsigned int, long long unsigned int ); 2058 float?+?( float, float ), 2059 ?-?( float, float ); 2060 double?+?( double, double ), 2061 ?-?( double, double ); 2062 long double?+?( long double, long double ), 2063 ?-?( long double, long double ); 2064 _Complex float?+?( _Complex float, float ), 2065 ?-?( _Complex float, float ), 2066 ?+?( float, _Complex float ), 2067 ?-?( float, _Complex float ), 2068 ?+?( _Complex float, _Complex float ), 2069 ?-?( _Complex float, _Complex float ); 2070 _Complex double?+?( _Complex double, double ), 2071 ?-?( _Complex double, double ), 2072 ?+?( double, _Complex double ), 2073 ?-?( double, _Complex double ), 2074 ?+?( _Complex double, _Complex double ), 2075 ?-?( _Complex double, _Complex double ); 2076 _Complex long double?+?( _Complex long double, long double ), 2077 ?-?( _Complex long double, long double ), 2078 ?+?( long double, _Complex long double ), 2079 ?-?( long double, _Complex long double ), 2080 ?+?( _Complex long double, _Complex long double ), 2081 ?-?( _Complex long double, _Complex long double ); 2082 2083 forall( type T ) T 2084 * ?+?( T *, ptrdiff_t ), 2085 * ?+?( ptrdiff_t, T * ), 2086 * ?-?( T *, ptrdiff_t ); 2087 2088 forall( type T ) _Atomic T 2089 * ?+?( _Atomic T *, ptrdiff_t ), 2090 * ?+?( ptrdiff_t, _Atomic T * ), 2091 * ?-?( _Atomic T *, ptrdiff_t ); 2092 2093 forall( type T ) const T 2094 * ?+?( const T *, ptrdiff_t ), 2095 * ?+?( ptrdiff_t, const T * ), 2096 * ?-?( const T *, ptrdiff_t ); 2097 2098 forall( type T ) restrict T 2099 * ?+?( restrict T *, ptrdiff_t ), 2100 * ?+?( ptrdiff_t, restrict T * ), 2101 * ?-?( restrict T *, ptrdiff_t ); 2102 2103 forall( type T ) volatile T 2104 * ?+?( volatile T *, ptrdiff_t ), 2105 * ?+?( ptrdiff_t, volatile T * ), 2106 * ?-?( volatile T *, ptrdiff_t ); 2107 2108 forall( type T ) _Atomic const T 2109 * ?+?( _Atomic const T *, ptrdiff_t ), 2110 * ?+?( ptrdiff_t, _Atomic const T * ), 2111 * ?-?( _Atomic const T *, ptrdiff_t ); 2112 2113 forall( type T ) _Atomic restrict T 2114 * ?+?( _Atomic restrict T *, ptrdiff_t ), 2115 * ?+?( ptrdiff_t, _Atomic restrict T * ), 2116 * ?-?( _Atomic restrict T *, ptrdiff_t ); 2117 2118 forall( type T ) _Atomic volatile T 2119 * ?+?( _Atomic volatile T *, ptrdiff_t ), 2120 * ?+?( ptrdiff_t, _Atomic volatile T * ), 2121 * ?-?( _Atomic volatile T *, ptrdiff_t ); 2122 2123 forall( type T ) const restrict T 2124 * ?+?( const restrict T *, ptrdiff_t ), 2125 * ?+?( ptrdiff_t, const restrict T * ), 2126 * ?-?( const restrict T *, ptrdiff_t ); 2127 2128 forall( type T ) const volatile T 2129 * ?+?( const volatile T *, ptrdiff_t ), 2130 * ?+?( ptrdiff_t, const volatile T * ), 2131 * ?-?( const volatile T *, ptrdiff_t ); 2132 2133 forall( type T ) restrict volatile T 2134 * ?+?( restrict volatile T *, ptrdiff_t ), 2135 * ?+?( ptrdiff_t, restrict volatile T * ), 2136 * ?-?( restrict volatile T *, ptrdiff_t ); 2137 2138 forall( type T ) _Atomic const restrict T 2139 * ?+?( _Atomic const restrict T *, ptrdiff_t ), 2140 * ?+?( ptrdiff_t, _Atomic const restrict T * ), 2141 * ?-?( _Atomic const restrict T *, ptrdiff_t ); 2142 2143 forall( type T ) ptrdiff_t 2144 * ?-?( const restrict volatile T *, const restrict volatile T * ), 2145 * ?-?( _Atomic const restrict volatile T *, _Atomic const restrict volatile T * ); 2146 \end{lstlisting} 2147 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2148 rank of \lstinline$int$ there exist 2149 % Don't use predefined: keep this out of prelude.cf. 2150 \begin{lstlisting} 2151 X ?+?( X ), ?-?( X ); 2152 \end{lstlisting} 2153 2154 \semantics 2155 The interpretations of additive expressions are the interpretations of the corresponding function 2156 calls. 2157 2158 \begin{rationale} 2159 \lstinline$ptrdiff_t$ is an implementation-defined identifier defined in \lstinline$<stddef.h>$ that 2160 is synonymous with a signed integral type that is large enough to hold the difference between two 2161 pointers. It seems reasonable to use it for pointer addition as well. (This is technically a 2162 difference between \CFA and C, which only specifies that pointer addition uses an \emph{integral} 2163 argument.) Hence it is also used for subscripting, which is defined in terms of pointer addition. 2164 The {\c11} standard uses \lstinline$size_t$ in several cases where a library function takes an 2165 argument that is used as a subscript, but \lstinline$size_t$ is unsuitable here because it is an 2166 unsigned type. 2167 \end{rationale} 2168 2169 2170 \subsection{Bitwise shift operators} 2171 2172 \begin{syntax} 2173 \lhs{shift-expression} 2174 \rhs \nonterm{additive-expression} 2175 \rhs \nonterm{shift-expression} \lstinline$<<$ \nonterm{additive-expression} 2176 \rhs \nonterm{shift-expression} \lstinline$>>$ \nonterm{additive-expression} 2177 \end{syntax} 2178 2179 \rewriterules \use{?>>?}%use{?<<?} 2180 \begin{lstlisting} 2181 a << b @\rewrite@ ?<<?( a, b ) 2182 a >> b @\rewrite@ ?>>?( a, b ) 2183 \end{lstlisting} 2184 2185 \predefined 2186 \begin{lstlisting} 2187 int ?<<?( int, int ), 2188 ?>>?( int, int ); 2189 unsigned int ?<<?( unsigned int, int ), 2190 ?>>?( unsigned int, int ); 2191 long int ?<<?( long int, int ), 2192 ?>>?( long int, int ); 2193 long unsigned int ?<<?( long unsigned int, int ), 2194 ?>>?( long unsigned int, int ); 2195 long long int ?<<?( long long int, int ), 2196 ?>>?( long long int, int ); 2197 long long unsigned int ?<<?( long long unsigned int, int ), 2198 ?>>?( long long unsigned int, int); 2199 \end{lstlisting} 2200 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2201 rank of \lstinline$int$ there exist 2202 % Don't use predefined: keep this out of prelude.cf. 2203 \begin{lstlisting} 2204 X ?<<?( X, int ), ?>>?( X, int ); 2205 \end{lstlisting} 2206 2207 \begin{rationale} 2208 The bitwise shift operators break the usual pattern: they do not convert both operands to a common 2209 type. The right operand only undergoes \Index{integer promotion}. 2210 \end{rationale} 2211 2212 \semantics 2213 The interpretations of a bitwise shift expression are the interpretations of the corresponding 2214 function calls. 2215 2216 2217 \subsection{Relational operators} 2218 2219 \begin{syntax} 2220 \lhs{relational-expression} 2221 \rhs \nonterm{shift-expression} 2222 \rhs \nonterm{relational-expression} \lstinline$< $ \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 \end{syntax} 2227 2228 \rewriterules\use{?>?}\use{?>=?}%use{?<?}%use{?<=?} 2229 \begin{lstlisting} 2230 a < b @\rewrite@ ?<?( a, b ) 2231 a > b @\rewrite@ ?>?( a, b ) 2232 a <= b @\rewrite@ ?<=?( a, b ) 2233 a >= b @\rewrite@ ?>=?( a, b ) 2234 \end{lstlisting} 2235 2236 \predefined 2237 \begin{lstlisting} 2238 int ?<?( int, int ), 2239 ?<=?( int, int ), 2240 ?>?( int, int ), 2241 ?>=?( int, int ); 2242 int ?<?( unsigned int, unsigned int ), 2243 ?<=?( unsigned int, unsigned int ), 2244 ?>?( unsigned int, unsigned int ), 2245 ?>=?( unsigned int, unsigned int ); 2246 int ?<?( long int, long int ), 2247 ?<=?( long int, long int ), 2248 ?>?( long int, long int ), 2249 ?>=?( long int, long int ); 2250 int ?<?( long unsigned int, long unsigned ), 2251 ?<=?( long unsigned int, long unsigned ), 2252 ?>?( long unsigned int, long unsigned ), 2253 ?>=?( long unsigned int, long unsigned ); 2254 int ?<?( long long int, long long int ), 2255 ?<=?( long long int, long long int ), 2256 ?>?( long long int, long long int ), 2257 ?>=?( long long int, long long int ); 2258 int ?<?( long long unsigned int, long long unsigned ), 2259 ?<=?( long long unsigned int, long long unsigned ), 2260 ?>?( long long unsigned int, long long unsigned ), 2261 ?>=?( long long unsigned int, long long unsigned ); 2262 int ?<?( float, float ), 2263 ?<=?( float, float ), 2264 ?>?( float, float ), 2265 ?>=?( float, float ); 2266 int ?<?( double, double ), 2267 ?<=?( double, double ), 2268 ?>?( double, double ), 2269 ?>=?( double, double ); 2270 int ?<?( long double, long double ), 2271 ?<=?( long double, long double ), 2272 ?>?( long double, long double ), 2273 ?>=?( long double, long double ); 2274 2275 forall( dtype DT ) int 2276 ?<?( const restrict volatile DT *, const restrict volatile DT * ), 2277 ?<?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ), 2278 ?<=?( const restrict volatile DT *, const restrict volatile DT * ), 2279 ?<=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ), 2280 ?>?( const restrict volatile DT *, const restrict volatile DT * ), 2281 ?>?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ), 2282 ?>=?( const restrict volatile DT *, const restrict volatile DT * ), 2283 ?>=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ); 2284 \end{lstlisting} 2285 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2286 rank of \lstinline$int$ there exist 2287 % Don't use predefined: keep this out of prelude.cf. 2288 \begin{lstlisting} 2289 int ?<?( X, X ), 2290 ?<=?( X, X ), 2291 ?<?( X, X ), 2292 ?>=?( X, X ); 2293 \end{lstlisting} 2294 2295 \semantics 2296 The interpretations of a relational expression are the interpretations of the corresponding function 2297 call. 2298 2299 2300 \subsection{Equality operators} 2301 2302 \begin{syntax} 2303 \lhs{equality-expression} 2304 \rhs \nonterm{relational-expression} 2305 \rhs \nonterm{equality-expression} \lstinline$==$ \nonterm{relational-expression} 2306 \rhs \nonterm{equality-expression} \lstinline$!=$ \nonterm{relational-expression} 2307 \end{syntax} 2308 2309 \rewriterules 2310 \begin{lstlisting} 2311 a == b @\rewrite@ ?==?( a, b )@\use{?==?}@ 2312 a != b @\rewrite@ ?!=?( a, b )@\use{?"!=?}@ 2313 \end{lstlisting} 2314 2315 \predefined 2316 \begin{lstlisting} 2317 int ?==?( int, int ), 2318 ?!=?( int, int ), 2319 ?==?( unsigned int, unsigned int ), 2320 ?!=?( unsigned int, unsigned int ), 2321 ?==?( long int, long int ), 2322 ?!=?( long int, long int ), 2323 ?==?( long unsigned int, long unsigned int ), 2324 ?!=?( long unsigned int, long unsigned int ), 2325 ?==?( long long int, long long int ), 2326 ?!=?( long long int, long long int ), 2327 ?==?( long long unsigned int, long long unsigned int ), 2328 ?!=?( long long unsigned int, long long unsigned int ), 2329 ?==?( float, float ), 2330 ?!=?( float, float ), 2331 ?==?( _Complex float, float ), 2332 ?!=?( _Complex float, float ), 2333 ?==?( float, _Complex float ), 2334 ?!=?( float, _Complex float ), 2335 ?==?( _Complex float, _Complex float ), 2336 ?!=?( _Complex float, _Complex float ), 2337 ?==?( double, double ), 2338 ?!=?( double, double ), 2339 ?==?( _Complex double, double ), 2340 ?!=?( _Complex double, double ), 2341 ?==?( double, _Complex double ), 2342 ?!=?( double, _Complex double ), 2343 ?==?( _Complex double, _Complex double ), 2344 ?!=?( _Complex double, _Complex double ), 2345 ?==?( long double, long double ), 2346 ?!=?( long double, long double ), 2347 ?==?( _Complex long double, long double ), 2348 ?!=?( _Complex long double, long double ), 2349 ?==?( long double, _Complex long double ), 2350 ?!=?( long double, _Complex long double ), 2351 ?==?( _Complex long double, _Complex long double ), 2352 ?!=?( _Complex long double, _Complex long double ); 2353 2354 forall( dtype DT ) int 2355 ?==?( const restrict volatile DT *, const restrict volatile DT * ), 2356 ?!=?( const restrict volatile DT *, const restrict volatile DT * ), 2357 ?==?( const restrict volatile DT *, const restrict volatile void * ), 2358 ?!=?( const restrict volatile DT *, const restrict volatile void * ), 2359 ?==?( const restrict volatile void *, const restrict volatile DT * ), 2360 ?!=?( const restrict volatile void *, const restrict volatile DT * ), 2361 ?==?( const restrict volatile DT *, forall( dtype DT2) const DT2 * ), 2362 ?!=?( const restrict volatile DT *, forall( dtype DT2) const DT2 * ), 2363 ?==?( forall( dtype DT2) const DT2*, const restrict volatile DT * ), 2364 ?!=?( forall( dtype DT2) const DT2*, const restrict volatile DT * ), 2365 ?==?( forall( dtype DT2) const DT2*, forall( dtype DT3) const DT3 * ), 2366 ?!=?( forall( dtype DT2) const DT2*, forall( dtype DT3) const DT3 * ), 2367 2368 ?==?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ), 2369 ?!=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ), 2370 ?==?( _Atomic const restrict volatile DT *, const restrict volatile void * ), 2371 ?!=?( _Atomic const restrict volatile DT *, const restrict volatile void * ), 2372 ?==?( const restrict volatile void *, _Atomic const restrict volatile DT * ), 2373 ?!=?( const restrict volatile void *, _Atomic const restrict volatile DT * ), 2374 ?==?( _Atomic const restrict volatile DT *, forall( dtype DT2) const DT2 * ), 2375 ?!=?( _Atomic const restrict volatile DT *, forall( dtype DT2) const DT2 * ), 2376 ?==?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * ), 2377 ?!=?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * ); 2378 2379 forall( ftype FT ) int 2380 ?==?( FT *, FT * ), 2381 ?!=?( FT *, FT * ), 2382 ?==?( FT *, forall( ftype FT2) FT2 * ), 2383 ?!=?( FT *, forall( ftype FT2) FT2 * ), 2384 ?==?( forall( ftype FT2) FT2*, FT * ), 2385 ?!=?( forall( ftype FT2) FT2*, FT * ), 2386 ?==?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ), 2387 ?!=?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ); 2388 \end{lstlisting} 2389 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2390 rank of \lstinline$int$ there exist 2391 % Don't use predefined: keep this out of prelude.cf. 2392 \begin{lstlisting} 2393 int ?==?( X, X ), 2394 ?!=?( X, X ); 2395 \end{lstlisting} 2396 2397 \begin{rationale} 2398 The polymorphic equality operations come in three styles: comparisons between pointers of compatible 2399 types, between pointers to \lstinline$void$ and pointers to object types or incomplete types, and 2400 between the \Index{null pointer} constant and pointers to any type. In the last case, a special 2401 constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA 2402 type system. 2403 \end{rationale} 2404 2405 \semantics 2406 The interpretations of an equality expression are the interpretations of the corresponding function 2407 call. 2408 2409 \begin{sloppypar} 2410 The result of an equality comparison between two pointers to predefined functions or predefined 2411 values is implementation-defined. 2412 \end{sloppypar} 2413 \begin{rationale} 2414 The implementation-defined status of equality comparisons allows implementations to use one library 2415 routine to implement many predefined functions. These optimization are particularly important when 2416 the predefined functions are polymorphic, as is the case for most pointer operations 2417 \end{rationale} 2418 2419 2420 \subsection{Bitwise AND operator} 2421 2422 \begin{syntax} 2423 \lhs{AND-expression} 2424 \rhs \nonterm{equality-expression} 2425 \rhs \nonterm{AND-expression} \lstinline$&$ \nonterm{equality-expression} 2426 \end{syntax} 2427 2428 \rewriterules 2429 \begin{lstlisting} 2430 a & b @\rewrite@ ?&?( a, b )@\use{?&?}@ 2431 \end{lstlisting} 2432 2433 \predefined 2434 \begin{lstlisting} 2435 int ?&?( int, int ); 2436 unsigned int ?&?( unsigned int, unsigned int ); 2437 long int ?&?( long int, long int ); 2438 long unsigned int ?&?( long unsigned int, long unsigned int ); 2439 long long int ?&?( long long int, long long int ); 2440 long long unsigned int ?&?( long long unsigned int, long long unsigned int ); 2441 \end{lstlisting} 2442 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2443 rank of \lstinline$int$ there exist 2444 % Don't use predefined: keep this out of prelude.cf. 2445 \begin{lstlisting} 2446 int ?&?( X, X ); 2447 \end{lstlisting} 2448 2449 \semantics 2450 The interpretations of a bitwise AND expression are the interpretations of the corresponding 2451 function call. 2452 2453 2454 \subsection{Bitwise exclusive OR operator} 2455 2456 \begin{syntax} 2457 \lhs{exclusive-OR-expression} 2458 \rhs \nonterm{AND-expression} 2459 \rhs \nonterm{exclusive-OR-expression} \lstinline$^$ \nonterm{AND-expression} 2460 \end{syntax} 2461 2462 \rewriterules 2463 \begin{lstlisting} 2464 a ^ b @\rewrite@ ?^?( a, b )@\use{?^?}@ 2465 \end{lstlisting} 2466 2467 \predefined 2468 \begin{lstlisting} 2469 int ?^?( int, int ); 2470 unsigned int ?^?( unsigned int, unsigned int ); 2471 long int ?^?( long int, long int ); 2472 long unsigned int ?^?( long unsigned int, long unsigned int ); 2473 long long int ?^?( long long int, long long int ); 2474 long long unsigned int ?^?( long long unsigned int, long long unsigned int ); 2475 \end{lstlisting} 2476 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2477 rank of \lstinline$int$ there exist 2478 % Don't use predefined: keep this out of prelude.cf. 2479 \begin{lstlisting} 2480 int ?^?( X, X ); 2481 \end{lstlisting} 2482 2483 \semantics 2484 The interpretations of a bitwise exclusive OR expression are the interpretations of the 2485 corresponding function call. 2486 2487 2488 \subsection{Bitwise inclusive OR operator} 2489 2490 \begin{syntax} 2491 \lhs{inclusive-OR-expression} 2492 \rhs \nonterm{exclusive-OR-expression} 2493 \rhs \nonterm{inclusive-OR-expression} \lstinline$|$ \nonterm{exclusive-OR-expression} 2494 \end{syntax} 2495 2496 \rewriterules\use{?"|?} 2497 \begin{lstlisting} 2498 a | b @\rewrite@ ?|?( a, b ) 2499 \end{lstlisting} 2500 2501 \predefined 2502 \begin{lstlisting} 2503 int ?|?( int, int ); 2504 unsigned int ?|?( unsigned int, unsigned int ); 2505 long int ?|?( long int, long int ); 2506 long unsigned int ?|?( long unsigned int, long unsigned int ); 2507 long long int ?|?( long long int, long long int ); 2508 long long unsigned int ?|?( long long unsigned int, long long unsigned int ); 2509 \end{lstlisting} 2510 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the 2511 rank of \lstinline$int$ there exist 2512 % Don't use predefined: keep this out of prelude.cf. 2513 \begin{lstlisting} 2514 int ?|?( X, X ); 2515 \end{lstlisting} 2516 2517 \semantics 2518 The interpretations of a bitwise inclusive OR expression are the interpretations of the 2519 corresponding function call. 2520 2521 2522 \subsection{Logical AND operator} 2523 2524 \begin{syntax} 2525 \lhs{logical-AND-expression} 2526 \rhs \nonterm{inclusive-OR-expression} 2527 \rhs \nonterm{logical-AND-expression} \lstinline$&&$ \nonterm{inclusive-OR-expression} 2528 \end{syntax} 2529 2530 \semantics The operands of the expression ``\lstinline$a && b$'' are treated as 2531 ``\lstinline$(int)((a)!=0)$'' and ``\lstinline$(int)((b)!=0)$'', which shall both be 2532 unambiguous. The expression has only one interpretation, which is of type \lstinline$int$. 2533 \begin{rationale} 2534 When the operands of a logical expression are values of built-in types, and ``\lstinline$!=$'' has 2535 not been redefined for those types, the compiler can optimize away the function calls. 2536 2537 A common C idiom omits comparisons to \lstinline$0$ in the controlling expressions of loops and 2538 \lstinline$if$ statements. For instance, the loop below iterates as long as \lstinline$rp$ points 2539 at a \lstinline$Rational$ value that is non-zero. 2540 2541 \begin{lstlisting} 2542 extern type Rational;@\use{Rational}@ 2543 extern const Rational 0;@\use{0}@ 2544 extern int ?!=?( Rational, Rational ); 2545 Rational *rp; 2546 2547 while ( rp && *rp ) { ... } 2548 \end{lstlisting} 2549 The logical expression calls the \lstinline$Rational$ inequality operator, passing 2550 it \lstinline$*rp$ and the \lstinline$Rational 0$, and getting a 1 or 0 as a result. In 2551 contrast, {\CC} would apply a programmer-defined \lstinline$Rational$-to-\lstinline$int$ 2552 conversion to \lstinline$*rp$ in the equivalent situation. The conversion to \lstinline$int$ would 2553 produce a general integer value, which is unfortunate, and possibly dangerous if the conversion was 2554 not written with this situation in mind. 2555 \end{rationale} 2556 2557 2558 \subsection{Logical OR operator} 2559 2560 \begin{syntax} 2561 \lhs{logical-OR-expression} 2562 \rhs \nonterm{logical-AND-expression} 2563 \rhs \nonterm{logical-OR-expression} \lstinline$||$ \nonterm{logical-AND-expression} 2564 \end{syntax} 2565 2566 \semantics 2567 2568 The operands of the expression ``\lstinline$a || b$'' are treated as ``\lstinline$(int)((a)!=0)$'' 2569 and ``\lstinline$(int)((b))!=0)$'', which shall both be unambiguous. The expression has only one 2570 interpretation, which is of type \lstinline$int$. 2571 2572 2573 \subsection{Conditional operator} 2574 2575 \begin{syntax} 2576 \lhs{conditional-expression} 2577 \rhs \nonterm{logical-OR-expression} 2578 \rhs \nonterm{logical-OR-expression} \lstinline$?$ \nonterm{expression} 2579 \lstinline$:$ \nonterm{conditional-expression} 2580 \end{syntax} 2581 2582 \semantics 2583 In the conditional expression\use{?:} ``\lstinline$a?b:c$'', if the second and 2584 third operands both have an interpretation with \lstinline$void$ type, then the expression has an 2585 interpretation with type \lstinline$void$, equivalent to 2586 \begin{lstlisting} 2587 ( int)(( a)!=0) ? ( void)( b) : ( void)( c) 2588 \end{lstlisting} 2589 2590 If the second and third operands both have interpretations with non-\lstinline$void$ types, the 2591 expression is treated as if it were the call ``\lstinline$cond((a)!=0, b, c)$'', 2592 with \lstinline$cond$ declared as 2593 \begin{lstlisting} 2594 forall( type T ) T cond( int, T, T ); 2595 2596 forall( dtype D ) void 2597 * cond( int, D *, void * ), 2598 * cond( int, void *, D * ); 2599 2600 forall( dtype D ) _atomic void 2601 * cond( int, _Atomic D *, _Atomic void * ), 2602 * cond( int, _Atomic void *, _Atomic D * ); 2603 2604 forall( dtype D ) const void 2605 * cond( int, const D *, const void * ), 2606 * cond( int, const void *, const D * ); 2607 2608 forall( dtype D ) restrict void 2609 * cond( int, restrict D *, restrict void * ), 2610 * cond( int, restrict void *, restrict D * ); 2611 2612 forall( dtype D ) volatile void 2613 * cond( int, volatile D *, volatile void * ), 2614 * cond( int, volatile void *, volatile D * ); 2615 2616 forall( dtype D ) _Atomic const void 2617 * cond( int, _Atomic const D *, _Atomic const void * ), 2618 * cond( int, _Atomic const void *, _Atomic const D * ); 2619 2620 forall( dtype D ) _Atomic restrict void 2621 * cond( int, _Atomic restrict D *, _Atomic restrict void * ), 2622 * cond( int, _Atomic restrict void *, _Atomic restrict D * ); 2623 2624 forall( dtype D ) _Atomic volatile void 2625 * cond( int, _Atomic volatile D *, _Atomic volatile void * ), 2626 * cond( int, _Atomic volatile void *, _Atomic volatile D * ); 2627 2628 forall( dtype D ) const restrict void 2629 * cond( int, const restrict D *, const restrict void * ), 2630 * cond( int, const restrict void *, const restrict D * ); 2631 2632 forall( dtype D ) const volatile void 2633 * cond( int, const volatile D *, const volatile void * ), 2634 * cond( int, const volatile void *, const volatile D * ); 2635 2636 forall( dtype D ) restrict volatile void 2637 * cond( int, restrict volatile D *, restrict volatile void * ), 2638 * cond( int, restrict volatile void *, restrict volatile D * ); 2639 2640 forall( dtype D ) _Atomic const restrict void 2641 * cond( int, _Atomic const restrict D *, _Atomic const restrict void * ), 2642 * cond( int, _Atomic const restrict void *, _Atomic const restrict D * ); 2643 2644 forall( dtype D ) _Atomic const volatile void 2645 * cond( int, _Atomic const volatile D *, _Atomic const volatile void * ), 2646 * cond( int, _Atomic const volatile void *, _Atomic const volatile D * ); 2647 2648 forall( dtype D ) _Atomic restrict volatile void 2649 * cond( int, _Atomic restrict volatile D *, 2650 _Atomic restrict volatile void * ), 2651 * cond( int, _Atomic restrict volatile void *, 2652 _Atomic restrict volatile D * ); 2653 2654 forall( dtype D ) const restrict volatile void 2655 * cond( int, const restrict volatile D *, 2656 const restrict volatile void * ), 2657 * cond( int, const restrict volatile void *, 2658 const restrict volatile D * ); 2659 2660 forall( dtype D ) _Atomic const restrict volatile void 2661 * cond( int, _Atomic const restrict volatile D *, 2662 _Atomic const restrict volatile void * ), 2663 * cond( int, _Atomic const restrict volatile void *, 2664 _Atomic const restrict volatile D * ); 2665 \end{lstlisting} 2666 2667 \begin{rationale} 2668 The object of the above is to apply the \Index{usual arithmetic conversion}s when the second and 2669 third operands have arithmetic type, and to combine the qualifiers of the second and third operands 2670 if they are pointers. 2671 \end{rationale} 2672 2673 \examples 2674 \begin{lstlisting} 2675 #include <stdlib.h> 2676 int i; 2677 long l; 2678 rand() ? i : l; 2679 \end{lstlisting} 2680 The best interpretation infers the expression's type to be \lstinline$long$ and applies the safe 2681 \lstinline$int$-to-\lstinline$long$ conversion to \lstinline$i$. 2682 2683 \begin{lstlisting} 2684 const int *cip; 2685 volatile int *vip; 2686 rand() ? cip : vip; 2687 \end{lstlisting} 2688 The expression has type \lstinline$const volatile int *$, with safe conversions applied to the second 2689 and third operands to add \lstinline$volatile$ and \lstinline$const$ qualifiers, respectively. 2690 2691 \begin{lstlisting} 2692 rand() ? cip : 0; 2693 \end{lstlisting} 2694 The expression has type \lstinline$const int *$, with a specialization conversion applied to 2695 \lstinline$0$. 2696 2697 2698 \subsection{Assignment operators} 2699 2700 \begin{syntax} 2701 \lhs{assignment-expression} 2702 \rhs \nonterm{conditional-expression} 2703 \rhs \nonterm{unary-expression} \nonterm{assignment-operator} 2704 \nonterm{assignment-expression} 2705 \lhs{assignment-operator} one of 2706 \rhs \lstinline$=$\ \ \lstinline$*=$\ \ \lstinline$/=$\ \ \lstinline$%=$\ \ \lstinline$+=$\ \ \lstinline$-=$\ \ 2707 \lstinline$<<=$\ \ \lstinline$>>=$\ \ \lstinline$&=$\ \ \lstinline$^=$\ \ \lstinline$|=$ 2708 \end{syntax} 2709 2710 \rewriterules 2711 Let ``\(\leftarrow\)'' be any of the assignment operators. Then 2712 \use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?} 2713 \use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?} 2714 \begin{lstlisting} 2715 a @$\leftarrow$@ b @\rewrite@ ?@$\leftarrow$@?( &( a ), b ) 2716 \end{lstlisting} 2717 2718 \semantics 2719 Each interpretation of the left operand of an assignment expression is considered separately. For 2720 each interpretation that is a bit-field or is declared with the \lstinline$register$ storage class 2721 specifier, the expression has one valid interpretation, with the type of the left operand. The 2722 right operand is cast to that type, and the assignment expression is ambiguous if either operand is. 2723 For the remaining interpretations, the expression is rewritten, and the interpretations of the 2724 assignment expression are the interpretations of the corresponding function call. Finally, all 2725 interpretations of the expression produced for the different interpretations of the left operand are 2726 combined to produce the interpretations of the expression as a whole; where interpretations have 2727 compatible result types, the best interpretations are selected in the manner described for function 2728 call expressions. 2729 2730 2731 \subsubsection{Simple assignment} 2732 2733 \predefined 2734 \begin{lstlisting} 2735 _Bool 2736 ?=?( volatile _Bool *, _Bool ), 2737 ?=?( volatile _Bool *, forall( dtype D ) D * ), 2738 ?=?( volatile _Bool *, forall( ftype F ) F * ), 2739 ?=?( _Atomic volatile _Bool *, _Bool ), 2740 ?=?( _Atomic volatile _Bool *, forall( dtype D ) D * ), 2741 ?=?( _Atomic volatile _Bool *, forall( ftype F ) F * ); 2742 char 2743 ?=?( volatile char *, char ), 2744 ?=?( _Atomic volatile char *, char ); 2745 unsigned char 2746 ?=?( volatile unsigned char *, unsigned char ), 2747 ?=?( _Atomic volatile unsigned char *, unsigned char ); 2748 signed char 2749 ?=?( volatile signed char *, signed char ), 2750 ?=?( _Atomic volatile signed char *, signed char ); 2751 short int 2752 ?=?( volatile short int *, short int ), 2753 ?=?( _Atomic volatile short int *, short int ); 2754 unsigned short 2755 ?=?( volatile unsigned int *, unsigned int ), 2756 ?=?( _Atomic volatile unsigned int *, unsigned int ); 2757 int 2758 ?=?( volatile int *, int ), 2759 ?=?( _Atomic volatile int *, int ); 2760 unsigned int 2761 ?=?( volatile unsigned int *, unsigned int ), 2762 ?=?( _Atomic volatile unsigned int *, unsigned int ); 2763 long int 2764 ?=?( volatile long int *, long int ), 2765 ?=?( _Atomic volatile long int *, long int ); 2766 unsigned long int 2767 ?=?( volatile unsigned long int *, unsigned long int ), 2768 ?=?( _Atomic volatile unsigned long int *, unsigned long int ); 2769 long long int 2770 ?=?( volatile long long int *, long long int ), 2771 ?=?( _Atomic volatile long long int *, long long int ); 2772 unsigned long long int 2773 ?=?( volatile unsigned long long int *, unsigned long long int ), 2774 ?=?( _Atomic volatile unsigned long long int *, unsigned long long int ); 2775 float 2776 ?=?( volatile float *, float ), 2777 ?=?( _Atomic volatile float *, float ); 2778 double 2779 ?=?( volatile double *, double ), 2780 ?=?( _Atomic volatile double *, double ); 2781 long double 2782 ?=?( volatile long double *, long double ), 2783 ?=?( _Atomic volatile long double *, long double ); 2784 _Complex float 2785 ?=?( volatile float *, float ), 2786 ?=?( _Atomic volatile float *, float ); 2787 _Complex double 2788 ?=?( volatile double *, double ), 2789 ?=?( _Atomic volatile double *, double ); 2790 _Complex long double 2791 ?=?( volatile _Complex long double *, _Complex long double ), 2792 ?=?( _Atomic volatile _Complex long double *, _Atomic _Complex long double ); 2793 2794 forall( ftype FT ) FT 2795 * ?=?( FT * volatile *, FT * ), 2796 * ?=?( FT * volatile *, forall( ftype F ) F * ); 2797 2798 forall( ftype FT ) FT const 2799 * ?=?( FT const * volatile *, FT const * ), 2800 * ?=?( FT const * volatile *, forall( ftype F ) F * ); 2801 2802 forall( ftype FT ) FT volatile 2803 * ?=?( FT volatile * volatile *, FT * ), 2804 * ?=?( FT volatile * volatile *, forall( ftype F ) F * ); 2805 2806 forall( ftype FT ) FT const 2807 * ?=?( FT const volatile * volatile *, FT const * ), 2808 * ?=?( FT const volatile * volatile *, forall( ftype F ) F * ); 2809 2810 forall( dtype DT ) DT 2811 * ?=?( DT * restrict volatile *, DT * ), 2812 * ?=?( DT * restrict volatile *, void * ), 2813 * ?=?( DT * restrict volatile *, forall( dtype D ) D * ), 2814 * ?=?( DT * _Atomic restrict volatile *, DT * ), 2815 * ?=?( DT * _Atomic restrict volatile *, void * ), 2816 * ?=?( DT * _Atomic restrict volatile *, forall( dtype D ) D * ); 2817 2818 forall( dtype DT ) DT _Atomic 2819 * ?=?( _Atomic DT * restrict volatile *, DT _Atomic * ), 2820 * ?=?( _Atomic DT * restrict volatile *, void * ), 2821 * ?=?( _Atomic DT * restrict volatile *, forall( dtype D ) D * ), 2822 * ?=?( _Atomic DT * _Atomic restrict volatile *, DT _Atomic * ), 2823 * ?=?( _Atomic DT * _Atomic restrict volatile *, void * ), 2824 * ?=?( _Atomic DT * _Atomic restrict volatile *, forall( dtype D ) D * ); 2825 2826 forall( dtype DT ) DT const 2827 * ?=?( DT const * restrict volatile *, DT const * ), 2828 * ?=?( DT const * restrict volatile *, void const * ), 2829 * ?=?( DT const * restrict volatile *, forall( dtype D ) D * ), 2830 * ?=?( DT const * _Atomic restrict volatile *, DT const * ), 2831 * ?=?( DT const * _Atomic restrict volatile *, void const * ), 2832 * ?=?( DT const * _Atomic restrict volatile *, forall( dtype D ) D * ); 2833 2834 forall( dtype DT ) DT restrict 2835 * ?=?( restrict DT * restrict volatile *, DT restrict * ), 2836 * ?=?( restrict DT * restrict volatile *, void * ), 2837 * ?=?( restrict DT * restrict volatile *, forall( dtype D ) D * ), 2838 * ?=?( restrict DT * _Atomic restrict volatile *, DT restrict * ), 2839 * ?=?( restrict DT * _Atomic restrict volatile *, void * ), 2840 * ?=?( restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * ); 2841 2842 forall( dtype DT ) DT volatile 2843 * ?=?( DT volatile * restrict volatile *, DT volatile * ), 2844 * ?=?( DT volatile * restrict volatile *, void volatile * ), 2845 * ?=?( DT volatile * restrict volatile *, forall( dtype D ) D * ), 2846 * ?=?( DT volatile * _Atomic restrict volatile *, DT volatile * ), 2847 * ?=?( DT volatile * _Atomic restrict volatile *, void volatile * ), 2848 * ?=?( DT volatile * _Atomic restrict volatile *, forall( dtype D ) D * ); 2849 2850 forall( dtype DT ) DT _Atomic const 2851 * ?=?( DT _Atomic const * restrict volatile *, DT _Atomic const * ), 2852 * ?=?( DT _Atomic const * restrict volatile *, void const * ), 2853 * ?=?( DT _Atomic const * restrict volatile *, forall( dtype D ) D * ), 2854 * ?=?( DT _Atomic const * _Atomic restrict volatile *, DT _Atomic const * ), 2855 * ?=?( DT _Atomic const * _Atomic restrict volatile *, void const * ), 2856 * ?=?( DT _Atomic const * _Atomic restrict volatile *, forall( dtype D ) D * ); 2857 2858 forall( dtype DT ) DT _Atomic restrict 2859 * ?=?( _Atomic restrict DT * restrict volatile *, DT _Atomic restrict * ), 2860 * ?=?( _Atomic restrict DT * restrict volatile *, void * ), 2861 * ?=?( _Atomic restrict DT * restrict volatile *, forall( dtype D ) D * ), 2862 * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, DT _Atomic restrict * ), 2863 * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, void * ), 2864 * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * ); 2865 2866 forall( dtype DT ) DT _Atomic volatile 2867 * ?=?( DT _Atomic volatile * restrict volatile *, DT _Atomic volatile * ), 2868 * ?=?( DT _Atomic volatile * restrict volatile *, void volatile * ), 2869 * ?=?( DT _Atomic volatile * restrict volatile *, forall( dtype D ) D * ), 2870 * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, DT _Atomic volatile * ), 2871 * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, void volatile * ), 2872 * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, forall( dtype D ) D * ); 2873 2874 forall( dtype DT ) DT const restrict 2875 * ?=?( DT const restrict * restrict volatile *, DT const restrict * ), 2876 * ?=?( DT const restrict * restrict volatile *, void const * ), 2877 * ?=?( DT const restrict * restrict volatile *, forall( dtype D ) D * ), 2878 * ?=?( DT const restrict * _Atomic restrict volatile *, DT const restrict * ), 2879 * ?=?( DT const restrict * _Atomic restrict volatile *, void const * ), 2880 * ?=?( DT const restrict * _Atomic restrict volatile *, forall( dtype D ) D * ); 2881 2882 forall( dtype DT ) DT const volatile 2883 * ?=?( DT const volatile * restrict volatile *, DT const volatile * ), 2884 * ?=?( DT const volatile * restrict volatile *, void const volatile * ), 2885 * ?=?( DT const volatile * restrict volatile *, forall( dtype D ) D * ), 2886 * ?=?( DT const volatile * _Atomic restrict volatile *, DT const volatile * ), 2887 * ?=?( DT const volatile * _Atomic restrict volatile *, void const volatile * ), 2888 * ?=?( DT const volatile * _Atomic restrict volatile *, forall( dtype D ) D * ); 2889 2890 forall( dtype DT ) DT restrict volatile 2891 * ?=?( DT restrict volatile * restrict volatile *, DT restrict volatile * ), 2892 * ?=?( DT restrict volatile * restrict volatile *, void volatile * ), 2893 * ?=?( DT restrict volatile * restrict volatile *, forall( dtype D ) D * ), 2894 * ?=?( DT restrict volatile * _Atomic restrict volatile *, DT restrict volatile * ), 2895 * ?=?( DT restrict volatile * _Atomic restrict volatile *, void volatile * ), 2896 * ?=?( DT restrict volatile * _Atomic restrict volatile *, forall( dtype D ) D * ); 2897 2898 forall( dtype DT ) DT _Atomic const restrict 2899 * ?=?( DT _Atomic const restrict * restrict volatile *, 2900 DT _Atomic const restrict * ), 2901 * ?=?( DT _Atomic const restrict * restrict volatile *, 2902 void const * ), 2903 * ?=?( DT _Atomic const restrict * restrict volatile *, 2904 forall( dtype D ) D * ), 2905 * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *, 2906 DT _Atomic const restrict * ), 2907 * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *, 2908 void const * ), 2909 * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *, 2910 forall( dtype D ) D * ); 2911 2912 forall( dtype DT ) DT _Atomic const volatile 2913 * ?=?( DT _Atomic const volatile * restrict volatile *, 2914 DT _Atomic const volatile * ), 2915 * ?=?( DT _Atomic const volatile * restrict volatile *, 2916 void const volatile * ), 2917 * ?=?( DT _Atomic const volatile * restrict volatile *, 2918 forall( dtype D ) D * ), 2919 * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *, 2920 DT _Atomic const volatile * ), 2921 * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *, 2922 void const volatile * ), 2923 * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *, 2924 forall( dtype D ) D * ); 2925 2926 forall( dtype DT ) DT _Atomic restrict volatile 2927 * ?=?( DT _Atomic restrict volatile * restrict volatile *, 2928 DT _Atomic restrict volatile * ), 2929 * ?=?( DT _Atomic restrict volatile * restrict volatile *, 2930 void volatile * ), 2931 * ?=?( DT _Atomic restrict volatile * restrict volatile *, 2932 forall( dtype D ) D * ), 2933 * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *, 2934 DT _Atomic restrict volatile * ), 2935 * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *, 2936 void volatile * ), 2937 * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *, 2938 forall( dtype D ) D * ); 2939 2940 forall( dtype DT ) DT const restrict volatile 2941 * ?=?( DT const restrict volatile * restrict volatile *, 2942 DT const restrict volatile * ), 2943 * ?=?( DT const restrict volatile * restrict volatile *, 2944 void const volatile * ), 2945 * ?=?( DT const restrict volatile * restrict volatile *, 2946 forall( dtype D ) D * ), 2947 * ?=?( DT const restrict volatile * _Atomic restrict volatile *, 2948 DT const restrict volatile * ), 2949 * ?=?( DT const restrict volatile * _Atomic restrict volatile *, 2950 void const volatile * ), 2951 * ?=?( DT const restrict volatile * _Atomic restrict volatile *, 2952 forall( dtype D ) D * ); 2953 2954 forall( dtype DT ) DT _Atomic const restrict volatile 2955 * ?=?( DT _Atomic const restrict volatile * restrict volatile *, 2956 DT _Atomic const restrict volatile * ), 2957 * ?=?( DT _Atomic const restrict volatile * restrict volatile *, 2958 void const volatile * ), 2959 * ?=?( DT _Atomic const restrict volatile * restrict volatile *, 2960 forall( dtype D ) D * ), 2961 * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *, 2962 DT _Atomic const restrict volatile * ), 2963 * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *, 2964 void const volatile * ), 2965 * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *, 2966 forall( dtype D ) D * ); 2967 2968 forall( dtype DT ) void 2969 * ?=?( void * restrict volatile *, DT * ); 2970 2971 forall( dtype DT ) void const 2972 * ?=?( void const * restrict volatile *, DT const * ); 2973 2974 forall( dtype DT ) void volatile 2975 * ?=?( void volatile * restrict volatile *, DT volatile * ); 2976 2977 forall( dtype DT ) void const volatile 2978 * ?=?( void const volatile * restrict volatile *, DT const volatile * ); 2979 \end{lstlisting} 2980 \begin{rationale} 2981 The pattern of overloadings for simple assignment resembles that of pointer increment and decrement, 2982 except that the polymorphic pointer assignment functions declare a \lstinline$dtype$ parameter, 2983 instead of a \lstinline$type$ parameter, because the left operand may be a pointer to an incomplete 2984 type. 2985 \end{rationale} 2986 2987 For every complete structure or union type \lstinline$S$ there exist 2988 % Don't use predefined: keep this out of prelude.cf. 2989 \begin{lstlisting} 2990 S ?=?( S volatile *, S ), ?=?( S _Atomic volatile *, S ); 2991 \end{lstlisting} 2992 2993 For every extended integer type \lstinline$X$ there exist 2994 % Don't use predefined: keep this out of prelude.cf. 2995 \begin{lstlisting} 2996 X ?=?( X volatile *, X ), ?=?( X _Atomic volatile *, X ); 2997 \end{lstlisting} 2998 2999 For every complete enumerated type \lstinline$E$ there exist 3000 % Don't use predefined: keep this out of prelude.cf. 3001 \begin{lstlisting} 3002 E ?=?( E volatile *, int ), ?=?( E _Atomic volatile *, int ); 3003 \end{lstlisting} 3004 \begin{rationale} 3005 The right-hand argument is \lstinline$int$ because enumeration constants have type \lstinline$int$. 3006 \end{rationale} 3007 3008 \semantics 3009 The structure assignment functions provide member-wise assignment; each non-array member and each 3010 element of each array member of the right argument is assigned to the corresponding member or 3011 element of the left argument using the assignment function defined for its type. All other 3012 assignment functions have the same effect as the corresponding C assignment expression. 3013 \begin{rationale} 3014 Note that, by default, union assignment\index{deficiencies!union assignment} uses C semantics---that 3015 is, bitwise copy---even if some of the union members have programmer-defined assignment functions. 3016 \end{rationale} 3017 3018 3019 \subsubsection{Compound assignment} 3020 3021 \predefined 3022 \begin{lstlisting} 3023 forall( type T ) T 3024 * ?+=?( T * restrict volatile *, ptrdiff_t ), 3025 * ?-=?( T * restrict volatile *, ptrdiff_t ), 3026 * ?+=?( T * _Atomic restrict volatile *, ptrdiff_t ), 3027 * ?-=?( T * _Atomic restrict volatile *, ptrdiff_t ); 3028 3029 forall( type T ) T _Atomic 3030 * ?+=?( T _Atomic * restrict volatile *, ptrdiff_t ), 3031 * ?-=?( T _Atomic * restrict volatile *, ptrdiff_t ), 3032 * ?+=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ), 3033 * ?-=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ); 3034 3035 forall( type T ) T const 3036 * ?+=?( T const * restrict volatile *, ptrdiff_t ), 3037 * ?-=?( T const * restrict volatile *, ptrdiff_t ), 3038 * ?+=?( T const * _Atomic restrict volatile *, ptrdiff_t ), 3039 * ?-=?( T const * _Atomic restrict volatile *, ptrdiff_t ); 3040 3041 forall( type T ) T restrict 3042 * ?+=?( T restrict * restrict volatile *, ptrdiff_t ), 3043 * ?-=?( T restrict * restrict volatile *, ptrdiff_t ), 3044 * ?+=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ), 3045 * ?-=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ); 3046 3047 forall( type T ) T volatile 3048 * ?+=?( T volatile * restrict volatile *, ptrdiff_t ), 3049 * ?-=?( T volatile * restrict volatile *, ptrdiff_t ), 3050 * ?+=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ), 3051 * ?-=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ); 3052 3053 forall( type T ) T _Atomic const 3054 * ?+=?( T _Atomic const restrict volatile *, ptrdiff_t ), 3055 * ?-=?( T _Atomic const restrict volatile *, ptrdiff_t ), 3056 * ?+=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ), 3057 * ?-=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ); 3058 3059 forall( type T ) T _Atomic restrict 3060 * ?+=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ), 3061 * ?-=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ), 3062 * ?+=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ), 3063 * ?-=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ); 3064 3065 forall( type T ) T _Atomic volatile 3066 * ?+=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ), 3067 * ?-=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ), 3068 * ?+=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ), 3069 * ?-=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ); 3070 3071 forall( type T ) T const restrict 3072 * ?+=?( T const restrict * restrict volatile *, ptrdiff_t ), 3073 * ?-=?( T const restrict * restrict volatile *, ptrdiff_t ), 3074 * ?+=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ), 3075 * ?-=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ); 3076 3077 forall( type T ) T const volatile 3078 * ?+=?( T const volatile * restrict volatile *, ptrdiff_t ), 3079 * ?-=?( T const volatile * restrict volatile *, ptrdiff_t ), 3080 * ?+=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ), 3081 * ?-=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ); 3082 3083 forall( type T ) T restrict volatile 3084 * ?+=?( T restrict volatile * restrict volatile *, ptrdiff_t ), 3085 * ?-=?( T restrict volatile * restrict volatile *, ptrdiff_t ), 3086 * ?+=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 3087 * ?-=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 3088 3089 forall( type T ) T _Atomic const restrict 3090 * ?+=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ), 3091 * ?-=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ), 3092 * ?+=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ), 3093 * ?-=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ); 3094 3095 forall( type T ) T _Atomic const volatile 3096 * ?+=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ), 3097 * ?-=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ), 3098 * ?+=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ), 3099 * ?-=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ); 3100 3101 forall( type T ) T _Atomic restrict volatile 3102 * ?+=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ), 3103 * ?-=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ), 3104 * ?+=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 3105 * ?-=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 3106 3107 forall( type T ) T const restrict volatile 3108 * ?+=?( T const restrict volatile * restrict volatile *, ptrdiff_t ), 3109 * ?-=?( T const restrict volatile * restrict volatile *, ptrdiff_t ), 3110 * ?+=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 3111 * ?-=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 3112 3113 forall( type T ) T _Atomic const restrict volatile 3114 * ?+=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ), 3115 * ?-=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ), 3116 * ?+=?( T _Atomic const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ), 3117 * ?-=?( T _Atomic const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ); 3118 3119 _Bool 3120 ?*=?( _Bool volatile *, _Bool ), 3121 ?/=?( _Bool volatile *, _Bool ), 3122 ?+=?( _Bool volatile *, _Bool ), 3123 ?-=?( _Bool volatile *, _Bool ), 3124 ?%=?( _Bool volatile *, _Bool ), 3125 ?<<=?( _Bool volatile *, int ), 3126 ?>>=?( _Bool volatile *, int ), 3127 ?&=?( _Bool volatile *, _Bool ), 3128 ?^=?( _Bool volatile *, _Bool ), 3129 ?|=?( _Bool volatile *, _Bool ); 3130 char 3131 ?*=?( char volatile *, char ), 3132 ?/=?( char volatile *, char ), 3133 ?+=?( char volatile *, char ), 3134 ?-=?( char volatile *, char ), 3135 ?%=?( char volatile *, char ), 3136 ?<<=?( char volatile *, int ), 3137 ?>>=?( char volatile *, int ), 3138 ?&=?( char volatile *, char ), 3139 ?^=?( char volatile *, char ), 3140 ?|=?( char volatile *, char ); 3141 unsigned char 3142 ?*=?( unsigned char volatile *, 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 *, int ), 3148 ?>>=?( unsigned char volatile *, int ), 3149 ?&=?( unsigned char volatile *, unsigned char ), 3150 ?^=?( unsigned char volatile *, unsigned char ), 3151 ?|=?( unsigned char volatile *, unsigned char ); 3152 signed char 3153 ?*=?( signed char volatile *, 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 *, int ), 3159 ?>>=?( signed char volatile *, int ), 3160 ?&=?( signed char volatile *, signed char ), 3161 ?^=?( signed char volatile *, signed char ), 3162 ?|=?( signed char volatile *, signed char ); 3163 short int 3164 ?*=?( short int volatile *, 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 *, int ), 3170 ?>>=?( short int volatile *, int ), 3171 ?&=?( short int volatile *, short int ), 3172 ?^=?( short int volatile *, short int ), 3173 ?|=?( short int volatile *, short int ); 3174 unsigned short int 3175 ?*=?( unsigned short int volatile *, 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 *, int ), 3181 ?>>=?( unsigned short int volatile *, int ), 3182 ?&=?( unsigned short int volatile *, unsigned short int ), 3183 ?^=?( unsigned short int volatile *, unsigned short int ), 3184 ?|=?( unsigned short int volatile *, unsigned short int ); 3185 int 3186 ?*=?( int volatile *, 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 unsigned int 3197 ?*=?( unsigned int volatile *, 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 *, int ), 3203 ?>>=?( unsigned int volatile *, int ), 3204 ?&=?( unsigned int volatile *, unsigned int ), 3205 ?^=?( unsigned int volatile *, unsigned int ), 3206 ?|=?( unsigned int volatile *, unsigned int ); 3207 long int 3208 ?*=?( long int volatile *, 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 *, int ), 3214 ?>>=?( long int volatile *, int ), 3215 ?&=?( long int volatile *, long int ), 3216 ?^=?( long int volatile *, long int ), 3217 ?|=?( long int volatile *, long int ); 3218 unsigned long int 3219 ?*=?( unsigned long int volatile *, 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 *, int ), 3225 ?>>=?( unsigned long int volatile *, int ), 3226 ?&=?( unsigned long int volatile *, unsigned long int ), 3227 ?^=?( unsigned long int volatile *, unsigned long int ), 3228 ?|=?( unsigned long int volatile *, unsigned long int ); 3229 long long int 3230 ?*=?( long long int volatile *, 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 *, int ), 3236 ?>>=?( long long int volatile *, int ), 3237 ?&=?( long long int volatile *, long long int ), 3238 ?^=?( long long int volatile *, long long int ), 3239 ?|=?( long long int volatile *, long long int ); 3240 unsigned long long int 3241 ?*=?( unsigned long long int volatile *, 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 *, int ), 3247 ?>>=?( unsigned long long int volatile *, int ), 3248 ?&=?( unsigned long long int volatile *, unsigned long long int ), 3249 ?^=?( unsigned long long int volatile *, unsigned long long int ), 3250 ?|=?( unsigned long long int volatile *, unsigned long long int ); 3251 float 3252 ?*=?( float volatile *, float ), 3253 ?/=?( float volatile *, float ), 3254 ?+=?( float volatile *, float ), 3255 ?-=?( float volatile *, float ); 3256 double 3257 ?*=?( double volatile *, double ), 3258 ?/=?( double volatile *, double ), 3259 ?+=?( double volatile *, double ), 3260 ?-=?( double volatile *, double ); 3261 long double 3262 ?*=?( long double volatile *, long double ), 3263 ?/=?( long double volatile *, long double ), 3264 ?+=?( long double volatile *, long double ), 3265 ?-=?( long double volatile *, long double ); 3266 _Complex float 3267 ?*=?( _Complex float volatile *, _Complex float ), 3268 ?/=?( _Complex float volatile *, _Complex float ), 3269 ?+=?( _Complex float volatile *, _Complex float ), 3270 ?-=?( _Complex float volatile *, _Complex float ); 3271 _Complex double 3272 ?*=?( _Complex double volatile *, _Complex double ), 3273 ?/=?( _Complex double volatile *, _Complex double ), 3274 ?+=?( _Complex double volatile *, _Complex double ), 3275 ?-=?( _Complex double volatile *, _Complex double ); 3276 _Complex long double 3277 ?*=?( _Complex long double volatile *, _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 \end{lstlisting} 3282 3283 For every extended integer type \lstinline$X$ there exist 3284 % Don't use predefined: keep this out of prelude.cf. 3285 \begin{lstlisting} 3286 ?*=?( X volatile *, X ), 3287 ?/=?( X volatile *, X ), 3288 ?+=?( X volatile *, X ), 3289 ?-=?( X volatile *, X ), 3290 ?%=?( X volatile *, X ), 3291 ?<<=?( X volatile *, int ), 3292 ?>>=?( X volatile *, int ), 3293 ?&=?( X volatile *, X ), 3294 ?^=?( X volatile *, X ), 3295 ?|=?( X volatile *, X ); 3296 \end{lstlisting} 3297 3298 For every complete enumerated type \lstinline$E$ there exist 3299 % Don't use predefined: keep this out of prelude.cf. 3300 \begin{lstlisting} 3301 ?*=?( E volatile *, E ), 3302 ?/=?( E volatile *, E ), 3303 ?+=?( E volatile *, E ), 3304 ?-=?( E volatile *, E ), 3305 ?%=?( E volatile *, E ), 3306 ?<<=?( E volatile *, int ), 3307 ?>>=?( E volatile *, int ), 3308 ?&=?( E volatile *, E ), 3309 ?^=?( E volatile *, E ), 3310 ?|=?( E volatile *, E ); 3311 \end{lstlisting} 3312 3313 3314 \subsection{Comma operator} 3315 3316 \begin{syntax} 3317 \lhs{expression} 3318 \rhs \nonterm{assignment-expression} 3319 \rhs \nonterm{expression} \lstinline$,$ \nonterm{assignment-expression} 3320 \end{syntax} 3321 3322 \semantics 3323 In the comma expression ``\lstinline$a, b$'', the first operand is interpreted as 3324 ``\lstinline$( void )(a)$'', which shall be unambiguous\index{ambiguous interpretation}. The 3325 interpretations of the expression are the interpretations of the second operand. 3326 3327 3328 \section{Constant expressions} 3329 3330 3331 \section{Declarations} 3332 3333 \begin{syntax} 3334 \oldlhs{declaration} 3335 \rhs \nonterm{type-declaration} 3336 \rhs \nonterm{spec-definition} 3337 \end{syntax} 3338 3339 \constraints 3340 If an identifier has \Index{no linkage}, there shall be no more than one declaration of the 3341 identifier ( in a declarator or type specifier ) with compatible types in the same scope and in the 3342 same name space, except that: 3343 \begin{itemize} 3344 \item 3345 a typedef name may be redefined to denote the same type as it currently does, provided that type is 3346 not a variably modified type; 3347 \item 3348 tags may be redeclared as specified in section 6.7.2.3 of the {\c11} standard. 3349 \end{itemize} 3350 \begin{rationale} 3351 This constraint adds the phrase ``with compatible types'' to the {\c11} constraint, to allow 3352 overloading. 3353 \end{rationale} 3354 3355 An identifier declared by a type declaration shall not be redeclared as a parameter in a function 3356 definition whose declarator includes an identifier list. 3357 \begin{rationale} 3358 This restriction echos {\c11}'s ban on the redeclaration of typedef names as parameters. This 3359 avoids an ambiguity between old-style function declarations and new-style function prototypes: 3360 \begin{lstlisting} 3361 void f( Complex, // ... 3000 characters ... 3362 void g( Complex, // ... 3000 characters ... 3363 int Complex; { ... } 3364 \end{lstlisting} 3365 Without the rule, \lstinline$Complex$ would be a type in the first case, and a parameter name in the 3366 second. 3367 \end{rationale} 3368 3369 3370 \setcounter{subsection}{1} 3371 \subsection{Type specifiers} 3372 3373 \begin{syntax} 3374 \oldlhs{type-specifier} 3375 \rhs \nonterm{forall-specifier} 3376 \end{syntax} 3377 3378 \semantics 3379 Forall specifiers are discussed in \VRef{forall}. 3380 3381 3382 \subsubsection{Structure and union specifiers} 3383 3384 \semantics 3385 \CFA extends the {\c11} definition of \define{anonymous structure} to include structure 3386 specifiers with tags, and extends the {\c11} definition of \define{anonymous union} to include union 3387 specifiers with tags. 3388 \begin{rationale} 3389 This extension imitates an extension in the Plan 9 C compiler \cite{Thompson90new}. 3390 \end{rationale} 3391 3392 \examples 3393 \begin{lstlisting} 3394 struct point {@\impl{point}@ 3395 int x, y; 3396 }; 3397 struct color_point {@\impl{color_point}@ 3398 enum { RED, BLUE, GREEN } color; 3399 struct point; 3400 }; 3401 struct color_point cp; 3402 cp.x = 0; 3403 cp.color = RED; 3404 3405 struct literal {@\impl{literal}@ 3406 enum { NUMBER, STRING } tag; 3407 union { 3408 double n; 3409 char *s; 3410 }; 3411 }; 3412 struct literal *next; 3413 int length; 3414 extern int strlen( const char * ); 3415 ... 3416 if ( next->tag == STRING ) length = strlen( next->s ); 3417 \end{lstlisting} 3418 3419 3420 \setcounter{subsubsection}{4} 3421 \subsubsection{Forall specifiers} 3422 \label{forall} 3423 3424 \begin{syntax} 3425 \lhs{forall-specifier} 3426 \rhs \lstinline$forall$ \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$ 3427 \end{syntax} 3428 3429 \begin{comment} 3430 \constraints 3431 If the \nonterm{declaration-specifiers} of a declaration that contains a \nonterm{forall-specifier} 3432 declares a structure or union tag, the types of the members of the structure or union shall not use 3433 any of the type identifiers declared by the \nonterm{type-parameter-list}. 3434 \begin{rationale} 3435 This sort of declaration is illegal because the scope of the type identifiers ends at the end of the 3436 declaration, but the scope of the structure tag does not. 3437 \begin{lstlisting} 3438 forall( type T ) struct Pair { T a, b; } mkPair( T, T ); // illegal 3439 \end{lstlisting} 3440 If an instance of \lstinline$struct Pair$ was declared later in the current scope, what would the 3441 members' type be? 3442 \end{rationale} 3443 \end{comment} 3444 3445 \semantics 3446 The \nonterm{type-parameter-list}s and assertions of the \nonterm{forall-specifier}s declare type 3447 identifiers, function and object identifiers with \Index{no linkage}. 3448 3449 If, in the declaration ``\lstinline$T D$'', \lstinline$T$ contains \nonterm{forall-specifier}s and 3450 \lstinline$D$ has the form 3451 \begin{lstlisting} 3452 D( @\normalsize\nonterm{parameter-type-list}@ ) 3453 \end{lstlisting} 3454 then a type identifier declared by one of the \nonterm{forall-specifier}s is an \define{inferred 3455 parameter} of the function declarator if and only if it is not an inferred parameter of a function 3456 declarator in \lstinline$D$, and it is used in the type of a parameter in the following 3457 \nonterm{type-parameter-list} or it and an inferred parameter are used as arguments of a 3458 \Index{specification} in one of the \nonterm{forall-specifier}s. The identifiers declared by 3459 assertions that use an inferred parameter of a function declarator are \Index{assertion parameter}s 3460 of that function declarator. 3461 3462 \begin{comment} 3463 \begin{rationale} 3464 Since every inferred parameter is used by some parameter, inference can be understood as a single 3465 bottom-up pass over the expression tree, that only needs to apply local reasoning at each node. 3466 3467 If this restriction were lifted, it would be possible to write 3468 \begin{lstlisting} 3469 forall( type T ) T * alloc( void );@\use{alloc}@ 3470 int *p = alloc(); 3471 \end{lstlisting} 3472 Here \lstinline$alloc()$ would receive \lstinline$int$ as an inferred argument, and return an 3473 \lstinline$int *$. In general, if a call to \lstinline$alloc()$ is a subexpression of an expression 3474 involving polymorphic functions and overloaded identifiers, there could be considerable distance 3475 between the call and the subexpression that causes \lstinline$T$ to be bound. 3476 3477 With the current restriction, \lstinline$alloc()$ must be given an argument that determines 3478 \lstinline$T$: 3479 \begin{lstlisting} 3480 forall( type T ) T * alloc( T initial_value );@\use{alloc}@ 3481 \end{lstlisting} 3482 \end{rationale} 3483 \end{comment} 3484 3485 If a function declarator is part of a function definition, its inferred parameters and assertion 3486 parameters have \Index{block scope}; otherwise, identifiers declared by assertions have a 3487 \define{declaration scope}, which terminates at the end of the \nonterm{declaration}. 3488 3489 A function type that has at least one inferred parameter is a \define{polymorphic function} type. 3490 Function types with no inferred parameters are \define{monomorphic function} types. One function 3491 type is \define{less polymorphic} than another if it has fewer inferred parameters, or if it has the 3492 same number of inferred parameters and fewer of its explicit parameters have types that depend on an 3493 inferred parameter. 3494 3495 The names of inferred parameters and the order of identifiers in forall specifiers are not relevant 3496 to polymorphic function type compatibility. Let $f$ and $g$ be two polymorphic function types with 3497 the same number of inferred parameters, and let $f_i$ and $g_i$ be the inferred parameters of $f$ 3498 and $g$ in their order of occurance in the function types' \nonterm{parameter-type-list}s. Let $f'$ 3499 be $f$ with every occurrence of $f_i$ replaced by $g_i$, for all $i$. Then $f$ and $g$ are 3500 \Index{compatible type}s if $f'$'s and $g$'s return types and parameter lists are compatible, and if 3501 for every assertion parameter of $f'$ there is an assertion parameter in $g$ with the same 3502 identifier and compatible type, and vice versa. 3503 3504 \examples 3505 Consider these analogous monomorphic and polymorphic declarations. 3506 \begin{lstlisting} 3507 int fi( int ); 3508 forall( type T ) T fT( T ); 3509 \end{lstlisting} 3510 \lstinline$fi()$ takes an \lstinline$int$ and returns an \lstinline$int$. \lstinline$fT()$ takes a 3511 \lstinline$T$ and returns a \lstinline$T$, for any type \lstinline$T$. 3512 \begin{lstlisting} 3513 int (*pfi )( int ) = fi; 3514 forall( type T ) T (*pfT )( T ) = fT; 3515 \end{lstlisting} 3516 \lstinline$pfi$ and \lstinline$pfT$ are pointers to functions. \lstinline$pfT$ is not 3517 polymorphic, but the function it points at is. 3518 \begin{lstlisting} 3519 int (*fvpfi( void ))( int ) { 3520 return pfi; 3521 } 3522 forall( type T ) T (*fvpfT( void ))( T ) { 3523 return pfT; 3524 } 3525 \end{lstlisting} 3526 \lstinline$fvpfi()$ and \lstinline$fvpfT()$ are functions taking no arguments and returning pointers 3527 to functions. \lstinline$fvpfT()$ is monomorphic, but the function that its return value points 3528 at is polymorphic. 3529 \begin{lstlisting} 3530 forall( type T ) int ( *fTpfi( T ) )( int ); 3531 forall( type T ) T ( *fTpfT( T ) )( T ); 3532 forall( type T, type U ) U ( *fTpfU( T ) )( U ); 3533 \end{lstlisting} 3534 \lstinline$fTpfi()$ is a polymorphic function that returns a pointer to a monomorphic function 3535 taking an integer and returning an integer. It could return \lstinline$pfi$. \lstinline$fTpfT()$ 3536 is subtle: it is a polymorphic function returning a \emph{monomorphic} function taking and returning 3537 \lstinline$T$, where \lstinline$T$ is an inferred parameter of \lstinline$fTpfT()$. For instance, 3538 in the expression ``\lstinline$fTpfT(17)$'', \lstinline$T$ is inferred to be \lstinline$int$, and 3539 the returned value would have type \lstinline$int ( * )( int )$. ``\lstinline$fTpfT(17)(13)$'' and 3540 ``\lstinline$fTpfT("yes")("no")$'' are legal, but ``\lstinline$fTpfT(17)("no")$'' is illegal. 3541 \lstinline$fTpfU()$ is polymorphic ( in type \lstinline$T$), and returns a pointer to a function that 3542 is polymorphic ( in type \lstinline$U$). ``\lstinline$f5(17)("no")$'' is a legal expression of type 3543 \lstinline$char *$. 3544 \begin{lstlisting} 3545 forall( type T, type U, type V ) U * f( T *, U, V * const ); 3546 forall( type U, type V, type W ) U * g( V *, U, W * const ); 3547 \end{lstlisting} 3548 The functions \lstinline$f()$ and \lstinline$g()$ have compatible types. Let \(f\) and \(g\) be 3549 their types; then \(f_1\) = \lstinline$T$, \(f_2\) = \lstinline$U$, \(f_3\) = \lstinline$V$, \(g_1\) 3550 = \lstinline$V$, \(g_2\) = \lstinline$U$, and \(g_3\) = \lstinline$W$. Replacing every \(f_i\) 3551 by \(g_i\) in \(f\) gives 3552 \begin{lstlisting} 3553 forall( type V, type U, type W ) U * f( V *, U, W * const ); 3554 \end{lstlisting} 3555 which has a return type and parameter list that is compatible with \(g\). 3556 \begin{rationale} 3557 The word ``\lstinline$type$'' in a forall specifier is redundant at the moment, but I want to leave 3558 room for inferred parameters of ordinary types in case parameterized types get added one day. 3559 3560 Even without parameterized types, I might try to allow 3561 \begin{lstlisting} 3562 forall( int n ) int sum( int vector[n] ); 3563 \end{lstlisting} 3564 but C currently rewrites array parameters as pointer parameters, so the effects of such a change 3565 require more thought. 3566 \end{rationale} 3567 3568 \begin{rationale} 3569 A polymorphic declaration must do two things: it must introduce type parameters, and it must apply 3570 assertions to those types. Adding this to existing C declaration syntax and semantics was delicate, 3571 and not entirely successful. 3572 3573 C depends on declaration-before-use, so a forall specifier must introduce type names before they can 3574 be used in the declaration specifiers. This could be done by making the forall specifier part of 3575 the declaration specifiers, or by making it a new introductory clause of declarations. 3576 3577 Assertions are also part of polymorphic function types, because it must be clear which functions 3578 have access to the assertion parameters declared by the assertions. All attempts to put assertions 3579 inside an introductory clause produced complex semantics and confusing code. Building them into the 3580 declaration specifiers could be done by placing them in the function's parameter list, or in a 3581 forall specifier that is a declaration specifier. Assertions are also used with type parameters of 3582 specifications, and by type declarations. For consistency's sake it seems best to attach assertions 3583 to the type declarations in forall specifiers, which means that forall specifiers must be 3584 declaration specifiers. 3585 \end{rationale} 3586 %HERE 3587 3588 3589 \subsection{Type qualifiers} 3590 3591 \CFA defines a new type qualifier \lstinline$lvalue$\impl{lvalue}\index{lvalue}. 3592 \begin{syntax} 3593 \oldlhs{type-qualifier} 3594 \rhs \lstinline$lvalue$ 3595 \end{syntax} 3596 3597 \constraints 3598 \lstinline$restrict$\index{register@{\lstinline$restrict$}} Types other than type parameters and 3599 pointer types whose referenced type is an object type shall not be restrict-qualified. 3600 3601 \semantics 3602 An object's type may be a restrict-qualified type parameter. \lstinline$restrict$ does not 3603 establish any special semantics in that case. 3604 3605 \begin{rationale} 3606 \CFA loosens the constraint on the restrict qualifier so that restrict-qualified pointers may be 3607 passed to polymorphic functions. 3608 \end{rationale} 3609 3610 \lstinline$lvalue$ may be used to qualify the return type of a function type. Let \lstinline$T$ be 3611 an unqualified version of a type; then the result of calling a function with return type 3612 \lstinline$lvalue T$ is a \Index{modifiable lvalue} of type \lstinline$T$. 3613 \lstinline$const$\use{const} and \lstinline$volatile$\use{volatile} qualifiers may also be added to 3614 indicate that the function result is a constant or volatile lvalue. 3615 \begin{rationale} 3616 The \lstinline$const$ and \lstinline$volatile$ qualifiers can only be sensibly used to qualify the 3617 return type of a function if the \lstinline$lvalue$ qualifier is also used. 3618 \end{rationale} 3619 3620 An {lvalue}-qualified type may be used in a \Index{cast expression} if the operand is an lvalue; the 3621 result of the expression is an lvalue. 3622 3623 \begin{rationale} 3624 \lstinline$lvalue$ provides some of the functionality of {\CC}'s ``\lstinline$T&$'' ( reference to 3625 object of type \lstinline$T$) type. Reference types have four uses in {\CC}. 3626 \begin{itemize} 3627 \item 3628 They are necessary for user-defined operators that return lvalues, such as ``subscript'' and 3629 ``dereference''. 3630 3631 \item 3632 A reference can be used to define an alias for a complicated lvalue expression, as a way of getting 3633 some of the functionality of the Pascal \lstinline$with$ statement. The following {\CC} code gives 3634 an example. 3635 \begin{lstlisting} 3636 { 3637 char &code = long_name.some_field[i].data->code; 3638 code = toupper( code ); 3639 } 3640 \end{lstlisting} 3641 This is not very useful. 3642 3643 \item 3644 A reference parameter can be used to allow a function to modify an argument without forcing the 3645 caller to pass the address of the argument. This is most useful for user-defined assignment 3646 operators. In {\CC}, plain assignment is done by a function called ``\lstinline$operator=$'', and 3647 the two expressions 3648 \begin{lstlisting} 3649 a = b; 3650 operator=( a, b ); 3651 \end{lstlisting} 3652 are equivalent. If \lstinline$a$ and \lstinline$b$ are of type \lstinline$T$, then the first 3653 parameter of \lstinline$operator=$ must have type ``\lstinline$T&$''. It cannot have type 3654 \lstinline$T$, because then assignment couldn't alter the variable, and it can't have type 3655 ``\lstinline$T *$'', because the assignment would have to be written ``\lstinline$&a = b;$''. 3656 3657 In the case of user-defined operators, this could just as well be handled by using pointer types and 3658 by changing the rewrite rules so that ``\lstinline$a = b;$'' is equivalent to 3659 ``\lstinline$operator=(&( a), b )$''. Reference parameters of ``normal'' functions are Bad Things, 3660 because they remove a useful property of C function calls: an argument can only be modified by a 3661 function if it is preceded by ``\lstinline$&$''. 3662 3663 \item 3664 References to \Index{const-qualified} types can be used instead of value parameters. Given the 3665 {\CC} function call ``\lstinline$fiddle( a_thing )$'', where the type of \lstinline$a_thing$ is 3666 \lstinline$Thing$, the type of \lstinline$fiddle$ could be either of 3667 \begin{lstlisting} 3668 void fiddle( Thing ); 3669 void fiddle( const Thing & ); 3670 \end{lstlisting} 3671 If the second form is used, then constructors and destructors are not invoked to create a temporary 3672 variable at the call site ( and it is bad style for the caller to make any assumptions about such 3673 things), and within \lstinline$fiddle$ the parameter is subject to the usual problems caused by 3674 aliases. The reference form might be chosen for efficiency's sake if \lstinline$Thing$s are too 3675 large or their constructors or destructors are too expensive. An implementation may switch between 3676 them without causing trouble for well-behaved clients. This leaves the implementor to define ``too 3677 large'' and ``too expensive''. 3678 3679 I propose to push this job onto the compiler by allowing it to implement 3680 \begin{lstlisting} 3681 void fiddle( const volatile Thing ); 3682 \end{lstlisting} 3683 with call-by-reference. Since it knows all about the size of \lstinline$Thing$s and the parameter 3684 passing mechanism, it should be able to come up with a better definition of ``too large'', and may 3685 be able to make a good guess at ``too expensive''. 3686 \end{itemize} 3687 3688 In summary, since references are only really necessary for returning lvalues, I'll only provide 3689 lvalue functions. 3690 \end{rationale} 3691 3692 3693 \setcounter{subsection}{8} 3694 \subsection{Initialization} 3695 3696 An expression that is used as an \nonterm{initializer} is treated as being cast to the type of the 3697 object being initialized. An expression used in an \nonterm{initializer-list} is treated as being 3698 cast to the type of the aggregate member that it initializes. In either case the cast must have a 3699 single unambiguous \Index{interpretation}. 3700 3701 3702 \setcounter{subsection}{10} 3703 \subsection{Specification definitions} 3704 3705 \begin{syntax} 3706 \lhs{spec-definition} 3707 \rhs \lstinline$spec$ \nonterm{identifier} 3708 \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$ 3709 \lstinline${$ \nonterm{spec-declaration-list}\opt \lstinline$}$ 3710 \lhs{spec-declaration-list} 3711 \rhs \nonterm{spec-declaration} \lstinline$;$ 3712 \rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} \lstinline$;$ 3713 \lhs{spec-declaration} 3714 \rhs \nonterm{specifier-qualifier-list} \nonterm{declarator-list} 3715 \lhs{declarator-list} 3716 \rhs \nonterm{declarator} 3717 \rhs \nonterm{declarator-list} \lstinline$,$ \nonterm{declarator} 3718 \end{syntax} 3719 \begin{rationale} 3720 The declarations allowed in a specification are much the same as those allowed in a structure, 3721 except that bit fields are not allowed, and \Index{incomplete type}s and function types are allowed. 3722 \end{rationale} 3723 3724 \semantics 3725 A \define{specification definition} defines a name for a \define{specification}: a parameterized 3726 collection of object and function declarations. 3727 3728 The declarations in a specification consist of the declarations in the 3729 \nonterm{spec-declaration-list} and declarations produced by any assertions in the 3730 \nonterm{spec-parameter-list}. If the collection contains two declarations that declare the same 3731 identifier and have compatible types, they are combined into one declaration with the composite type 3732 constructed from the two types. 3733 3734 3735 \subsubsection{Assertions} 3736 3737 \begin{syntax} 3738 \lhs{assertion-list} 3739 \rhs \nonterm{assertion} 3740 \rhs \nonterm{assertion-list} \nonterm{assertion} 3741 \lhs{assertion} 3742 \rhs \lstinline$|$ \nonterm{identifier} \lstinline$($ \nonterm{type-name-list} \lstinline$)$ 3743 \rhs \lstinline$|$ \nonterm{spec-declaration} 3744 \lhs{type-name-list} 3745 \rhs \nonterm{type-name} 3746 \rhs \nonterm{type-name-list} \lstinline$,$ \nonterm{type-name} 3747 \end{syntax} 3748 3749 \constraints 3750 The \nonterm{identifier} in an assertion that is not a \nonterm{spec-declaration} shall be the name 3751 of a specification. The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for 3752 each \nonterm{type-parameter} in that specification's \nonterm{spec-parameter-list}. If the 3753 \nonterm{type-parameter} uses type-class \lstinline$type$\use{type}, the argument shall be the type 3754 name of an \Index{object type}; if it uses \lstinline$dtype$, the argument shall be the type name of 3755 an object type or an \Index{incomplete type}; and if it uses \lstinline$ftype$, the argument shall 3756 be the type name of a \Index{function type}. 3757 3758 \semantics 3759 An \define{assertion} is a declaration of a collection of objects and functions, called 3760 \define{assertion parameters}. 3761 3762 The assertion parameters produced by an assertion that applies the name of a specification to type 3763 arguments are found by taking the declarations specified in the specification and treating each of 3764 the specification's parameters as a synonym for the corresponding \nonterm{type-name} argument. 3765 3766 The collection of assertion parameters produced by the \nonterm{assertion-list} are found by 3767 combining the declarations produced by each assertion. If the collection contains two declarations 3768 that declare the same identifier and have compatible types, they are combined into one declaration 3769 with the \Index{composite type} constructed from the two types. 3770 3771 \examples 3772 \begin{lstlisting} 3773 forall( type T | T ?*?( T, T ))@\use{?*?}@ 3774 T square( T val ) {@\impl{square}@ 3775 return val + val; 3776 } 3777 3778 context summable( type T ) {@\impl{summable}@ 3779 T ?+=?( T *, T );@\use{?+=?}@ 3780 const T 0;@\use{0}@ 3781 }; 3782 context list_of( type List, type Element ) {@\impl{list_of}@ 3783 Element car( List ); 3784 List cdr( List ); 3785 List cons( Element, List ); 3786 List nil; 3787 int is_nil( List ); 3788 }; 3789 context sum_list( type List, type Element | summable( Element ) | list_of( List, Element ) ) {}; 3790 \end{lstlisting} 3791 \lstinline$sum_list$ contains seven declarations, which describe a list whose elements can be added 3792 up. The assertion ``\lstinline$|sum_list( i_list, int )$''\use{sum_list} produces the assertion 3793 parameters 3794 \begin{lstlisting} 3795 int ?+=?( int *, int ); 3796 const int 0; 3797 int car( i_list ); 3798 i_list cdr( i_list ); 3799 i_list cons( int, i_list ); 3800 i_list nil; 3801 int is_nil; 3802 \end{lstlisting} 3803 3804 3805 \subsection{Type declarations} 3806 3807 \begin{syntax} 3808 \lhs{type-parameter-list} 3809 \rhs \nonterm{type-parameter} 3810 \rhs \nonterm{type-parameter-list} \lstinline$,$ \nonterm{type-parameter} 3811 \lhs{type-parameter} 3812 \rhs \nonterm{type-class} \nonterm{identifier} \nonterm{assertion-list}\opt 3813 \lhs{type-class} 3814 \rhs \lstinline$type$ 3815 \rhs \lstinline$dtype$ 3816 \rhs \lstinline$ftype$ 3817 \lhs{type-declaration} 3818 \rhs \nonterm{storage-class-specifier}\opt \lstinline$type$ \nonterm{type-declarator-list} \verb|;| 3819 \lhs{type-declarator-list} 3820 \rhs \nonterm{type-declarator} 3821 \rhs \nonterm{type-declarator-list} \lstinline$,$ \nonterm{type-declarator} 3822 \lhs{type-declarator} 3823 \rhs \nonterm{identifier} \nonterm{assertion-list}\opt \lstinline$=$ \nonterm{type-name} 3824 \rhs \nonterm{identifier} \nonterm{assertion-list}\opt 3825 \end{syntax} 3826 3827 \constraints 3828 If a type declaration has block scope, and the declared identifier has external or internal linkage, 3829 the declaration shall have no initializer for the identifier. 3830 3831 \semantics 3832 A \nonterm{type-parameter} or a \nonterm{type-declarator} declares an identifier to be a \Index{type 3833 name} for a type incompatible with all other types. 3834 3835 An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}. Identifiers declared 3836 with type-class \lstinline$type$\use{type} are \Index{object type}s; those declared with type-class 3837 \lstinline$dtype$\use{dtype} are \Index{incomplete type}s; and those declared with type-class 3838 \lstinline$ftype$\use{ftype} are \Index{function type}s. The identifier has \Index{block scope} that 3839 terminates at the end of the \nonterm{spec-declaration-list} or polymorphic function that contains 3840 the \nonterm{type-parameter}. 3841 3842 A \nonterm{type-declarator} with an \Index{initializer} is a \define{type definition}. The declared 3843 identifier is an \Index{incomplete type} within the initializer, and an \Index{object type} after 3844 the end of the initializer. The type in the initializer is called the \define{implementation 3845 type}. Within the scope of the declaration, \Index{implicit conversion}s can be performed between 3846 the defined type and the implementation type, and between pointers to the defined type and pointers 3847 to the implementation type. 3848 3849 A type declaration without an \Index{initializer} and without a \Index{storage-class specifier} or 3850 with storage-class specifier \lstinline$static$\use{static} defines an \Index{incomplete type}. If a 3851 \Index{translation unit} or \Index{block} contains one or more such declarations for an identifier, 3852 it must contain exactly one definition of the identifier ( but not in an enclosed block, which would 3853 define a new type known only within that block). 3854 \begin{rationale} 3855 Incomplete type declarations allow compact mutually-recursive types. 3856 \begin{lstlisting} 3857 type t1; // Incomplete type declaration. 3858 type t2 = struct { t1 * p; ... }; 3859 type t1 = struct { t2 * p; ... }; 3860 \end{lstlisting} 3861 Without them, mutual recursion could be handled by declaring mutually recursive structures, then 3862 initializing the types to those structures. 3863 \begin{lstlisting} 3864 struct s1; 3865 type t2 = struct s2 { struct s1 * p; ... }; 3866 type t1 = struct s1 { struct s2 * p; ... }; 3867 \end{lstlisting} 3868 This introduces extra names, and may force the programmer to cast between the types and their 3869 implementations. 3870 \end{rationale} 3871 3872 A type declaration without an initializer and with \Index{storage-class specifier} 3873 \lstinline$extern$\use{extern} is an \define{opaque type declaration}. Opaque types are 3874 \Index{object type}s. An opaque type is not a \nonterm{constant-expression}; neither is a structure 3875 or union that has a member whose type is not a \nonterm{constant-expression}. Every other 3876 \Index{object type} is a \nonterm{constant-expression}. Objects with static storage duration shall 3877 be declared with a type that is a \nonterm{constant-expression}. 3878 \begin{rationale} 3879 Type declarations can declare identifiers with external linkage, whereas typedef declarations 3880 declare identifiers that only exist within a translation unit. These opaque types can be used in 3881 declarations, but the implementation of the type is not visible. 3882 3883 Static objects can not have opaque types because space for them would have to be allocated at 3884 program start-up. This is a deficiency\index{deficiencies!static opaque objects}, but I don't want 3885 to deal with ``module initialization'' code just now. 3886 \end{rationale} 3887 3888 An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a 3889 value of \Index{type-class} \lstinline$dtype$. An object type\index{object types} which is not a 3890 qualified version of a type is a value of type-classes \lstinline$type$ and \lstinline$dtype$. A 3891 \Index{function type} is a value of type-class \lstinline$ftype$. 3892 \begin{rationale} 3893 Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which 3894 omits the identifier being declared. 3895 3896 Object types are precisely the types that can be instantiated. Type qualifiers are not included in 3897 type values because the compiler needs the information they provide at compile time to detect 3898 illegal statements or to produce efficient machine instructions. For instance, the code that a 3899 compiler must generate to manipulate an object that has volatile-qualified type may be different 3900 from the code to manipulate an ordinary object. 3901 3902 Type qualifiers are a weak point of C's type system. Consider the standard library function 3903 \lstinline$strchr()$ which, given a string and a character, returns a pointer to the first 3904 occurrence of the character in the string. 3905 \begin{lstlisting} 3906 char *strchr( const char *s, int c ) {@\impl{strchr}@ 3907 char real_c = c; // done because c was declared as int. 3908 for ( ; *s != real_c; s++ ) 3909 if ( *s == '\0' ) return NULL; 3910 return ( char * )s; 3911 } 3912 \end{lstlisting} 3913 The parameter \lstinline$s$ must be \lstinline$const char *$, because \lstinline$strchr()$ might be 3914 used to search a constant string, but the return type must be \lstinline$char *$, because the result 3915 might be used to modify a non-constant string. Hence the body must perform a cast, and ( even worse) 3916 \lstinline$strchr()$ provides a type-safe way to attempt to modify constant strings. What is needed 3917 is some way to say that \lstinline$s$'s type might contain qualifiers, and the result type has 3918 exactly the same qualifiers. Polymorphic functions do not provide a fix for this 3919 deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of 3920 type values. Instead, overloading can be used to define \lstinline$strchr()$ for each combination 3921 of qualifiers. 3922 \end{rationale} 3923 3924 \begin{rationale} 3925 Since \Index{incomplete type}s are not type values, they can not be used as the initializer in a 3926 type declaration, or as the type of a structure or union member. This prevents the declaration of 3927 types that contain each other. 3928 \begin{lstlisting} 3929 type t1; 3930 type t2 = t1; // illegal: incomplete type t1. 3931 type t1 = t2; 3932 \end{lstlisting} 3933 3934 The initializer in a file-scope declaration must be a constant expression. This means type 3935 declarations can not build on opaque types, which is a deficiency\index{deficiencies!nesting opaque 3936 types}. 3937 \begin{lstlisting} 3938 extern type Huge; // extended-precision integer type. 3939 type Rational = struct { 3940 Huge numerator, denominator; // illegal 3941 }; 3942 struct Pair { 3943 Huge first, second; // legal 3944 }; 3945 \end{lstlisting} 3946 Without this restriction, \CFA might require ``module initialization'' code ( since 3947 \lstinline$Rational$ has external linkage, it must be created before any other translation unit 3948 instantiates it), and would force an ordering on the initialization of the translation unit that 3949 defines \lstinline$Huge$ and the translation that declares \lstinline$Rational$. 3950 3951 A benefit of the restriction is that it prevents the declaration in separate translation units of 3952 types that contain each other, which would be hard to prevent otherwise. 3953 \begin{lstlisting} 3954 // File a.c: 3955 extern type t1; 3956 type t2 = struct { t1 f1; ... } // illegal 3957 // File b.c: 3958 extern type t2; 3959 type t1 = struct { t2 f2; ... } // illegal 3960 \end{lstlisting} 3961 \end{rationale} 3962 3963 \begin{rationale} 3964 Since a \nonterm{type-declaration} is a \nonterm{declaration} and not a 3965 \nonterm{struct-declaration}, type declarations can not be structure members. The form of 3966 \nonterm{type-declaration} forbids arrays of, pointers to, and functions returning \lstinline$type$. 3967 Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued 3968 expressions. It also side-steps the problem of type-valued expressions producing different values 3969 in different declarations. 3970 3971 Since a type declaration is not a \nonterm{parameter-declaration}, functions can not have explicit 3972 type parameters. This may be too restrictive, but it attempts to make compilation simpler. Recall 3973 that when traditional C scanners read in an identifier, they look it up in the symbol table to 3974 determine whether or not it is a typedef name, and return a ``type'' or ``identifier'' token 3975 depending on what they find. A type parameter would add a type name to the current scope. The 3976 scope manipulations involved in parsing the declaration of a function that takes function pointer 3977 parameters and returns a function pointer may just be too complicated. 3978 3979 Explicit type parameters don't seem to be very useful, anyway, because their scope would not include 3980 the return type of the function. Consider the following attempt to define a type-safe memory 3981 allocation function. 3982 \begin{lstlisting} 3983 #include <stdlib.h> 3984 T * new( type T ) { return ( T * )malloc( sizeof( T) ); }; 3985 @\ldots@ 3986 int * ip = new( int ); 3987 \end{lstlisting} 3988 This looks sensible, but \CFA's declaration-before-use rules mean that ``\lstinline$T$'' in the 3989 function body refers to the parameter, but the ``\lstinline$T$'' in the return type refers to the 3990 meaning of \lstinline$T$ in the scope that contains \lstinline$new$; it could be undefined, or a 3991 type name, or a function or variable name. Nothing good can result from such a situation. 3992 \end{rationale} 3993 3994 \examples 3995 Since type declarations create new types, instances of types are always passed by value. 3996 \begin{lstlisting} 3997 type A1 = int[2]; 3998 void f1( A1 a ) { a[0] = 0; }; 3999 typedef int A2[2]; 4000 void f2( A2 a ) { a[0] = 0; }; 4001 A1 v1; 4002 A2 v2; 4003 f1( v1 ); 4004 f2( v2 ); 4005 \end{lstlisting} 4006 \lstinline$V1$ is passed by value, so \lstinline$f1()$'s assignment to \lstinline$a[0]$ does not 4007 modify v1. \lstinline$V2$ is converted to a pointer, so \lstinline$f2()$ modifies 4008 \lstinline$v2[0]$. 4009 4010 A translation unit containing the declarations 4011 \begin{lstlisting} 4012 extern type Complex;@\use{Complex}@ // opaque type declaration. 4013 extern float abs( Complex );@\use{abs}@ 4014 \end{lstlisting} 4015 can contain declarations of complex numbers, which can be passed to \lstinline$abs$. Some other 4016 translation unit must implement \lstinline$Complex$ and \lstinline$abs$. That unit might contain 4017 the declarations 4018 \begin{lstlisting} 4019 type Complex = struct { float re, im; };@\impl{Complex}@ 4020 Complex cplx_i = { 0.0, 1.0 };@\impl{cplx_i}@ 4021 float abs( Complex c ) {@\impl{abs( Complex )}@ 4022 return sqrt( c.re * c.re + c.im * c.im ); 4023 } 4024 \end{lstlisting} 4025 Note that \lstinline$c$ is implicitly converted to a \lstinline$struct$ so that its components can 4026 be retrieved. 4027 4028 \begin{lstlisting} 4029 type Time_of_day = int;@\impl{Time_of_day}@ // seconds since midnight. 4030 Time_of_day ?+?( Time_of_day t1, int seconds ) {@\impl{?+?}@ 4031 return (( int)t1 + seconds ) % 86400; 4032 } 4033 \end{lstlisting} 4034 \lstinline$t1$ must be cast to its implementation type to prevent infinite recursion. 4035 4036 \begin{rationale} 4037 Within the scope of a type definition, an instance of the type can be viewed as having that type or 4038 as having the implementation type. In the \lstinline$Time_of_day$ example, the difference is 4039 important. Different languages have treated the distinction between the abstraction and the 4040 implementation in different ways. 4041 \begin{itemize} 4042 \item 4043 Inside a Clu cluster \cite{clu}, the declaration of an instance states which view applies. Two 4044 primitives called \lstinline$up$ and \lstinline$down$ can be used to convert between the views. 4045 \item 4046 The Simula class \cite{Simula87} is essentially a record type. Since the only operations on a 4047 record are member selection and assignment, which can not be overloaded, there is never any 4048 ambiguity as to whether the abstraction or the implementation view is being used. In {\CC} 4049 \cite{c++}, operations on class instances include assignment and ``\lstinline$&$'', which can be 4050 overloaded. A ``scope resolution'' operator can be used inside the class to specify whether the 4051 abstract or implementation version of the operation should be used. 4052 \item 4053 An Ada derived type definition \cite{ada} creates a new type from an old type, and also implicitly 4054 declares derived subprograms that correspond to the existing subprograms that use the old type as a 4055 parameter type or result type. The derived subprograms are clones of the existing subprograms with 4056 the old type replaced by the derived type. Literals and aggregates of the old type are also cloned. 4057 In other words, the abstract view provides exactly the same operations as the implementation view. 4058 This allows the abstract view to be used in all cases. 4059 4060 The derived subprograms can be replaced by programmer-specified subprograms. This is an exception 4061 to the normal scope rules, which forbid duplicate definitions of a subprogram in a scope. In this 4062 case, explicit conversions between the derived type and the old type can be used. 4063 \end{itemize} 4064 \CFA's rules are like Clu's, except that implicit conversions and 4065 conversion costs allow it to do away with most uses of \lstinline$up$ and \lstinline$down$. 4066 \end{rationale} 4067 4068 4069 \subsubsection{Default functions and objects} 4070 4071 A declaration\index{type declaration} of a type identifier \lstinline$T$ with type-class 4072 \lstinline$type$ implicitly declares a \define{default assignment} function 4073 \lstinline$T ?=?( T *, T )$\use{?=?}, with the same \Index{scope} and \Index{linkage} as the 4074 identifier \lstinline$T$. 4075 \begin{rationale} 4076 Assignment is central to C's imperative programming style, and every existing C object type has 4077 assignment defined for it ( except for array types, which are treated as pointer types for purposes 4078 of assignment). Without this rule, nearly every inferred type parameter would need an accompanying 4079 assignment assertion parameter. If a type parameter should not have an assignment operation, 4080 \lstinline$dtype$ should be used. If a type should not have assignment defined, the user can define 4081 an assignment function that causes a run-time error, or provide an external declaration but no 4082 definition and thus cause a link-time error. 4083 \end{rationale} 4084 4085 A definition\index{type definition} of a type identifier \lstinline$T$ with \Index{implementation 4086 type} \lstinline$I$ and type-class \lstinline$type$ implicitly defines a default assignment 4087 function. A definition\index{type definition} of a type identifier \lstinline$T$ with implementation 4088 type \lstinline$I$ and an assertion list implicitly defines \define{default function}s and 4089 \define{default object}s as declared by the assertion declarations. The default objects and 4090 functions have the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$. Their 4091 values are determined as follows: 4092 \begin{itemize} 4093 \item 4094 If at the definition of \lstinline$T$ there is visible a declaration of an object with the same name 4095 as the default object, and if the type of that object with all occurrence of \lstinline$I$ replaced 4096 by \lstinline$T$ is compatible with the type of the default object, then the default object is 4097 initialized with that object. Otherwise the scope of the declaration of \lstinline$T$ must contain 4098 a definition of the default object. 4099 4100 \item 4101 If at the definition of \lstinline$T$ there is visible a declaration of a function with the same 4102 name as the default function, and if the type of that function with all occurrence of \lstinline$I$ 4103 replaced by \lstinline$T$ is compatible with the type of the default function, then the default 4104 function calls that function after converting its arguments and returns the converted result. 4105 4106 Otherwise, if \lstinline$I$ contains exactly one anonymous member\index{anonymous member} such that 4107 at the definition of \lstinline$T$ there is visible a declaration of a function with the same name 4108 as the default function, and the type of that function with all occurrences of the anonymous 4109 member's type in its parameter list replaced by \lstinline$T$ is compatible with the type of the 4110 default function, then the default function calls that function after converting its arguments and 4111 returns the result. 4112 4113 Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default 4114 function. 4115 \end{itemize} 4116 \begin{rationale} 4117 Note that a pointer to a default function will not compare as equal to a pointer to the inherited 4118 function. 4119 \end{rationale} 4120 4121 A function or object with the same type and name as a default function or object that is declared 4122 within the scope of the definition of \lstinline$T$ replaces the default function or object. 4123 4124 \examples 4125 \begin{lstlisting} 4126 context s( type T ) { 4127 T a, b; 4128 } 4129 struct impl { int left, right; } a = { 0, 0 }; 4130 type Pair | s( Pair ) = struct impl; 4131 Pair b = { 1, 1 }; 4132 \end{lstlisting} 4133 The definition of \lstinline$Pair$ implicitly defines two objects \lstinline$a$ and \lstinline$b$. 4134 \lstinline$Pair a$ inherits its value from the \lstinline$struct impl a$. The definition of 4135 \lstinline$Pair b$ is compulsory because there is no \lstinline$struct impl b$ to construct a value 4136 from. 4137 \begin{lstlisting} 4138 context ss( type T ) { 4139 T clone( T ); 4140 void munge( T * ); 4141 } 4142 type Whatsit | ss( Whatsit );@\use{Whatsit}@ 4143 type Doodad | ss( Doodad ) = struct doodad {@\use{Doodad}@ 4144 Whatsit; // anonymous member 4145 int extra; 4146 }; 4147 Doodad clone( Doodad ) { ... } 4148 \end{lstlisting} 4149 The definition of \lstinline$Doodad$ implicitly defines three functions: 4150 \begin{lstlisting} 4151 Doodad ?=?( Doodad *, Doodad ); 4152 Doodad clone( Doodad ); 4153 void munge( Doodad * ); 4154 \end{lstlisting} 4155 The assignment function inherits \lstinline$struct doodad$'s assignment function because the types 4156 match when \lstinline$struct doodad$ is replaced by \lstinline$Doodad$ throughout. 4157 \lstinline$munge()$ inherits \lstinline$Whatsit$'s \lstinline$munge()$ because the types match when 4158 \lstinline$Whatsit$ is replaced by \lstinline$Doodad$ in the parameter list. \lstinline$clone()$ 4159 does \emph{not} inherit \lstinline$Whatsit$'s \lstinline$clone()$: replacement in the parameter 4160 list yields ``\lstinline$Whatsit clone( Doodad )$'', which is not compatible with 4161 \lstinline$Doodad$'s \lstinline$clone()$'s type. Hence the definition of 4162 ``\lstinline$Doodad clone( Doodad )$'' is necessary. 4163 4164 Default functions and objects are subject to the normal scope rules. 4165 \begin{lstlisting} 4166 type T = @\ldots@; 4167 T a_T = @\ldots@; // Default assignment used. 4168 T ?=?( T *, T ); 4169 T a_T = @\ldots@; // Programmer-defined assignment called. 4170 \end{lstlisting} 4171 \begin{rationale} 4172 A compiler warning would be helpful in this situation. 4173 \end{rationale} 4174 4175 \begin{rationale} 4176 The \emph{class} construct of object-oriented programming languages performs three independent 4177 functions. It \emph{encapsulates} a data structure; it defines a \emph{subtype} relationship, whereby 4178 instances of one class may be used in contexts that require instances of another; and it allows one 4179 class to \emph{inherit} the implementation of another. 4180 4181 In \CFA, encapsulation is provided by opaque types and the scope rules, and subtyping is provided 4182 by specifications and assertions. Inheritance is provided by default functions and objects. 4183 \end{rationale} 4184 4185 4186 \section{Statements and blocks} 4187 4188 \begin{syntax} 4189 \oldlhs{statement} 4190 \rhs \nonterm{exception-statement} 4191 \end{syntax} 4192 4193 Many statements contain expressions, which may have more than one interpretation. The following 4194 sections describe how the \CFA translator selects an interpretation. In all cases the result of the 4195 selection shall be a single unambiguous \Index{interpretation}. 4196 4197 4198 \subsection{Labeled statements} 4199 4200 \begin{syntax} 4201 \oldlhs{labeled-statement} 4202 \rhs \lstinline$case$ \nonterm{case-value-list} : \nonterm{statement} 4203 \lhs{case-value-list} 4204 \rhs \nonterm{case-value} 4205 \rhs \nonterm{case-value-list} \lstinline$,$ \nonterm{case-value} 4206 \lhs{case-value} 4207 \rhs \nonterm{constant-expression} 4208 \rhs \nonterm{subrange} 4209 \lhs{subrange} 4210 \rhs \nonterm{constant-expression} \lstinline$~$ \nonterm{constant-expression} 4211 \end{syntax} 4212 4213 The following have identical meaning: 4214 \begin{lstlisting} 4215 case 1: case 2: case 3: case 4: case 5: 4216 case 1, 2, 3, 4, 5: 4217 case 1~5: 4218 \end{lstlisting} 4219 Multiple subranges are allowed: 4220 \begin{lstlisting} 4221 case 1~4, 9~14, 27~32: 4222 \end{lstlisting} 4223 The \lstinline$case$ and \lstinline$default$ clauses are restricted within the \lstinline$switch$ and \lstinline$choose$ statements, precluding Duff's device. 4224 4225 4226 \subsection{Expression and null statements} 4227 4228 The expression in an expression statement is treated as being cast to \lstinline$void$. 4229 4230 4231 \subsection{Selection statements} 4232 4233 \begin{syntax} 4234 \oldlhs{selection-statement} 4235 \rhs \lstinline$choose$ \lstinline$($ \nonterm{expression} \lstinline$)$ \nonterm{statement} 4236 \end{syntax} 4237 4238 The controlling expression \lstinline$E$ in the \lstinline$switch$ and \lstinline$choose$ statement: 4239 \begin{lstlisting} 4240 switch ( E ) ... 4241 choose ( E ) ... 4242 \end{lstlisting} 4243 may have more than one interpretation, but it shall have only one interpretation with an integral type. 4244 An \Index{integer promotion} is performed on the expression if necessary. 4245 The constant expressions in \lstinline$case$ statements with the switch are converted to the promoted type. 4246 4247 4248 \setcounter{subsubsection}{3} 4249 \subsubsection{The \lstinline$choose$ statement} 4250 4251 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. 4252 The \lstinline$fallthru$ statement is used to fall through to the next \lstinline$case$ or \lstinline$default$ labeled statement. 4253 The following have identical meaning: 4254 \begin{flushleft} 4255 \begin{tabular}{@{\hspace{2em}}l@{\hspace{2em}}l@{}} 4256 \begin{lstlisting} 4257 switch (...) { 4258 case 1: ... ; break; 4259 case 2: ... ; break; 4260 case 3: ... ; // fall through 4261 case 4: ... ; // fall through 4262 default: ... break; 4263 } 4264 \end{lstlisting} 4265 & 4266 \begin{lstlisting} 4267 choose (...) { 4268 case 1: ... ; // exit 4269 case 2: ... ; // exit 4270 case 3: ... ; fallthru; 4271 case 4: ... ; fallthru; 4272 default: ... ; // exit 4273 } 4274 \end{lstlisting} 4275 \end{tabular} 4276 \end{flushleft} 4277 The \lstinline$choose$ statement addresses the problem of accidental fall-through associated with the \lstinline$switch$ statement. 4278 4279 4280 \subsection{Iteration statements} 4281 4282 The controlling expression \lstinline$E$ in the loops 4283 \begin{lstlisting} 4284 if ( E ) ... 4285 while ( E ) ... 4286 do ... while ( E ); 4287 \end{lstlisting} 4288 is treated as ``\lstinline$( int )((E)!=0)$''. 4289 4290 The statement 4291 \begin{lstlisting} 4292 for ( a; b; c ) @\ldots@ 4293 \end{lstlisting} 4294 is treated as 4295 \begin{lstlisting} 4296 for ( ( void )( a ); ( int )(( b )!=0); ( void )( c ) ) ... 4297 \end{lstlisting} 4298 4299 4300 \subsection{Jump statements} 4301 4302 \begin{syntax} 4303 \oldlhs{jump-statement} 4304 \rhs \lstinline$continue$ \nonterm{identifier}\opt 4305 \rhs \lstinline$break$ \nonterm{identifier}\opt 4306 \rhs \ldots 4307 \rhs \lstinline$throw$ \nonterm{assignment-expression}\opt 4308 \rhs \lstinline$throwResume$ \nonterm{assignment-expression}\opt \nonterm{at-expression}\opt 4309 \lhs{at-expression} \lstinline$_At$ \nonterm{assignment-expression} 4310 \end{syntax} 4311 4312 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. 4313 \begin{lstlisting} 4314 L1: { // compound 4315 L2: switch ( ... ) { // switch 4316 case ...: 4317 L3: for ( ;; ) { // outer for 4318 L4: for ( ;; ) { // inner for 4319 continue L1; // error: not enclosing iteration 4320 continue L2; // error: not enclosing iteration 4321 continue L3; // next iteration of outer for 4322 continue L4; // next iteration of inner for 4323 break L1; // exit compound 4324 break L2; // exit switch 4325 break L3; // exit outer for 4326 break L4; // exit inner for 4327 } // for 4328 } // for 4329 break; // exit switch 4330 default: 4331 break L1; // exit compound 4332 } // switch 4333 ... 4334 } // compound 4335 \end{lstlisting} 4336 4337 4338 \setcounter{subsubsection}{1} 4339 \subsubsection{The \lstinline$continue$ statement} 4340 4341 The identifier in a \lstinline$continue$ statement shall name a label located on an enclosing iteration statement. 4342 4343 4344 \subsubsection{The \lstinline$break$ statement} 4345 4346 The identifier in a \lstinline$break$ statement shall name a label located on an enclosing compound, selection or iteration statement. 4347 4348 4349 \subsubsection{The \lstinline$return$ statement} 4350 4351 An expression in a \lstinline$return$ statement is treated as being cast to the result type of the function. 4352 4353 4354 \subsubsection{The \lstinline$throw$ statement} 4355 4356 When an exception is raised, \Index{propagation} directs control from a raise in the source execution to a handler in the faulting execution. 4357 4358 4359 \subsubsection{The \lstinline$throwResume$ statement} 4360 4361 4362 \subsection{Exception statements} 4363 4364 \begin{syntax} 4365 \lhs{exception-statement} 4366 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list} 4367 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{finally-clause} 4368 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list} \nonterm{finally-clause} 4369 \lhs{handler-list} 4370 \rhs \nonterm{handler-clause} 4371 \rhs \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement} 4372 \rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement} 4373 \rhs \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement} 4374 \rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement} 4375 \lhs{handler-clause} 4376 \rhs \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement} 4377 \rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement} 4378 \rhs \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement} 4379 \rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement} 4380 \lhs{finally-clause} 4381 \rhs \lstinline$finally$ \nonterm{compound-statement} 4382 \lhs{exception-declaration} 4383 \rhs \nonterm{type-specifier} 4384 \rhs \nonterm{type-specifier} \nonterm{declarator} 4385 \rhs \nonterm{type-specifier} \nonterm{abstract-declarator} 4386 \rhs \nonterm{new-abstract-declarator-tuple} \nonterm{identifier} 4387 \rhs \nonterm{new-abstract-declarator-tuple} 4388 \lhs{asynchronous-statement} 4389 \rhs \lstinline$enable$ \nonterm{identifier-list} \nonterm{compound-statement} 4390 \rhs \lstinline$disable$ \nonterm{identifier-list} \nonterm{compound-statement} 4391 \end{syntax} 4392 4393 \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}. 4394 4395 4396 \subsubsection{The \lstinline$try$ statement} 4397 4398 The \lstinline$try$ statement is a block with associated handlers, called a \Index{guarded block}; 4399 all other blocks are \Index{unguarded block}s. 4400 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. 4401 4402 4403 \subsubsection{The \lstinline$enable$/\lstinline$disable$ statements} 4404 4405 The \lstinline$enable$/\lstinline$disable$ statements toggle delivery of \Index{asynchronous exception}s. 4406 4407 4408 \setcounter{section}{9} 4409 \section{Preprocessing directives} 4410 4411 4412 \setcounter{subsection}{7} 4413 \subsection{Predefined macro names} 4414 4415 The implementation shall define the macro names \lstinline$__LINE__$, \lstinline$__FILE__$, 4416 \lstinline$__DATE__$, and \lstinline$__TIME__$, as in the {\c11} standard. It shall not define the 4417 macro name \lstinline$__STDC__$. 4418 4419 In addition, the implementation shall define the macro name \lstinline$__CFORALL__$ to be the 4420 decimal constant 1. 4421 4422 4423 \appendix 4424 4425 4426 \chapter{Examples} 4427 4428 4429 \section{C types} 4430 This section gives example specifications for some groups of types that are important in the C 4431 language, in terms of the predefined operations that can be applied to those types. 4432 4433 4434 \subsection{Scalar, arithmetic, and integral types} 4435 4436 The pointer, integral, and floating-point types are all \define{scalar types}. All of these types 4437 can be logically negated and compared. The assertion ``\lstinline$scalar( Complex )$'' should be read 4438 as ``type \lstinline$Complex$ is scalar''. 4439 \begin{lstlisting} 4440 context scalar( type T ) {@\impl{scalar}@ 4441 int !?( T ); 4442 int ?<?( T, T ), ?<=?( T, T ), ?==?( T, T ), ?>=?( T, T ), ?>?( T, T ), ?!=?( T, T ); 4443 }; 4444 \end{lstlisting} 4445 4446 The integral and floating-point types are \define{arithmetic types}, which support the basic 4447 arithmetic operators. The use of an assertion in the \nonterm{spec-parameter-list} declares that, 4448 in order to be arithmetic, a type must also be scalar ( and hence that scalar operations are 4449 available ). This is equivalent to inheritance of specifications. 4450 \begin{lstlisting} 4451 context arithmetic( type T | scalar( T ) ) {@\impl{arithmetic}@@\use{scalar}@ 4452 T +?( T ), -?( T ); 4453 T ?*?( T, T ), ?/?( T, T ), ?+?( T, T ), ?-?( T, T ); 4454 }; 4455 \end{lstlisting} 4456 4457 The various flavors of \lstinline$char$ and \lstinline$int$ and the enumerated types make up the 4458 \define{integral types}. 4459 \begin{lstlisting} 4460 context integral( type T | arithmetic( T ) ) {@\impl{integral}@@\use{arithmetic}@ 4461 T ~?( T ); 4462 T ?&?( T, T ), ?|?( T, T ), ?^?( T, T ); 4463 T ?%?( T, T ); 4464 T ?<<?( T, T ), ?>>?( T, T ); 4465 }; 4466 \end{lstlisting} 4467 4468 4469 \subsection{Modifiable types} 4470 \index{modifiable lvalue} 4471 4472 The only operation that can be applied to all modifiable lvalues is simple assignment. 4473 \begin{lstlisting} 4474 context m_lvalue( type T ) {@\impl{m_lvalue}@ 4475 T ?=?( T *, T ); 4476 }; 4477 \end{lstlisting} 4478 4479 Modifiable scalar lvalues are scalars and are modifiable lvalues, and assertions in the 4480 \nonterm{spec-parameter-list} reflect those relationships. This is equivalent to multiple 4481 inheritance of specifications. Scalars can also be incremented and decremented. 4482 \begin{lstlisting} 4483 context m_l_scalar( type T | scalar( T ) | m_lvalue( T ) ) {@\impl{m_l_scalar}@ 4484 T ?++( T * ), ?--( T * );@\use{scalar}@@\use{m_lvalue}@ 4485 T ++?( T * ), --?( T * ); 4486 }; 4487 \end{lstlisting} 4488 4489 Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic. Note that this 4490 results in the ``inheritance'' of \lstinline$scalar$ along both paths. 4491 \begin{lstlisting} 4492 context m_l_arithmetic( type T | m_l_scalar( T ) | arithmetic( T ) ) {@\impl{m_l_arithmetic}@ 4493 T ?/=?( T *, T ), ?*=?( T *, T );@\use{m_l_scalar}@@\use{arithmetic}@ 4494 T ?+=?( T *, T ), ?-=?( T *, T ); 4495 }; 4496 4497 context m_l_integral( type T | m_l_arithmetic( T ) | integral( T ) ) {@\impl{m_l_integral}@ 4498 T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );@\use{m_l_arithmetic}@ 4499 T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );@\use{integral}@ 4500 }; 4501 \end{lstlisting} 4502 4503 4504 \subsection{Pointer and array types} 4505 4506 Array types can barely be said to exist in {\c11}, since in most cases an array name is treated as a 4507 constant pointer to the first element of the array, and the subscript expression 4508 ``\lstinline$a[i]$'' is equivalent to the dereferencing expression ``\lstinline$(*( a+( i )))$''. 4509 Technically, pointer arithmetic and pointer comparisons other than ``\lstinline$==$'' and 4510 ``\lstinline$!=$'' are only defined for pointers to array elements, but the type system does not 4511 enforce those restrictions. Consequently, there is no need for a separate ``array type'' 4512 specification. 4513 4514 Pointer types are scalar types. Like other scalar types, they have ``\lstinline$+$'' and 4515 ``\lstinline$-$'' operators, but the types do not match the types of the operations in 4516 \lstinline$arithmetic$, so these operators cannot be consolidated in \lstinline$scalar$. 4517 \begin{lstlisting} 4518 context pointer( type P | scalar( P ) ) {@\impl{pointer}@@\use{scalar}@ 4519 P ?+?( P, long int ), ?+?( long int, P ), ?-?( P, long int ); 4520 ptrdiff_t ?-?( P, P ); 4521 }; 4522 4523 context m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {@\impl{m_l_pointer}@ 4524 P ?+=?( P *, long int ), ?-=?( P *, long int ); 4525 P ?=?( P *, void * ); 4526 void * ?=?( void **, P ); 4527 }; 4528 \end{lstlisting} 4529 4530 Specifications that define the dereference operator ( or subscript operator ) require two 4531 parameters, one for the pointer type and one for the pointed-at ( or element ) type. Different 4532 specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not 4533 included in types. The assertion ``\lstinline$|ptr_to( Safe_pointer, int )$'' should be read as 4534 ``\lstinline$Safe_pointer$ acts like a pointer to \lstinline$int$''. 4535 \begin{lstlisting} 4536 context ptr_to( type P | pointer( P ), type T ) {@\impl{ptr_to}@@\use{pointer}@ 4537 lvalue T *?( P ); lvalue T ?[?]( P, long int ); 4538 }; 4539 4540 context ptr_to_const( type P | pointer( P ), type T ) {@\impl{ptr_to_const}@ 4541 const lvalue T *?( P ); const lvalue T ?[?]( P, long int );@\use{pointer}@ 4542 }; 4543 4544 context ptr_to_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_volatile}@ 4545 volatile lvalue T *?( P ); volatile lvalue T ?[?]( P, long int );@\use{pointer}@ 4546 }; 4547 \end{lstlisting} 4548 \begin{lstlisting} 4549 context ptr_to_const_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_const_volatile}@ 4550 const volatile lvalue T *?( P );@\use{pointer}@ 4551 const volatile lvalue T ?[?]( P, long int ); 4552 }; 4553 \end{lstlisting} 4554 4555 Assignment to pointers is more complicated than is the case with other types, because the target's 4556 type can have extra type qualifiers in the pointed-at type: a ``\lstinline$T *$'' can be assigned to 4557 a ``\lstinline$const T *$'', a ``\lstinline$volatile T *$'', and a ``\lstinline$const volatile T *$''. 4558 Again, the pointed-at type is passed in, so that assertions can connect these specifications to the 4559 ``\lstinline$ptr_to$'' specifications. 4560 \begin{lstlisting} 4561 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}@ { 4562 P ?=?( P *, T * ); 4563 T * ?=?( T **, P ); 4564 }; 4565 4566 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}@) { 4567 P ?=?( P *, const T * ); 4568 const T * ?=?( const T **, P ); 4569 }; 4570 4571 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}@ 4572 P ?=?( P *, volatile T * ); 4573 volatile T * ?=?( volatile T **, P ); 4574 }; 4575 4576 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}@ 4577 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}@ 4578 P ?=?( P *, const volatile T * ); 4579 const volatile T * ?=?( const volatile T **, P ); 4580 }; 4581 \end{lstlisting} 4582 4583 Note the regular manner in which type qualifiers appear in those specifications. An alternative 4584 specification can make use of the fact that qualification of the pointed-at type is part of a 4585 pointer type to capture that regularity. 4586 \begin{lstlisting} 4587 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 ) ) { 4588 MyP ?=?( MyP *, CP ); 4589 CP ?=?( CP *, MyP ); 4590 }; 4591 \end{lstlisting} 4592 The assertion ``\lstinline$| m_l_ptr_like( Safe_ptr, const int * )$'' should be read as 4593 ``\lstinline$Safe_ptr$ is a pointer type like \lstinline$const int *$''. This specification has two 4594 defects, compared to the original four: there is no automatic assertion that dereferencing a 4595 \lstinline$MyP$ produces an lvalue of the type that \lstinline$CP$ points at, and the 4596 ``\lstinline$|m_l_pointer( CP )$'' assertion provides only a weak assurance that the argument passed 4597 to \lstinline$CP$ really is a pointer type. 4598 4599 4600 \section{Relationships between operations} 4601 4602 Different operators often have related meanings; for instance, in C, ``\lstinline$+$'', 4603 ``\lstinline$+=$'', and the two versions of ``\lstinline$++$'' perform variations of addition. 4604 Languages like {\CC} and Ada allow programmers to define operators for new types, but do not 4605 require that these relationships be preserved, or even that all of the operators be implemented. 4606 Completeness and consistency is left to the good taste and discretion of the programmer. It is 4607 possible to encourage these attributes by providing generic operator functions, or member functions 4608 of abstract classes, that are defined in terms of other, related operators. 4609 4610 In \CFA, polymorphic functions provide the equivalent of these generic operators, and 4611 specifications explicitly define the minimal implementation that a programmer should provide. This 4612 section shows a few examples. 4613 4614 4615 \subsection{Relational and equality operators} 4616 4617 The different comparison operators have obvious relationships, but there is no obvious subset of the 4618 operations to use in the implementation of the others. However, it is usually convenient to 4619 implement a single comparison function that returns a negative integer, 0, or a positive integer if 4620 its first argument is respectively less than, equal to, or greater than its second argument; the 4621 library function \lstinline$strcmp$ is an example. 4622 4623 C and \CFA have an extra, non-obvious comparison operator: ``\lstinline$!$'', logical negation, 4624 returns 1 if its operand compares equal to 0, and 0 otherwise. 4625 \begin{lstlisting} 4626 context comparable( type T ) { 4627 const T 0; 4628 int compare( T, T ); 4629 } 4630 4631 forall( type T | comparable( T ) ) int ?<?( T l, T r ) { 4632 return compare( l, r ) < 0; 4633 } 4634 // ... similarly for <=, ==, >=, >, and !=. 4635 4636 forall( type T | comparable( T ) ) int !?( T operand ) { 4637 return !compare( operand, 0 ); 4638 } 4639 \end{lstlisting} 4640 4641 4642 \subsection{Arithmetic and integer operations} 4643 4644 A complete arithmetic type would provide the arithmetic operators and the corresponding assignment 4645 operators. Of these, the assignment operators are more likely to be implemented directly, because 4646 it is usually more efficient to alter the contents of an existing object than to create and return a 4647 new one. Similarly, a complete integral type would provide integral operations based on integral 4648 assignment operations. 4649 \begin{lstlisting} 4650 context arith_base( type T ) { 4651 const T 1; 4652 T ?+=?( T *, T ), ?-=?( T *, T ), ?*=?( T *, T ), ?/=?( T *, T ); 4653 } 4654 4655 forall( type T | arith_base( T ) ) T ?+?( T l, T r ) { 4656 return l += r; 4657 } 4658 4659 forall( type T | arith_base( T ) ) T ?++( T * operand ) { 4660 T temporary = *operand; 4661 *operand += 1; 4662 return temporary; 4663 } 4664 4665 forall( type T | arith_base( T ) ) T ++?( T * operand ) { 4666 return *operand += 1; 4667 } 4668 // ... similarly for -, --, *, and /. 4669 4670 context int_base( type T ) { 4671 T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T ); 4672 T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T ); 4673 } 4674 4675 forall( type T | int_base( T ) ) T ?&?( T l, T r ) { 4676 return l &= r; 4677 } 4678 // ... similarly for |, ^, %, <<, and >>. 4679 \end{lstlisting} 4680 4681 Note that, although an arithmetic type would certainly provide comparison functions, and an integral 4682 type would provide arithmetic operations, there does not have to be any relationship among 4683 \lstinline$int_base$, \lstinline$arith_base$ and \lstinline$comparable$. Note also that these 4684 declarations provide guidance and assistance, but they do not define an absolutely minimal set of 4685 requirements. A truly minimal implementation of an arithmetic type might only provide 4686 \lstinline$0$, \lstinline$1$, and \lstinline$?-=?$, which would be used by polymorphic 4687 \lstinline$?+=?$, \lstinline$?*=?$, and \lstinline$?/=?$ functions. 4688 4689 Note also that \lstinline$short$ is an integer type in C11 terms, but has no operations! 4690 4691 4692 \chapter{TODO} 4693 Review index entries. 4694 4695 Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers. This gets 4696 into \lstinline$noalias$ territory. Qualifying anything (``\lstinline$short restrict rs$'') means 4697 pointer parameters of \lstinline$?++$, etc, would need restrict qualifiers. 4698 4699 Enumerated types. Constants are not ints. Overloading. Definition should be ``representable as an 4700 integer type'', not ``as an int''. C11 usual conversions freely convert to and from ordinary 4701 integer types via assignment, which works between any integer types. Does enum Color ?*?( enum 4702 Color, enum Color ) really make sense? ?++ does, but it adds (int)1. 4703 4704 Operators on {,signed,unsigned} char and other small types. ?<? harmless; ?*? questionable for 4705 chars. Generic selections make these choices visible. Safe conversion operators? Predefined 4706 ``promotion'' function? 4707 4708 \lstinline$register$ assignment might be handled as assignment to a temporary with copying back and 4709 forth, but copying must not be done by assignment. 4710 4711 Don't use ptrdiff\_t by name in the predefineds. 4712 4713 Polymorphic objects. Polymorphic typedefs and type declarations. 4714 4715 4716 \bibliographystyle{plain} 4717 \bibliography{refrat} 4718 4719 4720 \addcontentsline{toc}{chapter}{\indexname} % add index name to table of contents 4721 \begin{theindex} 4722 Italic page numbers give the location of the main entry for the referenced term. Plain page numbers 4723 denote uses of the indexed term. Entries for grammar non-terminals are italicized. A typewriter 4724 font is used for grammar terminals and program identifiers. 4725 \indexspace 4726 \input{refrat.ind} 4727 \end{theindex} 4728 4729 \end{document} 4730 4731 % Local Variables: % 4732 % tab-width: 4 % 4733 % fill-column: 100 % 4734 % compile-command: "make" % 4735 % End: % -
src/CodeGen/CodeGenerator.cc
r59cde21 rf28a53a 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Aug 12 14:33:52201513 // Update Count : 2 2212 // Last Modified On : Thu Sep 17 15:24:08 2015 13 // Update Count : 231 14 14 // 15 15 … … 190 190 if ( designators.size() == 0 ) return; 191 191 for ( DesignatorList::iterator iter = designators.begin(); iter != designators.end(); ++iter ) { 192 if ( NameExpr * nm =dynamic_cast< NameExpr * >( *iter ) ) {192 if ( dynamic_cast< NameExpr * >( *iter ) ) { 193 193 // if expression is a name, then initializing aggregate member 194 194 output << "."; … … 392 392 393 393 void CodeGenerator::visit( CastExpr *castExpr ) { 394 output << "(("; 395 if ( castExpr->get_results().empty() ) { 396 output << "void" ; 397 } else { 398 output << genType( castExpr->get_results().front(), "" ); 399 } // if 400 output << ")"; 401 castExpr->get_arg()->accept( *this ); 402 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 } 403 410 } 404 411 -
src/GenPoly/Specialize.cc
r59cde21 rf28a53a 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 … … 86 86 87 87 Expression * Specialize::doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams ) { 88 assert( ! actual->get_results().empty() ); 88 89 if ( needsSpecialization( formalType, actual->get_results().front(), env ) ) { 89 90 PointerType *ptrType; … … 167 168 Expression * Specialize::mutate( AddressExpr *addrExpr ) { 168 169 addrExpr->get_arg()->acceptMutator( *this ); 170 assert( ! addrExpr->get_results().empty() ); 169 171 addrExpr->set_arg( doSpecialization( addrExpr->get_results().front(), addrExpr->get_arg() ) ); 170 172 return addrExpr; … … 173 175 Expression * Specialize::mutate( CastExpr *castExpr ) { 174 176 castExpr->get_arg()->acceptMutator( *this ); 175 castExpr->set_arg( doSpecialization( castExpr->get_results().front(), castExpr->get_arg() ) ); 177 if ( ! castExpr->get_results().empty() ) { 178 // this may not be the correct condition, but previously the next statement 179 // was happening unchecked, causing a crash on a cast to void 180 castExpr->set_arg( doSpecialization( castExpr->get_results().front(), castExpr->get_arg() ) ); 181 } 176 182 return castExpr; 177 183 } -
src/Parser/lex.cc
r59cde21 rf28a53a 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 177 385 #define YY_END_OF_BUFFER 178 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[851] = 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 178, 176, 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, 176, 100, 399 121, 176, 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, 176, 4, 4, 177, 402 103, 177, 104, 113, 114, 120, 116, 117, 7, 9, 403 0, 8, 153, 171, 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, 0, 410 115, 112, 100, 0, 0, 168, 0, 100, 100, 100, 411 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 412 100, 100, 100, 100, 39, 100, 100, 100, 100, 100, 413 100, 100, 100, 100, 100, 57, 100, 100, 100, 100, 414 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 415 100, 167, 159, 7, 0, 0, 0, 2, 0, 5, 416 417 103, 0, 0, 0, 113, 0, 119, 118, 118, 0, 418 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 419 0, 0, 0, 0, 0, 0, 0, 0, 131, 110, 420 0, 110, 0, 0, 6, 0, 108, 0, 0, 0, 421 110, 0, 108, 108, 108, 108, 0, 109, 0, 0, 422 107, 107, 107, 107, 0, 169, 170, 0, 174, 172, 423 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 424 0, 0, 100, 17, 100, 100, 100, 100, 100, 100, 425 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 426 100, 14, 100, 100, 100, 100, 100, 100, 100, 100, 427 428 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 429 51, 100, 100, 100, 64, 100, 100, 100, 100, 100, 430 100, 100, 100, 100, 100, 100, 100, 87, 100, 100, 431 100, 100, 100, 100, 100, 0, 0, 0, 0, 0, 432 0, 0, 0, 118, 0, 0, 0, 0, 0, 118, 433 0, 0, 175, 0, 0, 0, 0, 0, 0, 0, 434 0, 110, 0, 0, 0, 110, 0, 108, 108, 0, 435 0, 109, 109, 0, 109, 0, 109, 107, 107, 0, 436 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 437 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 438 439 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 440 100, 100, 21, 100, 24, 100, 27, 100, 100, 100, 441 100, 100, 100, 100, 42, 100, 44, 100, 100, 100, 442 100, 100, 100, 100, 56, 100, 67, 100, 100, 100, 443 100, 100, 100, 100, 100, 100, 100, 100, 88, 100, 444 100, 95, 100, 100, 0, 0, 0, 0, 0, 0, 445 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 446 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 447 0, 109, 109, 0, 111, 0, 109, 109, 0, 0, 444 448 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, 449 450 0, 100, 100, 22, 100, 100, 100, 100, 100, 100, 451 100, 15, 100, 100, 100, 100, 100, 100, 100, 100, 452 100, 100, 100, 100, 100, 23, 25, 100, 32, 100, 453 100, 100, 100, 100, 41, 100, 100, 100, 100, 49, 454 100, 100, 54, 100, 100, 100, 100, 100, 75, 100, 455 100, 100, 100, 100, 85, 100, 100, 93, 100, 100, 456 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 447 457 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, 458 111, 0, 0, 109, 111, 111, 0, 109, 0, 0, 459 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 460 461 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 462 100, 100, 100, 100, 100, 59, 100, 100, 100, 100, 463 100, 100, 100, 100, 28, 100, 100, 100, 100, 40, 464 43, 46, 100, 100, 52, 100, 61, 68, 100, 100, 465 74, 76, 79, 80, 82, 83, 100, 100, 90, 100, 466 100, 0, 1, 0, 0, 0, 0, 0, 0, 103, 467 0, 0, 0, 118, 0, 0, 0, 0, 111, 0, 468 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 469 100, 18, 100, 100, 100, 100, 100, 100, 100, 16, 470 100, 100, 33, 100, 100, 100, 100, 100, 100, 100, 471 472 100, 100, 100, 100, 35, 100, 37, 38, 100, 48, 473 53, 100, 100, 100, 89, 100, 100, 0, 0, 0, 456 474 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 475 10, 11, 29, 55, 100, 100, 100, 100, 100, 100, 476 100, 100, 100, 100, 60, 62, 65, 100, 100, 77, 477 91, 100, 100, 36, 47, 70, 71, 100, 94, 96, 472 478 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, 479 0, 0, 100, 69, 100, 100, 12, 100, 30, 34, 480 100, 100, 100, 66, 100, 100, 100, 100, 100, 100, 479 481 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, 0482 483 0, 0, 0, 58, 100, 100, 100, 100, 100, 100, 484 50, 63, 72, 78, 92, 97, 100, 100, 0, 0, 485 0, 0, 0, 0, 0, 0, 100, 100, 13, 19, 486 31, 100, 100, 100, 26, 86, 0, 0, 100, 100, 487 100, 100, 73, 98, 100, 84, 20, 45, 81, 0 486 488 } ; 487 489 … … 496 498 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 497 499 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,500 11, 47, 48, 49, 50, 11, 11, 51, 11, 11, 501 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 502 503 62, 63, 64, 65, 66, 11, 67, 68, 69, 70, 504 71, 72, 11, 73, 74, 75, 76, 77, 78, 79, 505 80, 81, 82, 83, 84, 85, 1, 1, 1, 1, 504 506 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 505 507 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 518 520 } ; 519 521 520 static yyconst flex_int32_t yy_meta[8 5] =522 static yyconst flex_int32_t yy_meta[86] = 521 523 { 0, 522 524 1, 1, 2, 1, 1, 1, 1, 1, 3, 1, … … 524 526 6, 1, 7, 7, 7, 7, 7, 7, 1, 1, 525 527 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 8, 4, 4, 9, 4, 10, 4, 4, 4, 9, 529 4, 1, 11, 1, 1, 12, 1, 8, 8, 8, 530 8, 8, 8, 4, 4, 4, 4, 9, 4, 4, 531 4, 10, 4, 4, 4, 9, 4, 4, 4, 4, 532 4, 1, 1, 1, 1 531 533 } ; 532 534 533 static yyconst flex_int16_t yy_base[ 999] =535 static yyconst flex_int16_t yy_base[1024] = 534 536 { 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 537 0, 84, 2338, 2332, 94, 0, 177, 178, 179, 180, 538 2348, 2604, 191, 2604, 197, 55, 2604, 2294, 60, 173, 539 2604, 2604, 2604, 56, 188, 2604, 191, 189, 204, 216, 540 275, 0, 2310, 2604, 216, 2310, 152, 344, 2288, 220, 541 2604, 159, 2604, 217, 226, 2604, 185, 134, 212, 251, 542 237, 270, 137, 257, 235, 165, 305, 314, 333, 238, 543 193, 2604, 225, 2604, 2301, 402, 390, 2604, 2312, 2604, 544 2280, 204, 2604, 0, 2604, 426, 0, 2604, 417, 2604, 545 439, 451, 2604, 498, 2274, 205, 2604, 2604, 2604, 2604, 546 2604, 2292, 2604, 2291, 2604, 2604, 2298, 559, 2604, 2315, 547 548 2604, 605, 413, 498, 516, 274, 243, 229, 293, 305, 549 0, 289, 253, 273, 334, 2604, 2604, 2604, 2285, 2604, 550 2604, 2604, 2279, 2278, 298, 314, 2293, 356, 429, 439, 551 366, 400, 433, 448, 2269, 434, 2218, 438, 2248, 319, 552 2604, 2604, 484, 2239, 2238, 2604, 2211, 310, 282, 377, 553 329, 409, 424, 422, 421, 503, 438, 434, 451, 474, 554 475, 430, 348, 461, 441, 479, 494, 499, 437, 502, 555 492, 520, 281, 514, 521, 2234, 536, 535, 537, 544, 556 539, 545, 567, 498, 540, 526, 563, 598, 570, 571, 557 548, 2604, 2604, 653, 662, 2283, 668, 2604, 674, 2604, 558 559 2232, 562, 2223, 2222, 0, 640, 2604, 2604, 680, 2221, 560 2200, 2199, 0, 2218, 616, 640, 646, 689, 688, 650, 561 678, 679, 682, 2215, 685, 692, 2192, 2186, 2604, 714, 562 707, 2604, 2185, 2237, 2604, 703, 0, 596, 760, 725, 563 767, 778, 603, 2604, 2190, 2165, 0, 768, 2211, 822, 564 696, 2604, 2182, 2157, 828, 2604, 2604, 2190, 2604, 2604, 565 725, 728, 2164, 2164, 723, 2160, 2154, 2153, 0, 2152, 566 0, 2120, 703, 708, 744, 676, 711, 722, 754, 767, 567 756, 764, 757, 778, 766, 773, 805, 806, 807, 784, 568 808, 2150, 809, 812, 813, 233, 760, 814, 816, 818, 569 570 819, 315, 821, 830, 715, 828, 833, 834, 836, 843, 571 845, 835, 829, 846, 2149, 714, 851, 852, 853, 855, 572 768, 856, 860, 857, 858, 861, 862, 2145, 863, 549, 573 864, 871, 868, 885, 874, 937, 938, 2140, 2134, 2133, 574 0, 2132, 0, 925, 929, 2126, 0, 2125, 0, 2124, 575 0, 2142, 2604, 924, 925, 2121, 2118, 0, 2112, 0, 576 937, 943, 965, 949, 989, 995, 1003, 2604, 2604, 952, 577 992, 1011, 957, 1050, 934, 1044, 984, 2604, 2604, 2111, 578 2110, 2104, 0, 2103, 0, 2102, 0, 2096, 0, 2604, 579 933, 926, 877, 982, 941, 989, 947, 929, 984, 990, 580 581 927, 987, 1016, 997, 1027, 1031, 1028, 1038, 588, 1029, 582 1039, 957, 2098, 1042, 2097, 1048, 2091, 1049, 1046, 1052, 583 1051, 1066, 1054, 1055, 2090, 1062, 2089, 1071, 1057, 1073, 584 1075, 1078, 1076, 1080, 2083, 1081, 2082, 1082, 1083, 1086, 585 1087, 1090, 1085, 1084, 1095, 1092, 1103, 1100, 1101, 1111, 586 1113, 2081, 1114, 1117, 1165, 2072, 0, 2071, 0, 2070, 587 0, 2049, 0, 1159, 2048, 0, 2043, 0, 2042, 2041, 588 2035, 0, 2034, 0, 1167, 1173, 1219, 1130, 1230, 1159, 589 1134, 1137, 2604, 1236, 1243, 1254, 2045, 2015, 2026, 2025, 590 0, 2019, 0, 2018, 0, 2017, 0, 2013, 0, 2012, 591 592 0, 1118, 1150, 2014, 1151, 1154, 1156, 1157, 1159, 1168, 593 1175, 1181, 1165, 1180, 1220, 1187, 1230, 1212, 1232, 1265, 594 1238, 1237, 1239, 1240, 1243, 2010, 1122, 1242, 2009, 1244, 595 1250, 1254, 1257, 1252, 2008, 1255, 1260, 1262, 1263, 2004, 596 1266, 1268, 1997, 1271, 1275, 1276, 1279, 1282, 1995, 988, 597 665, 1283, 1285, 1288, 1293, 1286, 1291, 1991, 1289, 1296, 598 1989, 2033, 1979, 0, 1978, 0, 1972, 0, 1971, 0, 599 1970, 0, 1964, 0, 1963, 0, 1962, 0, 1340, 1346, 600 1353, 1364, 1956, 2604, 1376, 2604, 1387, 2604, 1955, 0, 601 1954, 0, 1948, 0, 1947, 0, 0, 0, 1949, 0, 602 603 1365, 1297, 1294, 1332, 1305, 1330, 1333, 1366, 1352, 1373, 604 1342, 1372, 1371, 1377, 1381, 1382, 1384, 1408, 1389, 1392, 605 1396, 1388, 1395, 1398, 1943, 1399, 1400, 1409, 1410, 1942, 606 1941, 1935, 1413, 1171, 1934, 1411, 1933, 1929, 1415, 1418, 607 1928, 1927, 1923, 1922, 1921, 1888, 1420, 1416, 1887, 1427, 608 1422, 1932, 2604, 1878, 0, 1877, 0, 0, 0, 1874, 609 0, 0, 0, 2604, 0, 0, 0, 0, 1468, 1474, 610 1520, 1870, 0, 1869, 0, 0, 0, 0, 1865, 1414, 611 1450, 1867, 1432, 1454, 1452, 1453, 1463, 1464, 1451, 1866, 612 1302, 1470, 1472, 1434, 1497, 1482, 1487, 1500, 1498, 1486, 613 614 1480, 1502, 1503, 1504, 1862, 1505, 1861, 1860, 1506, 1853, 615 1832, 1507, 1508, 1510, 1831, 1509, 1511, 0, 0, 1827, 616 1823, 1822, 1821, 1562, 0, 1817, 1816, 1815, 1811, 1810, 617 1812, 1808, 1807, 1806, 1518, 1522, 1476, 1513, 1540, 1519, 618 1515, 1521, 1543, 1554, 1802, 1544, 1801, 1545, 1546, 1549, 619 1555, 1551, 1557, 1800, 1796, 1795, 1794, 1559, 1790, 1789, 620 1785, 1781, 1780, 1779, 1770, 1769, 1766, 1765, 1764, 1747, 621 1739, 1738, 1560, 1738, 1562, 1561, 1564, 1563, 1568, 1732, 622 1570, 1595, 1572, 1729, 1574, 1573, 1578, 1577, 1584, 1589, 623 1718, 1717, 1698, 1697, 1696, 1688, 1687, 1648, 1647, 1646, 624 625 1645, 1644, 1643, 1645, 1590, 1591, 1594, 1592, 1599, 1593, 626 1644, 1643, 1603, 1642, 1640, 1604, 1608, 1609, 1636, 1635, 627 1634, 1633, 1631, 1630, 1427, 1351, 1612, 1614, 1167, 1613, 628 1120, 1620, 1622, 1624, 870, 613, 578, 452, 1615, 1626, 629 1628, 1629, 372, 287, 1630, 236, 200, 199, 166, 2604, 630 1705, 1717, 1729, 1738, 1747, 1759, 1768, 1780, 1792, 1804, 631 1811, 1820, 1826, 1832, 1838, 1844, 1850, 1856, 1862, 1868, 632 1874, 1886, 1892, 1895, 1902, 1904, 1910, 1916, 1922, 1924, 633 1930, 1935, 1947, 1959, 1965, 1971, 1977, 1983, 1985, 1991, 634 1993, 1999, 2001, 2007, 2009, 2015, 2017, 2023, 2025, 2031, 635 636 2033, 2039, 2046, 2052, 2058, 2064, 2070, 2072, 2078, 2080, 637 2086, 2088, 2094, 2099, 2111, 2117, 2123, 2125, 2131, 2133, 638 2139, 2141, 2147, 2149, 2155, 2157, 2163, 2165, 2171, 2177, 639 2179, 2185, 2187, 2193, 2199, 2205, 2207, 2213, 2215, 2221, 640 2223, 2229, 2231, 2237, 2239, 2245, 2250, 2262, 2268, 2274, 641 2276, 2282, 2284, 2290, 2292, 2298, 2300, 2306, 2308, 2314, 642 2316, 2322, 2324, 2330, 2332, 2338, 2344, 2346, 2352, 2354, 643 2360, 2362, 2368, 2370, 2372, 2377, 2383, 2391, 2397, 2403, 644 2405, 2411, 2413, 2415, 2420, 2426, 2428, 2430, 2432, 2434, 645 2436, 2438, 2440, 2446, 2448, 2454, 2456, 2458, 2460, 2462, 646 647 2471, 2477, 2479, 2481, 2487, 2493, 2499, 2501, 2507, 2513, 648 2519, 2525, 2531, 2537, 2543, 2549, 2555, 2561, 2567, 2573, 649 2579, 2585, 2591 645 650 } ; 646 651 647 static yyconst flex_int16_t yy_def[ 999] =652 static yyconst flex_int16_t yy_def[1024] = 648 653 { 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, 654 850, 1, 851, 851, 850, 5, 852, 852, 853, 853, 655 850, 850, 850, 850, 850, 850, 850, 854, 850, 850, 656 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 657 850, 31, 850, 850, 850, 850, 850, 850, 855, 854, 658 850, 850, 850, 850, 854, 850, 854, 854, 854, 854, 659 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 660 854, 850, 850, 850, 850, 850, 856, 850, 850, 850, 661 857, 850, 850, 858, 850, 850, 859, 850, 850, 850, 662 850, 850, 850, 850, 854, 850, 850, 850, 850, 850, 663 850, 850, 850, 850, 850, 850, 850, 850, 850, 860, 664 665 850, 850, 30, 850, 850, 850, 850, 861, 30, 850, 666 31, 850, 850, 31, 850, 850, 850, 850, 850, 850, 667 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 668 850, 850, 850, 850, 850, 850, 850, 850, 862, 850, 669 850, 850, 854, 863, 864, 850, 850, 854, 854, 854, 670 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 671 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 672 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 673 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 674 854, 850, 850, 850, 856, 856, 856, 850, 856, 850, 675 676 857, 850, 865, 866, 858, 850, 850, 850, 850, 867, 677 868, 869, 859, 850, 850, 850, 850, 850, 850, 850, 678 850, 850, 850, 850, 850, 850, 870, 871, 850, 850, 679 850, 850, 230, 872, 850, 850, 103, 103, 850, 850, 680 850, 850, 850, 850, 850, 850, 873, 874, 875, 850, 681 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 682 850, 850, 850, 862, 850, 876, 877, 878, 879, 880, 683 881, 850, 882, 882, 882, 882, 882, 882, 882, 882, 684 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 685 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 686 687 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 688 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 689 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 690 882, 882, 882, 882, 882, 883, 884, 885, 886, 887, 691 888, 889, 890, 850, 850, 891, 892, 893, 894, 895, 692 896, 850, 850, 850, 850, 850, 897, 898, 899, 900, 693 850, 850, 850, 850, 850, 850, 850, 850, 850, 901, 694 902, 903, 850, 850, 850, 903, 850, 850, 850, 904, 695 905, 906, 907, 908, 909, 910, 911, 912, 913, 850, 696 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 697 698 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 699 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 700 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 701 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 702 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 703 914, 914, 914, 914, 915, 916, 917, 918, 919, 920, 704 921, 922, 923, 850, 924, 925, 926, 927, 928, 928, 705 929, 930, 931, 932, 850, 850, 850, 933, 850, 933, 706 850, 850, 850, 850, 850, 850, 850, 850, 934, 935, 707 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 708 709 946, 947, 947, 947, 947, 947, 947, 947, 947, 947, 710 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 711 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 712 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 713 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 714 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 715 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 716 957, 958, 959, 960, 961, 962, 963, 964, 850, 850, 717 850, 850, 965, 850, 850, 850, 850, 850, 966, 967, 718 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 719 722 720 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 723 721 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 724 722 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 723 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 729 724 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 725 976, 978, 850, 979, 980, 981, 982, 983, 984, 985, 726 986, 987, 988, 850, 989, 990, 991, 992, 850, 850, 727 850, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 728 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 729 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 730 731 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 732 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1002, 1003, 981, 733 1004, 1005, 1006, 850, 1007, 993, 995, 1008, 1009, 1000, 734 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 735 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 736 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 737 1010, 1011, 1004, 1012, 1005, 1013, 1006, 1014, 1015, 1008, 738 1016, 1009, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 739 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 740 1017, 1010, 1018, 1011, 1019, 1012, 1020, 1013, 1021, 1014, 741 742 1022, 1015, 1016, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 743 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1023, 1017, 744 1018, 1019, 1020, 995, 1021, 1022, 1001, 1001, 1001, 1001, 745 1001, 1001, 1001, 1001, 1001, 1001, 1023, 995, 1001, 1001, 746 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 0, 747 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 748 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 749 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 750 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 751 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 752 753 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 754 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 755 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 756 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 757 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 758 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 759 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 760 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 761 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 762 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 763 764 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 765 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 766 850, 850, 850 759 767 } ; 760 768 761 static yyconst flex_int16_t yy_nxt[26 53] =769 static yyconst flex_int16_t yy_nxt[2690] = 762 770 { 0, 763 771 12, 13, 14, 15, 15, 15, 13, 16, 17, 12, … … 765 773 28, 29, 30, 31, 32, 32, 32, 32, 33, 34, 766 774 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,775 18, 18, 18, 40, 18, 18, 18, 18, 18, 40, 776 18, 41, 42, 43, 44, 45, 46, 47, 48, 49, 777 50, 51, 52, 53, 18, 54, 18, 55, 18, 18, 778 18, 18, 56, 57, 58, 59, 60, 61, 18, 18, 779 18, 62, 63, 64, 65, 66, 83, 91, 84, 84, 780 66, 87, 88, 67, 70, 70, 70, 70, 70, 70, 781 782 70, 70, 70, 70, 71, 70, 70, 70, 70, 70, 775 783 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 776 70, 70, 70, 70, 70, 70, 70, 70, 7 1, 71,784 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 777 785 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 778 71, 71, 71, 70, 72, 70, 70, 71, 73, 71, 786 71, 71, 71, 71, 71, 70, 72, 70, 70, 71, 787 73, 71, 71, 71, 71, 71, 71, 71, 71, 71, 779 788 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, 841 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 789 71, 71, 71, 71, 71, 70, 70, 70, 70, 75, 790 75, 78, 78, 122, 123, 89, 86, 78, 78, 86, 791 75, 75, 79, 80, 81, 81, 81, 79, 81, 80, 792 793 82, 82, 82, 81, 90, 92, 159, 175, 144, 97, 794 94, 98, 98, 98, 98, 98, 98, 86, 86, 93, 795 99, 84, 95, 96, 84, 100, 180, 117, 141, 76, 796 76, 76, 76, 142, 145, 101, 102, 86, 103, 103, 797 103, 103, 104, 104, 118, 86, 119, 120, 146, 247, 798 147, 86, 86, 203, 227, 105, 192, 191, 157, 106, 799 158, 148, 149, 150, 86, 107, 108, 151, 152, 160, 800 153, 109, 86, 154, 155, 143, 161, 105, 86, 204, 801 228, 156, 162, 110, 249, 86, 245, 86, 86, 86, 802 86, 107, 416, 850, 108, 102, 253, 111, 111, 111, 803 804 111, 111, 111, 86, 167, 178, 168, 193, 190, 86, 805 246, 179, 163, 850, 105, 169, 164, 243, 112, 176, 806 254, 165, 86, 244, 113, 166, 177, 170, 255, 258, 807 114, 259, 251, 86, 86, 171, 105, 172, 252, 86, 808 173, 141, 115, 850, 174, 258, 142, 259, 250, 244, 809 113, 124, 275, 311, 244, 125, 126, 86, 127, 188, 810 128, 129, 86, 130, 252, 131, 86, 86, 266, 181, 811 182, 850, 243, 423, 132, 133, 134, 273, 185, 183, 812 244, 86, 184, 252, 274, 86, 186, 258, 143, 259, 813 277, 197, 198, 187, 267, 135, 197, 258, 136, 259, 814 815 86, 251, 189, 194, 80, 81, 81, 81, 194, 252, 816 300, 195, 199, 199, 199, 199, 199, 199, 79, 80, 817 81, 81, 81, 79, 86, 137, 138, 206, 207, 86, 818 261, 258, 206, 259, 208, 237, 237, 237, 237, 208, 819 81, 80, 81, 81, 81, 81, 260, 276, 209, 209, 820 209, 209, 81, 80, 82, 82, 82, 81, 260, 208, 821 258, 86, 259, 850, 258, 258, 259, 259, 238, 258, 822 258, 259, 259, 86, 86, 210, 86, 278, 208, 258, 823 262, 259, 86, 208, 208, 281, 86, 208, 208, 86, 824 86, 850, 141, 86, 279, 208, 280, 142, 208, 299, 825 826 208, 211, 208, 86, 212, 214, 292, 850, 293, 215, 827 216, 307, 294, 86, 217, 218, 302, 219, 102, 220, 828 104, 104, 104, 104, 104, 104, 86, 86, 221, 222, 829 223, 86, 297, 240, 301, 240, 86, 105, 241, 241, 830 241, 241, 241, 241, 86, 298, 86, 295, 296, 224, 831 86, 86, 225, 239, 86, 86, 305, 141, 303, 105, 832 282, 309, 283, 326, 284, 285, 86, 304, 286, 308, 833 287, 242, 86, 86, 306, 288, 289, 290, 86, 291, 834 226, 230, 230, 230, 230, 230, 230, 86, 86, 86, 835 310, 86, 86, 312, 317, 313, 86, 86, 231, 232, 836 837 86, 86, 232, 314, 316, 328, 141, 318, 322, 321, 838 315, 338, 327, 335, 233, 86, 850, 319, 320, 86, 839 231, 232, 86, 86, 324, 323, 232, 98, 98, 98, 840 98, 98, 98, 850, 329, 331, 333, 339, 334, 325, 841 86, 206, 207, 332, 231, 232, 206, 352, 232, 353, 842 86, 365, 368, 330, 194, 80, 81, 81, 81, 194, 843 236, 522, 195, 197, 198, 86, 231, 232, 197, 197, 844 198, 352, 232, 353, 197, 336, 198, 352, 368, 353, 845 336, 352, 337, 353, 199, 199, 199, 199, 199, 199, 846 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 847 848 199, 199, 344, 344, 344, 344, 353, 353, 354, 352, 849 352, 353, 353, 352, 355, 353, 352, 86, 353, 352, 850 352, 353, 353, 352, 361, 353, 361, 643, 86, 362, 851 362, 362, 362, 362, 362, 345, 230, 230, 230, 230, 852 230, 230, 231, 232, 394, 378, 232, 241, 241, 241, 853 241, 241, 241, 231, 232, 86, 258, 232, 259, 258, 854 86, 259, 363, 86, 231, 232, 86, 86, 391, 233, 855 232, 378, 380, 426, 86, 231, 232, 437, 392, 396, 856 395, 232, 104, 104, 104, 104, 104, 104, 371, 366, 857 366, 366, 366, 366, 366, 240, 86, 240, 381, 105, 858 859 241, 241, 241, 241, 241, 241, 86, 232, 86, 86, 860 232, 373, 86, 374, 393, 250, 86, 375, 86, 86, 861 86, 105, 367, 376, 398, 86, 397, 403, 399, 232, 862 86, 400, 417, 405, 232, 377, 86, 401, 402, 374, 863 442, 406, 407, 375, 104, 104, 104, 104, 104, 104, 864 111, 111, 111, 111, 111, 111, 404, 86, 86, 86, 865 86, 86, 408, 411, 86, 86, 86, 409, 86, 414, 866 86, 86, 410, 86, 415, 421, 422, 250, 412, 413, 867 86, 86, 86, 255, 418, 86, 86, 86, 86, 419, 868 420, 425, 424, 430, 428, 86, 427, 86, 86, 435, 869 870 431, 429, 432, 86, 86, 86, 434, 86, 86, 86, 871 86, 436, 86, 86, 86, 86, 86, 439, 438, 433, 872 86, 444, 86, 86, 449, 443, 86, 440, 452, 86, 873 441, 445, 448, 446, 450, 447, 451, 86, 336, 198, 874 198, 454, 453, 336, 504, 337, 196, 208, 208, 208, 875 208, 344, 344, 344, 344, 352, 352, 353, 353, 362, 876 362, 362, 362, 362, 362, 475, 475, 475, 475, 475, 877 475, 230, 230, 230, 230, 230, 230, 487, 86, 86, 878 464, 86, 361, 232, 361, 86, 232, 362, 362, 362, 879 362, 362, 362, 86, 503, 512, 502, 479, 476, 86, 880 881 482, 488, 506, 509, 364, 232, 483, 480, 508, 86, 882 232, 237, 237, 237, 237, 104, 104, 366, 366, 366, 883 366, 366, 366, 479, 525, 366, 366, 366, 366, 366, 884 366, 371, 483, 483, 86, 232, 86, 479, 232, 86, 885 86, 86, 86, 232, 365, 510, 232, 481, 642, 86, 886 367, 482, 507, 505, 373, 511, 374, 232, 477, 483, 887 375, 513, 232, 479, 850, 232, 376, 484, 86, 484, 888 232, 516, 485, 485, 485, 485, 485, 485, 377, 86, 889 86, 86, 374, 86, 514, 515, 375, 373, 518, 374, 890 86, 86, 523, 375, 86, 519, 521, 517, 86, 489, 891 892 86, 86, 520, 86, 86, 486, 86, 86, 526, 86, 893 524, 377, 527, 530, 86, 374, 535, 531, 86, 375, 894 529, 534, 528, 86, 533, 86, 532, 86, 86, 536, 895 86, 538, 86, 86, 86, 86, 86, 86, 86, 86, 896 539, 543, 86, 537, 86, 541, 550, 86, 542, 540, 897 544, 553, 86, 86, 551, 86, 546, 545, 547, 548, 898 552, 556, 554, 86, 549, 86, 86, 198, 624, 86, 899 86, 557, 86, 562, 86, 479, 559, 555, 561, 479, 900 558, 208, 208, 208, 208, 480, 584, 601, 560, 475, 901 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 902 903 475, 479, 86, 86, 479, 479, 86, 232, 86, 86, 904 232, 86, 584, 232, 583, 602, 232, 86, 603, 86, 905 86, 605, 476, 86, 607, 608, 604, 86, 579, 232, 906 479, 606, 86, 86, 232, 232, 610, 611, 609, 86, 907 232, 366, 366, 366, 366, 366, 366, 580, 614, 580, 908 710, 612, 581, 581, 581, 581, 581, 581, 485, 485, 909 485, 485, 485, 485, 86, 585, 585, 585, 585, 585, 910 585, 484, 86, 484, 477, 616, 485, 485, 485, 485, 911 485, 485, 86, 586, 86, 582, 586, 615, 618, 86, 912 86, 86, 86, 613, 86, 86, 86, 617, 587, 619, 913 914 623, 622, 86, 625, 86, 586, 86, 86, 621, 86, 915 586, 620, 86, 630, 86, 86, 631, 86, 86, 627, 916 86, 628, 626, 86, 629, 636, 633, 86, 86, 632, 917 634, 86, 637, 635, 86, 86, 638, 86, 86, 647, 918 86, 86, 644, 86, 640, 86, 86, 648, 86, 86, 919 639, 641, 646, 649, 86, 683, 682, 86, 650, 645, 920 740, 651, 475, 475, 475, 475, 475, 475, 581, 581, 921 581, 581, 581, 581, 685, 669, 669, 669, 669, 669, 922 669, 580, 86, 580, 86, 86, 581, 581, 581, 581, 923 581, 581, 687, 586, 86, 579, 586, 684, 585, 585, 924 925 585, 585, 585, 585, 86, 686, 850, 691, 670, 585, 926 585, 585, 585, 585, 585, 586, 586, 86, 86, 586, 927 586, 689, 680, 86, 86, 86, 688, 586, 690, 86, 928 586, 587, 698, 86, 86, 681, 86, 696, 586, 692, 929 86, 86, 671, 586, 86, 693, 694, 86, 86, 586, 930 86, 86, 86, 697, 586, 695, 699, 701, 702, 704, 931 86, 86, 86, 86, 700, 86, 86, 86, 86, 703, 932 86, 708, 86, 705, 86, 706, 712, 713, 715, 86, 933 711, 714, 850, 707, 86, 709, 86, 731, 716, 717, 934 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 935 936 669, 669, 86, 86, 86, 86, 86, 743, 586, 735, 937 733, 586, 732, 734, 586, 86, 86, 586, 737, 738, 938 744, 739, 86, 670, 86, 736, 747, 742, 86, 724, 939 586, 741, 86, 775, 86, 586, 586, 745, 86, 86, 940 750, 586, 585, 585, 585, 585, 585, 585, 746, 86, 941 86, 749, 86, 748, 86, 86, 86, 86, 86, 86, 942 86, 86, 86, 86, 751, 86, 754, 86, 752, 759, 943 86, 86, 760, 86, 86, 671, 780, 753, 782, 756, 944 776, 755, 757, 758, 669, 669, 669, 669, 669, 669, 945 773, 774, 86, 779, 778, 86, 86, 86, 86, 783, 946 947 784, 86, 777, 86, 786, 785, 86, 86, 781, 86, 948 787, 86, 86, 86, 86, 86, 86, 724, 788, 807, 949 86, 811, 86, 809, 86, 86, 86, 812, 814, 86, 950 86, 806, 789, 815, 790, 805, 86, 808, 816, 804, 951 810, 86, 86, 86, 86, 86, 86, 86, 813, 829, 952 828, 86, 817, 830, 831, 86, 86, 818, 833, 834, 953 86, 86, 832, 827, 86, 86, 86, 86, 841, 835, 954 836, 840, 86, 839, 86, 842, 86, 843, 86, 844, 955 86, 86, 86, 847, 848, 838, 850, 845, 850, 850, 956 850, 837, 86, 846, 86, 86, 86, 86, 850, 850, 957 958 826, 850, 825, 850, 849, 68, 68, 68, 68, 68, 959 68, 68, 68, 68, 68, 68, 68, 74, 74, 74, 960 74, 74, 74, 74, 74, 74, 74, 74, 74, 77, 961 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 962 77, 85, 823, 850, 85, 85, 85, 85, 85, 85, 963 139, 822, 850, 821, 139, 139, 139, 139, 139, 196, 964 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 965 196, 201, 850, 820, 201, 201, 201, 201, 201, 201, 966 205, 86, 205, 205, 86, 205, 205, 205, 205, 205, 967 86, 205, 213, 850, 803, 213, 213, 213, 213, 213, 968 969 213, 213, 850, 213, 234, 234, 234, 234, 234, 234, 970 234, 234, 234, 234, 234, 234, 248, 248, 248, 802, 971 800, 850, 248, 264, 798, 850, 264, 264, 264, 264, 972 264, 264, 268, 268, 796, 850, 794, 268, 270, 270, 973 792, 86, 86, 270, 340, 340, 86, 86, 86, 340, 974 342, 342, 86, 86, 86, 342, 346, 346, 86, 86, 975 86, 346, 348, 348, 86, 850, 772, 348, 350, 350, 976 770, 850, 850, 350, 357, 357, 767, 765, 763, 357, 977 359, 359, 850, 86, 86, 359, 234, 234, 234, 234, 978 234, 234, 234, 234, 234, 234, 234, 234, 370, 370, 979 980 372, 372, 372, 372, 372, 86, 372, 248, 248, 248, 981 382, 382, 86, 86, 86, 382, 384, 384, 86, 86, 982 730, 384, 386, 386, 727, 726, 202, 386, 268, 268, 983 388, 388, 720, 719, 653, 388, 270, 270, 85, 86, 984 86, 85, 85, 85, 85, 85, 85, 196, 196, 196, 985 196, 196, 196, 196, 196, 196, 196, 196, 196, 455, 986 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 987 455, 456, 456, 86, 86, 86, 456, 458, 458, 86, 988 86, 86, 458, 460, 460, 86, 86, 86, 460, 340, 989 340, 462, 462, 86, 86, 86, 462, 342, 342, 465, 990 991 465, 86, 678, 677, 465, 346, 346, 467, 467, 675, 992 673, 583, 467, 348, 348, 469, 469, 668, 667, 665, 993 469, 350, 350, 471, 471, 663, 661, 659, 471, 357, 994 357, 473, 473, 657, 655, 653, 473, 359, 359, 478, 995 478, 86, 478, 86, 478, 370, 370, 86, 370, 86, 996 370, 372, 372, 372, 372, 372, 86, 372, 490, 490, 997 86, 86, 86, 490, 492, 492, 86, 600, 598, 492, 998 494, 494, 596, 594, 592, 494, 382, 382, 496, 496, 999 590, 489, 588, 496, 384, 384, 498, 498, 588, 578, 1000 576, 498, 386, 386, 500, 500, 470, 470, 574, 500, 1001 1002 388, 388, 85, 572, 570, 85, 85, 85, 85, 85, 1003 85, 455, 455, 455, 455, 455, 455, 455, 455, 455, 1004 455, 455, 455, 563, 563, 568, 566, 564, 563, 456, 1005 456, 565, 565, 86, 86, 86, 565, 458, 458, 567, 1006 567, 86, 86, 86, 567, 460, 460, 569, 569, 86, 1007 86, 501, 569, 462, 462, 571, 571, 499, 497, 495, 1008 571, 465, 465, 573, 573, 493, 491, 474, 573, 467, 1009 467, 469, 469, 472, 353, 353, 469, 575, 575, 470, 1010 468, 466, 575, 471, 471, 577, 577, 463, 461, 459, 1011 577, 473, 473, 478, 478, 457, 478, 86, 478, 372, 1012 1013 372, 86, 86, 390, 372, 589, 589, 389, 387, 385, 1014 589, 490, 490, 591, 591, 383, 265, 260, 591, 492, 1015 492, 593, 593, 259, 379, 379, 593, 494, 494, 595, 1016 595, 247, 369, 369, 595, 496, 496, 597, 597, 235, 1017 364, 360, 597, 498, 498, 599, 599, 358, 356, 352, 1018 599, 500, 500, 85, 351, 349, 85, 85, 85, 85, 1019 85, 85, 652, 652, 652, 652, 652, 652, 652, 652, 1020 652, 652, 652, 652, 654, 654, 347, 343, 341, 654, 1021 563, 563, 656, 656, 202, 198, 86, 656, 565, 565, 1022 658, 658, 272, 271, 269, 658, 567, 567, 660, 660, 1023 1024 265, 260, 263, 660, 569, 569, 662, 662, 260, 258, 1025 257, 662, 571, 571, 664, 664, 256, 235, 229, 664, 1026 573, 573, 666, 666, 84, 84, 86, 666, 575, 575, 1027 85, 85, 202, 200, 84, 85, 577, 577, 478, 478, 1028 140, 121, 116, 478, 672, 672, 86, 850, 69, 672, 1029 589, 589, 674, 674, 69, 850, 850, 674, 591, 591, 1030 676, 676, 850, 850, 850, 676, 593, 593, 139, 139, 1031 850, 850, 850, 139, 595, 595, 679, 679, 597, 597, 1032 85, 850, 850, 85, 85, 85, 85, 85, 85, 599, 1033 599, 652, 652, 652, 652, 652, 652, 652, 652, 652, 1034 1035 652, 652, 652, 718, 718, 850, 850, 850, 718, 654, 1036 654, 201, 201, 850, 850, 850, 201, 656, 656, 721, 1037 721, 658, 658, 201, 850, 850, 201, 201, 201, 201, 1038 201, 201, 660, 660, 722, 722, 662, 662, 664, 664, 1039 723, 723, 666, 666, 85, 85, 725, 725, 850, 850, 1040 850, 725, 672, 672, 264, 264, 850, 850, 850, 264, 1041 674, 674, 728, 728, 676, 676, 139, 139, 729, 729, 1042 850, 850, 850, 729, 85, 850, 850, 85, 85, 85, 1043 85, 85, 85, 761, 761, 718, 718, 762, 762, 850, 1044 850, 850, 762, 764, 764, 850, 850, 850, 764, 766, 1045 1046 766, 850, 850, 850, 766, 768, 768, 769, 769, 850, 1047 850, 850, 769, 771, 771, 850, 850, 850, 771, 791, 1048 791, 850, 850, 850, 791, 793, 793, 850, 850, 850, 1049 793, 795, 795, 850, 850, 850, 795, 797, 797, 850, 1050 850, 850, 797, 799, 799, 850, 850, 850, 799, 801, 1051 801, 850, 850, 850, 801, 599, 599, 850, 850, 850, 1052 599, 819, 819, 850, 850, 850, 819, 660, 660, 850, 1053 850, 850, 660, 664, 664, 850, 850, 850, 664, 85, 1054 85, 850, 850, 850, 85, 824, 824, 850, 850, 850, 1055 824, 139, 139, 850, 850, 850, 139, 201, 201, 850, 1056 1057 850, 850, 201, 11, 850, 850, 850, 850, 850, 850, 1058 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1059 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1060 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1061 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1062 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1063 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1064 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1065 850, 850, 850, 850, 850, 850, 850, 850, 850 1055 1066 } ; 1056 1067 1057 static yyconst flex_int16_t yy_chk[26 53] =1068 static yyconst flex_int16_t yy_chk[2690] = 1058 1069 { 0, 1059 1070 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 1065 1076 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1066 1077 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,1078 1, 1, 1, 1, 1, 2, 16, 24, 16, 24, 1079 2, 19, 19, 2, 5, 5, 5, 5, 5, 5, 1069 1080 1070 1081 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, … … 1075 1086 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1076 1087 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 1088 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 1089 8, 9, 10, 37, 37, 20, 48, 9, 10, 53, 1090 7, 8, 13, 13, 13, 13, 13, 13, 15, 15, 1091 1092 15, 15, 15, 15, 20, 25, 48, 53, 42, 28, 1093 27, 28, 28, 28, 28, 28, 28, 56, 849, 25, 1094 29, 25, 27, 27, 27, 29, 56, 35, 40, 7, 1095 8, 9, 10, 40, 42, 29, 30, 47, 30, 30, 1096 30, 30, 30, 30, 35, 61, 35, 35, 44, 108, 1097 44, 848, 847, 72, 86, 30, 63, 61, 47, 30, 1098 47, 45, 45, 45, 49, 30, 30, 45, 45, 49, 1099 45, 30, 40, 45, 45, 40, 49, 30, 45, 72, 1100 86, 45, 49, 30, 108, 296, 107, 55, 846, 51, 1101 60, 30, 296, 114, 30, 31, 113, 31, 31, 31, 1102 1103 31, 31, 31, 50, 51, 55, 51, 63, 60, 54, 1104 107, 55, 50, 109, 31, 51, 50, 106, 31, 54, 1105 113, 50, 52, 106, 31, 50, 54, 52, 114, 125, 1106 31, 125, 112, 173, 149, 52, 31, 52, 112, 844, 1107 52, 59, 31, 109, 52, 126, 59, 126, 109, 106, 1108 31, 38, 149, 173, 110, 38, 38, 57, 38, 59, 1109 38, 38, 148, 38, 112, 38, 58, 302, 140, 57, 1110 57, 109, 110, 302, 38, 38, 38, 148, 58, 57, 1111 110, 151, 57, 115, 148, 59, 58, 128, 59, 128, 1112 151, 67, 67, 58, 140, 38, 67, 131, 38, 131, 1113 1114 163, 115, 59, 66, 66, 66, 66, 66, 66, 115, 1115 163, 66, 67, 67, 67, 67, 67, 67, 79, 79, 1116 79, 79, 79, 79, 843, 38, 38, 76, 76, 150, 1117 132, 132, 76, 132, 76, 103, 103, 103, 103, 76, 1118 81, 81, 81, 81, 81, 81, 129, 150, 76, 76, 1119 76, 76, 82, 82, 82, 82, 82, 82, 130, 76, 1120 129, 152, 129, 103, 133, 136, 133, 136, 103, 138, 1121 130, 138, 130, 155, 154, 76, 153, 152, 76, 134, 1122 134, 134, 162, 76, 76, 155, 158, 76, 76, 169, 1123 157, 103, 143, 165, 153, 76, 154, 143, 76, 162, 1124 1125 76, 76, 76, 159, 76, 84, 157, 838, 158, 84, 1126 84, 169, 159, 164, 84, 84, 165, 84, 104, 84, 1127 104, 104, 104, 104, 104, 104, 160, 161, 84, 84, 1128 84, 166, 161, 105, 164, 105, 143, 104, 105, 105, 1129 105, 105, 105, 105, 171, 161, 167, 160, 160, 84, 1130 184, 168, 84, 104, 170, 156, 168, 330, 166, 104, 1131 156, 171, 156, 184, 156, 156, 174, 167, 156, 170, 1132 156, 105, 172, 175, 168, 156, 156, 156, 186, 156, 1133 84, 98, 98, 98, 98, 98, 98, 178, 177, 179, 1134 172, 181, 185, 174, 179, 175, 180, 182, 98, 98, 1135 1136 191, 330, 98, 177, 178, 186, 188, 180, 182, 181, 1137 177, 202, 185, 191, 98, 187, 238, 180, 180, 183, 1138 98, 98, 189, 190, 183, 182, 98, 102, 102, 102, 1139 102, 102, 102, 837, 187, 189, 190, 202, 190, 183, 1140 409, 206, 206, 189, 102, 102, 206, 215, 102, 215, 1141 188, 238, 243, 188, 194, 194, 194, 194, 194, 194, 1142 102, 409, 194, 195, 195, 836, 102, 102, 195, 197, 1143 197, 216, 102, 216, 197, 199, 199, 217, 243, 217, 1144 199, 220, 199, 220, 195, 195, 195, 195, 195, 195, 1145 197, 197, 197, 197, 197, 197, 199, 199, 199, 199, 1146 1147 199, 199, 209, 209, 209, 209, 218, 219, 221, 221, 1148 222, 221, 222, 223, 223, 223, 225, 551, 225, 219, 1149 218, 219, 218, 226, 231, 226, 231, 551, 276, 231, 1150 231, 231, 231, 231, 231, 209, 230, 230, 230, 230, 1151 230, 230, 236, 236, 276, 251, 236, 240, 240, 240, 1152 240, 240, 240, 230, 230, 273, 261, 230, 261, 262, 1153 274, 262, 231, 277, 236, 236, 316, 305, 273, 230, 1154 236, 251, 265, 305, 278, 230, 230, 316, 274, 278, 1155 277, 230, 239, 239, 239, 239, 239, 239, 248, 241, 1156 241, 241, 241, 241, 241, 242, 275, 242, 265, 239, 1157 1158 242, 242, 242, 242, 242, 242, 279, 241, 281, 283, 1159 241, 248, 297, 248, 275, 239, 282, 248, 285, 280, 1160 321, 239, 241, 248, 280, 286, 279, 283, 281, 241, 1161 284, 282, 297, 285, 241, 248, 290, 282, 282, 248, 1162 321, 286, 286, 248, 250, 250, 250, 250, 250, 250, 1163 255, 255, 255, 255, 255, 255, 284, 287, 288, 289, 1164 291, 293, 287, 290, 294, 295, 298, 288, 299, 294, 1165 300, 301, 289, 303, 295, 300, 301, 250, 291, 293, 1166 306, 313, 304, 255, 298, 307, 308, 312, 309, 299, 1167 299, 304, 303, 309, 307, 310, 306, 311, 314, 313, 1168 1169 310, 308, 311, 317, 318, 319, 312, 320, 322, 324, 1170 325, 314, 323, 326, 327, 329, 331, 318, 317, 311, 1171 333, 323, 835, 332, 329, 322, 335, 319, 333, 393, 1172 320, 324, 327, 325, 331, 326, 332, 334, 336, 336, 1173 337, 335, 334, 336, 393, 336, 337, 344, 344, 344, 1174 344, 345, 345, 345, 345, 354, 355, 354, 355, 361, 1175 361, 361, 361, 361, 361, 362, 362, 362, 362, 362, 1176 362, 364, 364, 364, 364, 364, 364, 375, 392, 401, 1177 344, 398, 363, 362, 363, 391, 362, 363, 363, 363, 1178 363, 363, 363, 395, 392, 401, 391, 370, 362, 397, 1179 1180 373, 375, 395, 398, 364, 362, 373, 370, 397, 412, 1181 362, 365, 365, 365, 365, 365, 365, 366, 366, 366, 1182 366, 366, 366, 370, 412, 367, 367, 367, 367, 367, 1183 367, 372, 373, 377, 394, 366, 399, 371, 366, 402, 1184 550, 396, 400, 367, 365, 399, 367, 371, 550, 404, 1185 366, 377, 396, 394, 372, 400, 372, 366, 367, 377, 1186 372, 402, 366, 371, 376, 367, 372, 374, 403, 374, 1187 367, 404, 374, 374, 374, 374, 374, 374, 372, 405, 1188 407, 410, 372, 406, 403, 403, 372, 376, 406, 376, 1189 408, 411, 410, 376, 414, 407, 408, 405, 419, 376, 1190 1191 416, 418, 407, 421, 420, 374, 423, 424, 414, 429, 1192 411, 376, 416, 420, 426, 376, 424, 420, 422, 376, 1193 419, 423, 418, 428, 422, 430, 421, 431, 433, 426, 1194 432, 429, 434, 436, 438, 439, 444, 443, 440, 441, 1195 430, 434, 442, 428, 446, 432, 443, 445, 433, 431, 1196 436, 446, 448, 449, 444, 447, 439, 438, 440, 441, 1197 445, 449, 447, 450, 442, 451, 453, 455, 527, 454, 1198 502, 449, 831, 455, 527, 478, 451, 448, 454, 481, 1199 450, 464, 464, 464, 464, 478, 482, 502, 453, 475, 1200 475, 475, 475, 475, 475, 476, 476, 476, 476, 476, 1201 1202 476, 478, 503, 505, 480, 481, 506, 475, 507, 508, 1203 475, 509, 482, 476, 480, 503, 476, 513, 505, 829, 1204 510, 507, 475, 634, 509, 510, 506, 511, 476, 475, 1205 480, 508, 514, 512, 475, 476, 512, 513, 511, 516, 1206 476, 477, 477, 477, 477, 477, 477, 479, 516, 479, 1207 634, 514, 479, 479, 479, 479, 479, 479, 484, 484, 1208 484, 484, 484, 484, 518, 485, 485, 485, 485, 485, 1209 485, 486, 515, 486, 477, 518, 486, 486, 486, 486, 1210 486, 486, 517, 485, 519, 479, 485, 517, 520, 522, 1211 521, 523, 524, 515, 528, 525, 530, 519, 485, 521, 1212 1213 525, 524, 531, 528, 534, 485, 532, 536, 523, 533, 1214 485, 522, 537, 534, 538, 539, 536, 520, 541, 531, 1215 542, 532, 530, 544, 533, 542, 538, 545, 546, 537, 1216 539, 547, 544, 541, 548, 552, 545, 553, 556, 555, 1217 554, 559, 552, 557, 547, 555, 603, 556, 560, 602, 1218 546, 548, 554, 557, 691, 603, 602, 605, 559, 553, 1219 691, 560, 579, 579, 579, 579, 579, 579, 580, 580, 1220 580, 580, 580, 580, 605, 581, 581, 581, 581, 581, 1221 581, 582, 606, 582, 604, 607, 582, 582, 582, 582, 1222 582, 582, 607, 581, 611, 579, 581, 604, 585, 585, 1223 1224 585, 585, 585, 585, 609, 606, 826, 611, 581, 587, 1225 587, 587, 587, 587, 587, 581, 585, 601, 608, 585, 1226 581, 609, 601, 613, 612, 610, 608, 587, 610, 614, 1227 587, 585, 618, 615, 616, 601, 617, 616, 585, 612, 1228 622, 619, 587, 585, 620, 613, 614, 623, 621, 587, 1229 624, 626, 627, 617, 587, 615, 619, 621, 622, 624, 1230 618, 628, 629, 636, 620, 633, 680, 639, 648, 623, 1231 640, 629, 647, 626, 651, 627, 639, 640, 648, 650, 1232 636, 647, 825, 628, 683, 633, 694, 680, 650, 651, 1233 669, 669, 669, 669, 669, 669, 670, 670, 670, 670, 1234 1235 670, 670, 681, 689, 685, 686, 684, 694, 669, 685, 1236 683, 669, 681, 684, 670, 687, 688, 670, 687, 688, 1237 695, 689, 692, 669, 693, 686, 698, 693, 737, 670, 1238 669, 692, 701, 737, 696, 669, 670, 696, 700, 697, 1239 701, 670, 671, 671, 671, 671, 671, 671, 697, 695, 1240 699, 700, 698, 699, 702, 703, 704, 706, 709, 712, 1241 713, 716, 714, 717, 702, 738, 706, 741, 703, 716, 1242 735, 740, 717, 742, 736, 671, 742, 704, 744, 712, 1243 738, 709, 713, 714, 724, 724, 724, 724, 724, 724, 1244 735, 736, 739, 741, 740, 743, 746, 748, 749, 746, 1245 1246 748, 750, 739, 752, 750, 749, 744, 751, 743, 753, 1247 751, 758, 773, 776, 775, 778, 777, 724, 752, 777, 1248 779, 782, 781, 779, 783, 786, 785, 783, 786, 788, 1249 787, 776, 753, 787, 758, 775, 789, 778, 788, 773, 1250 781, 790, 805, 806, 808, 810, 807, 782, 785, 807, 1251 806, 809, 789, 808, 809, 813, 816, 790, 813, 816, 1252 817, 818, 810, 805, 827, 830, 828, 839, 830, 817, 1253 818, 828, 832, 827, 833, 832, 834, 833, 840, 834, 1254 841, 842, 845, 841, 842, 824, 823, 839, 822, 821, 1255 820, 819, 815, 840, 814, 812, 811, 804, 803, 802, 1256 1257 801, 800, 799, 798, 845, 851, 851, 851, 851, 851, 1258 851, 851, 851, 851, 851, 851, 851, 852, 852, 852, 1259 852, 852, 852, 852, 852, 852, 852, 852, 852, 853, 1260 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 1261 853, 854, 797, 796, 854, 854, 854, 854, 854, 854, 1262 855, 795, 794, 793, 855, 855, 855, 855, 855, 856, 1263 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 1264 856, 857, 792, 791, 857, 857, 857, 857, 857, 857, 1265 858, 784, 858, 858, 780, 858, 858, 858, 858, 858, 1266 774, 858, 859, 772, 771, 859, 859, 859, 859, 859, 1267 1268 859, 859, 770, 859, 860, 860, 860, 860, 860, 860, 1269 860, 860, 860, 860, 860, 860, 861, 861, 861, 769, 1270 768, 767, 861, 862, 766, 765, 862, 862, 862, 862, 1271 862, 862, 863, 863, 764, 763, 762, 863, 864, 864, 1272 761, 760, 759, 864, 865, 865, 757, 756, 755, 865, 1273 866, 866, 754, 747, 745, 866, 867, 867, 734, 733, 1274 732, 867, 868, 868, 731, 730, 729, 868, 869, 869, 1275 728, 727, 726, 869, 870, 870, 723, 722, 721, 870, 1276 871, 871, 720, 715, 711, 871, 872, 872, 872, 872, 1277 872, 872, 872, 872, 872, 872, 872, 872, 873, 873, 1278 1279 874, 874, 874, 874, 874, 710, 874, 875, 875, 875, 1280 876, 876, 708, 707, 705, 876, 877, 877, 690, 682, 1281 679, 877, 878, 878, 674, 672, 660, 878, 879, 879, 1282 880, 880, 656, 654, 652, 880, 881, 881, 882, 649, 1283 646, 882, 882, 882, 882, 882, 882, 883, 883, 883, 1284 883, 883, 883, 883, 883, 883, 883, 883, 883, 884, 1285 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 1286 884, 885, 885, 645, 644, 643, 885, 886, 886, 642, 1287 641, 638, 886, 887, 887, 637, 635, 632, 887, 888, 1288 888, 889, 889, 631, 630, 625, 889, 890, 890, 891, 1289 1290 891, 599, 595, 593, 891, 892, 892, 893, 893, 591, 1291 589, 583, 893, 894, 894, 895, 895, 577, 575, 573, 1292 895, 896, 896, 897, 897, 571, 569, 567, 897, 898, 1293 898, 899, 899, 565, 563, 562, 899, 900, 900, 901, 1294 901, 561, 901, 558, 901, 902, 902, 549, 902, 543, 1295 902, 903, 903, 903, 903, 903, 540, 903, 904, 904, 1296 535, 529, 526, 904, 905, 905, 504, 500, 498, 905, 1297 906, 906, 496, 494, 492, 906, 907, 907, 908, 908, 1298 490, 489, 488, 908, 909, 909, 910, 910, 487, 473, 1299 471, 910, 911, 911, 912, 912, 470, 469, 467, 912, 1300 1301 913, 913, 914, 465, 462, 914, 914, 914, 914, 914, 1302 914, 915, 915, 915, 915, 915, 915, 915, 915, 915, 1303 915, 915, 915, 916, 916, 460, 458, 456, 916, 917, 1304 917, 918, 918, 452, 437, 435, 918, 919, 919, 920, 1305 920, 427, 425, 417, 920, 921, 921, 922, 922, 415, 1306 413, 388, 922, 923, 923, 924, 924, 386, 384, 382, 1307 924, 925, 925, 926, 926, 381, 380, 359, 926, 927, 1308 927, 928, 928, 357, 356, 352, 928, 929, 929, 350, 1309 348, 346, 929, 930, 930, 931, 931, 342, 340, 339, 1310 931, 932, 932, 933, 933, 338, 933, 328, 933, 934, 1311 1312 934, 315, 292, 272, 934, 935, 935, 270, 268, 267, 1313 935, 936, 936, 937, 937, 266, 264, 263, 937, 938, 1314 938, 939, 939, 258, 254, 253, 939, 940, 940, 941, 1315 941, 249, 246, 245, 941, 942, 942, 943, 943, 234, 1316 233, 228, 943, 944, 944, 945, 945, 227, 224, 214, 1317 945, 946, 946, 947, 212, 211, 947, 947, 947, 947, 1318 947, 947, 948, 948, 948, 948, 948, 948, 948, 948, 1319 948, 948, 948, 948, 949, 949, 210, 204, 203, 949, 1320 950, 950, 951, 951, 201, 196, 176, 951, 952, 952, 1321 953, 953, 147, 145, 144, 953, 954, 954, 955, 955, 1322 1323 139, 137, 135, 955, 956, 956, 957, 957, 127, 124, 1324 123, 957, 958, 958, 959, 959, 119, 100, 97, 959, 1325 960, 960, 961, 961, 94, 92, 85, 961, 962, 962, 1326 963, 963, 71, 69, 65, 963, 964, 964, 965, 965, 1327 39, 36, 33, 965, 966, 966, 18, 11, 4, 966, 1328 967, 967, 968, 968, 3, 0, 0, 968, 969, 969, 1329 970, 970, 0, 0, 0, 970, 971, 971, 972, 972, 1330 0, 0, 0, 972, 973, 973, 974, 974, 975, 975, 1331 976, 0, 0, 976, 976, 976, 976, 976, 976, 977, 1332 977, 978, 978, 978, 978, 978, 978, 978, 978, 978, 1333 1334 978, 978, 978, 979, 979, 0, 0, 0, 979, 980, 1335 980, 981, 981, 0, 0, 0, 981, 982, 982, 983, 1336 983, 984, 984, 985, 0, 0, 985, 985, 985, 985, 1337 985, 985, 986, 986, 987, 987, 988, 988, 989, 989, 1338 990, 990, 991, 991, 992, 992, 993, 993, 0, 0, 1339 0, 993, 994, 994, 995, 995, 0, 0, 0, 995, 1340 996, 996, 997, 997, 998, 998, 999, 999, 1000, 1000, 1341 0, 0, 0, 1000, 1001, 0, 0, 1001, 1001, 1001, 1342 1001, 1001, 1001, 1002, 1002, 1003, 1003, 1004, 1004, 0, 1343 0, 0, 1004, 1005, 1005, 0, 0, 0, 1005, 1006, 1344 1345 1006, 0, 0, 0, 1006, 1007, 1007, 1008, 1008, 0, 1346 0, 0, 1008, 1009, 1009, 0, 0, 0, 1009, 1010, 1347 1010, 0, 0, 0, 1010, 1011, 1011, 0, 0, 0, 1348 1011, 1012, 1012, 0, 0, 0, 1012, 1013, 1013, 0, 1349 0, 0, 1013, 1014, 1014, 0, 0, 0, 1014, 1015, 1350 1015, 0, 0, 0, 1015, 1016, 1016, 0, 0, 0, 1351 1016, 1017, 1017, 0, 0, 0, 1017, 1018, 1018, 0, 1352 0, 0, 1018, 1019, 1019, 0, 0, 0, 1019, 1020, 1353 1020, 0, 0, 0, 1020, 1021, 1021, 0, 0, 0, 1354 1021, 1022, 1022, 0, 0, 0, 1022, 1023, 1023, 0, 1355 1356 0, 0, 1023, 850, 850, 850, 850, 850, 850, 850, 1357 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1358 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1359 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1360 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1361 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1362 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1363 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 1364 850, 850, 850, 850, 850, 850, 850, 850, 850 1351 1365 } ; 1352 1366 1353 1367 /* Table of booleans, true if rule could match eol. */ 1354 static yyconst flex_int32_t yy_rule_can_match_eol[17 2] =1368 static yyconst flex_int32_t yy_rule_can_match_eol[178] = 1355 1369 { 0, 1356 1370 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … … 1359 1373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1360 1374 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,1375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1362 1376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1363 1377 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, };1378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; 1365 1379 1366 1380 static yy_state_type yy_last_accepting_state; … … 1390 1404 * Created On : Sat Sep 22 08:58:10 2001 1391 1405 * Last Modified By : Peter A. Buhr 1392 * Last Modified On : Fri Jun 19 11:10:1420151393 * Update Count : 3921406 * Last Modified On : Mon Sep 28 17:07:48 2015 1407 * Update Count : 402 1394 1408 */ 1395 1409 #line 20 "lex.ll" … … 1448 1462 1449 1463 1450 #line 14 51"Parser/lex.cc"1464 #line 1465 "Parser/lex.cc" 1451 1465 1452 1466 #define INITIAL 0 … … 1643 1657 1644 1658 /* line directives */ 1645 #line 16 46"Parser/lex.cc"1659 #line 1660 "Parser/lex.cc" 1646 1660 1647 1661 if ( !(yy_init) ) … … 1697 1711 { 1698 1712 yy_current_state = (int) yy_def[yy_current_state]; 1699 if ( yy_current_state >= 8 26)1713 if ( yy_current_state >= 851 ) 1700 1714 yy_c = yy_meta[(unsigned int) yy_c]; 1701 1715 } … … 1703 1717 ++yy_cp; 1704 1718 } 1705 while ( yy_base[yy_current_state] != 2 568);1719 while ( yy_base[yy_current_state] != 2604 ); 1706 1720 1707 1721 yy_find_action: … … 1850 1864 YY_RULE_SETUP 1851 1865 #line 184 "lex.ll" 1866 { KEYWORD_RETURN(AT); } // CFA 1867 YY_BREAK 1868 case 18: 1869 YY_RULE_SETUP 1870 #line 185 "lex.ll" 1852 1871 { KEYWORD_RETURN(ATOMIC); } // C11 1853 YY_BREAK1854 case 18:1855 YY_RULE_SETUP1856 #line 185 "lex.ll"1857 { KEYWORD_RETURN(ATTRIBUTE); } // GCC1858 1872 YY_BREAK 1859 1873 case 19: … … 1865 1879 YY_RULE_SETUP 1866 1880 #line 187 "lex.ll" 1881 { KEYWORD_RETURN(ATTRIBUTE); } // GCC 1882 YY_BREAK 1883 case 21: 1884 YY_RULE_SETUP 1885 #line 188 "lex.ll" 1867 1886 { KEYWORD_RETURN(AUTO); } 1868 1887 YY_BREAK 1869 case 2 1:1870 YY_RULE_SETUP 1871 #line 18 8"lex.ll"1888 case 22: 1889 YY_RULE_SETUP 1890 #line 189 "lex.ll" 1872 1891 { KEYWORD_RETURN(BOOL); } // C99 1873 1892 YY_BREAK 1874 case 2 2:1875 YY_RULE_SETUP 1876 #line 1 89"lex.ll"1893 case 23: 1894 YY_RULE_SETUP 1895 #line 190 "lex.ll" 1877 1896 { KEYWORD_RETURN(BREAK); } 1878 1897 YY_BREAK 1879 case 2 3:1880 YY_RULE_SETUP 1881 #line 19 0"lex.ll"1898 case 24: 1899 YY_RULE_SETUP 1900 #line 191 "lex.ll" 1882 1901 { KEYWORD_RETURN(CASE); } 1883 1902 YY_BREAK 1884 case 2 4:1885 YY_RULE_SETUP 1886 #line 19 1"lex.ll"1903 case 25: 1904 YY_RULE_SETUP 1905 #line 192 "lex.ll" 1887 1906 { KEYWORD_RETURN(CATCH); } // CFA 1888 1907 YY_BREAK 1889 case 25: 1890 YY_RULE_SETUP 1891 #line 192 "lex.ll" 1908 case 26: 1909 YY_RULE_SETUP 1910 #line 193 "lex.ll" 1911 { KEYWORD_RETURN(CATCHRESUME); } // CFA 1912 YY_BREAK 1913 case 27: 1914 YY_RULE_SETUP 1915 #line 194 "lex.ll" 1892 1916 { KEYWORD_RETURN(CHAR); } 1893 1917 YY_BREAK 1894 case 2 6:1895 YY_RULE_SETUP 1896 #line 19 3"lex.ll"1918 case 28: 1919 YY_RULE_SETUP 1920 #line 195 "lex.ll" 1897 1921 { KEYWORD_RETURN(CHOOSE); } // CFA 1898 1922 YY_BREAK 1899 case 2 7:1900 YY_RULE_SETUP 1901 #line 19 4"lex.ll"1923 case 29: 1924 YY_RULE_SETUP 1925 #line 196 "lex.ll" 1902 1926 { KEYWORD_RETURN(COMPLEX); } // C99 1903 1927 YY_BREAK 1904 case 28:1905 YY_RULE_SETUP 1906 #line 19 5"lex.ll"1928 case 30: 1929 YY_RULE_SETUP 1930 #line 197 "lex.ll" 1907 1931 { KEYWORD_RETURN(COMPLEX); } // GCC 1908 1932 YY_BREAK 1909 case 29:1910 YY_RULE_SETUP 1911 #line 19 6"lex.ll"1933 case 31: 1934 YY_RULE_SETUP 1935 #line 198 "lex.ll" 1912 1936 { KEYWORD_RETURN(COMPLEX); } // GCC 1913 1937 YY_BREAK 1914 case 3 0:1915 YY_RULE_SETUP 1916 #line 19 7"lex.ll"1938 case 32: 1939 YY_RULE_SETUP 1940 #line 199 "lex.ll" 1917 1941 { KEYWORD_RETURN(CONST); } 1918 1942 YY_BREAK 1919 case 3 1:1920 YY_RULE_SETUP 1921 #line 198"lex.ll"1943 case 33: 1944 YY_RULE_SETUP 1945 #line 200 "lex.ll" 1922 1946 { KEYWORD_RETURN(CONST); } // GCC 1923 1947 YY_BREAK 1924 case 3 2:1925 YY_RULE_SETUP 1926 #line 199"lex.ll"1948 case 34: 1949 YY_RULE_SETUP 1950 #line 201 "lex.ll" 1927 1951 { KEYWORD_RETURN(CONST); } // GCC 1928 1952 YY_BREAK 1929 case 3 3:1930 YY_RULE_SETUP 1931 #line 20 0"lex.ll"1953 case 35: 1954 YY_RULE_SETUP 1955 #line 202 "lex.ll" 1932 1956 { KEYWORD_RETURN(CONTEXT); } // CFA 1933 1957 YY_BREAK 1934 case 3 4:1935 YY_RULE_SETUP 1936 #line 20 1"lex.ll"1958 case 36: 1959 YY_RULE_SETUP 1960 #line 203 "lex.ll" 1937 1961 { KEYWORD_RETURN(CONTINUE); } 1938 1962 YY_BREAK 1939 case 3 5:1940 YY_RULE_SETUP 1941 #line 20 2"lex.ll"1963 case 37: 1964 YY_RULE_SETUP 1965 #line 204 "lex.ll" 1942 1966 { KEYWORD_RETURN(DEFAULT); } 1943 1967 YY_BREAK 1944 case 36: 1945 YY_RULE_SETUP 1946 #line 203 "lex.ll" 1968 case 38: 1969 YY_RULE_SETUP 1970 #line 205 "lex.ll" 1971 { KEYWORD_RETURN(DISABLE); } // CFA 1972 YY_BREAK 1973 case 39: 1974 YY_RULE_SETUP 1975 #line 206 "lex.ll" 1947 1976 { KEYWORD_RETURN(DO); } 1948 1977 YY_BREAK 1949 case 37:1950 YY_RULE_SETUP 1951 #line 20 4"lex.ll"1978 case 40: 1979 YY_RULE_SETUP 1980 #line 207 "lex.ll" 1952 1981 { KEYWORD_RETURN(DOUBLE); } 1953 1982 YY_BREAK 1954 case 38:1955 YY_RULE_SETUP 1956 #line 20 5"lex.ll"1983 case 41: 1984 YY_RULE_SETUP 1985 #line 208 "lex.ll" 1957 1986 { KEYWORD_RETURN(DTYPE); } // CFA 1958 1987 YY_BREAK 1959 case 39:1960 YY_RULE_SETUP 1961 #line 20 6"lex.ll"1988 case 42: 1989 YY_RULE_SETUP 1990 #line 209 "lex.ll" 1962 1991 { KEYWORD_RETURN(ELSE); } 1963 1992 YY_BREAK 1964 case 40: 1965 YY_RULE_SETUP 1966 #line 207 "lex.ll" 1993 case 43: 1994 YY_RULE_SETUP 1995 #line 210 "lex.ll" 1996 { KEYWORD_RETURN(ENABLE); } // CFA 1997 YY_BREAK 1998 case 44: 1999 YY_RULE_SETUP 2000 #line 211 "lex.ll" 1967 2001 { KEYWORD_RETURN(ENUM); } 1968 2002 YY_BREAK 1969 case 4 1:1970 YY_RULE_SETUP 1971 #line 2 08"lex.ll"2003 case 45: 2004 YY_RULE_SETUP 2005 #line 212 "lex.ll" 1972 2006 { KEYWORD_RETURN(EXTENSION); } // GCC 1973 2007 YY_BREAK 1974 case 4 2:1975 YY_RULE_SETUP 1976 #line 2 09"lex.ll"2008 case 46: 2009 YY_RULE_SETUP 2010 #line 213 "lex.ll" 1977 2011 { KEYWORD_RETURN(EXTERN); } 1978 2012 YY_BREAK 1979 case 4 3:1980 YY_RULE_SETUP 1981 #line 21 0"lex.ll"2013 case 47: 2014 YY_RULE_SETUP 2015 #line 214 "lex.ll" 1982 2016 { KEYWORD_RETURN(FALLTHRU); } // CFA 1983 2017 YY_BREAK 1984 case 4 4:1985 YY_RULE_SETUP 1986 #line 21 1"lex.ll"2018 case 48: 2019 YY_RULE_SETUP 2020 #line 215 "lex.ll" 1987 2021 { KEYWORD_RETURN(FINALLY); } // CFA 1988 2022 YY_BREAK 1989 case 4 5:1990 YY_RULE_SETUP 1991 #line 21 2"lex.ll"2023 case 49: 2024 YY_RULE_SETUP 2025 #line 216 "lex.ll" 1992 2026 { KEYWORD_RETURN(FLOAT); } 1993 2027 YY_BREAK 1994 case 46:1995 YY_RULE_SETUP 1996 #line 21 3"lex.ll"2028 case 50: 2029 YY_RULE_SETUP 2030 #line 217 "lex.ll" 1997 2031 { KEYWORD_RETURN(FLOAT); } // GCC 1998 2032 YY_BREAK 1999 case 47:2000 YY_RULE_SETUP 2001 #line 21 4"lex.ll"2033 case 51: 2034 YY_RULE_SETUP 2035 #line 218 "lex.ll" 2002 2036 { KEYWORD_RETURN(FOR); } 2003 2037 YY_BREAK 2004 case 48:2005 YY_RULE_SETUP 2006 #line 21 5"lex.ll"2038 case 52: 2039 YY_RULE_SETUP 2040 #line 219 "lex.ll" 2007 2041 { KEYWORD_RETURN(FORALL); } // CFA 2008 2042 YY_BREAK 2009 case 49:2010 YY_RULE_SETUP 2011 #line 2 16"lex.ll"2043 case 53: 2044 YY_RULE_SETUP 2045 #line 220 "lex.ll" 2012 2046 { KEYWORD_RETURN(FORTRAN); } 2013 2047 YY_BREAK 2014 case 5 0:2015 YY_RULE_SETUP 2016 #line 2 17"lex.ll"2048 case 54: 2049 YY_RULE_SETUP 2050 #line 221 "lex.ll" 2017 2051 { KEYWORD_RETURN(FTYPE); } // CFA 2018 2052 YY_BREAK 2019 case 5 1:2020 YY_RULE_SETUP 2021 #line 2 18"lex.ll"2053 case 55: 2054 YY_RULE_SETUP 2055 #line 222 "lex.ll" 2022 2056 { KEYWORD_RETURN(GENERIC); } // C11 2023 2057 YY_BREAK 2024 case 5 2:2025 YY_RULE_SETUP 2026 #line 2 19"lex.ll"2058 case 56: 2059 YY_RULE_SETUP 2060 #line 223 "lex.ll" 2027 2061 { KEYWORD_RETURN(GOTO); } 2028 2062 YY_BREAK 2029 case 5 3:2030 YY_RULE_SETUP 2031 #line 22 0"lex.ll"2063 case 57: 2064 YY_RULE_SETUP 2065 #line 224 "lex.ll" 2032 2066 { KEYWORD_RETURN(IF); } 2033 2067 YY_BREAK 2034 case 5 4:2035 YY_RULE_SETUP 2036 #line 22 1"lex.ll"2068 case 58: 2069 YY_RULE_SETUP 2070 #line 225 "lex.ll" 2037 2071 { KEYWORD_RETURN(IMAGINARY); } // C99 2038 2072 YY_BREAK 2039 case 5 5:2040 YY_RULE_SETUP 2041 #line 22 2"lex.ll"2073 case 59: 2074 YY_RULE_SETUP 2075 #line 226 "lex.ll" 2042 2076 { KEYWORD_RETURN(IMAGINARY); } // GCC 2043 2077 YY_BREAK 2044 case 56:2045 YY_RULE_SETUP 2046 #line 22 3"lex.ll"2078 case 60: 2079 YY_RULE_SETUP 2080 #line 227 "lex.ll" 2047 2081 { KEYWORD_RETURN(IMAGINARY); } // GCC 2048 2082 YY_BREAK 2049 case 57:2050 YY_RULE_SETUP 2051 #line 22 4"lex.ll"2083 case 61: 2084 YY_RULE_SETUP 2085 #line 228 "lex.ll" 2052 2086 { KEYWORD_RETURN(INLINE); } // C99 2053 2087 YY_BREAK 2054 case 58:2055 YY_RULE_SETUP 2056 #line 22 5"lex.ll"2088 case 62: 2089 YY_RULE_SETUP 2090 #line 229 "lex.ll" 2057 2091 { KEYWORD_RETURN(INLINE); } // GCC 2058 2092 YY_BREAK 2059 case 59:2060 YY_RULE_SETUP 2061 #line 2 26"lex.ll"2093 case 63: 2094 YY_RULE_SETUP 2095 #line 230 "lex.ll" 2062 2096 { KEYWORD_RETURN(INLINE); } // GCC 2063 2097 YY_BREAK 2064 case 6 0:2065 YY_RULE_SETUP 2066 #line 2 27"lex.ll"2098 case 64: 2099 YY_RULE_SETUP 2100 #line 231 "lex.ll" 2067 2101 { KEYWORD_RETURN(INT); } 2068 2102 YY_BREAK 2069 case 6 1:2070 YY_RULE_SETUP 2071 #line 2 28"lex.ll"2103 case 65: 2104 YY_RULE_SETUP 2105 #line 232 "lex.ll" 2072 2106 { KEYWORD_RETURN(INT); } // GCC 2073 2107 YY_BREAK 2074 case 6 2:2075 YY_RULE_SETUP 2076 #line 2 29"lex.ll"2108 case 66: 2109 YY_RULE_SETUP 2110 #line 233 "lex.ll" 2077 2111 { KEYWORD_RETURN(LABEL); } // GCC 2078 2112 YY_BREAK 2079 case 6 3:2080 YY_RULE_SETUP 2081 #line 23 0"lex.ll"2113 case 67: 2114 YY_RULE_SETUP 2115 #line 234 "lex.ll" 2082 2116 { KEYWORD_RETURN(LONG); } 2083 2117 YY_BREAK 2084 case 6 4:2085 YY_RULE_SETUP 2086 #line 23 1"lex.ll"2118 case 68: 2119 YY_RULE_SETUP 2120 #line 235 "lex.ll" 2087 2121 { KEYWORD_RETURN(LVALUE); } // CFA 2088 2122 YY_BREAK 2089 case 6 5:2090 YY_RULE_SETUP 2091 #line 23 2"lex.ll"2123 case 69: 2124 YY_RULE_SETUP 2125 #line 236 "lex.ll" 2092 2126 { KEYWORD_RETURN(NORETURN); } // C11 2093 2127 YY_BREAK 2094 case 66:2095 YY_RULE_SETUP 2096 #line 23 3"lex.ll"2128 case 70: 2129 YY_RULE_SETUP 2130 #line 237 "lex.ll" 2097 2131 { KEYWORD_RETURN(REGISTER); } 2098 2132 YY_BREAK 2099 case 67:2100 YY_RULE_SETUP 2101 #line 23 4"lex.ll"2133 case 71: 2134 YY_RULE_SETUP 2135 #line 238 "lex.ll" 2102 2136 { KEYWORD_RETURN(RESTRICT); } // C99 2103 2137 YY_BREAK 2104 case 68:2105 YY_RULE_SETUP 2106 #line 23 5"lex.ll"2138 case 72: 2139 YY_RULE_SETUP 2140 #line 239 "lex.ll" 2107 2141 { KEYWORD_RETURN(RESTRICT); } // GCC 2108 2142 YY_BREAK 2109 case 69:2110 YY_RULE_SETUP 2111 #line 2 36"lex.ll"2143 case 73: 2144 YY_RULE_SETUP 2145 #line 240 "lex.ll" 2112 2146 { KEYWORD_RETURN(RESTRICT); } // GCC 2113 2147 YY_BREAK 2114 case 7 0:2115 YY_RULE_SETUP 2116 #line 2 37"lex.ll"2148 case 74: 2149 YY_RULE_SETUP 2150 #line 241 "lex.ll" 2117 2151 { KEYWORD_RETURN(RETURN); } 2118 2152 YY_BREAK 2119 case 7 1:2120 YY_RULE_SETUP 2121 #line 2 38"lex.ll"2153 case 75: 2154 YY_RULE_SETUP 2155 #line 242 "lex.ll" 2122 2156 { KEYWORD_RETURN(SHORT); } 2123 2157 YY_BREAK 2124 case 7 2:2125 YY_RULE_SETUP 2126 #line 2 39"lex.ll"2158 case 76: 2159 YY_RULE_SETUP 2160 #line 243 "lex.ll" 2127 2161 { KEYWORD_RETURN(SIGNED); } 2128 2162 YY_BREAK 2129 case 7 3:2130 YY_RULE_SETUP 2131 #line 24 0"lex.ll"2163 case 77: 2164 YY_RULE_SETUP 2165 #line 244 "lex.ll" 2132 2166 { KEYWORD_RETURN(SIGNED); } // GCC 2133 2167 YY_BREAK 2134 case 7 4:2135 YY_RULE_SETUP 2136 #line 24 1"lex.ll"2168 case 78: 2169 YY_RULE_SETUP 2170 #line 245 "lex.ll" 2137 2171 { KEYWORD_RETURN(SIGNED); } // GCC 2138 2172 YY_BREAK 2139 case 7 5:2140 YY_RULE_SETUP 2141 #line 24 2"lex.ll"2173 case 79: 2174 YY_RULE_SETUP 2175 #line 246 "lex.ll" 2142 2176 { KEYWORD_RETURN(SIZEOF); } 2143 2177 YY_BREAK 2144 case 76:2145 YY_RULE_SETUP 2146 #line 24 3"lex.ll"2178 case 80: 2179 YY_RULE_SETUP 2180 #line 247 "lex.ll" 2147 2181 { KEYWORD_RETURN(STATIC); } 2148 2182 YY_BREAK 2149 case 77:2150 YY_RULE_SETUP 2151 #line 24 4"lex.ll"2183 case 81: 2184 YY_RULE_SETUP 2185 #line 248 "lex.ll" 2152 2186 { KEYWORD_RETURN(STATICASSERT); } // C11 2153 2187 YY_BREAK 2154 case 78:2155 YY_RULE_SETUP 2156 #line 24 5"lex.ll"2188 case 82: 2189 YY_RULE_SETUP 2190 #line 249 "lex.ll" 2157 2191 { KEYWORD_RETURN(STRUCT); } 2158 2192 YY_BREAK 2159 case 79:2160 YY_RULE_SETUP 2161 #line 2 46"lex.ll"2193 case 83: 2194 YY_RULE_SETUP 2195 #line 250 "lex.ll" 2162 2196 { KEYWORD_RETURN(SWITCH); } 2163 2197 YY_BREAK 2164 case 8 0:2165 YY_RULE_SETUP 2166 #line 2 47"lex.ll"2198 case 84: 2199 YY_RULE_SETUP 2200 #line 251 "lex.ll" 2167 2201 { KEYWORD_RETURN(THREADLOCAL); } // C11 2168 2202 YY_BREAK 2169 case 8 1:2170 YY_RULE_SETUP 2171 #line 2 48"lex.ll"2203 case 85: 2204 YY_RULE_SETUP 2205 #line 252 "lex.ll" 2172 2206 { KEYWORD_RETURN(THROW); } // CFA 2173 2207 YY_BREAK 2174 case 82: 2175 YY_RULE_SETUP 2176 #line 249 "lex.ll" 2208 case 86: 2209 YY_RULE_SETUP 2210 #line 253 "lex.ll" 2211 { KEYWORD_RETURN(THROWRESUME); } // CFA 2212 YY_BREAK 2213 case 87: 2214 YY_RULE_SETUP 2215 #line 254 "lex.ll" 2177 2216 { KEYWORD_RETURN(TRY); } // CFA 2178 2217 YY_BREAK 2179 case 8 3:2180 YY_RULE_SETUP 2181 #line 25 0"lex.ll"2218 case 88: 2219 YY_RULE_SETUP 2220 #line 255 "lex.ll" 2182 2221 { KEYWORD_RETURN(TYPE); } // CFA 2183 2222 YY_BREAK 2184 case 8 4:2185 YY_RULE_SETUP 2186 #line 25 1"lex.ll"2223 case 89: 2224 YY_RULE_SETUP 2225 #line 256 "lex.ll" 2187 2226 { KEYWORD_RETURN(TYPEDEF); } 2188 2227 YY_BREAK 2189 case 85:2190 YY_RULE_SETUP 2191 #line 25 2"lex.ll"2228 case 90: 2229 YY_RULE_SETUP 2230 #line 257 "lex.ll" 2192 2231 { KEYWORD_RETURN(TYPEOF); } // GCC 2193 2232 YY_BREAK 2194 case 86:2195 YY_RULE_SETUP 2196 #line 25 3"lex.ll"2233 case 91: 2234 YY_RULE_SETUP 2235 #line 258 "lex.ll" 2197 2236 { KEYWORD_RETURN(TYPEOF); } // GCC 2198 2237 YY_BREAK 2199 case 87:2200 YY_RULE_SETUP 2201 #line 25 4"lex.ll"2238 case 92: 2239 YY_RULE_SETUP 2240 #line 259 "lex.ll" 2202 2241 { KEYWORD_RETURN(TYPEOF); } // GCC 2203 2242 YY_BREAK 2204 case 88:2205 YY_RULE_SETUP 2206 #line 2 55"lex.ll"2243 case 93: 2244 YY_RULE_SETUP 2245 #line 260 "lex.ll" 2207 2246 { KEYWORD_RETURN(UNION); } 2208 2247 YY_BREAK 2209 case 89:2210 YY_RULE_SETUP 2211 #line 2 56"lex.ll"2248 case 94: 2249 YY_RULE_SETUP 2250 #line 261 "lex.ll" 2212 2251 { KEYWORD_RETURN(UNSIGNED); } 2213 2252 YY_BREAK 2214 case 9 0:2215 YY_RULE_SETUP 2216 #line 2 57"lex.ll"2253 case 95: 2254 YY_RULE_SETUP 2255 #line 262 "lex.ll" 2217 2256 { KEYWORD_RETURN(VOID); } 2218 2257 YY_BREAK 2219 case 9 1:2220 YY_RULE_SETUP 2221 #line 2 58"lex.ll"2258 case 96: 2259 YY_RULE_SETUP 2260 #line 263 "lex.ll" 2222 2261 { KEYWORD_RETURN(VOLATILE); } 2223 2262 YY_BREAK 2224 case 9 2:2225 YY_RULE_SETUP 2226 #line 2 59"lex.ll"2263 case 97: 2264 YY_RULE_SETUP 2265 #line 264 "lex.ll" 2227 2266 { KEYWORD_RETURN(VOLATILE); } // GCC 2228 2267 YY_BREAK 2229 case 9 3:2230 YY_RULE_SETUP 2231 #line 26 0"lex.ll"2268 case 98: 2269 YY_RULE_SETUP 2270 #line 265 "lex.ll" 2232 2271 { KEYWORD_RETURN(VOLATILE); } // GCC 2233 2272 YY_BREAK 2234 case 9 4:2235 YY_RULE_SETUP 2236 #line 26 1"lex.ll"2273 case 99: 2274 YY_RULE_SETUP 2275 #line 266 "lex.ll" 2237 2276 { KEYWORD_RETURN(WHILE); } 2238 2277 YY_BREAK 2239 2278 /* identifier */ 2240 case 95:2241 YY_RULE_SETUP 2242 #line 26 4"lex.ll"2279 case 100: 2280 YY_RULE_SETUP 2281 #line 269 "lex.ll" 2243 2282 { IDENTIFIER_RETURN(); } 2244 2283 YY_BREAK 2245 case 96:2246 YY_RULE_SETUP 2247 #line 2 65"lex.ll"2284 case 101: 2285 YY_RULE_SETUP 2286 #line 270 "lex.ll" 2248 2287 { ATTRIBUTE_RETURN(); } 2249 2288 YY_BREAK 2250 case 97:2251 YY_RULE_SETUP 2252 #line 2 66"lex.ll"2289 case 102: 2290 YY_RULE_SETUP 2291 #line 271 "lex.ll" 2253 2292 { BEGIN BKQUOTE; } 2254 2293 YY_BREAK 2255 case 98:2256 YY_RULE_SETUP 2257 #line 2 67"lex.ll"2294 case 103: 2295 YY_RULE_SETUP 2296 #line 272 "lex.ll" 2258 2297 { IDENTIFIER_RETURN(); } 2259 2298 YY_BREAK 2260 case 99:2261 YY_RULE_SETUP 2262 #line 2 68"lex.ll"2299 case 104: 2300 YY_RULE_SETUP 2301 #line 273 "lex.ll" 2263 2302 { BEGIN 0; } 2264 2303 YY_BREAK 2265 2304 /* numeric constants */ 2266 case 10 0:2267 YY_RULE_SETUP 2268 #line 27 1"lex.ll"2305 case 105: 2306 YY_RULE_SETUP 2307 #line 276 "lex.ll" 2269 2308 { NUMERIC_RETURN(ZERO); } // CFA 2270 2309 YY_BREAK 2271 case 10 1:2272 YY_RULE_SETUP 2273 #line 27 2"lex.ll"2310 case 106: 2311 YY_RULE_SETUP 2312 #line 277 "lex.ll" 2274 2313 { NUMERIC_RETURN(ONE); } // CFA 2275 2314 YY_BREAK 2276 case 10 2:2277 YY_RULE_SETUP 2278 #line 27 3"lex.ll"2315 case 107: 2316 YY_RULE_SETUP 2317 #line 278 "lex.ll" 2279 2318 { NUMERIC_RETURN(INTEGERconstant); } 2280 2319 YY_BREAK 2281 case 10 3:2282 YY_RULE_SETUP 2283 #line 27 4"lex.ll"2320 case 108: 2321 YY_RULE_SETUP 2322 #line 279 "lex.ll" 2284 2323 { NUMERIC_RETURN(INTEGERconstant); } 2285 2324 YY_BREAK 2286 case 10 4:2287 YY_RULE_SETUP 2288 #line 2 75"lex.ll"2325 case 109: 2326 YY_RULE_SETUP 2327 #line 280 "lex.ll" 2289 2328 { NUMERIC_RETURN(INTEGERconstant); } 2290 2329 YY_BREAK 2291 case 1 05:2292 YY_RULE_SETUP 2293 #line 2 76"lex.ll"2330 case 110: 2331 YY_RULE_SETUP 2332 #line 281 "lex.ll" 2294 2333 { NUMERIC_RETURN(FLOATINGconstant); } 2295 2334 YY_BREAK 2296 case 1 06:2297 YY_RULE_SETUP 2298 #line 2 77"lex.ll"2335 case 111: 2336 YY_RULE_SETUP 2337 #line 282 "lex.ll" 2299 2338 { NUMERIC_RETURN(FLOATINGconstant); } 2300 2339 YY_BREAK 2301 2340 /* character constant, allows empty value */ 2302 case 1 07:2303 YY_RULE_SETUP 2304 #line 28 0"lex.ll"2341 case 112: 2342 YY_RULE_SETUP 2343 #line 285 "lex.ll" 2305 2344 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2306 2345 YY_BREAK 2307 case 1 08:2308 YY_RULE_SETUP 2309 #line 28 1"lex.ll"2346 case 113: 2347 YY_RULE_SETUP 2348 #line 286 "lex.ll" 2310 2349 { *strtext += std::string( yytext ); } 2311 2350 YY_BREAK 2312 case 1 09:2313 /* rule 1 09can match eol */2314 YY_RULE_SETUP 2315 #line 28 2"lex.ll"2351 case 114: 2352 /* rule 114 can match eol */ 2353 YY_RULE_SETUP 2354 #line 287 "lex.ll" 2316 2355 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); } 2317 2356 YY_BREAK 2318 2357 /* ' stop highlighting */ 2319 2358 /* string constant */ 2320 case 11 0:2321 YY_RULE_SETUP 2322 #line 2 86"lex.ll"2359 case 115: 2360 YY_RULE_SETUP 2361 #line 291 "lex.ll" 2323 2362 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2324 2363 YY_BREAK 2325 case 11 1:2326 YY_RULE_SETUP 2327 #line 2 87"lex.ll"2364 case 116: 2365 YY_RULE_SETUP 2366 #line 292 "lex.ll" 2328 2367 { *strtext += std::string( yytext ); } 2329 2368 YY_BREAK 2330 case 11 2:2331 /* rule 11 2can match eol */2332 YY_RULE_SETUP 2333 #line 2 88"lex.ll"2369 case 117: 2370 /* rule 117 can match eol */ 2371 YY_RULE_SETUP 2372 #line 293 "lex.ll" 2334 2373 { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); } 2335 2374 YY_BREAK 2336 2375 /* " stop highlighting */ 2337 2376 /* common character/string constant */ 2338 case 11 3:2339 YY_RULE_SETUP 2340 #line 29 2"lex.ll"2377 case 118: 2378 YY_RULE_SETUP 2379 #line 297 "lex.ll" 2341 2380 { rm_underscore(); *strtext += std::string( yytext ); } 2342 2381 YY_BREAK 2343 case 11 4:2344 /* rule 11 4can match eol */2345 YY_RULE_SETUP 2346 #line 29 3"lex.ll"2382 case 119: 2383 /* rule 119 can match eol */ 2384 YY_RULE_SETUP 2385 #line 298 "lex.ll" 2347 2386 {} // continuation (ALSO HANDLED BY CPP) 2348 2387 YY_BREAK 2349 case 1 15:2350 YY_RULE_SETUP 2351 #line 29 4"lex.ll"2388 case 120: 2389 YY_RULE_SETUP 2390 #line 299 "lex.ll" 2352 2391 { *strtext += std::string( yytext ); } // unknown escape character 2353 2392 YY_BREAK 2354 2393 /* 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 2394 case 121: 2381 2395 YY_RULE_SETUP … … 2386 2400 YY_RULE_SETUP 2387 2401 #line 303 "lex.ll" 2388 { ASCIIOP_RETURN(); } // also operator2402 { ASCIIOP_RETURN(); } 2389 2403 YY_BREAK 2390 2404 case 123: … … 2401 2415 YY_RULE_SETUP 2402 2416 #line 306 "lex.ll" 2417 { ASCIIOP_RETURN(); } 2418 YY_BREAK 2419 case 126: 2420 YY_RULE_SETUP 2421 #line 307 "lex.ll" 2422 { ASCIIOP_RETURN(); } 2423 YY_BREAK 2424 case 127: 2425 YY_RULE_SETUP 2426 #line 308 "lex.ll" 2403 2427 { ASCIIOP_RETURN(); } // also operator 2404 2428 YY_BREAK 2405 case 126: 2406 YY_RULE_SETUP 2407 #line 307 "lex.ll" 2429 case 128: 2430 YY_RULE_SETUP 2431 #line 309 "lex.ll" 2432 { ASCIIOP_RETURN(); } 2433 YY_BREAK 2434 case 129: 2435 YY_RULE_SETUP 2436 #line 310 "lex.ll" 2437 { ASCIIOP_RETURN(); } 2438 YY_BREAK 2439 case 130: 2440 YY_RULE_SETUP 2441 #line 311 "lex.ll" 2442 { ASCIIOP_RETURN(); } // also operator 2443 YY_BREAK 2444 case 131: 2445 YY_RULE_SETUP 2446 #line 312 "lex.ll" 2408 2447 { NAMEDOP_RETURN(ELLIPSIS); } 2409 2448 YY_BREAK 2410 2449 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */ 2411 case 1 27:2412 YY_RULE_SETUP 2413 #line 31 0"lex.ll"2450 case 132: 2451 YY_RULE_SETUP 2452 #line 315 "lex.ll" 2414 2453 { RETURN_VAL('['); } 2415 2454 YY_BREAK 2416 case 1 28:2417 YY_RULE_SETUP 2418 #line 31 1"lex.ll"2455 case 133: 2456 YY_RULE_SETUP 2457 #line 316 "lex.ll" 2419 2458 { RETURN_VAL(']'); } 2420 2459 YY_BREAK 2421 case 1 29:2422 YY_RULE_SETUP 2423 #line 31 2"lex.ll"2460 case 134: 2461 YY_RULE_SETUP 2462 #line 317 "lex.ll" 2424 2463 { RETURN_VAL('{'); } 2425 2464 YY_BREAK 2426 case 13 0:2427 YY_RULE_SETUP 2428 #line 31 3"lex.ll"2465 case 135: 2466 YY_RULE_SETUP 2467 #line 318 "lex.ll" 2429 2468 { RETURN_VAL('}'); } 2430 2469 YY_BREAK 2431 2470 /* 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 2471 case 136: 2458 2472 YY_RULE_SETUP … … 2502 2516 case 145: 2503 2517 YY_RULE_SETUP 2518 #line 330 "lex.ll" 2519 { ASCIIOP_RETURN(); } 2520 YY_BREAK 2521 case 146: 2522 YY_RULE_SETUP 2504 2523 #line 331 "lex.ll" 2524 { ASCIIOP_RETURN(); } 2525 YY_BREAK 2526 case 147: 2527 YY_RULE_SETUP 2528 #line 332 "lex.ll" 2529 { ASCIIOP_RETURN(); } 2530 YY_BREAK 2531 case 148: 2532 YY_RULE_SETUP 2533 #line 333 "lex.ll" 2534 { ASCIIOP_RETURN(); } 2535 YY_BREAK 2536 case 149: 2537 YY_RULE_SETUP 2538 #line 334 "lex.ll" 2539 { ASCIIOP_RETURN(); } 2540 YY_BREAK 2541 case 150: 2542 YY_RULE_SETUP 2543 #line 336 "lex.ll" 2505 2544 { NAMEDOP_RETURN(ICR); } 2506 2545 YY_BREAK 2507 case 1 46:2508 YY_RULE_SETUP 2509 #line 33 2"lex.ll"2546 case 151: 2547 YY_RULE_SETUP 2548 #line 337 "lex.ll" 2510 2549 { NAMEDOP_RETURN(DECR); } 2511 2550 YY_BREAK 2512 case 1 47:2513 YY_RULE_SETUP 2514 #line 33 3"lex.ll"2551 case 152: 2552 YY_RULE_SETUP 2553 #line 338 "lex.ll" 2515 2554 { NAMEDOP_RETURN(EQ); } 2516 2555 YY_BREAK 2517 case 1 48:2518 YY_RULE_SETUP 2519 #line 33 4"lex.ll"2556 case 153: 2557 YY_RULE_SETUP 2558 #line 339 "lex.ll" 2520 2559 { NAMEDOP_RETURN(NE); } 2521 2560 YY_BREAK 2522 case 1 49:2523 YY_RULE_SETUP 2524 #line 3 35"lex.ll"2561 case 154: 2562 YY_RULE_SETUP 2563 #line 340 "lex.ll" 2525 2564 { NAMEDOP_RETURN(LS); } 2526 2565 YY_BREAK 2527 case 15 0:2528 YY_RULE_SETUP 2529 #line 3 36"lex.ll"2566 case 155: 2567 YY_RULE_SETUP 2568 #line 341 "lex.ll" 2530 2569 { NAMEDOP_RETURN(RS); } 2531 2570 YY_BREAK 2532 case 15 1:2533 YY_RULE_SETUP 2534 #line 3 37"lex.ll"2571 case 156: 2572 YY_RULE_SETUP 2573 #line 342 "lex.ll" 2535 2574 { NAMEDOP_RETURN(LE); } 2536 2575 YY_BREAK 2537 case 15 2:2538 YY_RULE_SETUP 2539 #line 3 38"lex.ll"2576 case 157: 2577 YY_RULE_SETUP 2578 #line 343 "lex.ll" 2540 2579 { NAMEDOP_RETURN(GE); } 2541 2580 YY_BREAK 2542 case 15 3:2543 YY_RULE_SETUP 2544 #line 3 39"lex.ll"2581 case 158: 2582 YY_RULE_SETUP 2583 #line 344 "lex.ll" 2545 2584 { NAMEDOP_RETURN(ANDAND); } 2546 2585 YY_BREAK 2547 case 15 4:2548 YY_RULE_SETUP 2549 #line 34 0"lex.ll"2586 case 159: 2587 YY_RULE_SETUP 2588 #line 345 "lex.ll" 2550 2589 { NAMEDOP_RETURN(OROR); } 2551 2590 YY_BREAK 2552 case 1 55:2553 YY_RULE_SETUP 2554 #line 34 1"lex.ll"2591 case 160: 2592 YY_RULE_SETUP 2593 #line 346 "lex.ll" 2555 2594 { NAMEDOP_RETURN(ARROW); } 2556 2595 YY_BREAK 2557 case 1 56:2558 YY_RULE_SETUP 2559 #line 34 2"lex.ll"2596 case 161: 2597 YY_RULE_SETUP 2598 #line 347 "lex.ll" 2560 2599 { NAMEDOP_RETURN(PLUSassign); } 2561 2600 YY_BREAK 2562 case 1 57:2563 YY_RULE_SETUP 2564 #line 34 3"lex.ll"2601 case 162: 2602 YY_RULE_SETUP 2603 #line 348 "lex.ll" 2565 2604 { NAMEDOP_RETURN(MINUSassign); } 2566 2605 YY_BREAK 2567 case 1 58:2568 YY_RULE_SETUP 2569 #line 34 4"lex.ll"2606 case 163: 2607 YY_RULE_SETUP 2608 #line 349 "lex.ll" 2570 2609 { NAMEDOP_RETURN(MULTassign); } 2571 2610 YY_BREAK 2572 case 1 59:2573 YY_RULE_SETUP 2574 #line 3 45"lex.ll"2611 case 164: 2612 YY_RULE_SETUP 2613 #line 350 "lex.ll" 2575 2614 { NAMEDOP_RETURN(DIVassign); } 2576 2615 YY_BREAK 2577 case 16 0:2578 YY_RULE_SETUP 2579 #line 3 46"lex.ll"2616 case 165: 2617 YY_RULE_SETUP 2618 #line 351 "lex.ll" 2580 2619 { NAMEDOP_RETURN(MODassign); } 2581 2620 YY_BREAK 2582 case 16 1:2583 YY_RULE_SETUP 2584 #line 3 47"lex.ll"2621 case 166: 2622 YY_RULE_SETUP 2623 #line 352 "lex.ll" 2585 2624 { NAMEDOP_RETURN(ANDassign); } 2586 2625 YY_BREAK 2587 case 16 2:2588 YY_RULE_SETUP 2589 #line 3 48"lex.ll"2626 case 167: 2627 YY_RULE_SETUP 2628 #line 353 "lex.ll" 2590 2629 { NAMEDOP_RETURN(ORassign); } 2591 2630 YY_BREAK 2592 case 16 3:2593 YY_RULE_SETUP 2594 #line 3 49"lex.ll"2631 case 168: 2632 YY_RULE_SETUP 2633 #line 354 "lex.ll" 2595 2634 { NAMEDOP_RETURN(ERassign); } 2596 2635 YY_BREAK 2597 case 16 4:2598 YY_RULE_SETUP 2599 #line 35 0"lex.ll"2636 case 169: 2637 YY_RULE_SETUP 2638 #line 355 "lex.ll" 2600 2639 { NAMEDOP_RETURN(LSassign); } 2601 2640 YY_BREAK 2602 case 1 65:2603 YY_RULE_SETUP 2604 #line 35 1"lex.ll"2641 case 170: 2642 YY_RULE_SETUP 2643 #line 356 "lex.ll" 2605 2644 { NAMEDOP_RETURN(RSassign); } 2606 2645 YY_BREAK 2607 2646 /* CFA, operator identifier */ 2608 case 1 66:2609 YY_RULE_SETUP 2610 #line 35 4"lex.ll"2647 case 171: 2648 YY_RULE_SETUP 2649 #line 359 "lex.ll" 2611 2650 { IDENTIFIER_RETURN(); } // unary 2612 2651 YY_BREAK 2613 case 1 67:2614 YY_RULE_SETUP 2615 #line 3 55"lex.ll"2652 case 172: 2653 YY_RULE_SETUP 2654 #line 360 "lex.ll" 2616 2655 { IDENTIFIER_RETURN(); } 2617 2656 YY_BREAK 2618 case 168: 2619 YY_RULE_SETUP 2620 #line 356 "lex.ll" 2657 case 173: 2658 YY_RULE_SETUP 2659 #line 361 "lex.ll" 2660 { IDENTIFIER_RETURN(); } 2661 YY_BREAK 2662 case 174: 2663 YY_RULE_SETUP 2664 #line 362 "lex.ll" 2621 2665 { IDENTIFIER_RETURN(); } // binary 2622 2666 YY_BREAK … … 2647 2691 an argument list. 2648 2692 */ 2649 case 1 69:2650 YY_RULE_SETUP 2651 #line 38 3"lex.ll"2693 case 175: 2694 YY_RULE_SETUP 2695 #line 389 "lex.ll" 2652 2696 { 2653 2697 // 1 or 2 character unary operator ? … … 2662 2706 YY_BREAK 2663 2707 /* unknown characters */ 2664 case 17 0:2665 YY_RULE_SETUP 2666 #line 395"lex.ll"2708 case 176: 2709 YY_RULE_SETUP 2710 #line 401 "lex.ll" 2667 2711 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 2668 2712 YY_BREAK 2669 case 17 1:2670 YY_RULE_SETUP 2671 #line 397"lex.ll"2713 case 177: 2714 YY_RULE_SETUP 2715 #line 403 "lex.ll" 2672 2716 ECHO; 2673 2717 YY_BREAK 2674 #line 2 675"Parser/lex.cc"2718 #line 2719 "Parser/lex.cc" 2675 2719 case YY_STATE_EOF(INITIAL): 2676 2720 case YY_STATE_EOF(COMMENT): … … 2969 3013 { 2970 3014 yy_current_state = (int) yy_def[yy_current_state]; 2971 if ( yy_current_state >= 8 26)3015 if ( yy_current_state >= 851 ) 2972 3016 yy_c = yy_meta[(unsigned int) yy_c]; 2973 3017 } … … 2997 3041 { 2998 3042 yy_current_state = (int) yy_def[yy_current_state]; 2999 if ( yy_current_state >= 8 26)3043 if ( yy_current_state >= 851 ) 3000 3044 yy_c = yy_meta[(unsigned int) yy_c]; 3001 3045 } 3002 3046 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 3003 yy_is_jam = (yy_current_state == 8 25);3047 yy_is_jam = (yy_current_state == 850); 3004 3048 3005 3049 return yy_is_jam ? 0 : yy_current_state; … … 3647 3691 #define YYTABLES_NAME "yytables" 3648 3692 3649 #line 397"lex.ll"3693 #line 403 "lex.ll" 3650 3694 3651 3695 -
src/Parser/lex.ll
r59cde21 rf28a53a 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 : Mon Sep 28 17:07:48 2015 13 * Update Count : 402 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 … … 354 359 {op_unary}"?" { IDENTIFIER_RETURN(); } // unary 355 360 "?"({op_unary_pre_post}|"()"|"[?]"|"{}") { IDENTIFIER_RETURN(); } 361 "^?{}" { IDENTIFIER_RETURN(); } 356 362 "?"{op_binary_over}"?" { IDENTIFIER_RETURN(); } // binary 357 363 /* … … 381 387 an argument list. 382 388 */ 383 {op_unary}"?"( ({op_unary_pre_post}|"[?]")|({op_binary_over}"?")) {389 {op_unary}"?"({op_unary_pre_post}|"[?]"|{op_binary_over}"?") { 384 390 // 1 or 2 character unary operator ? 385 391 int i = yytext[1] == '?' ? 1 : 2; -
src/Parser/parser.cc
r59cde21 rf28a53a 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 THEN = 360 217 222 }; 218 223 #endif … … 267 272 #define RETURN 305 268 273 #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 274 #define DISABLE 307 275 #define ENABLE 308 276 #define FALLTHRU 309 277 #define TRY 310 278 #define CATCH 311 279 #define CATCHRESUME 312 280 #define FINALLY 313 281 #define THROW 314 282 #define THROWRESUME 315 283 #define AT 316 284 #define ASM 317 285 #define ALIGNAS 318 286 #define ALIGNOF 319 287 #define ATOMIC 320 288 #define GENERIC 321 289 #define NORETURN 322 290 #define STATICASSERT 323 291 #define THREADLOCAL 324 292 #define IDENTIFIER 325 293 #define QUOTED_IDENTIFIER 326 294 #define TYPEDEFname 327 295 #define TYPEGENname 328 296 #define ATTR_IDENTIFIER 329 297 #define ATTR_TYPEDEFname 330 298 #define ATTR_TYPEGENname 331 299 #define INTEGERconstant 332 300 #define FLOATINGconstant 333 301 #define CHARACTERconstant 334 302 #define STRINGliteral 335 303 #define ZERO 336 304 #define ONE 337 305 #define ARROW 338 306 #define ICR 339 307 #define DECR 340 308 #define LS 341 309 #define RS 342 310 #define LE 343 311 #define GE 344 312 #define EQ 345 313 #define NE 346 314 #define ANDAND 347 315 #define OROR 348 316 #define ELLIPSIS 349 317 #define MULTassign 350 318 #define DIVassign 351 319 #define MODassign 352 320 #define PLUSassign 353 321 #define MINUSassign 354 322 #define LSassign 355 323 #define RSassign 356 324 #define ANDassign 357 325 #define ERassign 358 326 #define ORassign 359 327 #define THEN 360 318 328 319 329 … … 342 352 343 353 /* Line 293 of yacc.c */ 344 #line 3 45 "Parser/parser.cc"354 #line 355 "Parser/parser.cc" 345 355 } YYSTYPE; 346 356 # define YYSTYPE_IS_TRIVIAL 1 … … 354 364 355 365 /* Line 343 of yacc.c */ 356 #line 3 57 "Parser/parser.cc"366 #line 367 "Parser/parser.cc" 357 367 358 368 #ifdef short … … 573 583 #define YYFINAL 246 574 584 /* YYLAST -- Last index in YYTABLE. */ 575 #define YYLAST 11 329585 #define YYLAST 11027 576 586 577 587 /* YYNTOKENS -- Number of terminals. */ 578 #define YYNTOKENS 1 25588 #define YYNTOKENS 130 579 589 /* YYNNTS -- Number of nonterminals. */ 580 #define YYNNTS 2 38590 #define YYNNTS 240 581 591 /* YYNRULES -- Number of rules. */ 582 #define YYNRULES 7 40592 #define YYNRULES 750 583 593 /* YYNRULES -- Number of states. */ 584 #define YYNSTATES 15 30594 #define YYNSTATES 1574 585 595 586 596 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 587 597 #define YYUNDEFTOK 2 588 #define YYMAXUTOK 3 55598 #define YYMAXUTOK 360 589 599 590 600 #define YYTRANSLATE(YYX) \ … … 597 607 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 598 608 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,609 2, 2, 2, 115, 2, 2, 2, 122, 117, 2, 610 106, 107, 116, 118, 113, 119, 110, 121, 2, 2, 611 2, 2, 2, 2, 2, 2, 2, 2, 114, 129, 612 123, 128, 124, 127, 2, 2, 2, 2, 2, 2, 603 613 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 604 614 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 605 2, 10 3, 2, 104, 120, 2, 2, 2, 2, 2,615 2, 108, 2, 109, 125, 2, 2, 2, 2, 2, 606 616 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 607 617 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 608 2, 2, 2, 1 06, 121, 107, 115, 2, 2, 2,618 2, 2, 2, 111, 126, 112, 120, 2, 2, 2, 609 619 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 610 620 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, … … 629 639 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 630 640 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 631 95, 96, 97, 98, 99, 100 641 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 642 105 632 643 }; 633 644 … … 638 649 { 639 650 0, 0, 3, 4, 5, 7, 9, 11, 13, 15, 640 17, 19, 21, 23, 25, 27, 29, 32, 34, 36, 641 40, 44, 46, 53, 58, 62, 70, 74, 82, 85, 642 88, 96, 98, 102, 103, 105, 109, 117, 127, 129, 643 133, 135, 139, 147, 151, 159, 161, 163, 165, 168, 644 171, 174, 177, 180, 183, 186, 191, 193, 198, 203, 645 206, 211, 214, 216, 218, 220, 222, 224, 229, 234, 646 236, 240, 244, 248, 250, 254, 258, 260, 264, 268, 647 270, 274, 278, 282, 286, 288, 292, 296, 298, 302, 648 304, 308, 310, 314, 316, 320, 322, 326, 328, 334, 649 339, 345, 347, 349, 353, 357, 360, 361, 363, 366, 650 372, 379, 387, 389, 393, 395, 397, 399, 401, 403, 651 405, 407, 409, 411, 413, 415, 419, 420, 422, 424, 652 426, 428, 430, 432, 434, 436, 438, 443, 446, 454, 653 456, 460, 462, 465, 467, 470, 472, 475, 478, 484, 654 492, 498, 508, 514, 524, 526, 530, 532, 534, 538, 655 542, 545, 547, 550, 553, 554, 556, 559, 563, 564, 656 566, 569, 573, 577, 582, 583, 585, 587, 590, 596, 657 604, 611, 618, 623, 627, 632, 635, 639, 642, 646, 658 650, 654, 657, 661, 665, 670, 672, 678, 685, 695, 659 706, 709, 711, 714, 717, 720, 722, 729, 738, 749, 660 762, 777, 778, 780, 781, 783, 785, 789, 794, 802, 661 803, 805, 809, 811, 815, 817, 819, 821, 825, 827, 662 829, 831, 835, 836, 838, 842, 847, 849, 853, 855, 663 857, 861, 865, 869, 873, 877, 880, 884, 891, 895, 664 899, 904, 906, 909, 912, 916, 922, 931, 939, 947, 665 953, 963, 966, 969, 975, 979, 985, 990, 994, 999, 666 1004, 1012, 1016, 1020, 1024, 1028, 1033, 1040, 1042, 1044, 667 1046, 1048, 1050, 1052, 1054, 1056, 1057, 1059, 1061, 1064, 668 1066, 1068, 1070, 1072, 1074, 1076, 1078, 1079, 1085, 1087, 669 1090, 1094, 1096, 1099, 1101, 1103, 1105, 1107, 1109, 1111, 670 1113, 1115, 1117, 1119, 1121, 1123, 1125, 1127, 1129, 1131, 671 1133, 1135, 1137, 1139, 1141, 1143, 1146, 1149, 1153, 1157, 672 1159, 1163, 1165, 1168, 1171, 1174, 1179, 1184, 1189, 1194, 673 1196, 1199, 1202, 1206, 1208, 1211, 1214, 1216, 1219, 1222, 674 1226, 1228, 1231, 1234, 1236, 1238, 1243, 1246, 1252, 1260, 675 1263, 1266, 1269, 1271, 1274, 1277, 1281, 1284, 1288, 1290, 676 1293, 1297, 1300, 1303, 1308, 1309, 1311, 1314, 1317, 1319, 677 1320, 1322, 1325, 1328, 1334, 1341, 1344, 1347, 1352, 1353, 678 1356, 1357, 1359, 1361, 1363, 1369, 1375, 1381, 1383, 1389, 679 1395, 1405, 1407, 1413, 1414, 1416, 1418, 1424, 1426, 1428, 680 1434, 1440, 1442, 1446, 1450, 1455, 1457, 1459, 1461, 1463, 681 1466, 1468, 1472, 1476, 1478, 1481, 1483, 1487, 1489, 1491, 682 1493, 1495, 1497, 1499, 1501, 1503, 1505, 1507, 1509, 1512, 683 1514, 1516, 1518, 1521, 1522, 1525, 1527, 1532, 1534, 1537, 684 1541, 1546, 1549, 1552, 1554, 1557, 1559, 1562, 1568, 1574, 685 1582, 1589, 1591, 1594, 1597, 1601, 1603, 1606, 1609, 1614, 686 1617, 1622, 1623, 1628, 1631, 1633, 1635, 1637, 1638, 1641, 687 1647, 1653, 1667, 1669, 1671, 1675, 1679, 1682, 1686, 1690, 688 1693, 1698, 1700, 1707, 1717, 1718, 1730, 1732, 1736, 1740, 689 1744, 1746, 1748, 1754, 1757, 1763, 1764, 1766, 1768, 1772, 690 1773, 1775, 1777, 1779, 1781, 1782, 1789, 1792, 1794, 1797, 691 1802, 1805, 1809, 1813, 1817, 1822, 1828, 1834, 1840, 1847, 692 1849, 1851, 1853, 1857, 1858, 1864, 1865, 1867, 1869, 1872, 693 1879, 1881, 1885, 1886, 1888, 1893, 1895, 1897, 1899, 1901, 694 1904, 1906, 1909, 1912, 1914, 1918, 1921, 1925, 1929, 1932, 695 1937, 1942, 1946, 1955, 1959, 1962, 1964, 1967, 1974, 1983, 696 1987, 1990, 1994, 1998, 2003, 2008, 2012, 2014, 2016, 2018, 697 2023, 2030, 2034, 2037, 2041, 2045, 2050, 2055, 2059, 2062, 698 2064, 2067, 2070, 2072, 2076, 2079, 2083, 2087, 2090, 2095, 699 2100, 2104, 2111, 2120, 2124, 2127, 2129, 2132, 2135, 2138, 700 2142, 2146, 2149, 2154, 2159, 2163, 2170, 2179, 2183, 2186, 701 2188, 2191, 2194, 2196, 2198, 2201, 2205, 2209, 2212, 2217, 702 2224, 2233, 2235, 2238, 2241, 2243, 2246, 2249, 2253, 2257, 703 2259, 2264, 2269, 2273, 2279, 2288, 2292, 2295, 2299, 2301, 704 2307, 2313, 2320, 2327, 2329, 2332, 2335, 2337, 2340, 2343, 705 2347, 2351, 2353, 2358, 2363, 2367, 2373, 2382, 2386, 2388, 706 2391, 2393, 2396, 2403, 2409, 2416, 2424, 2432, 2434, 2437, 707 2440, 2442, 2445, 2448, 2452, 2456, 2458, 2463, 2468, 2472, 708 2481, 2485, 2487, 2489, 2492, 2494, 2496, 2499, 2503, 2506, 709 2510, 2513, 2517, 2521, 2524, 2529, 2533, 2536, 2540, 2543, 710 2548, 2552, 2555, 2562, 2569, 2576, 2584, 2586, 2589, 2591, 711 2593, 2595, 2598, 2602, 2605, 2609, 2612, 2616, 2620, 2625, 712 2628, 2632, 2637, 2640, 2646, 2652, 2659, 2666, 2667, 2669, 713 2670 651 17, 19, 21, 23, 25, 27, 29, 31, 33, 36, 652 38, 40, 44, 48, 50, 57, 62, 66, 74, 78, 653 86, 89, 92, 100, 102, 106, 107, 109, 113, 121, 654 131, 133, 137, 139, 143, 151, 155, 163, 165, 167, 655 169, 172, 175, 178, 181, 184, 187, 190, 195, 197, 656 202, 207, 210, 215, 218, 220, 222, 224, 226, 228, 657 233, 238, 240, 244, 248, 252, 254, 258, 262, 264, 658 268, 272, 274, 278, 282, 286, 290, 292, 296, 300, 659 302, 306, 308, 312, 314, 318, 320, 324, 326, 330, 660 332, 338, 343, 349, 351, 353, 357, 361, 364, 365, 661 367, 370, 376, 383, 391, 393, 397, 399, 401, 403, 662 405, 407, 409, 411, 413, 415, 417, 419, 423, 424, 663 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 664 449, 452, 460, 462, 466, 468, 471, 473, 476, 478, 665 481, 484, 490, 498, 504, 514, 520, 530, 532, 536, 666 538, 540, 544, 548, 551, 553, 556, 559, 560, 562, 667 565, 569, 570, 572, 575, 579, 583, 588, 589, 591, 668 593, 596, 602, 610, 617, 624, 629, 633, 638, 641, 669 645, 648, 652, 656, 660, 664, 670, 674, 678, 683, 670 685, 691, 698, 704, 711, 721, 732, 742, 753, 756, 671 758, 761, 764, 767, 769, 776, 785, 796, 809, 824, 672 825, 827, 828, 830, 832, 836, 841, 849, 850, 852, 673 856, 858, 862, 868, 874, 876, 878, 880, 884, 886, 674 888, 890, 894, 895, 897, 901, 906, 908, 912, 914, 675 916, 920, 924, 928, 932, 936, 939, 943, 950, 954, 676 958, 963, 965, 968, 971, 975, 981, 990, 998, 1006, 677 1012, 1022, 1025, 1028, 1034, 1038, 1044, 1049, 1053, 1058, 678 1063, 1071, 1075, 1079, 1083, 1087, 1092, 1099, 1101, 1103, 679 1105, 1107, 1109, 1111, 1113, 1115, 1116, 1118, 1120, 1123, 680 1125, 1127, 1129, 1131, 1133, 1135, 1137, 1138, 1144, 1146, 681 1149, 1153, 1155, 1158, 1160, 1162, 1164, 1166, 1168, 1170, 682 1172, 1174, 1176, 1178, 1180, 1182, 1184, 1186, 1188, 1190, 683 1192, 1194, 1196, 1198, 1200, 1202, 1205, 1208, 1212, 1216, 684 1218, 1222, 1224, 1227, 1230, 1233, 1238, 1243, 1248, 1253, 685 1255, 1258, 1261, 1265, 1267, 1270, 1273, 1275, 1278, 1281, 686 1285, 1287, 1290, 1293, 1295, 1297, 1302, 1305, 1311, 1319, 687 1322, 1325, 1328, 1330, 1333, 1336, 1340, 1343, 1347, 1349, 688 1352, 1356, 1359, 1362, 1367, 1368, 1370, 1373, 1376, 1378, 689 1379, 1381, 1384, 1387, 1393, 1400, 1403, 1406, 1411, 1412, 690 1415, 1416, 1418, 1420, 1422, 1428, 1434, 1440, 1442, 1448, 691 1454, 1464, 1466, 1472, 1473, 1475, 1477, 1483, 1485, 1487, 692 1493, 1499, 1501, 1505, 1509, 1514, 1516, 1518, 1520, 1522, 693 1525, 1527, 1531, 1535, 1537, 1540, 1542, 1546, 1548, 1550, 694 1552, 1554, 1556, 1558, 1560, 1562, 1564, 1566, 1568, 1571, 695 1573, 1575, 1577, 1580, 1581, 1584, 1586, 1591, 1593, 1596, 696 1600, 1605, 1608, 1611, 1613, 1616, 1618, 1621, 1627, 1633, 697 1641, 1648, 1650, 1653, 1656, 1660, 1662, 1665, 1668, 1673, 698 1676, 1681, 1682, 1687, 1690, 1692, 1694, 1696, 1697, 1700, 699 1706, 1712, 1726, 1728, 1730, 1734, 1738, 1741, 1745, 1749, 700 1752, 1757, 1759, 1766, 1776, 1777, 1789, 1791, 1795, 1799, 701 1803, 1805, 1807, 1813, 1816, 1822, 1823, 1825, 1827, 1831, 702 1832, 1834, 1836, 1838, 1840, 1841, 1848, 1851, 1853, 1856, 703 1861, 1864, 1868, 1872, 1876, 1881, 1887, 1893, 1899, 1906, 704 1908, 1910, 1912, 1916, 1917, 1923, 1924, 1926, 1928, 1931, 705 1938, 1940, 1944, 1945, 1947, 1952, 1954, 1956, 1958, 1960, 706 1963, 1965, 1968, 1971, 1973, 1977, 1980, 1984, 1988, 1991, 707 1996, 2001, 2005, 2014, 2018, 2021, 2023, 2026, 2033, 2042, 708 2046, 2049, 2053, 2057, 2062, 2067, 2071, 2073, 2075, 2077, 709 2082, 2089, 2093, 2096, 2100, 2104, 2109, 2114, 2118, 2121, 710 2123, 2126, 2129, 2131, 2135, 2138, 2142, 2146, 2149, 2154, 711 2159, 2163, 2170, 2179, 2183, 2186, 2188, 2191, 2194, 2197, 712 2201, 2205, 2208, 2213, 2218, 2222, 2229, 2238, 2242, 2245, 713 2247, 2250, 2253, 2255, 2257, 2260, 2264, 2268, 2271, 2276, 714 2283, 2292, 2294, 2297, 2300, 2302, 2305, 2308, 2312, 2316, 715 2318, 2323, 2328, 2332, 2338, 2347, 2351, 2354, 2358, 2360, 716 2366, 2372, 2379, 2386, 2388, 2391, 2394, 2396, 2399, 2402, 717 2406, 2410, 2412, 2417, 2422, 2426, 2432, 2441, 2445, 2447, 718 2450, 2452, 2455, 2462, 2468, 2475, 2483, 2491, 2493, 2496, 719 2499, 2501, 2504, 2507, 2511, 2515, 2517, 2522, 2527, 2531, 720 2540, 2544, 2546, 2548, 2551, 2553, 2555, 2558, 2562, 2565, 721 2569, 2572, 2576, 2580, 2583, 2588, 2592, 2595, 2599, 2602, 722 2607, 2611, 2614, 2621, 2628, 2635, 2643, 2645, 2648, 2650, 723 2652, 2654, 2657, 2661, 2664, 2668, 2671, 2675, 2679, 2684, 724 2687, 2691, 2696, 2699, 2705, 2711, 2718, 2725, 2726, 2728, 725 2729 714 726 }; 715 727 … … 717 729 static const yytype_int16 yyrhs[] = 718 730 { 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 731 298, 0, -1, -1, -1, 77, -1, 78, -1, 79, 732 -1, 70, -1, 74, -1, 138, -1, 70, -1, 74, 733 -1, 70, -1, 70, -1, 138, -1, 81, -1, 82, 734 -1, 80, -1, 139, 80, -1, 70, -1, 138, -1, 735 106, 166, 107, -1, 106, 170, 107, -1, 140, -1, 736 141, 108, 131, 161, 132, 109, -1, 141, 106, 142, 737 107, -1, 141, 110, 136, -1, 141, 110, 108, 131, 738 144, 132, 109, -1, 141, 83, 136, -1, 141, 83, 739 108, 131, 144, 132, 109, -1, 141, 84, -1, 141, 740 85, -1, 106, 271, 107, 111, 275, 368, 112, -1, 741 143, -1, 142, 113, 143, -1, -1, 161, -1, 136, 742 114, 161, -1, 108, 131, 161, 132, 109, 114, 161, 743 -1, 108, 131, 161, 113, 164, 132, 109, 114, 161, 744 -1, 145, -1, 144, 113, 145, -1, 136, -1, 136, 745 110, 145, -1, 136, 110, 108, 131, 144, 132, 109, 746 -1, 136, 83, 145, -1, 136, 83, 108, 131, 144, 747 132, 109, -1, 141, -1, 133, -1, 139, -1, 84, 748 146, -1, 85, 146, -1, 38, 148, -1, 147, 148, 749 -1, 115, 148, -1, 116, 148, -1, 36, 146, -1, 750 36, 106, 271, 107, -1, 74, -1, 74, 106, 272, 751 107, -1, 74, 106, 143, 107, -1, 64, 146, -1, 752 64, 106, 271, 107, -1, 92, 136, -1, 117, -1, 753 118, -1, 119, -1, 120, -1, 146, -1, 106, 271, 754 107, 148, -1, 106, 271, 107, 163, -1, 148, -1, 755 149, 116, 148, -1, 149, 121, 148, -1, 149, 122, 756 148, -1, 149, -1, 150, 118, 149, -1, 150, 119, 757 149, -1, 150, -1, 151, 86, 150, -1, 151, 87, 758 150, -1, 151, -1, 152, 123, 151, -1, 152, 124, 759 151, -1, 152, 88, 151, -1, 152, 89, 151, -1, 760 152, -1, 153, 90, 152, -1, 153, 91, 152, -1, 761 153, -1, 154, 117, 153, -1, 154, -1, 155, 125, 762 154, -1, 155, -1, 156, 126, 155, -1, 156, -1, 763 157, 92, 156, -1, 157, -1, 158, 93, 157, -1, 764 158, -1, 158, 127, 166, 114, 159, -1, 158, 127, 765 114, 159, -1, 158, 127, 166, 114, 163, -1, 159, 766 -1, 159, -1, 146, 128, 161, -1, 146, 165, 161, 767 -1, 163, 369, -1, -1, 161, -1, 108, 109, -1, 768 108, 131, 161, 132, 109, -1, 108, 131, 113, 164, 769 132, 109, -1, 108, 131, 161, 113, 164, 132, 109, 770 -1, 162, -1, 164, 113, 162, -1, 95, -1, 96, 771 -1, 97, -1, 98, -1, 99, -1, 100, -1, 101, 772 -1, 102, -1, 103, -1, 104, -1, 161, -1, 166, 773 113, 161, -1, -1, 166, -1, 169, -1, 170, -1, 774 174, -1, 175, -1, 187, -1, 189, -1, 190, -1, 775 195, -1, 202, -1, 136, 114, 308, 168, -1, 111, 776 112, -1, 111, 131, 131, 207, 171, 132, 112, -1, 777 172, -1, 171, 131, 172, -1, 210, -1, 38, 210, 778 -1, 304, -1, 168, 132, -1, 168, -1, 173, 168, 779 -1, 167, 129, -1, 39, 106, 166, 107, 168, -1, 780 39, 106, 166, 107, 168, 40, 168, -1, 41, 106, 781 166, 107, 180, -1, 41, 106, 166, 107, 111, 131, 782 203, 181, 112, -1, 51, 106, 166, 107, 180, -1, 783 51, 106, 166, 107, 111, 131, 203, 183, 112, -1, 784 160, -1, 160, 94, 160, -1, 306, -1, 176, -1, 785 177, 113, 176, -1, 42, 177, 114, -1, 43, 114, 786 -1, 178, -1, 179, 178, -1, 179, 168, -1, -1, 787 182, -1, 179, 173, -1, 182, 179, 173, -1, -1, 788 184, -1, 179, 186, -1, 179, 173, 185, -1, 184, 789 179, 186, -1, 184, 179, 173, 185, -1, -1, 186, 790 -1, 54, -1, 54, 129, -1, 45, 106, 166, 107, 791 168, -1, 44, 168, 45, 106, 166, 107, 129, -1, 792 46, 106, 131, 188, 107, 168, -1, 167, 132, 129, 793 167, 129, 167, -1, 210, 167, 129, 167, -1, 49, 794 136, 129, -1, 49, 116, 166, 129, -1, 48, 129, 795 -1, 48, 136, 129, -1, 47, 129, -1, 47, 136, 796 129, -1, 50, 167, 129, -1, 59, 162, 129, -1, 797 60, 162, 129, -1, 60, 162, 61, 161, 129, -1, 798 55, 170, 191, -1, 55, 170, 193, -1, 55, 170, 799 191, 193, -1, 192, -1, 56, 106, 94, 107, 170, 800 -1, 192, 56, 106, 94, 107, 170, -1, 57, 106, 801 94, 107, 170, -1, 192, 57, 106, 94, 107, 170, 802 -1, 56, 106, 131, 131, 194, 132, 107, 170, 132, 803 -1, 192, 56, 106, 131, 131, 194, 132, 107, 170, 804 132, -1, 57, 106, 131, 131, 194, 132, 107, 170, 805 132, -1, 192, 57, 106, 131, 131, 194, 132, 107, 806 170, 132, -1, 58, 170, -1, 223, -1, 223, 305, 807 -1, 223, 353, -1, 362, 136, -1, 362, -1, 62, 808 196, 106, 139, 107, 129, -1, 62, 196, 106, 139, 809 114, 197, 107, 129, -1, 62, 196, 106, 139, 114, 810 197, 114, 197, 107, 129, -1, 62, 196, 106, 139, 811 114, 197, 114, 197, 114, 200, 107, 129, -1, 62, 812 196, 49, 106, 139, 114, 114, 197, 114, 200, 114, 813 201, 107, 129, -1, -1, 11, -1, -1, 198, -1, 814 199, -1, 198, 113, 199, -1, 139, 106, 160, 107, 815 -1, 108, 160, 109, 139, 106, 160, 107, -1, -1, 816 139, -1, 200, 113, 139, -1, 136, -1, 201, 113, 817 136, -1, 137, 111, 142, 112, 129, -1, 125, 137, 818 111, 112, 129, -1, 132, -1, 204, -1, 210, -1, 819 204, 131, 210, -1, 132, -1, 206, -1, 220, -1, 820 206, 131, 220, -1, -1, 208, -1, 28, 209, 129, 821 -1, 208, 28, 209, 129, -1, 270, -1, 209, 113, 822 270, -1, 211, -1, 220, -1, 212, 132, 129, -1, 823 217, 132, 129, -1, 214, 132, 129, -1, 289, 132, 824 129, -1, 292, 132, 129, -1, 213, 273, -1, 229, 825 213, 273, -1, 212, 132, 113, 131, 268, 273, -1, 826 363, 268, 307, -1, 366, 268, 307, -1, 225, 366, 827 268, 307, -1, 215, -1, 225, 215, -1, 229, 215, 828 -1, 229, 225, 215, -1, 214, 132, 113, 131, 268, 829 -1, 108, 109, 268, 106, 131, 256, 132, 107, -1, 830 366, 268, 106, 131, 256, 132, 107, -1, 216, 268, 831 106, 131, 256, 132, 107, -1, 108, 131, 258, 132, 832 109, -1, 108, 131, 258, 132, 113, 131, 259, 132, 833 109, -1, 3, 213, -1, 3, 215, -1, 217, 132, 834 113, 131, 136, -1, 3, 223, 305, -1, 218, 132, 835 113, 131, 305, -1, 225, 3, 223, 305, -1, 223, 836 3, 305, -1, 223, 3, 225, 305, -1, 3, 136, 837 128, 161, -1, 219, 132, 113, 131, 136, 128, 161, 838 -1, 221, 132, 129, -1, 218, 132, 129, -1, 219, 839 132, 129, -1, 238, 132, 129, -1, 222, 305, 307, 840 273, -1, 221, 113, 308, 305, 307, 273, -1, 234, 841 -1, 238, -1, 240, -1, 279, -1, 235, -1, 239, 842 -1, 241, -1, 280, -1, -1, 225, -1, 226, -1, 843 225, 226, -1, 227, -1, 310, -1, 10, -1, 12, 844 -1, 11, -1, 14, -1, 65, -1, -1, 13, 106, 845 228, 282, 107, -1, 230, -1, 225, 230, -1, 229, 846 225, 230, -1, 231, -1, 230, 231, -1, 232, -1, 847 5, -1, 7, -1, 4, -1, 6, -1, 8, -1, 848 9, -1, 67, -1, 69, -1, 16, -1, 21, -1, 849 20, -1, 18, -1, 19, -1, 17, -1, 22, -1, 850 23, -1, 15, -1, 24, -1, 25, -1, 26, -1, 851 235, -1, 229, 235, -1, 234, 231, -1, 234, 231, 852 225, -1, 234, 231, 235, -1, 236, -1, 224, 237, 853 224, -1, 233, -1, 225, 233, -1, 236, 226, -1, 854 236, 233, -1, 27, 106, 272, 107, -1, 27, 106, 855 166, 107, -1, 76, 106, 272, 107, -1, 76, 106, 856 166, 107, -1, 239, -1, 229, 239, -1, 238, 231, 857 -1, 238, 231, 225, -1, 242, -1, 225, 242, -1, 858 239, 226, -1, 241, -1, 229, 241, -1, 240, 231, 859 -1, 240, 231, 225, -1, 72, -1, 225, 72, -1, 860 241, 226, -1, 243, -1, 253, -1, 244, 111, 245, 861 112, -1, 244, 270, -1, 244, 270, 111, 245, 112, 862 -1, 244, 106, 288, 107, 111, 245, 112, -1, 244, 863 281, -1, 30, 308, -1, 31, 308, -1, 246, -1, 864 245, 246, -1, 247, 129, -1, 38, 247, 129, -1, 865 248, 129, -1, 38, 248, 129, -1, 362, -1, 362, 866 270, -1, 247, 113, 270, -1, 247, 113, -1, 223, 867 249, -1, 248, 113, 308, 249, -1, -1, 251, -1, 868 314, 250, -1, 327, 250, -1, 353, -1, -1, 251, 869 -1, 114, 160, -1, 29, 308, -1, 252, 111, 254, 870 368, 112, -1, 252, 270, 111, 254, 368, 112, -1, 871 252, 270, -1, 270, 255, -1, 254, 113, 270, 255, 872 -1, -1, 128, 160, -1, -1, 257, -1, 259, -1, 873 258, -1, 258, 132, 113, 131, 259, -1, 259, 132, 874 113, 131, 94, -1, 258, 132, 113, 131, 94, -1, 875 263, -1, 259, 132, 113, 131, 263, -1, 258, 132, 876 113, 131, 263, -1, 258, 132, 113, 131, 259, 132, 877 113, 131, 263, -1, 264, -1, 259, 132, 113, 131, 878 264, -1, -1, 261, -1, 262, -1, 262, 132, 113, 879 131, 94, -1, 266, -1, 265, -1, 262, 132, 113, 880 131, 266, -1, 262, 132, 113, 131, 265, -1, 265, 881 -1, 358, 268, 369, -1, 366, 268, 369, -1, 225, 882 366, 268, 369, -1, 215, -1, 266, -1, 358, -1, 883 366, -1, 225, 366, -1, 367, -1, 222, 332, 369, 884 -1, 222, 336, 369, -1, 222, -1, 222, 347, -1, 885 136, -1, 267, 113, 136, -1, 134, -1, 72, -1, 886 73, -1, 135, -1, 72, -1, 73, -1, 136, -1, 887 72, -1, 73, -1, 362, -1, 223, -1, 223, 353, 888 -1, 362, -1, 367, -1, 223, -1, 223, 341, -1, 889 -1, 128, 274, -1, 161, -1, 111, 275, 368, 112, 890 -1, 274, -1, 276, 274, -1, 275, 113, 274, -1, 891 275, 113, 276, 274, -1, 277, 114, -1, 270, 114, 892 -1, 278, -1, 277, 278, -1, 78, -1, 110, 270, 893 -1, 108, 131, 161, 132, 109, -1, 108, 131, 306, 894 132, 109, -1, 108, 131, 160, 94, 160, 132, 109, 895 -1, 110, 108, 131, 144, 132, 109, -1, 280, -1, 896 229, 280, -1, 279, 231, -1, 279, 231, 225, -1, 897 281, -1, 225, 281, -1, 280, 226, -1, 73, 106, 898 288, 107, -1, 283, 369, -1, 282, 113, 283, 369, 899 -1, -1, 285, 270, 284, 286, -1, 223, 332, -1, 900 32, -1, 34, -1, 33, -1, -1, 286, 287, -1, 901 126, 270, 106, 288, 107, -1, 126, 111, 131, 294, 902 112, -1, 126, 106, 131, 282, 132, 107, 111, 131, 903 294, 112, 106, 288, 107, -1, 272, -1, 161, -1, 904 288, 113, 272, -1, 288, 113, 161, -1, 32, 290, 905 -1, 230, 32, 290, -1, 289, 113, 290, -1, 291, 906 286, -1, 291, 286, 128, 272, -1, 270, -1, 269, 907 106, 131, 282, 132, 107, -1, 35, 270, 106, 131, 908 282, 132, 107, 111, 112, -1, -1, 35, 270, 106, 909 131, 282, 132, 107, 111, 293, 294, 112, -1, 295, 910 -1, 294, 131, 295, -1, 296, 132, 129, -1, 297, 911 132, 129, -1, 213, -1, 215, -1, 296, 132, 113, 912 131, 268, -1, 223, 305, -1, 297, 132, 113, 131, 913 305, -1, -1, 299, -1, 301, -1, 299, 131, 301, 914 -1, -1, 299, -1, 210, -1, 303, -1, 195, -1, 915 -1, 5, 80, 302, 111, 300, 112, -1, 38, 301, 916 -1, 304, -1, 319, 170, -1, 323, 131, 205, 170, 917 -1, 214, 170, -1, 222, 319, 170, -1, 225, 319, 918 170, -1, 229, 319, 170, -1, 229, 225, 319, 170, 919 -1, 222, 323, 131, 205, 170, -1, 225, 323, 131, 920 205, 170, -1, 229, 323, 131, 205, 170, -1, 229, 921 225, 323, 131, 205, 170, -1, 314, -1, 319, -1, 922 327, -1, 160, 120, 160, -1, -1, 62, 106, 139, 923 107, 308, -1, -1, 309, -1, 310, -1, 309, 310, 924 -1, 37, 106, 106, 311, 107, 107, -1, 312, -1, 925 311, 113, 312, -1, -1, 313, -1, 313, 106, 167, 926 107, -1, 268, -1, 232, -1, 233, -1, 226, -1, 927 315, 308, -1, 316, -1, 317, 308, -1, 318, 308, 928 -1, 134, -1, 106, 315, 107, -1, 116, 314, -1, 929 116, 225, 314, -1, 106, 316, 107, -1, 315, 345, 930 -1, 106, 316, 107, 345, -1, 106, 317, 107, 346, 931 -1, 106, 317, 107, -1, 106, 316, 107, 106, 131, 932 260, 132, 107, -1, 106, 318, 107, -1, 320, 308, 933 -1, 321, -1, 322, 308, -1, 315, 106, 131, 260, 934 132, 107, -1, 106, 321, 107, 106, 131, 260, 132, 935 107, -1, 106, 320, 107, -1, 116, 319, -1, 116, 936 225, 319, -1, 106, 321, 107, -1, 106, 321, 107, 937 345, -1, 106, 322, 107, 346, -1, 106, 322, 107, 938 -1, 324, -1, 325, -1, 326, -1, 315, 106, 267, 939 107, -1, 106, 325, 107, 106, 267, 107, -1, 106, 940 324, 107, -1, 116, 323, -1, 116, 225, 323, -1, 941 106, 325, 107, -1, 106, 325, 107, 345, -1, 106, 942 326, 107, 346, -1, 106, 326, 107, -1, 328, 308, 943 -1, 329, -1, 330, 308, -1, 331, 308, -1, 337, 944 -1, 106, 328, 107, -1, 116, 327, -1, 116, 225, 945 327, -1, 106, 329, 107, -1, 328, 345, -1, 106, 946 329, 107, 345, -1, 106, 330, 107, 346, -1, 106, 947 330, 107, -1, 328, 106, 131, 260, 132, 107, -1, 948 106, 329, 107, 106, 131, 260, 132, 107, -1, 106, 949 331, 107, -1, 315, 308, -1, 333, -1, 334, 308, 950 -1, 335, 308, -1, 116, 332, -1, 116, 225, 332, 951 -1, 106, 333, 107, -1, 315, 351, -1, 106, 333, 952 107, 345, -1, 106, 334, 107, 346, -1, 106, 334, 953 107, -1, 315, 106, 131, 260, 132, 107, -1, 106, 954 333, 107, 106, 131, 260, 132, 107, -1, 106, 335, 955 107, -1, 337, 308, -1, 338, -1, 339, 308, -1, 956 340, 308, -1, 72, -1, 73, -1, 116, 336, -1, 957 116, 225, 336, -1, 106, 338, 107, -1, 337, 351, 958 -1, 106, 338, 107, 351, -1, 337, 106, 131, 260, 959 132, 107, -1, 106, 338, 107, 106, 131, 260, 132, 960 107, -1, 342, -1, 343, 308, -1, 344, 308, -1, 961 116, -1, 116, 225, -1, 116, 341, -1, 116, 225, 962 341, -1, 106, 342, 107, -1, 345, -1, 106, 342, 963 107, 345, -1, 106, 343, 107, 346, -1, 106, 343, 964 107, -1, 106, 131, 260, 132, 107, -1, 106, 342, 965 107, 106, 131, 260, 132, 107, -1, 106, 344, 107, 966 -1, 108, 109, -1, 108, 109, 346, -1, 346, -1, 967 108, 131, 161, 132, 109, -1, 108, 131, 116, 132, 968 109, -1, 346, 108, 131, 161, 132, 109, -1, 346, 969 108, 131, 116, 132, 109, -1, 348, -1, 349, 308, 970 -1, 350, 308, -1, 116, -1, 116, 225, -1, 116, 971 347, -1, 116, 225, 347, -1, 106, 348, 107, -1, 972 351, -1, 106, 348, 107, 351, -1, 106, 349, 107, 973 346, -1, 106, 349, 107, -1, 106, 131, 260, 132, 974 107, -1, 106, 348, 107, 106, 131, 260, 132, 107, 975 -1, 106, 350, 107, -1, 352, -1, 352, 346, -1, 976 346, -1, 108, 109, -1, 108, 131, 225, 116, 132, 977 109, -1, 108, 131, 225, 132, 109, -1, 108, 131, 978 225, 161, 132, 109, -1, 108, 131, 7, 224, 161, 979 132, 109, -1, 108, 131, 225, 7, 161, 132, 109, 980 -1, 354, -1, 355, 308, -1, 356, 308, -1, 116, 981 -1, 116, 225, -1, 116, 353, -1, 116, 225, 353, 982 -1, 106, 354, 107, -1, 345, -1, 106, 354, 107, 983 345, -1, 106, 355, 107, 346, -1, 106, 355, 107, 984 -1, 106, 354, 107, 106, 131, 260, 132, 107, -1, 985 106, 356, 107, -1, 358, -1, 366, -1, 225, 366, 986 -1, 359, -1, 360, -1, 116, 223, -1, 225, 116, 987 223, -1, 116, 367, -1, 225, 116, 367, -1, 116, 988 357, -1, 225, 116, 357, -1, 108, 109, 223, -1, 989 361, 223, -1, 108, 109, 346, 223, -1, 361, 346, 990 223, -1, 346, 223, -1, 108, 109, 359, -1, 361, 991 359, -1, 108, 109, 346, 359, -1, 361, 346, 359, 992 -1, 346, 359, -1, 108, 131, 225, 116, 132, 109, 993 -1, 108, 131, 225, 161, 132, 109, -1, 108, 131, 994 229, 161, 132, 109, -1, 108, 131, 229, 225, 161, 995 132, 109, -1, 366, -1, 225, 366, -1, 363, -1, 996 364, -1, 365, -1, 116, 223, -1, 225, 116, 223, 997 -1, 116, 367, -1, 225, 116, 367, -1, 116, 362, 998 -1, 225, 116, 362, -1, 108, 109, 223, -1, 108, 999 109, 346, 223, -1, 346, 223, -1, 108, 109, 364, 1000 -1, 108, 109, 346, 364, -1, 346, 364, -1, 108, 1001 131, 259, 132, 109, -1, 108, 109, 106, 256, 107, 1002 -1, 366, 106, 131, 256, 132, 107, -1, 216, 106, 1003 131, 256, 132, 107, -1, -1, 113, -1, -1, 128, 1004 161, -1 987 1005 }; 988 1006 … … 991 1009 { 992 1010 0, 288, 288, 294, 303, 304, 305, 309, 310, 311, 993 315, 316, 320, 324, 325, 329, 330, 336, 338, 340, 994 342, 347, 348, 354, 356, 358, 359, 361, 362, 364, 995 367, 372, 373, 379, 380, 381, 386, 388, 393, 394, 996 398, 400, 402, 404, 406, 411, 414, 416, 418, 420, 997 422, 424, 426, 428, 434, 436, 438, 440, 442, 444, 998 446, 448, 453, 454, 455, 456, 460, 461, 463, 468, 999 469, 471, 473, 478, 479, 481, 486, 487, 489, 494, 1000 495, 497, 499, 501, 506, 507, 509, 514, 515, 520, 1001 521, 526, 527, 532, 533, 538, 539, 544, 545, 547, 1002 549, 554, 559, 560, 562, 564, 570, 571, 577, 579, 1003 581, 583, 588, 589, 594, 595, 596, 597, 598, 599, 1004 600, 601, 602, 603, 607, 608, 614, 615, 621, 622, 1005 623, 624, 625, 626, 627, 628, 632, 639, 641, 651, 1006 652, 657, 659, 661, 663, 667, 668, 673, 678, 681, 1007 683, 685, 690, 692, 700, 701, 703, 707, 708, 713, 1008 714, 719, 720, 724, 729, 730, 734, 736, 742, 743, 1009 747, 749, 751, 753, 759, 760, 764, 765, 769, 771, 1010 773, 778, 780, 785, 787, 791, 794, 798, 801, 805, 1011 807, 809, 814, 816, 818, 827, 829, 831, 836, 838, 1012 843, 856, 857, 862, 864, 869, 873, 875, 877, 879, 1013 881, 887, 888, 894, 895, 899, 900, 905, 907, 913, 1014 914, 916, 921, 923, 930, 932, 936, 937, 942, 944, 1015 948, 949, 953, 955, 959, 960, 964, 965, 969, 970, 1016 985, 986, 987, 988, 989, 993, 998, 1005, 1015, 1020, 1017 1025, 1033, 1038, 1043, 1048, 1053, 1061, 1083, 1088, 1095, 1018 1097, 1104, 1109, 1114, 1125, 1130, 1135, 1140, 1145, 1154, 1019 1159, 1167, 1168, 1169, 1170, 1176, 1181, 1189, 1190, 1191, 1020 1192, 1196, 1197, 1198, 1199, 1204, 1205, 1214, 1215, 1220, 1021 1221, 1226, 1228, 1230, 1232, 1234, 1237, 1236, 1248, 1249, 1022 1251, 1261, 1262, 1267, 1271, 1273, 1275, 1277, 1279, 1281, 1023 1283, 1285, 1290, 1292, 1294, 1296, 1298, 1300, 1302, 1304, 1024 1306, 1308, 1310, 1312, 1318, 1319, 1321, 1323, 1325, 1330, 1025 1331, 1337, 1338, 1340, 1342, 1347, 1349, 1351, 1353, 1358, 1026 1359, 1361, 1363, 1368, 1369, 1371, 1376, 1377, 1379, 1381, 1027 1386, 1388, 1390, 1395, 1396, 1400, 1402, 1404, 1406, 1408, 1028 1413, 1415, 1420, 1422, 1427, 1428, 1430, 1431, 1436, 1437, 1029 1439, 1441, 1446, 1448, 1454, 1455, 1457, 1460, 1463, 1468, 1030 1469, 1474, 1479, 1483, 1485, 1487, 1492, 1494, 1500, 1501, 1031 1509, 1510, 1514, 1515, 1516, 1518, 1520, 1527, 1528, 1530, 1032 1532, 1537, 1538, 1544, 1545, 1549, 1550, 1555, 1556, 1557, 1033 1559, 1567, 1568, 1570, 1573, 1575, 1579, 1580, 1581, 1583, 1034 1585, 1589, 1594, 1602, 1603, 1612, 1614, 1619, 1620, 1621, 1035 1625, 1626, 1627, 1631, 1632, 1633, 1637, 1638, 1639, 1644, 1036 1645, 1646, 1647, 1653, 1654, 1659, 1660, 1664, 1665, 1666, 1037 1667, 1682, 1683, 1688, 1689, 1696, 1698, 1700, 1703, 1705, 1038 1707, 1730, 1731, 1733, 1735, 1740, 1741, 1743, 1748, 1753, 1039 1754, 1760, 1759, 1763, 1767, 1769, 1771, 1777, 1778, 1783, 1040 1788, 1790, 1795, 1797, 1798, 1800, 1805, 1807, 1809, 1814, 1041 1816, 1821, 1826, 1834, 1840, 1839, 1853, 1854, 1859, 1860, 1042 1864, 1869, 1874, 1882, 1887, 1898, 1899, 1910, 1911, 1917, 1043 1918, 1922, 1923, 1924, 1927, 1926, 1937, 1942, 1947, 1953, 1044 1962, 1968, 1974, 1980, 1986, 1994, 2000, 2008, 2014, 2023, 1045 2024, 2025, 2029, 2033, 2035, 2040, 2041, 2045, 2046, 2051, 1046 2057, 2058, 2061, 2063, 2064, 2068, 2069, 2070, 2071, 2105, 1047 2107, 2108, 2110, 2115, 2120, 2125, 2127, 2129, 2134, 2136, 1048 2138, 2140, 2145, 2147, 2157, 2159, 2160, 2165, 2167, 2169, 1049 2174, 2176, 2178, 2183, 2185, 2187, 2196, 2197, 2198, 2202, 1050 2204, 2206, 2211, 2213, 2215, 2220, 2222, 2224, 2239, 2241, 1051 2242, 2244, 2249, 2250, 2255, 2257, 2259, 2264, 2266, 2268, 1052 2270, 2275, 2277, 2279, 2289, 2291, 2292, 2294, 2299, 2301, 1053 2303, 2308, 2310, 2312, 2314, 2319, 2321, 2323, 2354, 2356, 1054 2357, 2359, 2364, 2369, 2377, 2379, 2381, 2386, 2388, 2393, 1055 2395, 2409, 2410, 2412, 2417, 2419, 2421, 2423, 2425, 2430, 1056 2431, 2433, 2435, 2440, 2442, 2444, 2450, 2452, 2454, 2458, 1057 2460, 2462, 2464, 2478, 2479, 2481, 2486, 2488, 2490, 2492, 1058 2494, 2499, 2500, 2502, 2504, 2509, 2511, 2513, 2519, 2520, 1059 2522, 2531, 2534, 2536, 2539, 2541, 2543, 2556, 2557, 2559, 1060 2564, 2566, 2568, 2570, 2572, 2577, 2578, 2580, 2582, 2587, 1061 2589, 2597, 2598, 2599, 2604, 2605, 2609, 2611, 2613, 2615, 1062 2617, 2619, 2626, 2628, 2630, 2632, 2634, 2636, 2638, 2640, 1063 2642, 2644, 2649, 2651, 2653, 2658, 2684, 2685, 2687, 2691, 1064 2692, 2696, 2698, 2700, 2702, 2704, 2706, 2713, 2715, 2717, 1065 2719, 2721, 2723, 2728, 2733, 2735, 2737, 2755, 2757, 2762, 1066 2763 1011 315, 316, 320, 324, 325, 329, 330, 334, 335, 341, 1012 343, 345, 347, 352, 353, 359, 361, 363, 364, 366, 1013 367, 369, 372, 377, 378, 384, 385, 386, 391, 393, 1014 398, 399, 403, 405, 407, 409, 411, 416, 419, 421, 1015 423, 425, 427, 429, 431, 433, 439, 441, 443, 445, 1016 447, 449, 451, 453, 458, 459, 460, 461, 465, 466, 1017 468, 473, 474, 476, 478, 483, 484, 486, 491, 492, 1018 494, 499, 500, 502, 504, 506, 511, 512, 514, 519, 1019 520, 525, 526, 531, 532, 537, 538, 543, 544, 549, 1020 550, 552, 554, 559, 564, 565, 567, 569, 575, 576, 1021 582, 584, 586, 588, 593, 594, 599, 600, 601, 602, 1022 603, 604, 605, 606, 607, 608, 612, 613, 619, 620, 1023 626, 627, 628, 629, 630, 631, 632, 633, 634, 638, 1024 645, 647, 657, 658, 663, 665, 667, 669, 673, 674, 1025 679, 684, 687, 689, 691, 696, 698, 706, 707, 709, 1026 713, 714, 719, 720, 725, 726, 730, 735, 736, 740, 1027 742, 748, 749, 753, 755, 757, 759, 765, 766, 770, 1028 771, 775, 777, 779, 784, 786, 791, 793, 797, 800, 1029 804, 807, 811, 813, 817, 819, 826, 828, 830, 839, 1030 841, 843, 845, 847, 852, 854, 856, 858, 863, 876, 1031 877, 882, 884, 889, 893, 895, 897, 899, 901, 907, 1032 908, 914, 915, 919, 920, 925, 927, 933, 934, 936, 1033 941, 943, 948, 954, 965, 967, 971, 972, 977, 979, 1034 983, 984, 988, 990, 994, 995, 999, 1000, 1004, 1005, 1035 1020, 1021, 1022, 1023, 1024, 1028, 1033, 1040, 1050, 1055, 1036 1060, 1068, 1073, 1078, 1083, 1088, 1096, 1118, 1123, 1130, 1037 1132, 1139, 1144, 1149, 1160, 1165, 1170, 1175, 1180, 1189, 1038 1194, 1202, 1203, 1204, 1205, 1211, 1216, 1224, 1225, 1226, 1039 1227, 1231, 1232, 1233, 1234, 1239, 1240, 1249, 1250, 1255, 1040 1256, 1261, 1263, 1265, 1267, 1269, 1272, 1271, 1283, 1284, 1041 1286, 1296, 1297, 1302, 1306, 1308, 1310, 1312, 1314, 1316, 1042 1318, 1320, 1325, 1327, 1329, 1331, 1333, 1335, 1337, 1339, 1043 1341, 1343, 1345, 1347, 1353, 1354, 1356, 1358, 1360, 1365, 1044 1366, 1372, 1373, 1375, 1377, 1382, 1384, 1386, 1388, 1393, 1045 1394, 1396, 1398, 1403, 1404, 1406, 1411, 1412, 1414, 1416, 1046 1421, 1423, 1425, 1430, 1431, 1435, 1437, 1439, 1441, 1443, 1047 1448, 1450, 1455, 1457, 1462, 1463, 1465, 1466, 1471, 1472, 1048 1474, 1476, 1481, 1483, 1489, 1490, 1492, 1495, 1498, 1503, 1049 1504, 1509, 1514, 1518, 1520, 1522, 1527, 1529, 1535, 1536, 1050 1544, 1545, 1549, 1550, 1551, 1553, 1555, 1562, 1563, 1565, 1051 1567, 1572, 1573, 1579, 1580, 1584, 1585, 1590, 1591, 1592, 1052 1594, 1602, 1603, 1605, 1608, 1610, 1614, 1615, 1616, 1618, 1053 1620, 1624, 1629, 1637, 1638, 1647, 1649, 1654, 1655, 1656, 1054 1660, 1661, 1662, 1666, 1667, 1668, 1672, 1673, 1674, 1679, 1055 1680, 1681, 1682, 1688, 1689, 1694, 1695, 1699, 1700, 1701, 1056 1702, 1717, 1718, 1723, 1724, 1732, 1734, 1736, 1739, 1741, 1057 1743, 1766, 1767, 1769, 1771, 1776, 1777, 1779, 1784, 1789, 1058 1790, 1796, 1795, 1799, 1803, 1805, 1807, 1813, 1814, 1819, 1059 1824, 1826, 1831, 1833, 1834, 1836, 1841, 1843, 1845, 1850, 1060 1852, 1857, 1862, 1870, 1876, 1875, 1889, 1890, 1895, 1896, 1061 1900, 1905, 1910, 1918, 1923, 1934, 1935, 1946, 1947, 1953, 1062 1954, 1958, 1959, 1960, 1963, 1962, 1973, 1978, 1983, 1989, 1063 1998, 2004, 2010, 2016, 2022, 2030, 2036, 2044, 2050, 2059, 1064 2060, 2061, 2065, 2069, 2071, 2076, 2077, 2081, 2082, 2087, 1065 2093, 2094, 2097, 2099, 2100, 2104, 2105, 2106, 2107, 2141, 1066 2143, 2144, 2146, 2151, 2156, 2161, 2163, 2165, 2170, 2172, 1067 2174, 2176, 2181, 2183, 2193, 2195, 2196, 2201, 2203, 2205, 1068 2210, 2212, 2214, 2219, 2221, 2223, 2232, 2233, 2234, 2238, 1069 2240, 2242, 2247, 2249, 2251, 2256, 2258, 2260, 2275, 2277, 1070 2278, 2280, 2285, 2286, 2291, 2293, 2295, 2300, 2302, 2304, 1071 2306, 2311, 2313, 2315, 2325, 2327, 2328, 2330, 2335, 2337, 1072 2339, 2344, 2346, 2348, 2350, 2355, 2357, 2359, 2390, 2392, 1073 2393, 2395, 2400, 2405, 2413, 2415, 2417, 2422, 2424, 2429, 1074 2431, 2445, 2446, 2448, 2453, 2455, 2457, 2459, 2461, 2466, 1075 2467, 2469, 2471, 2476, 2478, 2480, 2486, 2488, 2490, 2494, 1076 2496, 2498, 2500, 2514, 2515, 2517, 2522, 2524, 2526, 2528, 1077 2530, 2535, 2536, 2538, 2540, 2545, 2547, 2549, 2555, 2556, 1078 2558, 2567, 2570, 2572, 2575, 2577, 2579, 2592, 2593, 2595, 1079 2600, 2602, 2604, 2606, 2608, 2613, 2614, 2616, 2618, 2623, 1080 2625, 2633, 2634, 2635, 2640, 2641, 2645, 2647, 2649, 2651, 1081 2653, 2655, 2662, 2664, 2666, 2668, 2670, 2672, 2674, 2676, 1082 2678, 2680, 2685, 2687, 2689, 2694, 2720, 2721, 2723, 2727, 1083 2728, 2732, 2734, 2736, 2738, 2740, 2742, 2749, 2751, 2753, 1084 2755, 2757, 2759, 2764, 2769, 2771, 2773, 2791, 2793, 2798, 1085 2799 1067 1086 }; 1068 1087 #endif … … 1080 1099 "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", 1081 1100 "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", 1101 "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH", "CATCHRESUME", 1102 "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS", "ALIGNOF", 1103 "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT", "THREADLOCAL", 1104 "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname", "TYPEGENname", 1105 "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname", 1086 1106 "INTEGERconstant", "FLOATINGconstant", "CHARACTERconstant", 1087 1107 "STRINGliteral", "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE", … … 1092 1112 "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'", 1093 1113 "'='", "';'", "$accept", "push", "pop", "constant", "identifier", 1094 "no_01_identifier", "no_attr_identifier", " zero_one",1095 " string_literal_list", "primary_expression", "postfix_expression",1096 " argument_expression_list", "argument_expression", "field_list", "field",1097 " unary_expression", "unary_operator", "cast_expression",1098 " multiplicative_expression", "additive_expression", "shift_expression",1099 " relational_expression", "equality_expression", "AND_expression",1100 " exclusive_OR_expression", "inclusive_OR_expression",1114 "no_01_identifier", "no_attr_identifier", "no_attr_identifier_01", 1115 "zero_one", "string_literal_list", "primary_expression", 1116 "postfix_expression", "argument_expression_list", "argument_expression", 1117 "field_list", "field", "unary_expression", "unary_operator", 1118 "cast_expression", "multiplicative_expression", "additive_expression", 1119 "shift_expression", "relational_expression", "equality_expression", 1120 "AND_expression", "exclusive_OR_expression", "inclusive_OR_expression", 1101 1121 "logical_AND_expression", "logical_OR_expression", 1102 1122 "conditional_expression", "constant_expression", "assignment_expression", … … 1113 1133 "finally_clause", "exception_declaration", "asm_statement", 1114 1134 "asm_volatile_opt", "asm_operands_opt", "asm_operands_list", 1115 "asm_operand", "asm_clobbers_list_opt", "label_list", 1135 "asm_operand", "asm_clobbers_list_opt", "label_list", "ctor_dtor", 1116 1136 "declaration_list_opt", "declaration_list", "old_declaration_list_opt", 1117 1137 "old_declaration_list", "local_label_declaration_opt", … … 1195 1215 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 1196 1216 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, 591217 355, 356, 357, 358, 359, 360, 40, 41, 91, 93, 1218 46, 123, 125, 44, 58, 33, 42, 38, 43, 45, 1219 126, 47, 37, 60, 62, 94, 124, 63, 61, 59 1200 1220 }; 1201 1221 # endif … … 1204 1224 static const yytype_uint16 yyr1[] = 1205 1225 { 1206 0, 125, 126, 127, 128, 128, 128, 129, 129, 129, 1207 130, 130, 131, 132, 132, 133, 133, 134, 134, 134, 1208 134, 135, 135, 135, 135, 135, 135, 135, 135, 135, 1209 135, 136, 136, 137, 137, 137, 137, 137, 138, 138, 1210 139, 139, 139, 139, 139, 140, 140, 140, 140, 140, 1211 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 1212 140, 140, 141, 141, 141, 141, 142, 142, 142, 143, 1213 143, 143, 143, 144, 144, 144, 145, 145, 145, 146, 1214 146, 146, 146, 146, 147, 147, 147, 148, 148, 149, 1215 149, 150, 150, 151, 151, 152, 152, 153, 153, 153, 1216 153, 154, 155, 155, 155, 155, 156, 156, 157, 157, 1217 157, 157, 158, 158, 159, 159, 159, 159, 159, 159, 1218 159, 159, 159, 159, 160, 160, 161, 161, 162, 162, 1219 162, 162, 162, 162, 162, 162, 163, 164, 164, 165, 1220 165, 166, 166, 166, 166, 167, 167, 168, 169, 169, 1221 169, 169, 169, 169, 170, 170, 170, 171, 171, 172, 1222 172, 173, 173, 174, 175, 175, 176, 176, 177, 177, 1223 178, 178, 178, 178, 179, 179, 180, 180, 181, 181, 1224 181, 182, 182, 183, 183, 183, 183, 183, 183, 183, 1225 183, 183, 184, 184, 184, 185, 185, 185, 186, 186, 1226 187, 188, 188, 188, 188, 188, 189, 189, 189, 189, 1227 189, 190, 190, 191, 191, 192, 192, 193, 193, 194, 1228 194, 194, 195, 195, 196, 196, 197, 197, 198, 198, 1229 199, 199, 200, 200, 201, 201, 202, 202, 203, 203, 1230 204, 204, 204, 204, 204, 205, 205, 205, 206, 206, 1231 206, 207, 207, 207, 207, 207, 208, 208, 208, 209, 1232 209, 210, 210, 210, 211, 211, 211, 211, 211, 212, 1233 212, 213, 213, 213, 213, 214, 214, 215, 215, 215, 1234 215, 216, 216, 216, 216, 217, 217, 218, 218, 219, 1235 219, 220, 220, 220, 220, 220, 221, 220, 222, 222, 1236 222, 223, 223, 224, 225, 225, 225, 225, 225, 225, 1237 225, 225, 226, 226, 226, 226, 226, 226, 226, 226, 1238 226, 226, 226, 226, 227, 227, 227, 227, 227, 228, 1239 228, 229, 229, 229, 229, 230, 230, 230, 230, 231, 1240 231, 231, 231, 232, 232, 232, 233, 233, 233, 233, 1241 234, 234, 234, 235, 235, 236, 236, 236, 236, 236, 1242 237, 237, 238, 238, 239, 239, 239, 239, 240, 240, 1243 240, 240, 241, 241, 242, 242, 242, 242, 242, 243, 1244 243, 244, 245, 246, 246, 246, 247, 247, 248, 248, 1245 249, 249, 250, 250, 250, 250, 250, 251, 251, 251, 1246 251, 252, 252, 253, 253, 254, 254, 255, 255, 255, 1247 255, 256, 256, 256, 256, 256, 257, 257, 257, 257, 1248 257, 258, 258, 259, 259, 260, 260, 261, 261, 261, 1249 262, 262, 262, 263, 263, 263, 264, 264, 264, 265, 1250 265, 265, 265, 266, 266, 267, 267, 268, 268, 268, 1251 268, 269, 269, 270, 270, 271, 271, 271, 271, 271, 1252 271, 272, 272, 272, 272, 273, 273, 273, 274, 275, 1253 275, 277, 276, 276, 278, 278, 278, 279, 279, 280, 1254 280, 280, 281, 281, 281, 281, 282, 282, 282, 283, 1255 283, 284, 284, 285, 286, 285, 287, 287, 288, 288, 1256 289, 289, 289, 290, 290, 291, 291, 292, 292, 293, 1257 293, 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, 304, 305, 305, 305, 306, 306, 306, 306, 307, 1261 307, 307, 307, 308, 308, 309, 309, 309, 310, 310, 1262 310, 310, 311, 311, 312, 312, 312, 313, 313, 313, 1263 314, 314, 314, 315, 315, 315, 316, 316, 316, 317, 1264 317, 317, 318, 318, 318, 319, 319, 319, 320, 320, 1265 320, 320, 321, 321, 322, 322, 322, 323, 323, 323, 1266 323, 324, 324, 324, 325, 325, 325, 325, 326, 326, 1267 326, 327, 327, 327, 327, 328, 328, 328, 329, 329, 1268 329, 329, 330, 330, 331, 331, 331, 332, 332, 333, 1269 333, 334, 334, 334, 335, 335, 335, 335, 335, 336, 1270 336, 336, 336, 337, 337, 337, 338, 338, 338, 339, 1271 339, 339, 339, 340, 340, 340, 341, 341, 341, 341, 1272 341, 342, 342, 342, 342, 343, 343, 343, 344, 344, 1273 344, 345, 345, 345, 345, 345, 345, 346, 346, 346, 1274 347, 347, 347, 347, 347, 348, 348, 348, 348, 349, 1275 349, 350, 350, 350, 351, 351, 352, 352, 352, 352, 1276 352, 352, 353, 353, 353, 353, 353, 353, 353, 353, 1277 353, 353, 354, 354, 354, 354, 355, 355, 355, 356, 1278 356, 357, 357, 357, 357, 357, 357, 358, 358, 358, 1279 358, 358, 358, 359, 360, 360, 360, 361, 361, 362, 1280 362 1226 0, 130, 131, 132, 133, 133, 133, 134, 134, 134, 1227 135, 135, 136, 137, 137, 138, 138, 139, 139, 140, 1228 140, 140, 140, 141, 141, 141, 141, 141, 141, 141, 1229 141, 141, 141, 142, 142, 143, 143, 143, 143, 143, 1230 144, 144, 145, 145, 145, 145, 145, 146, 146, 146, 1231 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 1232 146, 146, 146, 146, 147, 147, 147, 147, 148, 148, 1233 148, 149, 149, 149, 149, 150, 150, 150, 151, 151, 1234 151, 152, 152, 152, 152, 152, 153, 153, 153, 154, 1235 154, 155, 155, 156, 156, 157, 157, 158, 158, 159, 1236 159, 159, 159, 160, 161, 161, 161, 161, 162, 162, 1237 163, 163, 163, 163, 164, 164, 165, 165, 165, 165, 1238 165, 165, 165, 165, 165, 165, 166, 166, 167, 167, 1239 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 1240 170, 170, 171, 171, 172, 172, 172, 172, 173, 173, 1241 174, 175, 175, 175, 175, 175, 175, 176, 176, 176, 1242 177, 177, 178, 178, 179, 179, 180, 181, 181, 182, 1243 182, 183, 183, 184, 184, 184, 184, 185, 185, 186, 1244 186, 187, 187, 187, 188, 188, 189, 189, 189, 189, 1245 189, 189, 189, 189, 189, 189, 190, 190, 190, 191, 1246 191, 191, 191, 191, 192, 192, 192, 192, 193, 194, 1247 194, 194, 194, 194, 195, 195, 195, 195, 195, 196, 1248 196, 197, 197, 198, 198, 199, 199, 200, 200, 200, 1249 201, 201, 202, 202, 203, 203, 204, 204, 205, 205, 1250 206, 206, 207, 207, 208, 208, 209, 209, 210, 210, 1251 211, 211, 211, 211, 211, 212, 212, 212, 213, 213, 1252 213, 214, 214, 214, 214, 214, 215, 215, 215, 216, 1253 216, 217, 217, 217, 218, 218, 218, 218, 218, 219, 1254 219, 220, 220, 220, 220, 221, 221, 222, 222, 222, 1255 222, 223, 223, 223, 223, 224, 224, 225, 225, 226, 1256 226, 227, 227, 227, 227, 227, 228, 227, 229, 229, 1257 229, 230, 230, 231, 232, 232, 232, 232, 232, 232, 1258 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 1259 233, 233, 233, 233, 234, 234, 234, 234, 234, 235, 1260 235, 236, 236, 236, 236, 237, 237, 237, 237, 238, 1261 238, 238, 238, 239, 239, 239, 240, 240, 240, 240, 1262 241, 241, 241, 242, 242, 243, 243, 243, 243, 243, 1263 244, 244, 245, 245, 246, 246, 246, 246, 247, 247, 1264 247, 247, 248, 248, 249, 249, 249, 249, 249, 250, 1265 250, 251, 252, 253, 253, 253, 254, 254, 255, 255, 1266 256, 256, 257, 257, 257, 257, 257, 258, 258, 258, 1267 258, 259, 259, 260, 260, 261, 261, 262, 262, 262, 1268 262, 263, 263, 263, 263, 263, 264, 264, 264, 264, 1269 264, 265, 265, 266, 266, 267, 267, 268, 268, 268, 1270 269, 269, 269, 270, 270, 270, 271, 271, 271, 272, 1271 272, 272, 272, 273, 273, 274, 274, 275, 275, 275, 1272 275, 276, 276, 277, 277, 278, 278, 278, 278, 278, 1273 278, 279, 279, 279, 279, 280, 280, 280, 281, 282, 1274 282, 284, 283, 283, 285, 285, 285, 286, 286, 287, 1275 287, 287, 288, 288, 288, 288, 289, 289, 289, 290, 1276 290, 291, 291, 292, 293, 292, 294, 294, 295, 295, 1277 296, 296, 296, 297, 297, 298, 298, 299, 299, 300, 1278 300, 301, 301, 301, 302, 301, 301, 303, 303, 303, 1279 304, 304, 304, 304, 304, 304, 304, 304, 304, 305, 1280 305, 305, 306, 307, 307, 308, 308, 309, 309, 310, 1281 311, 311, 312, 312, 312, 313, 313, 313, 313, 314, 1282 314, 314, 314, 315, 315, 316, 316, 316, 317, 317, 1283 317, 317, 318, 318, 319, 319, 319, 320, 320, 320, 1284 321, 321, 321, 322, 322, 322, 323, 323, 323, 324, 1285 324, 324, 325, 325, 325, 326, 326, 326, 327, 327, 1286 327, 327, 328, 328, 329, 329, 329, 330, 330, 330, 1287 330, 331, 331, 331, 332, 332, 332, 332, 333, 333, 1288 333, 334, 334, 334, 334, 335, 335, 335, 336, 336, 1289 336, 336, 337, 337, 338, 338, 338, 339, 339, 340, 1290 340, 341, 341, 341, 342, 342, 342, 342, 342, 343, 1291 343, 343, 343, 344, 344, 344, 345, 345, 345, 346, 1292 346, 346, 346, 347, 347, 347, 348, 348, 348, 348, 1293 348, 349, 349, 349, 349, 350, 350, 350, 351, 351, 1294 351, 352, 352, 352, 352, 352, 352, 353, 353, 353, 1295 354, 354, 354, 354, 354, 355, 355, 355, 355, 356, 1296 356, 357, 357, 357, 358, 358, 359, 359, 359, 359, 1297 359, 359, 360, 360, 360, 360, 360, 360, 360, 360, 1298 360, 360, 361, 361, 361, 361, 362, 362, 362, 363, 1299 363, 364, 364, 364, 364, 364, 364, 365, 365, 365, 1300 365, 365, 365, 366, 367, 367, 367, 368, 368, 369, 1301 369 1281 1302 }; 1282 1303 … … 1285 1306 { 1286 1307 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1287 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, 1288 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, 1308 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1309 1, 3, 3, 1, 6, 4, 3, 7, 3, 7, 1310 2, 2, 7, 1, 3, 0, 1, 3, 7, 9, 1311 1, 3, 1, 3, 7, 3, 7, 1, 1, 1, 1312 2, 2, 2, 2, 2, 2, 2, 4, 1, 4, 1313 4, 2, 4, 2, 1, 1, 1, 1, 1, 4, 1314 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 1315 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 1316 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1317 5, 4, 5, 1, 1, 3, 3, 2, 0, 1, 1318 2, 5, 6, 7, 1, 3, 1, 1, 1, 1, 1319 1, 1, 1, 1, 1, 1, 1, 3, 0, 1, 1320 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1321 2, 7, 1, 3, 1, 2, 1, 2, 1, 2, 1322 2, 5, 7, 5, 9, 5, 9, 1, 3, 1, 1323 1, 3, 3, 2, 1, 2, 2, 0, 1, 2, 1324 3, 0, 1, 2, 3, 3, 4, 0, 1, 1, 1325 2, 5, 7, 6, 6, 4, 3, 4, 2, 3, 1326 2, 3, 3, 3, 3, 5, 3, 3, 4, 1, 1327 5, 6, 5, 6, 9, 10, 9, 10, 2, 1, 1328 2, 2, 2, 1, 6, 8, 10, 12, 14, 0, 1329 1, 0, 1, 1, 3, 4, 7, 0, 1, 3, 1330 1, 3, 5, 5, 1, 1, 1, 3, 1, 1, 1309 1331 1, 3, 0, 1, 3, 4, 1, 3, 1, 1, 1310 1332 3, 3, 3, 3, 3, 2, 3, 6, 3, 3, … … 1366 1388 static const yytype_uint16 yydefact[] = 1367 1389 { 1368 2 85, 285, 306, 304, 307, 305, 308, 309, 291, 293,1369 292, 0, 294, 320, 312, 317, 315, 316, 314, 313,1370 3 18, 319, 321, 322, 323, 535, 535, 535, 0, 0,1371 0, 2 85, 211, 295, 310, 311, 7, 350, 0, 8,1372 1 3, 14, 0, 2, 285, 553, 9, 513, 511, 238,1373 3, 4 43, 3, 251, 0, 3, 3, 3, 239, 3,1374 0, 0, 0, 2 86, 287, 289, 285, 298, 301, 303,1375 3 31, 277, 324, 329, 278, 339, 279, 346, 343, 353,1376 0, 0, 3 54, 280, 461, 465, 3, 3, 0, 2,1377 5 07, 512, 517, 290, 0, 0, 535, 565, 535, 2,1378 5 76, 577, 578, 285, 0, 719, 720, 0, 12, 285,1379 0, 2 61, 262, 0, 286, 281, 282, 283, 284, 514,1380 296, 382, 536, 537, 360, 361, 12, 434, 435, 11,1381 4 30, 433, 0, 491, 486, 477, 434, 435, 0, 0,1382 5 16, 212, 0, 285, 0, 0, 0, 0, 0, 0,1383 0, 0, 2 85, 285, 2, 0, 721, 286, 570, 582,1384 7 25, 718, 716, 723, 0, 0, 245, 2, 0, 520,1385 4 28, 429, 427, 0, 0, 0, 0, 535, 0, 622,1386 6 23, 0, 0, 533, 529, 535, 550, 535, 535, 530,1387 2, 5 31, 535, 589, 535, 535, 592, 0, 0, 0,1388 2 85, 285, 304, 351, 2, 285, 252, 288, 299, 332,1389 3 44, 466, 0, 2, 0, 443, 253, 286, 325, 340,1390 3 47, 462, 0, 2, 0, 302, 326, 333, 334, 0,1391 3 41, 345, 348, 352, 435, 285, 285, 356, 359, 0,1392 3 85, 463, 467, 0, 0, 0, 1, 285, 2, 518,1393 5 64, 566, 285, 2, 729, 286, 732, 533, 533, 286,1394 0, 0, 0, 2 64, 535, 530, 2, 285, 0, 0,1395 2 85, 538, 2, 489, 2, 542, 0, 0, 0, 0,1396 0, 1 7, 56, 4, 5, 6, 15, 0, 0, 0,1397 2 85, 2, 0, 285, 62, 63, 64, 65, 46, 18,1398 4 7, 21, 45, 66, 0, 69, 73, 76, 79, 84,1399 8 7, 89, 91, 93, 95, 97, 102, 483, 739, 441,1400 4 82, 0, 439, 440, 0, 554, 569, 572, 575, 581,1401 5 84, 587, 350, 0, 2, 727, 0, 285, 730, 2,1402 2 85, 3, 415, 0, 423, 286, 285, 298, 324, 278,1403 3 39, 346, 3, 3, 397, 401, 411, 416, 461, 285,1404 4 17, 694, 695, 285, 418, 420, 285, 2, 571, 583,1405 7 17, 2, 2, 240, 2, 0, 0, 445, 444, 137,1406 2, 2, 2 42, 2, 2, 241, 2, 272, 2, 273,1407 0, 2 71, 0, 0, 0, 0, 0, 0, 0, 0,1408 0, 5 55, 594, 0, 443, 2, 549, 558, 648, 551,1409 5 52, 521, 285, 2, 588, 597, 590, 591, 0, 267,1410 2 85, 285, 330, 286, 0, 286, 0, 285, 722, 726,1411 7 24, 522, 285, 533, 246, 254, 300, 0, 2, 523,1412 2 85, 487, 327, 328, 274, 342, 349, 0, 285, 2,1413 3 74, 285, 362, 0, 0, 368, 716, 285, 737, 388,1414 0, 4 64, 488, 243, 244, 508, 285, 425, 0, 285,1415 2 28, 0, 2, 230, 0, 286, 0, 248, 2, 249,1416 2 69, 0, 0, 2, 285, 533, 285, 474, 476, 475,1417 0, 0, 7 39, 0, 285, 0, 285, 478, 285, 548,1418 5 46, 547, 545, 0, 540, 543, 0, 0, 285, 54,1419 6 6, 50, 285, 59, 285, 285, 48, 49, 61, 2,1420 12 4, 0, 0, 437, 0, 436, 108, 285, 52, 53,1421 1 6, 0, 28, 29, 33, 2, 0, 114, 115, 116,1422 11 7, 118, 119, 120, 121, 122, 123, 0, 0, 51,1390 295, 295, 316, 314, 317, 315, 318, 319, 301, 303, 1391 302, 0, 304, 330, 322, 327, 325, 326, 324, 323, 1392 328, 329, 331, 332, 333, 545, 545, 545, 0, 0, 1393 0, 295, 219, 305, 320, 321, 7, 360, 0, 8, 1394 15, 16, 0, 2, 295, 563, 9, 523, 521, 248, 1395 3, 453, 3, 261, 0, 3, 3, 3, 249, 3, 1396 0, 0, 0, 296, 297, 299, 295, 308, 311, 313, 1397 341, 287, 334, 339, 288, 349, 289, 356, 353, 363, 1398 0, 0, 364, 290, 471, 475, 3, 3, 0, 2, 1399 517, 522, 527, 300, 0, 0, 545, 575, 545, 2, 1400 586, 587, 588, 295, 0, 729, 730, 0, 12, 295, 1401 0, 271, 272, 0, 296, 291, 292, 293, 294, 524, 1402 306, 392, 546, 547, 370, 371, 12, 444, 445, 11, 1403 440, 443, 0, 501, 496, 487, 444, 445, 0, 0, 1404 526, 220, 0, 295, 0, 0, 0, 0, 0, 0, 1405 0, 0, 295, 295, 2, 0, 731, 296, 580, 592, 1406 735, 728, 726, 733, 0, 0, 255, 2, 0, 530, 1407 438, 439, 437, 0, 0, 0, 0, 545, 0, 632, 1408 633, 0, 0, 543, 539, 545, 560, 545, 545, 540, 1409 2, 541, 545, 599, 545, 545, 602, 0, 0, 0, 1410 295, 295, 314, 361, 2, 295, 262, 298, 309, 342, 1411 354, 476, 0, 2, 0, 453, 263, 296, 335, 350, 1412 357, 472, 0, 2, 0, 312, 336, 343, 344, 0, 1413 351, 355, 358, 362, 445, 295, 295, 366, 369, 0, 1414 395, 473, 477, 0, 0, 0, 1, 295, 2, 528, 1415 574, 576, 295, 2, 739, 296, 742, 543, 543, 296, 1416 0, 0, 0, 274, 545, 540, 2, 295, 0, 0, 1417 295, 548, 2, 499, 2, 552, 0, 0, 0, 0, 1418 0, 19, 58, 4, 5, 6, 17, 0, 0, 0, 1419 295, 2, 0, 295, 64, 65, 66, 67, 48, 20, 1420 49, 23, 47, 68, 0, 71, 75, 78, 81, 86, 1421 89, 91, 93, 95, 97, 99, 104, 493, 749, 451, 1422 492, 0, 449, 450, 0, 564, 579, 582, 585, 591, 1423 594, 597, 360, 0, 2, 737, 0, 295, 740, 2, 1424 295, 3, 425, 0, 433, 296, 295, 308, 334, 288, 1425 349, 356, 3, 3, 407, 411, 421, 426, 471, 295, 1426 427, 704, 705, 295, 428, 430, 295, 2, 581, 593, 1427 727, 2, 2, 250, 2, 0, 0, 455, 454, 140, 1428 2, 2, 252, 2, 2, 251, 2, 282, 2, 283, 1429 0, 281, 0, 0, 0, 0, 0, 0, 0, 0, 1430 0, 565, 604, 0, 453, 2, 559, 568, 658, 561, 1431 562, 531, 295, 2, 598, 607, 600, 601, 0, 277, 1432 295, 295, 340, 296, 0, 296, 0, 295, 732, 736, 1433 734, 532, 295, 543, 256, 264, 310, 0, 2, 533, 1434 295, 497, 337, 338, 284, 352, 359, 0, 295, 2, 1435 384, 295, 372, 0, 0, 378, 726, 295, 747, 398, 1436 0, 474, 498, 253, 254, 518, 295, 435, 0, 295, 1437 238, 0, 2, 240, 0, 296, 0, 258, 2, 259, 1438 279, 0, 0, 2, 295, 543, 295, 484, 486, 485, 1439 0, 0, 749, 0, 295, 0, 295, 488, 295, 558, 1440 556, 557, 555, 0, 550, 553, 0, 0, 295, 56, 1441 68, 52, 295, 61, 295, 295, 50, 51, 63, 2, 1442 126, 0, 0, 447, 0, 446, 110, 295, 54, 55, 1443 18, 0, 30, 31, 35, 2, 0, 116, 117, 118, 1444 119, 120, 121, 122, 123, 124, 125, 0, 0, 53, 1423 1445 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1424 1446 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 1447 107, 2, 644, 452, 641, 545, 545, 649, 478, 295, 1448 2, 583, 584, 0, 595, 596, 0, 2, 738, 741, 1449 110, 295, 2, 295, 0, 706, 296, 710, 701, 702, 1450 708, 0, 2, 2, 666, 545, 749, 615, 545, 545, 1451 749, 545, 629, 545, 545, 680, 434, 663, 545, 545, 1452 671, 678, 295, 429, 296, 0, 0, 295, 716, 296, 1453 721, 749, 713, 295, 718, 749, 295, 295, 295, 0, 1454 110, 0, 19, 5, 2, 0, 0, 457, 747, 0, 1455 0, 463, 242, 0, 295, 0, 0, 0, 543, 567, 1456 571, 573, 603, 606, 610, 613, 566, 605, 0, 285, 1457 656, 0, 295, 278, 0, 0, 0, 0, 276, 2, 1458 0, 260, 534, 295, 0, 0, 0, 0, 295, 295, 1459 0, 0, 690, 382, 385, 389, 545, 389, 695, 388, 1460 687, 545, 545, 365, 373, 381, 374, 545, 376, 379, 1461 295, 748, 0, 0, 396, 747, 296, 3, 414, 3, 1462 418, 417, 589, 0, 529, 295, 3, 3, 295, 433, 1463 296, 3, 427, 428, 2, 0, 0, 0, 483, 307, 1464 295, 479, 481, 3, 2, 2, 0, 500, 3, 0, 1465 552, 128, 0, 0, 221, 0, 0, 2, 0, 0, 1466 36, 0, 0, 110, 295, 21, 0, 22, 0, 690, 1467 448, 0, 108, 3, 2, 28, 2, 0, 33, 0, 1468 2, 26, 105, 106, 72, 73, 74, 76, 77, 79, 1469 80, 84, 85, 82, 83, 87, 88, 90, 92, 94, 1470 96, 98, 0, 0, 750, 295, 0, 0, 0, 645, 1471 646, 642, 643, 495, 494, 295, 0, 3, 295, 712, 1472 295, 717, 296, 295, 295, 295, 660, 703, 659, 2, 1473 295, 0, 0, 0, 0, 0, 0, 0, 0, 681, 1474 0, 667, 618, 634, 668, 2, 614, 621, 431, 616, 1475 617, 432, 2, 628, 637, 630, 631, 664, 665, 679, 1476 707, 711, 709, 749, 269, 2, 743, 2, 422, 715, 1477 720, 423, 0, 401, 3, 3, 3, 3, 453, 3, 1478 0, 2, 466, 462, 748, 0, 458, 465, 2, 461, 1479 464, 0, 295, 243, 265, 3, 273, 275, 0, 453, 1480 2, 569, 570, 2, 608, 609, 0, 657, 535, 3, 1481 346, 345, 348, 347, 295, 536, 0, 537, 295, 375, 1482 377, 2, 0, 0, 0, 0, 103, 391, 691, 692, 1483 386, 390, 387, 688, 689, 380, 384, 367, 398, 393, 1484 399, 0, 0, 0, 436, 241, 0, 0, 3, 2, 1485 666, 429, 0, 525, 0, 749, 487, 0, 295, 295, 1486 295, 0, 549, 551, 129, 0, 0, 214, 0, 0, 1487 0, 222, 223, 57, 62, 295, 0, 60, 59, 0, 1488 127, 691, 0, 69, 70, 109, 114, 3, 108, 0, 1489 0, 0, 25, 35, 3, 0, 101, 0, 3, 648, 1490 652, 655, 647, 3, 590, 3, 714, 719, 2, 295, 1491 3, 3, 296, 0, 3, 620, 624, 627, 636, 670, 1492 674, 677, 295, 3, 619, 635, 669, 295, 295, 424, 1493 295, 295, 744, 0, 0, 0, 0, 257, 0, 103, 1494 0, 3, 3, 0, 459, 0, 456, 0, 0, 246, 1495 295, 0, 0, 128, 0, 0, 0, 0, 0, 128, 1496 0, 0, 108, 108, 19, 2, 0, 0, 0, 20, 1497 0, 3, 130, 131, 2, 142, 132, 133, 134, 135, 1498 136, 137, 138, 144, 146, 0, 0, 0, 286, 295, 1499 295, 545, 0, 538, 295, 110, 694, 698, 700, 693, 1500 383, 397, 394, 577, 2, 662, 661, 0, 667, 2, 1501 480, 482, 502, 3, 510, 511, 0, 2, 506, 3, 1502 3, 0, 0, 554, 221, 0, 0, 0, 221, 0, 1503 3, 37, 747, 108, 0, 3, 659, 42, 3, 40, 1504 3, 34, 0, 3, 100, 102, 0, 2, 650, 651, 1505 0, 0, 295, 0, 0, 0, 3, 636, 0, 2, 1506 622, 623, 2, 638, 2, 672, 673, 0, 0, 3, 1507 0, 3, 3, 3, 3, 409, 408, 412, 2, 2, 1508 746, 745, 111, 0, 0, 0, 0, 3, 460, 3, 1509 0, 244, 145, 3, 296, 295, 0, 0, 0, 0, 1510 2, 190, 0, 188, 0, 0, 0, 0, 0, 0, 1511 0, 0, 110, 13, 0, 14, 545, 35, 150, 147, 1512 295, 0, 0, 268, 280, 3, 3, 544, 611, 368, 1513 2, 696, 697, 295, 267, 295, 0, 513, 490, 295, 1514 0, 0, 489, 504, 0, 0, 0, 215, 0, 224, 1515 108, 0, 0, 115, 112, 0, 0, 0, 0, 0, 1516 0, 24, 0, 653, 295, 578, 266, 722, 723, 724, 1517 0, 675, 295, 295, 295, 3, 3, 0, 683, 0, 1518 0, 0, 0, 295, 295, 3, 542, 467, 468, 0, 1519 0, 247, 296, 0, 0, 0, 0, 295, 191, 189, 1520 0, 186, 192, 0, 0, 0, 0, 196, 199, 197, 1521 193, 0, 194, 0, 128, 0, 143, 141, 245, 0, 1522 0, 295, 416, 420, 419, 0, 507, 2, 508, 2, 1523 509, 503, 295, 227, 0, 225, 0, 227, 3, 659, 1524 32, 113, 2, 45, 2, 43, 41, 29, 111, 27, 1525 3, 725, 3, 3, 3, 0, 0, 682, 684, 625, 1526 639, 270, 2, 406, 3, 405, 0, 470, 467, 128, 1527 0, 0, 128, 3, 0, 128, 187, 0, 2, 2, 1528 208, 198, 0, 0, 0, 0, 139, 0, 572, 612, 1529 3, 2, 0, 0, 2, 228, 0, 0, 216, 0, 1530 0, 0, 0, 0, 0, 0, 0, 0, 685, 686, 1531 295, 0, 469, 151, 0, 0, 2, 164, 128, 153, 1532 0, 181, 0, 128, 0, 2, 155, 0, 2, 0, 1533 2, 2, 2, 195, 233, 232, 0, 295, 512, 514, 1534 505, 0, 0, 0, 0, 113, 38, 3, 3, 654, 1535 626, 640, 676, 410, 128, 157, 160, 0, 159, 163, 1536 3, 166, 165, 0, 128, 183, 128, 3, 0, 295, 1537 0, 295, 0, 2, 0, 2, 699, 2, 229, 230, 1538 0, 226, 217, 0, 0, 0, 152, 0, 0, 162, 1539 234, 167, 2, 236, 182, 0, 185, 171, 200, 3, 1540 209, 213, 202, 3, 0, 295, 0, 295, 0, 0, 1541 0, 39, 46, 44, 158, 161, 128, 0, 168, 295, 1542 128, 128, 0, 172, 0, 0, 690, 210, 211, 212, 1543 0, 201, 3, 203, 3, 295, 218, 231, 148, 169, 1544 154, 128, 237, 184, 179, 177, 173, 156, 128, 0, 1545 691, 0, 0, 0, 0, 149, 170, 180, 174, 178, 1546 177, 175, 3, 3, 0, 0, 491, 176, 204, 206, 1547 3, 3, 205, 207 1521 1548 }; 1522 1549 … … 1524 1551 static const yytype_int16 yydefgoto[] = 1525 1552 { 1526 -1, 830, 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 520, 986, 318, 987, 548, 964, 1065, 1501, 1067, 1068,1530 10 69, 1070, 1502, 1071, 1072, 1430, 1431, 1397, 1398, 1399,1531 14 83, 1484, 1488, 1489, 1519, 1520, 1073, 1359, 1074, 1075,1532 1 296, 1297, 1298, 1469, 1076, 142, 970, 971, 972, 1376,1533 1 450, 1461, 1462, 471, 472, 892, 893, 1048, 48, 49,1534 50, 51, 52, 342, 155, 55, 56, 57, 58, 59,1535 344, 61, 62, 259, 64, 65, 270, 346, 347, 68,1536 69, 70, 71, 115, 73, 200, 349, 116, 76, 117,1537 7 8, 79, 80, 451, 452, 453, 454, 693, 930, 694,1538 81, 82, 458, 714, 872, 873, 352, 353, 717, 718,1539 71 9, 354, 355, 356, 357, 468, 336, 132, 133, 524,1540 320, 166, 647, 648, 649, 650, 651, 83, 118, 85,1541 491, 492, 956, 493, 273, 497, 321, 86, 134, 135,1542 87, 1317, 1111, 1112, 1113, 1114, 88, 89, 735, 90,1543 269, 91, 92, 183, 1042, 681, 406, 122, 93, 503,1544 504, 505, 184, 264, 186, 187, 188, 265, 96, 97,1545 9 8, 99, 100, 101, 102, 191, 192, 193, 194, 195,1546 842, 607, 608, 609, 610, 196, 612, 613, 614, 573,1547 574, 575, 576, 698, 103, 616, 617, 618, 619, 620,1548 6 21, 929, 700, 701, 702, 597, 360, 361, 362, 363,1549 3 22, 161, 105, 106, 107, 365, 712, 5701553 -1, 830, 470, 298, 45, 130, 131, 1068, 299, 300, 1554 301, 302, 777, 778, 1138, 1139, 303, 304, 305, 306, 1555 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 1556 1040, 520, 986, 318, 987, 548, 964, 1070, 1538, 1072, 1557 1073, 1074, 1075, 1539, 1076, 1077, 1456, 1457, 1417, 1418, 1558 1419, 1517, 1518, 1522, 1523, 1558, 1559, 1078, 1374, 1079, 1559 1080, 1307, 1308, 1309, 1499, 1081, 142, 970, 971, 972, 1560 1396, 1480, 1082, 1491, 1492, 471, 472, 892, 893, 1048, 1561 48, 49, 50, 51, 52, 342, 155, 55, 56, 57, 1562 58, 59, 344, 61, 62, 259, 64, 65, 270, 346, 1563 347, 68, 69, 70, 71, 115, 73, 200, 349, 116, 1564 76, 117, 78, 79, 80, 451, 452, 453, 454, 693, 1565 930, 694, 81, 82, 458, 714, 872, 873, 352, 353, 1566 717, 718, 719, 354, 355, 356, 357, 468, 336, 132, 1567 133, 524, 320, 166, 647, 648, 649, 650, 651, 83, 1568 118, 85, 491, 492, 956, 493, 273, 497, 321, 86, 1569 134, 135, 87, 1332, 1117, 1118, 1119, 1120, 88, 89, 1570 735, 90, 269, 91, 92, 183, 1042, 681, 406, 122, 1571 93, 503, 504, 505, 184, 264, 186, 187, 188, 265, 1572 96, 97, 98, 99, 100, 101, 102, 191, 192, 193, 1573 194, 195, 842, 607, 608, 609, 610, 196, 612, 613, 1574 614, 573, 574, 575, 576, 698, 103, 616, 617, 618, 1575 619, 620, 621, 929, 700, 701, 702, 597, 360, 361, 1576 362, 363, 322, 161, 105, 106, 107, 365, 712, 570 1550 1577 }; 1551 1578 1552 1579 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 1553 1580 STATE-NUM. */ 1554 #define YYPACT_NINF -131 81581 #define YYPACT_NINF -1316 1555 1582 static const yytype_int16 yypact[] = 1556 1583 { 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 1584 6783, 8392, -1316, 55, -1316, -1316, -1316, -1316, -1316, -1316, 1585 -1316, 11, -1316, -1316, -1316, -1316, -1316, -1316, -1316, -1316, 1586 -1316, -1316, -1316, -1316, -1316, 133, 133, 133, 919, 740, 1587 44, 7011, 189, -1316, -1316, -1316, -1316, -1316, 85, -1316, 1588 -1316, -1316, 970, 146, 8955, -1316, -1316, -1316, -1316, -1316, 1589 -1316, 144, 178, -1316, 1050, -1316, -1316, -1316, -1316, 186, 1590 1120, 320, 110, 7125, -1316, -1316, 9028, 826, -1316, -1316, 1591 -1316, 995, 338, 4376, 747, 1012, 995, 1148, -1316, -1316, 1592 364, 299, -1316, 995, 1376, -1316, 274, -1316, 407, 417, 1593 -1316, -1316, -1316, -1316, 316, 178, 133, -1316, 133, -1316, 1594 -1316, -1316, -1316, 8614, 1050, -1316, -1316, 1050, -1316, 8725, 1595 341, -1316, -1316, 1604, 9568, -1316, 1022, 1022, 1022, -1316, 1596 -1316, -1316, 133, -1316, -1316, -1316, 343, 366, 371, -1316, 1597 -1316, -1316, 377, -1316, -1316, -1316, -1316, -1316, 412, 455, 1598 -1316, -1316, 59, 8473, 2169, 225, 435, 476, 504, 507, 1599 518, 554, 8281, 6311, 464, 562, -1316, 9101, -1316, -1316, 1600 -1316, -1316, 573, -1316, 331, 3537, -1316, 570, 339, -1316, 1601 -1316, -1316, -1316, 601, 351, 379, 436, 133, 589, -1316, 1602 -1316, 1120, 2645, 672, -1316, 129, -1316, 133, 133, 178, 1603 -1316, -1316, 140, -1316, 133, 133, -1316, 2885, 651, 654, 1604 1022, 6457, -1316, -1316, 678, 8955, -1316, -1316, 995, -1316, 1605 -1316, -1316, 178, -1316, 1050, 144, -1316, 7455, -1316, 1022, 1606 1022, 1022, 178, -1316, 919, -1316, 2451, -1316, -1316, 667, 1607 1022, -1316, 1022, -1316, 85, 8473, 8503, 728, -1316, 740, 1608 739, 1022, -1316, 919, 735, 745, -1316, 7011, 821, -1316, 1609 -1316, -1316, 8924, -1316, -1316, 5872, -1316, 672, 137, 9568, 1610 10445, 1604, 2885, -1316, 171, -1316, -1316, 8725, 1050, 788, 1611 6340, -1316, -1316, 32, -1316, 10733, 796, 844, 3414, 4017, 1612 10597, -1316, 823, -1316, -1316, -1316, -1316, 10616, 10616, 821, 1613 8140, 848, 4017, 8584, -1316, -1316, -1316, -1316, -1316, -1316, 1614 871, -1316, 692, 1755, 4017, -1316, 617, 842, 610, 288, 1615 736, 853, 851, 856, 938, 35, -1316, -1316, 878, 468, 1616 -1316, 509, -1316, -1316, 2169, -1316, -1316, 388, 933, -1316, 1617 637, 933, 937, 85, -1316, -1316, 939, 8614, -1316, 949, 1618 8251, -1316, -1316, 1676, 1100, 7866, 6457, 995, -1316, 995, 1619 1022, 1022, -1316, -1316, -1316, -1316, -1316, -1316, 1022, 9597, 1620 1050, -1316, -1316, 9677, 1826, -1316, 9461, -1316, -1316, -1316, 1621 -1316, -1316, -1316, -1316, 954, 5529, 4017, -1316, -1316, -1316, 1622 -1316, -1316, -1316, -1316, -1316, -1316, -1316, -1316, -1316, -1316, 1623 1604, -1316, 814, 963, 968, 971, 827, 978, 981, 997, 1624 2645, -1316, -1316, 1009, 144, 1008, -1316, -1316, 1010, -1316, 1625 -1316, -1316, 8924, -1316, -1316, -1316, -1316, -1316, 2885, -1316, 1626 8473, 8473, -1316, 1022, 1604, 6574, 1050, 7936, -1316, -1316, 1627 -1316, -1316, 8924, 137, -1316, -1316, 995, 178, -1316, -1316, 1628 8924, -1316, 5991, -1316, -1316, 1022, 1022, 634, 9706, 1016, 1629 1063, 5013, -1316, 440, 443, 740, -1316, 8503, 1006, 998, 1630 740, 1022, -1316, -1316, -1316, -1316, 9992, -1316, 652, 6108, 1631 -1316, 178, 1018, -1316, 1604, 10813, 10464, -1316, -1316, -1316, 1632 -1316, 858, 2885, -1316, 8006, 672, 6897, -1316, -1316, -1316, 1633 986, 665, 878, 740, 6340, 370, 8725, -1316, 6340, -1316, 1634 -1316, -1316, -1316, 677, -1316, 1032, 844, 321, 8140, -1316, 1635 -1316, -1316, 8140, -1316, 8362, 8140, -1316, -1316, -1316, 1031, 1636 -1316, 694, 1035, 613, 1040, -1316, 9247, 5960, -1316, -1316, 1637 -1316, 70, -1316, -1316, 10521, -1316, 145, -1316, -1316, -1316, 1638 -1316, -1316, -1316, -1316, -1316, -1316, -1316, 10445, 10445, -1316, 1639 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 1640 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4481, 10445, 1641 -1316, 468, 703, -1316, -1316, 133, 133, -1316, -1316, 8473, 1642 -1316, -1316, 1010, 821, -1316, 1010, 10540, -1316, -1316, -1316, 1643 4224, 5960, 1041, 8695, 1048, -1316, 9743, -1316, -1316, 573, 1644 -1316, 1055, 578, 1058, 1876, 201, 878, -1316, 133, 133, 1645 878, 255, -1316, 133, 133, 1010, -1316, -1316, 133, 133, 1646 -1316, 933, 9813, 1050, 10954, 400, 408, 9813, -1316, 6223, 1647 -1316, 878, -1316, 9597, -1316, 240, 7568, 7568, 7568, 1050, 1648 -1316, 5299, 1054, 520, 954, 285, 1061, -1316, 1071, 3537, 1649 535, -1316, 1150, 1050, 7568, 821, 1604, 821, 672, 640, 1650 933, -1316, -1316, 734, 933, -1316, -1316, -1316, 844, -1316, 1651 933, 178, 9992, -1316, 708, 1080, 710, 1081, -1316, 1086, 1652 178, -1316, -1316, 8924, 178, 1078, 457, 466, 9850, 6428, 1653 1598, 4017, 2005, -1316, -1316, 1082, 86, 1082, -1316, -1316, 1654 -1316, 133, 133, -1316, -1316, 740, -1316, 133, -1316, -1316, 1655 9314, 740, 1087, 4017, -1316, 1006, 10954, -1316, -1316, 1096, 1656 -1316, -1316, -1316, 821, -1316, 10884, 4017, -1316, 7568, 689, 1657 7866, -1316, -1316, 573, 1092, 1095, 986, 2631, -1316, -1316, 1658 6340, -1316, -1316, 1098, -1316, -1316, 1104, -1316, 1098, 1107, 1659 10733, 10445, 58, 1088, 265, 1114, 1115, 848, 1109, 1118, 1660 -1316, 1122, 1124, 9394, 6077, -1316, 10445, -1316, 613, 833, 1661 -1316, 5722, 10445, 1119, -1316, -1316, 954, 752, -1316, 10445, 1662 -1316, -1316, -1316, -1316, -1316, -1316, -1316, 617, 617, 842, 1663 842, 610, 610, 610, 610, 288, 288, 736, 853, 851, 1664 856, 938, 4017, 872, -1316, 9992, 1126, 1128, 1132, 703, 1665 -1316, -1316, -1316, -1316, -1316, 9992, 759, 4017, 7568, -1316, 1666 9597, -1316, 6545, 8806, 9531, 6311, -1316, -1316, -1316, 578, 1667 9992, 889, 1138, 1141, 1144, 1145, 1146, 1149, 1153, -1316, 1668 3720, 1876, -1316, -1316, -1316, -1316, -1316, -1316, -1316, -1316, 1669 -1316, -1316, -1316, -1316, -1316, -1316, -1316, -1316, -1316, 1010, 1670 -1316, -1316, -1316, 878, -1316, -1316, -1316, -1316, -1316, -1316, 1671 -1316, -1316, 1154, -1316, 1155, 1159, -1316, -1316, 144, 1119, 1672 5299, -1316, -1316, -1316, 5529, 1160, -1316, -1316, -1316, -1316, 1673 -1316, 740, 5453, 1229, -1316, -1316, -1316, -1316, 1139, 144, 1674 -1316, -1316, 1010, -1316, -1316, 1010, 152, 1010, -1316, -1316, 1675 -1316, -1316, -1316, -1316, 9174, -1316, 178, -1316, 8503, -1316, 1676 -1316, 1162, 902, 1168, 1169, 1171, -1316, -1316, 2005, -1316, 1677 -1316, -1316, -1316, -1316, -1316, -1316, 1063, -1316, 998, -1316, 1678 -1316, 1173, 1174, 1167, -1316, -1316, 1177, 1180, -1316, 689, 1679 1647, -1316, 421, -1316, 2631, 878, -1316, 1183, 6340, 9879, 1680 8473, 1184, -1316, -1316, 1179, 1186, 1181, -1316, 4017, 335, 1681 530, 1188, -1316, 1185, 1185, 5960, 10445, -1316, -1316, 1185, 1682 -1316, 833, 5529, -1316, -1316, -1316, -1316, 1191, 10445, 1190, 1683 821, 5299, -1316, 10521, -1316, 821, -1316, 10445, -1316, 763, 1684 933, -1316, -1316, -1316, -1316, -1316, -1316, -1316, 954, 8251, 1685 -1316, -1316, 6662, 1198, -1316, 778, 933, -1316, 832, 840, 1686 933, -1316, 1022, 4346, -1316, -1316, -1316, 9992, 9992, -1316, 1687 7936, 7936, -1316, 1196, 1197, 1204, 1205, -1316, 1206, 484, 1688 365, 1119, -1316, 821, -1316, 3537, -1316, 10445, 481, -1316, 1689 5841, 1207, 1211, 10388, 1212, 1218, 5, 66, 52, 10445, 1690 1219, 178, 10445, 10445, 109, 1217, 630, 1220, 1209, 1221, 1691 1202, -1316, -1316, -1316, 1225, -1316, -1316, -1316, -1316, -1316, 1692 -1316, -1316, -1316, -1316, -1316, 740, 1226, 10445, -1316, 9992, 1693 9992, 133, 1234, -1316, 9423, 9284, 865, 933, -1316, -1316, 1694 -1316, -1316, -1316, -1316, -1316, -1316, -1316, 1235, 1647, -1316, 1695 -1316, 1227, -1316, 1098, -1316, -1316, 1604, 1231, -1316, -1316, 1696 -1316, 766, 1236, -1316, 265, 1237, 4017, 1222, 265, 265, 1697 1241, -1316, 1071, 10445, 1249, 1191, 846, 153, 1248, -1316, 1698 1241, -1316, 1254, 1248, -1316, -1316, 1259, -1316, -1316, 1010, 1699 1267, 1270, 6194, 1271, 1272, 1274, -1316, -1316, 1278, -1316, 1700 -1316, 1010, -1316, -1316, -1316, -1316, 1010, 10445, 10445, 4017, 1701 1282, -1316, -1316, -1316, -1316, -1316, -1316, -1316, -1316, -1316, 1702 -1316, -1316, -1316, 4017, 4017, 1285, 1288, 1248, -1316, -1316, 1703 740, -1316, -1316, -1316, 7385, 9879, 10445, 10445, 1356, 10445, 1704 -1316, -1316, 1277, -1316, 1279, 10445, 1280, 1281, 10445, 1038, 1705 1283, 92, 7786, -1316, 1292, -1316, 133, 10521, -1316, -1316, 1706 5453, 1302, 492, -1316, -1316, -1316, -1316, -1316, -1316, -1316, 1707 -1316, -1316, 1010, 10214, -1316, 8006, 1304, -1316, -1316, 9879, 1708 533, 541, -1316, 1308, 1310, 844, 1309, -1316, 551, -1316, 1709 10445, 1313, 1315, -1316, -1316, 1316, 244, 272, 821, 1321, 1710 1323, -1316, 1324, -1316, 9992, -1316, -1316, -1316, -1316, -1316, 1711 1326, -1316, 9992, 9992, 9992, -1316, -1316, 1329, -1316, 1330, 1712 1335, 1338, 673, 7640, 7753, -1316, -1316, 454, -1316, 1337, 1713 1339, -1316, 8076, 774, 775, 1341, 794, 5651, -1316, -1316, 1714 558, -1316, -1316, 797, 1344, 1346, 178, 1395, 956, -1316, 1715 -1316, 10445, -1316, 1343, 10388, 905, -1316, -1316, -1316, 1350, 1716 1351, 9992, -1316, -1316, -1316, 1348, -1316, -1316, -1316, -1316, 1717 -1316, -1316, 9879, 844, 381, -1316, 1333, 844, 1191, 405, 1718 -1316, -1316, -1316, -1316, -1316, -1316, -1316, -1316, 1352, -1316, 1719 -1316, -1316, -1316, -1316, -1316, 1355, 1358, -1316, -1316, -1316, 1720 -1316, -1316, -1316, -1316, 1363, -1316, 1362, -1316, -1316, 10388, 1721 167, 10445, 10388, -1316, 1365, 10445, -1316, 170, 1371, 1380, 1722 -1316, -1316, 1369, 1372, 1353, 1359, -1316, 1361, -1316, -1316, 1723 -1316, -1316, 1050, 1604, 1367, 871, 914, 4017, -1316, 799, 1724 1387, 10445, 821, 821, 1374, 1378, 1390, 1391, -1316, -1316, 1725 7936, 1388, -1316, 1462, 4017, 1389, -1316, -1316, 10303, -1316, 1726 802, -1316, 1375, 10388, 1379, -1316, -1316, 1398, -1316, 1403, 1727 -1316, 1418, 1420, -1316, -1316, -1316, 1410, 9879, -1316, -1316, 1728 -1316, 844, 821, 1411, 1394, 1405, -1316, 1248, 1248, -1316, 1729 -1316, -1316, -1316, -1316, 10388, 373, -1316, 925, -1316, -1316, 1730 7239, -1316, -1316, 1404, 10445, -1316, 10445, 7239, 178, 9706, 1731 178, 9706, 1427, -1316, 1428, -1316, -1316, 1426, 871, -1316, 1732 804, -1316, -1316, 10445, 1431, 1435, -1316, 4017, 4017, -1316, 1733 -1316, 1005, 113, -1316, -1316, 1417, -1316, 1005, -1316, -1316, 1734 1759, 821, -1316, -1316, 178, 9706, 178, 9706, 1445, 1425, 1735 821, -1316, -1316, -1316, -1316, -1316, 10303, 1443, 1005, 7313, 1736 10445, 10218, 1449, 1005, 1450, 1759, 2148, -1316, -1316, -1316, 1737 1457, -1316, -1316, -1316, -1316, 8473, -1316, -1316, -1316, 10088, 1738 -1316, 10303, -1316, -1316, 1439, 9996, -1316, -1316, 10218, 178, 1739 2148, 178, 1466, 1468, 812, -1316, 10088, -1316, -1316, -1316, 1740 9996, -1316, -1316, -1316, 178, 178, -1316, -1316, -1316, -1316, 1741 -1316, -1316, -1316, -1316 1710 1742 }; 1711 1743 … … 1713 1745 static const yytype_int16 yypgoto[] = 1714 1746 { 1715 -131 8, 3762, 2543, -1318, 1454, -1318, -1, 2, -89, -1318,1716 -131 8, -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 -1318, 304, -1184, -1318, -1318, 54, -1318, -1317, -763, 149,1720 -1318, -1318, -1318, -1318, -3, -1151, -1318, -1318, -1318, -1318,1721 -131 8, -1318, 223, 51, 55, -1318, -364, -1318, 402, 204,1722 -1318, 86, -1318, -320, -1318, -1318, -1318, 450, -745, -1318,1723 -1318, 10, -865, 258, 180, -1318, -1318, -1318, -222, -1318,1724 126, 49, -187, 951, 3574, -1318, -1318, 213, 151, 363,1725 -251, 2053, -1318, 1304, -1318, -1318, 344, 1615, -1318, 1898,1726 1496, -1318, -1318, -417, -439, 1083, 1084, 597, 837, 279,1727 -1318, -1318, 1086, 598, -23, -1318, 37, -463, 807, -1318,1728 -1318, -923, -977, 142, 669, 965, 280, -1318, 175, -35,1729 -257, -199, -156, 555, 651, -1318, 888, -1318, 1925, 1031,1730 -460, 803, -1318, -1318, 594, -1318, -228, -1318, 140, -1318,1731 -1318, -1318, -1268, 320, -1318, -1318, -1318, 1067, -1318, 6,1732 -131 8, -1318, -851, -86, -1303, -124, 2887, -1318, 2837, -1318,1733 812, -1318, -168, 585, -176, -173, -171, 4, -41, -39,1734 -3 6, 834, 47, 56, 79, -167, -162, -161, -159, -158,1735 - 273, -557, -498, -458, -543, -318, -539, -1318, -1318, -499,1736 986, 992, 993, 1485, 4182, -565, -577, -550, -542, -536,1737 -1318, -384, -672, -658, -654, -591, -211, -316, -1318, -1318,1738 152, 299, -75, -1318, 2880, 592, -631, -2001747 -1316, 3936, 1551, -1316, 1151, -1316, 26, 510, 0, -276, 1748 -1316, -1316, 361, -491, -948, -145, 4629, -1316, 604, 527, 1749 545, 549, 529, 1024, 1015, 1020, 1023, 1027, -1316, 879, 1750 -520, 4115, -823, -693, -915, -1316, -218, -739, -446, -1316, 1751 668, -1316, 376, -1132, -1316, -1316, 111, -1316, -1315, -817, 1752 220, -1316, -1316, -1316, -1316, 38, -1279, -1316, -1316, -1316, 1753 -1316, -1316, -1316, 293, -1124, 51, -1316, -273, -1316, 473, 1754 267, -1316, -1316, 138, -1316, -313, -1316, -1316, -1316, 524, 1755 -834, -1316, -1316, 3, -969, 24, 1783, -1316, -1316, -1316, 1756 -147, -1316, 39, 310, -194, 1097, 3596, -1316, -1316, 102, 1757 53, 308, -253, 1214, -1316, 1761, -1316, -1316, 180, 2112, 1758 -1316, 2452, 1373, -1316, -1316, -414, -443, 1163, 1166, 679, 1759 921, 76, -1316, -1316, 1156, 681, -462, -1316, -19, 224, 1760 -632, -1316, -1316, -954, -981, 1065, 1299, 1037, -24, -1316, 1761 1157, 183, 10, -200, -160, 645, 738, -1316, 979, -1316, 1762 2733, -28, -453, 890, -1316, -1316, 675, -1316, -228, -1316, 1763 196, -1316, -1316, -1316, -1268, 394, -1316, -1316, -1316, 1158, 1764 -1316, 90, -1316, -1316, -855, -85, -1303, -127, 2247, -1316, 1765 3418, -1316, 884, -1316, -166, 101, -170, -168, -163, 2, 1766 -39, -33, -32, 1083, 15, 37, 43, -148, -161, -155, 1767 -152, -143, -327, -463, -423, -415, -533, -277, -553, -1316, 1768 -1316, -484, 1064, 1070, 1072, 1481, 4293, -545, -541, -528, 1769 -476, -464, -1316, -429, -676, -671, -658, -586, -189, -239, 1770 -1316, -1316, 499, 256, 22, -1316, 3254, 45, -600, -232 1739 1771 }; 1740 1772 … … 1742 1774 positive, shift that token. If negative, reduce the rule which 1743 1775 number is the opposite. If YYTABLE_NINF, syntax error. */ 1744 #define YYTABLE_NINF -5 111776 #define YYTABLE_NINF -521 1745 1777 static const yytype_int16 yytable[] = 1746 1778 { 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, 1779 46, 507, 95, 146, 111, 378, 422, 447, 704, 147, 1780 148, 393, 965, 394, 923, 434, 401, 606, 395, 924, 1781 396, 699, 500, 759, 53, 112, 397, 110, 263, 398, 1782 173, 46, 925, 95, 402, 211, 861, 1084, 399, 60, 1783 909, 743, 46, 710, 46, 748, 158, 1143, 885, 835, 1784 1177, 47, 238, 67, 46, 53, 404, 149, 1083, 844, 1785 46, 836, 189, 46, 1394, 212, 46, 611, 222, 215, 1786 60, 843, 521, 1135, 837, 108, 1175, 1176, 984, 150, 1787 257, 1193, 47, 258, 67, 151, 211, 206, 810, 163, 1788 216, 393, 923, 394, 770, 1187, 401, 924, 395, 671, 1789 396, 94, 66, 1462, 46, 473, 397, 46, 276, 398, 1790 925, 1458, 419, 46, 402, 941, 208, 120, 399, 680, 1791 630, 140, 108, 30, 634, 256, 838, 684, 567, 211, 1792 477, 479, 94, 66, 1201, 119, 108, 198, 530, 832, 1793 108, 847, 146, 145, 46, 94, 158, 854, 147, 148, 1794 139, 598, 46, 1311, 163, -235, -235, 46, 495, 368, 1795 496, 185, 568, 738, 94, 277, 30, 94, 1205, 1477, 1796 30, 927, 966, 998, 338, 876, 877, 30, 774, 833, 1797 74, 46, 46, 1003, 158, 1458, 199, 834, 323, 211, 1798 433, 143, 895, 940, 405, 1203, 149, 46, 1014, 403, 1799 141, 1462, 674, 676, 669, 46, 1462, 158, 30, 1414, 1800 1415, 74, 1414, 1415, 46, 108, 1192, 46, 150, 437, 1801 -13, 1312, 146, -12, 151, -235, 1462, 211, 147, 148, 1802 752, 211, 530, 1462, 666, 248, 1256, 405, 30, 1210, 1803 1211, 435, 1546, 478, 485, 94, 413, 46, 405, 95, 1804 430, 502, 667, 780, 1177, 152, 104, 104, 94, 1091, 1805 741, 46, 46, 1257, 158, 473, 948, 704, 46, 1561, 1806 436, 53, 165, 832, 467, 46, 1013, 483, 1416, 405, 1807 323, 1425, 392, 185, 695, 473, 60, 104, 836, 167, 1808 521, 474, 30, 473, 521, 732, 1026, 521, 47, 177, 1809 67, 837, 697, 1177, 1145, 658, 94, 845, 1025, 603, 1810 1253, 113, 430, 833, 108, 518, 666, 211, 94, 173, 1811 1207, 834, 104, 197, 46, 1002, 368, 611, 1193, 1175, 1812 1176, 248, 325, 673, 667, 1338, 631, 465, 163, 678, 1813 635, -291, 108, 46, 46, 286, 478, 1503, 94, 66, 1814 803, 821, 1342, 838, 156, 108, 1005, 136, 137, 589, 1815 46, 852, 481, 603, 46, 1084, 832, 847, 569, 108, 1816 916, 136, 137, 968, 848, 225, 557, 558, 851, 226, 1817 1344, 1532, 230, 1534, 232, 600, 1083, 243, 338, 1545, 1818 46, 241, 906, 881, 870, 1172, 1173, 211, 208, 868, 1819 46, 530, 368, 871, 598, 844, 833, 246, 836, 1556, 1820 239, 559, 560, 254, 834, 530, 1560, -516, 46, 156, 1821 441, 837, 248, 861, 46, 94, 46, 74, 753, 1177, 1822 675, 677, 74, 598, 108, 754, 136, 234, 598, 462, 1823 108, 1126, 136, 137, 372, 605, 1071, 211, 1125, -10, 1824 46, 474, 381, 319, 1447, 1448, 1453, 1225, 1226, 1183, 1825 373, 530, 335, 1375, 384, 323, 323, 1487, 382, 260, 1826 235, 474, -441, 838, 46, 236, 744, -442, 969, 474, 1827 385, 745, 46, 272, 368, 1184, 46, 1397, 95, 886, 1828 46, 1193, 386, 1184, 580, 110, 405, 500, 1193, 1099, 1829 732, 185, 1141, 104, 1094, 1113, 747, 699, 387, 864, 1830 53, 424, -111, 865, 1024, 428, 225, 866, 274, 1401, 1831 393, 867, 394, 729, 761, 60, 401, 395, 208, 396, 1832 866, 899, 1252, -111, 1109, 397, 473, 47, 398, 67, 1833 758, 323, 326, 160, 402, 319, 450, 399, 338, 388, 1834 1193, 696, 1099, 705, 1163, 1165, 707, 775, 1373, 323, 1835 758, 275, 781, 1026, 611, 389, -111, -111, 211, 706, 1836 705, 897, 708, 366, 571, 732, 405, 428, 945, 707, 1837 490, 1007, -111, 327, 572, 821, 919, 94, 66, 814, 1838 46, 605, 74, -104, 1190, 920, 211, -104, -465, 863, 1839 523, 211, 46, 156, 46, 1190, 1246, 1198, 160, 467, 1840 1191, 328, 74, 887, 329, 878, 578, 874, 874, 874, 1841 74, 1318, 579, 46, 323, 330, 1493, 1024, -465, 894, 1842 -465, 1029, 1350, 1493, -465, 874, 1424, 1127, 600, 46, 1843 1352, 1353, 1354, 888, 1128, 645, 1327, 588, 36, 889, 1844 595, 704, 39, 46, 1329, 225, 46, 230, 1336, 40, 1845 41, 331, 1328, 1285, 1286, 1337, 74, 862, 367, 628, 1846 1330, 766, 600, 632, 1516, 821, 335, 436, 1037, 371, 1847 1521, 896, 379, 898, 829, 1542, 603, 1376, 211, 1390, 1848 46, 755, 46, 823, 604, 756, 555, 556, 762, 1088, 1849 1213, 1541, 211, 831, 429, 605, 1548, 383, 731, 874, 1850 338, 40, 41, 8, 9, 10, 11, 12, 391, 768, 1851 169, 405, 474, 1110, 1044, 1495, 502, 1496, 729, 769, 1852 319, 319, 1121, 550, 403, 455, 46, 46, 551, 552, 1853 30, 685, 104, 583, 225, 405, 900, 579, 405, 944, 1854 46, 2, 202, 4, 5, 6, 7, 420, 450, 722, 1855 421, 450, 666, 249, 474, 723, 429, 450, 33, 208, 1856 695, 931, 739, 931, 1071, 531, 532, 533, 740, 113, 1857 667, 1543, 1361, 208, 749, 338, 1362, 426, 697, 525, 1858 750, 922, 160, 696, 211, 949, 444, 603, 534, 874, 1859 535, 765, 536, 729, 490, 950, 319, 766, 490, 571, 1860 108, 405, 136, 137, 34, 910, 35, 912, 523, 572, 1861 598, 766, 523, 766, 319, 523, 561, 562, 1167, 46, 1862 2, 202, 4, 5, 6, 7, 335, 831, 605, 457, 1863 903, 46, 405, 8, 9, 10, 11, 12, 969, 923, 1864 460, 1244, 969, 969, 924, 1248, 821, 411, 224, 992, 1865 875, 875, 875, 74, 463, 993, 1004, 925, 1386, 1147, 1866 30, 405, 723, 1242, 464, 208, -3, 1443, 875, 579, 1867 431, 1369, 1370, 511, 1159, 1188, 405, 766, 766, 319, 1868 439, 108, 1069, 34, 1455, 35, 528, 529, 33, 486, 1869 819, 1372, 506, 595, 1377, 74, 1444, 766, 549, 1463, 1870 766, 1509, 1441, 731, 46, 766, 53, 1510, 1067, 1566, 1871 248, 325, 405, 1413, 286, 579, 1421, 823, 46, 514, 1872 831, 60, 860, 413, 662, 405, 46, 595, 1162, 768, 1873 603, 405, 605, 869, 529, 67, 1164, 455, 603, 769, 1874 455, 530, 875, -111, 46, -111, 455, 526, 522, -111, 1875 553, 554, 1114, 732, 483, 325, 405, 1514, 1455, 1334, 1876 563, 1230, 1461, 405, -111, -111, 564, 1465, 1293, 1294, 1877 529, 1296, 565, 1115, 211, 766, 997, 1300, 731, 126, 1878 1303, 127, 128, 129, 66, 845, 325, 603, 335, 2, 1879 202, 4, 5, 6, 7, 323, 569, 525, 1486, 325, 1880 405, 525, 1382, 1383, 525, -292, 1137, 1387, 993, 758, 1881 450, 1137, 8, 9, 10, 11, 12, 1441, 1442, 696, 1882 566, 1237, 8, 9, 10, 11, 12, 696, 1488, 1489, 1883 36, 334, 875, -438, 39, 587, 732, 1414, 1415, 30, 1884 490, 40, 41, 1069, 862, 605, 36, 1395, 590, 30, 1885 39, 1395, 34, 640, 35, 436, 1215, 40, 41, 1137, 1886 659, 1528, 74, 335, 53, 660, 42, 33, 661, 1067, 1887 787, 788, 1202, 1204, 1206, 663, 144, 33, 664, 474, 1888 795, 796, 736, 1555, 1304, 1305, 1306, 63, 114, 1555, 1889 789, 790, 737, 67, 665, 682, 791, 792, 793, 794, 1890 1555, 1343, 1345, 1346, 1555, 668, 46, 670, 253, 711, 1891 36, 1099, 170, 171, 39, 688, 713, 159, 63, -239, 1892 1006, 40, 41, 36, 819, 179, 180, 39, 751, 724, 1893 763, 157, 767, 190, 40, 41, 213, 771, 104, 223, 1894 824, -293, 1195, 1420, 784, 785, 786, 826, 8, 9, 1895 10, 11, 12, 217, 828, 1478, 211, 839, -12, 690, 1896 36, 405, 179, 180, 39, 883, 522, 691, 891, 692, 1897 522, 40, 41, 522, 884, 30, 138, 911, 913, 918, 1898 36, 729, 179, 180, 39, 914, 691, 529, 215, 939, 1899 255, 40, 41, -415, -520, 172, 602, 953, 603, 455, 1900 960, 740, 46, 33, 962, 104, 604, 967, 206, 216, 1901 1069, 973, 974, 976, 819, 977, 181, 159, 450, 978, 1902 74, 979, 988, 999, 338, 1000, 182, 237, 240, 1001, 1903 369, 324, 1114, 758, 53, 1015, 1067, 208, 1016, 255, 1904 345, 1017, 1018, 1019, 1174, 172, 1020, 1085, 172, 60, 1905 1021, 1032, -403, 1115, 211, 159, -402, 1087, 490, 1116, 1906 319, 1095, 1046, 67, 729, 1096, 1097, 209, 1098, 400, 1907 1104, 1103, 1137, 1137, 1137, 1102, 1105, 228, 159, 1106, 1908 1112, 1122, 766, 1123, 418, 1124, 982, 423, 425, 1136, 1909 438, 1129, 157, 172, 1133, 1157, 104, 1554, 1439, 1178, 1910 1179, 1180, 1181, 1196, 1069, 1182, 435, 1197, 1199, 860, 1911 1217, 53, 66, 442, 1200, 1208, 1212, 445, 209, 446, 1912 529, 1218, -14, 1223, 1216, 1114, 474, -3, 461, 908, 1913 1067, 1228, 1234, 1238, 63, 436, 1245, 1243, 915, 475, 1914 67, 1247, 917, 495, 1250, 393, 1115, 394, 1254, 482, 1915 401, 1258, 395, 1261, 396, 172, 1263, 425, 1438, 1069, 1916 397, 209, 1069, 398, 1265, 983, 731, 1266, 402, -294, 1917 1267, 1268, 399, 1269, 666, 1271, 8, 9, 10, 11, 1918 12, 1278, 46, 46, 1287, 1067, 459, 1288, 1067, 1195, 1919 74, 1295, 667, 1313, 450, 819, 1298, 369, 1299, 1301, 1920 1302, 1325, 1310, 30, 1317, 1527, 1335, 455, 1069, 172, 1921 1331, 529, 1339, 1069, 1333, 1341, 172, 1340, 1137, 1137, 1922 1347, 209, 1348, 1349, 255, 1351, 210, 596, 1357, 1358, 1923 1114, 33, 1359, 624, 1067, 1360, 1367, 1371, 1368, 1067, 1924 1378, 104, 1379, 1306, 1069, 1385, 629, 1388, 1389, 1391, 1925 629, 1115, 1398, 255, 1408, 1427, 1401, 1409, 1479, 209, 1926 -404, 1412, 1423, 209, 1429, 1431, 104, 74, 1432, 1440, 1927 1067, 1449, 1433, 369, 53, 1450, 146, 210, 1434, 501, 1928 1435, 53, 147, 148, 172, 104, 1445, 1451, 1452, 474, 1929 46, 1362, 1454, 1459, 1464, 1468, 474, 1364, 1466, 475, 1930 1470, 172, 1472, 67, 1474, 172, 1069, 1476, 1481, 1483, 1931 67, 1069, 335, 1482, 345, 46, 46, 1529, 158, 475, 1932 210, 720, 646, 1494, 1504, 1506, 1537, 475, 1508, 1069, 1933 1512, 1069, 1067, 53, 1513, 1069, 1520, 1067, 1069, 1116, 1934 46, 1535, 368, 104, 1536, 1540, 1069, 1549, 474, 209, 1935 1069, 1547, 1195, 716, 1551, 1067, 425, 1067, 1557, 1195, 1936 926, 1067, 67, 1564, 1067, 1565, 1214, 172, 1315, 798, 1937 323, 730, 1067, 63, 1093, 799, 1067, 797, 104, 800, 1938 210, 425, 926, 455, 801, 425, 1316, 1426, 1567, 1515, 1939 1381, 164, 1249, 168, 1399, 1497, 174, 175, 176, 1222, 1940 178, 686, 709, 529, 687, 1100, 715, 459, 932, 1101, 1941 816, 1195, 1045, 255, 345, 229, 481, 1132, 210, 890, 1942 955, 1111, 210, 1326, 963, 806, 0, 244, 245, 209, 1943 74, 807, 1116, 808, 734, 0, 0, 74, 0, 0, 1944 742, 0, 746, 0, 511, 0, 209, 8, 9, 10, 1945 11, 12, 0, 0, 0, 0, 407, 0, 36, 809, 1946 179, 180, 39, 415, 36, 0, 179, 180, 39, 40, 1947 41, 996, 0, 0, 30, 40, 41, 629, 822, 209, 1948 596, 0, 0, 104, 0, 0, 0, 0, 0, 74, 1949 0, 841, 0, 0, 690, 0, 405, 0, 0, 0, 1950 261, 0, 33, 0, 692, 0, 104, 0, 210, 596, 1951 262, 0, 0, 104, 596, 0, 0, 0, 0, 1209, 1952 629, 0, 0, 345, 345, 345, 0, 720, 0, 0, 1953 0, 172, 0, 0, 0, 407, 36, 1116, 170, 171, 1954 39, 345, 0, 949, 0, 603, 0, 40, 41, 1039, 1955 0, 72, 0, 950, 0, 721, 0, 0, 0, 716, 1956 0, 0, 0, 529, 172, 104, 0, 0, 0, 1500, 1957 475, 1500, 367, 54, 54, 255, 730, 0, 0, 928, 1958 172, 0, 72, 0, 0, 0, 0, 0, 210, 0, 1959 577, 0, 882, 0, 172, 0, 0, 0, 581, 0, 1960 209, 584, 0, 0, 54, 1500, 0, 1500, 0, 0, 1961 0, 0, 475, 0, 0, 345, 0, 218, 0, 36, 1962 0, 179, 180, 39, 954, 0, 0, 425, 209, 0, 1963 40, 41, 0, 209, 0, 319, 54, 926, 210, 54, 1964 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 1965 255, 730, 935, 0, 0, 1525, 981, 405, 938, 0, 1966 720, 0, 0, 407, 0, 1526, 1144, 415, 0, 0, 1967 720, 0, 0, 547, 0, 0, 8, 9, 10, 11, 1968 12, 594, 601, 0, 0, 720, 36, 0, 170, 171, 1969 39, 172, 716, 625, 626, 0, 0, 40, 41, 0, 1970 0, 0, 716, 30, 348, 345, 0, 629, 0, 0, 1971 1012, 629, 822, 0, 0, 0, 1039, 716, 0, 0, 1972 209, 0, 371, 0, 0, 0, 343, 1023, 0, 0, 1973 0, 33, 0, 0, 209, 0, 36, 0, 179, 180, 1974 39, 0, 0, 0, 0, 0, 0, 40, 41, 0, 1975 0, 0, 407, 0, 501, 0, 0, 0, 1501, 210, 1976 1501, 721, 0, 0, 1380, 0, 0, 0, 0, 0, 1977 0, 0, 602, 0, 603, 0, 0, 443, 0, 63, 1978 0, 0, 604, 0, 0, 0, 0, 210, 0, 0, 1979 54, 0, 210, 0, 1501, 926, 1501, 0, 72, 0, 1980 0, 629, 0, 72, 0, 8, 9, 10, 11, 12, 1981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1982 54, 0, 0, 0, 0, 0, 209, 0, 0, 0, 1983 0, 646, 30, 0, 0, 0, 0, 1108, 1049, 0, 1984 0, 0, 577, 577, 0, 425, 114, 0, 0, 0, 1985 0, 0, 926, 926, 0, 172, 0, 0, 0, 0, 1986 33, 0, 345, 0, 0, 36, 0, 179, 180, 39, 1987 0, 0, 0, 0, 0, 0, 40, 41, 0, 210, 1988 0, 0, 720, 720, 0, 0, 0, 0, 0, 0, 1989 0, 0, 0, 210, 721, 0, 596, 218, 0, 0, 1990 0, 690, 75, 405, 721, 0, 0, 0, 0, 423, 1991 0, 692, 0, 0, 716, 716, 0, 345, 345, 721, 1992 0, 0, 0, 0, 0, 0, 1498, 0, 1502, 646, 1993 901, 0, 0, 75, 904, 0, 0, 1194, 0, 0, 1994 0, 0, 0, 0, 720, 720, 0, 0, 8, 9, 1995 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 1996 0, 0, 1531, 72, 1533, 0, 0, 407, 219, 8, 1997 9, 10, 11, 12, 0, 30, 716, 716, 348, 0, 1998 0, 0, 629, 72, 0, 210, 0, 0, 0, 0, 1999 0, 72, 0, 0, 0, 0, 30, 0, 0, 0, 2000 343, 0, 0, 33, 0, 0, 0, 1562, 36, 1563, 2001 179, 180, 39, 0, 0, 0, 209, 348, 0, 40, 2002 41, 0, 1570, 1571, 33, 0, 0, 0, 0, 36, 2003 0, 0, 1049, 39, 0, 348, 0, 72, 0, 730, 2004 40, 41, 0, 0, 1525, 0, 405, 0, 0, 0, 2005 0, 0, 0, 0, 1526, 350, 0, 0, 942, 54, 2006 943, 0, 121, 124, 125, 42, 926, 946, 947, 0, 2007 0, 0, 952, 0, 0, 144, 0, 0, 348, 0, 2008 577, 0, 1292, 926, 957, 0, 0, 0, 1323, 961, 2009 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 2010 343, 0, 0, 0, 0, 0, 0, 63, 0, 0, 2011 0, 0, 0, 0, 989, 0, 721, 721, 0, 720, 2012 716, 0, 730, 0, 0, 0, 114, 720, 720, 720, 2013 0, 0, 0, 250, 0, 251, 0, 1291, 0, 0, 2014 0, 0, 348, 0, 0, 0, 0, 0, 0, 75, 2015 0, 716, 0, 172, 75, 0, 926, 926, 594, 716, 2016 716, 716, 0, 0, 343, 0, 0, 0, 0, 0, 2017 345, 345, 0, 0, 0, 210, 720, 0, 721, 721, 2018 0, 0, 0, 0, 1194, 0, 0, 348, 348, 348, 2019 0, 0, 0, 407, 0, 0, 0, 0, 209, 0, 2020 0, 0, 0, 0, 0, 348, 0, 0, 716, 343, 2021 343, 343, 0, 0, 390, 1033, 1034, 1035, 1036, 114, 2022 1038, 0, 0, 348, 409, 410, 0, 343, 0, 414, 2023 0, 416, 417, 0, 72, 0, 1086, 0, 0, 0, 2024 348, 0, 77, 0, 0, 0, 0, 0, 219, 0, 2025 1092, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2026 17, 18, 19, 20, 21, 22, 23, 24, -295, 0, 2027 1148, 0, 0, 77, 0, 0, 72, 0, 30, 348, 2028 0, 0, 0, 0, 0, 0, 1160, 0, 0, 1107, 2029 0, 0, 0, 0, 0, 0, 209, 345, 0, 0, 2030 0, 343, 0, 0, 0, 0, 33, 0, 220, 0, 2031 0, 0, 0, 0, 75, 348, 0, -295, 0, 0, 2032 0, 0, 1324, 0, 114, 0, 0, 0, 1134, 350, 2033 0, 0, 0, 172, 75, 1142, 0, 0, 0, 1146, 2034 0, 0, 75, 0, 1150, 0, 1151, 1194, 0, 0, 2035 1153, 1154, 1155, 721, 1194, 1158, 348, 210, 0, 0, 2036 0, 721, 721, 721, 1170, 0, 348, 1231, 350, 348, 2037 0, 0, 0, 0, 218, 0, 348, 0, 0, 0, 2038 0, 348, 1185, 1186, 0, 0, 350, 0, 75, 0, 2039 0, 343, 0, 0, 0, 351, 0, 0, 343, 0, 2040 0, 0, 0, 0, 0, 0, 1194, 0, 0, 0, 2041 721, 0, 1219, 1550, 0, 1221, 0, 0, 0, 0, 1984 2042 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, 2081 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, 2043 0, 8, 9, 10, 11, 12, 0, 0, 0, 0, 2044 0, 0, 0, 72, 0, 8, 9, 10, 11, 12, 2045 0, 0, 0, 0, 1236, 210, 0, 0, 30, 0, 2046 1240, 1241, 0, 0, 0, 54, 0, 0, 0, 0, 2047 0, 1251, 30, 0, 0, 0, 1255, 0, 0, 1259, 2048 0, 1260, 0, 0, 1262, 0, 33, 0, 0, 77, 2049 0, 36, 0, 350, 77, 39, 0, 1270, 0, 0, 2050 33, 0, 40, 41, 0, 36, 0, 179, 180, 39, 2051 1277, 0, 1279, 1280, 1281, 1282, 40, 41, 0, 0, 2052 0, 0, 0, 84, 0, 0, 348, 736, 1289, 0, 2053 1290, 0, 54, 0, 168, 0, 0, 737, 350, 350, 2054 350, 181, 0, 0, 0, 0, 0, 0, 343, 0, 2055 0, 182, 0, 0, 84, 0, 350, 0, 0, 0, 2056 0, 0, 0, 0, 0, 0, 1319, 1320, 0, 0, 2057 0, 0, 0, 0, 350, 0, 0, 0, 348, 348, 2058 0, 348, 348, 0, 0, 75, 0, 0, 220, 221, 2059 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, 2060 0, 72, 0, 343, 343, 0, 0, 0, 0, 0, 2061 0, 0, 811, 812, 0, 0, 1355, 1356, 0, 0, 2062 0, 0, 0, 54, 0, 0, 1366, 75, 0, 0, 2063 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2064 348, 348, 846, 0, 0, 849, 850, 0, 853, 0, 2065 855, 856, 0, 0, 77, 857, 858, 0, 0, 0, 2066 0, 0, 0, 0, 0, 0, 350, 0, 0, 351, 2067 0, 0, 0, 0, 77, 0, 358, 0, 0, 1400, 2068 0, 0, 77, 0, 0, 8, 9, 10, 11, 12, 2069 0, 1404, 0, 1405, 1406, 1407, 0, 0, 0, 0, 2070 0, 0, 0, 348, 0, 1411, 0, 350, 351, 0, 2071 0, 0, 30, 0, 1422, 0, 0, 350, 0, 0, 2072 350, 0, 0, 0, 0, 219, 351, 350, 77, 0, 2073 0, 1436, 350, 0, 0, 0, 0, 0, 933, 934, 2074 33, 0, 0, 0, 936, 36, 218, 179, 180, 39, 2075 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, 2076 0, 0, 0, 0, 0, 0, 0, 54, 54, 351, 2077 84, 72, 0, 0, 0, 84, 0, 0, 0, 0, 2078 0, 261, 0, 0, 348, 0, 348, 0, 1484, 1485, 2079 0, 262, 0, 54, 75, 0, 0, 0, 0, 0, 2080 0, 1490, 0, 0, 0, 0, 0, 0, 1490, 0, 2081 0, 0, 54, 0, 0, 348, 0, 0, 0, 0, 2082 0, 0, 0, 348, 348, 348, 0, 0, 0, 0, 2083 0, 0, 0, 351, 348, 348, 0, 0, 0, 0, 2084 1524, 0, 0, 0, 1530, 0, 0, 0, 72, 0, 2085 0, 0, 0, 0, 0, 0, 343, 343, 0, 0, 2086 0, 0, 0, 0, 0, 54, 0, 0, 0, 221, 2087 54, 0, 348, 1552, 0, 1553, 0, 350, 351, 351, 2088 351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2089 0, 0, 0, 0, 0, 0, 351, 0, 0, 0, 2090 0, 0, 0, 1568, 1569, 54, 0, 0, 0, 0, 2091 0, 1572, 1573, 0, 351, 0, 0, 0, 0, 0, 2092 0, 0, 0, 0, 0, 77, 0, 0, 0, 350, 2093 350, 351, 350, 350, 0, 84, 0, 0, 0, 0, 2095 2094 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, 2095 358, 0, 75, 0, 0, 84, 0, 0, 0, 0, 2096 0, 348, 0, 84, 0, 0, 0, 77, 0, 0, 2097 351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2098 0, 0, 0, 343, 0, 0, 0, 0, 0, 358, 2099 0, 350, 350, 0, 0, 0, 0, 0, 0, 0, 2100 0, 0, 0, 0, 0, 0, 351, 358, 0, 84, 2101 54, 72, 0, 0, 0, 0, 0, 0, 72, 0, 2099 2102 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, 2103 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 2104 54, 0, 0, 0, 0, 0, 0, 351, 0, 0, 2105 358, 0, 0, 0, 350, 0, 0, 351, 0, 0, 2106 351, 0, 0, 0, 0, 220, 0, 351, 0, 0, 2107 72, 0, 351, 0, 0, 0, 0, 0, 0, 0, 2108 0, 0, 0, 0, 0, 0, 0, 0, 162, 0, 2109 0, 0, 54, 0, 0, 0, 0, 219, 0, 0, 2110 0, 0, 0, 0, 0, 0, 0, 214, 0, 0, 2111 0, 0, 0, 0, 358, 0, 0, 0, 0, 0, 2112 0, 0, 75, 0, 0, 0, 0, 0, 1227, 0, 2113 0, 0, 0, 0, 77, 350, 0, 350, 0, 0, 2104 2114 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, 2115 0, 0, 0, 162, 0, 0, 0, 0, 268, 358, 2116 358, 358, 0, 0, 0, 0, 350, 0, 0, 0, 2117 0, 0, 0, 0, 350, 350, 350, 358, 0, 0, 2118 0, 0, 0, 0, 0, 350, 350, 162, 0, 0, 2119 0, 0, 0, 0, 0, 358, 0, 364, 0, 75, 2120 0, 370, 0, 0, 0, 0, 84, 0, 0, 0, 2121 0, 0, 358, 0, 0, 0, 0, 351, 0, 0, 2122 0, 0, 0, 350, 0, 0, 0, 0, 0, 0, 2123 0, 0, 0, 123, 123, 123, 0, 0, 0, 0, 2124 278, 0, 279, 0, 0, 0, 0, 0, 84, 162, 2125 0, 358, 0, 1314, 0, 0, 0, 0, 0, 0, 2126 0, 214, 0, 0, 0, 0, 0, 0, 280, 351, 2127 351, 0, 351, 351, 281, 0, 0, 0, 282, 162, 2128 456, 283, 284, 285, 286, 40, 41, 358, 287, 288, 2129 0, 0, 77, 0, 0, 0, 289, 0, 0, 0, 2130 0, 0, 0, 370, 123, 0, 123, 0, 0, 0, 2131 508, 162, 350, 0, 0, 0, 0, 0, 0, 292, 2132 376, 294, 295, 296, 297, 0, 0, 0, 358, 0, 2133 271, 351, 351, 0, 456, 0, 0, 162, 358, 0, 2134 0, 358, 0, 0, 0, 0, 221, 0, 358, 0, 2135 0, 0, 0, 358, 0, 0, 0, 0, 0, 0, 2136 0, 0, 75, 278, 0, 279, 0, 0, 0, 75, 2137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2138 0, 0, 0, 0, 599, 123, 0, 0, 0, 623, 2139 0, 280, 0, 123, 351, 123, 123, 281, 0, 0, 2140 123, 282, 123, 123, 283, 284, 285, 286, 40, 41, 2141 0, 287, 288, 0, 0, 84, 0, 0, 0, 289, 2142 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 2143 0, 0, 0, 290, 0, 374, 0, 220, 375, 0, 2144 0, 0, 292, 376, 294, 295, 296, 297, 0, 207, 2145 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 2146 0, 231, 77, 233, 162, 162, 0, 0, 0, 0, 2147 242, 364, 123, 0, 0, 351, 0, 351, 0, 0, 2148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2149 0, 0, 456, 0, 0, 456, 0, 0, 358, 0, 2150 207, 456, 231, 233, 242, 0, 351, 0, 0, 0, 2151 0, 0, 0, 0, 351, 351, 351, 1022, 0, 0, 2152 8, 9, 10, 11, 12, 351, 351, 0, 733, 0, 2153 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 2154 162, 0, 0, 207, 0, 0, 278, 30, 279, 0, 2155 358, 358, 456, 358, 358, 0, 456, 0, 162, 456, 2156 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, 2157 0, 364, 0, 84, 280, 33, 0, 0, 0, 0, 2158 281, 0, 0, 0, 282, 0, 0, 283, 284, 285, 2159 286, 40, 41, 0, 287, 288, 0, 0, 0, 0, 2160 0, 0, 289, 207, 0, 231, 233, 242, 0, 0, 2161 0, 0, 358, 358, 0, 0, 290, 0, 374, 0, 2162 0, 0, 0, 162, 0, 292, 817, 294, 295, 296, 2163 297, 0, 0, 0, 0, 364, 0, 599, 0, 0, 2164 827, 207, 0, 0, 0, 207, 0, 0, 0, 0, 2165 0, 0, 351, 0, 0, 0, 0, 0, 0, 0, 2166 0, 499, 0, 0, 0, 0, 599, 0, 0, 0, 2167 0, 599, 0, 0, 0, 358, 0, 0, 0, 0, 2168 364, 364, 364, 0, 0, 0, 0, 0, 0, 0, 2169 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, 2170 0, 0, 77, 0, 0, 0, 0, 0, 0, 77, 2171 207, 0, 0, 0, 0, 0, 0, 0, 221, 0, 2172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2173 0, 207, 0, 733, 0, 0, 231, 233, 0, 0, 2174 0, 0, 0, 84, 242, 0, 0, 0, 0, 0, 2175 0, 0, 0, 0, 456, 0, 358, 0, 358, 0, 2176 0, 77, 0, 0, 0, 0, 0, 0, 0, 153, 2177 0, 0, 364, 0, 951, 0, 0, 0, 0, 0, 2178 0, 0, 0, 123, 123, 0, 207, 358, 0, 0, 2179 0, 0, 0, 0, 0, 358, 358, 358, 0, 0, 2180 0, 0, 0, 0, 207, 0, 358, 358, 733, 207, 2181 0, 207, 0, 123, 0, 247, 123, 123, 0, 123, 2182 84, 123, 123, 0, 0, 252, 123, 123, 207, 0, 2183 0, 207, 207, 0, 0, 0, 0, 0, 0, 0, 2184 0, 0, 0, 278, 358, 279, 0, 207, 0, 0, 2185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2186 0, 207, 364, 0, 0, 0, 623, 0, 207, 364, 2187 0, 280, 0, 0, 0, 0, 0, 281, 0, 0, 2188 153, 282, 0, 0, 283, 284, 285, 286, 40, 41, 2189 0, 287, 288, 380, 0, 0, 0, 0, 0, 289, 2190 0, 0, 0, 0, 123, 0, 0, 0, 0, 123, 2191 123, 0, 0, 290, 0, 123, 412, 0, 0, 0, 2192 0, 0, 292, 376, 294, 295, 296, 297, 0, 0, 2193 427, 0, 0, 358, 0, 0, 0, 0, 0, 432, 2194 0, 0, 0, 0, 0, 0, 0, 0, 0, 440, 2195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2196 0, 0, 456, 0, 0, 0, 0, 0, 0, 0, 2197 0, 0, 0, 0, 466, 0, 0, 0, 0, 476, 2198 0, 0, 207, 84, 0, 0, 0, 0, 0, 0, 2199 84, 0, 484, 0, 0, 0, 0, 0, 494, 0, 2200 498, 0, 0, 0, 162, 0, 0, 0, 0, 0, 2201 207, 0, 0, 0, 0, 207, 0, 527, 0, 364, 2202 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2203 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2204 24, -295, 84, 25, 26, 27, 0, 0, 317, 0, 2205 0, 30, 0, 599, 0, 0, 0, 0, 341, 0, 2206 586, 0, 0, 0, 0, 591, 0, 0, 0, 0, 2207 377, 0, 0, 0, 364, 364, 0, 0, 0, 33, 2208 0, 0, 0, 0, 36, 0, 332, 333, 39, 0, 2209 -295, 0, 0, 637, 0, 40, 41, 638, 639, 0, 2210 641, 0, 207, 0, 0, 0, 652, 653, 0, 654, 2211 655, 0, 656, 0, 657, 0, 207, 0, 0, 0, 2212 636, 0, 334, 0, 0, 0, 0, 0, 0, 0, 2213 627, 586, 0, 0, 0, 0, 499, 0, 456, 672, 2214 317, 0, 0, 1168, 0, 0, 8, 9, 10, 11, 2215 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2216 0, 0, 0, 0, 683, 480, 0, 0, 0, 0, 2217 0, 0, 278, 30, 279, 689, 8, 9, 10, 11, 2218 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2219 22, 23, 24, 0, 0, 207, 733, 0, 725, 0, 2220 280, 33, 0, 30, 728, 0, 281, 0, 207, 466, 2221 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2222 287, 288, 0, 0, 0, 0, 0, 207, 289, 0, 2223 0, 33, 0, 0, 0, 337, 359, 0, 214, 0, 2224 0, 0, 290, 0, 374, 764, 0, 0, 0, 0, 2225 0, 292, 1169, 294, 295, 296, 297, 0, 0, 0, 2226 0, 779, 0, 0, 0, 0, 0, 0, 408, 0, 2227 0, 0, 0, 0, 0, 408, 0, 0, 0, 733, 2228 377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2229 0, 0, 0, 0, 0, 0, 0, 805, 0, 123, 2230 0, 0, 0, 0, 0, 0, 815, 278, 0, 279, 2231 0, 0, 0, 818, 207, 0, 0, 0, 825, 0, 2232 0, 0, 0, 0, 0, 0, 0, 364, 364, 840, 2233 0, 0, 0, 0, 0, 280, 214, 0, 0, 0, 2234 207, 281, 0, 0, 0, 282, 0, 408, 283, 284, 2235 285, 286, 40, 41, 0, 287, 288, 0, 0, 0, 2236 0, 0, 0, 289, 0, 0, 0, 207, 0, 0, 2237 880, 0, 0, 0, 0, 0, 0, 290, 0, 374, 2238 0, 727, 0, 0, 0, 802, 292, 376, 294, 295, 2239 296, 297, 0, 0, 0, 0, 0, 0, 207, 0, 2240 0, 0, 408, 0, 0, 825, 0, 0, 0, 207, 2241 408, 582, 0, 408, 585, 0, 0, 0, 0, 760, 2242 0, 0, 0, 359, 123, 0, 0, 615, 0, 0, 2243 0, 0, 773, 0, 0, 0, 0, 0, 0, 760, 2244 0, 0, 0, 0, 0, 0, 633, 0, 0, 337, 2245 0, 0, 782, 783, 364, 0, 0, 0, 0, 0, 2246 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2247 958, 959, 0, 0, 804, 408, 0, 0, 0, 408, 2248 0, 0, 0, 975, 813, 0, 0, 0, 0, 0, 2249 0, 341, 0, 0, 207, 0, 773, 0, 0, 0, 2250 990, 0, 991, 0, 0, 0, 995, 0, 0, 0, 2251 359, 0, 0, 456, 0, 456, 0, 0, 0, 0, 2252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2253 0, 0, 0, 408, 0, 0, 0, 0, 0, 0, 2254 0, 0, 0, 0, 0, 0, 879, 0, 0, 456, 2255 0, 456, 0, 0, 377, 0, 0, 0, 0, 0, 2256 0, 0, 0, 0, 408, 0, 0, 359, 0, 0, 2257 0, 1027, 0, 0, 0, 0, 0, 0, 1028, 162, 2258 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2259 0, 1030, 0, 1031, 341, 0, 0, 0, 0, 0, 2260 0, 0, 0, 0, 0, 0, 408, 1043, 0, 337, 2261 359, 0, 0, 0, 1047, 0, 0, 0, 0, 0, 2262 0, 0, 0, 0, 0, 0, 1089, 0, 0, 1090, 2263 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2264 0, 0, 0, 0, 0, 0, 0, 591, 0, 0, 2265 0, 0, 0, 0, 408, 408, 0, 0, 0, 0, 2266 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 2267 0, 980, 0, 820, 359, 0, 359, 985, 207, 0, 2268 0, 0, 0, 0, 994, 615, 0, 615, 615, 0, 2269 0, 0, 0, 0, 615, 0, 0, 509, 510, 513, 2270 0, 0, 0, 0, 859, 359, 516, 517, 0, 0, 2271 359, 510, 510, 0, 0, 0, 0, 0, 0, 359, 2272 359, 359, 0, 510, 0, 0, 0, 1010, 1011, 0, 2273 341, 0, 0, 0, 1152, 0, 0, 359, 0, 0, 2274 0, 0, 408, 902, 0, 341, 408, 905, 0, 0, 2275 0, 0, 0, 907, 0, 0, 0, 0, 0, 510, 2276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2277 0, 337, 359, 408, 0, 408, 0, 0, 0, 408, 2278 0, 0, 0, 0, 0, 1041, 0, 0, 0, 377, 2279 0, 527, 0, 0, 0, 510, 0, 0, 0, 0, 2280 1220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2281 0, 359, 615, 8, 9, 10, 11, 12, 13, 14, 2109 2282 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 1 252, 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,2283 1233, 0, 25, 26, 27, 1235, 0, 0, 0, 0, 2284 30, 448, 0, 1239, 0, 0, 337, 359, 0, 0, 2285 0, 408, 408, 0, 0, 0, 0, 0, 0, 0, 2286 0, 0, 0, 0, 0, 317, 0, 0, 33, 0, 2287 0, 0, 0, 1264, 0, 37, 38, 0, 0, 0, 2288 1130, 1131, 0, 0, 0, 1272, 0, 377, 1273, 0, 2289 1274, 0, 408, 985, 0, 0, 1140, 0, 760, 0, 2290 0, 359, 0, 0, 1283, 1284, 0, 820, 359, 0, 2291 0, 449, 615, 0, 615, 703, 0, 1156, 0, 109, 2292 0, 0, 0, 0, 615, 0, 1297, 0, 1171, 0, 2293 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 2121 2294 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, 2295 377, 0, 1189, 0, 0, 0, 1321, 0, 0, 0, 2296 0, 0, 0, 0, 0, 0, 0, 985, 985, 510, 2297 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 2298 510, 510, 510, 510, 510, 510, 510, 0, 0, 0, 2299 0, 0, 1224, 0, 0, 0, 0, 820, 0, 0, 2300 0, 0, 0, 0, 0, 408, 0, 0, 0, 0, 2301 0, 408, 510, 0, 0, 0, 0, 0, 0, 408, 2147 2302 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, 2303 0, 0, 615, 615, 0, 0, 0, 0, 985, 0, 2155 2304 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, 2305 0, 0, 0, 1392, 0, 1393, 0, 879, 359, 0, 2306 0, 0, 0, 0, 408, 0, 0, 0, 1402, 0, 2307 1403, 0, 1275, 1276, 0, 0, 0, 0, 0, 0, 2308 0, 0, 408, 1149, 0, 0, 0, 0, 1410, 0, 2309 0, 0, 359, 0, 0, 0, 0, 0, 408, 1161, 2310 0, 615, 615, 1166, 1428, 1430, 0, 0, 0, 0, 2311 510, 0, 0, 359, 359, 0, 0, 1437, 0, 0, 2312 1239, 0, 760, 0, 0, 278, 0, 279, 0, 0, 2313 0, 0, 510, 0, 0, 0, 0, 0, 0, 0, 2314 0, 0, 1460, 0, 0, 510, 0, 0, 0, 0, 2315 0, 1467, 0, 280, 1469, 985, 1471, 1473, 1475, 281, 2316 0, 0, 0, 282, 0, 0, 283, 284, 285, 286, 2317 40, 41, 0, 287, 288, 0, 0, 0, 820, 408, 2318 1232, 289, 0, 0, 0, 0, 0, 0, 0, 0, 2319 510, 615, 0, 0, 0, 290, 0, 374, 0, 1505, 2320 0, 1507, 772, 1239, 292, 376, 294, 295, 296, 297, 2321 0, 0, 0, 0, 0, 0, 1384, 0, 1519, 0, 2322 0, 510, 0, 0, 0, 0, 0, 0, 0, 0, 2323 0, 0, 0, 0, 0, 359, 510, 0, 0, 0, 2324 0, 0, 0, 0, 0, 0, 1, 2, 202, 4, 2189 2325 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2190 2326 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, 2327 0, 0, 25, 26, 27, 28, 0, 0, 29, 278, 2328 30, 1050, 1051, 0, 1052, 0, 0, 1053, 1054, 1055, 2329 1056, 1057, 1058, 1059, 1060, 337, 0, 0, 1061, 0, 2330 0, 0, 1062, 1063, 0, 32, 1446, 280, 33, 0, 2331 34, 0, 35, 1064, 0, 37, 38, 282, 359, 0, 2332 283, 284, 285, 286, 40, 41, 0, 287, 288, 0, 2333 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 2334 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 2335 0, 1065, 0, 0, 167, 278, 0, 279, 292, 293, 2336 294, 295, 296, 297, 0, 0, 359, 359, 1066, 0, 2337 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 2338 0, 0, 0, 280, 0, 0, 0, 510, 1511, 642, 2339 0, 136, 137, 282, 0, 0, 283, 643, 285, 286, 2340 40, 41, 0, 287, 288, 0, 0, 0, 0, 0, 2341 0, 289, 0, 0, 0, 0, 510, 0, 0, 0, 2342 0, 0, 0, 0, 0, 290, 0, 644, 510, 645, 2343 375, 0, 0, 0, 292, 376, 294, 295, 296, 297, 2344 317, 0, 0, 0, 1, 2, 202, 4, 5, 6, 2345 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2346 17, 18, 19, 20, 21, 22, 23, 24, 0, 510, 2347 25, 26, 27, 28, 0, 0, 29, 278, 30, 279, 2193 2348 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 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, 2250 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, 2271 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2272 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, 2278 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, 2286 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, 2349 0, 0, 0, 359, 0, 0, 0, 0, 0, 0, 2350 0, 0, 0, 0, 0, 280, 33, 0, 34, 0, 2351 35, 281, 0, 37, 38, 282, 0, 0, 283, 284, 2352 285, 286, 40, 41, 0, 287, 288, 0, 0, 0, 2353 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 2354 0, 0, 0, 0, 0, 510, 0, 290, 278, 1065, 2355 279, 0, 0, 0, 0, 0, 292, 293, 294, 295, 2356 296, 297, 0, 0, 0, 0, 0, 0, 0, 0, 2357 -128, 0, 0, 0, 0, 0, 280, 0, 0, 0, 2358 0, 0, 281, 408, 0, 0, 282, 0, 510, 283, 2359 284, 285, 286, 40, 41, 0, 287, 288, 0, 0, 2360 0, 0, 510, 510, 289, 0, 0, 0, 408, 408, 2361 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 2362 374, 0, 0, 982, 0, 0, 0, 292, 376, 294, 2363 295, 296, 297, 408, 1, 2, 202, 4, 5, 6, 2335 2364 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2336 2365 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2337 2366 25, 26, 27, 28, 0, 0, 29, 278, 30, 279, 2338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2339 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, 2367 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 2368 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2369 0, 25, 26, 27, 0, 280, 33, 0, 34, 30, 2370 35, 281, 0, 37, 38, 282, 0, 0, 283, 284, 2371 285, 286, 40, 41, 0, 287, 288, 0, 0, 0, 2372 0, 0, 0, 289, 0, 0, 0, 33, 0, 0, 2373 0, 0, 0, 0, 203, 38, 0, 290, 0, 43, 2374 0, 0, 0, 0, 0, 0, 292, 293, 294, 295, 2375 296, 297, 0, 0, 2, 202, 4, 5, 6, 7, 2376 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2377 18, 19, 20, 21, 22, 23, 24, 0, 267, 25, 2378 26, 27, 0, 0, 0, 0, 278, 30, 279, 0, 2379 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2380 17, 18, 19, 20, 21, 22, 23, 24, -296, 0, 2381 0, 0, 0, 0, 280, 33, 510, 34, 30, 35, 2363 2382 281, 0, 37, 38, 282, 0, 0, 283, 284, 285, 2364 286, 40, 41, 2365 0, 0, 289, 0, 0, 0, 0, 0, 0, 0,2366 0, 0, 0, 0, 0, 0, 290, 0, 921, 0,2383 286, 40, 41, 510, 287, 288, 0, 0, 0, 0, 2384 0, 0, 289, 0, 0, 0, 33, 0, 0, 0, 2385 0, 0, 0, 0, 0, 0, 290, -296, 339, 0, 2367 2386 0, 0, 0, 772, 0, 292, 340, 294, 295, 296, 2368 2387 297, 2, 202, 4, 5, 6, 7, 8, 9, 10, 2369 2388 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2370 2389 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2371 0, 0, 0, 278, 30, 279, 0, 0, 0, 0, 2390 0, 0, 0, 278, 30, 279, 510, 510, 8, 9, 2391 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2392 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2393 0, 280, 33, 0, 34, 30, 35, 281, 0, 37, 2394 38, 282, 0, 0, 283, 284, 285, 286, 40, 41, 2395 0, 287, 288, 0, 0, 0, 0, 0, 0, 289, 2396 0, 0, 0, 33, 0, 0, 0, 0, 108, 0, 2397 37, 38, 0, 290, 0, 921, 0, 0, 0, 0, 2398 772, 0, 292, 340, 294, 295, 296, 297, 2, 202, 2399 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2400 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2401 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2402 278, 30, 279, 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, 280, 33, 2405 30, 34, 0, 35, 281, 0, 37, 38, 282, 0, 2406 0, 283, 284, 285, 286, 40, 41, 0, 287, 288, 2407 0, 0, 0, 0, 0, 0, 289, 0, 33, 0, 2408 0, 0, 0, 0, 0, 203, 38, 0, 0, 0, 2409 290, 0, 921, 0, 0, 0, 0, 772, 0, 292, 2410 593, 294, 295, 296, 297, 2, 202, 4, 5, 6, 2411 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2412 17, 18, 19, 20, 21, 22, 23, 24, 0, 622, 2413 25, 26, 27, 0, 0, 0, 0, 278, 30, 279, 2414 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2415 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2416 26, 27, 487, 488, 489, 280, 33, 30, 34, 0, 2417 35, 281, 0, 37, 38, 282, 0, 0, 283, 284, 2418 285, 286, 40, 41, 0, 287, 288, 0, 0, 0, 2419 0, 0, 0, 289, 0, 33, 0, 0, 0, 0, 2420 0, 0, 37, 38, 0, 0, 0, 290, 0, 339, 2421 0, 0, 0, 0, 0, 0, 292, 340, 294, 295, 2422 296, 297, 2, 202, 4, 5, 6, 7, 8, 9, 2423 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2424 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2425 0, 0, 0, 0, 278, 30, 279, 8, 9, 10, 2426 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2427 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2428 0, 0, 280, 33, 30, 34, 0, 35, 281, 0, 2429 37, 38, 282, 0, 0, 283, 284, 285, 286, 40, 2430 41, 0, 287, 288, 0, 0, 0, 0, 0, 0, 2431 289, 0, 33, 0, 0, 0, 0, 0, 0, 37, 2432 38, 0, 0, 0, 290, 0, 921, 0, 0, 0, 2433 0, 0, 0, 292, 340, 294, 295, 296, 297, 2, 2434 202, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2435 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2436 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2437 0, 278, 30, 279, 8, 9, 10, 11, 12, 13, 2438 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2439 24, 0, 0, 25, 26, 27, 0, 0, 0, 280, 2440 33, 30, 34, 0, 35, 281, 0, 203, 38, 282, 2441 0, 0, 283, 284, 285, 286, 40, 41, 0, 287, 2442 288, 0, 0, 0, 0, 0, 0, 289, 0, 33, 2443 0, 0, 0, 0, 0, 0, 203, 38, 0, 0, 2444 0, 290, 0, 1008, 0, 0, 0, 0, 0, 0, 2445 292, 1009, 294, 295, 296, 297, 2, 202, 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, 0, 0, 0, 0, 278, 30, 2449 279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2372 2450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373 2451 0, 0, 0, 0, 0, 0, 280, 33, 0, 34, 2374 0, 35, 281, 0, 37, 38, 282, 0, 0, 283,2452 0, 35, 281, 0, 203, 38, 282, 0, 0, 283, 2375 2453 284, 285, 286, 40, 41, 0, 287, 288, 0, 0, 2376 2454 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 2377 2455 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, 2456 374, 0, 0, 0, 0, 0, 0, 292, 376, 294, 2457 295, 296, 297, -515, 0, 0, 1, 2, 3, 4, 2402 2458 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2403 2459 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, 2460 0, 0, 25, 26, 27, 28, 0, 0, 29, 0, 2461 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 2428 2462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2429 2463 0, 0, 0, 0, 0, 32, 0, 0, 33, 0, … … 2432 2466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2433 2467 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,2468 0, 43, 0, 0, 0, 0, 0, 0, 0, 44, 2469 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2436 2470 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,2471 21, 22, 23, 24, 0, 0, 25, 26, 27, 28, 2472 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 2439 2473 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, 2474 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 2475 0, 0, 33, 0, 34, 0, 35, 36, 0, 37, 2476 38, 39, 0, 0, 0, 0, 0, 0, 40, 41, 2477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2478 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2479 0, 0, 0, 42, 0, 43, 0, 0, 0, -519, 2480 0, 0, 0, 44, 1, 2, 3, 4, 5, 6, 2481 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2482 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2483 25, 26, 27, 28, 0, 0, 29, 0, 30, 31, 2484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2486 0, 0, 0, 32, 0, 0, 33, 0, 34, 0, 2487 35, 36, 0, 37, 38, 39, 0, 0, 0, 0, 2488 0, 0, 40, 41, 0, 0, 0, 0, 0, 0, 2489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490 0, 0, 0, 0, 0, 0, 0, 42, 0, 43, 2491 0, 0, 0, 0, 0, 0, 0, 44, 201, 2, 2492 202, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2493 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2494 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2495 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 2496 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2497 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2498 33, 0, 34, 0, 35, 36, 0, 203, 38, 39, 2499 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, 2500 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2501 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2502 0, 42, 0, 204, 0, 0, 0, 0, 0, 0, 2503 0, 205, 1, 2, 202, 4, 5, 6, 7, 8, 2504 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2505 19, 20, 21, 22, 23, 24, -295, 0, 25, 26, 2506 27, 28, 0, 0, 29, 0, 30, 0, 0, 0, 2507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2509 0, 0, 0, 0, 33, 0, 34, 0, 35, 0, 2510 0, 37, 38, 0, 0, -295, 1, 2, 202, 4, 2511 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2512 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2513 0, 0, 25, 26, 27, 28, 0, 43, 29, 0, 2514 30, 0, 0, 0, 0, 109, 0, 0, 0, 0, 2515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2516 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2517 34, 0, 35, 0, 0, 37, 38, 0, 201, 2, 2518 202, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2519 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2520 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2521 0, 43, 30, 0, 0, 0, 0, 0, 0, 109, 2522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2523 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2524 33, 0, 34, 0, 35, 0, 0, 203, 38, 2, 2525 202, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2526 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2527 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2528 0, 0, 30, 204, 0, 0, 0, 0, 0, 0, 2529 0, 267, 0, 0, 0, 0, 0, 0, 0, 0, 2530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2531 33, 0, 34, 0, 35, 36, 0, 203, 38, 39, 2532 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, 2533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2535 0, 42, 0, 204, 0, 0, 0, 0, 0, 0, 2536 0, 205, 2, 202, 4, 5, 6, 7, 8, 9, 2537 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2538 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2539 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 2540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2542 0, 0, 0, 33, 0, 34, 0, 35, 0, 0, 2543 37, 38, 0, 0, 2, 202, 4, 5, 6, 7, 2544 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2545 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2546 26, 27, 0, 0, 0, -400, 679, 30, 0, 0, 2547 0, 0, 0, 0, 627, 0, 0, 0, 0, 0, 2548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549 0, 0, 0, 0, 0, 33, 0, 34, 0, 35, 2550 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, 2551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2552 0, 0, 0, 0, 1363, 0, 0, 0, 0, 0, 2553 0, 0, 0, 0, 0, 0, 0, 0, 679, 0, 2554 0, 0, 0, 0, 0, 0, 627, 2, 202, 4, 2555 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2556 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2557 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2558 30, 0, 0, 0, 0, 0, 8, 9, 10, 11, 2559 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2560 22, 23, 24, -295, 0, 25, 26, 27, 33, 0, 2561 34, 0, 35, 30, 0, 37, 38, 0, 0, 0, 2562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2563 0, 0, 0, 0, 0, 0, 0, 1365, 0, 0, 2564 0, 33, 0, 0, 0, 0, 36, 0, 332, 333, 2565 39, 679, -295, 0, 0, 0, 0, 40, 41, 627, 2442 2566 2, 202, 4, 5, 6, 7, 8, 9, 10, 11, 2443 2567 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, 2568 22, 23, 24, 0, 334, 25, 26, 27, 0, 0, 2569 0, 0, 109, 30, 0, 0, 0, 0, 0, 0, 2456 2570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2457 2571 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, 2572 0, 33, 0, 34, 0, 35, 0, 0, 203, 38, 2466 2573 2, 202, 4, 5, 6, 7, 8, 9, 10, 11, 2467 2574 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2468 2575 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, 2576 0, 0, 0, 30, 266, 0, 0, 0, 0, 0, 2577 0, 0, 622, 0, 0, 0, 0, 0, 0, 0, 2473 2578 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, 2579 0, 33, 0, 34, 0, 35, 0, 0, 37, 38, 2580 2, 202, 4, 5, 6, 7, 8, 9, 10, 11, 2581 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2582 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2583 0, 0, 0, 30, 679, 0, 0, 0, 0, 0, 2584 0, 0, 627, 0, 0, 0, 0, 0, 0, 0, 2484 2585 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,2488 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,2489 16, 17, 18, 19, 20, 21, 22, 23, 24, 0,2490 0, 25, 26, 27, 0, 0, 0, 0, 0, 30,2586 0, 33, 0, 34, 0, 35, 0, 0, 37, 38, 2587 2, 202, 4, 5, 6, 7, 8, 9, 10, 11, 2588 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2589 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2590 0, 0, 0, 30, 592, 0, 0, 0, 0, 0, 2591 0, 0, 627, 0, 0, 0, 0, 0, 0, 0, 2491 2592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2493 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, 2501 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2502 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, 2505 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, 2515 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, 2529 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, 2593 0, 33, 0, 34, 0, 35, 0, 0, 203, 38, 2594 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2595 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2596 26, 27, 0, 0, 0, 0, 278, 30, 279, 0, 2597 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 2598 0, 0, 267, 0, 0, 0, 0, 0, 0, 0, 2554 2599 0, 0, 0, 0, 280, 33, 0, 0, 0, 0, 2555 2600 281, 0, 37, 38, 282, 0, 0, 283, 284, 285, 2556 2601 286, 40, 41, 0, 287, 288, 0, 0, 0, 0, 2557 2602 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,2603 0, 0, 0, 0, 0, 0, 290, 0, 519, 0, 2604 0, 167, 0, 0, 0, 292, 293, 294, 295, 296, 2560 2605 297, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2561 2606 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2562 2607 25, 26, 27, 0, 0, 0, 0, 278, 30, 279, 2608 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2609 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2610 25, 26, 27, 0, 0, 280, 33, 0, 30, 0, 2611 0, 281, 0, 37, 38, 282, 0, 0, 283, 284, 2612 285, 286, 40, 41, 0, 287, 288, 0, 0, 0, 2613 0, 0, 0, 289, 0, 0, 33, 0, 0, 0, 2614 0, 36, 0, 332, 333, 39, 0, 290, 0, 592, 2615 -3, 0, 40, 41, 0, 0, 292, 593, 294, 295, 2616 296, 297, 8, 9, 10, 11, 12, 13, 14, 15, 2617 16, 17, 18, 19, 20, 21, 22, 23, 24, 334, 2618 0, 25, 26, 27, 0, 0, 0, 109, 278, 30, 2619 279, 0, 8, 9, 10, 11, 12, 13, 14, 15, 2620 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2621 0, 25, 26, 27, 0, 0, 280, 33, 0, 30, 2622 0, 0, 642, 0, 37, 38, 282, 0, 0, 283, 2623 284, 285, 286, 40, 41, 0, 287, 288, 0, 0, 2624 0, 0, 0, 0, 289, 0, 0, 33, 0, 0, 2625 0, 0, 108, 0, 37, 38, 0, 0, 290, -35, 2626 757, 0, 0, 0, 0, 0, 0, 292, 293, 294, 2627 295, 296, 297, 8, 9, 10, 11, 12, 13, 14, 2628 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2629 43, 0, 25, 26, 27, 0, 0, 0, 109, 278, 2630 30, 279, 0, 8, 9, 10, 11, 12, 13, 14, 2631 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2632 0, 0, 25, 26, 27, 0, 0, 280, 33, 0, 2633 30, 448, 0, 281, 0, 37, 38, 282, 0, 0, 2634 283, 284, 285, 286, 40, 41, 0, 287, 288, 0, 2635 0, 0, 0, 0, 0, 289, 0, 0, 33, 0, 2636 0, 0, 0, 0, 0, 37, 38, 0, 0, 290, 2637 0, 291, 0, 0, 0, 0, 0, 0, 292, 293, 2638 294, 295, 296, 297, 8, 9, 10, 11, 12, 13, 2639 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2640 24, 449, 0, 25, 26, 27, 0, 0, 0, 109, 2641 278, 30, 279, 0, 8, 9, 10, 11, 12, 13, 2642 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2643 24, 0, 0, 25, 26, 27, 0, 0, 280, 33, 2644 0, 30, 0, 0, 281, 0, 37, 38, 282, 0, 2645 0, 283, 284, 285, 286, 40, 41, 0, 287, 288, 2646 0, 0, 0, 0, 0, 0, 289, 0, 0, 33, 2647 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 2648 290, 0, 154, 0, 0, 0, 0, 0, 0, 292, 2649 293, 294, 295, 296, 297, 8, 9, 10, 11, 12, 2650 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2651 23, 24, 253, 0, 25, 26, 27, 0, 0, 0, 2652 109, 278, 30, 279, 0, 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, 280, 2655 33, 0, 30, 0, 0, 281, 0, 37, 38, 282, 2656 0, 0, 283, 284, 285, 286, 40, 41, 0, 287, 2657 288, 0, 0, 0, 0, 0, 0, 289, 0, 0, 2658 33, 0, 0, 0, 0, 0, 0, 37, 38, 0, 2659 0, 290, 0, 592, 0, 0, 0, 0, 0, 0, 2660 292, 593, 294, 295, 296, 297, 8, 9, 10, 11, 2661 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2662 22, 23, 24, 154, 0, 25, 26, 27, 0, 0, 2663 0, 109, 278, 30, 279, 0, 0, 0, 0, 0, 2563 2664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2564 2665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … … 2567 2668 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2568 2669 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, 2670 0, 0, 290, 0, 374, 0, 0, 0, 0, 0, 2671 0, 292, 376, 294, 295, 296, 297, 469, 2, 202, 2672 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2673 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2674 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2675 0, 30, 0, 0, 0, 8, 9, 10, 11, 12, 2676 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2677 23, 24, 0, 0, 25, 26, 27, 0, 0, 33, 2678 0, 34, 30, 35, 0, 0, 37, 38, 0, 0, 2679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2681 33, 0, 0, 0, 0, 36, 0, 37, 38, 39, 2682 0, 0, 0, 0, 0, -3, 40, 41, 8, 9, 2683 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2684 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2685 0, 42, 0, 154, 0, 30, 0, 0, 0, 0, 2686 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 2687 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2688 0, 0, 0, 33, 0, 0, 0, 0, 36, 0, 2689 37, 38, 39, 0, 0, 0, 0, 0, 0, 40, 2690 41, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2691 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2692 25, 26, 27, 0, 42, 0, 43, 0, 30, 0, 2693 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 2694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2695 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 2696 0, 36, 0, 203, 38, 39, 0, 0, 0, 0, 2697 0, 0, 40, 41, 8, 9, 10, 11, 12, 13, 2698 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2699 24, 0, 0, 25, 26, 27, 0, 42, 0, 266, 2700 0, 30, 0, 0, 0, 0, 0, 205, 0, 0, 2701 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2702 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2703 0, 0, 0, 0, 36, 0, 332, 333, 39, 0, 2704 0, 0, 0, 0, 0, 40, 41, 8, 9, 10, 2705 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2706 21, 22, 23, 24, -295, 0, 25, 26, 27, 0, 2707 636, 0, 334, 0, 30, 0, 0, 0, 0, 0, 2708 627, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2709 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2710 24, -295, 33, 25, 26, 27, 0, 0, 0, 37, 2711 38, 30, 0, -295, 8, 9, 10, 11, 12, 13, 2712 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2713 24, 0, 0, 25, 26, 27, 0, 0, 0, 33, 2714 0, 30, 448, 636, 0, 334, 37, 38, 0, 0, 2715 -295, 0, 0, 109, 0, 0, 0, 0, 0, 0, 2716 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2717 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 2718 636, 0, 334, 0, 0, 0, 0, 0, 0, 0, 2719 627, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2720 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2721 24, -295, 449, 25, 26, 27, 937, 0, 0, 0, 2722 109, 30, 0, 8, 9, 10, 11, 12, 13, 14, 2723 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2724 0, 0, 25, 26, 27, 0, 0, 0, 0, 33, 2725 30, 448, 0, 0, 0, 0, 37, 38, 0, 0, 2726 -295, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2727 17, 18, 19, 20, 21, 22, 23, 24, 33, 0, 2728 25, 26, 27, 0, 0, 37, 38, 0, 30, 0, 2729 0, 0, 334, 0, 0, 0, 0, 0, 0, 0, 2730 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2731 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 2732 0, 449, 0, 37, 38, 1229, 0, 0, 0, 109, 2733 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2734 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2735 25, 26, 27, 0, 0, 0, 0, 636, 30, 334, 2736 0, 0, 0, 0, 0, 0, 0, 109, 8, 9, 2737 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2738 20, 21, 22, 23, 24, 0, 33, 25, 26, 27, 2739 0, 0, 0, 37, 38, 30, 0, 8, 9, 10, 2571 2740 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2572 2741 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2573 0, 0, 0, 278, 30, 279, 0, 0, 0, 0, 2742 0, 0, 0, 33, 30, 0, 0, 636, 0, 334, 2743 203, 38, 0, 0, 0, 0, 0, 627, 0, 0, 2574 2744 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, 2745 0, 0, 33, 0, 0, 0, 0, 0, 0, 37, 2746 38, 0, 0, 0, 0, 0, 266, 0, 0, 0, 2747 0, 0, 0, 0, 267, 0, 0, 8, 9, 10, 2748 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2749 21, 22, 23, 24, 0, 253, 25, 26, 27, 0, 2750 0, 0, 0, 627, 30, 0, 8, 9, 10, 11, 2751 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2752 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2753 0, 0, 33, 30, 0, 0, 0, 0, 0, 37, 2754 38, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2582 2755 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 1 7, 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,2756 0, 33, 25, 26, 27, 0, 0, 0, 37, 38, 2757 30, 0, 0, 0, 0, 334, 0, 0, 0, 0, 2758 0, 0, 0, 627, 0, 0, 0, 0, 0, 0, 2759 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2760 0, 0, 0, 0, 449, 203, 38, 0, 0, 0, 2761 0, 0, 109, 8, 9, 10, 11, 12, 13, 14, 2762 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2763 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2764 30, 266, 0, 0, 0, 0, 0, 0, 0, 622, 2765 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2766 18, 19, 20, 21, 22, 23, 24, 0, 33, 25, 2767 26, 27, 0, 0, 0, 37, 38, 30, 0, 8, 2595 2768 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2596 2769 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, 2770 27, 0, 0, 0, 0, 33, 30, 0, 0, 0, 2771 0, 592, 37, 38, 0, 0, 0, 0, 0, 627, 2612 2772 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, 2773 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 2774 0, 37, 38, 0, 0, 0, 0, 0, 334, 0, 2775 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 2619 2776 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, 2700 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2701 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2702 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, 2712 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2713 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, 2718 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2719 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, 2722 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 2723 0, 203, 38, 8, 9, 10, 11, 12, 13, 14, 2724 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2725 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, 2753 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, 2761 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, 2777 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 2778 0, 0, 0, 0, 0, 109, 2, 202, 4, 5, 2765 2779 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2766 2780 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2767 2781 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, 2782 0, 0, 278, 0, 279, 1051, 0, 1052, 0, 0, 2783 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 0, 0, 2784 1544, 1061, 0, 0, 0, 1062, 1063, 33, 32, 34, 2785 280, 35, 0, 0, 37, 38, 1064, 0, 0, 0, 2786 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2787 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2788 0, 0, 0, 0, 0, 0, 0, 0, 0, -413, 2789 0, 0, 290, 0, 374, 0, 0, 167, 0, 0, 2790 0, 292, 376, 294, 295, 296, 297, 0, 0, 0, 2791 0, 1066, 0, 0, 278, -128, 279, 1051, 0, 1052, 2792 0, 0, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 2793 0, 0, 0, 1061, 0, 0, 0, 1062, 1063, 0, 2794 32, 0, 280, 0, 0, 0, 0, 0, 1064, 0, 2788 2795 0, 0, 282, 0, 0, 283, 284, 285, 286, 40, 2789 2796 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, 2797 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2798 0, 0, 0, 0, 290, 0, 374, 0, 0, 167, 2799 0, 0, 0, 292, 376, 294, 295, 296, 297, 0, 2800 0, 0, 0, 1066, 0, 0, 0, -128, 2, 202, 2801 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2802 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2803 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2804 0, 30, 0, 0, 278, 0, 279, 1051, 0, 1052, 2805 1414, 1415, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 2806 0, 0, 1544, 1061, 0, 0, 0, 1062, 1063, 33, 2807 32, 34, 280, 35, 0, 0, 37, 38, 1064, 0, 2808 0, 0, 282, 0, 0, 283, 284, 285, 286, 40, 2809 41, 0, 287, 288, 0, 0, 0, 0, 1322, 0, 2810 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2811 0, 0, 0, 0, 290, 0, 374, 0, 0, 167, 2812 0, 0, 0, 292, 376, 294, 295, 296, 297, 278, 2813 0, 279, 1051, 1066, 1052, 1414, 1415, 1053, 1054, 1055, 2814 1056, 1057, 1058, 1059, 1060, 0, 0, 0, 1061, 0, 2815 0, 0, 1062, 1063, 0, 32, 0, 280, 0, 0, 2816 0, 0, 0, 1064, 0, 0, 0, 282, 0, 0, 2817 2817 283, 284, 285, 286, 40, 41, 0, 287, 288, 0, 2818 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, 2819 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 2820 0, 374, 0, 0, 167, 0, 0, 0, 292, 376, 2821 294, 295, 296, 297, 278, 0, 279, 1051, 1066, 1052, 2822 0, 0, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 2823 0, 0, 0, 1061, 0, 0, 0, 1062, 1063, 0, 2824 32, 0, 280, 0, 0, 0, 0, 0, 1064, 0, 2825 0, 0, 282, 0, 0, 283, 284, 285, 286, 40, 2826 41, 0, 287, 288, 0, 0, 0, 0, 0, 0, 2827 289, 278, 0, 279, 0, 0, 0, 0, 0, 0, 2828 0, 0, 0, 0, 290, 0, 374, 0, 0, 167, 2829 278, 0, 279, 292, 376, 294, 295, 296, 297, 280, 2830 0, 0, 0, 1066, 0, 281, 0, 0, 0, 282, 2831 0, 0, 283, 284, 285, 286, 40, 41, 280, 287, 2832 288, 0, 0, 0, 281, 0, 0, 289, 282, 0, 2833 0, 283, 284, 285, 286, 40, 41, 0, 287, 288, 2834 0, 290, 0, 374, 0, 0, 289, 278, 0, 279, 2835 292, 376, 294, 295, 296, 297, 0, 0, 0, 0, 2836 290, 0, 374, 0, 0, 0, 278, 0, 279, 292, 2837 726, 294, 295, 296, 297, 280, 0, 0, 0, 0, 2838 0, 642, 0, 0, 0, 282, 0, 0, 283, 284, 2839 285, 286, 40, 41, 280, 287, 288, 0, 0, 0, 2840 281, 0, 0, 289, 282, 0, 0, 283, 284, 285, 2841 286, 40, 41, 0, 287, 288, 0, 290, 0, 776, 2842 0, 0, 289, 278, 0, 279, 292, 376, 294, 295, 2843 296, 297, 0, 0, 0, 0, 290, 0, 374, 0, 2844 0, 0, 278, 0, 279, 292, 817, 294, 295, 296, 2827 2845 297, 280, 0, 0, 0, 0, 0, 281, 0, 0, 2828 2846 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, 2847 280, 287, 288, 0, 0, 0, 281, 0, 0, 289, 2848 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2849 287, 288, 0, 512, 0, 0, 0, 0, 289, 0, 2850 0, 0, 292, 376, 294, 295, 296, 297, 0, 0, 2851 0, 0, 515, 0, 0, 0, 0, 0, 0, 0, 2852 0, 292, 376, 294, 295, 296, 297, 2, 202, 4, 2853 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2854 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2856 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2848 2857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2849 2858 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, … … 2855 2864 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2856 2865 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, 2866 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2867 34, 0, 35, 0, 0, 203, 38, 469, 2, 202, 2868 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2869 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2870 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2871 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 2862 2872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2863 2873 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, … … 2868 2878 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 2869 2879 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, 2878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2879 0, 33, 0, 0, 0, 0, 0, 0, 203, 38 2880 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2881 0, 34, 0, 35, 0, 0, 203, 38 2880 2882 }; 2881 2883 2882 2884 #define yypact_value_is_default(yystate) \ 2883 ((yystate) == (-131 8))2885 ((yystate) == (-1316)) 2884 2886 2885 2887 #define yytable_value_is_error(yytable_value) \ … … 2888 2890 static const yytype_int16 yycheck[] = 2889 2891 { 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, 2892 0, 277, 0, 42, 1, 165, 200, 235, 451, 42, 2893 42, 181, 751, 181, 690, 215, 182, 344, 181, 690, 2894 181, 450, 275, 514, 0, 1, 181, 1, 113, 181, 2895 54, 31, 690, 31, 182, 63, 622, 892, 181, 0, 2896 672, 494, 42, 457, 44, 498, 44, 995, 648, 602, 2897 1031, 0, 80, 0, 54, 31, 183, 42, 892, 604, 2898 60, 602, 60, 63, 1332, 63, 66, 344, 66, 66, 2899 31, 604, 290, 988, 602, 70, 1030, 1031, 771, 42, 2900 104, 1050, 31, 107, 31, 42, 114, 63, 572, 44, 2901 66, 261, 768, 261, 523, 1043, 262, 768, 261, 412, 2902 261, 0, 0, 1418, 104, 252, 261, 107, 49, 261, 2903 768, 1414, 197, 113, 262, 715, 63, 106, 261, 432, 2904 359, 31, 70, 37, 363, 103, 602, 440, 93, 157, 2905 257, 258, 31, 31, 129, 80, 70, 27, 80, 602, 2906 70, 605, 181, 42, 144, 44, 144, 611, 181, 181, 2907 106, 340, 152, 61, 109, 42, 43, 157, 126, 157, 2908 128, 60, 127, 490, 63, 106, 37, 66, 116, 1437, 2909 37, 691, 114, 805, 152, 637, 638, 37, 108, 602, 2910 0, 181, 182, 815, 182, 1488, 76, 602, 143, 217, 2911 214, 106, 654, 713, 108, 129, 181, 197, 830, 62, 2912 11, 1516, 420, 421, 404, 205, 1521, 205, 37, 42, 2913 43, 31, 42, 43, 214, 70, 1050, 217, 181, 217, 2914 111, 129, 261, 114, 181, 112, 1541, 255, 261, 261, 2915 506, 259, 80, 1548, 400, 106, 83, 108, 37, 1062, 2916 1063, 217, 1521, 106, 268, 144, 106, 247, 108, 247, 2917 205, 275, 400, 108, 1235, 109, 0, 1, 157, 107, 2918 492, 261, 262, 110, 262, 412, 728, 710, 268, 1548, 2919 217, 247, 128, 736, 248, 275, 829, 106, 111, 108, 2920 235, 111, 181, 182, 450, 432, 247, 31, 829, 111, 2921 508, 252, 37, 440, 512, 484, 841, 515, 247, 113, 2922 247, 829, 450, 1284, 997, 390, 205, 106, 841, 108, 2923 1133, 1, 267, 736, 70, 289, 482, 345, 217, 343, 2924 1059, 736, 66, 3, 324, 809, 324, 604, 1297, 1283, 2925 1284, 106, 107, 418, 482, 1250, 360, 247, 293, 424, 2926 364, 3, 70, 343, 344, 80, 106, 1471, 247, 247, 2927 568, 590, 108, 829, 44, 70, 818, 72, 73, 337, 2928 360, 106, 261, 108, 364, 1220, 829, 831, 128, 70, 2929 683, 72, 73, 108, 606, 67, 88, 89, 610, 71, 2930 108, 1505, 74, 1507, 76, 340, 1220, 113, 366, 1521, 2931 390, 83, 668, 108, 633, 1027, 1028, 425, 345, 631, 2932 400, 80, 400, 635, 593, 950, 829, 0, 949, 1541, 2933 111, 123, 124, 103, 829, 80, 1548, 0, 418, 109, 2934 224, 949, 106, 1009, 424, 324, 426, 247, 107, 1410, 2935 420, 421, 252, 622, 70, 114, 72, 73, 627, 243, 2936 70, 106, 72, 73, 113, 344, 892, 475, 968, 106, 2937 450, 412, 113, 143, 1402, 1403, 1410, 1089, 1090, 94, 2938 129, 80, 152, 1297, 113, 420, 421, 94, 129, 128, 2939 106, 432, 106, 949, 474, 111, 106, 106, 754, 440, 2940 129, 111, 482, 106, 482, 120, 486, 106, 486, 649, 2941 490, 1460, 113, 120, 106, 469, 108, 750, 1467, 928, 2942 689, 400, 993, 247, 918, 958, 496, 936, 129, 109, 2943 486, 201, 107, 113, 841, 205, 208, 109, 106, 114, 2944 690, 113, 690, 484, 514, 486, 692, 690, 475, 690, 2945 109, 658, 1132, 128, 113, 690, 683, 486, 690, 486, 2946 514, 496, 107, 44, 692, 235, 236, 690, 526, 113, 2947 1519, 450, 981, 113, 1018, 1019, 113, 531, 1297, 514, 2948 534, 106, 536, 1108, 841, 129, 112, 113, 596, 129, 2949 113, 656, 129, 109, 106, 764, 108, 267, 725, 113, 2950 270, 820, 128, 107, 116, 824, 129, 486, 486, 579, 2951 590, 490, 412, 109, 113, 129, 624, 113, 78, 623, 2952 290, 629, 602, 293, 604, 113, 1126, 1053, 109, 583, 2953 129, 107, 432, 78, 107, 639, 107, 636, 637, 638, 2954 440, 129, 113, 623, 579, 107, 1460, 954, 108, 653, 2955 110, 863, 1264, 1467, 114, 654, 1375, 107, 593, 639, 2956 1272, 1273, 1274, 108, 114, 110, 113, 337, 70, 114, 2957 340, 1094, 74, 653, 113, 347, 656, 349, 107, 81, 2958 82, 107, 129, 1183, 1184, 114, 486, 622, 106, 359, 2959 129, 113, 627, 363, 1491, 914, 366, 624, 878, 106, 2960 1497, 655, 112, 657, 106, 1519, 108, 129, 716, 1321, 2961 690, 508, 692, 591, 116, 512, 86, 87, 515, 899, 2962 70, 1518, 730, 602, 205, 604, 1523, 106, 484, 728, 2963 688, 81, 82, 10, 11, 12, 13, 14, 129, 106, 2964 52, 108, 683, 955, 884, 1464, 750, 1466, 689, 116, 2965 420, 421, 960, 116, 62, 236, 736, 737, 121, 122, 2966 37, 107, 486, 106, 436, 108, 106, 113, 108, 723, 2967 750, 4, 5, 6, 7, 8, 9, 106, 448, 107, 2968 106, 451, 928, 95, 725, 113, 267, 457, 65, 716, 2969 936, 695, 107, 697, 1220, 83, 84, 85, 113, 469, 2970 928, 1520, 109, 730, 107, 763, 113, 109, 936, 290, 2971 113, 690, 293, 692, 822, 106, 129, 108, 106, 818, 2972 108, 107, 110, 764, 494, 116, 496, 113, 498, 106, 2973 70, 108, 72, 73, 67, 107, 69, 107, 508, 116, 2974 1009, 113, 512, 113, 514, 515, 90, 91, 1022, 829, 2975 4, 5, 6, 7, 8, 9, 526, 736, 737, 111, 2976 106, 841, 108, 10, 11, 12, 13, 14, 1124, 1525, 2977 111, 1124, 1128, 1129, 1525, 1128, 1095, 189, 32, 107, 2978 636, 637, 638, 683, 129, 113, 107, 1525, 1314, 106, 2979 37, 108, 113, 107, 129, 822, 129, 1397, 654, 113, 2980 212, 107, 107, 279, 106, 1045, 108, 113, 113, 579, 2981 222, 70, 892, 67, 1414, 69, 292, 293, 65, 111, 2982 590, 107, 106, 593, 107, 725, 107, 113, 304, 107, 2983 113, 107, 113, 689, 914, 113, 892, 113, 892, 107, 2984 106, 107, 108, 1369, 80, 113, 1372, 825, 928, 106, 2985 829, 892, 622, 106, 107, 108, 936, 627, 106, 106, 2986 108, 108, 841, 633, 340, 892, 106, 448, 108, 116, 2987 451, 80, 728, 107, 954, 109, 457, 109, 290, 113, 2988 118, 119, 959, 1152, 106, 107, 108, 1487, 1488, 1245, 2989 117, 106, 1418, 108, 128, 129, 125, 1423, 1196, 1197, 2990 376, 1199, 126, 959, 1012, 113, 114, 1205, 764, 70, 2991 1208, 72, 73, 74, 892, 106, 107, 108, 688, 4, 2992 5, 6, 7, 8, 9, 960, 128, 508, 1454, 107, 2993 108, 512, 56, 57, 515, 3, 990, 112, 113, 993, 2994 710, 995, 10, 11, 12, 13, 14, 113, 114, 928, 2995 92, 1116, 10, 11, 12, 13, 14, 936, 113, 114, 2996 70, 108, 818, 106, 74, 106, 1235, 42, 43, 37, 2997 740, 81, 82, 1053, 1009, 954, 70, 1333, 109, 37, 2998 74, 1337, 67, 109, 69, 1012, 1066, 81, 82, 1043, 2999 107, 1500, 892, 763, 1050, 107, 106, 65, 107, 1053, 3000 553, 554, 1056, 1057, 1058, 107, 116, 65, 107, 1050, 3001 561, 562, 106, 1539, 56, 57, 58, 0, 1, 1545, 3002 555, 556, 116, 1050, 107, 437, 557, 558, 559, 560, 3003 1556, 1256, 1257, 1258, 1560, 106, 1116, 109, 108, 113, 3004 70, 1550, 72, 73, 74, 109, 128, 44, 31, 111, 3005 820, 81, 82, 70, 824, 72, 73, 74, 106, 471, 3006 109, 44, 107, 60, 81, 82, 63, 107, 892, 66, 3007 109, 3, 1050, 1371, 550, 551, 552, 109, 10, 11, 3008 12, 13, 14, 66, 109, 1441, 1194, 109, 114, 106, 3009 70, 108, 72, 73, 74, 114, 508, 114, 28, 116, 3010 512, 81, 82, 515, 113, 37, 29, 107, 107, 111, 3011 70, 1152, 72, 73, 74, 109, 114, 593, 1195, 112, 3012 103, 81, 82, 107, 112, 54, 106, 112, 108, 710, 3013 106, 113, 1212, 65, 107, 959, 116, 129, 1194, 1195, 3014 1220, 107, 107, 114, 914, 107, 106, 144, 918, 107, 3015 1050, 107, 113, 107, 1212, 107, 116, 80, 81, 107, 3016 157, 144, 1239, 1217, 1220, 107, 1220, 1194, 107, 152, 3017 153, 107, 107, 107, 1030, 104, 107, 28, 107, 1220, 3018 107, 107, 107, 1239, 1292, 182, 107, 128, 958, 959, 3019 960, 109, 112, 1220, 1235, 107, 107, 63, 107, 182, 3020 113, 107, 1256, 1257, 1258, 112, 109, 73, 205, 109, 3021 107, 107, 113, 107, 197, 114, 111, 200, 201, 109, 3022 217, 113, 205, 152, 113, 107, 1050, 1535, 1393, 113, 3023 113, 107, 107, 106, 1314, 109, 1292, 106, 106, 1009, 3024 111, 1297, 1220, 226, 106, 106, 109, 230, 114, 232, 3025 726, 129, 111, 107, 114, 1332, 1297, 112, 241, 671, 3026 1314, 107, 107, 112, 247, 1292, 109, 111, 680, 252, 3027 1297, 129, 684, 126, 113, 1525, 1332, 1525, 109, 262, 3028 1526, 113, 1525, 109, 1525, 214, 107, 270, 1392, 1369, 3029 1525, 157, 1372, 1525, 107, 771, 1152, 107, 1526, 3, 3030 109, 109, 1525, 109, 1550, 107, 10, 11, 12, 13, 3031 14, 109, 1392, 1393, 109, 1369, 239, 109, 1372, 1297, 3032 1220, 45, 1550, 111, 1094, 1095, 129, 324, 129, 129, 3033 129, 107, 129, 37, 112, 1500, 107, 918, 1418, 268, 3034 112, 817, 109, 1423, 114, 109, 275, 112, 1402, 1403, 3035 109, 217, 109, 109, 337, 109, 63, 340, 109, 109, 3036 1437, 65, 107, 346, 1418, 107, 109, 106, 109, 1423, 3037 106, 1195, 106, 58, 1454, 112, 359, 107, 107, 111, 3038 363, 1437, 129, 366, 109, 94, 114, 109, 1442, 255, 3039 107, 109, 107, 259, 94, 106, 1220, 1297, 106, 112, 3040 1454, 107, 129, 400, 1460, 107, 1525, 114, 129, 275, 3041 129, 1467, 1525, 1525, 343, 1239, 109, 107, 107, 1460, 3042 1500, 113, 40, 114, 129, 107, 1467, 1283, 129, 412, 3043 107, 360, 94, 1460, 94, 364, 1516, 107, 107, 114, 3044 1467, 1521, 1212, 129, 427, 1525, 1526, 1501, 1526, 432, 3045 157, 466, 375, 129, 107, 107, 1510, 440, 112, 1539, 3046 109, 1541, 1516, 1519, 109, 1545, 129, 1521, 1548, 1239, 3047 1550, 106, 1550, 1297, 129, 112, 1556, 107, 1519, 345, 3048 1560, 112, 1460, 466, 107, 1539, 469, 1541, 129, 1467, 3049 691, 1545, 1519, 107, 1548, 107, 1066, 426, 1217, 564, 3050 1535, 484, 1556, 486, 916, 565, 1560, 563, 1332, 566, 3051 217, 494, 713, 1094, 567, 498, 1220, 1377, 1560, 1488, 3052 1307, 50, 1129, 52, 1337, 1467, 55, 56, 57, 1085, 3053 59, 448, 455, 1009, 448, 936, 460, 460, 697, 938, 3054 583, 1519, 884, 526, 527, 74, 1525, 982, 255, 650, 3055 740, 956, 259, 1239, 750, 571, -1, 86, 87, 425, 3056 1460, 571, 1332, 571, 486, -1, -1, 1467, -1, -1, 3057 493, -1, 495, -1, 1050, -1, 442, 10, 11, 12, 3058 13, 14, -1, -1, -1, -1, 185, -1, 70, 572, 3059 72, 73, 74, 192, 70, -1, 72, 73, 74, 81, 3060 82, 802, -1, -1, 37, 81, 82, 590, 591, 475, 3061 593, -1, -1, 1437, -1, -1, -1, -1, -1, 1519, 3062 -1, 604, -1, -1, 106, -1, 108, -1, -1, -1, 3063 106, -1, 65, -1, 116, -1, 1460, -1, 345, 622, 3064 116, -1, -1, 1467, 627, -1, -1, -1, -1, 1061, 3065 633, -1, -1, 636, 637, 638, -1, 672, -1, -1, 3066 -1, 590, -1, -1, -1, 264, 70, 1437, 72, 73, 3067 74, 654, -1, 106, -1, 108, -1, 81, 82, 880, 3068 -1, 0, -1, 116, -1, 466, -1, -1, -1, 672, 3069 -1, -1, -1, 1169, 623, 1519, -1, -1, -1, 1469, 3070 683, 1471, 106, 0, 1, 688, 689, -1, -1, 692, 3071 639, -1, 31, -1, -1, -1, -1, -1, 425, -1, 3072 319, -1, 645, -1, 653, -1, -1, -1, 327, -1, 3073 596, 330, -1, -1, 31, 1505, -1, 1507, -1, -1, 3074 -1, -1, 725, -1, -1, 728, -1, 66, -1, 70, 3075 -1, 72, 73, 74, 737, -1, -1, 740, 624, -1, 3076 81, 82, -1, 629, -1, 1535, 63, 968, 475, 66, 3077 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 3078 763, 764, 705, -1, -1, 106, 769, 108, 711, -1, 3079 805, -1, -1, 392, -1, 116, 997, 396, -1, -1, 3080 815, -1, -1, 128, -1, -1, 10, 11, 12, 13, 3081 14, 340, 341, -1, -1, 830, 70, -1, 72, 73, 3082 74, 750, 805, 352, 353, -1, -1, 81, 82, -1, 3083 -1, -1, 815, 37, 153, 818, -1, 820, -1, -1, 3084 823, 824, 825, -1, -1, -1, 1047, 830, -1, -1, 3085 716, -1, 106, -1, -1, -1, 153, 840, -1, -1, 3086 -1, 65, -1, -1, 730, -1, 70, -1, 72, 73, 3087 74, -1, -1, -1, -1, -1, -1, 81, 82, -1, 3088 -1, -1, 481, -1, 750, -1, -1, -1, 1469, 596, 3089 1471, 672, -1, -1, 1306, -1, -1, -1, -1, -1, 3090 -1, -1, 106, -1, 108, -1, -1, 226, -1, 892, 3091 -1, -1, 116, -1, -1, -1, -1, 624, -1, -1, 3092 217, -1, 629, -1, 1505, 1126, 1507, -1, 247, -1, 3093 -1, 914, -1, 252, -1, 10, 11, 12, 13, 14, 3094 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3095 247, -1, -1, -1, -1, -1, 822, -1, -1, -1, 3096 -1, 884, 37, -1, -1, -1, -1, 950, 891, -1, 3097 -1, -1, 571, 572, -1, 958, 959, -1, -1, -1, 3098 -1, -1, 1183, 1184, -1, 914, -1, -1, -1, -1, 3099 65, -1, 975, -1, -1, 70, -1, 72, 73, 74, 3100 -1, -1, -1, -1, -1, -1, 81, 82, -1, 716, 3101 -1, -1, 1027, 1028, -1, -1, -1, -1, -1, -1, 3102 -1, -1, -1, 730, 805, -1, 1009, 346, -1, -1, 3103 -1, 106, 0, 108, 815, -1, -1, -1, -1, 1022, 3104 -1, 116, -1, -1, 1027, 1028, -1, 1030, 1031, 830, 3105 -1, -1, -1, -1, -1, -1, 1468, -1, 1470, 982, 3106 659, -1, -1, 31, 663, -1, -1, 1050, -1, -1, 3107 -1, -1, -1, -1, 1089, 1090, -1, -1, 10, 11, 3108 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 3109 -1, -1, 1504, 412, 1506, -1, -1, 696, 66, 10, 3110 11, 12, 13, 14, -1, 37, 1089, 1090, 427, -1, 3111 -1, -1, 1095, 432, -1, 822, -1, -1, -1, -1, 3112 -1, 440, -1, -1, -1, -1, 37, -1, -1, -1, 3113 427, -1, -1, 65, -1, -1, -1, 1549, 70, 1551, 3114 72, 73, 74, -1, -1, -1, 1012, 466, -1, 81, 3115 82, -1, 1564, 1565, 65, -1, -1, -1, -1, 70, 3116 -1, -1, 1085, 74, -1, 484, -1, 486, -1, 1152, 3117 81, 82, -1, -1, 106, -1, 108, -1, -1, -1, 3118 -1, -1, -1, -1, 116, 153, -1, -1, 717, 486, 3119 719, -1, 25, 26, 27, 106, 1397, 726, 727, -1, 3120 -1, -1, 731, -1, -1, 116, -1, -1, 527, -1, 3121 809, -1, 1195, 1414, 743, -1, -1, -1, 1233, 748, 3122 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1212, 3123 527, -1, -1, -1, -1, -1, -1, 1220, -1, -1, 3124 -1, -1, -1, -1, 773, -1, 1027, 1028, -1, 1264, 3125 1233, -1, 1235, -1, -1, -1, 1239, 1272, 1273, 1274, 3126 -1, -1, -1, 96, -1, 98, -1, 1190, -1, -1, 3127 -1, -1, 591, -1, -1, -1, -1, -1, -1, 247, 3128 -1, 1264, -1, 1212, 252, -1, 1487, 1488, 817, 1272, 3129 1273, 1274, -1, -1, 591, -1, -1, -1, -1, -1, 3130 1283, 1284, -1, -1, -1, 1012, 1321, -1, 1089, 1090, 3131 -1, -1, -1, -1, 1297, -1, -1, 636, 637, 638, 3132 -1, -1, -1, 922, -1, -1, -1, -1, 1194, -1, 3133 -1, -1, -1, -1, -1, 654, -1, -1, 1321, 636, 3134 637, 638, -1, -1, 177, 874, 875, 876, 877, 1332, 3135 879, -1, -1, 672, 187, 188, -1, 654, -1, 192, 3136 -1, 194, 195, -1, 683, -1, 895, -1, -1, -1, 3137 689, -1, 0, -1, -1, -1, -1, -1, 346, -1, 3138 909, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3139 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3140 999, -1, -1, 31, -1, -1, 725, -1, 37, 728, 3141 -1, -1, -1, -1, -1, -1, 1015, -1, -1, 948, 3142 -1, -1, -1, -1, -1, -1, 1292, 1410, -1, -1, 3143 -1, 728, -1, -1, -1, -1, 65, -1, 66, -1, 3144 -1, -1, -1, -1, 412, 764, -1, 76, -1, -1, 3145 -1, -1, 1233, -1, 1437, -1, -1, -1, 987, 427, 3146 -1, -1, -1, 1392, 432, 994, -1, -1, -1, 998, 3147 -1, -1, 440, -1, 1003, -1, 1005, 1460, -1, -1, 3148 1009, 1010, 1011, 1264, 1467, 1014, 805, 1194, -1, -1, 3149 -1, 1272, 1273, 1274, 1023, -1, 815, 1096, 466, 818, 3150 -1, -1, -1, -1, 823, -1, 825, -1, -1, -1, 3151 -1, 830, 1041, 1042, -1, -1, 484, -1, 486, -1, 3152 -1, 818, -1, -1, -1, 153, -1, -1, 825, -1, 3153 -1, -1, -1, -1, -1, -1, 1519, -1, -1, -1, 3154 1321, -1, 1071, 1526, -1, 1074, -1, -1, -1, -1, 3155 -1, -1, -1, -1, -1, -1, -1, -1, -1, 527, 3156 -1, 10, 11, 12, 13, 14, -1, -1, -1, -1, 3157 -1, -1, -1, 892, -1, 10, 11, 12, 13, 14, 3158 -1, -1, -1, -1, 1113, 1292, -1, -1, 37, -1, 3159 1119, 1120, -1, -1, -1, 892, -1, -1, -1, -1, 3160 -1, 1130, 37, -1, -1, -1, 1135, -1, -1, 1138, 3161 -1, 1140, -1, -1, 1143, -1, 65, -1, -1, 247, 3162 -1, 70, -1, 591, 252, 74, -1, 1156, -1, -1, 3163 65, -1, 81, 82, -1, 70, -1, 72, 73, 74, 3164 1169, -1, 1171, 1172, 1173, 1174, 81, 82, -1, -1, 3165 -1, -1, -1, 0, -1, -1, 975, 106, 1187, -1, 3166 1189, -1, 959, -1, 1193, -1, -1, 116, 636, 637, 3167 638, 106, -1, -1, -1, -1, -1, -1, 975, -1, 3168 -1, 116, -1, -1, 31, -1, 654, -1, -1, -1, 3169 -1, -1, -1, -1, -1, -1, 1225, 1226, -1, -1, 3170 -1, -1, -1, -1, 672, -1, -1, -1, 1027, 1028, 3171 -1, 1030, 1031, -1, -1, 683, -1, -1, 346, 66, 3172 -1, 689, -1, -1, -1, -1, -1, -1, -1, -1, 3173 -1, 1050, -1, 1030, 1031, -1, -1, -1, -1, -1, 3174 -1, -1, 575, 576, -1, -1, 1275, 1276, -1, -1, 3175 -1, -1, -1, 1050, -1, -1, 1285, 725, -1, -1, 3176 728, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3177 1089, 1090, 605, -1, -1, 608, 609, -1, 611, -1, 3178 613, 614, -1, -1, 412, 618, 619, -1, -1, -1, 3179 -1, -1, -1, -1, -1, -1, 764, -1, -1, 427, 3180 -1, -1, -1, -1, 432, -1, 153, -1, -1, 1338, 3181 -1, -1, 440, -1, -1, 10, 11, 12, 13, 14, 3182 -1, 1350, -1, 1352, 1353, 1354, -1, -1, -1, -1, 3183 -1, -1, -1, 1152, -1, 1364, -1, 805, 466, -1, 3184 -1, -1, 37, -1, 1373, -1, -1, 815, -1, -1, 3185 818, -1, -1, -1, -1, 823, 484, 825, 486, -1, 3186 -1, 1390, 830, -1, -1, -1, -1, -1, 701, 702, 3187 65, -1, -1, -1, 707, 70, 1195, 72, 73, 74, 3188 -1, -1, -1, -1, -1, -1, 81, 82, -1, -1, 3189 -1, -1, -1, -1, -1, -1, -1, 1194, 1195, 527, 3190 247, 1220, -1, -1, -1, 252, -1, -1, -1, -1, 3191 -1, 106, -1, -1, 1233, -1, 1235, -1, 1447, 1448, 3192 -1, 116, -1, 1220, 892, -1, -1, -1, -1, -1, 3193 -1, 1460, -1, -1, -1, -1, -1, -1, 1467, -1, 3194 -1, -1, 1239, -1, -1, 1264, -1, -1, -1, -1, 3195 -1, -1, -1, 1272, 1273, 1274, -1, -1, -1, -1, 3196 -1, -1, -1, 591, 1283, 1284, -1, -1, -1, -1, 3197 1499, -1, -1, -1, 1503, -1, -1, -1, 1297, -1, 3198 -1, -1, -1, -1, -1, -1, 1283, 1284, -1, -1, 3199 -1, -1, -1, -1, -1, 1292, -1, -1, -1, 346, 3200 1297, -1, 1321, 1532, -1, 1534, -1, 975, 636, 637, 3201 638, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3202 -1, -1, -1, -1, -1, -1, 654, -1, -1, -1, 3203 -1, -1, -1, 1562, 1563, 1332, -1, -1, -1, -1, 3204 -1, 1570, 1571, -1, 672, -1, -1, -1, -1, -1, 3205 -1, -1, -1, -1, -1, 683, -1, -1, -1, 1027, 3206 1028, 689, 1030, 1031, -1, 412, -1, -1, -1, -1, 3207 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3208 427, -1, 1050, -1, -1, 432, -1, -1, -1, -1, 3209 -1, 1410, -1, 440, -1, -1, -1, 725, -1, -1, 3210 728, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3211 -1, -1, -1, 1410, -1, -1, -1, -1, -1, 466, 3212 -1, 1089, 1090, -1, -1, -1, -1, -1, -1, -1, 3213 -1, -1, -1, -1, -1, -1, 764, 484, -1, 486, 3214 1437, 1460, -1, -1, -1, -1, -1, -1, 1467, -1, 3215 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3216 -1, -1, -1, 1460, -1, -1, -1, -1, -1, -1, 3217 1467, -1, -1, -1, -1, -1, -1, 805, -1, -1, 3218 527, -1, -1, -1, 1152, -1, -1, 815, -1, -1, 3219 818, -1, -1, -1, -1, 823, -1, 825, -1, -1, 3220 1519, -1, 830, -1, -1, -1, -1, -1, -1, -1, 3221 -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, 3222 -1, -1, 1519, -1, -1, -1, -1, 1195, -1, -1, 3223 -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, 3224 -1, -1, -1, -1, 591, -1, -1, -1, -1, -1, 3225 -1, -1, 1220, -1, -1, -1, -1, -1, 1091, -1, 3226 -1, -1, -1, -1, 892, 1233, -1, 1235, -1, -1, 3227 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3228 -1, -1, -1, 109, -1, -1, -1, -1, 114, 636, 3229 637, 638, -1, -1, -1, -1, 1264, -1, -1, -1, 3230 -1, -1, -1, -1, 1272, 1273, 1274, 654, -1, -1, 3231 -1, -1, -1, -1, -1, 1283, 1284, 143, -1, -1, 3232 -1, -1, -1, -1, -1, 672, -1, 153, -1, 1297, 3233 -1, 157, -1, -1, -1, -1, 683, -1, -1, -1, 3234 -1, -1, 689, -1, -1, -1, -1, 975, -1, -1, 3235 -1, -1, -1, 1321, -1, -1, -1, -1, -1, -1, 3236 -1, -1, -1, 25, 26, 27, -1, -1, -1, -1, 3237 36, -1, 38, -1, -1, -1, -1, -1, 725, 205, 3238 -1, 728, -1, 1216, -1, -1, -1, -1, -1, -1, 3239 -1, 217, -1, -1, -1, -1, -1, -1, 64, 1027, 3240 1028, -1, 1030, 1031, 70, -1, -1, -1, 74, 235, 3241 236, 77, 78, 79, 80, 81, 82, 764, 84, 85, 3242 -1, -1, 1050, -1, -1, -1, 92, -1, -1, -1, 3243 -1, -1, -1, 259, 96, -1, 98, -1, -1, -1, 3244 106, 267, 1410, -1, -1, -1, -1, -1, -1, 115, 3245 116, 117, 118, 119, 120, -1, -1, -1, 805, -1, 3246 122, 1089, 1090, -1, 290, -1, -1, 293, 815, -1, 3247 -1, 818, -1, -1, -1, -1, 823, -1, 825, -1, 3248 -1, -1, -1, 830, -1, -1, -1, -1, -1, -1, 3249 -1, -1, 1460, 36, -1, 38, -1, -1, -1, 1467, 3250 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3251 -1, -1, -1, -1, 340, 177, -1, -1, -1, 345, 3252 -1, 64, -1, 185, 1152, 187, 188, 70, -1, -1, 3253 192, 74, 194, 195, 77, 78, 79, 80, 81, 82, 3254 -1, 84, 85, -1, -1, 892, -1, -1, -1, 92, 3255 -1, 1519, -1, -1, -1, -1, -1, -1, -1, -1, 3256 -1, -1, -1, 106, -1, 108, -1, 1195, 111, -1, 3257 -1, -1, 115, 116, 117, 118, 119, 120, -1, 63, 3258 -1, -1, -1, -1, -1, -1, -1, -1, -1, 73, 3259 -1, 75, 1220, 77, 420, 421, -1, -1, -1, -1, 3260 84, 427, 264, -1, -1, 1233, -1, 1235, -1, -1, 3261 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3262 -1, -1, 448, -1, -1, 451, -1, -1, 975, -1, 3263 114, 457, 116, 117, 118, -1, 1264, -1, -1, -1, 3264 -1, -1, -1, -1, 1272, 1273, 1274, 7, -1, -1, 3265 10, 11, 12, 13, 14, 1283, 1284, -1, 484, -1, 3266 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1297, 3267 496, -1, -1, 157, -1, -1, 36, 37, 38, -1, 3268 1027, 1028, 508, 1030, 1031, -1, 512, -1, 514, 515, 3269 -1, -1, -1, 1321, -1, -1, -1, -1, -1, -1, 3270 -1, 527, -1, 1050, 64, 65, -1, -1, -1, -1, 3271 70, -1, -1, -1, 74, -1, -1, 77, 78, 79, 3272 80, 81, 82, -1, 84, 85, -1, -1, -1, -1, 3273 -1, -1, 92, 217, -1, 219, 220, 221, -1, -1, 3274 -1, -1, 1089, 1090, -1, -1, 106, -1, 108, -1, 3275 -1, -1, -1, 579, -1, 115, 116, 117, 118, 119, 3276 120, -1, -1, -1, -1, 591, -1, 593, -1, -1, 3277 596, 255, -1, -1, -1, 259, -1, -1, -1, -1, 3278 -1, -1, 1410, -1, -1, -1, -1, -1, -1, -1, 3279 -1, 275, -1, -1, -1, -1, 622, -1, -1, -1, 3280 -1, 627, -1, -1, -1, 1152, -1, -1, -1, -1, 3281 636, 637, 638, -1, -1, -1, -1, -1, -1, -1, 3282 -1, -1, -1, -1, -1, -1, -1, -1, 654, -1, 3283 -1, -1, 1460, -1, -1, -1, -1, -1, -1, 1467, 3284 324, -1, -1, -1, -1, -1, -1, -1, 1195, -1, 3285 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3286 -1, 345, -1, 689, -1, -1, 350, 351, -1, -1, 3287 -1, -1, -1, 1220, 358, -1, -1, -1, -1, -1, 3288 -1, -1, -1, -1, 710, -1, 1233, -1, 1235, -1, 3289 -1, 1519, -1, -1, -1, -1, -1, -1, -1, 43, 3290 -1, -1, 728, -1, 730, -1, -1, -1, -1, -1, 3291 -1, -1, -1, 575, 576, -1, 400, 1264, -1, -1, 3292 -1, -1, -1, -1, -1, 1272, 1273, 1274, -1, -1, 3293 -1, -1, -1, -1, 418, -1, 1283, 1284, 764, 423, 3294 -1, 425, -1, 605, -1, 89, 608, 609, -1, 611, 3295 1297, 613, 614, -1, -1, 99, 618, 619, 442, -1, 3296 -1, 445, 446, -1, -1, -1, -1, -1, -1, -1, 3297 -1, -1, -1, 36, 1321, 38, -1, 461, -1, -1, 3298 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3299 -1, 475, 818, -1, -1, -1, 822, -1, 482, 825, 3300 -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, 3301 154, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3302 -1, 84, 85, 167, -1, -1, -1, -1, -1, 92, 3303 -1, -1, -1, -1, 696, -1, -1, -1, -1, 701, 3304 702, -1, -1, 106, -1, 707, 190, -1, -1, -1, 3305 -1, -1, 115, 116, 117, 118, 119, 120, -1, -1, 3306 204, -1, -1, 1410, -1, -1, -1, -1, -1, 213, 3307 -1, -1, -1, -1, -1, -1, -1, -1, -1, 223, 3308 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3309 -1, -1, 918, -1, -1, -1, -1, -1, -1, -1, 3310 -1, -1, -1, -1, 248, -1, -1, -1, -1, 253, 3311 -1, -1, 596, 1460, -1, -1, -1, -1, -1, -1, 3312 1467, -1, 266, -1, -1, -1, -1, -1, 272, -1, 3313 274, -1, -1, -1, 960, -1, -1, -1, -1, -1, 3314 624, -1, -1, -1, -1, 629, -1, 291, -1, 975, 3315 -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 3316 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3317 26, 27, 1519, 29, 30, 31, -1, -1, 143, -1, 3318 -1, 37, -1, 1009, -1, -1, -1, -1, 153, -1, 3319 334, -1, -1, -1, -1, 339, -1, -1, -1, -1, 3320 165, -1, -1, -1, 1030, 1031, -1, -1, -1, 65, 3321 -1, -1, -1, -1, 70, -1, 72, 73, 74, -1, 3322 76, -1, -1, 367, -1, 81, 82, 371, 372, -1, 3323 374, -1, 716, -1, -1, -1, 380, 381, -1, 383, 3324 384, -1, 386, -1, 388, -1, 730, -1, -1, -1, 3325 106, -1, 108, -1, -1, -1, -1, -1, -1, -1, 3326 116, 405, -1, -1, -1, -1, 750, -1, 1094, 413, 3327 235, -1, -1, 7, -1, -1, 10, 11, 12, 13, 3328 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3329 -1, -1, -1, -1, 438, 260, -1, -1, -1, -1, 3330 -1, -1, 36, 37, 38, 449, 10, 11, 12, 13, 3331 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3332 24, 25, 26, -1, -1, 809, 1152, -1, 472, -1, 3333 64, 65, -1, 37, 478, -1, 70, -1, 822, 483, 3334 74, -1, -1, 77, 78, 79, 80, 81, 82, -1, 3335 84, 85, -1, -1, -1, -1, -1, 841, 92, -1, 3336 -1, 65, -1, -1, -1, 152, 153, -1, 1194, -1, 3337 -1, -1, 106, -1, 108, 519, -1, -1, -1, -1, 3338 -1, 115, 116, 117, 118, 119, 120, -1, -1, -1, 3339 -1, 535, -1, -1, -1, -1, -1, -1, 185, -1, 3340 -1, -1, -1, -1, -1, 192, -1, -1, -1, 1235, 3341 375, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3342 -1, -1, -1, -1, -1, -1, -1, 571, -1, 1091, 3343 -1, -1, -1, -1, -1, -1, 580, 36, -1, 38, 3344 -1, -1, -1, 587, 928, -1, -1, -1, 592, -1, 3345 -1, -1, -1, -1, -1, -1, -1, 1283, 1284, 603, 3346 -1, -1, -1, -1, -1, 64, 1292, -1, -1, -1, 3347 954, 70, -1, -1, -1, 74, -1, 264, 77, 78, 3348 79, 80, 81, 82, -1, 84, 85, -1, -1, -1, 3349 -1, -1, -1, 92, -1, -1, -1, 981, -1, -1, 3350 644, -1, -1, -1, -1, -1, -1, 106, -1, 108, 3351 -1, 476, -1, -1, -1, 114, 115, 116, 117, 118, 3352 119, 120, -1, -1, -1, -1, -1, -1, 1012, -1, 3353 -1, -1, 319, -1, -1, 679, -1, -1, -1, 1023, 3354 327, 328, -1, 330, 331, -1, -1, -1, -1, 514, 3355 -1, -1, -1, 340, 1216, -1, -1, 344, -1, -1, 3356 -1, -1, 527, -1, -1, -1, -1, -1, -1, 534, 3357 -1, -1, -1, -1, -1, -1, 363, -1, -1, 366, 3358 -1, -1, 547, 548, 1410, -1, -1, -1, -1, -1, 3359 734, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3360 744, 745, -1, -1, 569, 392, -1, -1, -1, 396, 3361 -1, -1, -1, 757, 579, -1, -1, -1, -1, -1, 3362 -1, 586, -1, -1, 1108, -1, 591, -1, -1, -1, 3363 774, -1, 776, -1, -1, -1, 780, -1, -1, -1, 3364 427, -1, -1, 1469, -1, 1471, -1, -1, -1, -1, 3365 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3366 -1, -1, -1, 450, -1, -1, -1, -1, -1, -1, 3367 -1, -1, -1, -1, -1, -1, 641, -1, -1, 1505, 3368 -1, 1507, -1, -1, 649, -1, -1, -1, -1, -1, 3369 -1, -1, -1, -1, 481, -1, -1, 484, -1, -1, 3370 -1, 845, -1, -1, -1, -1, -1, -1, 852, 1535, 3371 1194, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3372 -1, 865, -1, 867, 689, -1, -1, -1, -1, -1, 3373 -1, -1, -1, -1, -1, -1, 523, 881, -1, 526, 3374 527, -1, -1, -1, 888, -1, -1, -1, -1, -1, 3375 -1, -1, -1, -1, -1, -1, 900, -1, -1, 903, 3376 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3377 -1, -1, -1, -1, -1, -1, -1, 921, -1, -1, 3378 -1, -1, -1, -1, 571, 572, -1, -1, -1, -1, 3127 3379 -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, 3224 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, 3380 -1, 766, -1, 590, 591, -1, 593, 772, 1292, -1, 3381 -1, -1, -1, -1, 779, 602, -1, 604, 605, -1, 3382 -1, -1, -1, -1, 611, -1, -1, 278, 279, 280, 3383 -1, -1, -1, -1, 621, 622, 287, 288, -1, -1, 3384 627, 292, 293, -1, -1, -1, -1, -1, -1, 636, 3385 637, 638, -1, 304, -1, -1, -1, 822, 823, -1, 3386 825, -1, -1, -1, 1008, -1, -1, 654, -1, -1, 3387 -1, -1, 659, 660, -1, 840, 663, 664, -1, -1, 3388 -1, -1, -1, 670, -1, -1, -1, -1, -1, 340, 3238 3389 -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, 3390 -1, 688, 689, 690, -1, 692, -1, -1, -1, 696, 3391 -1, -1, -1, -1, -1, 880, -1, -1, -1, 884, 3392 -1, 1065, -1, -1, -1, 376, -1, -1, -1, -1, 3393 1074, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3394 -1, 728, 729, 10, 11, 12, 13, 14, 15, 16, 3395 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3396 1104, -1, 29, 30, 31, 1109, -1, -1, -1, -1, 3397 37, 38, -1, 1117, -1, -1, 763, 764, -1, -1, 3398 -1, 768, 769, -1, -1, -1, -1, -1, -1, -1, 3399 -1, -1, -1, -1, -1, 960, -1, -1, 65, -1, 3400 -1, -1, -1, 1147, -1, 72, 73, -1, -1, -1, 3401 975, 976, -1, -1, -1, 1159, -1, 982, 1162, -1, 3402 1164, -1, 809, 988, -1, -1, 991, -1, 993, -1, 3403 -1, 818, -1, -1, 1178, 1179, -1, 824, 825, -1, 3404 -1, 108, 829, -1, 831, 112, -1, 1012, -1, 116, 3405 -1, -1, -1, -1, 841, -1, 1200, -1, 1023, -1, 3406 -1, -1, -1, -1, -1, -1, 1550, -1, -1, -1, 3242 3407 -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, 3408 1045, -1, 1047, -1, -1, -1, 1230, -1, -1, -1, 3409 -1, -1, -1, -1, -1, -1, -1, 1062, 1063, 550, 3410 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 3411 561, 562, 563, 564, 565, 566, 567, -1, -1, -1, 3412 -1, -1, 1087, -1, -1, -1, -1, 914, -1, -1, 3413 -1, -1, -1, -1, -1, 922, -1, -1, -1, -1, 3414 -1, 928, 593, -1, -1, -1, -1, -1, -1, 936, 3247 3415 -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, 3416 -1, -1, 949, 950, -1, -1, -1, -1, 1133, -1, 3264 3417 -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, 3290 -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, 3298 -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, 3418 -1, -1, -1, 1327, -1, 1329, -1, 1152, 975, -1, 3419 -1, -1, -1, -1, 981, -1, -1, -1, 1342, -1, 3420 1344, -1, 1167, 1168, -1, -1, -1, -1, -1, -1, 3421 -1, -1, 999, 1000, -1, -1, -1, -1, 1362, -1, 3422 -1, -1, 1009, -1, -1, -1, -1, -1, 1015, 1016, 3423 -1, 1018, 1019, 1020, 1378, 1379, -1, -1, -1, -1, 3424 691, -1, -1, 1030, 1031, -1, -1, 1391, -1, -1, 3425 1394, -1, 1217, -1, -1, 36, -1, 38, -1, -1, 3426 -1, -1, 713, -1, -1, -1, -1, -1, -1, -1, 3427 -1, -1, 1416, -1, -1, 726, -1, -1, -1, -1, 3428 -1, 1425, -1, 64, 1428, 1250, 1430, 1431, 1432, 70, 3429 -1, -1, -1, 74, -1, -1, 77, 78, 79, 80, 3430 81, 82, -1, 84, 85, -1, -1, -1, 1095, 1096, 3431 1097, 92, -1, -1, -1, -1, -1, -1, -1, -1, 3432 771, 1108, -1, -1, -1, 106, -1, 108, -1, 1473, 3433 -1, 1475, 113, 1477, 115, 116, 117, 118, 119, 120, 3434 -1, -1, -1, -1, -1, -1, 1311, -1, 1492, -1, 3435 -1, 802, -1, -1, -1, -1, -1, -1, -1, -1, 3436 -1, -1, -1, -1, -1, 1152, 817, -1, -1, -1, 3437 -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 3332 3438 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3333 3439 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3334 -1, 679, 29, 30, 31, 32, 264, -1, 35, -1, 3440 -1, -1, 29, 30, 31, 32, -1, -1, 35, 36, 3441 37, 38, 39, -1, 41, -1, -1, 44, 45, 46, 3442 47, 48, 49, 50, 51, 1212, -1, -1, 55, -1, 3443 -1, -1, 59, 60, -1, 62, 1401, 64, 65, -1, 3444 67, -1, 69, 70, -1, 72, 73, 74, 1235, -1, 3445 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3446 -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, 3447 -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 3448 -1, 108, -1, -1, 111, 36, -1, 38, 115, 116, 3449 117, 118, 119, 120, -1, -1, 1283, 1284, 125, -1, 3450 -1, -1, 129, -1, -1, -1, -1, -1, -1, -1, 3451 -1, -1, -1, 64, -1, -1, -1, 968, 1483, 70, 3452 -1, 72, 73, 74, -1, -1, 77, 78, 79, 80, 3453 81, 82, -1, 84, 85, -1, -1, -1, -1, -1, 3454 -1, 92, -1, -1, -1, -1, 997, -1, -1, -1, 3455 -1, -1, -1, -1, -1, 106, -1, 108, 1009, 110, 3456 111, -1, -1, -1, 115, 116, 117, 118, 119, 120, 3457 1535, -1, -1, -1, 3, 4, 5, 6, 7, 8, 3458 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3459 19, 20, 21, 22, 23, 24, 25, 26, -1, 1050, 3460 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, 3461 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3462 -1, -1, -1, 1410, -1, -1, -1, -1, -1, -1, 3463 -1, -1, -1, -1, -1, 64, 65, -1, 67, -1, 3464 69, 70, -1, 72, 73, 74, -1, -1, 77, 78, 3465 79, 80, 81, 82, -1, 84, 85, -1, -1, -1, 3466 -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, 3467 -1, -1, -1, -1, -1, 1126, -1, 106, 36, 108, 3468 38, -1, -1, -1, -1, -1, 115, 116, 117, 118, 3469 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, 3470 129, -1, -1, -1, -1, -1, 64, -1, -1, -1, 3471 -1, -1, 70, 1500, -1, -1, 74, -1, 1169, 77, 3472 78, 79, 80, 81, 82, -1, 84, 85, -1, -1, 3473 -1, -1, 1183, 1184, 92, -1, -1, -1, 1525, 1526, 3474 -1, -1, -1, -1, -1, -1, -1, -1, 106, -1, 3475 108, -1, -1, 111, -1, -1, -1, 115, 116, 117, 3476 118, 119, 120, 1550, 3, 4, 5, 6, 7, 8, 3477 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3478 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3479 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, 3480 -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 3481 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3482 -1, 29, 30, 31, -1, 64, 65, -1, 67, 37, 3483 69, 70, -1, 72, 73, 74, -1, -1, 77, 78, 3484 79, 80, 81, 82, -1, 84, 85, -1, -1, -1, 3485 -1, -1, -1, 92, -1, -1, -1, 65, -1, -1, 3486 -1, -1, -1, -1, 72, 73, -1, 106, -1, 108, 3487 -1, -1, -1, -1, -1, -1, 115, 116, 117, 118, 3488 119, 120, -1, -1, 4, 5, 6, 7, 8, 9, 3489 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3490 20, 21, 22, 23, 24, 25, 26, -1, 116, 29, 3491 30, 31, -1, -1, -1, -1, 36, 37, 38, -1, 3492 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3493 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3494 -1, -1, -1, -1, 64, 65, 1397, 67, 37, 69, 3495 70, -1, 72, 73, 74, -1, -1, 77, 78, 79, 3496 80, 81, 82, 1414, 84, 85, -1, -1, -1, -1, 3497 -1, -1, 92, -1, -1, -1, 65, -1, -1, -1, 3498 -1, -1, -1, -1, -1, -1, 106, 76, 108, -1, 3499 -1, -1, -1, 113, -1, 115, 116, 117, 118, 119, 3500 120, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3501 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3502 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3503 -1, -1, -1, 36, 37, 38, 1487, 1488, 10, 11, 3504 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3505 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3506 -1, 64, 65, -1, 67, 37, 69, 70, -1, 72, 3507 73, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3508 -1, 84, 85, -1, -1, -1, -1, -1, -1, 92, 3509 -1, -1, -1, 65, -1, -1, -1, -1, 70, -1, 3510 72, 73, -1, 106, -1, 108, -1, -1, -1, -1, 3511 113, -1, 115, 116, 117, 118, 119, 120, 4, 5, 3512 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3513 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3514 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3515 36, 37, 38, 10, 11, 12, 13, 14, 15, 16, 3516 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3517 -1, -1, 29, 30, 31, -1, -1, -1, 64, 65, 3518 37, 67, -1, 69, 70, -1, 72, 73, 74, -1, 3519 -1, 77, 78, 79, 80, 81, 82, -1, 84, 85, 3520 -1, -1, -1, -1, -1, -1, 92, -1, 65, -1, 3521 -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, 3522 106, -1, 108, -1, -1, -1, -1, 113, -1, 115, 3523 116, 117, 118, 119, 120, 4, 5, 6, 7, 8, 3524 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3525 19, 20, 21, 22, 23, 24, 25, 26, -1, 116, 3526 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3527 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3528 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3529 30, 31, 32, 33, 34, 64, 65, 37, 67, -1, 3530 69, 70, -1, 72, 73, 74, -1, -1, 77, 78, 3531 79, 80, 81, 82, -1, 84, 85, -1, -1, -1, 3532 -1, -1, -1, 92, -1, 65, -1, -1, -1, -1, 3533 -1, -1, 72, 73, -1, -1, -1, 106, -1, 108, 3534 -1, -1, -1, -1, -1, -1, 115, 116, 117, 118, 3535 119, 120, 4, 5, 6, 7, 8, 9, 10, 11, 3536 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3537 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3538 -1, -1, -1, -1, 36, 37, 38, 10, 11, 12, 3539 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3540 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3541 -1, -1, 64, 65, 37, 67, -1, 69, 70, -1, 3542 72, 73, 74, -1, -1, 77, 78, 79, 80, 81, 3543 82, -1, 84, 85, -1, -1, -1, -1, -1, -1, 3544 92, -1, 65, -1, -1, -1, -1, -1, -1, 72, 3545 73, -1, -1, -1, 106, -1, 108, -1, -1, -1, 3546 -1, -1, -1, 115, 116, 117, 118, 119, 120, 4, 3547 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3548 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3549 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3550 -1, 36, 37, 38, 10, 11, 12, 13, 14, 15, 3551 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3552 26, -1, -1, 29, 30, 31, -1, -1, -1, 64, 3553 65, 37, 67, -1, 69, 70, -1, 72, 73, 74, 3554 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3555 85, -1, -1, -1, -1, -1, -1, 92, -1, 65, 3556 -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, 3557 -1, 106, -1, 108, -1, -1, -1, -1, -1, -1, 3558 115, 116, 117, 118, 119, 120, 4, 5, 6, 7, 3559 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3560 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3561 -1, 29, 30, 31, -1, -1, -1, -1, 36, 37, 3562 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3563 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3564 -1, -1, -1, -1, -1, -1, 64, 65, -1, 67, 3565 -1, 69, 70, -1, 72, 73, 74, -1, -1, 77, 3566 78, 79, 80, 81, 82, -1, 84, 85, -1, -1, 3567 -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, 3568 -1, -1, -1, -1, -1, -1, -1, -1, 106, -1, 3569 108, -1, -1, -1, -1, -1, -1, 115, 116, 117, 3570 118, 119, 120, 0, -1, -1, 3, 4, 5, 6, 3571 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3572 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3573 -1, -1, 29, 30, 31, 32, -1, -1, 35, -1, 3335 3574 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, 3336 3575 -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, 3576 -1, -1, -1, -1, -1, 62, -1, -1, 65, -1, 3577 67, -1, 69, 70, -1, 72, 73, 74, -1, -1, 3578 -1, -1, -1, -1, 81, 82, -1, -1, -1, -1, 3362 3579 -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, 3580 -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 3581 -1, 108, -1, -1, -1, -1, -1, -1, -1, 116, 3582 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3393 3583 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, 3584 23, 24, 25, 26, -1, -1, 29, 30, 31, 32, 3585 -1, -1, 35, -1, 37, 38, -1, -1, -1, -1, 3586 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3587 -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, 3588 -1, -1, 65, -1, 67, -1, 69, 70, -1, 72, 3589 73, 74, -1, -1, -1, -1, -1, -1, 81, 82, 3590 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3591 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3592 -1, -1, -1, 106, -1, 108, -1, -1, -1, 112, 3593 -1, -1, -1, 116, 3, 4, 5, 6, 7, 8, 3594 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3595 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3596 29, 30, 31, 32, -1, -1, 35, -1, 37, 38, 3597 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3598 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3599 -1, -1, -1, 62, -1, -1, 65, -1, 67, -1, 3600 69, 70, -1, 72, 73, 74, -1, -1, -1, -1, 3601 -1, -1, 81, 82, -1, -1, -1, -1, -1, -1, 3602 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3603 -1, -1, -1, -1, -1, -1, -1, 106, -1, 108, 3604 -1, -1, -1, -1, -1, -1, -1, 116, 3, 4, 3605 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3606 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3607 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3608 -1, -1, 37, -1, -1, -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 65, -1, 67, -1, 69, 70, -1, 72, 73, 74, 3612 -1, -1, -1, -1, -1, -1, 81, 82, -1, -1, 3613 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3614 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3615 -1, 106, -1, 108, -1, -1, -1, -1, -1, -1, 3616 -1, 116, 3, 4, 5, 6, 7, 8, 9, 10, 3617 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3618 21, 22, 23, 24, 25, 26, 27, -1, 29, 30, 3619 31, 32, -1, -1, 35, -1, 37, -1, -1, -1, 3620 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3621 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3622 -1, -1, -1, -1, 65, -1, 67, -1, 69, -1, 3623 -1, 72, 73, -1, -1, 76, 3, 4, 5, 6, 3624 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3625 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3626 -1, -1, 29, 30, 31, 32, -1, 108, 35, -1, 3627 37, -1, -1, -1, -1, 116, -1, -1, -1, -1, 3628 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3629 -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 3630 67, -1, 69, -1, -1, 72, 73, -1, 3, 4, 3631 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3632 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3633 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3634 -1, 108, 37, -1, -1, -1, -1, -1, -1, 116, 3635 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3636 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3637 65, -1, 67, -1, 69, -1, -1, 72, 73, 4, 3638 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3639 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3640 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3641 -1, -1, 37, 108, -1, -1, -1, -1, -1, -1, 3642 -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, 3643 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3644 65, -1, 67, -1, 69, 70, -1, 72, 73, 74, 3645 -1, -1, -1, -1, -1, -1, 81, 82, -1, -1, 3646 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3647 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3648 -1, 106, -1, 108, -1, -1, -1, -1, -1, -1, 3649 -1, 116, 4, 5, 6, 7, 8, 9, 10, 11, 3404 3650 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, 3651 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3652 -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, 3653 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3654 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3655 -1, -1, -1, 65, -1, 67, -1, 69, -1, -1, 3656 72, 73, -1, -1, 4, 5, 6, 7, 8, 9, 3657 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3658 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3659 30, 31, -1, -1, -1, 107, 108, 37, -1, -1, 3660 -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, 3661 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3662 -1, -1, -1, -1, -1, 65, -1, 67, -1, 69, 3663 -1, -1, 72, 73, -1, -1, -1, -1, -1, -1, 3664 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3665 -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, 3666 -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, 3667 -1, -1, -1, -1, -1, -1, 116, 4, 5, 6, 3414 3668 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3415 3669 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3416 3670 -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, 3671 37, -1, -1, -1, -1, -1, 10, 11, 12, 13, 3672 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3673 24, 25, 26, 27, -1, 29, 30, 31, 65, -1, 3674 67, -1, 69, 37, -1, 72, 73, -1, -1, -1, 3429 3675 -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, 3676 -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, 3677 -1, 65, -1, -1, -1, -1, 70, -1, 72, 73, 3678 74, 108, 76, -1, -1, -1, -1, 81, 82, 116, 3679 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3680 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3681 24, 25, 26, -1, 108, 29, 30, 31, -1, -1, 3682 -1, -1, 116, 37, -1, -1, -1, -1, -1, -1, 3481 3683 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3482 3684 -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, 3489 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3490 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3491 -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, 3500 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3501 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3502 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, 3545 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3546 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3547 -1, -1, 29, 30, 31, -1, -1, -1, -1, 36, 3548 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, 3549 -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, 3560 -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 -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, 3575 -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, 3578 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3579 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3580 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, 3581 -1, -1, 35, -1, 37, -1, -1, -1, -1, -1, 3582 -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 -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, 3592 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3593 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, 3596 -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, 3599 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3600 -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, 3606 -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, 3685 -1, 65, -1, 67, -1, 69, -1, -1, 72, 73, 3609 3686 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3610 3687 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3611 3688 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, 3689 -1, -1, -1, 37, 108, -1, -1, -1, -1, -1, 3690 -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, 3616 3691 -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, 3692 -1, 65, -1, 67, -1, 69, -1, -1, 72, 73, 3693 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3694 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3695 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3696 -1, -1, -1, 37, 108, -1, -1, -1, -1, -1, 3697 -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, 3698 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3699 -1, 65, -1, 67, -1, 69, -1, -1, 72, 73, 3700 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3701 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3702 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3703 -1, -1, -1, 37, 108, -1, -1, -1, -1, -1, 3704 -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, 3705 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3706 -1, 65, -1, 67, -1, 69, -1, -1, 72, 73, 3707 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3708 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3709 30, 31, -1, -1, -1, -1, 36, 37, 38, -1, 3710 -1, -1, -1, -1, 108, -1, -1, -1, -1, -1, 3711 -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, 3712 -1, -1, -1, -1, 64, 65, -1, -1, -1, -1, 3713 70, -1, 72, 73, 74, -1, -1, 77, 78, 79, 3714 80, 81, 82, -1, 84, 85, -1, -1, -1, -1, 3715 -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, 3716 -1, -1, -1, -1, -1, -1, 106, -1, 108, -1, 3717 -1, 111, -1, -1, -1, 115, 116, 117, 118, 119, 3718 120, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3719 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3720 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3721 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3722 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3723 29, 30, 31, -1, -1, 64, 65, -1, 37, -1, 3724 -1, 70, -1, 72, 73, 74, -1, -1, 77, 78, 3725 79, 80, 81, 82, -1, 84, 85, -1, -1, -1, 3726 -1, -1, -1, 92, -1, -1, 65, -1, -1, -1, 3727 -1, 70, -1, 72, 73, 74, -1, 106, -1, 108, 3728 109, -1, 81, 82, -1, -1, 115, 116, 117, 118, 3729 119, 120, 10, 11, 12, 13, 14, 15, 16, 17, 3730 18, 19, 20, 21, 22, 23, 24, 25, 26, 108, 3731 -1, 29, 30, 31, -1, -1, -1, 116, 36, 37, 3732 38, -1, 10, 11, 12, 13, 14, 15, 16, 17, 3733 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3734 -1, 29, 30, 31, -1, -1, 64, 65, -1, 37, 3735 -1, -1, 70, -1, 72, 73, 74, -1, -1, 77, 3736 78, 79, 80, 81, 82, -1, 84, 85, -1, -1, 3737 -1, -1, -1, -1, 92, -1, -1, 65, -1, -1, 3738 -1, -1, 70, -1, 72, 73, -1, -1, 106, 107, 3739 108, -1, -1, -1, -1, -1, -1, 115, 116, 117, 3740 118, 119, 120, 10, 11, 12, 13, 14, 15, 16, 3741 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3742 108, -1, 29, 30, 31, -1, -1, -1, 116, 36, 3743 37, 38, -1, 10, 11, 12, 13, 14, 15, 16, 3744 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3745 -1, -1, 29, 30, 31, -1, -1, 64, 65, -1, 3746 37, 38, -1, 70, -1, 72, 73, 74, -1, -1, 3747 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3748 -1, -1, -1, -1, -1, 92, -1, -1, 65, -1, 3749 -1, -1, -1, -1, -1, 72, 73, -1, -1, 106, 3750 -1, 108, -1, -1, -1, -1, -1, -1, 115, 116, 3751 117, 118, 119, 120, 10, 11, 12, 13, 14, 15, 3752 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3753 26, 108, -1, 29, 30, 31, -1, -1, -1, 116, 3754 36, 37, 38, -1, 10, 11, 12, 13, 14, 15, 3755 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3756 26, -1, -1, 29, 30, 31, -1, -1, 64, 65, 3757 -1, 37, -1, -1, 70, -1, 72, 73, 74, -1, 3758 -1, 77, 78, 79, 80, 81, 82, -1, 84, 85, 3759 -1, -1, -1, -1, -1, -1, 92, -1, -1, 65, 3760 -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, 3761 106, -1, 108, -1, -1, -1, -1, -1, -1, 115, 3762 116, 117, 118, 119, 120, 10, 11, 12, 13, 14, 3763 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3764 25, 26, 108, -1, 29, 30, 31, -1, -1, -1, 3765 116, 36, 37, 38, -1, 10, 11, 12, 13, 14, 3766 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3767 25, 26, -1, -1, 29, 30, 31, -1, -1, 64, 3768 65, -1, 37, -1, -1, 70, -1, 72, 73, 74, 3769 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3770 85, -1, -1, -1, -1, -1, -1, 92, -1, -1, 3771 65, -1, -1, -1, -1, -1, -1, 72, 73, -1, 3772 -1, 106, -1, 108, -1, -1, -1, -1, -1, -1, 3773 115, 116, 117, 118, 119, 120, 10, 11, 12, 13, 3774 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3775 24, 25, 26, 108, -1, 29, 30, 31, -1, -1, 3776 -1, 116, 36, 37, 38, -1, -1, -1, -1, -1, 3777 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3778 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3779 64, 65, -1, -1, -1, -1, 70, -1, 72, 73, 3780 74, -1, -1, 77, 78, 79, 80, 81, 82, -1, 3781 84, 85, -1, -1, -1, -1, -1, -1, 92, -1, 3782 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3783 -1, -1, 106, -1, 108, -1, -1, -1, -1, -1, 3784 -1, 115, 116, 117, 118, 119, 120, 3, 4, 5, 3620 3785 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3621 3786 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3622 3787 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3623 -1, 37, 10, 11, 12, 13, 14, 15, 16, 17,3624 1 8, 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,3788 -1, 37, -1, -1, -1, 10, 11, 12, 13, 14, 3789 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3790 25, 26, -1, -1, 29, 30, 31, -1, -1, 65, 3791 -1, 67, 37, 69, -1, -1, 72, 73, -1, -1, 3627 3792 -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, 3793 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3794 65, -1, -1, -1, -1, 70, -1, 72, 73, 74, 3795 -1, -1, -1, -1, -1, 111, 81, 82, 10, 11, 3796 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3797 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3798 -1, 106, -1, 108, -1, 37, -1, -1, -1, -1, 3799 -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, 3800 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3801 -1, -1, -1, 65, -1, -1, -1, -1, 70, -1, 3802 72, 73, 74, -1, -1, -1, -1, -1, -1, 81, 3803 82, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3804 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3805 29, 30, 31, -1, 106, -1, 108, -1, 37, -1, 3806 -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, 3807 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3808 -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, 3809 -1, 70, -1, 72, 73, 74, -1, -1, -1, -1, 3810 -1, -1, 81, 82, 10, 11, 12, 13, 14, 15, 3811 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3812 26, -1, -1, 29, 30, 31, -1, 106, -1, 108, 3813 -1, 37, -1, -1, -1, -1, -1, 116, -1, -1, 3814 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3815 -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 3816 -1, -1, -1, -1, 70, -1, 72, 73, 74, -1, 3817 -1, -1, -1, -1, -1, 81, 82, 10, 11, 12, 3818 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3819 23, 24, 25, 26, 27, -1, 29, 30, 31, -1, 3820 106, -1, 108, -1, 37, -1, -1, -1, -1, -1, 3821 116, -1, -1, -1, 10, 11, 12, 13, 14, 15, 3822 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3823 26, 27, 65, 29, 30, 31, -1, -1, -1, 72, 3824 73, 37, -1, 76, 10, 11, 12, 13, 14, 15, 3825 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3826 26, -1, -1, 29, 30, 31, -1, -1, -1, 65, 3827 -1, 37, 38, 106, -1, 108, 72, 73, -1, -1, 3828 76, -1, -1, 116, -1, -1, -1, -1, -1, -1, 3829 -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 3830 -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, 3831 106, -1, 108, -1, -1, -1, -1, -1, -1, -1, 3832 116, -1, -1, -1, 10, 11, 12, 13, 14, 15, 3833 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3834 26, 27, 108, 29, 30, 31, 112, -1, -1, -1, 3835 116, 37, -1, 10, 11, 12, 13, 14, 15, 16, 3836 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3837 -1, -1, 29, 30, 31, -1, -1, -1, -1, 65, 3838 37, 38, -1, -1, -1, -1, 72, 73, -1, -1, 3839 76, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3840 19, 20, 21, 22, 23, 24, 25, 26, 65, -1, 3841 29, 30, 31, -1, -1, 72, 73, -1, 37, -1, 3842 -1, -1, 108, -1, -1, -1, -1, -1, -1, -1, 3843 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3844 -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, 3845 -1, 108, -1, 72, 73, 112, -1, -1, -1, 116, 3846 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3847 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3848 29, 30, 31, -1, -1, -1, -1, 106, 37, 108, 3849 -1, -1, -1, -1, -1, -1, -1, 116, 10, 11, 3850 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3851 22, 23, 24, 25, 26, -1, 65, 29, 30, 31, 3852 -1, -1, -1, 72, 73, 37, -1, 10, 11, 12, 3853 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3854 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3855 -1, -1, -1, 65, 37, -1, -1, 106, -1, 108, 3856 72, 73, -1, -1, -1, -1, -1, 116, -1, -1, 3857 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3858 -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, 3859 73, -1, -1, -1, -1, -1, 108, -1, -1, -1, 3860 -1, -1, -1, -1, 116, -1, -1, 10, 11, 12, 3861 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3862 23, 24, 25, 26, -1, 108, 29, 30, 31, -1, 3863 -1, -1, -1, 116, 37, -1, 10, 11, 12, 13, 3864 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3865 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3866 -1, -1, 65, 37, -1, -1, -1, -1, -1, 72, 3867 73, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3868 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3869 -1, 65, 29, 30, 31, -1, -1, -1, 72, 73, 3870 37, -1, -1, -1, -1, 108, -1, -1, -1, -1, 3871 -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, 3872 -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 3873 -1, -1, -1, -1, 108, 72, 73, -1, -1, -1, 3874 -1, -1, 116, 10, 11, 12, 13, 14, 15, 16, 3875 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3876 -1, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3877 37, 108, -1, -1, -1, -1, -1, -1, -1, 116, 3878 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3879 20, 21, 22, 23, 24, 25, 26, -1, 65, 29, 3880 30, 31, -1, -1, -1, 72, 73, 37, -1, 10, 3881 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3882 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3883 31, -1, -1, -1, -1, 65, 37, -1, -1, -1, 3884 -1, 108, 72, 73, -1, -1, -1, -1, -1, 116, 3885 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3886 -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, 3887 -1, 72, 73, -1, -1, -1, -1, -1, 108, -1, 3888 -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, 3889 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3890 -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, 3891 -1, -1, -1, -1, -1, 116, 4, 5, 6, 7, 3631 3892 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3632 3893 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3633 3894 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3895 -1, -1, 36, -1, 38, 39, -1, 41, -1, -1, 3896 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, 3897 54, 55, -1, -1, -1, 59, 60, 65, 62, 67, 3898 64, 69, -1, -1, 72, 73, 70, -1, -1, -1, 3899 74, -1, -1, 77, 78, 79, 80, 81, 82, -1, 3900 84, 85, -1, -1, -1, -1, -1, -1, 92, -1, 3901 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107, 3902 -1, -1, 106, -1, 108, -1, -1, 111, -1, -1, 3903 -1, 115, 116, 117, 118, 119, 120, -1, -1, -1, 3904 -1, 125, -1, -1, 36, 129, 38, 39, -1, 41, 3905 -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 3906 -1, -1, -1, 55, -1, -1, -1, 59, 60, -1, 3907 62, -1, 64, -1, -1, -1, -1, -1, 70, -1, 3908 -1, -1, 74, -1, -1, 77, 78, 79, 80, 81, 3909 82, -1, 84, 85, -1, -1, -1, -1, -1, -1, 3910 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3911 -1, -1, -1, -1, 106, -1, 108, -1, -1, 111, 3912 -1, -1, -1, 115, 116, 117, 118, 119, 120, -1, 3913 -1, -1, -1, 125, -1, -1, -1, 129, 4, 5, 3914 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3915 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3916 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3917 -1, 37, -1, -1, 36, -1, 38, 39, -1, 41, 3918 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 3919 -1, -1, 54, 55, -1, -1, -1, 59, 60, 65, 3920 62, 67, 64, 69, -1, -1, 72, 73, 70, -1, 3921 -1, -1, 74, -1, -1, 77, 78, 79, 80, 81, 3922 82, -1, 84, 85, -1, -1, -1, -1, 94, -1, 3923 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3924 -1, -1, -1, -1, 106, -1, 108, -1, -1, 111, 3925 -1, -1, -1, 115, 116, 117, 118, 119, 120, 36, 3926 -1, 38, 39, 125, 41, 42, 43, 44, 45, 46, 3927 47, 48, 49, 50, 51, -1, -1, -1, 55, -1, 3928 -1, -1, 59, 60, -1, 62, -1, 64, -1, -1, 3929 -1, -1, -1, 70, -1, -1, -1, 74, -1, -1, 3930 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3931 -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, 3932 -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 3933 -1, 108, -1, -1, 111, -1, -1, -1, 115, 116, 3934 117, 118, 119, 120, 36, -1, 38, 39, 125, 41, 3935 -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 3936 -1, -1, -1, 55, -1, -1, -1, 59, 60, -1, 3937 62, -1, 64, -1, -1, -1, -1, -1, 70, -1, 3938 -1, -1, 74, -1, -1, 77, 78, 79, 80, 81, 3939 82, -1, 84, 85, -1, -1, -1, -1, -1, -1, 3940 92, 36, -1, 38, -1, -1, -1, -1, -1, -1, 3941 -1, -1, -1, -1, 106, -1, 108, -1, -1, 111, 3942 36, -1, 38, 115, 116, 117, 118, 119, 120, 64, 3943 -1, -1, -1, 125, -1, 70, -1, -1, -1, 74, 3944 -1, -1, 77, 78, 79, 80, 81, 82, 64, 84, 3945 85, -1, -1, -1, 70, -1, -1, 92, 74, -1, 3946 -1, 77, 78, 79, 80, 81, 82, -1, 84, 85, 3947 -1, 106, -1, 108, -1, -1, 92, 36, -1, 38, 3948 115, 116, 117, 118, 119, 120, -1, -1, -1, -1, 3949 106, -1, 108, -1, -1, -1, 36, -1, 38, 115, 3950 116, 117, 118, 119, 120, 64, -1, -1, -1, -1, 3951 -1, 70, -1, -1, -1, 74, -1, -1, 77, 78, 3952 79, 80, 81, 82, 64, 84, 85, -1, -1, -1, 3953 70, -1, -1, 92, 74, -1, -1, 77, 78, 79, 3954 80, 81, 82, -1, 84, 85, -1, 106, -1, 108, 3955 -1, -1, 92, 36, -1, 38, 115, 116, 117, 118, 3956 119, 120, -1, -1, -1, -1, 106, -1, 108, -1, 3957 -1, -1, 36, -1, 38, 115, 116, 117, 118, 119, 3958 120, 64, -1, -1, -1, -1, -1, 70, -1, -1, 3959 -1, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3960 64, 84, 85, -1, -1, -1, 70, -1, -1, 92, 3961 74, -1, -1, 77, 78, 79, 80, 81, 82, -1, 3962 84, 85, -1, 106, -1, -1, -1, -1, 92, -1, 3963 -1, -1, 115, 116, 117, 118, 119, 120, -1, -1, 3964 -1, -1, 106, -1, -1, -1, -1, -1, -1, -1, 3965 -1, 115, 116, 117, 118, 119, 120, 4, 5, 6, 3966 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3967 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3634 3968 -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,3682 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,3683 21, 22, 23, 24, 25, 26, -1, -1, 29, 30,3684 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,3704 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,3705 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,3714 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,3715 23, 24, 25, 26, -1, -1, 29, 30, 31, -1,3716 -1, -1, -1, 36, 37, 38, -1, -1, -1, -1,3717 -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,3725 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,3726 27, -1, 29, 30, 31, -1, -1, -1, -1, -1,3727 3969 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3728 3970 -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, 3971 -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 3972 67, -1, 69, 70, -1, 72, 73, 74, -1, -1, 3973 -1, -1, -1, -1, 81, 82, 3, 4, 5, 6, 3995 3974 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3996 3975 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, … … 3998 3977 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3999 3978 -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, 3979 -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 3980 67, -1, 69, -1, -1, 72, 73, 3, 4, 5, 4008 3981 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 4009 3982 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, … … 4011 3984 -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, 4012 3985 -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, 3986 -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 3987 -1, 67, -1, 69, -1, -1, 72, 73, 4, 5, 3988 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3989 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3990 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3991 -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, 4021 3992 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4022 -1, 60, -1, -1, -1, -1, -1, -1, 67, 68 3993 -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 3994 -1, 67, -1, 69, -1, -1, 72, 73 4023 3995 }; 4024 3996 … … 4030 4002 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 4031 4003 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 2 05, 206, 207, 208, 209, 210, 211, 212, 213, 214,4035 2 15, 216, 217, 218, 219, 220, 222, 223, 224, 225,4036 2 26, 227, 228, 229, 231, 232, 233, 234, 235, 236,4037 2 37, 245, 246, 272, 273, 274, 282, 285, 291, 292,4038 294, 296, 297, 303, 308, 312, 313, 314, 315, 316,4039 3 17, 318, 319, 339, 356, 357, 358, 359, 65, 111,4040 13 1, 206, 208, 216, 218, 228, 232, 234, 273, 75,4041 10 1, 301, 302, 303, 301, 301, 65, 67, 68, 69,4042 13 0, 131, 262, 263, 283, 284, 67, 68, 263, 101,4043 294, 11, 190, 101, 111, 308, 313, 314, 315, 317,4044 3 18, 319, 104, 126, 103, 209, 216, 218, 312, 316,4045 3 55, 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 3 16, 320, 321, 322, 323, 324, 330, 3, 27, 71,4049 23 0, 3, 5, 67, 103, 111, 208, 219, 223, 226,4050 2 35, 274, 312, 316, 359, 206, 208, 218, 228, 232,4051 2 34, 273, 312, 316, 32, 224, 224, 219, 226, 127,4052 2 24, 219, 224, 219, 68, 101, 106, 263, 274, 106,4053 2 63, 224, 219, 108, 127, 127, 0, 126, 101, 164,4054 30 1, 301, 126, 103, 216, 218, 357, 261, 261, 218,4055 12 3, 101, 111, 298, 308, 312, 103, 111, 359, 295,4056 22 1, 303, 101, 279, 101, 101, 49, 101, 36, 38,4057 59, 65, 69, 72, 73, 74, 75, 79, 80, 87,4058 10 1, 103, 110, 111, 112, 113, 114, 115, 128, 132,4059 13 3, 134, 135, 140, 141, 142, 143, 144, 145, 146,4060 1 47, 148, 149, 150, 151, 152, 153, 155, 157, 216,4061 2 65, 281, 355, 360, 218, 102, 102, 102, 102, 102,4062 10 2, 102, 67, 68, 103, 216, 261, 339, 357, 103,4063 11 1, 155, 208, 209, 215, 218, 222, 223, 228, 231,4064 23 2, 234, 251, 252, 256, 257, 258, 259, 273, 339,4065 35 1, 352, 353, 354, 359, 360, 104, 101, 312, 316,4066 3 59, 101, 108, 124, 103, 106, 111, 155, 267, 107,4067 1 26, 108, 124, 101, 108, 124, 108, 124, 108, 124,4068 30 1, 124, 308, 309, 310, 311, 321, 322, 323, 324,4069 2 18, 307, 320, 57, 300, 103, 301, 338, 339, 301,4070 30 1, 164, 126, 101, 301, 338, 301, 301, 218, 298,4071 10 1, 101, 217, 218, 216, 218, 104, 126, 216, 355,4072 36 0, 164, 126, 261, 266, 208, 223, 312, 316, 164,4073 1 26, 283, 218, 228, 124, 218, 218, 281, 38, 103,4074 2 16, 238, 239, 240, 241, 355, 359, 106, 247, 263,4075 1 06, 218, 283, 124, 124, 294, 126, 131, 260, 3,4076 1 27, 198, 199, 213, 215, 218, 126, 300, 101, 300,4077 1 55, 308, 218, 101, 126, 261, 106, 32, 33, 34,4078 2 16, 275, 276, 278, 126, 121, 123, 280, 126, 219,4079 2 25, 226, 261, 304, 305, 306, 101, 133, 101, 140,4080 14 0, 142, 101, 140, 101, 101, 140, 140, 131, 103,4081 1 55, 160, 164, 216, 264, 355, 104, 126, 142, 142,4082 75, 78, 79, 80, 101, 103, 105, 90, 91, 92,4083 9 3, 94, 95, 96, 97, 98, 99, 123, 159, 142,4084 11 1, 116, 117, 113, 114, 81, 82, 83, 84, 118,4085 1 19, 85, 86, 112, 120, 121, 87, 88, 122, 123,4086 36 2, 101, 111, 334, 335, 336, 337, 338, 102, 108,4087 10 1, 338, 339, 101, 338, 339, 126, 101, 216, 357,4088 10 4, 126, 103, 111, 127, 216, 218, 350, 351, 359,4089 36 0, 127, 101, 103, 111, 308, 325, 326, 327, 328,4090 3 29, 330, 331, 332, 333, 339, 340, 341, 342, 343,4091 3 44, 345, 111, 359, 218, 127, 127, 111, 216, 218,4092 35 2, 261, 216, 339, 352, 261, 101, 126, 126, 126,4093 10 4, 126, 65, 73, 103, 105, 263, 267, 268, 269,4094 27 0, 271, 126, 126, 126, 126, 126, 126, 298, 102,4095 10 2, 102, 102, 102, 102, 102, 307, 320, 101, 266,4096 10 4, 198, 126, 298, 160, 265, 160, 265, 298, 103,4097 198, 300, 164, 126, 198, 102, 240, 241, 104, 126,4098 10 1, 109, 111, 242, 244, 307, 308, 320, 338, 346,4099 3 47, 348, 349, 107, 239, 108, 124, 108, 124, 263,4100 2 38, 108, 361, 123, 248, 247, 218, 253, 254, 255,4101 2 58, 259, 102, 108, 164, 126, 111, 155, 126, 215,4102 2 18, 252, 351, 359, 292, 293, 101, 111, 325, 102,4103 1 08, 362, 263, 275, 101, 106, 263, 265, 275, 102,4104 1 08, 101, 133, 102, 109, 264, 264, 103, 131, 137,4105 1 55, 265, 264, 104, 126, 102, 108, 102, 101, 111,4106 3 46, 102, 108, 155, 103, 131, 103, 136, 137, 126,4107 10 3, 131, 155, 155, 142, 142, 142, 143, 143, 144,4108 1 44, 145, 145, 145, 145, 146, 146, 147, 148, 149,4109 15 0, 151, 109, 160, 155, 126, 335, 336, 337, 218,4110 3 34, 301, 301, 155, 265, 126, 260, 111, 126, 216,4111 3 39, 352, 218, 222, 104, 126, 104, 359, 104, 101,4112 1 26, 308, 326, 327, 328, 331, 341, 342, 343, 104,4113 1 26, 218, 325, 329, 340, 101, 301, 344, 362, 301,4114 30 1, 362, 101, 301, 344, 301, 301, 301, 301, 339,4115 2 16, 350, 360, 261, 104, 108, 104, 108, 362, 216,4116 35 2, 362, 249, 250, 251, 252, 249, 249, 261, 155,4117 1 26, 103, 263, 109, 108, 361, 267, 73, 103, 109,4118 27 1, 28, 200, 201, 261, 249, 131, 298, 131, 300,4119 10 1, 338, 339, 101, 338, 339, 133, 339, 164, 253,4120 10 2, 102, 102, 102, 104, 164, 198, 164, 106, 124,4121 12 4, 103, 308, 347, 348, 349, 153, 154, 218, 346,4122 2 43, 244, 243, 301, 301, 263, 301, 107, 263, 107,4123 1 54, 361, 127, 127, 131, 213, 127, 127, 249, 101,4124 11 1, 359, 127, 107, 218, 276, 277, 127, 126, 126,4125 10 1, 127, 102, 305, 160, 161, 109, 124, 103, 133,4126 19 1, 192, 193, 102, 102, 126, 109, 102, 102, 102,4127 1 55, 218, 106, 142, 157, 155, 156, 158, 108, 127,4128 1 26, 126, 102, 108, 155, 126, 153, 109, 253, 102,4129 10 2, 102, 334, 253, 102, 249, 216, 352, 103, 111,4130 1 55, 155, 218, 331, 253, 102, 102, 102, 102, 102,4131 10 2, 102, 7, 218, 325, 329, 340, 126, 126, 362,4132 1 26, 126, 102, 127, 127, 127, 127, 266, 127, 153,4133 1 54, 155, 299, 126, 267, 269, 107, 126, 202, 263,4004 37, 38, 62, 65, 67, 69, 70, 72, 73, 74, 4005 81, 82, 106, 108, 116, 134, 138, 195, 210, 211, 4006 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 4007 222, 223, 224, 225, 226, 227, 229, 230, 231, 232, 4008 233, 234, 235, 236, 238, 239, 240, 241, 242, 243, 4009 244, 252, 253, 279, 280, 281, 289, 292, 298, 299, 4010 301, 303, 304, 310, 315, 319, 320, 321, 322, 323, 4011 324, 325, 326, 346, 363, 364, 365, 366, 70, 116, 4012 136, 213, 215, 223, 225, 235, 239, 241, 280, 80, 4013 106, 308, 309, 310, 308, 308, 70, 72, 73, 74, 4014 135, 136, 269, 270, 290, 291, 72, 73, 270, 106, 4015 301, 11, 196, 106, 116, 315, 320, 321, 322, 324, 4016 325, 326, 109, 131, 108, 216, 223, 225, 319, 323, 4017 362, 363, 366, 367, 132, 128, 273, 111, 132, 170, 4018 72, 73, 134, 268, 132, 132, 132, 113, 132, 72, 4019 73, 106, 116, 305, 314, 315, 316, 317, 318, 319, 4020 323, 327, 328, 329, 330, 331, 337, 3, 27, 76, 4021 237, 3, 5, 72, 108, 116, 215, 226, 230, 233, 4022 242, 281, 319, 323, 366, 213, 215, 225, 235, 239, 4023 241, 280, 319, 323, 32, 231, 231, 226, 233, 132, 4024 231, 226, 231, 226, 73, 106, 111, 270, 281, 111, 4025 270, 231, 226, 113, 132, 132, 0, 131, 106, 170, 4026 308, 308, 131, 108, 223, 225, 364, 268, 268, 225, 4027 128, 106, 116, 305, 315, 319, 108, 116, 366, 302, 4028 228, 310, 106, 286, 106, 106, 49, 106, 36, 38, 4029 64, 70, 74, 77, 78, 79, 80, 84, 85, 92, 4030 106, 108, 115, 116, 117, 118, 119, 120, 133, 138, 4031 139, 140, 141, 146, 147, 148, 149, 150, 151, 152, 4032 153, 154, 155, 156, 157, 158, 159, 161, 163, 223, 4033 272, 288, 362, 367, 225, 107, 107, 107, 107, 107, 4034 107, 107, 72, 73, 108, 223, 268, 346, 364, 108, 4035 116, 161, 215, 216, 222, 225, 229, 230, 235, 238, 4036 239, 241, 258, 259, 263, 264, 265, 266, 280, 346, 4037 358, 359, 360, 361, 366, 367, 109, 106, 319, 323, 4038 366, 106, 113, 129, 108, 111, 116, 161, 274, 112, 4039 131, 113, 129, 106, 113, 129, 113, 129, 113, 129, 4040 308, 129, 315, 316, 317, 318, 328, 329, 330, 331, 4041 225, 314, 327, 62, 307, 108, 308, 345, 346, 308, 4042 308, 170, 131, 106, 308, 345, 308, 308, 225, 305, 4043 106, 106, 224, 225, 223, 225, 109, 131, 223, 362, 4044 367, 170, 131, 268, 273, 215, 230, 319, 323, 170, 4045 131, 290, 225, 235, 129, 225, 225, 288, 38, 108, 4046 223, 245, 246, 247, 248, 362, 366, 111, 254, 270, 4047 111, 225, 290, 129, 129, 301, 131, 136, 267, 3, 4048 132, 205, 206, 220, 222, 225, 131, 307, 106, 307, 4049 161, 315, 225, 106, 131, 268, 111, 32, 33, 34, 4050 223, 282, 283, 285, 131, 126, 128, 287, 131, 226, 4051 232, 233, 268, 311, 312, 313, 106, 139, 106, 146, 4052 146, 148, 106, 146, 106, 106, 146, 146, 136, 108, 4053 161, 166, 170, 223, 271, 362, 109, 131, 148, 148, 4054 80, 83, 84, 85, 106, 108, 110, 95, 96, 97, 4055 98, 99, 100, 101, 102, 103, 104, 128, 165, 148, 4056 116, 121, 122, 118, 119, 86, 87, 88, 89, 123, 4057 124, 90, 91, 117, 125, 126, 92, 93, 127, 128, 4058 369, 106, 116, 341, 342, 343, 344, 345, 107, 113, 4059 106, 345, 346, 106, 345, 346, 131, 106, 223, 364, 4060 109, 131, 108, 116, 132, 223, 225, 357, 358, 366, 4061 367, 132, 106, 108, 116, 315, 332, 333, 334, 335, 4062 336, 337, 338, 339, 340, 346, 347, 348, 349, 350, 4063 351, 352, 116, 366, 225, 132, 132, 116, 223, 225, 4064 359, 268, 223, 346, 359, 268, 106, 131, 131, 131, 4065 109, 131, 70, 78, 108, 110, 270, 274, 275, 276, 4066 277, 278, 131, 131, 131, 131, 131, 131, 305, 107, 4067 107, 107, 107, 107, 107, 107, 314, 327, 106, 273, 4068 109, 205, 131, 305, 166, 272, 166, 272, 305, 108, 4069 205, 307, 170, 131, 205, 107, 247, 248, 109, 131, 4070 106, 114, 116, 249, 251, 314, 315, 327, 345, 353, 4071 354, 355, 356, 112, 246, 113, 129, 113, 129, 270, 4072 245, 113, 368, 128, 255, 254, 225, 260, 261, 262, 4073 265, 266, 107, 113, 170, 131, 116, 161, 131, 222, 4074 225, 259, 358, 366, 299, 300, 106, 116, 332, 107, 4075 113, 369, 270, 282, 106, 111, 270, 272, 282, 107, 4076 113, 106, 139, 107, 114, 271, 271, 108, 136, 143, 4077 161, 272, 271, 109, 131, 107, 113, 107, 106, 116, 4078 353, 107, 113, 161, 108, 136, 108, 142, 143, 131, 4079 108, 136, 161, 161, 148, 148, 148, 149, 149, 150, 4080 150, 151, 151, 151, 151, 152, 152, 153, 154, 155, 4081 156, 157, 114, 166, 161, 131, 342, 343, 344, 225, 4082 341, 308, 308, 161, 272, 131, 267, 116, 131, 223, 4083 346, 359, 225, 229, 109, 131, 109, 366, 109, 106, 4084 131, 315, 333, 334, 335, 338, 348, 349, 350, 109, 4085 131, 225, 332, 336, 347, 106, 308, 351, 369, 308, 4086 308, 369, 106, 308, 351, 308, 308, 308, 308, 346, 4087 223, 357, 367, 268, 109, 113, 109, 113, 369, 223, 4088 359, 369, 256, 257, 258, 259, 256, 256, 268, 161, 4089 131, 108, 270, 114, 113, 368, 274, 78, 108, 114, 4090 278, 28, 207, 208, 268, 256, 136, 305, 136, 307, 4091 106, 345, 346, 106, 345, 346, 139, 346, 170, 260, 4092 107, 107, 107, 107, 109, 170, 205, 170, 111, 129, 4093 129, 108, 315, 354, 355, 356, 159, 160, 225, 353, 4094 250, 251, 250, 308, 308, 270, 308, 112, 270, 112, 4095 160, 368, 132, 132, 136, 220, 132, 132, 256, 106, 4096 116, 366, 132, 112, 225, 283, 284, 132, 131, 131, 4097 106, 132, 107, 312, 166, 167, 114, 129, 108, 139, 4098 197, 198, 199, 107, 107, 131, 114, 107, 107, 107, 4099 161, 225, 111, 148, 163, 161, 162, 164, 113, 132, 4100 131, 131, 107, 113, 161, 131, 159, 114, 260, 107, 4101 107, 107, 341, 260, 107, 256, 223, 359, 108, 116, 4102 161, 161, 225, 338, 260, 107, 107, 107, 107, 107, 4103 107, 107, 7, 225, 332, 336, 347, 131, 131, 369, 4104 131, 131, 107, 132, 132, 132, 132, 273, 132, 159, 4105 160, 161, 306, 131, 274, 276, 112, 131, 209, 270, 4134 4106 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 4107 51, 55, 59, 60, 70, 108, 125, 136, 137, 138, 4108 167, 168, 169, 170, 171, 172, 174, 175, 187, 189, 4109 190, 195, 202, 210, 304, 28, 132, 128, 273, 131, 4110 131, 107, 132, 170, 245, 109, 107, 107, 107, 353, 4111 249, 255, 112, 107, 113, 109, 109, 132, 225, 113, 4112 369, 286, 107, 282, 213, 215, 223, 294, 295, 296, 4113 297, 288, 107, 107, 114, 160, 106, 107, 114, 113, 4114 161, 161, 275, 113, 132, 164, 109, 136, 144, 145, 4115 161, 143, 132, 144, 159, 163, 132, 106, 345, 346, 4116 132, 132, 131, 132, 132, 132, 161, 107, 132, 106, 4117 345, 346, 106, 351, 106, 351, 346, 224, 7, 116, 4118 132, 161, 260, 260, 259, 263, 263, 264, 113, 113, 4119 107, 107, 109, 94, 120, 132, 132, 144, 274, 161, 4120 113, 129, 210, 214, 225, 229, 106, 106, 168, 106, 4121 106, 129, 136, 129, 136, 116, 136, 167, 106, 170, 4122 162, 162, 109, 70, 137, 138, 114, 111, 129, 132, 4123 131, 132, 209, 107, 161, 260, 260, 308, 107, 112, 4124 106, 345, 346, 131, 107, 131, 132, 305, 112, 131, 4125 132, 132, 107, 111, 197, 109, 160, 129, 197, 199, 4126 113, 132, 368, 162, 109, 132, 83, 110, 113, 132, 4127 132, 109, 132, 107, 131, 107, 107, 109, 109, 109, 4128 132, 107, 131, 131, 131, 161, 161, 132, 109, 132, 4129 132, 132, 132, 131, 131, 160, 160, 109, 109, 132, 4130 132, 270, 225, 166, 166, 45, 166, 131, 129, 129, 4131 166, 129, 129, 166, 56, 57, 58, 191, 192, 193, 4132 129, 61, 129, 111, 308, 142, 172, 112, 129, 132, 4133 132, 131, 94, 265, 266, 107, 295, 113, 129, 113, 4134 129, 112, 293, 114, 139, 107, 107, 114, 164, 109, 4135 112, 109, 108, 145, 108, 145, 145, 109, 109, 109, 4136 260, 109, 260, 260, 260, 132, 132, 109, 109, 107, 4137 107, 109, 113, 94, 259, 94, 132, 109, 109, 107, 4138 107, 106, 107, 167, 188, 210, 129, 107, 106, 106, 4139 170, 193, 56, 57, 161, 112, 168, 112, 107, 107, 4140 260, 111, 131, 131, 294, 139, 200, 106, 129, 200, 4141 132, 114, 131, 131, 132, 132, 132, 132, 109, 109, 4142 131, 132, 109, 168, 42, 43, 111, 178, 179, 180, 4143 166, 168, 132, 107, 167, 111, 180, 94, 131, 94, 4144 131, 106, 106, 129, 129, 129, 132, 131, 268, 305, 4145 112, 113, 114, 160, 107, 109, 161, 144, 144, 107, 4146 107, 107, 107, 263, 40, 160, 176, 177, 306, 114, 4147 131, 168, 178, 107, 129, 168, 129, 131, 107, 131, 4148 107, 131, 94, 131, 94, 131, 107, 294, 139, 136, 4149 201, 107, 129, 114, 132, 132, 168, 94, 113, 114, 4150 132, 203, 204, 210, 129, 167, 167, 203, 170, 194, 4151 223, 362, 170, 194, 107, 131, 107, 131, 112, 107, 4152 113, 161, 109, 109, 160, 176, 179, 181, 182, 131, 4153 129, 179, 183, 184, 132, 106, 116, 305, 353, 136, 4154 132, 170, 194, 170, 194, 106, 129, 136, 168, 173, 4155 112, 179, 210, 167, 54, 173, 186, 112, 179, 107, 4156 225, 107, 132, 132, 288, 168, 173, 129, 185, 186, 4157 173, 186, 170, 170, 107, 107, 107, 185, 132, 132, 4158 170, 170, 132, 132 4182 4159 }; 4183 4160 … … 5052 5029 break; 5053 5030 5054 case 1 5:5055 5056 /* Line 1806 of yacc.c */ 5057 #line 3 29"parser.yy"5031 case 17: 5032 5033 /* Line 1806 of yacc.c */ 5034 #line 334 "parser.yy" 5058 5035 { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); } 5059 5036 break; 5060 5037 5061 case 1 6:5062 5063 /* Line 1806 of yacc.c */ 5064 #line 33 0"parser.yy"5038 case 18: 5039 5040 /* Line 1806 of yacc.c */ 5041 #line 335 "parser.yy" 5065 5042 { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); } 5066 5043 break; 5067 5044 5068 case 1 7:5069 5070 /* Line 1806 of yacc.c */ 5071 #line 3 37"parser.yy"5045 case 19: 5046 5047 /* Line 1806 of yacc.c */ 5048 #line 342 "parser.yy" 5072 5049 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5073 5050 break; 5074 5051 5075 case 18:5076 5077 /* Line 1806 of yacc.c */ 5078 #line 3 39"parser.yy"5052 case 20: 5053 5054 /* Line 1806 of yacc.c */ 5055 #line 344 "parser.yy" 5079 5056 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5080 5057 break; 5081 5058 5082 case 19:5083 5084 /* Line 1806 of yacc.c */ 5085 #line 34 1"parser.yy"5059 case 21: 5060 5061 /* Line 1806 of yacc.c */ 5062 #line 346 "parser.yy" 5086 5063 { (yyval.en) = (yyvsp[(2) - (3)].en); } 5087 5064 break; 5088 5065 5089 case 2 0:5090 5091 /* Line 1806 of yacc.c */ 5092 #line 34 3"parser.yy"5066 case 22: 5067 5068 /* Line 1806 of yacc.c */ 5069 #line 348 "parser.yy" 5093 5070 { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); } 5094 5071 break; 5095 5072 5096 case 2 2:5097 5098 /* Line 1806 of yacc.c */ 5099 #line 35 3"parser.yy"5073 case 24: 5074 5075 /* Line 1806 of yacc.c */ 5076 #line 358 "parser.yy" 5100 5077 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); } 5101 5078 break; 5102 5079 5103 case 2 3:5104 5105 /* Line 1806 of yacc.c */ 5106 #line 3 55"parser.yy"5080 case 25: 5081 5082 /* Line 1806 of yacc.c */ 5083 #line 360 "parser.yy" 5107 5084 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); } 5108 5085 break; 5109 5086 5110 case 2 4:5111 5112 /* Line 1806 of yacc.c */ 5113 #line 3 57"parser.yy"5087 case 26: 5088 5089 /* Line 1806 of yacc.c */ 5090 #line 362 "parser.yy" 5114 5091 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5115 5092 break; 5116 5093 5117 case 2 6:5118 5119 /* Line 1806 of yacc.c */ 5120 #line 36 0"parser.yy"5094 case 28: 5095 5096 /* Line 1806 of yacc.c */ 5097 #line 365 "parser.yy" 5121 5098 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5122 5099 break; 5123 5100 5124 case 28:5125 5126 /* Line 1806 of yacc.c */ 5127 #line 36 3"parser.yy"5101 case 30: 5102 5103 /* Line 1806 of yacc.c */ 5104 #line 368 "parser.yy" 5128 5105 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); } 5129 5106 break; 5130 5107 5131 case 29:5132 5133 /* Line 1806 of yacc.c */ 5134 #line 3 65"parser.yy"5108 case 31: 5109 5110 /* Line 1806 of yacc.c */ 5111 #line 370 "parser.yy" 5135 5112 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); } 5136 5113 break; 5137 5114 5138 case 3 0:5139 5140 /* Line 1806 of yacc.c */ 5141 #line 3 68"parser.yy"5115 case 32: 5116 5117 /* Line 1806 of yacc.c */ 5118 #line 373 "parser.yy" 5142 5119 { (yyval.en) = 0; } 5143 5120 break; 5144 5121 5145 case 3 2:5146 5147 /* Line 1806 of yacc.c */ 5148 #line 37 4"parser.yy"5122 case 34: 5123 5124 /* Line 1806 of yacc.c */ 5125 #line 379 "parser.yy" 5149 5126 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 5150 5127 break; 5151 5128 5152 case 3 3:5153 5154 /* Line 1806 of yacc.c */ 5155 #line 3 79"parser.yy"5129 case 35: 5130 5131 /* Line 1806 of yacc.c */ 5132 #line 384 "parser.yy" 5156 5133 { (yyval.en) = 0; } 5157 5134 break; 5158 5135 5159 case 3 5:5160 5161 /* Line 1806 of yacc.c */ 5162 #line 38 2"parser.yy"5136 case 37: 5137 5138 /* Line 1806 of yacc.c */ 5139 #line 387 "parser.yy" 5163 5140 { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); } 5164 5141 break; 5165 5142 5166 case 3 6:5167 5168 /* Line 1806 of yacc.c */ 5169 #line 3 87"parser.yy"5143 case 38: 5144 5145 /* Line 1806 of yacc.c */ 5146 #line 392 "parser.yy" 5170 5147 { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); } 5171 5148 break; 5172 5149 5173 case 3 7:5174 5175 /* Line 1806 of yacc.c */ 5176 #line 3 89"parser.yy"5150 case 39: 5151 5152 /* Line 1806 of yacc.c */ 5153 #line 394 "parser.yy" 5177 5154 { (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 5155 break; 5179 5156 5180 case 39:5181 5182 /* Line 1806 of yacc.c */ 5183 #line 39 4"parser.yy"5157 case 41: 5158 5159 /* Line 1806 of yacc.c */ 5160 #line 399 "parser.yy" 5184 5161 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5185 5162 break; 5186 5163 5187 case 4 0:5188 5189 /* Line 1806 of yacc.c */ 5190 #line 399"parser.yy"5164 case 42: 5165 5166 /* Line 1806 of yacc.c */ 5167 #line 404 "parser.yy" 5191 5168 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5192 5169 break; 5193 5170 5194 case 4 1:5195 5196 /* Line 1806 of yacc.c */ 5197 #line 40 1"parser.yy"5171 case 43: 5172 5173 /* Line 1806 of yacc.c */ 5174 #line 406 "parser.yy" 5198 5175 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5199 5176 break; 5200 5177 5201 case 4 2:5202 5203 /* Line 1806 of yacc.c */ 5204 #line 40 3"parser.yy"5178 case 44: 5179 5180 /* Line 1806 of yacc.c */ 5181 #line 408 "parser.yy" 5205 5182 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5206 5183 break; 5207 5184 5208 case 4 3:5209 5210 /* Line 1806 of yacc.c */ 5211 #line 4 05"parser.yy"5185 case 45: 5186 5187 /* Line 1806 of yacc.c */ 5188 #line 410 "parser.yy" 5212 5189 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5213 5190 break; 5214 5191 5215 case 4 4:5216 5217 /* Line 1806 of yacc.c */ 5218 #line 4 07"parser.yy"5192 case 46: 5193 5194 /* Line 1806 of yacc.c */ 5195 #line 412 "parser.yy" 5219 5196 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5220 5197 break; 5221 5198 5222 case 4 6:5223 5224 /* Line 1806 of yacc.c */ 5225 #line 4 15"parser.yy"5199 case 48: 5200 5201 /* Line 1806 of yacc.c */ 5202 #line 420 "parser.yy" 5226 5203 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5227 5204 break; 5228 5205 5229 case 4 7:5230 5231 /* Line 1806 of yacc.c */ 5232 #line 4 17"parser.yy"5206 case 49: 5207 5208 /* Line 1806 of yacc.c */ 5209 #line 422 "parser.yy" 5233 5210 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5234 5211 break; 5235 5212 5236 case 48:5237 5238 /* Line 1806 of yacc.c */ 5239 #line 4 19"parser.yy"5213 case 50: 5214 5215 /* Line 1806 of yacc.c */ 5216 #line 424 "parser.yy" 5240 5217 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); } 5241 5218 break; 5242 5219 5243 case 49:5244 5245 /* Line 1806 of yacc.c */ 5246 #line 42 1"parser.yy"5220 case 51: 5221 5222 /* Line 1806 of yacc.c */ 5223 #line 426 "parser.yy" 5247 5224 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); } 5248 5225 break; 5249 5226 5250 case 5 0:5251 5252 /* Line 1806 of yacc.c */ 5253 #line 42 3"parser.yy"5227 case 52: 5228 5229 /* Line 1806 of yacc.c */ 5230 #line 428 "parser.yy" 5254 5231 { (yyval.en) = (yyvsp[(2) - (2)].en); } 5255 5232 break; 5256 5233 5257 case 5 1:5258 5259 /* Line 1806 of yacc.c */ 5260 #line 4 25"parser.yy"5234 case 53: 5235 5236 /* Line 1806 of yacc.c */ 5237 #line 430 "parser.yy" 5261 5238 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); } 5262 5239 break; 5263 5240 5264 case 5 2:5265 5266 /* Line 1806 of yacc.c */ 5267 #line 4 27"parser.yy"5241 case 54: 5242 5243 /* Line 1806 of yacc.c */ 5244 #line 432 "parser.yy" 5268 5245 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); } 5269 5246 break; 5270 5247 5271 case 5 3:5272 5273 /* Line 1806 of yacc.c */ 5274 #line 4 29"parser.yy"5248 case 55: 5249 5250 /* Line 1806 of yacc.c */ 5251 #line 434 "parser.yy" 5275 5252 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); } 5276 5253 break; 5277 5254 5278 case 5 4:5279 5280 /* Line 1806 of yacc.c */ 5281 #line 4 35"parser.yy"5255 case 56: 5256 5257 /* Line 1806 of yacc.c */ 5258 #line 440 "parser.yy" 5282 5259 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); } 5283 5260 break; 5284 5261 5285 case 5 5:5286 5287 /* Line 1806 of yacc.c */ 5288 #line 4 37"parser.yy"5262 case 57: 5263 5264 /* Line 1806 of yacc.c */ 5265 #line 442 "parser.yy" 5289 5266 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5290 5267 break; 5291 5268 5292 case 5 6:5293 5294 /* Line 1806 of yacc.c */ 5295 #line 4 39"parser.yy"5269 case 58: 5270 5271 /* Line 1806 of yacc.c */ 5272 #line 444 "parser.yy" 5296 5273 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); } 5297 5274 break; 5298 5275 5299 case 5 7:5300 5301 /* Line 1806 of yacc.c */ 5302 #line 44 1"parser.yy"5276 case 59: 5277 5278 /* Line 1806 of yacc.c */ 5279 #line 446 "parser.yy" 5303 5280 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5304 5281 break; 5305 5282 5306 case 58:5307 5308 /* Line 1806 of yacc.c */ 5309 #line 44 3"parser.yy"5283 case 60: 5284 5285 /* Line 1806 of yacc.c */ 5286 #line 448 "parser.yy" 5310 5287 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); } 5311 5288 break; 5312 5289 5313 case 59:5314 5315 /* Line 1806 of yacc.c */ 5316 #line 4 45"parser.yy"5290 case 61: 5291 5292 /* Line 1806 of yacc.c */ 5293 #line 450 "parser.yy" 5317 5294 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); } 5318 5295 break; 5319 5296 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 case 61:5328 5329 /* Line 1806 of yacc.c */5330 #line 449 "parser.yy"5331 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }5332 break;5333 5334 5297 case 62: 5335 5298 5336 5299 /* Line 1806 of yacc.c */ 5337 #line 453 "parser.yy" 5300 #line 452 "parser.yy" 5301 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); } 5302 break; 5303 5304 case 63: 5305 5306 /* Line 1806 of yacc.c */ 5307 #line 454 "parser.yy" 5308 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); } 5309 break; 5310 5311 case 64: 5312 5313 /* Line 1806 of yacc.c */ 5314 #line 458 "parser.yy" 5338 5315 { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); } 5339 5316 break; 5340 5317 5341 case 6 3:5342 5343 /* Line 1806 of yacc.c */ 5344 #line 45 4"parser.yy"5318 case 65: 5319 5320 /* Line 1806 of yacc.c */ 5321 #line 459 "parser.yy" 5345 5322 { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); } 5346 5323 break; 5347 5324 5348 case 6 4:5349 5350 /* Line 1806 of yacc.c */ 5351 #line 4 55"parser.yy"5325 case 66: 5326 5327 /* Line 1806 of yacc.c */ 5328 #line 460 "parser.yy" 5352 5329 { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); } 5353 5330 break; 5354 5331 5355 case 6 5:5356 5357 /* Line 1806 of yacc.c */ 5358 #line 4 56"parser.yy"5332 case 67: 5333 5334 /* Line 1806 of yacc.c */ 5335 #line 461 "parser.yy" 5359 5336 { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); } 5360 5337 break; 5361 5338 5362 case 6 7:5363 5364 /* Line 1806 of yacc.c */ 5365 #line 46 2"parser.yy"5339 case 69: 5340 5341 /* Line 1806 of yacc.c */ 5342 #line 467 "parser.yy" 5366 5343 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5367 5344 break; 5368 5345 5369 case 68:5370 5371 /* Line 1806 of yacc.c */ 5372 #line 46 4"parser.yy"5346 case 70: 5347 5348 /* Line 1806 of yacc.c */ 5349 #line 469 "parser.yy" 5373 5350 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5374 5351 break; 5375 5352 5376 case 7 0:5377 5378 /* Line 1806 of yacc.c */ 5379 #line 47 0"parser.yy"5353 case 72: 5354 5355 /* Line 1806 of yacc.c */ 5356 #line 475 "parser.yy" 5380 5357 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5381 5358 break; 5382 5359 5383 case 7 1:5384 5385 /* Line 1806 of yacc.c */ 5386 #line 47 2"parser.yy"5360 case 73: 5361 5362 /* Line 1806 of yacc.c */ 5363 #line 477 "parser.yy" 5387 5364 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5388 5365 break; 5389 5366 5390 case 7 2:5391 5392 /* Line 1806 of yacc.c */ 5393 #line 47 4"parser.yy"5367 case 74: 5368 5369 /* Line 1806 of yacc.c */ 5370 #line 479 "parser.yy" 5394 5371 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5395 5372 break; 5396 5373 5397 case 7 4:5398 5399 /* Line 1806 of yacc.c */ 5400 #line 48 0"parser.yy"5374 case 76: 5375 5376 /* Line 1806 of yacc.c */ 5377 #line 485 "parser.yy" 5401 5378 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5402 5379 break; 5403 5380 5404 case 7 5:5405 5406 /* Line 1806 of yacc.c */ 5407 #line 48 2"parser.yy"5381 case 77: 5382 5383 /* Line 1806 of yacc.c */ 5384 #line 487 "parser.yy" 5408 5385 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5409 5386 break; 5410 5387 5411 case 7 7:5412 5413 /* Line 1806 of yacc.c */ 5414 #line 4 88"parser.yy"5388 case 79: 5389 5390 /* Line 1806 of yacc.c */ 5391 #line 493 "parser.yy" 5415 5392 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5416 5393 break; 5417 5394 5418 case 78:5419 5420 /* Line 1806 of yacc.c */ 5421 #line 49 0"parser.yy"5395 case 80: 5396 5397 /* Line 1806 of yacc.c */ 5398 #line 495 "parser.yy" 5422 5399 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5423 5400 break; 5424 5401 5425 case 8 0:5426 5427 /* Line 1806 of yacc.c */ 5428 #line 496"parser.yy"5402 case 82: 5403 5404 /* Line 1806 of yacc.c */ 5405 #line 501 "parser.yy" 5429 5406 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5430 5407 break; 5431 5408 5432 case 8 1:5433 5434 /* Line 1806 of yacc.c */ 5435 #line 498"parser.yy"5409 case 83: 5410 5411 /* Line 1806 of yacc.c */ 5412 #line 503 "parser.yy" 5436 5413 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5437 5414 break; 5438 5415 5439 case 8 2:5440 5441 /* Line 1806 of yacc.c */ 5442 #line 50 0"parser.yy"5416 case 84: 5417 5418 /* Line 1806 of yacc.c */ 5419 #line 505 "parser.yy" 5443 5420 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5444 5421 break; 5445 5422 5446 case 8 3:5447 5448 /* Line 1806 of yacc.c */ 5449 #line 50 2"parser.yy"5423 case 85: 5424 5425 /* Line 1806 of yacc.c */ 5426 #line 507 "parser.yy" 5450 5427 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5451 5428 break; 5452 5429 5453 case 8 5:5454 5455 /* Line 1806 of yacc.c */ 5456 #line 5 08"parser.yy"5430 case 87: 5431 5432 /* Line 1806 of yacc.c */ 5433 #line 513 "parser.yy" 5457 5434 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5458 5435 break; 5459 5436 5460 case 8 6:5461 5462 /* Line 1806 of yacc.c */ 5463 #line 51 0"parser.yy"5437 case 88: 5438 5439 /* Line 1806 of yacc.c */ 5440 #line 515 "parser.yy" 5464 5441 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5465 5442 break; 5466 5443 5467 case 88:5468 5469 /* Line 1806 of yacc.c */ 5470 #line 5 16"parser.yy"5444 case 90: 5445 5446 /* Line 1806 of yacc.c */ 5447 #line 521 "parser.yy" 5471 5448 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5472 5449 break; 5473 5450 5474 case 9 0:5475 5476 /* Line 1806 of yacc.c */ 5477 #line 52 2"parser.yy"5451 case 92: 5452 5453 /* Line 1806 of yacc.c */ 5454 #line 527 "parser.yy" 5478 5455 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5479 5456 break; 5480 5457 5481 case 9 2:5482 5483 /* Line 1806 of yacc.c */ 5484 #line 5 28"parser.yy"5458 case 94: 5459 5460 /* Line 1806 of yacc.c */ 5461 #line 533 "parser.yy" 5485 5462 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5486 5463 break; 5487 5464 5488 case 9 4:5489 5490 /* Line 1806 of yacc.c */ 5491 #line 53 4"parser.yy"5465 case 96: 5466 5467 /* Line 1806 of yacc.c */ 5468 #line 539 "parser.yy" 5492 5469 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5493 5470 break; 5494 5471 5495 case 9 6:5496 5497 /* Line 1806 of yacc.c */ 5498 #line 54 0"parser.yy"5472 case 98: 5473 5474 /* Line 1806 of yacc.c */ 5475 #line 545 "parser.yy" 5499 5476 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5500 5477 break; 5501 5478 5502 case 98:5503 5504 /* Line 1806 of yacc.c */ 5505 #line 5 46"parser.yy"5479 case 100: 5480 5481 /* Line 1806 of yacc.c */ 5482 #line 551 "parser.yy" 5506 5483 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5507 5484 break; 5508 5485 5509 case 99:5510 5511 /* Line 1806 of yacc.c */ 5512 #line 5 48"parser.yy"5486 case 101: 5487 5488 /* Line 1806 of yacc.c */ 5489 #line 553 "parser.yy" 5513 5490 { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5514 5491 break; 5515 5492 5516 case 10 0:5517 5518 /* Line 1806 of yacc.c */ 5519 #line 55 0"parser.yy"5493 case 102: 5494 5495 /* Line 1806 of yacc.c */ 5496 #line 555 "parser.yy" 5520 5497 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5521 5498 break; 5522 5499 5523 case 10 3:5524 5525 /* Line 1806 of yacc.c */ 5526 #line 56 1"parser.yy"5500 case 105: 5501 5502 /* Line 1806 of yacc.c */ 5503 #line 566 "parser.yy" 5527 5504 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5528 5505 break; 5529 5506 5530 case 10 4:5531 5532 /* Line 1806 of yacc.c */ 5533 #line 56 3"parser.yy"5507 case 106: 5508 5509 /* Line 1806 of yacc.c */ 5510 #line 568 "parser.yy" 5534 5511 { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5535 5512 break; 5536 5513 5537 case 10 5:5538 5539 /* Line 1806 of yacc.c */ 5540 #line 5 65"parser.yy"5514 case 107: 5515 5516 /* Line 1806 of yacc.c */ 5517 #line 570 "parser.yy" 5541 5518 { (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 5519 break; 5543 5520 5544 case 10 6:5545 5546 /* Line 1806 of yacc.c */ 5547 #line 57 0"parser.yy"5521 case 108: 5522 5523 /* Line 1806 of yacc.c */ 5524 #line 575 "parser.yy" 5548 5525 { (yyval.en) = new NullExprNode; } 5549 5526 break; 5550 5527 5551 case 1 08:5552 5553 /* Line 1806 of yacc.c */ 5554 #line 5 78"parser.yy"5528 case 110: 5529 5530 /* Line 1806 of yacc.c */ 5531 #line 583 "parser.yy" 5555 5532 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); } 5556 5533 break; 5557 5534 5558 case 1 09:5559 5560 /* Line 1806 of yacc.c */ 5561 #line 58 0"parser.yy"5535 case 111: 5536 5537 /* Line 1806 of yacc.c */ 5538 #line 585 "parser.yy" 5562 5539 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); } 5563 5540 break; 5564 5541 5565 case 11 0:5566 5567 /* Line 1806 of yacc.c */ 5568 #line 58 2"parser.yy"5542 case 112: 5543 5544 /* Line 1806 of yacc.c */ 5545 #line 587 "parser.yy" 5569 5546 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); } 5570 5547 break; 5571 5548 5572 case 11 1:5573 5574 /* Line 1806 of yacc.c */ 5575 #line 58 4"parser.yy"5549 case 113: 5550 5551 /* Line 1806 of yacc.c */ 5552 #line 589 "parser.yy" 5576 5553 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); } 5577 5554 break; 5578 5555 5579 case 11 3:5580 5581 /* Line 1806 of yacc.c */ 5582 #line 59 0"parser.yy"5556 case 115: 5557 5558 /* Line 1806 of yacc.c */ 5559 #line 595 "parser.yy" 5583 5560 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5584 5561 break; 5585 5562 5586 case 11 4:5587 5588 /* Line 1806 of yacc.c */ 5589 #line 59 4"parser.yy"5563 case 116: 5564 5565 /* Line 1806 of yacc.c */ 5566 #line 599 "parser.yy" 5590 5567 { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); } 5591 5568 break; 5592 5569 5593 case 11 5:5594 5595 /* Line 1806 of yacc.c */ 5596 #line 595"parser.yy"5570 case 117: 5571 5572 /* Line 1806 of yacc.c */ 5573 #line 600 "parser.yy" 5597 5574 { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); } 5598 5575 break; 5599 5576 5600 case 11 6:5601 5602 /* Line 1806 of yacc.c */ 5603 #line 596"parser.yy"5577 case 118: 5578 5579 /* Line 1806 of yacc.c */ 5580 #line 601 "parser.yy" 5604 5581 { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); } 5605 5582 break; 5606 5583 5607 case 11 7:5608 5609 /* Line 1806 of yacc.c */ 5610 #line 597"parser.yy"5584 case 119: 5585 5586 /* Line 1806 of yacc.c */ 5587 #line 602 "parser.yy" 5611 5588 { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); } 5612 5589 break; 5613 5590 5614 case 1 18:5615 5616 /* Line 1806 of yacc.c */ 5617 #line 598"parser.yy"5591 case 120: 5592 5593 /* Line 1806 of yacc.c */ 5594 #line 603 "parser.yy" 5618 5595 { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); } 5619 5596 break; 5620 5597 5621 case 1 19:5622 5623 /* Line 1806 of yacc.c */ 5624 #line 599"parser.yy"5598 case 121: 5599 5600 /* Line 1806 of yacc.c */ 5601 #line 604 "parser.yy" 5625 5602 { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); } 5626 5603 break; 5627 5604 5628 case 12 0:5629 5630 /* Line 1806 of yacc.c */ 5631 #line 60 0"parser.yy"5605 case 122: 5606 5607 /* Line 1806 of yacc.c */ 5608 #line 605 "parser.yy" 5632 5609 { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); } 5633 5610 break; 5634 5611 5635 case 12 1:5636 5637 /* Line 1806 of yacc.c */ 5638 #line 60 1"parser.yy"5612 case 123: 5613 5614 /* Line 1806 of yacc.c */ 5615 #line 606 "parser.yy" 5639 5616 { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); } 5640 5617 break; 5641 5618 5642 case 12 2:5643 5644 /* Line 1806 of yacc.c */ 5645 #line 60 2"parser.yy"5619 case 124: 5620 5621 /* Line 1806 of yacc.c */ 5622 #line 607 "parser.yy" 5646 5623 { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); } 5647 5624 break; 5648 5625 5649 case 12 3:5650 5651 /* Line 1806 of yacc.c */ 5652 #line 60 3"parser.yy"5626 case 125: 5627 5628 /* Line 1806 of yacc.c */ 5629 #line 608 "parser.yy" 5653 5630 { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); } 5654 5631 break; 5655 5632 5656 case 12 5:5657 5658 /* Line 1806 of yacc.c */ 5659 #line 6 09"parser.yy"5633 case 127: 5634 5635 /* Line 1806 of yacc.c */ 5636 #line 614 "parser.yy" 5660 5637 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5661 5638 break; 5662 5639 5663 case 12 6:5664 5665 /* Line 1806 of yacc.c */ 5666 #line 61 4"parser.yy"5640 case 128: 5641 5642 /* Line 1806 of yacc.c */ 5643 #line 619 "parser.yy" 5667 5644 { (yyval.en) = 0; } 5668 5645 break; 5669 5646 5670 case 13 0:5671 5672 /* Line 1806 of yacc.c */ 5673 #line 62 3"parser.yy"5647 case 132: 5648 5649 /* Line 1806 of yacc.c */ 5650 #line 628 "parser.yy" 5674 5651 { (yyval.sn) = (yyvsp[(1) - (1)].sn); } 5675 5652 break; 5676 5653 5677 case 13 6:5678 5679 /* Line 1806 of yacc.c */ 5680 #line 63 3"parser.yy"5654 case 139: 5655 5656 /* Line 1806 of yacc.c */ 5657 #line 639 "parser.yy" 5681 5658 { 5682 5659 (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) ); … … 5684 5661 break; 5685 5662 5686 case 1 37:5687 5688 /* Line 1806 of yacc.c */ 5689 #line 64 0"parser.yy"5663 case 140: 5664 5665 /* Line 1806 of yacc.c */ 5666 #line 646 "parser.yy" 5690 5667 { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); } 5691 5668 break; 5692 5669 5693 case 1 38:5694 5695 /* Line 1806 of yacc.c */ 5696 #line 6 47"parser.yy"5670 case 141: 5671 5672 /* Line 1806 of yacc.c */ 5673 #line 653 "parser.yy" 5697 5674 { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); } 5698 5675 break; 5699 5676 5700 case 14 0:5701 5702 /* Line 1806 of yacc.c */ 5703 #line 65 3"parser.yy"5677 case 143: 5678 5679 /* Line 1806 of yacc.c */ 5680 #line 659 "parser.yy" 5704 5681 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5705 5682 break; 5706 5683 5707 case 14 1:5708 5709 /* Line 1806 of yacc.c */ 5710 #line 6 58"parser.yy"5684 case 144: 5685 5686 /* Line 1806 of yacc.c */ 5687 #line 664 "parser.yy" 5711 5688 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5712 5689 break; 5713 5690 5714 case 14 2:5715 5716 /* Line 1806 of yacc.c */ 5717 #line 66 0"parser.yy"5691 case 145: 5692 5693 /* Line 1806 of yacc.c */ 5694 #line 666 "parser.yy" 5718 5695 { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); } 5719 5696 break; 5720 5697 5721 case 14 3:5722 5723 /* Line 1806 of yacc.c */ 5724 #line 66 2"parser.yy"5698 case 146: 5699 5700 /* Line 1806 of yacc.c */ 5701 #line 668 "parser.yy" 5725 5702 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5726 5703 break; 5727 5704 5728 case 14 6:5729 5730 /* Line 1806 of yacc.c */ 5731 #line 6 69"parser.yy"5705 case 149: 5706 5707 /* Line 1806 of yacc.c */ 5708 #line 675 "parser.yy" 5732 5709 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5733 5710 break; 5734 5711 5735 case 1 47:5736 5737 /* Line 1806 of yacc.c */ 5738 #line 6 74"parser.yy"5712 case 150: 5713 5714 /* Line 1806 of yacc.c */ 5715 #line 680 "parser.yy" 5739 5716 { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); } 5740 5717 break; 5741 5718 5742 case 1 48:5743 5744 /* Line 1806 of yacc.c */ 5745 #line 68 0"parser.yy"5719 case 151: 5720 5721 /* Line 1806 of yacc.c */ 5722 #line 686 "parser.yy" 5746 5723 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5747 5724 break; 5748 5725 5749 case 1 49:5750 5751 /* Line 1806 of yacc.c */ 5752 #line 68 2"parser.yy"5726 case 152: 5727 5728 /* Line 1806 of yacc.c */ 5729 #line 688 "parser.yy" 5753 5730 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); } 5754 5731 break; 5755 5732 5756 case 15 0:5757 5758 /* Line 1806 of yacc.c */ 5759 #line 6 84"parser.yy"5733 case 153: 5734 5735 /* Line 1806 of yacc.c */ 5736 #line 690 "parser.yy" 5760 5737 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5761 5738 break; 5762 5739 5763 case 15 1:5764 5765 /* Line 1806 of yacc.c */ 5766 #line 6 86"parser.yy"5740 case 154: 5741 5742 /* Line 1806 of yacc.c */ 5743 #line 692 "parser.yy" 5767 5744 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ } 5768 5745 break; 5769 5746 5770 case 15 2:5771 5772 /* Line 1806 of yacc.c */ 5773 #line 69 1"parser.yy"5747 case 155: 5748 5749 /* Line 1806 of yacc.c */ 5750 #line 697 "parser.yy" 5774 5751 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5775 5752 break; 5776 5753 5777 case 15 3:5778 5779 /* Line 1806 of yacc.c */ 5780 #line 69 3"parser.yy"5754 case 156: 5755 5756 /* Line 1806 of yacc.c */ 5757 #line 699 "parser.yy" 5781 5758 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); } 5782 5759 break; 5783 5760 5784 case 15 4:5785 5786 /* Line 1806 of yacc.c */ 5787 #line 70 0"parser.yy"5761 case 157: 5762 5763 /* Line 1806 of yacc.c */ 5764 #line 706 "parser.yy" 5788 5765 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5789 5766 break; 5790 5767 5791 case 15 5:5792 5793 /* Line 1806 of yacc.c */ 5794 #line 70 2"parser.yy"5768 case 158: 5769 5770 /* Line 1806 of yacc.c */ 5771 #line 708 "parser.yy" 5795 5772 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5796 5773 break; 5797 5774 5798 case 1 58:5799 5800 /* Line 1806 of yacc.c */ 5801 #line 7 09"parser.yy"5775 case 161: 5776 5777 /* Line 1806 of yacc.c */ 5778 #line 715 "parser.yy" 5802 5779 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); } 5803 5780 break; 5804 5781 5805 case 1 59:5806 5807 /* Line 1806 of yacc.c */ 5808 #line 71 3"parser.yy"5782 case 162: 5783 5784 /* Line 1806 of yacc.c */ 5785 #line 719 "parser.yy" 5809 5786 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); } 5810 5787 break; 5811 5788 5812 case 16 0:5813 5814 /* Line 1806 of yacc.c */ 5815 #line 7 14"parser.yy"5789 case 163: 5790 5791 /* Line 1806 of yacc.c */ 5792 #line 720 "parser.yy" 5816 5793 { (yyval.sn) = new StatementNode( StatementNode::Default ); } 5817 5794 break; 5818 5795 5819 case 16 2:5820 5821 /* Line 1806 of yacc.c */ 5822 #line 72 0"parser.yy"5796 case 165: 5797 5798 /* Line 1806 of yacc.c */ 5799 #line 726 "parser.yy" 5823 5800 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); } 5824 5801 break; 5825 5802 5826 case 16 3:5827 5828 /* Line 1806 of yacc.c */ 5829 #line 7 24"parser.yy"5803 case 166: 5804 5805 /* Line 1806 of yacc.c */ 5806 #line 730 "parser.yy" 5830 5807 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5831 5808 break; 5832 5809 5833 case 16 4:5834 5835 /* Line 1806 of yacc.c */ 5836 #line 7 29"parser.yy"5810 case 167: 5811 5812 /* Line 1806 of yacc.c */ 5813 #line 735 "parser.yy" 5837 5814 { (yyval.sn) = 0; } 5838 5815 break; 5839 5816 5840 case 16 6:5841 5842 /* Line 1806 of yacc.c */ 5843 #line 7 35"parser.yy"5817 case 169: 5818 5819 /* Line 1806 of yacc.c */ 5820 #line 741 "parser.yy" 5844 5821 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5845 5822 break; 5846 5823 5847 case 1 67:5848 5849 /* Line 1806 of yacc.c */ 5850 #line 7 37"parser.yy"5824 case 170: 5825 5826 /* Line 1806 of yacc.c */ 5827 #line 743 "parser.yy" 5851 5828 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5852 5829 break; 5853 5830 5854 case 1 68:5855 5856 /* Line 1806 of yacc.c */ 5857 #line 74 2"parser.yy"5831 case 171: 5832 5833 /* Line 1806 of yacc.c */ 5834 #line 748 "parser.yy" 5858 5835 { (yyval.sn) = 0; } 5859 5836 break; 5860 5837 5861 case 17 0:5862 5863 /* Line 1806 of yacc.c */ 5864 #line 7 48"parser.yy"5838 case 173: 5839 5840 /* Line 1806 of yacc.c */ 5841 #line 754 "parser.yy" 5865 5842 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5866 5843 break; 5867 5844 5868 case 17 1:5869 5870 /* Line 1806 of yacc.c */ 5871 #line 75 0"parser.yy"5845 case 174: 5846 5847 /* Line 1806 of yacc.c */ 5848 #line 756 "parser.yy" 5872 5849 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); } 5873 5850 break; 5874 5851 5875 case 17 2:5876 5877 /* Line 1806 of yacc.c */ 5878 #line 75 2"parser.yy"5852 case 175: 5853 5854 /* Line 1806 of yacc.c */ 5855 #line 758 "parser.yy" 5879 5856 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5880 5857 break; 5881 5858 5882 case 17 3:5883 5884 /* Line 1806 of yacc.c */ 5885 #line 7 54"parser.yy"5859 case 176: 5860 5861 /* Line 1806 of yacc.c */ 5862 #line 760 "parser.yy" 5886 5863 { (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 5864 break; 5888 5865 5889 case 17 4:5890 5891 /* Line 1806 of yacc.c */ 5892 #line 7 59"parser.yy"5866 case 177: 5867 5868 /* Line 1806 of yacc.c */ 5869 #line 765 "parser.yy" 5893 5870 { (yyval.sn) = 0; } 5894 5871 break; 5895 5872 5896 case 17 6:5897 5898 /* Line 1806 of yacc.c */ 5899 #line 7 64"parser.yy"5873 case 179: 5874 5875 /* Line 1806 of yacc.c */ 5876 #line 770 "parser.yy" 5900 5877 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); } 5901 5878 break; 5902 5879 5903 case 1 77:5904 5905 /* Line 1806 of yacc.c */ 5906 #line 7 65"parser.yy"5880 case 180: 5881 5882 /* Line 1806 of yacc.c */ 5883 #line 771 "parser.yy" 5907 5884 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); } 5908 5885 break; 5909 5886 5910 case 1 78:5911 5912 /* Line 1806 of yacc.c */ 5913 #line 77 0"parser.yy"5887 case 181: 5888 5889 /* Line 1806 of yacc.c */ 5890 #line 776 "parser.yy" 5914 5891 { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5915 5892 break; 5916 5893 5917 case 1 79:5918 5919 /* Line 1806 of yacc.c */ 5920 #line 77 2"parser.yy"5894 case 182: 5895 5896 /* Line 1806 of yacc.c */ 5897 #line 778 "parser.yy" 5921 5898 { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); } 5922 5899 break; 5923 5900 5924 case 18 0:5925 5926 /* Line 1806 of yacc.c */ 5927 #line 7 74"parser.yy"5901 case 183: 5902 5903 /* Line 1806 of yacc.c */ 5904 #line 780 "parser.yy" 5928 5905 { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); } 5929 5906 break; 5930 5907 5931 case 18 1:5932 5933 /* Line 1806 of yacc.c */ 5934 #line 7 79"parser.yy"5908 case 184: 5909 5910 /* Line 1806 of yacc.c */ 5911 #line 785 "parser.yy" 5935 5912 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); } 5936 5913 break; 5937 5914 5938 case 18 2:5939 5940 /* Line 1806 of yacc.c */ 5941 #line 78 1"parser.yy"5915 case 185: 5916 5917 /* Line 1806 of yacc.c */ 5918 #line 787 "parser.yy" 5942 5919 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5943 5920 break; 5944 5921 5945 case 18 3:5946 5947 /* Line 1806 of yacc.c */ 5948 #line 7 86"parser.yy"5922 case 186: 5923 5924 /* Line 1806 of yacc.c */ 5925 #line 792 "parser.yy" 5949 5926 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); } 5950 5927 break; 5951 5928 5952 case 18 4:5953 5954 /* Line 1806 of yacc.c */ 5955 #line 79 0"parser.yy"5929 case 187: 5930 5931 /* Line 1806 of yacc.c */ 5932 #line 796 "parser.yy" 5956 5933 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); } 5957 5934 break; 5958 5935 5959 case 18 5:5960 5961 /* Line 1806 of yacc.c */ 5962 #line 79 3"parser.yy"5936 case 188: 5937 5938 /* Line 1806 of yacc.c */ 5939 #line 799 "parser.yy" 5963 5940 { (yyval.sn) = new StatementNode( StatementNode::Continue ); } 5964 5941 break; 5965 5942 5966 case 18 6:5967 5968 /* Line 1806 of yacc.c */ 5969 #line 797"parser.yy"5943 case 189: 5944 5945 /* Line 1806 of yacc.c */ 5946 #line 803 "parser.yy" 5970 5947 { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); } 5971 5948 break; 5972 5949 5973 case 1 87:5974 5975 /* Line 1806 of yacc.c */ 5976 #line 80 0"parser.yy"5950 case 190: 5951 5952 /* Line 1806 of yacc.c */ 5953 #line 806 "parser.yy" 5977 5954 { (yyval.sn) = new StatementNode( StatementNode::Break ); } 5978 5955 break; 5979 5956 5980 case 1 88:5981 5982 /* Line 1806 of yacc.c */ 5983 #line 8 04"parser.yy"5957 case 191: 5958 5959 /* Line 1806 of yacc.c */ 5960 #line 810 "parser.yy" 5984 5961 { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); } 5985 5962 break; 5986 5963 5987 case 1 89:5988 5989 /* Line 1806 of yacc.c */ 5990 #line 8 06"parser.yy"5964 case 192: 5965 5966 /* Line 1806 of yacc.c */ 5967 #line 812 "parser.yy" 5991 5968 { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); } 5992 5969 break; 5993 5970 5994 case 19 0:5995 5996 /* Line 1806 of yacc.c */ 5997 #line 8 08"parser.yy"5971 case 193: 5972 5973 /* Line 1806 of yacc.c */ 5974 #line 814 "parser.yy" 5998 5975 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 5999 5976 break; 6000 5977 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" 5978 case 194: 5979 5980 /* Line 1806 of yacc.c */ 5981 #line 818 "parser.yy" 5982 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 5983 break; 5984 5985 case 195: 5986 5987 /* Line 1806 of yacc.c */ 5988 #line 820 "parser.yy" 5989 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); } 5990 break; 5991 5992 case 196: 5993 5994 /* Line 1806 of yacc.c */ 5995 #line 827 "parser.yy" 6012 5996 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6013 5997 break; 6014 5998 6015 case 19 3:6016 6017 /* Line 1806 of yacc.c */ 6018 #line 8 17"parser.yy"5999 case 197: 6000 6001 /* Line 1806 of yacc.c */ 6002 #line 829 "parser.yy" 6019 6003 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6020 6004 break; 6021 6005 6022 case 19 4:6023 6024 /* Line 1806 of yacc.c */ 6025 #line 8 19"parser.yy"6006 case 198: 6007 6008 /* Line 1806 of yacc.c */ 6009 #line 831 "parser.yy" 6026 6010 { 6027 6011 (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) ); … … 6030 6014 break; 6031 6015 6032 case 196:6033 6034 /* Line 1806 of yacc.c */ 6035 #line 8 30"parser.yy"6016 case 200: 6017 6018 /* Line 1806 of yacc.c */ 6019 #line 842 "parser.yy" 6036 6020 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6037 6021 break; 6038 6022 6039 case 197:6040 6041 /* Line 1806 of yacc.c */ 6042 #line 8 32"parser.yy"6023 case 201: 6024 6025 /* Line 1806 of yacc.c */ 6026 #line 844 "parser.yy" 6043 6027 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6044 6028 break; 6045 6029 6046 case 198: 6047 6048 /* Line 1806 of yacc.c */ 6049 #line 837 "parser.yy" 6030 case 202: 6031 6032 /* Line 1806 of yacc.c */ 6033 #line 846 "parser.yy" 6034 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6035 break; 6036 6037 case 203: 6038 6039 /* Line 1806 of yacc.c */ 6040 #line 848 "parser.yy" 6041 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6042 break; 6043 6044 case 204: 6045 6046 /* Line 1806 of yacc.c */ 6047 #line 853 "parser.yy" 6050 6048 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6051 6049 break; 6052 6050 6053 case 199:6054 6055 /* Line 1806 of yacc.c */ 6056 #line 8 39"parser.yy"6051 case 205: 6052 6053 /* Line 1806 of yacc.c */ 6054 #line 855 "parser.yy" 6057 6055 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6058 6056 break; 6059 6057 6060 case 200: 6061 6062 /* Line 1806 of yacc.c */ 6063 #line 844 "parser.yy" 6058 case 206: 6059 6060 /* Line 1806 of yacc.c */ 6061 #line 857 "parser.yy" 6062 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6063 break; 6064 6065 case 207: 6066 6067 /* Line 1806 of yacc.c */ 6068 #line 859 "parser.yy" 6069 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6070 break; 6071 6072 case 208: 6073 6074 /* Line 1806 of yacc.c */ 6075 #line 864 "parser.yy" 6064 6076 { 6065 6077 (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) ); … … 6068 6080 break; 6069 6081 6070 case 2 02:6071 6072 /* Line 1806 of yacc.c */ 6073 #line 8 58 "parser.yy"6082 case 210: 6083 6084 /* Line 1806 of yacc.c */ 6085 #line 878 "parser.yy" 6074 6086 { 6075 6087 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6078 6090 break; 6079 6091 6080 case 2 03:6081 6082 /* Line 1806 of yacc.c */ 6083 #line 8 63 "parser.yy"6092 case 211: 6093 6094 /* Line 1806 of yacc.c */ 6095 #line 883 "parser.yy" 6084 6096 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6085 6097 break; 6086 6098 6087 case 2 04:6088 6089 /* Line 1806 of yacc.c */ 6090 #line 8 65 "parser.yy"6099 case 212: 6100 6101 /* Line 1806 of yacc.c */ 6102 #line 885 "parser.yy" 6091 6103 { 6092 6104 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6095 6107 break; 6096 6108 6097 case 2 06:6098 6099 /* Line 1806 of yacc.c */ 6100 #line 8 74 "parser.yy"6109 case 214: 6110 6111 /* Line 1806 of yacc.c */ 6112 #line 894 "parser.yy" 6101 6113 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); } 6102 6114 break; 6103 6115 6104 case 2 07:6105 6106 /* Line 1806 of yacc.c */ 6107 #line 8 76 "parser.yy"6116 case 215: 6117 6118 /* Line 1806 of yacc.c */ 6119 #line 896 "parser.yy" 6108 6120 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); } 6109 6121 break; 6110 6122 6111 case 2 08:6112 6113 /* Line 1806 of yacc.c */ 6114 #line 8 78 "parser.yy"6123 case 216: 6124 6125 /* Line 1806 of yacc.c */ 6126 #line 898 "parser.yy" 6115 6127 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); } 6116 6128 break; 6117 6129 6118 case 2 09:6119 6120 /* Line 1806 of yacc.c */ 6121 #line 880 "parser.yy"6130 case 217: 6131 6132 /* Line 1806 of yacc.c */ 6133 #line 900 "parser.yy" 6122 6134 { (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 6135 break; 6124 6136 6125 case 21 0:6126 6127 /* Line 1806 of yacc.c */ 6128 #line 882 "parser.yy"6137 case 218: 6138 6139 /* Line 1806 of yacc.c */ 6140 #line 902 "parser.yy" 6129 6141 { (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 6142 break; 6131 6143 6132 case 21 1:6133 6134 /* Line 1806 of yacc.c */ 6135 #line 887 "parser.yy"6144 case 219: 6145 6146 /* Line 1806 of yacc.c */ 6147 #line 907 "parser.yy" 6136 6148 { (yyval.flag) = false; } 6137 6149 break; 6138 6150 6139 case 2 12:6140 6141 /* Line 1806 of yacc.c */ 6142 #line 889 "parser.yy"6151 case 220: 6152 6153 /* Line 1806 of yacc.c */ 6154 #line 909 "parser.yy" 6143 6155 { (yyval.flag) = true; } 6144 6156 break; 6145 6157 6146 case 2 13:6147 6148 /* Line 1806 of yacc.c */ 6149 #line 894 "parser.yy"6158 case 221: 6159 6160 /* Line 1806 of yacc.c */ 6161 #line 914 "parser.yy" 6150 6162 { (yyval.en) = 0; } 6151 6163 break; 6152 6164 6153 case 2 16:6154 6155 /* Line 1806 of yacc.c */ 6156 #line 9 01 "parser.yy"6165 case 224: 6166 6167 /* Line 1806 of yacc.c */ 6168 #line 921 "parser.yy" 6157 6169 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 6158 6170 break; 6159 6171 6160 case 2 17:6161 6162 /* Line 1806 of yacc.c */ 6163 #line 9 06 "parser.yy"6172 case 225: 6173 6174 /* Line 1806 of yacc.c */ 6175 #line 926 "parser.yy" 6164 6176 { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); } 6165 6177 break; 6166 6178 6167 case 2 18:6168 6169 /* Line 1806 of yacc.c */ 6170 #line 9 08 "parser.yy"6179 case 226: 6180 6181 /* Line 1806 of yacc.c */ 6182 #line 928 "parser.yy" 6171 6183 { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); } 6172 6184 break; 6173 6185 6174 case 2 19:6175 6176 /* Line 1806 of yacc.c */ 6177 #line 9 13 "parser.yy"6186 case 227: 6187 6188 /* Line 1806 of yacc.c */ 6189 #line 933 "parser.yy" 6178 6190 { (yyval.constant) = 0; } 6179 6191 break; 6180 6192 6181 case 22 0:6182 6183 /* Line 1806 of yacc.c */ 6184 #line 9 15 "parser.yy"6193 case 228: 6194 6195 /* Line 1806 of yacc.c */ 6196 #line 935 "parser.yy" 6185 6197 { (yyval.constant) = (yyvsp[(1) - (1)].constant); } 6186 6198 break; 6187 6199 6188 case 22 1:6189 6190 /* Line 1806 of yacc.c */ 6191 #line 9 17 "parser.yy"6200 case 229: 6201 6202 /* Line 1806 of yacc.c */ 6203 #line 937 "parser.yy" 6192 6204 { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); } 6193 6205 break; 6194 6206 6195 case 2 22:6196 6197 /* Line 1806 of yacc.c */ 6198 #line 9 22 "parser.yy"6207 case 230: 6208 6209 /* Line 1806 of yacc.c */ 6210 #line 942 "parser.yy" 6199 6211 { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); } 6200 6212 break; 6201 6213 6202 case 2 23:6203 6204 /* Line 1806 of yacc.c */ 6205 #line 9 24 "parser.yy"6214 case 231: 6215 6216 /* Line 1806 of yacc.c */ 6217 #line 944 "parser.yy" 6206 6218 { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); } 6207 6219 break; 6208 6220 6209 case 224: 6210 6211 /* Line 1806 of yacc.c */ 6212 #line 931 "parser.yy" 6221 case 232: 6222 6223 /* Line 1806 of yacc.c */ 6224 #line 949 "parser.yy" 6225 { 6226 Token fn; fn.str = new std::string( "?{}" ); fn.loc = (yyvsp[(1) - (5)].tok).loc; 6227 (yyval.sn) = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ), 6228 (ExpressionNode *)((new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), new VarRefNode( (yyvsp[(1) - (5)].tok) ) ))->set_link( (yyvsp[(3) - (5)].en) )) ), 0 ); 6229 } 6230 break; 6231 6232 case 233: 6233 6234 /* Line 1806 of yacc.c */ 6235 #line 955 "parser.yy" 6236 { 6237 Token fn; fn.str = new std::string( "^?{}" ); fn.loc = (yyvsp[(2) - (5)].tok).loc; 6238 (yyval.sn) = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ), 6239 new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), new VarRefNode( (yyvsp[(2) - (5)].tok) ) ) ), 0 ); 6240 } 6241 break; 6242 6243 case 234: 6244 6245 /* Line 1806 of yacc.c */ 6246 #line 966 "parser.yy" 6213 6247 { (yyval.decl) = 0; } 6214 6248 break; 6215 6249 6216 case 2 27:6217 6218 /* Line 1806 of yacc.c */ 6219 #line 9 38"parser.yy"6250 case 237: 6251 6252 /* Line 1806 of yacc.c */ 6253 #line 973 "parser.yy" 6220 6254 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6221 6255 break; 6222 6256 6223 case 2 28:6224 6225 /* Line 1806 of yacc.c */ 6226 #line 9 43"parser.yy"6257 case 238: 6258 6259 /* Line 1806 of yacc.c */ 6260 #line 978 "parser.yy" 6227 6261 { (yyval.decl) = 0; } 6228 6262 break; 6229 6263 6230 case 2 31:6231 6232 /* Line 1806 of yacc.c */ 6233 #line 9 50"parser.yy"6264 case 241: 6265 6266 /* Line 1806 of yacc.c */ 6267 #line 985 "parser.yy" 6234 6268 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6235 6269 break; 6236 6270 6237 case 2 36:6238 6239 /* Line 1806 of yacc.c */ 6240 #line 9 64"parser.yy"6271 case 246: 6272 6273 /* Line 1806 of yacc.c */ 6274 #line 999 "parser.yy" 6241 6275 {} 6242 6276 break; 6243 6277 6244 case 2 37:6245 6246 /* Line 1806 of yacc.c */ 6247 #line 965"parser.yy"6278 case 247: 6279 6280 /* Line 1806 of yacc.c */ 6281 #line 1000 "parser.yy" 6248 6282 {} 6249 6283 break; 6250 6284 6251 case 2 45:6252 6253 /* Line 1806 of yacc.c */ 6254 #line 994"parser.yy"6285 case 255: 6286 6287 /* Line 1806 of yacc.c */ 6288 #line 1029 "parser.yy" 6255 6289 { 6256 6290 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6259 6293 break; 6260 6294 6261 case 2 46:6262 6263 /* Line 1806 of yacc.c */ 6264 #line 10 01"parser.yy"6295 case 256: 6296 6297 /* Line 1806 of yacc.c */ 6298 #line 1036 "parser.yy" 6265 6299 { 6266 6300 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6269 6303 break; 6270 6304 6271 case 2 47:6272 6273 /* Line 1806 of yacc.c */ 6274 #line 10 06"parser.yy"6305 case 257: 6306 6307 /* Line 1806 of yacc.c */ 6308 #line 1041 "parser.yy" 6275 6309 { 6276 6310 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID ); … … 6279 6313 break; 6280 6314 6281 case 2 48:6282 6283 /* Line 1806 of yacc.c */ 6284 #line 10 16"parser.yy"6315 case 258: 6316 6317 /* Line 1806 of yacc.c */ 6318 #line 1051 "parser.yy" 6285 6319 { 6286 6320 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6289 6323 break; 6290 6324 6291 case 2 49:6292 6293 /* Line 1806 of yacc.c */ 6294 #line 10 21"parser.yy"6325 case 259: 6326 6327 /* Line 1806 of yacc.c */ 6328 #line 1056 "parser.yy" 6295 6329 { 6296 6330 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6299 6333 break; 6300 6334 6301 case 2 50:6302 6303 /* Line 1806 of yacc.c */ 6304 #line 10 26"parser.yy"6335 case 260: 6336 6337 /* Line 1806 of yacc.c */ 6338 #line 1061 "parser.yy" 6305 6339 { 6306 6340 typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) ); … … 6309 6343 break; 6310 6344 6311 case 2 51:6312 6313 /* Line 1806 of yacc.c */ 6314 #line 10 34"parser.yy"6345 case 261: 6346 6347 /* Line 1806 of yacc.c */ 6348 #line 1069 "parser.yy" 6315 6349 { 6316 6350 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6319 6353 break; 6320 6354 6321 case 2 52:6322 6323 /* Line 1806 of yacc.c */ 6324 #line 10 39"parser.yy"6355 case 262: 6356 6357 /* Line 1806 of yacc.c */ 6358 #line 1074 "parser.yy" 6325 6359 { 6326 6360 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6329 6363 break; 6330 6364 6331 case 2 53:6332 6333 /* Line 1806 of yacc.c */ 6334 #line 10 44"parser.yy"6365 case 263: 6366 6367 /* Line 1806 of yacc.c */ 6368 #line 1079 "parser.yy" 6335 6369 { 6336 6370 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6339 6373 break; 6340 6374 6341 case 2 54:6342 6343 /* Line 1806 of yacc.c */ 6344 #line 10 49"parser.yy"6375 case 264: 6376 6377 /* Line 1806 of yacc.c */ 6378 #line 1084 "parser.yy" 6345 6379 { 6346 6380 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6349 6383 break; 6350 6384 6351 case 2 55:6352 6353 /* Line 1806 of yacc.c */ 6354 #line 10 54"parser.yy"6385 case 265: 6386 6387 /* Line 1806 of yacc.c */ 6388 #line 1089 "parser.yy" 6355 6389 { 6356 6390 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 6359 6393 break; 6360 6394 6361 case 2 56:6362 6363 /* Line 1806 of yacc.c */ 6364 #line 10 62"parser.yy"6395 case 266: 6396 6397 /* Line 1806 of yacc.c */ 6398 #line 1097 "parser.yy" 6365 6399 { 6366 6400 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true ); … … 6368 6402 break; 6369 6403 6370 case 2 57:6371 6372 /* Line 1806 of yacc.c */ 6373 #line 1 085"parser.yy"6404 case 267: 6405 6406 /* Line 1806 of yacc.c */ 6407 #line 1120 "parser.yy" 6374 6408 { 6375 6409 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6377 6411 break; 6378 6412 6379 case 2 58:6380 6381 /* Line 1806 of yacc.c */ 6382 #line 1 089"parser.yy"6413 case 268: 6414 6415 /* Line 1806 of yacc.c */ 6416 #line 1124 "parser.yy" 6383 6417 { 6384 6418 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6386 6420 break; 6387 6421 6388 case 2 59:6389 6390 /* Line 1806 of yacc.c */ 6391 #line 1 096"parser.yy"6422 case 269: 6423 6424 /* Line 1806 of yacc.c */ 6425 #line 1131 "parser.yy" 6392 6426 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 6393 6427 break; 6394 6428 6395 case 2 60:6396 6397 /* Line 1806 of yacc.c */ 6398 #line 11 00"parser.yy"6429 case 270: 6430 6431 /* Line 1806 of yacc.c */ 6432 #line 1135 "parser.yy" 6399 6433 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); } 6400 6434 break; 6401 6435 6402 case 2 61:6403 6404 /* Line 1806 of yacc.c */ 6405 #line 11 05"parser.yy"6436 case 271: 6437 6438 /* Line 1806 of yacc.c */ 6439 #line 1140 "parser.yy" 6406 6440 { 6407 6441 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6410 6444 break; 6411 6445 6412 case 2 62:6413 6414 /* Line 1806 of yacc.c */ 6415 #line 11 10"parser.yy"6446 case 272: 6447 6448 /* Line 1806 of yacc.c */ 6449 #line 1145 "parser.yy" 6416 6450 { 6417 6451 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6420 6454 break; 6421 6455 6422 case 2 63:6423 6424 /* Line 1806 of yacc.c */ 6425 #line 11 15"parser.yy"6456 case 273: 6457 6458 /* Line 1806 of yacc.c */ 6459 #line 1150 "parser.yy" 6426 6460 { 6427 6461 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD ); … … 6430 6464 break; 6431 6465 6432 case 2 64:6433 6434 /* Line 1806 of yacc.c */ 6435 #line 11 26"parser.yy"6466 case 274: 6467 6468 /* Line 1806 of yacc.c */ 6469 #line 1161 "parser.yy" 6436 6470 { 6437 6471 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6440 6474 break; 6441 6475 6442 case 2 65:6443 6444 /* Line 1806 of yacc.c */ 6445 #line 11 31"parser.yy"6476 case 275: 6477 6478 /* Line 1806 of yacc.c */ 6479 #line 1166 "parser.yy" 6446 6480 { 6447 6481 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6450 6484 break; 6451 6485 6452 case 2 66:6453 6454 /* Line 1806 of yacc.c */ 6455 #line 11 36"parser.yy"6486 case 276: 6487 6488 /* Line 1806 of yacc.c */ 6489 #line 1171 "parser.yy" 6456 6490 { 6457 6491 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6460 6494 break; 6461 6495 6462 case 2 67:6463 6464 /* Line 1806 of yacc.c */ 6465 #line 11 41"parser.yy"6496 case 277: 6497 6498 /* Line 1806 of yacc.c */ 6499 #line 1176 "parser.yy" 6466 6500 { 6467 6501 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6470 6504 break; 6471 6505 6472 case 2 68:6473 6474 /* Line 1806 of yacc.c */ 6475 #line 11 46"parser.yy"6506 case 278: 6507 6508 /* Line 1806 of yacc.c */ 6509 #line 1181 "parser.yy" 6476 6510 { 6477 6511 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6480 6514 break; 6481 6515 6482 case 2 69:6483 6484 /* Line 1806 of yacc.c */ 6485 #line 11 55"parser.yy"6516 case 279: 6517 6518 /* Line 1806 of yacc.c */ 6519 #line 1190 "parser.yy" 6486 6520 { 6487 6521 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD ); … … 6490 6524 break; 6491 6525 6492 case 2 70:6493 6494 /* Line 1806 of yacc.c */ 6495 #line 11 60"parser.yy"6526 case 280: 6527 6528 /* Line 1806 of yacc.c */ 6529 #line 1195 "parser.yy" 6496 6530 { 6497 6531 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD ); … … 6500 6534 break; 6501 6535 6502 case 2 75:6503 6504 /* Line 1806 of yacc.c */ 6505 #line 1 177"parser.yy"6536 case 285: 6537 6538 /* Line 1806 of yacc.c */ 6539 #line 1212 "parser.yy" 6506 6540 { 6507 6541 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6510 6544 break; 6511 6545 6512 case 2 76:6513 6514 /* Line 1806 of yacc.c */ 6515 #line 1 182"parser.yy"6546 case 286: 6547 6548 /* Line 1806 of yacc.c */ 6549 #line 1217 "parser.yy" 6516 6550 { 6517 6551 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6520 6554 break; 6521 6555 6522 case 2 85:6523 6524 /* Line 1806 of yacc.c */ 6525 #line 12 04"parser.yy"6556 case 295: 6557 6558 /* Line 1806 of yacc.c */ 6559 #line 1239 "parser.yy" 6526 6560 { (yyval.decl) = 0; } 6527 6561 break; 6528 6562 6529 case 2 88:6530 6531 /* Line 1806 of yacc.c */ 6532 #line 12 16"parser.yy"6563 case 298: 6564 6565 /* Line 1806 of yacc.c */ 6566 #line 1251 "parser.yy" 6533 6567 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6534 6568 break; 6535 6569 6536 case 291:6537 6538 /* Line 1806 of yacc.c */ 6539 #line 12 27"parser.yy"6570 case 301: 6571 6572 /* Line 1806 of yacc.c */ 6573 #line 1262 "parser.yy" 6540 6574 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); } 6541 6575 break; 6542 6576 6543 case 292:6544 6545 /* Line 1806 of yacc.c */ 6546 #line 12 29"parser.yy"6577 case 302: 6578 6579 /* Line 1806 of yacc.c */ 6580 #line 1264 "parser.yy" 6547 6581 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); } 6548 6582 break; 6549 6583 6550 case 293:6551 6552 /* Line 1806 of yacc.c */ 6553 #line 12 31"parser.yy"6584 case 303: 6585 6586 /* Line 1806 of yacc.c */ 6587 #line 1266 "parser.yy" 6554 6588 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); } 6555 6589 break; 6556 6590 6557 case 294:6558 6559 /* Line 1806 of yacc.c */ 6560 #line 12 33"parser.yy"6591 case 304: 6592 6593 /* Line 1806 of yacc.c */ 6594 #line 1268 "parser.yy" 6561 6595 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); } 6562 6596 break; 6563 6597 6564 case 295:6565 6566 /* Line 1806 of yacc.c */ 6567 #line 12 35"parser.yy"6598 case 305: 6599 6600 /* Line 1806 of yacc.c */ 6601 #line 1270 "parser.yy" 6568 6602 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); } 6569 6603 break; 6570 6604 6571 case 296:6572 6573 /* Line 1806 of yacc.c */ 6574 #line 12 37"parser.yy"6605 case 306: 6606 6607 /* Line 1806 of yacc.c */ 6608 #line 1272 "parser.yy" 6575 6609 { 6576 6610 typedefTable.enterScope(); … … 6578 6612 break; 6579 6613 6580 case 297:6581 6582 /* Line 1806 of yacc.c */ 6583 #line 12 41"parser.yy"6614 case 307: 6615 6616 /* Line 1806 of yacc.c */ 6617 #line 1276 "parser.yy" 6584 6618 { 6585 6619 typedefTable.leaveScope(); … … 6588 6622 break; 6589 6623 6590 case 299:6591 6592 /* Line 1806 of yacc.c */ 6593 #line 12 50"parser.yy"6624 case 309: 6625 6626 /* Line 1806 of yacc.c */ 6627 #line 1285 "parser.yy" 6594 6628 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6595 6629 break; 6596 6630 6597 case 3 00:6598 6599 /* Line 1806 of yacc.c */ 6600 #line 12 52"parser.yy"6631 case 310: 6632 6633 /* Line 1806 of yacc.c */ 6634 #line 1287 "parser.yy" 6601 6635 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6602 6636 break; 6603 6637 6604 case 3 02:6605 6606 /* Line 1806 of yacc.c */ 6607 #line 12 63"parser.yy"6638 case 312: 6639 6640 /* Line 1806 of yacc.c */ 6641 #line 1298 "parser.yy" 6608 6642 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6609 6643 break; 6610 6644 6611 case 3 04:6612 6613 /* Line 1806 of yacc.c */ 6614 #line 1 272"parser.yy"6645 case 314: 6646 6647 /* Line 1806 of yacc.c */ 6648 #line 1307 "parser.yy" 6615 6649 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } 6616 6650 break; 6617 6651 6618 case 3 05:6619 6620 /* Line 1806 of yacc.c */ 6621 #line 1 274"parser.yy"6652 case 315: 6653 6654 /* Line 1806 of yacc.c */ 6655 #line 1309 "parser.yy" 6622 6656 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); } 6623 6657 break; 6624 6658 6625 case 3 06:6626 6627 /* Line 1806 of yacc.c */ 6628 #line 1 276"parser.yy"6659 case 316: 6660 6661 /* Line 1806 of yacc.c */ 6662 #line 1311 "parser.yy" 6629 6663 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); } 6630 6664 break; 6631 6665 6632 case 3 07:6633 6634 /* Line 1806 of yacc.c */ 6635 #line 1 278"parser.yy"6666 case 317: 6667 6668 /* Line 1806 of yacc.c */ 6669 #line 1313 "parser.yy" 6636 6670 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 6637 6671 break; 6638 6672 6639 case 3 08:6640 6641 /* Line 1806 of yacc.c */ 6642 #line 1 280"parser.yy"6673 case 318: 6674 6675 /* Line 1806 of yacc.c */ 6676 #line 1315 "parser.yy" 6643 6677 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); } 6644 6678 break; 6645 6679 6646 case 3 09:6647 6648 /* Line 1806 of yacc.c */ 6649 #line 1 282"parser.yy"6680 case 319: 6681 6682 /* Line 1806 of yacc.c */ 6683 #line 1317 "parser.yy" 6650 6684 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 6651 6685 break; 6652 6686 6653 case 3 10:6654 6655 /* Line 1806 of yacc.c */ 6656 #line 1 284"parser.yy"6687 case 320: 6688 6689 /* Line 1806 of yacc.c */ 6690 #line 1319 "parser.yy" 6657 6691 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); } 6658 6692 break; 6659 6693 6660 case 3 11:6661 6662 /* Line 1806 of yacc.c */ 6663 #line 1 286"parser.yy"6694 case 321: 6695 6696 /* Line 1806 of yacc.c */ 6697 #line 1321 "parser.yy" 6664 6698 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); } 6665 6699 break; 6666 6700 6667 case 3 12:6668 6669 /* Line 1806 of yacc.c */ 6670 #line 1 291"parser.yy"6701 case 322: 6702 6703 /* Line 1806 of yacc.c */ 6704 #line 1326 "parser.yy" 6671 6705 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); } 6672 6706 break; 6673 6707 6674 case 3 13:6675 6676 /* Line 1806 of yacc.c */ 6677 #line 1 293"parser.yy"6708 case 323: 6709 6710 /* Line 1806 of yacc.c */ 6711 #line 1328 "parser.yy" 6678 6712 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); } 6679 6713 break; 6680 6714 6681 case 3 14:6682 6683 /* Line 1806 of yacc.c */ 6684 #line 1 295"parser.yy"6715 case 324: 6716 6717 /* Line 1806 of yacc.c */ 6718 #line 1330 "parser.yy" 6685 6719 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); } 6686 6720 break; 6687 6721 6688 case 3 15:6689 6690 /* Line 1806 of yacc.c */ 6691 #line 1 297"parser.yy"6722 case 325: 6723 6724 /* Line 1806 of yacc.c */ 6725 #line 1332 "parser.yy" 6692 6726 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); } 6693 6727 break; 6694 6728 6695 case 3 16:6696 6697 /* Line 1806 of yacc.c */ 6698 #line 1 299"parser.yy"6729 case 326: 6730 6731 /* Line 1806 of yacc.c */ 6732 #line 1334 "parser.yy" 6699 6733 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); } 6700 6734 break; 6701 6735 6702 case 3 17:6703 6704 /* Line 1806 of yacc.c */ 6705 #line 13 01"parser.yy"6736 case 327: 6737 6738 /* Line 1806 of yacc.c */ 6739 #line 1336 "parser.yy" 6706 6740 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); } 6707 6741 break; 6708 6742 6709 case 3 18:6710 6711 /* Line 1806 of yacc.c */ 6712 #line 13 03"parser.yy"6743 case 328: 6744 6745 /* Line 1806 of yacc.c */ 6746 #line 1338 "parser.yy" 6713 6747 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); } 6714 6748 break; 6715 6749 6716 case 3 19:6717 6718 /* Line 1806 of yacc.c */ 6719 #line 13 05"parser.yy"6750 case 329: 6751 6752 /* Line 1806 of yacc.c */ 6753 #line 1340 "parser.yy" 6720 6754 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); } 6721 6755 break; 6722 6756 6723 case 3 20:6724 6725 /* Line 1806 of yacc.c */ 6726 #line 13 07"parser.yy"6757 case 330: 6758 6759 /* Line 1806 of yacc.c */ 6760 #line 1342 "parser.yy" 6727 6761 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); } 6728 6762 break; 6729 6763 6730 case 3 21:6731 6732 /* Line 1806 of yacc.c */ 6733 #line 13 09"parser.yy"6764 case 331: 6765 6766 /* Line 1806 of yacc.c */ 6767 #line 1344 "parser.yy" 6734 6768 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); } 6735 6769 break; 6736 6770 6737 case 3 22:6738 6739 /* Line 1806 of yacc.c */ 6740 #line 13 11"parser.yy"6771 case 332: 6772 6773 /* Line 1806 of yacc.c */ 6774 #line 1346 "parser.yy" 6741 6775 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); } 6742 6776 break; 6743 6777 6744 case 3 23:6745 6746 /* Line 1806 of yacc.c */ 6747 #line 13 13"parser.yy"6778 case 333: 6779 6780 /* Line 1806 of yacc.c */ 6781 #line 1348 "parser.yy" 6748 6782 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); } 6749 6783 break; 6750 6784 6751 case 3 25:6752 6753 /* Line 1806 of yacc.c */ 6754 #line 13 20"parser.yy"6785 case 335: 6786 6787 /* Line 1806 of yacc.c */ 6788 #line 1355 "parser.yy" 6755 6789 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6756 6790 break; 6757 6791 6758 case 3 26:6759 6760 /* Line 1806 of yacc.c */ 6761 #line 13 22"parser.yy"6792 case 336: 6793 6794 /* Line 1806 of yacc.c */ 6795 #line 1357 "parser.yy" 6762 6796 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6763 6797 break; 6764 6798 6765 case 3 27:6766 6767 /* Line 1806 of yacc.c */ 6768 #line 13 24"parser.yy"6799 case 337: 6800 6801 /* Line 1806 of yacc.c */ 6802 #line 1359 "parser.yy" 6769 6803 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6770 6804 break; 6771 6805 6772 case 3 28:6773 6774 /* Line 1806 of yacc.c */ 6775 #line 13 26"parser.yy"6806 case 338: 6807 6808 /* Line 1806 of yacc.c */ 6809 #line 1361 "parser.yy" 6776 6810 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); } 6777 6811 break; 6778 6812 6779 case 3 30:6780 6781 /* Line 1806 of yacc.c */ 6782 #line 13 32"parser.yy"6813 case 340: 6814 6815 /* Line 1806 of yacc.c */ 6816 #line 1367 "parser.yy" 6783 6817 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6784 6818 break; 6785 6819 6786 case 3 32:6787 6788 /* Line 1806 of yacc.c */ 6789 #line 13 39"parser.yy"6820 case 342: 6821 6822 /* Line 1806 of yacc.c */ 6823 #line 1374 "parser.yy" 6790 6824 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6791 6825 break; 6792 6826 6793 case 3 33:6794 6795 /* Line 1806 of yacc.c */ 6796 #line 13 41"parser.yy"6827 case 343: 6828 6829 /* Line 1806 of yacc.c */ 6830 #line 1376 "parser.yy" 6797 6831 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6798 6832 break; 6799 6833 6800 case 3 34:6801 6802 /* Line 1806 of yacc.c */ 6803 #line 13 43"parser.yy"6834 case 344: 6835 6836 /* Line 1806 of yacc.c */ 6837 #line 1378 "parser.yy" 6804 6838 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); } 6805 6839 break; 6806 6840 6807 case 3 35:6808 6809 /* Line 1806 of yacc.c */ 6810 #line 13 48"parser.yy"6841 case 345: 6842 6843 /* Line 1806 of yacc.c */ 6844 #line 1383 "parser.yy" 6811 6845 { (yyval.decl) = (yyvsp[(3) - (4)].decl); } 6812 6846 break; 6813 6847 6814 case 3 36:6815 6816 /* Line 1806 of yacc.c */ 6817 #line 13 50"parser.yy"6848 case 346: 6849 6850 /* Line 1806 of yacc.c */ 6851 #line 1385 "parser.yy" 6818 6852 { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); } 6819 6853 break; 6820 6854 6821 case 3 37:6822 6823 /* Line 1806 of yacc.c */ 6824 #line 13 52"parser.yy"6855 case 347: 6856 6857 /* Line 1806 of yacc.c */ 6858 #line 1387 "parser.yy" 6825 6859 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); } 6826 6860 break; 6827 6861 6828 case 3 38:6829 6830 /* Line 1806 of yacc.c */ 6831 #line 13 54"parser.yy"6862 case 348: 6863 6864 /* Line 1806 of yacc.c */ 6865 #line 1389 "parser.yy" 6832 6866 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 6833 6867 break; 6834 6868 6835 case 3 40:6836 6837 /* Line 1806 of yacc.c */ 6838 #line 13 60"parser.yy"6869 case 350: 6870 6871 /* Line 1806 of yacc.c */ 6872 #line 1395 "parser.yy" 6839 6873 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6840 6874 break; 6841 6875 6842 case 3 41:6843 6844 /* Line 1806 of yacc.c */ 6845 #line 13 62"parser.yy"6876 case 351: 6877 6878 /* Line 1806 of yacc.c */ 6879 #line 1397 "parser.yy" 6846 6880 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6847 6881 break; 6848 6882 6849 case 3 42:6850 6851 /* Line 1806 of yacc.c */ 6852 #line 13 64"parser.yy"6883 case 352: 6884 6885 /* Line 1806 of yacc.c */ 6886 #line 1399 "parser.yy" 6853 6887 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6854 6888 break; 6855 6889 6856 case 3 44:6857 6858 /* Line 1806 of yacc.c */ 6859 #line 1 370"parser.yy"6890 case 354: 6891 6892 /* Line 1806 of yacc.c */ 6893 #line 1405 "parser.yy" 6860 6894 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6861 6895 break; 6862 6896 6863 case 3 45:6864 6865 /* Line 1806 of yacc.c */ 6866 #line 1 372"parser.yy"6897 case 355: 6898 6899 /* Line 1806 of yacc.c */ 6900 #line 1407 "parser.yy" 6867 6901 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6868 6902 break; 6869 6903 6870 case 3 47:6871 6872 /* Line 1806 of yacc.c */ 6873 #line 1 378"parser.yy"6904 case 357: 6905 6906 /* Line 1806 of yacc.c */ 6907 #line 1413 "parser.yy" 6874 6908 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6875 6909 break; 6876 6910 6877 case 3 48:6878 6879 /* Line 1806 of yacc.c */ 6880 #line 1 380"parser.yy"6911 case 358: 6912 6913 /* Line 1806 of yacc.c */ 6914 #line 1415 "parser.yy" 6881 6915 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6882 6916 break; 6883 6917 6884 case 3 49:6885 6886 /* Line 1806 of yacc.c */ 6887 #line 1 382"parser.yy"6918 case 359: 6919 6920 /* Line 1806 of yacc.c */ 6921 #line 1417 "parser.yy" 6888 6922 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6889 6923 break; 6890 6924 6891 case 3 50:6892 6893 /* Line 1806 of yacc.c */ 6894 #line 1 387"parser.yy"6925 case 360: 6926 6927 /* Line 1806 of yacc.c */ 6928 #line 1422 "parser.yy" 6895 6929 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); } 6896 6930 break; 6897 6931 6898 case 3 51:6899 6900 /* Line 1806 of yacc.c */ 6901 #line 1 389"parser.yy"6932 case 361: 6933 6934 /* Line 1806 of yacc.c */ 6935 #line 1424 "parser.yy" 6902 6936 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6903 6937 break; 6904 6938 6905 case 3 52:6906 6907 /* Line 1806 of yacc.c */ 6908 #line 1 391"parser.yy"6939 case 362: 6940 6941 /* Line 1806 of yacc.c */ 6942 #line 1426 "parser.yy" 6909 6943 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6910 6944 break; 6911 6945 6912 case 3 55:6913 6914 /* Line 1806 of yacc.c */ 6915 #line 14 01"parser.yy"6946 case 365: 6947 6948 /* Line 1806 of yacc.c */ 6949 #line 1436 "parser.yy" 6916 6950 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); } 6917 6951 break; 6918 6952 6919 case 3 56:6920 6921 /* Line 1806 of yacc.c */ 6922 #line 14 03"parser.yy"6953 case 366: 6954 6955 /* Line 1806 of yacc.c */ 6956 #line 1438 "parser.yy" 6923 6957 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); } 6924 6958 break; 6925 6959 6926 case 3 57:6927 6928 /* Line 1806 of yacc.c */ 6929 #line 14 05"parser.yy"6960 case 367: 6961 6962 /* Line 1806 of yacc.c */ 6963 #line 1440 "parser.yy" 6930 6964 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); } 6931 6965 break; 6932 6966 6933 case 3 58:6934 6935 /* Line 1806 of yacc.c */ 6936 #line 14 07"parser.yy"6967 case 368: 6968 6969 /* Line 1806 of yacc.c */ 6970 #line 1442 "parser.yy" 6937 6971 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); } 6938 6972 break; 6939 6973 6940 case 3 59:6941 6942 /* Line 1806 of yacc.c */ 6943 #line 14 09"parser.yy"6974 case 369: 6975 6976 /* Line 1806 of yacc.c */ 6977 #line 1444 "parser.yy" 6944 6978 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 6945 6979 break; 6946 6980 6947 case 3 60:6948 6949 /* Line 1806 of yacc.c */ 6950 #line 14 14"parser.yy"6981 case 370: 6982 6983 /* Line 1806 of yacc.c */ 6984 #line 1449 "parser.yy" 6951 6985 { (yyval.aggKey) = DeclarationNode::Struct; } 6952 6986 break; 6953 6987 6954 case 3 61:6955 6956 /* Line 1806 of yacc.c */ 6957 #line 14 16"parser.yy"6988 case 371: 6989 6990 /* Line 1806 of yacc.c */ 6991 #line 1451 "parser.yy" 6958 6992 { (yyval.aggKey) = DeclarationNode::Union; } 6959 6993 break; 6960 6994 6961 case 3 62:6962 6963 /* Line 1806 of yacc.c */ 6964 #line 14 21"parser.yy"6995 case 372: 6996 6997 /* Line 1806 of yacc.c */ 6998 #line 1456 "parser.yy" 6965 6999 { (yyval.decl) = (yyvsp[(1) - (1)].decl); } 6966 7000 break; 6967 7001 6968 case 3 63:6969 6970 /* Line 1806 of yacc.c */ 6971 #line 14 23"parser.yy"7002 case 373: 7003 7004 /* Line 1806 of yacc.c */ 7005 #line 1458 "parser.yy" 6972 7006 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 6973 7007 break; 6974 7008 6975 case 3 65:6976 6977 /* Line 1806 of yacc.c */ 6978 #line 14 29"parser.yy"7009 case 375: 7010 7011 /* Line 1806 of yacc.c */ 7012 #line 1464 "parser.yy" 6979 7013 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 6980 7014 break; 6981 7015 6982 case 3 67:6983 6984 /* Line 1806 of yacc.c */ 6985 #line 14 32"parser.yy"7016 case 377: 7017 7018 /* Line 1806 of yacc.c */ 7019 #line 1467 "parser.yy" 6986 7020 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 6987 7021 break; 6988 7022 6989 case 3 69:6990 6991 /* Line 1806 of yacc.c */ 6992 #line 14 38"parser.yy"7023 case 379: 7024 7025 /* Line 1806 of yacc.c */ 7026 #line 1473 "parser.yy" 6993 7027 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); } 6994 7028 break; 6995 7029 6996 case 3 70:6997 6998 /* Line 1806 of yacc.c */ 6999 #line 14 40"parser.yy"7030 case 380: 7031 7032 /* Line 1806 of yacc.c */ 7033 #line 1475 "parser.yy" 7000 7034 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); } 7001 7035 break; 7002 7036 7003 case 3 71:7004 7005 /* Line 1806 of yacc.c */ 7006 #line 14 42"parser.yy"7037 case 381: 7038 7039 /* Line 1806 of yacc.c */ 7040 #line 1477 "parser.yy" 7007 7041 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); } 7008 7042 break; 7009 7043 7010 case 3 72:7011 7012 /* Line 1806 of yacc.c */ 7013 #line 14 47"parser.yy"7044 case 382: 7045 7046 /* Line 1806 of yacc.c */ 7047 #line 1482 "parser.yy" 7014 7048 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7015 7049 break; 7016 7050 7017 case 3 73:7018 7019 /* Line 1806 of yacc.c */ 7020 #line 14 49"parser.yy"7051 case 383: 7052 7053 /* Line 1806 of yacc.c */ 7054 #line 1484 "parser.yy" 7021 7055 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); } 7022 7056 break; 7023 7057 7024 case 3 74:7025 7026 /* Line 1806 of yacc.c */ 7027 #line 14 54"parser.yy"7058 case 384: 7059 7060 /* Line 1806 of yacc.c */ 7061 #line 1489 "parser.yy" 7028 7062 { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ } 7029 7063 break; 7030 7064 7031 case 3 75:7032 7033 /* Line 1806 of yacc.c */ 7034 #line 14 56"parser.yy"7065 case 385: 7066 7067 /* Line 1806 of yacc.c */ 7068 #line 1491 "parser.yy" 7035 7069 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); } 7036 7070 break; 7037 7071 7038 case 3 76:7039 7040 /* Line 1806 of yacc.c */ 7041 #line 14 59"parser.yy"7072 case 386: 7073 7074 /* Line 1806 of yacc.c */ 7075 #line 1494 "parser.yy" 7042 7076 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7043 7077 break; 7044 7078 7045 case 3 77:7046 7047 /* Line 1806 of yacc.c */ 7048 #line 14 62"parser.yy"7079 case 387: 7080 7081 /* Line 1806 of yacc.c */ 7082 #line 1497 "parser.yy" 7049 7083 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7050 7084 break; 7051 7085 7052 case 3 79:7053 7054 /* Line 1806 of yacc.c */ 7055 #line 1 468"parser.yy"7086 case 389: 7087 7088 /* Line 1806 of yacc.c */ 7089 #line 1503 "parser.yy" 7056 7090 { (yyval.en) = 0; } 7057 7091 break; 7058 7092 7059 case 3 80:7060 7061 /* Line 1806 of yacc.c */ 7062 #line 1 470"parser.yy"7093 case 390: 7094 7095 /* Line 1806 of yacc.c */ 7096 #line 1505 "parser.yy" 7063 7097 { (yyval.en) = (yyvsp[(1) - (1)].en); } 7064 7098 break; 7065 7099 7066 case 3 81:7067 7068 /* Line 1806 of yacc.c */ 7069 #line 1 475"parser.yy"7100 case 391: 7101 7102 /* Line 1806 of yacc.c */ 7103 #line 1510 "parser.yy" 7070 7104 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7071 7105 break; 7072 7106 7073 case 3 83:7074 7075 /* Line 1806 of yacc.c */ 7076 #line 1 484"parser.yy"7107 case 393: 7108 7109 /* Line 1806 of yacc.c */ 7110 #line 1519 "parser.yy" 7077 7111 { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); } 7078 7112 break; 7079 7113 7080 case 3 84:7081 7082 /* Line 1806 of yacc.c */ 7083 #line 1 486"parser.yy"7114 case 394: 7115 7116 /* Line 1806 of yacc.c */ 7117 #line 1521 "parser.yy" 7084 7118 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); } 7085 7119 break; 7086 7120 7087 case 3 85:7088 7089 /* Line 1806 of yacc.c */ 7090 #line 1 488"parser.yy"7121 case 395: 7122 7123 /* Line 1806 of yacc.c */ 7124 #line 1523 "parser.yy" 7091 7125 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); } 7092 7126 break; 7093 7127 7094 case 3 86:7095 7096 /* Line 1806 of yacc.c */ 7097 #line 1 493"parser.yy"7128 case 396: 7129 7130 /* Line 1806 of yacc.c */ 7131 #line 1528 "parser.yy" 7098 7132 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); } 7099 7133 break; 7100 7134 7101 case 3 87:7102 7103 /* Line 1806 of yacc.c */ 7104 #line 1 495"parser.yy"7135 case 397: 7136 7137 /* Line 1806 of yacc.c */ 7138 #line 1530 "parser.yy" 7105 7139 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); } 7106 7140 break; 7107 7141 7108 case 3 88:7109 7110 /* Line 1806 of yacc.c */ 7111 #line 15 00"parser.yy"7142 case 398: 7143 7144 /* Line 1806 of yacc.c */ 7145 #line 1535 "parser.yy" 7112 7146 { (yyval.en) = 0; } 7113 7147 break; 7114 7148 7115 case 3 89:7116 7117 /* Line 1806 of yacc.c */ 7118 #line 15 02"parser.yy"7149 case 399: 7150 7151 /* Line 1806 of yacc.c */ 7152 #line 1537 "parser.yy" 7119 7153 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7120 7154 break; 7121 7155 7122 case 390:7123 7124 /* Line 1806 of yacc.c */7125 #line 1509 "parser.yy"7126 { (yyval.decl) = 0; }7127 break;7128 7129 case 394:7130 7131 /* Line 1806 of yacc.c */7132 #line 1517 "parser.yy"7133 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }7134 break;7135 7136 case 395:7137 7138 /* Line 1806 of yacc.c */7139 #line 1519 "parser.yy"7140 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }7141 break;7142 7143 case 396:7144 7145 /* Line 1806 of yacc.c */7146 #line 1521 "parser.yy"7147 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }7148 break;7149 7150 case 398:7151 7152 /* Line 1806 of yacc.c */7153 #line 1529 "parser.yy"7154 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }7155 break;7156 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 7156 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 7157 7180 7158 /* Line 1806 of yacc.c */ … … 7183 7161 break; 7184 7162 7163 case 404: 7164 7165 /* Line 1806 of yacc.c */ 7166 #line 1552 "parser.yy" 7167 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7168 break; 7169 7170 case 405: 7171 7172 /* Line 1806 of yacc.c */ 7173 #line 1554 "parser.yy" 7174 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7175 break; 7176 7185 7177 case 406: 7186 7178 7187 7179 /* Line 1806 of yacc.c */ 7188 #line 155 1"parser.yy"7180 #line 1556 "parser.yy" 7189 7181 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7190 7182 break; 7191 7183 7184 case 408: 7185 7186 /* Line 1806 of yacc.c */ 7187 #line 1564 "parser.yy" 7188 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7189 break; 7190 7192 7191 case 409: 7193 7192 7194 7193 /* Line 1806 of yacc.c */ 7195 #line 15 58"parser.yy"7194 #line 1566 "parser.yy" 7196 7195 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7197 7196 break; … … 7200 7199 7201 7200 /* Line 1806 of yacc.c */ 7202 #line 1560 "parser.yy" 7201 #line 1568 "parser.yy" 7202 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); } 7203 break; 7204 7205 case 412: 7206 7207 /* Line 1806 of yacc.c */ 7208 #line 1574 "parser.yy" 7203 7209 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7204 7210 break; 7205 7211 7206 case 412: 7207 7208 /* Line 1806 of yacc.c */ 7209 #line 1569 "parser.yy" 7212 case 413: 7213 7214 /* Line 1806 of yacc.c */ 7215 #line 1579 "parser.yy" 7216 { (yyval.decl) = 0; } 7217 break; 7218 7219 case 416: 7220 7221 /* Line 1806 of yacc.c */ 7222 #line 1586 "parser.yy" 7223 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7224 break; 7225 7226 case 419: 7227 7228 /* Line 1806 of yacc.c */ 7229 #line 1593 "parser.yy" 7230 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7231 break; 7232 7233 case 420: 7234 7235 /* Line 1806 of yacc.c */ 7236 #line 1595 "parser.yy" 7237 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7238 break; 7239 7240 case 422: 7241 7242 /* Line 1806 of yacc.c */ 7243 #line 1604 "parser.yy" 7210 7244 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7211 7245 break; 7212 7246 7213 case 4 13:7214 7215 /* Line 1806 of yacc.c */ 7216 #line 1 572"parser.yy"7247 case 423: 7248 7249 /* Line 1806 of yacc.c */ 7250 #line 1607 "parser.yy" 7217 7251 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7218 7252 break; 7219 7253 7220 case 4 14:7221 7222 /* Line 1806 of yacc.c */ 7223 #line 1 574"parser.yy"7254 case 424: 7255 7256 /* Line 1806 of yacc.c */ 7257 #line 1609 "parser.yy" 7224 7258 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); } 7225 7259 break; 7226 7260 7227 case 4 19:7228 7229 /* Line 1806 of yacc.c */ 7230 #line 1 584"parser.yy"7261 case 429: 7262 7263 /* Line 1806 of yacc.c */ 7264 #line 1619 "parser.yy" 7231 7265 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7232 7266 break; 7233 7267 7234 case 4 21:7235 7236 /* Line 1806 of yacc.c */ 7237 #line 1 590"parser.yy"7268 case 431: 7269 7270 /* Line 1806 of yacc.c */ 7271 #line 1625 "parser.yy" 7238 7272 { 7239 7273 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7242 7276 break; 7243 7277 7244 case 4 22:7245 7246 /* Line 1806 of yacc.c */ 7247 #line 1 595"parser.yy"7278 case 432: 7279 7280 /* Line 1806 of yacc.c */ 7281 #line 1630 "parser.yy" 7248 7282 { 7249 7283 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7252 7286 break; 7253 7287 7254 case 4 24:7255 7256 /* Line 1806 of yacc.c */ 7257 #line 16 04"parser.yy"7288 case 434: 7289 7290 /* Line 1806 of yacc.c */ 7291 #line 1639 "parser.yy" 7258 7292 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7259 7293 break; 7260 7294 7261 case 4 25:7262 7263 /* Line 1806 of yacc.c */ 7264 #line 16 13"parser.yy"7295 case 435: 7296 7297 /* Line 1806 of yacc.c */ 7298 #line 1648 "parser.yy" 7265 7299 { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); } 7266 7300 break; 7267 7301 7268 case 4 26:7269 7270 /* Line 1806 of yacc.c */ 7271 #line 16 15"parser.yy"7302 case 436: 7303 7304 /* Line 1806 of yacc.c */ 7305 #line 1650 "parser.yy" 7272 7306 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); } 7273 7307 break; 7274 7308 7275 case 4 38:7276 7277 /* Line 1806 of yacc.c */ 7278 #line 16 40"parser.yy"7309 case 448: 7310 7311 /* Line 1806 of yacc.c */ 7312 #line 1675 "parser.yy" 7279 7313 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7280 7314 break; 7281 7315 7282 case 4 42:7283 7284 /* Line 1806 of yacc.c */ 7285 #line 16 48"parser.yy"7316 case 452: 7317 7318 /* Line 1806 of yacc.c */ 7319 #line 1683 "parser.yy" 7286 7320 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7287 7321 break; 7288 7322 7289 case 4 43:7290 7291 /* Line 1806 of yacc.c */ 7292 #line 16 53"parser.yy"7323 case 453: 7324 7325 /* Line 1806 of yacc.c */ 7326 #line 1688 "parser.yy" 7293 7327 { (yyval.in) = 0; } 7294 7328 break; 7295 7329 7296 case 4 44:7297 7298 /* Line 1806 of yacc.c */ 7299 #line 16 55"parser.yy"7330 case 454: 7331 7332 /* Line 1806 of yacc.c */ 7333 #line 1690 "parser.yy" 7300 7334 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7301 7335 break; 7302 7336 7303 case 4 45:7304 7305 /* Line 1806 of yacc.c */ 7306 #line 16 59"parser.yy"7337 case 455: 7338 7339 /* Line 1806 of yacc.c */ 7340 #line 1694 "parser.yy" 7307 7341 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); } 7308 7342 break; 7309 7343 7310 case 4 46:7311 7312 /* Line 1806 of yacc.c */ 7313 #line 16 60"parser.yy"7344 case 456: 7345 7346 /* Line 1806 of yacc.c */ 7347 #line 1695 "parser.yy" 7314 7348 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); } 7315 7349 break; 7316 7350 7317 case 4 48:7318 7319 /* Line 1806 of yacc.c */ 7320 #line 1 665"parser.yy"7351 case 458: 7352 7353 /* Line 1806 of yacc.c */ 7354 #line 1700 "parser.yy" 7321 7355 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); } 7322 7356 break; 7323 7357 7324 case 4 49:7325 7326 /* Line 1806 of yacc.c */ 7327 #line 1 666"parser.yy"7358 case 459: 7359 7360 /* Line 1806 of yacc.c */ 7361 #line 1701 "parser.yy" 7328 7362 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); } 7329 7363 break; 7330 7364 7331 case 4 50:7332 7333 /* Line 1806 of yacc.c */ 7334 #line 1 668"parser.yy"7365 case 460: 7366 7367 /* Line 1806 of yacc.c */ 7368 #line 1703 "parser.yy" 7335 7369 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); } 7336 7370 break; 7337 7371 7338 case 4 52:7339 7340 /* Line 1806 of yacc.c */ 7341 #line 1 684"parser.yy"7372 case 462: 7373 7374 /* Line 1806 of yacc.c */ 7375 #line 1719 "parser.yy" 7342 7376 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); } 7343 7377 break; 7344 7378 7345 case 4 54:7346 7347 /* Line 1806 of yacc.c */ 7348 #line 1 690"parser.yy"7379 case 464: 7380 7381 /* Line 1806 of yacc.c */ 7382 #line 1725 "parser.yy" 7349 7383 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); } 7350 7384 break; 7351 7385 7352 case 4 55:7353 7354 /* Line 1806 of yacc.c */ 7355 #line 1 697"parser.yy"7386 case 465: 7387 7388 /* Line 1806 of yacc.c */ 7389 #line 1733 "parser.yy" 7356 7390 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); } 7357 7391 break; 7358 7392 7359 case 4 56:7360 7361 /* Line 1806 of yacc.c */ 7362 #line 1 699"parser.yy"7393 case 466: 7394 7395 /* Line 1806 of yacc.c */ 7396 #line 1735 "parser.yy" 7363 7397 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); } 7364 7398 break; 7365 7399 7366 case 4 57:7367 7368 /* Line 1806 of yacc.c */ 7369 #line 17 02"parser.yy"7400 case 467: 7401 7402 /* Line 1806 of yacc.c */ 7403 #line 1738 "parser.yy" 7370 7404 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); } 7371 7405 break; 7372 7406 7373 case 4 58:7374 7375 /* Line 1806 of yacc.c */ 7376 #line 17 04"parser.yy"7407 case 468: 7408 7409 /* Line 1806 of yacc.c */ 7410 #line 1740 "parser.yy" 7377 7411 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); } 7378 7412 break; 7379 7413 7380 case 4 59:7381 7382 /* Line 1806 of yacc.c */ 7383 #line 17 06"parser.yy"7414 case 469: 7415 7416 /* Line 1806 of yacc.c */ 7417 #line 1742 "parser.yy" 7384 7418 { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); } 7385 7419 break; 7386 7420 7387 case 4 60:7388 7389 /* Line 1806 of yacc.c */ 7390 #line 17 08"parser.yy"7421 case 470: 7422 7423 /* Line 1806 of yacc.c */ 7424 #line 1744 "parser.yy" 7391 7425 { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); } 7392 7426 break; 7393 7427 7394 case 4 62:7395 7396 /* Line 1806 of yacc.c */ 7397 #line 17 32"parser.yy"7428 case 472: 7429 7430 /* Line 1806 of yacc.c */ 7431 #line 1768 "parser.yy" 7398 7432 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7399 7433 break; 7400 7434 7401 case 4 63:7402 7403 /* Line 1806 of yacc.c */ 7404 #line 17 34"parser.yy"7435 case 473: 7436 7437 /* Line 1806 of yacc.c */ 7438 #line 1770 "parser.yy" 7405 7439 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7406 7440 break; 7407 7441 7408 case 4 64:7409 7410 /* Line 1806 of yacc.c */ 7411 #line 17 36"parser.yy"7442 case 474: 7443 7444 /* Line 1806 of yacc.c */ 7445 #line 1772 "parser.yy" 7412 7446 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 7413 7447 break; 7414 7448 7415 case 4 66:7416 7417 /* Line 1806 of yacc.c */ 7418 #line 17 42"parser.yy"7449 case 476: 7450 7451 /* Line 1806 of yacc.c */ 7452 #line 1778 "parser.yy" 7419 7453 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7420 7454 break; 7421 7455 7422 case 4 67:7423 7424 /* Line 1806 of yacc.c */ 7425 #line 17 44"parser.yy"7456 case 477: 7457 7458 /* Line 1806 of yacc.c */ 7459 #line 1780 "parser.yy" 7426 7460 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7427 7461 break; 7428 7462 7429 case 4 68:7430 7431 /* Line 1806 of yacc.c */ 7432 #line 17 49"parser.yy"7463 case 478: 7464 7465 /* Line 1806 of yacc.c */ 7466 #line 1785 "parser.yy" 7433 7467 { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 7434 7468 break; 7435 7469 7436 case 4 70:7437 7438 /* Line 1806 of yacc.c */ 7439 #line 17 55"parser.yy"7470 case 480: 7471 7472 /* Line 1806 of yacc.c */ 7473 #line 1791 "parser.yy" 7440 7474 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); } 7441 7475 break; 7442 7476 7443 case 4 71:7444 7445 /* Line 1806 of yacc.c */ 7446 #line 17 60"parser.yy"7477 case 481: 7478 7479 /* Line 1806 of yacc.c */ 7480 #line 1796 "parser.yy" 7447 7481 { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); } 7448 7482 break; 7449 7483 7450 case 4 72:7451 7452 /* Line 1806 of yacc.c */ 7453 #line 17 62"parser.yy"7484 case 482: 7485 7486 /* Line 1806 of yacc.c */ 7487 #line 1798 "parser.yy" 7454 7488 { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); } 7455 7489 break; 7456 7490 7457 case 4 74:7458 7459 /* Line 1806 of yacc.c */ 7460 #line 1 768"parser.yy"7491 case 484: 7492 7493 /* Line 1806 of yacc.c */ 7494 #line 1804 "parser.yy" 7461 7495 { (yyval.tclass) = DeclarationNode::Type; } 7462 7496 break; 7463 7497 7464 case 4 75:7465 7466 /* Line 1806 of yacc.c */ 7467 #line 1 770"parser.yy"7498 case 485: 7499 7500 /* Line 1806 of yacc.c */ 7501 #line 1806 "parser.yy" 7468 7502 { (yyval.tclass) = DeclarationNode::Ftype; } 7469 7503 break; 7470 7504 7471 case 4 76:7472 7473 /* Line 1806 of yacc.c */ 7474 #line 1 772"parser.yy"7505 case 486: 7506 7507 /* Line 1806 of yacc.c */ 7508 #line 1808 "parser.yy" 7475 7509 { (yyval.tclass) = DeclarationNode::Dtype; } 7476 7510 break; 7477 7511 7478 case 4 77:7479 7480 /* Line 1806 of yacc.c */ 7481 #line 1 777"parser.yy"7512 case 487: 7513 7514 /* Line 1806 of yacc.c */ 7515 #line 1813 "parser.yy" 7482 7516 { (yyval.decl) = 0; } 7483 7517 break; 7484 7518 7485 case 4 78:7486 7487 /* Line 1806 of yacc.c */ 7488 #line 1 779"parser.yy"7519 case 488: 7520 7521 /* Line 1806 of yacc.c */ 7522 #line 1815 "parser.yy" 7489 7523 { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 7490 7524 break; 7491 7525 7492 case 4 79:7493 7494 /* Line 1806 of yacc.c */ 7495 #line 1 784"parser.yy"7526 case 489: 7527 7528 /* Line 1806 of yacc.c */ 7529 #line 1820 "parser.yy" 7496 7530 { 7497 7531 typedefTable.openContext( *(yyvsp[(2) - (5)].tok) ); … … 7500 7534 break; 7501 7535 7502 case 4 80:7503 7504 /* Line 1806 of yacc.c */ 7505 #line 1 789"parser.yy"7536 case 490: 7537 7538 /* Line 1806 of yacc.c */ 7539 #line 1825 "parser.yy" 7506 7540 { (yyval.decl) = (yyvsp[(4) - (5)].decl); } 7507 7541 break; 7508 7542 7509 case 4 81:7510 7511 /* Line 1806 of yacc.c */ 7512 #line 1 791"parser.yy"7543 case 491: 7544 7545 /* Line 1806 of yacc.c */ 7546 #line 1827 "parser.yy" 7513 7547 { (yyval.decl) = 0; } 7514 7548 break; 7515 7549 7516 case 4 82:7517 7518 /* Line 1806 of yacc.c */ 7519 #line 1 796"parser.yy"7550 case 492: 7551 7552 /* Line 1806 of yacc.c */ 7553 #line 1832 "parser.yy" 7520 7554 { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); } 7521 7555 break; 7522 7556 7523 case 4 84:7524 7525 /* Line 1806 of yacc.c */ 7526 #line 1 799"parser.yy"7557 case 494: 7558 7559 /* Line 1806 of yacc.c */ 7560 #line 1835 "parser.yy" 7527 7561 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); } 7528 7562 break; 7529 7563 7530 case 4 85:7531 7532 /* Line 1806 of yacc.c */ 7533 #line 18 01"parser.yy"7564 case 495: 7565 7566 /* Line 1806 of yacc.c */ 7567 #line 1837 "parser.yy" 7534 7568 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 7535 7569 break; 7536 7570 7537 case 4 86:7538 7539 /* Line 1806 of yacc.c */ 7540 #line 18 06"parser.yy"7571 case 496: 7572 7573 /* Line 1806 of yacc.c */ 7574 #line 1842 "parser.yy" 7541 7575 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7542 7576 break; 7543 7577 7544 case 4 87:7545 7546 /* Line 1806 of yacc.c */ 7547 #line 18 08"parser.yy"7578 case 497: 7579 7580 /* Line 1806 of yacc.c */ 7581 #line 1844 "parser.yy" 7548 7582 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); } 7549 7583 break; 7550 7584 7551 case 4 88:7552 7553 /* Line 1806 of yacc.c */ 7554 #line 18 10"parser.yy"7585 case 498: 7586 7587 /* Line 1806 of yacc.c */ 7588 #line 1846 "parser.yy" 7555 7589 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); } 7556 7590 break; 7557 7591 7558 case 4 89:7559 7560 /* Line 1806 of yacc.c */ 7561 #line 18 15"parser.yy"7592 case 499: 7593 7594 /* Line 1806 of yacc.c */ 7595 #line 1851 "parser.yy" 7562 7596 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); } 7563 7597 break; 7564 7598 7565 case 490:7566 7567 /* Line 1806 of yacc.c */ 7568 #line 18 17"parser.yy"7599 case 500: 7600 7601 /* Line 1806 of yacc.c */ 7602 #line 1853 "parser.yy" 7569 7603 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7570 7604 break; 7571 7605 7572 case 491:7573 7574 /* Line 1806 of yacc.c */ 7575 #line 18 22"parser.yy"7606 case 501: 7607 7608 /* Line 1806 of yacc.c */ 7609 #line 1858 "parser.yy" 7576 7610 { 7577 7611 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD ); … … 7580 7614 break; 7581 7615 7582 case 492:7583 7584 /* Line 1806 of yacc.c */ 7585 #line 18 27"parser.yy"7616 case 502: 7617 7618 /* Line 1806 of yacc.c */ 7619 #line 1863 "parser.yy" 7586 7620 { 7587 7621 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG ); … … 7590 7624 break; 7591 7625 7592 case 493:7593 7594 /* Line 1806 of yacc.c */ 7595 #line 18 35"parser.yy"7626 case 503: 7627 7628 /* Line 1806 of yacc.c */ 7629 #line 1871 "parser.yy" 7596 7630 { 7597 7631 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID ); … … 7600 7634 break; 7601 7635 7602 case 494:7603 7604 /* Line 1806 of yacc.c */ 7605 #line 18 40"parser.yy"7636 case 504: 7637 7638 /* Line 1806 of yacc.c */ 7639 #line 1876 "parser.yy" 7606 7640 { 7607 7641 typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) ); … … 7610 7644 break; 7611 7645 7612 case 495:7613 7614 /* Line 1806 of yacc.c */ 7615 #line 18 45"parser.yy"7646 case 505: 7647 7648 /* Line 1806 of yacc.c */ 7649 #line 1881 "parser.yy" 7616 7650 { 7617 7651 typedefTable.leaveContext(); … … 7621 7655 break; 7622 7656 7623 case 497:7624 7625 /* Line 1806 of yacc.c */ 7626 #line 18 55"parser.yy"7657 case 507: 7658 7659 /* Line 1806 of yacc.c */ 7660 #line 1891 "parser.yy" 7627 7661 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 7628 7662 break; 7629 7663 7630 case 5 00:7631 7632 /* Line 1806 of yacc.c */ 7633 #line 1 865"parser.yy"7664 case 510: 7665 7666 /* Line 1806 of yacc.c */ 7667 #line 1901 "parser.yy" 7634 7668 { 7635 7669 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7638 7672 break; 7639 7673 7640 case 5 01:7641 7642 /* Line 1806 of yacc.c */ 7643 #line 1 870"parser.yy"7674 case 511: 7675 7676 /* Line 1806 of yacc.c */ 7677 #line 1906 "parser.yy" 7644 7678 { 7645 7679 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7648 7682 break; 7649 7683 7650 case 5 02:7651 7652 /* Line 1806 of yacc.c */ 7653 #line 1 875"parser.yy"7684 case 512: 7685 7686 /* Line 1806 of yacc.c */ 7687 #line 1911 "parser.yy" 7654 7688 { 7655 7689 typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 7658 7692 break; 7659 7693 7660 case 5 03:7661 7662 /* Line 1806 of yacc.c */ 7663 #line 1 883"parser.yy"7694 case 513: 7695 7696 /* Line 1806 of yacc.c */ 7697 #line 1919 "parser.yy" 7664 7698 { 7665 7699 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7668 7702 break; 7669 7703 7670 case 5 04:7671 7672 /* Line 1806 of yacc.c */ 7673 #line 1 888"parser.yy"7704 case 514: 7705 7706 /* Line 1806 of yacc.c */ 7707 #line 1924 "parser.yy" 7674 7708 { 7675 7709 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7678 7712 break; 7679 7713 7680 case 5 05:7681 7682 /* Line 1806 of yacc.c */ 7683 #line 1 898"parser.yy"7714 case 515: 7715 7716 /* Line 1806 of yacc.c */ 7717 #line 1934 "parser.yy" 7684 7718 {} 7685 7719 break; 7686 7720 7687 case 5 06:7688 7689 /* Line 1806 of yacc.c */ 7690 #line 19 00"parser.yy"7721 case 516: 7722 7723 /* Line 1806 of yacc.c */ 7724 #line 1936 "parser.yy" 7691 7725 { 7692 7726 if ( theTree ) { … … 7698 7732 break; 7699 7733 7700 case 5 08:7701 7702 /* Line 1806 of yacc.c */ 7703 #line 19 12"parser.yy"7734 case 518: 7735 7736 /* Line 1806 of yacc.c */ 7737 #line 1948 "parser.yy" 7704 7738 { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7705 7739 break; 7706 7740 7707 case 5 09:7708 7709 /* Line 1806 of yacc.c */ 7710 #line 19 17"parser.yy"7741 case 519: 7742 7743 /* Line 1806 of yacc.c */ 7744 #line 1953 "parser.yy" 7711 7745 { (yyval.decl) = 0; } 7712 7746 break; 7713 7747 7714 case 5 13:7715 7716 /* Line 1806 of yacc.c */ 7717 #line 19 25"parser.yy"7748 case 523: 7749 7750 /* Line 1806 of yacc.c */ 7751 #line 1961 "parser.yy" 7718 7752 {} 7719 7753 break; 7720 7754 7721 case 5 14:7722 7723 /* Line 1806 of yacc.c */ 7724 #line 19 27"parser.yy"7755 case 524: 7756 7757 /* Line 1806 of yacc.c */ 7758 #line 1963 "parser.yy" 7725 7759 { 7726 7760 linkageStack.push( linkage ); … … 7729 7763 break; 7730 7764 7731 case 5 15:7732 7733 /* Line 1806 of yacc.c */ 7734 #line 19 32"parser.yy"7765 case 525: 7766 7767 /* Line 1806 of yacc.c */ 7768 #line 1968 "parser.yy" 7735 7769 { 7736 7770 linkage = linkageStack.top(); … … 7740 7774 break; 7741 7775 7742 case 5 16:7743 7744 /* Line 1806 of yacc.c */ 7745 #line 19 38"parser.yy"7776 case 526: 7777 7778 /* Line 1806 of yacc.c */ 7779 #line 1974 "parser.yy" 7746 7780 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7747 7781 break; 7748 7782 7749 case 5 18:7750 7751 /* Line 1806 of yacc.c */ 7752 #line 19 48"parser.yy"7783 case 528: 7784 7785 /* Line 1806 of yacc.c */ 7786 #line 1984 "parser.yy" 7753 7787 { 7754 7788 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7758 7792 break; 7759 7793 7760 case 5 19:7761 7762 /* Line 1806 of yacc.c */ 7763 #line 19 54"parser.yy"7794 case 529: 7795 7796 /* Line 1806 of yacc.c */ 7797 #line 1990 "parser.yy" 7764 7798 { 7765 7799 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7769 7803 break; 7770 7804 7771 case 5 20:7772 7773 /* Line 1806 of yacc.c */ 7774 #line 19 63"parser.yy"7805 case 530: 7806 7807 /* Line 1806 of yacc.c */ 7808 #line 1999 "parser.yy" 7775 7809 { 7776 7810 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7780 7814 break; 7781 7815 7782 case 5 21:7783 7784 /* Line 1806 of yacc.c */ 7785 #line 1969"parser.yy"7816 case 531: 7817 7818 /* Line 1806 of yacc.c */ 7819 #line 2005 "parser.yy" 7786 7820 { 7787 7821 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7791 7825 break; 7792 7826 7793 case 5 22:7794 7795 /* Line 1806 of yacc.c */ 7796 #line 1975"parser.yy"7827 case 532: 7828 7829 /* Line 1806 of yacc.c */ 7830 #line 2011 "parser.yy" 7797 7831 { 7798 7832 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7802 7836 break; 7803 7837 7804 case 5 23:7805 7806 /* Line 1806 of yacc.c */ 7807 #line 1981"parser.yy"7838 case 533: 7839 7840 /* Line 1806 of yacc.c */ 7841 #line 2017 "parser.yy" 7808 7842 { 7809 7843 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7813 7847 break; 7814 7848 7815 case 5 24:7816 7817 /* Line 1806 of yacc.c */ 7818 #line 1987"parser.yy"7849 case 534: 7850 7851 /* Line 1806 of yacc.c */ 7852 #line 2023 "parser.yy" 7819 7853 { 7820 7854 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7824 7858 break; 7825 7859 7826 case 5 25:7827 7828 /* Line 1806 of yacc.c */ 7829 #line 1995"parser.yy"7860 case 535: 7861 7862 /* Line 1806 of yacc.c */ 7863 #line 2031 "parser.yy" 7830 7864 { 7831 7865 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7835 7869 break; 7836 7870 7837 case 5 26:7838 7839 /* Line 1806 of yacc.c */ 7840 #line 20 01"parser.yy"7871 case 536: 7872 7873 /* Line 1806 of yacc.c */ 7874 #line 2037 "parser.yy" 7841 7875 { 7842 7876 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7846 7880 break; 7847 7881 7848 case 5 27:7849 7850 /* Line 1806 of yacc.c */ 7851 #line 20 09"parser.yy"7882 case 537: 7883 7884 /* Line 1806 of yacc.c */ 7885 #line 2045 "parser.yy" 7852 7886 { 7853 7887 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7857 7891 break; 7858 7892 7859 case 5 28:7860 7861 /* Line 1806 of yacc.c */ 7862 #line 20 15"parser.yy"7893 case 538: 7894 7895 /* Line 1806 of yacc.c */ 7896 #line 2051 "parser.yy" 7863 7897 { 7864 7898 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7868 7902 break; 7869 7903 7870 case 5 32:7871 7872 /* Line 1806 of yacc.c */ 7873 #line 20 30"parser.yy"7904 case 542: 7905 7906 /* Line 1806 of yacc.c */ 7907 #line 2066 "parser.yy" 7874 7908 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 7875 7909 break; 7876 7910 7877 case 5 35:7878 7879 /* Line 1806 of yacc.c */ 7880 #line 20 40"parser.yy"7911 case 545: 7912 7913 /* Line 1806 of yacc.c */ 7914 #line 2076 "parser.yy" 7881 7915 { (yyval.decl) = 0; } 7882 7916 break; 7883 7917 7884 case 5 38:7885 7886 /* Line 1806 of yacc.c */ 7887 #line 20 47"parser.yy"7918 case 548: 7919 7920 /* Line 1806 of yacc.c */ 7921 #line 2083 "parser.yy" 7888 7922 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7889 7923 break; 7890 7924 7891 case 5 39:7892 7893 /* Line 1806 of yacc.c */ 7894 #line 20 53"parser.yy"7925 case 549: 7926 7927 /* Line 1806 of yacc.c */ 7928 #line 2089 "parser.yy" 7895 7929 { (yyval.decl) = 0; } 7896 7930 break; 7897 7931 7898 case 5 45:7899 7900 /* Line 1806 of yacc.c */ 7901 #line 2 068"parser.yy"7932 case 555: 7933 7934 /* Line 1806 of yacc.c */ 7935 #line 2104 "parser.yy" 7902 7936 {} 7903 7937 break; 7904 7938 7905 case 5 46:7906 7907 /* Line 1806 of yacc.c */ 7908 #line 2 069"parser.yy"7939 case 556: 7940 7941 /* Line 1806 of yacc.c */ 7942 #line 2105 "parser.yy" 7909 7943 {} 7910 7944 break; 7911 7945 7912 case 5 47:7913 7914 /* Line 1806 of yacc.c */ 7915 #line 2 070"parser.yy"7946 case 557: 7947 7948 /* Line 1806 of yacc.c */ 7949 #line 2106 "parser.yy" 7916 7950 {} 7917 7951 break; 7918 7952 7919 case 5 48:7920 7921 /* Line 1806 of yacc.c */ 7922 #line 2 071"parser.yy"7953 case 558: 7954 7955 /* Line 1806 of yacc.c */ 7956 #line 2107 "parser.yy" 7923 7957 {} 7924 7958 break; 7925 7959 7926 case 5 49:7927 7928 /* Line 1806 of yacc.c */ 7929 #line 21 06"parser.yy"7960 case 559: 7961 7962 /* Line 1806 of yacc.c */ 7963 #line 2142 "parser.yy" 7930 7964 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7931 7965 break; 7932 7966 7933 case 5 51:7934 7935 /* Line 1806 of yacc.c */ 7936 #line 21 09"parser.yy"7967 case 561: 7968 7969 /* Line 1806 of yacc.c */ 7970 #line 2145 "parser.yy" 7937 7971 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7938 7972 break; 7939 7973 7940 case 5 52:7941 7942 /* Line 1806 of yacc.c */ 7943 #line 21 11"parser.yy"7974 case 562: 7975 7976 /* Line 1806 of yacc.c */ 7977 #line 2147 "parser.yy" 7944 7978 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7945 7979 break; 7946 7980 7947 case 5 53:7948 7949 /* Line 1806 of yacc.c */ 7950 #line 21 16"parser.yy"7981 case 563: 7982 7983 /* Line 1806 of yacc.c */ 7984 #line 2152 "parser.yy" 7951 7985 { 7952 7986 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 7955 7989 break; 7956 7990 7957 case 5 54:7958 7959 /* Line 1806 of yacc.c */ 7960 #line 21 21"parser.yy"7991 case 564: 7992 7993 /* Line 1806 of yacc.c */ 7994 #line 2157 "parser.yy" 7961 7995 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7962 7996 break; 7963 7997 7964 case 5 55:7965 7966 /* Line 1806 of yacc.c */ 7967 #line 21 26"parser.yy"7998 case 565: 7999 8000 /* Line 1806 of yacc.c */ 8001 #line 2162 "parser.yy" 7968 8002 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 7969 8003 break; 7970 8004 7971 case 5 56:7972 7973 /* Line 1806 of yacc.c */ 7974 #line 21 28"parser.yy"8005 case 566: 8006 8007 /* Line 1806 of yacc.c */ 8008 #line 2164 "parser.yy" 7975 8009 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 7976 8010 break; 7977 8011 7978 case 5 57:7979 7980 /* Line 1806 of yacc.c */ 7981 #line 21 30"parser.yy"8012 case 567: 8013 8014 /* Line 1806 of yacc.c */ 8015 #line 2166 "parser.yy" 7982 8016 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7983 8017 break; 7984 8018 7985 case 5 58:7986 7987 /* Line 1806 of yacc.c */ 7988 #line 21 35"parser.yy"8019 case 568: 8020 8021 /* Line 1806 of yacc.c */ 8022 #line 2171 "parser.yy" 7989 8023 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 7990 8024 break; 7991 8025 7992 case 5 59:7993 7994 /* Line 1806 of yacc.c */ 7995 #line 21 37"parser.yy"8026 case 569: 8027 8028 /* Line 1806 of yacc.c */ 8029 #line 2173 "parser.yy" 7996 8030 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 7997 8031 break; 7998 8032 7999 case 5 60:8000 8001 /* Line 1806 of yacc.c */ 8002 #line 21 39"parser.yy"8033 case 570: 8034 8035 /* Line 1806 of yacc.c */ 8036 #line 2175 "parser.yy" 8003 8037 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8004 8038 break; 8005 8039 8006 case 5 61:8007 8008 /* Line 1806 of yacc.c */ 8009 #line 21 41"parser.yy"8040 case 571: 8041 8042 /* Line 1806 of yacc.c */ 8043 #line 2177 "parser.yy" 8010 8044 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8011 8045 break; 8012 8046 8013 case 5 62:8014 8015 /* Line 1806 of yacc.c */ 8016 #line 21 46"parser.yy"8047 case 572: 8048 8049 /* Line 1806 of yacc.c */ 8050 #line 2182 "parser.yy" 8017 8051 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8018 8052 break; 8019 8053 8020 case 5 63:8021 8022 /* Line 1806 of yacc.c */ 8023 #line 21 48"parser.yy"8054 case 573: 8055 8056 /* Line 1806 of yacc.c */ 8057 #line 2184 "parser.yy" 8024 8058 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8025 8059 break; 8026 8060 8027 case 5 64:8028 8029 /* Line 1806 of yacc.c */ 8030 #line 21 58"parser.yy"8061 case 574: 8062 8063 /* Line 1806 of yacc.c */ 8064 #line 2194 "parser.yy" 8031 8065 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8032 8066 break; 8033 8067 8034 case 5 66:8035 8036 /* Line 1806 of yacc.c */ 8037 #line 21 61"parser.yy"8068 case 576: 8069 8070 /* Line 1806 of yacc.c */ 8071 #line 2197 "parser.yy" 8038 8072 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8039 8073 break; 8040 8074 8041 case 5 67:8042 8043 /* Line 1806 of yacc.c */ 8044 #line 2 166"parser.yy"8075 case 577: 8076 8077 /* Line 1806 of yacc.c */ 8078 #line 2202 "parser.yy" 8045 8079 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8046 8080 break; 8047 8081 8048 case 5 68:8049 8050 /* Line 1806 of yacc.c */ 8051 #line 2 168"parser.yy"8082 case 578: 8083 8084 /* Line 1806 of yacc.c */ 8085 #line 2204 "parser.yy" 8052 8086 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8053 8087 break; 8054 8088 8055 case 5 69:8056 8057 /* Line 1806 of yacc.c */ 8058 #line 2 170"parser.yy"8089 case 579: 8090 8091 /* Line 1806 of yacc.c */ 8092 #line 2206 "parser.yy" 8059 8093 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8060 8094 break; 8061 8095 8062 case 5 70:8063 8064 /* Line 1806 of yacc.c */ 8065 #line 2 175"parser.yy"8096 case 580: 8097 8098 /* Line 1806 of yacc.c */ 8099 #line 2211 "parser.yy" 8066 8100 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8067 8101 break; 8068 8102 8069 case 5 71:8070 8071 /* Line 1806 of yacc.c */ 8072 #line 2 177"parser.yy"8103 case 581: 8104 8105 /* Line 1806 of yacc.c */ 8106 #line 2213 "parser.yy" 8073 8107 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8074 8108 break; 8075 8109 8076 case 5 72:8077 8078 /* Line 1806 of yacc.c */ 8079 #line 2 179"parser.yy"8110 case 582: 8111 8112 /* Line 1806 of yacc.c */ 8113 #line 2215 "parser.yy" 8080 8114 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8081 8115 break; 8082 8116 8083 case 5 73:8084 8085 /* Line 1806 of yacc.c */ 8086 #line 2 184"parser.yy"8117 case 583: 8118 8119 /* Line 1806 of yacc.c */ 8120 #line 2220 "parser.yy" 8087 8121 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8088 8122 break; 8089 8123 8090 case 5 74:8091 8092 /* Line 1806 of yacc.c */ 8093 #line 2 186"parser.yy"8124 case 584: 8125 8126 /* Line 1806 of yacc.c */ 8127 #line 2222 "parser.yy" 8094 8128 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8095 8129 break; 8096 8130 8097 case 5 75:8098 8099 /* Line 1806 of yacc.c */ 8100 #line 2 188"parser.yy"8131 case 585: 8132 8133 /* Line 1806 of yacc.c */ 8134 #line 2224 "parser.yy" 8101 8135 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8102 8136 break; 8103 8137 8104 case 5 79:8105 8106 /* Line 1806 of yacc.c */ 8107 #line 22 03"parser.yy"8138 case 589: 8139 8140 /* Line 1806 of yacc.c */ 8141 #line 2239 "parser.yy" 8108 8142 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8109 8143 break; 8110 8144 8111 case 5 80:8112 8113 /* Line 1806 of yacc.c */ 8114 #line 22 05"parser.yy"8145 case 590: 8146 8147 /* Line 1806 of yacc.c */ 8148 #line 2241 "parser.yy" 8115 8149 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8116 8150 break; 8117 8151 8118 case 5 81:8119 8120 /* Line 1806 of yacc.c */ 8121 #line 22 07"parser.yy"8152 case 591: 8153 8154 /* Line 1806 of yacc.c */ 8155 #line 2243 "parser.yy" 8122 8156 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8123 8157 break; 8124 8158 8125 case 5 82:8126 8127 /* Line 1806 of yacc.c */ 8128 #line 22 12"parser.yy"8159 case 592: 8160 8161 /* Line 1806 of yacc.c */ 8162 #line 2248 "parser.yy" 8129 8163 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8130 8164 break; 8131 8165 8132 case 5 83:8133 8134 /* Line 1806 of yacc.c */ 8135 #line 22 14"parser.yy"8166 case 593: 8167 8168 /* Line 1806 of yacc.c */ 8169 #line 2250 "parser.yy" 8136 8170 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8137 8171 break; 8138 8172 8139 case 5 84:8140 8141 /* Line 1806 of yacc.c */ 8142 #line 22 16"parser.yy"8173 case 594: 8174 8175 /* Line 1806 of yacc.c */ 8176 #line 2252 "parser.yy" 8143 8177 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8144 8178 break; 8145 8179 8146 case 5 85:8147 8148 /* Line 1806 of yacc.c */ 8149 #line 22 21"parser.yy"8180 case 595: 8181 8182 /* Line 1806 of yacc.c */ 8183 #line 2257 "parser.yy" 8150 8184 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8151 8185 break; 8152 8186 8153 case 5 86:8154 8155 /* Line 1806 of yacc.c */ 8156 #line 22 23"parser.yy"8187 case 596: 8188 8189 /* Line 1806 of yacc.c */ 8190 #line 2259 "parser.yy" 8157 8191 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8158 8192 break; 8159 8193 8160 case 5 87:8161 8162 /* Line 1806 of yacc.c */ 8163 #line 22 25"parser.yy"8194 case 597: 8195 8196 /* Line 1806 of yacc.c */ 8197 #line 2261 "parser.yy" 8164 8198 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8165 8199 break; 8166 8200 8167 case 5 88:8168 8169 /* Line 1806 of yacc.c */ 8170 #line 22 40"parser.yy"8201 case 598: 8202 8203 /* Line 1806 of yacc.c */ 8204 #line 2276 "parser.yy" 8171 8205 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8172 8206 break; 8173 8207 8174 case 590:8175 8176 /* Line 1806 of yacc.c */ 8177 #line 22 43"parser.yy"8208 case 600: 8209 8210 /* Line 1806 of yacc.c */ 8211 #line 2279 "parser.yy" 8178 8212 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8179 8213 break; 8180 8214 8181 case 591:8182 8183 /* Line 1806 of yacc.c */ 8184 #line 22 45"parser.yy"8215 case 601: 8216 8217 /* Line 1806 of yacc.c */ 8218 #line 2281 "parser.yy" 8185 8219 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8186 8220 break; 8187 8221 8188 case 593:8189 8190 /* Line 1806 of yacc.c */ 8191 #line 22 51"parser.yy"8222 case 603: 8223 8224 /* Line 1806 of yacc.c */ 8225 #line 2287 "parser.yy" 8192 8226 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8193 8227 break; 8194 8228 8195 case 594:8196 8197 /* Line 1806 of yacc.c */ 8198 #line 22 56"parser.yy"8229 case 604: 8230 8231 /* Line 1806 of yacc.c */ 8232 #line 2292 "parser.yy" 8199 8233 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8200 8234 break; 8201 8235 8202 case 595:8203 8204 /* Line 1806 of yacc.c */ 8205 #line 22 58"parser.yy"8236 case 605: 8237 8238 /* Line 1806 of yacc.c */ 8239 #line 2294 "parser.yy" 8206 8240 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8207 8241 break; 8208 8242 8209 case 596:8210 8211 /* Line 1806 of yacc.c */ 8212 #line 22 60"parser.yy"8243 case 606: 8244 8245 /* Line 1806 of yacc.c */ 8246 #line 2296 "parser.yy" 8213 8247 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8214 8248 break; 8215 8249 8216 case 597:8217 8218 /* Line 1806 of yacc.c */ 8219 #line 2 265"parser.yy"8250 case 607: 8251 8252 /* Line 1806 of yacc.c */ 8253 #line 2301 "parser.yy" 8220 8254 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8221 8255 break; 8222 8256 8223 case 598:8224 8225 /* Line 1806 of yacc.c */ 8226 #line 2 267"parser.yy"8257 case 608: 8258 8259 /* Line 1806 of yacc.c */ 8260 #line 2303 "parser.yy" 8227 8261 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8228 8262 break; 8229 8263 8230 case 599:8231 8232 /* Line 1806 of yacc.c */ 8233 #line 2 269"parser.yy"8264 case 609: 8265 8266 /* Line 1806 of yacc.c */ 8267 #line 2305 "parser.yy" 8234 8268 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8235 8269 break; 8236 8270 8237 case 6 00:8238 8239 /* Line 1806 of yacc.c */ 8240 #line 2 271"parser.yy"8271 case 610: 8272 8273 /* Line 1806 of yacc.c */ 8274 #line 2307 "parser.yy" 8241 8275 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8242 8276 break; 8243 8277 8244 case 6 01:8245 8246 /* Line 1806 of yacc.c */ 8247 #line 2 276"parser.yy"8278 case 611: 8279 8280 /* Line 1806 of yacc.c */ 8281 #line 2312 "parser.yy" 8248 8282 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8249 8283 break; 8250 8284 8251 case 6 02:8252 8253 /* Line 1806 of yacc.c */ 8254 #line 2 278"parser.yy"8285 case 612: 8286 8287 /* Line 1806 of yacc.c */ 8288 #line 2314 "parser.yy" 8255 8289 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8256 8290 break; 8257 8291 8258 case 6 03:8259 8260 /* Line 1806 of yacc.c */ 8261 #line 2 280"parser.yy"8292 case 613: 8293 8294 /* Line 1806 of yacc.c */ 8295 #line 2316 "parser.yy" 8262 8296 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8263 8297 break; 8264 8298 8265 case 6 04:8266 8267 /* Line 1806 of yacc.c */ 8268 #line 2 290"parser.yy"8299 case 614: 8300 8301 /* Line 1806 of yacc.c */ 8302 #line 2326 "parser.yy" 8269 8303 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8270 8304 break; 8271 8305 8272 case 6 06:8273 8274 /* Line 1806 of yacc.c */ 8275 #line 2 293"parser.yy"8306 case 616: 8307 8308 /* Line 1806 of yacc.c */ 8309 #line 2329 "parser.yy" 8276 8310 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8277 8311 break; 8278 8312 8279 case 6 07:8280 8281 /* Line 1806 of yacc.c */ 8282 #line 2 295"parser.yy"8313 case 617: 8314 8315 /* Line 1806 of yacc.c */ 8316 #line 2331 "parser.yy" 8283 8317 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8284 8318 break; 8285 8319 8286 case 6 08:8287 8288 /* Line 1806 of yacc.c */ 8289 #line 23 00"parser.yy"8320 case 618: 8321 8322 /* Line 1806 of yacc.c */ 8323 #line 2336 "parser.yy" 8290 8324 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8291 8325 break; 8292 8326 8293 case 6 09:8294 8295 /* Line 1806 of yacc.c */ 8296 #line 23 02"parser.yy"8327 case 619: 8328 8329 /* Line 1806 of yacc.c */ 8330 #line 2338 "parser.yy" 8297 8331 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8298 8332 break; 8299 8333 8300 case 6 10:8301 8302 /* Line 1806 of yacc.c */ 8303 #line 23 04"parser.yy"8334 case 620: 8335 8336 /* Line 1806 of yacc.c */ 8337 #line 2340 "parser.yy" 8304 8338 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8305 8339 break; 8306 8340 8307 case 6 11:8308 8309 /* Line 1806 of yacc.c */ 8310 #line 23 09"parser.yy"8341 case 621: 8342 8343 /* Line 1806 of yacc.c */ 8344 #line 2345 "parser.yy" 8311 8345 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8312 8346 break; 8313 8347 8314 case 6 12:8315 8316 /* Line 1806 of yacc.c */ 8317 #line 23 11"parser.yy"8348 case 622: 8349 8350 /* Line 1806 of yacc.c */ 8351 #line 2347 "parser.yy" 8318 8352 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8319 8353 break; 8320 8354 8321 case 6 13:8322 8323 /* Line 1806 of yacc.c */ 8324 #line 23 13"parser.yy"8355 case 623: 8356 8357 /* Line 1806 of yacc.c */ 8358 #line 2349 "parser.yy" 8325 8359 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8326 8360 break; 8327 8361 8328 case 6 14:8329 8330 /* Line 1806 of yacc.c */ 8331 #line 23 15"parser.yy"8362 case 624: 8363 8364 /* Line 1806 of yacc.c */ 8365 #line 2351 "parser.yy" 8332 8366 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8333 8367 break; 8334 8368 8335 case 6 15:8336 8337 /* Line 1806 of yacc.c */ 8338 #line 23 20"parser.yy"8369 case 625: 8370 8371 /* Line 1806 of yacc.c */ 8372 #line 2356 "parser.yy" 8339 8373 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8340 8374 break; 8341 8375 8342 case 6 16:8343 8344 /* Line 1806 of yacc.c */ 8345 #line 23 22"parser.yy"8376 case 626: 8377 8378 /* Line 1806 of yacc.c */ 8379 #line 2358 "parser.yy" 8346 8380 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8347 8381 break; 8348 8382 8349 case 6 17:8350 8351 /* Line 1806 of yacc.c */ 8352 #line 23 24"parser.yy"8383 case 627: 8384 8385 /* Line 1806 of yacc.c */ 8386 #line 2360 "parser.yy" 8353 8387 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8354 8388 break; 8355 8389 8356 case 6 18:8357 8358 /* Line 1806 of yacc.c */ 8359 #line 23 55"parser.yy"8390 case 628: 8391 8392 /* Line 1806 of yacc.c */ 8393 #line 2391 "parser.yy" 8360 8394 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8361 8395 break; 8362 8396 8363 case 6 20:8364 8365 /* Line 1806 of yacc.c */ 8366 #line 23 58"parser.yy"8397 case 630: 8398 8399 /* Line 1806 of yacc.c */ 8400 #line 2394 "parser.yy" 8367 8401 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8368 8402 break; 8369 8403 8370 case 6 21:8371 8372 /* Line 1806 of yacc.c */ 8373 #line 23 60"parser.yy"8404 case 631: 8405 8406 /* Line 1806 of yacc.c */ 8407 #line 2396 "parser.yy" 8374 8408 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8375 8409 break; 8376 8410 8377 case 6 22:8378 8379 /* Line 1806 of yacc.c */ 8380 #line 2 365"parser.yy"8411 case 632: 8412 8413 /* Line 1806 of yacc.c */ 8414 #line 2401 "parser.yy" 8381 8415 { 8382 8416 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8385 8419 break; 8386 8420 8387 case 6 23:8388 8389 /* Line 1806 of yacc.c */ 8390 #line 2 370"parser.yy"8421 case 633: 8422 8423 /* Line 1806 of yacc.c */ 8424 #line 2406 "parser.yy" 8391 8425 { 8392 8426 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8395 8429 break; 8396 8430 8397 case 6 24:8398 8399 /* Line 1806 of yacc.c */ 8400 #line 2 378"parser.yy"8431 case 634: 8432 8433 /* Line 1806 of yacc.c */ 8434 #line 2414 "parser.yy" 8401 8435 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8402 8436 break; 8403 8437 8404 case 6 25:8405 8406 /* Line 1806 of yacc.c */ 8407 #line 2 380"parser.yy"8438 case 635: 8439 8440 /* Line 1806 of yacc.c */ 8441 #line 2416 "parser.yy" 8408 8442 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8409 8443 break; 8410 8444 8411 case 6 26:8412 8413 /* Line 1806 of yacc.c */ 8414 #line 2 382"parser.yy"8445 case 636: 8446 8447 /* Line 1806 of yacc.c */ 8448 #line 2418 "parser.yy" 8415 8449 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8416 8450 break; 8417 8451 8418 case 6 27:8419 8420 /* Line 1806 of yacc.c */ 8421 #line 2 387"parser.yy"8452 case 637: 8453 8454 /* Line 1806 of yacc.c */ 8455 #line 2423 "parser.yy" 8422 8456 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8423 8457 break; 8424 8458 8425 case 6 28:8426 8427 /* Line 1806 of yacc.c */ 8428 #line 2 389"parser.yy"8459 case 638: 8460 8461 /* Line 1806 of yacc.c */ 8462 #line 2425 "parser.yy" 8429 8463 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8430 8464 break; 8431 8465 8432 case 6 29:8433 8434 /* Line 1806 of yacc.c */ 8435 #line 2 394"parser.yy"8466 case 639: 8467 8468 /* Line 1806 of yacc.c */ 8469 #line 2430 "parser.yy" 8436 8470 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8437 8471 break; 8438 8472 8439 case 6 30:8440 8441 /* Line 1806 of yacc.c */ 8442 #line 2 396"parser.yy"8473 case 640: 8474 8475 /* Line 1806 of yacc.c */ 8476 #line 2432 "parser.yy" 8443 8477 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8444 8478 break; 8445 8479 8446 case 6 32:8447 8448 /* Line 1806 of yacc.c */ 8449 #line 24 11"parser.yy"8480 case 642: 8481 8482 /* Line 1806 of yacc.c */ 8483 #line 2447 "parser.yy" 8450 8484 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8451 8485 break; 8452 8486 8453 case 6 33:8454 8455 /* Line 1806 of yacc.c */ 8456 #line 24 13"parser.yy"8487 case 643: 8488 8489 /* Line 1806 of yacc.c */ 8490 #line 2449 "parser.yy" 8457 8491 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8458 8492 break; 8459 8493 8460 case 6 34:8461 8462 /* Line 1806 of yacc.c */ 8463 #line 24 18"parser.yy"8494 case 644: 8495 8496 /* Line 1806 of yacc.c */ 8497 #line 2454 "parser.yy" 8464 8498 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8465 8499 break; 8466 8500 8467 case 6 35:8468 8469 /* Line 1806 of yacc.c */ 8470 #line 24 20"parser.yy"8501 case 645: 8502 8503 /* Line 1806 of yacc.c */ 8504 #line 2456 "parser.yy" 8471 8505 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8472 8506 break; 8473 8507 8474 case 6 36:8475 8476 /* Line 1806 of yacc.c */ 8477 #line 24 22"parser.yy"8508 case 646: 8509 8510 /* Line 1806 of yacc.c */ 8511 #line 2458 "parser.yy" 8478 8512 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8479 8513 break; 8480 8514 8481 case 6 37:8482 8483 /* Line 1806 of yacc.c */ 8484 #line 24 24"parser.yy"8515 case 647: 8516 8517 /* Line 1806 of yacc.c */ 8518 #line 2460 "parser.yy" 8485 8519 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8486 8520 break; 8487 8521 8488 case 6 38:8489 8490 /* Line 1806 of yacc.c */ 8491 #line 24 26"parser.yy"8522 case 648: 8523 8524 /* Line 1806 of yacc.c */ 8525 #line 2462 "parser.yy" 8492 8526 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8493 8527 break; 8494 8528 8495 case 6 40:8496 8497 /* Line 1806 of yacc.c */ 8498 #line 24 32"parser.yy"8529 case 650: 8530 8531 /* Line 1806 of yacc.c */ 8532 #line 2468 "parser.yy" 8499 8533 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8500 8534 break; 8501 8535 8502 case 6 41:8503 8504 /* Line 1806 of yacc.c */ 8505 #line 24 34"parser.yy"8536 case 651: 8537 8538 /* Line 1806 of yacc.c */ 8539 #line 2470 "parser.yy" 8506 8540 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8507 8541 break; 8508 8542 8509 case 6 42:8510 8511 /* Line 1806 of yacc.c */ 8512 #line 24 36"parser.yy"8543 case 652: 8544 8545 /* Line 1806 of yacc.c */ 8546 #line 2472 "parser.yy" 8513 8547 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8514 8548 break; 8515 8549 8516 case 6 43:8517 8518 /* Line 1806 of yacc.c */ 8519 #line 24 41"parser.yy"8550 case 653: 8551 8552 /* Line 1806 of yacc.c */ 8553 #line 2477 "parser.yy" 8520 8554 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8521 8555 break; 8522 8556 8523 case 6 44:8524 8525 /* Line 1806 of yacc.c */ 8526 #line 24 43"parser.yy"8557 case 654: 8558 8559 /* Line 1806 of yacc.c */ 8560 #line 2479 "parser.yy" 8527 8561 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8528 8562 break; 8529 8563 8530 case 6 45:8531 8532 /* Line 1806 of yacc.c */ 8533 #line 24 45"parser.yy"8564 case 655: 8565 8566 /* Line 1806 of yacc.c */ 8567 #line 2481 "parser.yy" 8534 8568 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8535 8569 break; 8536 8570 8537 case 6 46:8538 8539 /* Line 1806 of yacc.c */ 8540 #line 24 51"parser.yy"8571 case 656: 8572 8573 /* Line 1806 of yacc.c */ 8574 #line 2487 "parser.yy" 8541 8575 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8542 8576 break; 8543 8577 8544 case 6 47:8545 8546 /* Line 1806 of yacc.c */ 8547 #line 24 53"parser.yy"8578 case 657: 8579 8580 /* Line 1806 of yacc.c */ 8581 #line 2489 "parser.yy" 8548 8582 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8549 8583 break; 8550 8584 8551 case 6 49:8552 8553 /* Line 1806 of yacc.c */ 8554 #line 24 59"parser.yy"8585 case 659: 8586 8587 /* Line 1806 of yacc.c */ 8588 #line 2495 "parser.yy" 8555 8589 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8556 8590 break; 8557 8591 8558 case 6 50:8559 8560 /* Line 1806 of yacc.c */ 8561 #line 24 61"parser.yy"8592 case 660: 8593 8594 /* Line 1806 of yacc.c */ 8595 #line 2497 "parser.yy" 8562 8596 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8563 8597 break; 8564 8598 8565 case 6 51:8566 8567 /* Line 1806 of yacc.c */ 8568 #line 24 63"parser.yy"8599 case 661: 8600 8601 /* Line 1806 of yacc.c */ 8602 #line 2499 "parser.yy" 8569 8603 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8570 8604 break; 8571 8605 8572 case 6 52:8573 8574 /* Line 1806 of yacc.c */ 8575 #line 2 465"parser.yy"8606 case 662: 8607 8608 /* Line 1806 of yacc.c */ 8609 #line 2501 "parser.yy" 8576 8610 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8577 8611 break; 8578 8612 8579 case 6 54:8580 8581 /* Line 1806 of yacc.c */ 8582 #line 2 480"parser.yy"8613 case 664: 8614 8615 /* Line 1806 of yacc.c */ 8616 #line 2516 "parser.yy" 8583 8617 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8584 8618 break; 8585 8619 8586 case 6 55:8587 8588 /* Line 1806 of yacc.c */ 8589 #line 2 482"parser.yy"8620 case 665: 8621 8622 /* Line 1806 of yacc.c */ 8623 #line 2518 "parser.yy" 8590 8624 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8591 8625 break; 8592 8626 8593 case 6 56:8594 8595 /* Line 1806 of yacc.c */ 8596 #line 2 487"parser.yy"8627 case 666: 8628 8629 /* Line 1806 of yacc.c */ 8630 #line 2523 "parser.yy" 8597 8631 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8598 8632 break; 8599 8633 8600 case 6 57:8601 8602 /* Line 1806 of yacc.c */ 8603 #line 2 489"parser.yy"8634 case 667: 8635 8636 /* Line 1806 of yacc.c */ 8637 #line 2525 "parser.yy" 8604 8638 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8605 8639 break; 8606 8640 8607 case 6 58:8608 8609 /* Line 1806 of yacc.c */ 8610 #line 2 491"parser.yy"8641 case 668: 8642 8643 /* Line 1806 of yacc.c */ 8644 #line 2527 "parser.yy" 8611 8645 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8612 8646 break; 8613 8647 8614 case 6 59:8615 8616 /* Line 1806 of yacc.c */ 8617 #line 2 493"parser.yy"8648 case 669: 8649 8650 /* Line 1806 of yacc.c */ 8651 #line 2529 "parser.yy" 8618 8652 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8619 8653 break; 8620 8654 8621 case 6 60:8622 8623 /* Line 1806 of yacc.c */ 8624 #line 2 495"parser.yy"8655 case 670: 8656 8657 /* Line 1806 of yacc.c */ 8658 #line 2531 "parser.yy" 8625 8659 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8626 8660 break; 8627 8661 8628 case 6 62:8629 8630 /* Line 1806 of yacc.c */ 8631 #line 25 01"parser.yy"8662 case 672: 8663 8664 /* Line 1806 of yacc.c */ 8665 #line 2537 "parser.yy" 8632 8666 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8633 8667 break; 8634 8668 8635 case 6 63:8636 8637 /* Line 1806 of yacc.c */ 8638 #line 25 03"parser.yy"8669 case 673: 8670 8671 /* Line 1806 of yacc.c */ 8672 #line 2539 "parser.yy" 8639 8673 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8640 8674 break; 8641 8675 8642 case 6 64:8643 8644 /* Line 1806 of yacc.c */ 8645 #line 25 05"parser.yy"8676 case 674: 8677 8678 /* Line 1806 of yacc.c */ 8679 #line 2541 "parser.yy" 8646 8680 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8647 8681 break; 8648 8682 8649 case 6 65:8650 8651 /* Line 1806 of yacc.c */ 8652 #line 25 10"parser.yy"8683 case 675: 8684 8685 /* Line 1806 of yacc.c */ 8686 #line 2546 "parser.yy" 8653 8687 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8654 8688 break; 8655 8689 8656 case 6 66:8657 8658 /* Line 1806 of yacc.c */ 8659 #line 25 12"parser.yy"8690 case 676: 8691 8692 /* Line 1806 of yacc.c */ 8693 #line 2548 "parser.yy" 8660 8694 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8661 8695 break; 8662 8696 8663 case 6 67:8664 8665 /* Line 1806 of yacc.c */ 8666 #line 25 14"parser.yy"8697 case 677: 8698 8699 /* Line 1806 of yacc.c */ 8700 #line 2550 "parser.yy" 8667 8701 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8668 8702 break; 8669 8703 8670 case 6 69:8671 8672 /* Line 1806 of yacc.c */ 8673 #line 25 21"parser.yy"8704 case 679: 8705 8706 /* Line 1806 of yacc.c */ 8707 #line 2557 "parser.yy" 8674 8708 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8675 8709 break; 8676 8710 8677 case 6 71:8678 8679 /* Line 1806 of yacc.c */ 8680 #line 25 32"parser.yy"8711 case 681: 8712 8713 /* Line 1806 of yacc.c */ 8714 #line 2568 "parser.yy" 8681 8715 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8682 8716 break; 8683 8717 8684 case 6 72:8685 8686 /* Line 1806 of yacc.c */ 8687 #line 25 35"parser.yy"8718 case 682: 8719 8720 /* Line 1806 of yacc.c */ 8721 #line 2571 "parser.yy" 8688 8722 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8689 8723 break; 8690 8724 8691 case 6 73:8692 8693 /* Line 1806 of yacc.c */ 8694 #line 25 37"parser.yy"8725 case 683: 8726 8727 /* Line 1806 of yacc.c */ 8728 #line 2573 "parser.yy" 8695 8729 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8696 8730 break; 8697 8731 8698 case 6 74:8699 8700 /* Line 1806 of yacc.c */ 8701 #line 25 40"parser.yy"8732 case 684: 8733 8734 /* Line 1806 of yacc.c */ 8735 #line 2576 "parser.yy" 8702 8736 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8703 8737 break; 8704 8738 8705 case 6 75:8706 8707 /* Line 1806 of yacc.c */ 8708 #line 25 42"parser.yy"8739 case 685: 8740 8741 /* Line 1806 of yacc.c */ 8742 #line 2578 "parser.yy" 8709 8743 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8710 8744 break; 8711 8745 8712 case 6 76:8713 8714 /* Line 1806 of yacc.c */ 8715 #line 25 44"parser.yy"8746 case 686: 8747 8748 /* Line 1806 of yacc.c */ 8749 #line 2580 "parser.yy" 8716 8750 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8717 8751 break; 8718 8752 8719 case 6 78:8720 8721 /* Line 1806 of yacc.c */ 8722 #line 25 58"parser.yy"8753 case 688: 8754 8755 /* Line 1806 of yacc.c */ 8756 #line 2594 "parser.yy" 8723 8757 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8724 8758 break; 8725 8759 8726 case 6 79:8727 8728 /* Line 1806 of yacc.c */ 8729 #line 25 60"parser.yy"8760 case 689: 8761 8762 /* Line 1806 of yacc.c */ 8763 #line 2596 "parser.yy" 8730 8764 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8731 8765 break; 8732 8766 8733 case 6 80:8734 8735 /* Line 1806 of yacc.c */ 8736 #line 2 565"parser.yy"8767 case 690: 8768 8769 /* Line 1806 of yacc.c */ 8770 #line 2601 "parser.yy" 8737 8771 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8738 8772 break; 8739 8773 8740 case 6 81:8741 8742 /* Line 1806 of yacc.c */ 8743 #line 2 567"parser.yy"8774 case 691: 8775 8776 /* Line 1806 of yacc.c */ 8777 #line 2603 "parser.yy" 8744 8778 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8745 8779 break; 8746 8780 8747 case 6 82:8748 8749 /* Line 1806 of yacc.c */ 8750 #line 2 569"parser.yy"8781 case 692: 8782 8783 /* Line 1806 of yacc.c */ 8784 #line 2605 "parser.yy" 8751 8785 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8752 8786 break; 8753 8787 8754 case 6 83:8755 8756 /* Line 1806 of yacc.c */ 8757 #line 2 571"parser.yy"8788 case 693: 8789 8790 /* Line 1806 of yacc.c */ 8791 #line 2607 "parser.yy" 8758 8792 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8759 8793 break; 8760 8794 8761 case 6 84:8762 8763 /* Line 1806 of yacc.c */ 8764 #line 2 573"parser.yy"8795 case 694: 8796 8797 /* Line 1806 of yacc.c */ 8798 #line 2609 "parser.yy" 8765 8799 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8766 8800 break; 8767 8801 8768 case 6 86:8769 8770 /* Line 1806 of yacc.c */ 8771 #line 2 579"parser.yy"8802 case 696: 8803 8804 /* Line 1806 of yacc.c */ 8805 #line 2615 "parser.yy" 8772 8806 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8773 8807 break; 8774 8808 8775 case 6 87:8776 8777 /* Line 1806 of yacc.c */ 8778 #line 2 581"parser.yy"8809 case 697: 8810 8811 /* Line 1806 of yacc.c */ 8812 #line 2617 "parser.yy" 8779 8813 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8780 8814 break; 8781 8815 8782 case 6 88:8783 8784 /* Line 1806 of yacc.c */ 8785 #line 2 583"parser.yy"8816 case 698: 8817 8818 /* Line 1806 of yacc.c */ 8819 #line 2619 "parser.yy" 8786 8820 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8787 8821 break; 8788 8822 8789 case 6 89:8790 8791 /* Line 1806 of yacc.c */ 8792 #line 2 588"parser.yy"8823 case 699: 8824 8825 /* Line 1806 of yacc.c */ 8826 #line 2624 "parser.yy" 8793 8827 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8794 8828 break; 8795 8829 8796 case 690:8797 8798 /* Line 1806 of yacc.c */ 8799 #line 2 590"parser.yy"8830 case 700: 8831 8832 /* Line 1806 of yacc.c */ 8833 #line 2626 "parser.yy" 8800 8834 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8801 8835 break; 8802 8836 8803 case 693:8804 8805 /* Line 1806 of yacc.c */ 8806 #line 26 00"parser.yy"8837 case 703: 8838 8839 /* Line 1806 of yacc.c */ 8840 #line 2636 "parser.yy" 8807 8841 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8808 8842 break; 8809 8843 8810 case 696:8811 8812 /* Line 1806 of yacc.c */ 8813 #line 26 10"parser.yy"8844 case 706: 8845 8846 /* Line 1806 of yacc.c */ 8847 #line 2646 "parser.yy" 8814 8848 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8815 8849 break; 8816 8850 8817 case 697:8818 8819 /* Line 1806 of yacc.c */ 8820 #line 26 12"parser.yy"8851 case 707: 8852 8853 /* Line 1806 of yacc.c */ 8854 #line 2648 "parser.yy" 8821 8855 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8822 8856 break; 8823 8857 8824 case 698:8825 8826 /* Line 1806 of yacc.c */ 8827 #line 26 14"parser.yy"8858 case 708: 8859 8860 /* Line 1806 of yacc.c */ 8861 #line 2650 "parser.yy" 8828 8862 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8829 8863 break; 8830 8864 8831 case 699:8832 8833 /* Line 1806 of yacc.c */ 8834 #line 26 16"parser.yy"8865 case 709: 8866 8867 /* Line 1806 of yacc.c */ 8868 #line 2652 "parser.yy" 8835 8869 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8836 8870 break; 8837 8871 8838 case 7 00:8839 8840 /* Line 1806 of yacc.c */ 8841 #line 26 18"parser.yy"8872 case 710: 8873 8874 /* Line 1806 of yacc.c */ 8875 #line 2654 "parser.yy" 8842 8876 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8843 8877 break; 8844 8878 8845 case 7 01:8846 8847 /* Line 1806 of yacc.c */ 8848 #line 26 20"parser.yy"8879 case 711: 8880 8881 /* Line 1806 of yacc.c */ 8882 #line 2656 "parser.yy" 8849 8883 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8850 8884 break; 8851 8885 8852 case 7 02:8853 8854 /* Line 1806 of yacc.c */ 8855 #line 26 27"parser.yy"8886 case 712: 8887 8888 /* Line 1806 of yacc.c */ 8889 #line 2663 "parser.yy" 8856 8890 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8857 8891 break; 8858 8892 8859 case 7 03:8860 8861 /* Line 1806 of yacc.c */ 8862 #line 26 29"parser.yy"8893 case 713: 8894 8895 /* Line 1806 of yacc.c */ 8896 #line 2665 "parser.yy" 8863 8897 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8864 8898 break; 8865 8899 8866 case 7 04:8867 8868 /* Line 1806 of yacc.c */ 8869 #line 26 31"parser.yy"8900 case 714: 8901 8902 /* Line 1806 of yacc.c */ 8903 #line 2667 "parser.yy" 8870 8904 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8871 8905 break; 8872 8906 8873 case 7 05:8874 8875 /* Line 1806 of yacc.c */ 8876 #line 26 33"parser.yy"8907 case 715: 8908 8909 /* Line 1806 of yacc.c */ 8910 #line 2669 "parser.yy" 8877 8911 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8878 8912 break; 8879 8913 8880 case 7 06:8881 8882 /* Line 1806 of yacc.c */ 8883 #line 26 35"parser.yy"8914 case 716: 8915 8916 /* Line 1806 of yacc.c */ 8917 #line 2671 "parser.yy" 8884 8918 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8885 8919 break; 8886 8920 8887 case 7 07:8888 8889 /* Line 1806 of yacc.c */ 8890 #line 26 37"parser.yy"8921 case 717: 8922 8923 /* Line 1806 of yacc.c */ 8924 #line 2673 "parser.yy" 8891 8925 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8892 8926 break; 8893 8927 8894 case 7 08:8895 8896 /* Line 1806 of yacc.c */ 8897 #line 26 39"parser.yy"8928 case 718: 8929 8930 /* Line 1806 of yacc.c */ 8931 #line 2675 "parser.yy" 8898 8932 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8899 8933 break; 8900 8934 8901 case 7 09:8902 8903 /* Line 1806 of yacc.c */ 8904 #line 26 41"parser.yy"8935 case 719: 8936 8937 /* Line 1806 of yacc.c */ 8938 #line 2677 "parser.yy" 8905 8939 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8906 8940 break; 8907 8941 8908 case 7 10:8909 8910 /* Line 1806 of yacc.c */ 8911 #line 26 43"parser.yy"8942 case 720: 8943 8944 /* Line 1806 of yacc.c */ 8945 #line 2679 "parser.yy" 8912 8946 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8913 8947 break; 8914 8948 8915 case 7 11:8916 8917 /* Line 1806 of yacc.c */ 8918 #line 26 45"parser.yy"8949 case 721: 8950 8951 /* Line 1806 of yacc.c */ 8952 #line 2681 "parser.yy" 8919 8953 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8920 8954 break; 8921 8955 8922 case 7 12:8923 8924 /* Line 1806 of yacc.c */ 8925 #line 26 50"parser.yy"8956 case 722: 8957 8958 /* Line 1806 of yacc.c */ 8959 #line 2686 "parser.yy" 8926 8960 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8927 8961 break; 8928 8962 8929 case 7 13:8930 8931 /* Line 1806 of yacc.c */ 8932 #line 26 52"parser.yy"8963 case 723: 8964 8965 /* Line 1806 of yacc.c */ 8966 #line 2688 "parser.yy" 8933 8967 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8934 8968 break; 8935 8969 8936 case 7 14:8937 8938 /* Line 1806 of yacc.c */ 8939 #line 26 57"parser.yy"8970 case 724: 8971 8972 /* Line 1806 of yacc.c */ 8973 #line 2693 "parser.yy" 8940 8974 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 8941 8975 break; 8942 8976 8943 case 7 15:8944 8945 /* Line 1806 of yacc.c */ 8946 #line 26 59"parser.yy"8977 case 725: 8978 8979 /* Line 1806 of yacc.c */ 8980 #line 2695 "parser.yy" 8947 8981 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 8948 8982 break; 8949 8983 8950 case 7 17:8951 8952 /* Line 1806 of yacc.c */ 8953 #line 2 686"parser.yy"8984 case 727: 8985 8986 /* Line 1806 of yacc.c */ 8987 #line 2722 "parser.yy" 8954 8988 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8955 8989 break; 8956 8990 8957 case 7 21:8958 8959 /* Line 1806 of yacc.c */ 8960 #line 2 697"parser.yy"8991 case 731: 8992 8993 /* Line 1806 of yacc.c */ 8994 #line 2733 "parser.yy" 8961 8995 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8962 8996 break; 8963 8997 8964 case 7 22:8965 8966 /* Line 1806 of yacc.c */ 8967 #line 2 699"parser.yy"8998 case 732: 8999 9000 /* Line 1806 of yacc.c */ 9001 #line 2735 "parser.yy" 8968 9002 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8969 9003 break; 8970 9004 8971 case 7 23:8972 8973 /* Line 1806 of yacc.c */ 8974 #line 27 01"parser.yy"9005 case 733: 9006 9007 /* Line 1806 of yacc.c */ 9008 #line 2737 "parser.yy" 8975 9009 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8976 9010 break; 8977 9011 8978 case 7 24:8979 8980 /* Line 1806 of yacc.c */ 8981 #line 27 03"parser.yy"9012 case 734: 9013 9014 /* Line 1806 of yacc.c */ 9015 #line 2739 "parser.yy" 8982 9016 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8983 9017 break; 8984 9018 8985 case 7 25:8986 8987 /* Line 1806 of yacc.c */ 8988 #line 27 05"parser.yy"9019 case 735: 9020 9021 /* Line 1806 of yacc.c */ 9022 #line 2741 "parser.yy" 8989 9023 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8990 9024 break; 8991 9025 8992 case 7 26:8993 8994 /* Line 1806 of yacc.c */ 8995 #line 27 07"parser.yy"9026 case 736: 9027 9028 /* Line 1806 of yacc.c */ 9029 #line 2743 "parser.yy" 8996 9030 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8997 9031 break; 8998 9032 8999 case 7 27:9000 9001 /* Line 1806 of yacc.c */ 9002 #line 27 14"parser.yy"9033 case 737: 9034 9035 /* Line 1806 of yacc.c */ 9036 #line 2750 "parser.yy" 9003 9037 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9004 9038 break; 9005 9039 9006 case 7 28:9007 9008 /* Line 1806 of yacc.c */ 9009 #line 27 16"parser.yy"9040 case 738: 9041 9042 /* Line 1806 of yacc.c */ 9043 #line 2752 "parser.yy" 9010 9044 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9011 9045 break; 9012 9046 9013 case 7 29:9014 9015 /* Line 1806 of yacc.c */ 9016 #line 27 18"parser.yy"9047 case 739: 9048 9049 /* Line 1806 of yacc.c */ 9050 #line 2754 "parser.yy" 9017 9051 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9018 9052 break; 9019 9053 9020 case 7 30:9021 9022 /* Line 1806 of yacc.c */ 9023 #line 27 20"parser.yy"9054 case 740: 9055 9056 /* Line 1806 of yacc.c */ 9057 #line 2756 "parser.yy" 9024 9058 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9025 9059 break; 9026 9060 9027 case 7 31:9028 9029 /* Line 1806 of yacc.c */ 9030 #line 27 22"parser.yy"9061 case 741: 9062 9063 /* Line 1806 of yacc.c */ 9064 #line 2758 "parser.yy" 9031 9065 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9032 9066 break; 9033 9067 9034 case 7 32:9035 9036 /* Line 1806 of yacc.c */ 9037 #line 27 24"parser.yy"9068 case 742: 9069 9070 /* Line 1806 of yacc.c */ 9071 #line 2760 "parser.yy" 9038 9072 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9039 9073 break; 9040 9074 9041 case 7 33:9042 9043 /* Line 1806 of yacc.c */ 9044 #line 27 29"parser.yy"9075 case 743: 9076 9077 /* Line 1806 of yacc.c */ 9078 #line 2765 "parser.yy" 9045 9079 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 9046 9080 break; 9047 9081 9048 case 7 34:9049 9050 /* Line 1806 of yacc.c */ 9051 #line 27 34"parser.yy"9082 case 744: 9083 9084 /* Line 1806 of yacc.c */ 9085 #line 2770 "parser.yy" 9052 9086 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); } 9053 9087 break; 9054 9088 9055 case 7 35:9056 9057 /* Line 1806 of yacc.c */ 9058 #line 27 36"parser.yy"9089 case 745: 9090 9091 /* Line 1806 of yacc.c */ 9092 #line 2772 "parser.yy" 9059 9093 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9060 9094 break; 9061 9095 9062 case 7 36:9063 9064 /* Line 1806 of yacc.c */ 9065 #line 27 38"parser.yy"9096 case 746: 9097 9098 /* Line 1806 of yacc.c */ 9099 #line 2774 "parser.yy" 9066 9100 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9067 9101 break; 9068 9102 9069 case 7 39:9070 9071 /* Line 1806 of yacc.c */ 9072 #line 27 62"parser.yy"9103 case 749: 9104 9105 /* Line 1806 of yacc.c */ 9106 #line 2798 "parser.yy" 9073 9107 { (yyval.en) = 0; } 9074 9108 break; 9075 9109 9076 case 7 40:9077 9078 /* Line 1806 of yacc.c */ 9079 #line 2 764"parser.yy"9110 case 750: 9111 9112 /* Line 1806 of yacc.c */ 9113 #line 2800 "parser.yy" 9080 9114 { (yyval.en) = (yyvsp[(2) - (2)].en); } 9081 9115 break; … … 9084 9118 9085 9119 /* Line 1806 of yacc.c */ 9086 #line 9 087"Parser/parser.cc"9120 #line 9121 "Parser/parser.cc" 9087 9121 default: break; 9088 9122 } … … 9315 9349 9316 9350 /* Line 2067 of yacc.c */ 9317 #line 2 767"parser.yy"9351 #line 2803 "parser.yy" 9318 9352 9319 9353 // ----end of grammar---- -
src/Parser/parser.h
r59cde21 rf28a53a 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 THEN = 360 138 143 }; 139 144 #endif … … 188 193 #define RETURN 305 189 194 #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 195 #define DISABLE 307 196 #define ENABLE 308 197 #define FALLTHRU 309 198 #define TRY 310 199 #define CATCH 311 200 #define CATCHRESUME 312 201 #define FINALLY 313 202 #define THROW 314 203 #define THROWRESUME 315 204 #define AT 316 205 #define ASM 317 206 #define ALIGNAS 318 207 #define ALIGNOF 319 208 #define ATOMIC 320 209 #define GENERIC 321 210 #define NORETURN 322 211 #define STATICASSERT 323 212 #define THREADLOCAL 324 213 #define IDENTIFIER 325 214 #define QUOTED_IDENTIFIER 326 215 #define TYPEDEFname 327 216 #define TYPEGENname 328 217 #define ATTR_IDENTIFIER 329 218 #define ATTR_TYPEDEFname 330 219 #define ATTR_TYPEGENname 331 220 #define INTEGERconstant 332 221 #define FLOATINGconstant 333 222 #define CHARACTERconstant 334 223 #define STRINGliteral 335 224 #define ZERO 336 225 #define ONE 337 226 #define ARROW 338 227 #define ICR 339 228 #define DECR 340 229 #define LS 341 230 #define RS 342 231 #define LE 343 232 #define GE 344 233 #define EQ 345 234 #define NE 346 235 #define ANDAND 347 236 #define OROR 348 237 #define ELLIPSIS 349 238 #define MULTassign 350 239 #define DIVassign 351 240 #define MODassign 352 241 #define PLUSassign 353 242 #define MINUSassign 354 243 #define LSassign 355 244 #define RSassign 356 245 #define ANDassign 357 246 #define ERassign 358 247 #define ORassign 359 248 #define THEN 360 239 249 240 250 … … 263 273 264 274 /* Line 2068 of yacc.c */ 265 #line 2 66 "Parser/parser.h"275 #line 276 "Parser/parser.h" 266 276 } YYSTYPE; 267 277 # define YYSTYPE_IS_TRIVIAL 1 -
src/Parser/parser.yy
r59cde21 rf28a53a 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Aug 11 16:01:49201513 // Update Count : 1 35012 // Last Modified On : Mon Sep 28 18:18:32 2015 13 // Update Count : 1402 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 … … 120 120 } 121 121 122 %type<tok> zero_one identifier no_attr_identifier no_01_identifier122 %type<tok> identifier no_01_identifier no_attr_identifier no_attr_identifier_01 zero_one 123 123 %type<tok> identifier_or_type_name no_attr_identifier_or_type_name no_01_identifier_or_type_name 124 124 %type<constant> string_literal_list … … 143 143 // statements 144 144 %type<sn> labeled_statement compound_statement expression_statement selection_statement 145 %type<sn> iteration_statement jump_statement exception_statement asm_statement 145 %type<sn> iteration_statement jump_statement exception_statement asm_statement ctor_dtor 146 146 %type<sn> fall_through_opt fall_through 147 147 %type<sn> statement statement_list … … 319 319 no_attr_identifier: 320 320 IDENTIFIER 321 ; 322 323 no_attr_identifier_01: 324 IDENTIFIER 325 | zero_one 321 326 ; 322 327 … … 445 450 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), $2 ); } 446 451 | ALIGNOF '(' type_name_no_function ')' // GCC, type alignment 447 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 ) ); }452 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 ) ); } 448 453 | ANDAND no_attr_identifier // GCC, address of label 449 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); }454 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); } 450 455 ; 451 456 … … 627 632 | exception_statement 628 633 | asm_statement 634 | ctor_dtor 629 635 ; 630 636 … … 805 811 | RETURN comma_expression_opt ';' 806 812 { $$ = new StatementNode( StatementNode::Return, $2, 0 ); } 807 | THROW assignment_expression ';'813 | THROW assignment_expression_opt ';' 808 814 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); } 809 | THROW ';' 810 { $$ = new StatementNode( StatementNode::Throw ); } 815 // | THROW ';' 816 // { $$ = new StatementNode( StatementNode::Throw ); } 817 | THROWRESUME assignment_expression_opt ';' 818 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); } 819 | THROWRESUME assignment_expression_opt AT assignment_expression ';' 820 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); } 821 // | THROWRESUME ';' 822 // { $$ = new StatementNode( StatementNode::Throw ); } 811 823 ; 812 824 … … 831 843 | handler_clause CATCH '(' ELLIPSIS ')' compound_statement 832 844 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); } 845 | CATCHRESUME '(' ELLIPSIS ')' compound_statement 846 { $$ = StatementNode::newCatchStmt( 0, $5, true ); } 847 | handler_clause CATCHRESUME '(' ELLIPSIS ')' compound_statement 848 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); } 833 849 ; 834 850 … … 837 853 { $$ = StatementNode::newCatchStmt( $5, $8 ); } 838 854 | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop 855 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); } 856 | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop 857 { $$ = StatementNode::newCatchStmt( $5, $8 ); } 858 | handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop 839 859 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); } 840 860 ; … … 923 943 | label_list ',' no_attr_identifier 924 944 { $$ = $1; $1->append_label( $3 ); } 945 ; 946 947 ctor_dtor: // CFA, constructor/destructor 948 no_attr_identifier_01 '{' argument_expression_list '}' ';' 949 { 950 Token fn; fn.str = new std::string( "?{}" ); fn.loc = $1.loc; 951 $$ = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ), 952 (ExpressionNode *)((new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), new VarRefNode( $1 ) ))->set_link( $3 )) ), 0 ); 953 } 954 | '^' no_attr_identifier_01 '{' '}' ';' 955 { 956 Token fn; fn.str = new std::string( "^?{}" ); fn.loc = $2.loc; 957 $$ = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ), 958 new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), new VarRefNode( $2 ) ) ), 0 ); 959 } 925 960 ; 926 961 … … 1693 1728 1694 1729 designator: 1730 // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0 1695 1731 // only ".0" and ".1" allowed => semantic check 1696 1732 FLOATINGconstant -
src/ResolvExpr/CastCost.cc
r59cde21 rf28a53a 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 06:57:43 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Sun May 17 06:59:10201513 // Update Count : 211 // Last Modified By : Rob Schluntz 12 // Last Modified On : Mon Oct 05 14:48:45 2015 13 // Update Count : 5 14 14 // 15 15 … … 56 56 return Cost::infinity; 57 57 } else { 58 // xxx - why are we adding cost 0 here? 58 59 return converter.get_cost() + Cost( 0, 0, 0 ); 59 60 } // if … … 82 83 newEnv.add( pointerType->get_forall() ); 83 84 newEnv.add( pointerType->get_base()->get_forall() ); 84 int assignResult = ptrsCastable( pointerType->get_base(), destAsPtr->get_base(), newEnv, indexer );85 if ( assignResult > 0 ) {85 int castResult = ptrsCastable( pointerType->get_base(), destAsPtr->get_base(), newEnv, indexer ); 86 if ( castResult > 0 ) { 86 87 cost = Cost( 0, 0, 1 ); 87 } else if ( assignResult < 0 ) {88 } else if ( castResult < 0 ) { 88 89 cost = Cost( 1, 0, 0 ); 89 90 } // if -
src/ResolvExpr/PtrsAssignable.cc
r59cde21 rf28a53a 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 11:44:11 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Sun May 17 11:47:36201513 // Update Count : 211 // Last Modified By : Rob Schluntz 12 // Last Modified On : Mon Sep 21 14:34:58 2015 13 // Update Count : 7 14 14 // 15 15 … … 106 106 void PtrsAssignable::visit( TypeInstType *inst ) { 107 107 EqvClass eqvClass; 108 if ( env.lookup( inst->get_name(), eqvClass ) ) {108 if ( env.lookup( inst->get_name(), eqvClass ) && eqvClass.type ) { 109 109 result = ptrsAssignable( eqvClass.type, dest, env ); 110 110 } else { -
src/ResolvExpr/PtrsCastable.cc
r59cde21 rf28a53a 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 11:48:00 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Sun May 17 11:51:17201513 // Update Count : 211 // Last Modified By : Rob Schluntz 12 // Last Modified On : Mon Oct 05 14:49:12 2015 13 // Update Count : 7 14 14 // 15 15 … … 133 133 134 134 void PtrsCastable::visit(TypeInstType *inst) { 135 result = objectCast( inst, env, indexer ) && objectCast( dest, env, indexer )? 1 : -1;135 result = objectCast( inst, env, indexer ) > 0 && objectCast( dest, env, indexer ) > 0 ? 1 : -1; 136 136 } 137 137 -
src/ResolvExpr/Unify.cc
r59cde21 rf28a53a 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 12:27:10 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Fri Jun 26 14:57:05201513 // Update Count : 711 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Sep 02 14:43:22 2015 13 // Update Count : 36 14 14 // 15 15 … … 28 28 29 29 30 // #define DEBUG30 // #define DEBUG 31 31 32 32 namespace ResolvExpr { … … 80 80 bool typesCompatible( Type *first, Type *second, const SymTab::Indexer &indexer, const TypeEnvironment &env ) { 81 81 TypeEnvironment newEnv; 82 OpenVarSet openVars ;82 OpenVarSet openVars, closedVars; // added closedVars 83 83 AssertionSet needAssertions, haveAssertions; 84 84 Type *newFirst = first->clone(), *newSecond = second->clone(); 85 85 env.apply( newFirst ); 86 86 env.apply( newSecond ); 87 88 // do we need to do this? Seems like we do, types should be able to be compatible if they 89 // have free variables that can unify 90 findOpenVars( newFirst, openVars, closedVars, needAssertions, haveAssertions, false ); 91 findOpenVars( newSecond, openVars, closedVars, needAssertions, haveAssertions, true ); 92 87 93 bool result = unifyExact( newFirst, newSecond, newEnv, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ); 88 94 delete newFirst; … … 425 431 426 432 void Unify::visit(ArrayType *arrayType) { 427 // XXX -- compare array dimension428 433 ArrayType *otherArray = dynamic_cast< ArrayType* >( type2 ); 429 if ( otherArray && arrayType->get_isVarLen() == otherArray->get_isVarLen() ) { 434 // to unify, array types must both be VLA or both not VLA 435 // and must both have a dimension expression or not have a dimension 436 if ( otherArray && arrayType->get_isVarLen() == otherArray->get_isVarLen() 437 && ((arrayType->get_dimension() != 0 && otherArray->get_dimension() != 0) 438 || (arrayType->get_dimension() == 0 && otherArray->get_dimension() == 0))) { 439 440 // not positive this is correct in all cases, but it's needed for typedefs 441 if ( arrayType->get_isVarLen() || otherArray->get_isVarLen() ) { 442 return; 443 } 444 445 if ( ! arrayType->get_isVarLen() && ! otherArray->get_isVarLen() && 446 arrayType->get_dimension() != 0 && otherArray->get_dimension() != 0 ) { 447 ConstantExpr * ce1 = dynamic_cast< ConstantExpr * >( arrayType->get_dimension() ); 448 ConstantExpr * ce2 = dynamic_cast< ConstantExpr * >( otherArray->get_dimension() ); 449 assert(ce1 && ce2); 450 451 Constant * c1 = ce1->get_constant(); 452 Constant * c2 = ce2->get_constant(); 453 454 if ( c1->get_value() != c2->get_value() ) { 455 // does not unify if the dimension is different 456 return; 457 } 458 } 459 430 460 result = unifyExact( arrayType->get_base(), otherArray->get_base(), env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ); 431 461 } // if … … 435 465 bool unifyDeclList( Iterator1 list1Begin, Iterator1 list1End, Iterator2 list2Begin, Iterator2 list2End, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, const SymTab::Indexer &indexer ) { 436 466 for ( ; list1Begin != list1End && list2Begin != list2End; ++list1Begin, ++list2Begin ) { 467 // Type * commonType; 468 // if ( ! unifyInexact( (*list1Begin)->get_type(), (*list2Begin)->get_type(), env, needAssertions, haveAssertions, openVars, WidenMode( true, true ), indexer, commonType ) ) { 437 469 if ( ! unifyExact( (*list1Begin)->get_type(), (*list2Begin)->get_type(), env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ) ) { 438 470 return false; … … 449 481 FunctionType *otherFunction = dynamic_cast< FunctionType* >( type2 ); 450 482 if ( otherFunction && functionType->get_isVarArgs() == otherFunction->get_isVarArgs() ) { 451 483 452 484 if ( unifyDeclList( functionType->get_parameters().begin(), functionType->get_parameters().end(), otherFunction->get_parameters().begin(), otherFunction->get_parameters().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) { 453 485 -
src/SymTab/Indexer.h
r59cde21 rf28a53a 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
r59cde21 rf28a53a 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 … … 54 54 #include "MakeLibCfa.h" 55 55 #include "TypeEquality.h" 56 #include "ResolvExpr/typeops.h" 56 57 57 58 #define debugPrint( x ) if ( doDebug ) { std::cout << x; } … … 851 852 Type * t1 = tyDecl->get_base(); 852 853 Type * t2 = typedefNames[ tyDecl->get_name() ].first->get_base(); 853 if ( ! typeEquals( t1, t2, true) ) {854 if ( ! ResolvExpr::typesCompatible( t1, t2, Indexer() ) ) { 854 855 throw SemanticError( "cannot redefine typedef: " + tyDecl->get_name() ); 855 856 } … … 894 895 DeclarationWithType *ret = Mutator::mutate( objDecl ); 895 896 typedefNames = oldNames; 897 // is the type a function? 896 898 if ( FunctionType *funtype = dynamic_cast<FunctionType *>( ret->get_type() ) ) { 899 // replace the current object declaration with a function declaration 897 900 return new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, ret->get_isInline(), ret->get_isNoreturn() ); 898 901 } else if ( objDecl->get_isInline() || objDecl->get_isNoreturn() ) { -
src/SynTree/Expression.cc
r59cde21 rf28a53a 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Aug 12 14:02:45201513 // Update Count : 3 012 // 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 -
src/SynTree/ObjectDecl.cc
r59cde21 rf28a53a 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 13 18:08:27201513 // Update Count : 1 611 // Last Modified By : Rob Schluntz 12 // Last Modified On : Tue Sep 29 14:13:01 2015 13 // Update Count : 18 14 14 // 15 15 … … 52 52 get_type()->print( os, indent ); 53 53 } else { 54 os << " untyped entity ";54 os << " untyped entity "; 55 55 } // if 56 56 57 57 if ( init ) { 58 os << " with initializer ";58 os << " with initializer "; 59 59 init->print( os, indent ); 60 60 } // if 61 61 62 62 if ( bitfieldWidth ) { 63 os << " with bitfield width ";63 os << " with bitfield width "; 64 64 bitfieldWidth->print( os ); 65 65 } // if -
src/driver/cfa.cc
r59cde21 rf28a53a 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 ) {
Note:
See TracChangeset
for help on using the changeset viewer.