Verilog-Perl-3.418/0000755000177100017500000000000012654236646014031 5ustar wsnyderwsnyderVerilog-Perl-3.418/Std.pm0000644000177100017500000000654512654236555015132 0ustar wsnyderwsnyder# See copyright, etc in below POD section. ###################################################################### package Verilog::Std; use Config; use IO::File; use File::Path; use Verilog::Language; use Carp; use strict; use vars qw ($VERSION); ###################################################################### #### Configuration Section $VERSION = '3.418'; ####################################################################### # ACCESSORS our %_Std_Data; sub std { my $std = shift || Verilog::Language::language_standard(); if (!$_Std_Data{$std}) { my @out; foreach () { last if $_ =~ /^__END__/; last if $std !~ /^1800/; # Non system verilog, ie 1364 has no std package push @out, $_; } $_Std_Data{$std} = join('',@out); } return $_Std_Data{$std}; } ####################################################################### # It's a PITRA to have pure datafiles get installed properly, # so we just paste our text into this package. 1; __DATA__ `line 1 "Perl_Verilog::Std_module" 0 // Verilog-Perl Verilog::Std // The basis for this package is described in IEEE 1800-2012 Annex G package std; class semaphore; extern function new(int keyCount = 0); extern function void put(int keyCount = 1); extern task get(int keyCount = 1); extern function int try_get(int keyCount = 1); endclass class mailbox #(type T = dynamic_singular_type) ; extern function new(int bound = 0); extern function int num(); extern task put( T message); extern function int try_put( T message); extern task get( ref T message ); extern function int try_get( ref T message ); extern task peek( ref T message ); extern function int try_peek( ref T message ); endclass class process; typedef enum { FINISHED, RUNNING, WAITING, SUSPENDED, KILLED } state; extern static function process self(); extern function state status(); extern function void kill(); extern task await(); extern function void suspend(); extern function void resume(); endclass // randomize is here, however the parsing rules are special, // For example there is "(null)", variable arguments, and "with {...}" // randomize really should be a language keyword. function int randomize(); endfunction endpackage : std import std::*; __END__ =pod =head1 NAME Verilog::Std - SystemVerilog Built-in std Package Definition =head1 SYNOPSIS Internally used by Verilog::SigParser, etc. use Verilog::Std; print Verilog::Std::std; =head1 DESCRIPTION Verilog::Std contains the built-in "std" package required by the SystemVerilog standard. =head1 FUNCTIONS =over 4 =item std ({I}) Return the definition of the std package. Optionally pass the language standard, defaulting to what Verilog::Language::language_standard returns if unspecified. =back =head1 DISTRIBUTION Verilog-Perl is part of the L free Verilog EDA software tool suite. The latest version is available from CPAN and from L. Copyright 2009-2016 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. =head1 AUTHORS Wilson Snyder =head1 SEE ALSO L =cut ###################################################################### Verilog-Perl-3.418/MANIFEST.SKIP0000644000177100017500000000110712407545501015713 0ustar wsnyderwsnyder^CVS/ /CVS/ ^.git/ ,v$ \.(bak|old)/ \.(bak|old)$ \bMakefile$ ^INSTALL$ \.wpsin$ \.texi$ \.tar\. \.bs$ \.vpassert/.* \.o$ \.def$ \.dll$ \.exp$ \.tmp$ \.vcs.*$ \.pre\..*$ _pretmp\..*$ VPreLex\.cpp$ simv .*\.tar\.gz \bblib\b nodist/.* pm_to_blib$ Parser/Parser.c Parser/VParseBison.*\.cpp Parser/VParseBison.*\.h Parser/VParseBison.*\.tab.c Parser/VParseBison.*\.output Parser/VParseLex.cpp Parser/VParseLex_pretmp.cpp Parser/.*_callbackgen\..* Parser/.*_cleaned\..* Preproc/Preproc.c Preproc/VPreLex_pretmp.cpp Preproc/.*_cleaned\..* signals.vrename test_dir \.svn/ ^(.*/)?MYMETA\..*$ Verilog-Perl-3.418/.gitignore0000644000177100017500000000017412141263027016003 0ustar wsnyderwsnyderREADME blib Makefile pm_to_blib *.c *.bs *.old *.tmp .vpassert .vpm .git .svn simv signals.vrename test_dir MYMETA.* nodist Verilog-Perl-3.418/Language.pm0000644000177100017500000005123212654236555016114 0ustar wsnyderwsnyder# See copyright, etc in below POD section. ###################################################################### =pod =head1 NAME Verilog::Language - Verilog language utilities =head1 SYNOPSIS use Verilog::Language; $result = Verilog::Language::is_keyword ("wire"); # true $result = Verilog::Language::is_compdirect ("`notundef"); # false $result = Verilog::Language::number_value ("4'b111"); # 8 $result = Verilog::Language::number_bits ("32'h1b"); # 32 $result = Verilog::Language::number_signed ("1'sh1"); # 1 @vec = Verilog::Language::split_bus ("[31,5:4]"); # 31, 5, 4 @vec = Verilog::Language::split_bus_nocomma ("[31:29]"); # 31, 30, 29 $result = Verilog::Language::strip_comments ("a/*b*/c"); # ac =head1 DESCRIPTION Verilog::Language provides general utilities for using the Verilog Language, such as parsing numbers or determining what keywords exist. General functions will be added as needed. =head1 FUNCTIONS =over 4 =item Verilog::Language::is_keyword ($symbol_string) Return true if the given symbol string is a Verilog reserved keyword. Value indicates the language standard as per the `begin_keywords macro, '1364-1995', '1364-2001', '1364-2005', '1800-2005', '1800-2009', '1800-2012' or 'VAMS'. =item Verilog::Language::is_compdirect ($symbol_string) Return true if the given symbol string is a Verilog compiler directive. =item Verilog::Language::is_gateprim ($symbol_string) Return true if the given symbol is a built in gate primitive; for example "buf", "xor", etc. =item Verilog::Language::language_keywords ($year) Returns a hash for keywords for given language standard year, where the value of the hash is the standard in which it was defined. =item Verilog::Language::language_standard ($year) Sets the language standard to indicate what are keywords. If undef, all standards apply. The year is indicates the language standard as per the `begin_keywords macro, '1364-1995', '1364-2001', '1364-2005', '1800-2005' '1800-2009' or '1800-2012'. =item Verilog::Language::language_maximum Returns the greatest language currently standardized, presently '1800-2012'. =item Verilog::Language::number_bigint ($number_string) Return the numeric value of a Verilog value stored as a Math::BigInt, or undef if incorrectly formed. You must 'use Math::BigInt' yourself before calling this function. Note bigints do not have an exact size, so NOT of a Math::BigInt may return a different value than verilog. See also number_value and number_bitvector. =item Verilog::Language::number_bits ($number_string) Return the number of bits in a value string, or undef if incorrectly formed, _or_ not specified. =item Verilog::Language::number_bitvector ($number_string) Return the numeric value of a Verilog value stored as a Bit::Vector, or undef if incorrectly formed. You must 'use Bit::Vector' yourself before calling this function. The size of the Vector will be that returned by number_bits. =item Verilog::Language::number_signed ($number_string) Return true if the Verilog value is signed, else undef. =item Verilog::Language::number_value ($number_string) Return the numeric value of a Verilog value, or undef if incorrectly formed. It ignores any signed Verilog attributes, but is is returned as a perl signed integer, so it may fail for over 31 bit values. See also number_bigint and number_bitvector. =item Verilog::Language::split_bus ($bus) Return a list of expanded arrays. When passed a string like "foo[5:1:2,10:9]", it will return a array with ("foo[5]", "foo[3]", ...). It correctly handles connectivity expansion also, so that "x[1:0] = y[3:0]" will get intuitive results. =item Verilog::Language::split_bus_nocomma ($bus) As with split_bus, but faster. Only supports simple decimal colon separated array specifications, such as "foo[3:0]". =item Verilog::Language::strip_comments ($text) Return text with any // or /**/ comments stripped, correctly handing quoted strings. Newlines will be preserved in this process. =back =head1 DISTRIBUTION Verilog-Perl is part of the L free Verilog EDA software tool suite. The latest version is available from CPAN and from L. Copyright 2000-2016 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. =head1 AUTHORS Wilson Snyder =head1 SEE ALSO L, L L, L, L And the LVerilog-Mode package for Emacs. =cut ###################################################################### package Verilog::Language; require 5.000; require Exporter; use strict; use vars qw($VERSION %Keyword %Keywords %Compdirect $Standard %Gateprim); use Carp; ###################################################################### #### Configuration Section $VERSION = '3.418'; ###################################################################### #### Internal Variables foreach my $kwd (qw( always and assign begin buf bufif0 bufif1 case casex casez cmos deassign default defparam disable else end endcase endfunction endmodule endprimitive endspecify endtable endtask event for force forever fork function highz0 highz1 if initial inout input integer join large macromodule medium module nand negedge nmos nor not notif0 notif1 or output parameter pmos posedge primitive pull0 pull1 pulldown pullup rcmos real realtime reg release repeat rnmos rpmos rtran rtranif0 rtranif1 scalared small specify strength strong0 strong1 supply0 supply1 table task time tran tranif0 tranif1 tri tri0 tri1 triand trior trireg vectored wait wand weak0 weak1 while wire wor xnor xor )) { $Keywords{'1364-1995'}{$kwd} = '1364-1995'; } foreach my $kwd (qw( automatic cell config design edge endconfig endgenerate generate genvar ifnone incdir include instance liblist library localparam noshowcancelled pulsestyle_ondetect pulsestyle_onevent showcancelled signed specparam unsigned use )) { $Keywords{'1364-2001'}{$kwd} = '1364-2001'; } foreach my $kwd (qw( uwire )) { $Keywords{'1364-2005'}{$kwd} = '1364-2005'; } foreach my $kwd (qw( alias always_comb always_ff always_latch assert assume before bind bins binsof bit break byte chandle class clocking const constraint context continue cover covergroup coverpoint cross dist do endclass endclocking endgroup endinterface endpackage endprogram endproperty endsequence enum expect export extends extern final first_match foreach forkjoin iff ignore_bins illegal_bins import inside int interface intersect join_any join_none local logic longint matches modport new null package packed priority program property protected pure rand randc randcase randsequence ref return sequence shortint shortreal solve static string struct super tagged this throughout timeprecision timeunit type typedef union unique var virtual void wait_order wildcard with within )) { $Keywords{'1800-2005'}{$kwd} = '1800-2005'; } foreach my $kwd (qw( accept_on checker endchecker eventually global implies let nexttime reject_on restrict s_always s_eventually s_nexttime s_until s_until_with strong sync_accept_on sync_reject_on unique0 until until_with untyped weak )) { $Keywords{'1800-2009'}{$kwd} = '1800-2009'; } foreach my $kwd (qw( implements nettype interconnect soft )) { $Keywords{'1800-2012'}{$kwd} = '1800-2012'; } foreach my $kwd (qw( above abs absdelay abstol ac_stim access acos acosh aliasparam analog analysis asin asinh assert atan atan2 atanh branch ceil connect connectmodule connectrules continuous cos cosh cross ddt ddt_nature ddx discipline discrete domain driver_update endconnectrules enddiscipline endnature endparamset exclude exp final_step flicker_noise floor flow from ground hypot idt idt_nature idtmod inf initial_step laplace_nd laplace_np laplace_zd laplace_zp last_crossing limexp ln log max merged min nature net_resolution noise_table paramset potential pow resolveto sin sinh slew split sqrt string tan tanh timer transition units white_noise wreal zi_nd zi_np zi_zd zi_zp )) { $Keywords{'VAMS'}{$kwd} = 'VAMS'; } foreach my $kwd ( # Speced "`celldefine", "`define", # Preprocessor "`else", # Preprocessor "`endcelldefine", "`endif", # Preprocessor "`ifdef", # Preprocessor "`include", # Preprocessor "`nounconnected_drive", "`resetall", "`timescale", "`unconnected_drive", "`undef", # Preprocessor "`undefineall", # Preprocessor # Commercial Extensions "`accelerate", # Verilog-XL compatibility "`autoexpand_vectornets", # Verilog-XL compatibility "`default_decay_time", # Verilog spec - delays only "`default_trireg_strength", # Verilog spec "`delay_mode_distributed", # Verilog spec - delays only "`delay_mode_path", # Verilog spec - delays only "`delay_mode_unit", # Verilog spec - delays only "`delay_mode_zero", # Verilog spec - delays only "`disable_portfaults", # Verilog-XL compatibility "`enable_portfaults", # Verilog-XL compatibility "`endprotect", # Many tools - pre encryption "`endprotected", # Many tools - post encryption "`expand_vectornets", # Verilog-XL compatibility "`noaccelerate", # Verilog-XL compatibility "`noexpand_vectornets", # Verilog-XL compatibility "`noremove_gatenames", # Verilog-XL compatibility "`noremove_netnames", # Verilog-XL compatibility "`nosuppress_faults", # Verilog-XL compatibility "`nounconnected_drive", # Verilog-XL compatibility "`portcoerce", # Verilog-XL compatibility "`protect", # Many tools - pre encryption "`protected", # Many tools - post encryption "`remove_gatenames", # Verilog-XL compatibility "`remove_netnames", # Verilog-XL compatibility "`suppress_faults", # Verilog-XL compatibility ) { $Keywords{$kwd}{'1364-1995'} = $Compdirect{$kwd} = '1364-1995'; } foreach my $kwd ( "`default_nettype", "`elsif", "`undef", "`ifndef", "`file", "`line", ) { $Keywords{$kwd}{'1364-2001'} = $Compdirect{$kwd} = '1364-2001'; } foreach my $kwd ( "`pragma", ) { $Keywords{$kwd}{'1364-2005'} = $Compdirect{$kwd} = '1364-2005'; } foreach my $kwd ( "`default_discipline", "`default_transition", ) { $Keywords{$kwd}{'1364-2005'} = $Compdirect{$kwd} = '1364-2005'; } language_standard (language_maximum()); # Default standard foreach my $kwd (qw( and buf bufif0 bufif1 cmos nand nmos nor not notif0 notif1 or pmos pulldown pullup rcmos rnmos rpmos rtran rtranif0 rtranif1 tran tranif0 tranif1 xnor xor )) { $Gateprim{$kwd} = '1364-1995'; } ###################################################################### #### Keyword utilities sub language_maximum { return "1800-2012"; } sub _language_kwd_hash { my $standard = shift; my @subsets; if ($standard eq '1995' || $standard eq '1364-1995') { $Standard = '1364-1995'; @subsets = ('1364-1995'); } elsif ($standard eq '2001' || $standard eq '1364-2001' || $standard eq '1364-2001-noconfig') { $Standard = '1364-2001'; @subsets = ('1364-2001', '1364-1995'); } elsif ($standard eq '1364-2005') { $Standard = '1364-2005'; @subsets = ('1364-2005', '1364-2001', '1364-1995'); } elsif ($standard eq 'sv31' || $standard eq '1800-2005') { $Standard = '1800-2005'; @subsets = ('1800-2005', '1364-2005', '1364-2001', '1364-1995'); } elsif ($standard eq '1800-2009') { $Standard = '1800-2009'; @subsets = ('1800-2009', '1800-2005', '1364-2005', '1364-2001', '1364-1995'); } elsif ($standard eq 'latest' || $standard eq '1800-2012') { $Standard = '1800-2012'; @subsets = ('1800-2012', '1800-2009', '1800-2005', '1364-2005', '1364-2001', '1364-1995'); } elsif ($standard =~ /^V?AMS/) { $Standard = 'VAMS'; @subsets = ('VAMS', '1364-2005', '1364-2001', '1364-1995'); } else { croak "%Error: Verilog::Language::language_standard passed bad value: $standard,"; } # Update keyword list to present language # (We presume the language_standard rarely changes, so it's faster to compute the list.) my %keywords = (); foreach my $ss (@subsets) { foreach my $kwd (%{$Keywords{$ss}}) { $keywords{$kwd} = $ss; } } return %keywords; } sub language_standard { my $standard = shift; if (defined $standard) { %Keyword = _language_kwd_hash($standard); } return $Standard; } sub language_keywords { my $standard = shift || $Standard; return _language_kwd_hash($standard); } sub is_keyword { my $symbol = shift; return ($Keyword{$symbol}); } sub is_compdirect { my $symbol = shift; return ($Compdirect{$symbol}); } sub is_gateprim { my $symbol = shift; return ($Gateprim{$symbol}); } ###################################################################### #### String utilities sub strip_comments { return $_[0] if $_[0] !~ m!/!s; # Fast path my $text = shift; # Spec says that // has no special meaning inside /**/ my $quote; my $olcmt; my $cmt; my $out = ""; while ($text =~ m!(.*?)(//|/\*|\*/|\n|\"|$)!sg) { $out .= $1 if !$olcmt && !$cmt; my $t = $2; if ($2 eq '"') { $out .= $t; $quote = ! $quote; } elsif (!$quote && !$olcmt && $t eq '/*') { $cmt = 1; } elsif (!$quote && !$cmt && $t eq '//') { $olcmt = 1; } elsif ($cmt && $t eq '*/') { $cmt = 0; } elsif ($t eq "\n") { $olcmt = 0; $out .= $t; } else { $out .= $t if !$olcmt && !$cmt; } } return $out; } ###################################################################### #### Numeric utilities sub number_bits { my $number = shift; if ($number =~ /^\s*([0-9]+)\s*\'/i) { return $1; } return undef; } sub number_signed { my $number = shift; if ($number =~ /\'\s*s/i) { return 1; } return undef; } sub number_value { my $number = shift; $number =~ s/[_ ]//g; if ($number =~ /\'s?h([0-9a-f]+)$/i) { return (hex ($1)); } elsif ($number =~ /\'s?o([0-9a-f]+)$/i) { return (oct ($1)); } elsif ($number =~ /\'s?b([0-1]+)$/i) { my $val = 0; $number = $1; foreach my $bit (split(//, $number)) { $val = ($val<<1) | ($bit=='1'?1:0); } return ($val); } elsif ($number =~ /\'s?d?([0-9]+)$/i || $number =~ /^(-?[0-9]+)$/i) { return ($1); } return undef; } sub number_bigint { my $number = shift; $number =~ s/[_ ]//g; if ($number =~ /\'s?h([0-9a-f]+)$/i) { return (Math::BigInt->new("0x".$1)); } elsif ($number =~ /\'s?o([0-9a-f]+)$/i) { my $digits = $1; my $vec = Math::BigInt->new(); my $len = length($digits); my $bit = 0; for (my $index=$len-1; $index>=0; $index--, $bit+=3) { my $digit = substr($digits,$index,1); my $val = Math::BigInt->new($digit); $val = $val->blsft($bit,2); $vec->bior($val); } return ($vec); } elsif ($number =~ /\'s?b([0-1]+)$/i) { return (Math::BigInt->new("0b".$1)); } elsif ($number =~ /\'s?d?0*([0-9]+)$/i || $number =~ /^0*([0-9]+)$/i) { return (Math::BigInt->new($1)); } return undef; } sub number_bitvector { my $number = shift; $number =~ s/[_ ]//g; my $bits = number_bits($number) || 32; if ($number =~ /\'s?h([0-9a-f]+)$/i) { return (Bit::Vector->new_Hex($bits,$1)); } elsif ($number =~ /\'s?o([0-9a-f]+)$/i) { my $digits = $1; my $vec = Bit::Vector->new($bits); my $len = length($digits); my $bit = 0; for (my $index=$len-1; $index>=0; $index--, $bit+=3) { my $digit = substr($digits,$index,1); $vec->Bit_On($bit+2) if ($digit & 4); $vec->Bit_On($bit+1) if ($digit & 2); $vec->Bit_On($bit+0) if ($digit & 1); } return ($vec); } elsif ($number =~ /\'s?b([0-1]+)$/i) { return (Bit::Vector->new_Bin($bits,$1)); } elsif ($number =~ /\'s?d?([0-9]+)$/i || $number =~ /^([0-9]+)$/i) { return (Bit::Vector->new_Dec($bits,$1)); } return undef; } ###################################################################### #### Signal utilities sub split_bus { my $bus = shift; if ($bus !~ /\[/) { # Fast case: No bussing return $bus; } elsif ($bus =~ /^([^\[]+\[)([0-9]+):([0-9]+)(\][^\]]*)$/) { # Middle speed case: Simple max:min my $bit; my @vec = (); if ($2 >= $3) { for ($bit = $2; $bit >= $3; $bit --) { push @vec, $1 . $bit . $4; } } else { for ($bit = $2; $bit <= $3; $bit ++) { push @vec, $1 . $bit . $4; } } return @vec; } else { # Complex case: x:y:z,p,... etc # Do full parsing my @pretext = (); # [brnum] my @expanded = (); # [brnum][bitoccurance] my $inbra = 0; my $brnum = 0; my ($beg,$end,$step); foreach (split (/([:\]\[,])/, $bus)) { if (/^\[/) { $inbra = 1; $pretext[$brnum] .= $_; } if (!$inbra) { # Not in bracket, just remember text $pretext[$brnum] .= $_; next; } if (/[\],]/) { if (defined $beg) { # End of bus piece #print "Got seg $beg $end $step\n"; my $bit; if ($beg >= $end) { for ($bit = $beg; $bit >= $end; $bit -= $step) { push @{$expanded[$brnum]}, $bit; } } else { for ($bit = $beg; $bit <= $end; $bit += $step) { push @{$expanded[$brnum]}, $bit; } } } $beg = undef; # Now what? if (/^\]/) { $inbra = 0; $brnum++; $pretext[$brnum] .= $_; } elsif (/,/) { $inbra = 1; } } elsif (/:/) { $inbra++; } else { if ($inbra == 1) { # Begin value $beg = $end = number_value ($_); # [2'b11:2'b00] is legal $step = 1; } elsif ($inbra == 2) { # End value $end = number_value ($_); # [2'b11:2'b00] is legal } elsif ($inbra == 3) { # Middle value $step = number_value ($_); # [2'b11:2'b00] is legal } # Else ignore extra colons } } # Determine max size of any bracket expansion array my $br; my $max_size = $#{$expanded[0]}; for ($br=1; $br<$brnum; $br++) { my $len = $#{$expanded[$br]}; if ($len < 0) { push @{$expanded[$br]}, ""; $len = 0; } $max_size = $len if $max_size < $len; } my $i; my @vec = (); for ($i=0; $i<=$max_size; $i++) { $bus = ""; for ($br=0; $br<$brnum; $br++) { #print "i $i br $br >", $pretext[$br],"<\n"; $bus .= $pretext[$br] . $expanded[$br][$i % (1+$#{$expanded[$br]})]; } $bus .= $pretext[$br]; # Trailing stuff push @vec, $bus; } return @vec; } } sub split_bus_nocomma { # Faster version of split_bus my $bus = shift; if ($bus !~ /:/) { # Fast case: No bussing return $bus; } elsif ($bus =~ /^([^\[]+\[)([0-9]+):([0-9]+)(\][^\]]*)$/) { # Middle speed case: Simple max:min my $bit; my @vec = (); if ($2 >= $3) { for ($bit = $2; $bit >= $3; $bit --) { push @vec, $1 . $bit . $4; } } else { for ($bit = $2; $bit <= $3; $bit ++) { push @vec, $1 . $bit . $4; } } return @vec; } else { # Complex case: x:y etc # Do full parsing my @pretext = (); # [brnum] my @expanded = (); # [brnum][bitoccurance] my $inbra = 0; my $brnum = 0; my ($beg,$end); foreach (split (/([:\]\[])/, $bus)) { if (/^\[/) { $inbra = 1; $pretext[$brnum] .= $_; } if (!$inbra) { # Not in bracket, just remember text $pretext[$brnum] .= $_; next; } if (/[\]]/) { if (defined $beg) { # End of bus piece #print "Got seg $beg $end\n"; my $bit; if ($beg >= $end) { for ($bit = $beg; $bit >= $end; $bit--) { push @{$expanded[$brnum]}, $bit; } } else { for ($bit = $beg; $bit <= $end; $bit++) { push @{$expanded[$brnum]}, $bit; } } } $beg = undef; # Now what? if (/^\]/) { $inbra = 0; $brnum++; $pretext[$brnum] .= $_; } } elsif (/:/) { $inbra++; } else { if ($inbra == 1) { # Begin value $beg = $end = $_; } elsif ($inbra == 2) { # End value $end = $_; } # Else ignore extra colons } } # Determine max size of any bracket expansion array my $br; my $max_size = $#{$expanded[0]}; for ($br=1; $br<$brnum; $br++) { my $len = $#{$expanded[$br]}; if ($len < 0) { push @{$expanded[$br]}, ""; $len = 0; } $max_size = $len if $max_size < $len; } my $i; my @vec = (); for ($i=0; $i<=$max_size; $i++) { $bus = ""; for ($br=0; $br<$brnum; $br++) { #print "i $i br $br >", $pretext[$br],"<\n"; $bus .= $pretext[$br] . $expanded[$br][$i % (1+$#{$expanded[$br]})]; } $bus .= $pretext[$br]; # Trailing stuff push @vec, $bus; } return @vec; } } ###################################################################### #### Package return 1; Verilog-Perl-3.418/Netlist.pm0000644000177100017500000004613012654236555016014 0ustar wsnyderwsnyder# Verilog - Verilog Perl Interface # See copyright, etc in below POD section. ###################################################################### package Verilog::Netlist; use Carp; use IO::File; use Verilog::Netlist::File; use Verilog::Netlist::Interface; use Verilog::Netlist::Module; use Verilog::Netlist::Subclass; use base qw(Verilog::Netlist::Subclass); use strict; use vars qw($Debug $Verbose $VERSION); $VERSION = '3.418'; ###################################################################### #### Error Handling # Netlist file & line numbers don't apply sub logger { return $_[0]->{logger}; } sub filename { return 'Verilog::Netlist'; } sub lineno { return ''; } ###################################################################### #### Creation sub new { my $class = shift; my $self = {_interfaces => {}, _modules => {}, _files => {}, implicit_wires_ok => 1, link_read => 1, logger => Verilog::Netlist::Logger->new, options => undef, # Usually pointer to Verilog::Getopt symbol_table => [], # Symbol table for Verilog::Parser preproc => 'Verilog::Preproc', parser => 'Verilog::Netlist::File::Parser', remove_defines_without_tick => 0, # Overriden in SystemC::Netlist #include_open_nonfatal => 0, #keep_comments => 0, #synthesis => 0, use_vars => 1, _libraries_done => {}, _need_link => [], # Objects we need to ->link @_}; bless $self, $class; return $self; } sub delete { my $self = shift; # Break circular references to netlist foreach my $subref ($self->modules) { $subref->delete; } foreach my $subref ($self->interfaces) { $subref->delete; } foreach my $subref ($self->files) { $subref->delete; } $self->{_modules} = {}; $self->{_interfaces} = {}; $self->{_files} = {}; $self->{_need_link} = {}; } ###################################################################### #### Functions sub link { my $self = shift; while (defined(my $subref = pop @{$self->{_need_link}})) { $subref->link(); } # The above should have gotten everything, but a child class # may rely on old behavior or have added classes outside our # universe, so be nice and do it the old way too. $self->{_relink} = 1; while ($self->{_relink}) { $self->{_relink} = 0; foreach my $subref ($self->modules) { $subref->link(); } foreach my $subref ($self->interfaces) { $subref->link(); } foreach my $subref ($self->files) { $subref->_link(); } } } sub lint { my $self = shift; foreach my $subref ($self->modules_sorted) { next if $subref->is_libcell(); $subref->lint(); } foreach my $subref ($self->interfaces_sorted) { $subref->link(); } } sub verilog_text { my $self = shift; my @out; foreach my $subref ($self->interfaces_sorted) { push @out, $subref->verilog_text, "\n"; } foreach my $subref ($self->modules_sorted) { push @out, $subref->verilog_text, "\n"; } return (wantarray ? @out : join('',@out)); } sub dump { my $self = shift; foreach my $subref ($self->interfaces_sorted) { $subref->dump(); } foreach my $subref ($self->modules_sorted) { $subref->dump(); } } ###################################################################### #### Module access sub new_module { my $self = shift; # @_ params # Can't have 'new Verilog::Netlist::Module' do this, # as not allowed to override Class::Struct's new() my $modref = new Verilog::Netlist::Module (netlist=>$self, keyword=>'module', is_top=>1, @_); $self->{_modules}{$modref->name} = $modref; push @{$self->{_need_link}}, $modref; return $modref; } sub new_root_module { my $self = shift; $self->{_modules}{'$root'} ||= $self->new_module(keyword=>'root_module', name=>'$root', @_); return $self->{_modules}{'$root'}; } sub defvalue_nowarn { my $self = shift; my $sym = shift; # Look up the value of a define, letting the user pick the accessor class if (my $opt=$self->{options}) { return $opt->defvalue_nowarn($sym); } return undef; } sub remove_defines { my $self = shift; my $sym = shift; # This function is HOT my $xsym = $sym; # We only remove defines one level deep, for historical reasons. # We optionally don't require a ` as SystemC also uses this function and doesn't use `. if ($self->{remove_defines_without_tick} || $xsym =~ /^\`/) { $xsym =~ s/^\`//; my $val = $self->defvalue_nowarn($xsym); #Undef if not found return $val if defined $val; } return $sym; } sub find_module_or_interface_for_cell { # ($self,$name) Are arguments, hardcoded below # Hot function, used only by Verilog::Netlist::Cell linking # Doesn't need to remove defines, as that's already done by caller return $_[0]->{_modules}{$_[1]} || $_[0]->{_interfaces}{$_[1]}; } sub find_module { my $self = shift; my $search = shift; # Return module maching name my $mod = $self->{_modules}{$search}; return $mod if $mod; # Allow FOO_CELL to be a #define to choose what instantiation is really used my $rsearch = $self->remove_defines($search); if ($rsearch ne $search) { return $self->find_module($rsearch); } return undef; } sub modules { my $self = shift; # Return all modules return (values %{$self->{_modules}}); } sub modules_sorted { my $self = shift; # Return all modules return (sort {$a->name cmp $b->name} (values %{$self->{_modules}})); } sub modules_sorted_level { my $self = shift; # Return all modules return (sort {$a->level <=> $b->level || $a->name cmp $b->name} (values %{$self->{_modules}})); } sub top_modules_sorted { my $self = shift; return grep ($_->is_top && !$_->is_libcell, $self->modules_sorted); } ###################################################################### #### Interface access sub new_interface { my $self = shift; # @_ params # Can't have 'new Verilog::Netlist::Interface' do this, # as not allowed to override Class::Struct's new() my $modref = new Verilog::Netlist::Interface (netlist=>$self, @_); $self->{_interfaces}{$modref->name} = $modref; push @{$self->{_need_link}}, $modref; return $modref; } sub find_interface { my $self = shift; my $search = shift; # Return interface maching name my $mod = $self->{_interfaces}{$search}; return $mod if $mod; # Allow FOO_CELL to be a #define to choose what instantiation is really used my $rsearch = $self->remove_defines($search); if ($rsearch ne $search) { return $self->find_interface($rsearch); } return undef; } sub interfaces { my $self = shift; # Return all interfaces return (values %{$self->{_interfaces}}); } sub interfaces_sorted { my $self = shift; # Return all interfaces return (sort {$a->name cmp $b->name} (values %{$self->{_interfaces}})); } ###################################################################### #### Files access sub resolve_filename { my $self = shift; my $filename = shift; my $lookup_type = shift; if ($self->{options}) { $filename = $self->remove_defines($filename); $filename = $self->{options}->file_path($filename, $lookup_type); } if (!-r $filename || -d $filename) { return undef; } $self->dependency_in ($filename); return $filename; } sub new_file { my $self = shift; # @_ params # Can't have 'new Verilog::Netlist::File' do this, # as not allowed to override Class::Struct's new() my $fileref = new Verilog::Netlist::File (netlist=>$self, @_); defined $fileref->name or carp "%Error: No name=> specified, stopped"; $self->{_files}{$fileref->name} = $fileref; $fileref->basename (Verilog::Netlist::Module::modulename_from_filename($fileref->name)); push @{$self->{_need_link}}, $fileref; return $fileref; } sub find_file { my $self = shift; my $search = shift; # Return file maching name return $self->{_files}{$search}; } sub files { my $self = shift; ref $self or die; # Return all files return (sort {$a->name() cmp $b->name()} (values %{$self->{_files}})); } sub files_sorted { return files(@_); } sub read_file { my $self = shift; my $fileref = $self->read_verilog_file(@_); return $fileref; } sub read_verilog_file { my $self = shift; my $fileref = Verilog::Netlist::File::read (netlist=>$self, @_); return $fileref; } sub read_libraries { my $self = shift; if ($self->{options}) { my @files = $self->{options}->library(); foreach my $file (@files) { if (!$self->{_libraries_done}{$file}) { $self->{_libraries_done}{$file} = 1; $self->read_file(filename=>$file, is_libcell=>1, ); ## $self->dump(); } } } } ###################################################################### #### Dependencies sub dependency_in { my $self = shift; my $filename = shift; $self->{_depend_in}{$filename} = 1; } sub dependency_out { my $self = shift; my $filename = shift; $self->{_depend_out}{$filename} = 1; } sub dependency_write { my $self = shift; my $filename = shift; my $fh = IO::File->new(">$filename") or die "%Error: $! writing $filename\n"; print $fh "$filename"; foreach my $dout (sort (keys %{$self->{_depend_out}})) { print $fh " $dout"; } print $fh " :"; foreach my $din (sort (keys %{$self->{_depend_in}})) { print $fh " $din"; } print $fh "\n"; $fh->close(); } ###################################################################### #### Package return 1; __END__ =pod =head1 NAME Verilog::Netlist - Verilog Netlist =head1 SYNOPSIS use Verilog::Netlist; # Setup options so files can be found use Verilog::Getopt; my $opt = new Verilog::Getopt; $opt->parameter( "+incdir+verilog", "-y","verilog", ); # Prepare netlist my $nl = new Verilog::Netlist (options => $opt,); foreach my $file ('testnetlist.v') { $nl->read_file (filename=>$file); } # Read in any sub-modules $nl->link(); #$nl->lint(); # Optional, see docs; probably not wanted $nl->exit_if_error(); foreach my $mod ($nl->top_modules_sorted) { show_hier ($mod, " ", "", ""); } sub show_hier { my $mod = shift; my $indent = shift; my $hier = shift; my $cellname = shift; if (!$cellname) {$hier = $mod->name;} #top modules get the design name else {$hier .= ".$cellname";} #append the cellname printf ("%-45s %s\n", $indent."Module ".$mod->name,$hier); foreach my $sig ($mod->ports_sorted) { printf ($indent." %sput %s\n", $sig->direction, $sig->name); } foreach my $cell ($mod->cells_sorted) { printf ($indent. " Cell %s\n", $cell->name); foreach my $pin ($cell->pins_sorted) { printf ($indent." .%s(%s)\n", $pin->name, $pin->netname); } show_hier ($cell->submod, $indent." ", $hier, $cell->name) if $cell->submod; } } =head1 DESCRIPTION Verilog::Netlist reads and holds interconnect information about a whole design database. See the "Which Package" section of L if you are unsure which parsing package to use for a new application. A Verilog::Netlist is composed of files, which contain the text read from each file. A file may contain modules, which are individual blocks that can be instantiated (designs, in Synopsys terminology.) Modules have ports, which are the interconnection between nets in that module and the outside world. Modules also have nets, (aka signals), which interconnect the logic inside that module. Modules can also instantiate other modules. The instantiation of a module is a Cell. Cells have pins that interconnect the referenced module's pin to a net in the module doing the instantiation. Each of these types, files, modules, ports, nets, cells and pins have a class. For example Verilog::Netlist::Cell has the list of Verilog::Netlist::Pin (s) that interconnect that cell. =head1 FUNCTIONS See also Verilog::Netlist::Subclass for additional accessors and methods. =over 4 =item $netlist->lint Error checks the entire netlist structure. Currently there are only two checks, that modules are bound to instantiations (which is also checked by $netlist->link), and that signals aren't multiply driven. Note that as there is no elaboration you may get false errors about multiple drivers from generate statements that are mutually exclusive. For this reason and the few lint checks you may not want to use this method. Alternatively to avoid pin interconnect checks, set the $netlist->new (...use_vars=>0...) option. =item $netlist->link() Resolves references between the different modules. If link_read=>1 is passed when netlist->new is called (it is by default), undefined modules will be searched for using the Verilog::Getopt package, passed by a reference in the creation of the netlist. To suppress errors in any missing references, set link_read_nonfatal=>1 also. =item $netlist->new Creates a new netlist structure. Pass optional parameters by name, with the following parameters: =over 8 =item implicit_wires_ok => $true_or_false Indicates whether to allow undeclared wires to be used. =item include_open_nonfatal => $true_or_false Indicates that include files that do not exist should be ignored. =item keep_comments => $true_or_false Indicates that comment fields should be preserved and on net declarations into the Vtest::Netlist::Net structures. Otherwise all comments are stripped for speed. =item link_read => $true_or_false Indicates whether or not the parser should automatically search for undefined modules through the "options" object. =item link_read_nonfatal => $true_or_false Indicates that modules that referenced but not found should be ignored, rather than causing an error message. =item logger => object Specify a message handler object to be used for error handling, this class should be a Verilog::Netlist::Logger object, or derived from one. If unspecified, a Verilog::Netlist::Logger local to this netlist will be used. =item options => $opt_object An optional pointer to a Verilog::Getopt object, to be used for locating files. =item parser => $package_name The name of the parser class. Defaults to "Verilog::Netlist::File::Parser". =item preproc => $package_name The name of the preprocessor class. Defaults to "Verilog::Preproc". =item synthesis => $true_or_false With synthesis set, define SYNTHESIS, and ignore text bewteen "ambit", "pragma", "synopsys" or "synthesis" translate_off and translate_on meta comments. Note using metacomments is discouraged as they have led to silicon bugs (versus ifdef SYNTHESIS); see L. =item use_vars => $true_or_false Indicates that signals, variables, and pin interconnect information is needed; set by default. If clear do not read it, nor report lint related pin warnings, which can greatly improve performance. =back =item $netlist->dump Prints debugging information for the entire netlist structure. =back =head1 INTERFACE FUNCTIONS =over 4 =item $netlist->find_interface($name) Returns Verilog::Netlist::Interface matching given name. =item $netlist->interfaces Returns list of Verilog::Netlist::Interface. =item $netlist->interfaces_sorted Returns name sorted list of Verilog::Netlist::Interface. =item $netlist->new_interface Creates a new Verilog::Netlist::Interface. =back =head1 MODULE FUNCTIONS =over 4 =item $netlist->find_module($name) Returns Verilog::Netlist::Module matching given name. =item $netlist->modules Returns list of Verilog::Netlist::Module. =item $netlist->modules_sorted Returns name sorted list of Verilog::Netlist::Module. =item $netlist->modules_sorted_level Returns level sorted list of Verilog::Netlist::Module. Leaf modules will be first, the top most module will be last. =item $netlist->new_module Creates a new Verilog::Netlist::Module. =item $netlist->new_root_module Creates a new Verilog::Netlist::Module for $root, if one doesn't already exist. =item $netlist->top_modules_sorted Returns name sorted list of Verilog::Netlist::Module, only for those modules which have no children and are not unused library cells. =back =head1 FILE FUNCTIONS =over 4 =item $netlist->dependency_write(I) Writes a dependency file for make, listing all input and output files. =item $netlist->defvalue_nowarn (I) Return the value of the specified define or undef. =item $netlist->dependency_in(I) Adds an additional input dependency for dependency_write. =item $netlist->dependency_out(I) Adds an additional output dependency for dependency_write. =item $netlist->delete Delete the netlist, reclaim memory. Unfortunately netlists will not disappear simply with normal garbage collection from leaving of scope due to complications with reference counting and weaking Class::Struct structures; solutions welcome. =item $netlist->files Returns list of Verilog::Netlist::File. =item $netlist->files_sorted Returns a name sorted list of Verilog::Netlist::File. =item $netlist->find_file($name) Returns Verilog::Netlist::File matching given name. =item $netlist->read_file( filename=>$name) Reads the given Verilog file, and returns a Verilog::Netlist::File reference. Generally called as $netlist->read_file. Pass a hash of parameters. Reads the filename=> parameter, parsing all instantiations, ports, and signals, and creating Verilog::Netlist::Module structures. =item $netlist->read_libraries () Read any libraries specified in the options=> argument passed with the netlist constructor. Automatically invoked when netlist linking results in a module that wasn't found, and thus might be inside the libraries. =item $netlist->remove_defines (I) Expand any `defines in the string and return the results. Undefined defines will remain in the returned string. =item $netlist->resolve_filename (I, [I]) Convert a module name to a filename. Optional lookup_type is 'module', 'include', or 'all', to use only module_dirs, incdirs, or both for the lookup. Return undef if not found. =item $self->verilog_text Returns verilog code which represents the netlist. The netlist must be already ->link'ed for this to work correctly. =back =head1 BUGS Cell instantiations without any arguments are not supported, a empty set of parenthesis are required. (Use "cell cell();", not "cell cell;".) Order based pin interconnect is not supported, use name based connections. =head1 DISTRIBUTION Verilog-Perl is part of the L free Verilog EDA software tool suite. The latest version is available from CPAN and from L. Copyright 2000-2016 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. =head1 AUTHORS Wilson Snyder =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L And the LVerilog-Mode package for Emacs. =cut Verilog-Perl-3.418/META.yml0000644000177100017500000000141312654236555015300 0ustar wsnyderwsnyder--- #YAML:1.0 name: Verilog-Perl version: 3.418 version_from: Language.pm abstract: Verilog language utilities and parsing license: perl installdirs: site author: - Wilson Snyder resources: homepage: http://www.veripool.org/verilog-perl bugtracker: http://www.veripool.org/verilog-perl-bugs requires: Pod::Usage: 1.34 Data::Dumper: 1 warnings: 1 build_requires: Digest::SHA: 0 Test: 1 Test::More: 0 Time::HiRes: 1 meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 distribution_type: module generated_by: hand Verilog-Perl-3.418/Makefile.PL0000755000177100017500000001245312654236555016012 0ustar wsnyderwsnyder# DESCRIPTION: Perl ExtUtils: Type 'perl Makefile.PL' to create a Makefile for this package # # Copyright 2000-2016 by Wilson Snyder. This program is free software; # you can redistribute it and/or modify it under the terms of either the GNU # Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. require 5.005; use ExtUtils::MakeMaker; use Carp; use Config; sub MY::postamble { my $out=""; # Note OPTIMIZE is passed from upper makefile, so this code needed there too. # -O2 optimization seems unreasonably slow on nearly every platform. I give up. my $optimize = $Config{optimize}; $optimize =~ s/(^| )-O2( |$)/\1-O\2/g; # pass hardening flags $optimize .= " $ENV{CFLAGS} $ENV{CPPFLAGS}"; $out .= "OPTIMIZE = $optimize\n"; if ($Config{osname} =~ /cygwin/i || $Config{archname} =~ /cygwin/i) { # Cygwin ExtUtils::MakeMaker ignores our LIBS declaration and says # "No library found for -lstdc++". Force it. $out .= "LDLOADLIBS += -lstdc++\n"; # Cygwin: High optimization causes g++ "out of memory" $out .= "OPTIMIZE += -O\n"; } if ($Config{osname} =~ /darwin/i || $Config{archname} =~ /darwin/i) { # MakeMaker wants to create bundles on MacOSX rather than dylibs. We override DLEXT and LDDLFLAGS generated by MakeMaker in this case $out .= "DLEXT = dylib\n"; if ($^V eq '5.16.2') { $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.16.2/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname}); } elsif ($^V eq '5.12.4') { $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.12/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname}); } elsif ($^V eq '5.18.2') { $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.18/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname}); } else { $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/%vd/%s/CORE -lperl -lgcc_eh -L/usr/local/lib\n",$^V,$Config{archname}); } } $out .= "CCFLAGS += -Wall -Wno-unused -Werror\n" if $ENV{VERILATOR_AUTHOR_SITE}; $out .= "CCFLAGS += $ENV{VERILOGPERL_CCFLAGS}\n" if defined $ENV{VERILOGPERL_CCFLAGS}; $out .= "OPTIMIZE += -Wno-unused\n" if $ENV{VERILATOR_AUTHOR_SITE}; # Makefile has another -Wall #$out .= "OPTIMIZE += -O0 -ggdb\n" if $ENV{VERILATOR_AUTHOR_SITE}; print "%Warning: -O0 --gdb on, also FLEX -d on\n"; $out .= "OPTIMIZE += $ENV{VERILOGPERL_CCFLAGS}\n" if defined $ENV{VERILOGPERL_CCFLAGS}; $out .= ' all:: README README: Verilog-Perl.pod -$(RM_RF) $@ pod2text --loose $< > $@ clean:: -$(RM_RF) simv .vpassert test_dir *.tmp dist: maintainer-copy distcheck README ## Maintainer use: preexist: svnorcvs nexists $(DISTNAME)_$(VERSION_SYM) test -s README tag: svnorcvs tag $(DISTNAME)_$(VERSION_SYM) maintainer-diff: svnorcvs diff $(DISTNAME)_$(VERSION_SYM) maintainer-dist: preexist dist tag svnorcvs release $(DISTVNAME).tar.gz maintainer-copy: maintainer-clean:: distclean -$(RM_RF) README Makefile MANIFEST.bak $(MAKEFILE_OLD) */gen ## cppcheck CPPCHECK = cppcheck CPPCHECK_FLAGS = --enable=all --inline-suppr CPPCHECK_CPP = $(wildcard */*.cpp) CPPCHECK_DEP = $(subst .cpp,.cppcheck,$(CPPCHECK_CPP)) cppcheck: $(CPPCHECK_DEP) %.cppcheck: %.cpp $(CPPCHECK) $(CPPCHECK_FLAGS) $< '; return $out; } my $fail; local $! = undef; my $have_gen = -d "Preproc/gen"; `flex --version`; if ($?) { if ($have_gen) { warn "\n-Note: 'flex' must be installed to build from sources\n"; } else { $fail=1; warn "\n%Error: 'flex' must be installed to build\n\n"; } } `bison --version`; if ($?) { if ($have_gen) { warn "\n-Note: 'bison' must be installed to build from sources\n"; } else { $fail=1; warn "\n%Error: 'bison' must be installed to build\n\n"; } } `g++ --version`; if ($?) { $fail=1; warn "\n%Error: 'gcc/g++' must be installed to build\n"; } if ($fail) { if ($ENV{AUTOMATED_TESTING}) { exit(0); } else { die "%Error: Exiting due to above missing dependencies.\n"; } } if (!-r "README" && !-r "Makefile") { warn "-Note: If building from 'git' sources (not from a CPAN tar file),\n" ."-Note: ignore any 'files are missing' below for */gen/ and README:\n"; } WriteMakefile( DISTNAME => 'Verilog-Perl', NAME => 'Verilog::Language', AUTHOR => 'Wilson Snyder ', ABSTRACT => 'Verilog language utilities and parsing', VERSION_FROM => 'Language.pm', NO_META => 1, #OPTIMIZE => '-ggdb', PREREQ_PM => { 'Pod::Usage' => 1.34, 'Data::Dumper' => 1, 'warnings' => 1, #---- Below are really BUILD_REQUIRES, but only newer perls understand that 'Digest::SHA' => 0, 'Test' => 1, 'Test::More' => 0, 'Time::HiRes' => 1, #'Test::Pod' => 1, # Required only for author tests #'Test::Perl::Critic' => 1, # Required only for author tests }, PMLIBDIRS => ['lib', 'Parser', 'Preproc', 'Netlist',], EXE_FILES => [qw( vrename vpassert vppreproc vhier vsplitmodule )], 'clean' => {FILES => qw (test_dir signals.vrename .vpassert simv ),}, 'dist' => {COMPRESS => 'gzip -9f', SUFFIX => '.gz', DIST_DEFAULT => 'README all tardist', }, ); my $mkv = `make --version`; if ($? || $mkv !~ /GNU Make/i) { warn "-Important: Now type 'gmake MAKE=gmake' as this package requires GNU Make\n"; } 1; Verilog-Perl-3.418/Parser/0000755000177100017500000000000012654236646015265 5ustar wsnyderwsnyderVerilog-Perl-3.418/Parser/gen/0000755000177100017500000000000012654236646016036 5ustar wsnyderwsnyderVerilog-Perl-3.418/Parser/gen/flex-10000644000177100017500000060133412654236611017054 0ustar wsnyderwsnyder#line 2 "VParseLex_pretmp.cpp" #line 4 "VParseLex_pretmp.cpp" #define YY_INT_ALIGNED long int /* A lexical scanner generated by flex */ /* %not-for-header */ /* %if-c-only */ /* %if-not-reentrant */ #define yy_create_buffer VParseLex_create_buffer #define yy_delete_buffer VParseLex_delete_buffer #define yy_flex_debug VParseLex_flex_debug #define yy_init_buffer VParseLex_init_buffer #define yy_flush_buffer VParseLex_flush_buffer #define yy_load_buffer_state VParseLex_load_buffer_state #define yy_switch_to_buffer VParseLex_switch_to_buffer #define yyin VParseLexin #define yyleng VParseLexleng #define yylex VParseLexlex #define yylineno VParseLexlineno #define yyout VParseLexout #define yyrestart VParseLexrestart #define yytext VParseLextext #define yywrap VParseLexwrap #define yyalloc VParseLexalloc #define yyrealloc VParseLexrealloc #define yyfree VParseLexfree /* %endif */ /* %endif */ /* %ok-for-header */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* %if-c++-only */ /* %endif */ /* %if-c-only */ /* %endif */ /* %if-c-only */ /* %endif */ /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ /* %if-c-only */ #include #include #include #include /* %endif */ /* %if-tables-serialization */ /* %endif */ /* end standard C headers. */ /* %if-c-or-c++ */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* %endif */ /* %if-c++-only */ /* %endif */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* %not-for-header */ /* Returned upon end-of-file. */ #define YY_NULL 0 /* %ok-for-header */ /* %not-for-header */ /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* %ok-for-header */ /* %if-reentrant */ /* %endif */ /* %if-not-reentrant */ /* %endif */ /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE VParseLexrestart(VParseLexin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif /* %if-not-reentrant */ extern int VParseLexleng; /* %endif */ /* %if-c-only */ /* %if-not-reentrant */ extern FILE *VParseLexin, *VParseLexout; /* %endif */ /* %endif */ #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up VParseLextext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up VParseLextext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { /* %if-c-only */ FILE *yy_input_file; /* %endif */ /* %if-c++-only */ /* %endif */ char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via VParseLexrestart()), so that the user can continue scanning by * just pointing VParseLexin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* %if-c-only Standard (non-C++) definition */ /* %not-for-header */ /* %if-not-reentrant */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* %endif */ /* %ok-for-header */ /* %endif */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* %if-c-only Standard (non-C++) definition */ /* %if-not-reentrant */ /* %not-for-header */ /* yy_hold_char holds the character lost when VParseLextext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int VParseLexleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow VParseLexwrap()'s to do buffer switches * instead of setting up a fresh VParseLexin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; /* %ok-for-header */ /* %endif */ void VParseLexrestart (FILE *input_file ); void VParseLex_switch_to_buffer (YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE VParseLex_create_buffer (FILE *file,int size ); void VParseLex_delete_buffer (YY_BUFFER_STATE b ); void VParseLex_flush_buffer (YY_BUFFER_STATE b ); void VParseLexpush_buffer_state (YY_BUFFER_STATE new_buffer ); void VParseLexpop_buffer_state (void ); static void VParseLexensure_buffer_stack (void ); static void VParseLex_load_buffer_state (void ); static void VParseLex_init_buffer (YY_BUFFER_STATE b,FILE *file ); #define YY_FLUSH_BUFFER VParseLex_flush_buffer(YY_CURRENT_BUFFER ) YY_BUFFER_STATE VParseLex_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE VParseLex_scan_string (yyconst char *yy_str ); YY_BUFFER_STATE VParseLex_scan_bytes (yyconst char *bytes,int len ); /* %endif */ void *VParseLexalloc (yy_size_t ); void *VParseLexrealloc (void *,yy_size_t ); void VParseLexfree (void * ); #define yy_new_buffer VParseLex_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ VParseLexensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ VParseLex_create_buffer(VParseLexin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ VParseLexensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ VParseLex_create_buffer(VParseLexin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* %% [1.0] VParseLextext/VParseLexin/VParseLexout/yy_state_type/VParseLexlineno etc. def's & init go here */ /* Begin user sect3 */ #define FLEX_DEBUG typedef unsigned char YY_CHAR; FILE *VParseLexin = (FILE *) 0, *VParseLexout = (FILE *) 0; typedef int yy_state_type; extern int VParseLexlineno; int VParseLexlineno = 1; extern char *VParseLextext; #define yytext_ptr VParseLextext /* %if-c-only Standard (non-C++) definition */ static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); static void yy_fatal_error (yyconst char msg[] ); /* %endif */ /* Done after the current pattern has been matched and before the * corresponding action - sets up VParseLextext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ /* %% [2.0] code to fiddle VParseLextext and VParseLexleng for yymore() goes here \ */\ (yytext_ptr) -= (yy_more_len); \ VParseLexleng = (size_t) (yy_cp - (yytext_ptr)); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ /* %% [3.0] code to copy yytext_ptr to VParseLextext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ #define YY_NUM_RULES 418 #define YY_END_OF_BUFFER 419 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int32_t yy_accept[1946] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 1, 416, 2, 3, 2, 261, 347, 262, 263, 264, 265, 416, 266, 267, 268, 269, 270, 271, 272, 273, 349, 274, 275, 276, 277, 278, 279, 280, 345, 281, 416, 282, 283, 416, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 259, 284, 260, 285, 268, 269, 271, 272, 276, 278, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 261, 262, 263, 264, 265, 310, 268, 269, 271, 273, 274, 276, 277, 278, 280, 281, 283, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 284, 262, 276, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 358, 353, 358, 356, 357, 358, 371, 368, 371, 371, 370, 363, 360, 359, 362, 366, 364, 366, 366, 417, 2, 3, 2, 293, 0, 346, 258, 286, 348, 348, 0, 0, 302, 300, 415, 414, 0, 0, 0, 349, 0, 349, 0, 0, 0, 0, 352, 0, 290, 288, 292, 301, 289, 291, 345, 344, 296, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 32, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 44, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 287, 298, 297, 299, 306, 307, 308, 309, 290, 291, 345, 345, 345, 345, 345, 345, 32, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 293, 329, 258, 258, 258, 258, 258, 258, 320, 321, 311, 318, 314, 316, 315, 317, 300, 319, 0, 331, 332, 290, 292, 291, 330, 0, 336, 0, 0, 337, 323, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 159, 345, 345, 345, 345, 32, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 0, 322, 0, 0, 0, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 353, 0, 357, 355, 354, 355, 368, 0, 369, 370, 359, 359, 361, 362, 367, 0, 295, 258, 303, 348, 348, 0, 0, 0, 372, 0, 414, 0, 0, 348, 348, 348, 348, 350, 0, 351, 352, 0, 294, 343, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 345, 5, 345, 345, 8, 345, 345, 345, 345, 345, 345, 345, 18, 345, 27, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 42, 43, 345, 345, 345, 345, 345, 345, 345, 345, 51, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 62, 345, 345, 345, 345, 345, 345, 73, 345, 75, 304, 305, 345, 345, 345, 345, 18, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 126, 345, 313, 258, 258, 258, 258, 258, 258, 328, 333, 304, 324, 312, 325, 305, 0, 339, 338, 345, 345, 345, 345, 345, 144, 345, 345, 345, 345, 345, 345, 345, 345, 345, 18, 345, 345, 345, 345, 345, 27, 177, 345, 345, 345, 345, 182, 345, 345, 345, 345, 345, 345, 192, 345, 345, 345, 345, 345, 345, 205, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 224, 345, 345, 345, 345, 345, 334, 335, 340, 341, 342, 345, 345, 18, 345, 345, 345, 237, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 182, 345, 345, 0, 0, 372, 372, 348, 348, 348, 348, 348, 0, 0, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 345, 345, 345, 345, 9, 78, 345, 345, 345, 345, 16, 17, 345, 345, 345, 345, 345, 345, 345, 345, 345, 30, 345, 345, 345, 345, 345, 345, 37, 345, 345, 345, 345, 40, 345, 83, 345, 345, 345, 86, 345, 345, 345, 345, 49, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 60, 61, 100, 63, 64, 345, 345, 345, 345, 69, 70, 345, 345, 72, 74, 345, 117, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 258, 258, 258, 258, 258, 258, 326, 327, 345, 345, 345, 345, 345, 141, 142, 345, 146, 345, 345, 345, 345, 345, 345, 345, 158, 345, 345, 345, 345, 345, 168, 345, 345, 345, 345, 345, 345, 30, 345, 345, 345, 345, 345, 37, 345, 345, 345, 345, 345, 193, 345, 345, 345, 345, 345, 200, 201, 345, 345, 345, 345, 345, 345, 345, 345, 345, 216, 345, 61, 220, 345, 345, 345, 226, 69, 345, 229, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 253, 345, 345, 345, 257, 0, 0, 350, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 345, 345, 7, 345, 10, 11, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 26, 28, 345, 345, 345, 345, 34, 35, 345, 81, 345, 345, 345, 345, 345, 345, 345, 345, 345, 87, 88, 345, 345, 91, 345, 345, 345, 92, 93, 94, 345, 97, 345, 345, 345, 345, 59, 345, 345, 66, 345, 345, 103, 104, 71, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 127, 258, 258, 130, 131, 132, 258, 134, 345, 345, 345, 345, 345, 145, 345, 148, 345, 150, 345, 345, 154, 157, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 173, 345, 345, 345, 345, 345, 345, 345, 345, 345, 187, 188, 345, 345, 345, 345, 345, 345, 345, 345, 345, 202, 345, 345, 345, 345, 210, 345, 345, 345, 214, 345, 345, 345, 345, 345, 222, 345, 345, 345, 345, 345, 345, 345, 345, 26, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 250, 345, 345, 345, 345, 0, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 0, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 4, 6, 76, 77, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 79, 80, 345, 345, 345, 82, 39, 345, 84, 85, 45, 345, 345, 345, 345, 90, 345, 345, 53, 345, 345, 345, 345, 345, 345, 345, 65, 67, 345, 345, 118, 119, 345, 345, 345, 108, 109, 121, 345, 345, 345, 345, 345, 345, 345, 345, 115, 345, 128, 129, 258, 4, 138, 139, 140, 143, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 169, 170, 345, 172, 345, 345, 345, 345, 345, 180, 181, 345, 345, 345, 345, 345, 345, 345, 345, 195, 345, 345, 345, 345, 345, 345, 206, 345, 345, 345, 211, 212, 213, 215, 345, 345, 345, 345, 223, 345, 345, 345, 230, 345, 345, 345, 345, 235, 345, 345, 345, 345, 345, 345, 345, 345, 246, 345, 345, 223, 345, 345, 345, 345, 345, 0, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 388, 0, 0, 389, 0, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 345, 13, 345, 15, 19, 345, 345, 345, 345, 345, 25, 29, 345, 33, 36, 345, 41, 345, 47, 345, 345, 345, 52, 345, 345, 55, 345, 98, 99, 57, 58, 101, 102, 345, 345, 345, 345, 345, 122, 345, 124, 125, 345, 345, 345, 345, 345, 258, 345, 147, 345, 345, 152, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 171, 345, 175, 345, 345, 345, 345, 345, 345, 345, 189, 190, 191, 194, 345, 197, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 221, 225, 345, 345, 345, 232, 345, 345, 236, 345, 345, 345, 345, 345, 345, 244, 345, 345, 249, 345, 252, 345, 345, 256, 0, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 0, 413, 413, 413, 413, 413, 413, 397, 398, 413, 413, 413, 413, 12, 14, 345, 345, 345, 345, 24, 31, 345, 345, 345, 89, 50, 95, 96, 54, 345, 68, 345, 345, 345, 107, 123, 345, 345, 345, 345, 116, 133, 345, 345, 345, 149, 345, 153, 345, 345, 160, 345, 162, 345, 345, 345, 345, 345, 345, 176, 345, 345, 345, 345, 185, 345, 196, 198, 345, 203, 345, 207, 208, 345, 345, 345, 219, 345, 228, 345, 345, 345, 238, 345, 240, 241, 345, 345, 345, 345, 345, 345, 345, 345, 0, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 397, 397, 413, 413, 413, 402, 413, 413, 345, 21, 345, 345, 345, 46, 48, 56, 105, 120, 345, 345, 345, 345, 345, 345, 136, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 183, 184, 186, 199, 345, 209, 345, 345, 345, 231, 345, 345, 239, 345, 345, 345, 345, 345, 345, 345, 345, 0, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 399, 413, 413, 413, 413, 345, 345, 23, 345, 345, 110, 345, 345, 345, 345, 345, 151, 155, 156, 345, 345, 164, 165, 345, 345, 345, 345, 345, 345, 217, 345, 227, 233, 234, 345, 243, 345, 345, 345, 251, 254, 345, 0, 373, 413, 413, 375, 413, 413, 413, 413, 413, 413, 413, 413, 386, 413, 413, 413, 413, 413, 413, 413, 396, 413, 413, 413, 404, 20, 345, 38, 106, 345, 345, 345, 135, 345, 161, 345, 166, 167, 174, 178, 345, 345, 345, 345, 345, 345, 345, 345, 0, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 404, 404, 22, 345, 345, 345, 137, 163, 179, 204, 345, 242, 245, 345, 345, 255, 0, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 412, 413, 413, 390, 413, 413, 413, 413, 413, 413, 413, 413, 345, 345, 114, 218, 345, 345, 365, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 385, 413, 413, 413, 413, 413, 413, 413, 413, 413, 345, 345, 345, 247, 248, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 111, 345, 345, 413, 0, 0, 413, 413, 413, 413, 380, 381, 382, 413, 413, 413, 413, 413, 413, 413, 413, 413, 401, 403, 345, 345, 413, 0, 413, 377, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 400, 345, 345, 413, 0, 0, 413, 377, 413, 413, 413, 384, 387, 413, 413, 393, 394, 413, 345, 113, 413, 0, 0, 413, 413, 413, 383, 413, 392, 413, 112, 413, 0, 0, 376, 413, 413, 391, 395, 413, 0, 0, 376, 376, 413, 413, 374, 0, 0, 0, 413, 413, 0, 0, 0, 413, 379, 0, 0, 0, 0, 413, 0, 0, 0, 0, 0, 0, 378, 405, 406, 0, 408, 409, 410, 411, 378, 378, 0, 0, 0, 0, 0, 0, 0, 0, 407, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 40, 40, 41, 39, 42, 43, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 44, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int32_t yy_meta[81] = { 0, 1, 2, 3, 4, 4, 2, 1, 1, 1, 5, 1, 1, 1, 1, 1, 6, 7, 1, 7, 1, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 1, 1, 1, 1, 1, 9, 1, 10, 10, 10, 11, 12, 10, 1, 13, 1, 1, 14, 1, 10, 10, 10, 10, 10, 10, 11, 12, 11, 11, 11, 11, 11, 11, 12, 11, 11, 11, 12, 11, 11, 11, 11, 10, 11, 10, 1, 1, 1, 1 } ; static yyconst flex_int32_t yy_base[1976] = { 0, 0, 0, 0, 0, 65, 0, 2979, 2978, 130, 0, 200, 265, 330, 395, 468, 0, 548, 0, 628, 0, 708, 0, 0, 0, 3048, 3051, 3051, 84, 3051, 89, 3012, 3038, 3051, 0, 3051, 3033, 767, 3028, 3051, 3007, 3051, 3051, 3006, 3051, 81, 842, 3051, 3051, 69, 70, 72, 3051, 3051, 0, 3051, 0, 3051, 2961, 159, 48, 43, 58, 28, 61, 61, 2981, 74, 2974, 2987, 93, 104, 82, 109, 167, 173, 120, 2982, 187, 92, 3051, 2958, 3051, 192, 171, 3003, 64, 3018, 171, 180, 185, 212, 136, 218, 2978, 168, 227, 228, 233, 244, 166, 212, 2997, 3022, 276, 2995, 253, 2952, 225, 277, 318, 284, 320, 291, 307, 310, 2990, 355, 93, 259, 307, 351, 308, 343, 353, 364, 2962, 371, 314, 380, 390, 742, 822, 374, 244, 750, 772, 361, 126, 376, 764, 791, 822, 108, 853, 863, 868, 874, 743, 727, 890, 890, 905, 825, 3051, 3051, 108, 3051, 0, 149, 3051, 3051, 214, 3011, 0, 3051, 3051, 290, 0, 3051, 3051, 0, 2970, 3051, 897, 3051, 959, 2989, 3015, 3051, 0, 3010, 3051, 796, 2952, 969, 3051, 3051, 3051, 0, 876, 976, 961, 0, 231, 1024, 2951, 2950, 2949, 2948, 2946, 2946, 3051, 3051, 2979, 3051, 3051, 3051, 0, 3007, 3051, 0, 287, 2957, 2956, 329, 312, 2946, 2950, 2943, 283, 2952, 2935, 2946, 2931, 2949, 2933, 2944, 2944, 2930, 2933, 409, 2928, 2939, 2926, 2940, 2938, 2924, 2927, 2933, 0, 934, 2930, 2920, 2934, 2932, 2931, 2920, 2926, 2917, 219, 0, 2911, 2912, 2914, 2909, 2918, 2914, 2912, 945, 2911, 2910, 2904, 2920, 2919, 2914, 2900, 2901, 339, 2903, 207, 2912, 403, 2913, 2904, 2894, 2893, 2895, 2891, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 2924, 2921, 2886, 2893, 2890, 778, 2899, 2888, 2887, 955, 2898, 2896, 770, 2886, 2882, 2889, 2876, 2889, 2884, 333, 3051, 2874, 2890, 2876, 2874, 2874, 2886, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 2900, 3051, 0, 3051, 3051, 403, 779, 768, 3051, 1054, 3051, 930, 2899, 3051, 3051, 848, 2865, 794, 370, 2878, 2862, 2880, 861, 788, 2865, 2860, 0, 866, 791, 930, 2860, 886, 2863, 2864, 2859, 973, 2865, 948, 927, 2869, 320, 2860, 890, 865, 889, 2857, 1006, 2853, 2854, 2856, 955, 2851, 1009, 388, 2853, 2849, 900, 2846, 2845, 2853, 799, 965, 2875, 2874, 2900, 2899, 2871, 2853, 958, 1010, 2850, 2839, 2837, 2832, 1010, 1031, 1035, 1024, 2837, 1010, 2849, 2833, 1043, 1037, 1042, 3051, 819, 0, 3051, 3051, 976, 3051, 1100, 3051, 0, 1001, 1015, 3051, 0, 0, 2834, 3051, 0, 3051, 1112, 1114, 1119, 1124, 1129, 0, 0, 0, 1134, 1135, 1038, 1136, 1141, 1106, 1183, 1233, 1243, 3051, 2842, 3051, 3051, 2843, 2825, 2837, 2831, 1089, 2823, 1023, 2825, 2828, 2825, 1111, 2820, 1102, 1085, 2821, 2823, 2834, 0, 2825, 2824, 2823, 2826, 2811, 2810, 952, 2827, 2822, 2821, 1128, 2811, 1102, 2821, 2815, 2802, 2800, 2799, 2814, 2804, 2810, 2798, 2806, 2793, 2809, 2807, 2792, 0, 2801, 2793, 2807, 2788, 2801, 2792, 2792, 2788, 2790, 0, 2796, 2795, 2784, 2783, 2796, 2784, 2783, 2791, 2778, 2776, 2779, 2779, 2784, 2774, 1150, 2767, 2766, 2781, 2773, 2771, 2777, 0, 2763, 0, 3051, 3051, 2765, 2767, 2772, 2768, 1164, 1097, 2761, 1114, 2755, 1088, 2773, 2765, 1121, 2749, 2757, 2761, 0, 2751, 3051, 2750, 2747, 2760, 2750, 2755, 2745, 3051, 3051, 2777, 3051, 3051, 3051, 2776, 1238, 3051, 3051, 2759, 2758, 1164, 2743, 1162, 0, 2756, 2751, 2741, 2735, 2750, 1181, 2747, 2732, 1171, 1224, 2737, 1030, 2744, 2747, 2728, 1223, 0, 2731, 2740, 2729, 1126, 2738, 2728, 2740, 2731, 2732, 2735, 1182, 0, 2725, 2725, 1163, 1229, 2730, 2730, 0, 2712, 2711, 1223, 2709, 2710, 1238, 1170, 2722, 2709, 2712, 2721, 2720, 1233, 0, 2704, 2719, 2702, 2717, 2712, 3051, 3051, 3051, 3051, 3051, 2714, 2715, 1248, 2703, 2714, 1248, 0, 2695, 2709, 2693, 2700, 2689, 2705, 2695, 1256, 2705, 1241, 1170, 2696, 1254, 2701, 2685, 2684, 1317, 2699, 0, 0, 0, 0, 2683, 1322, 1327, 1315, 2685, 2695, 2684, 2689, 2685, 2695, 2694, 2693, 2691, 1282, 2691, 2682, 2685, 2686, 2664, 2682, 2665, 2671, 2664, 2676, 2662, 2666, 2675, 2663, 2673, 2652, 2669, 2661, 2668, 1262, 0, 2654, 2651, 2670, 2668, 0, 0, 2668, 2647, 2652, 2648, 2649, 2663, 2643, 2657, 2639, 0, 2640, 2633, 2649, 2637, 2636, 2648, 0, 2649, 2638, 2631, 2639, 0, 2646, 0, 2643, 2627, 2634, 0, 2642, 2636, 1317, 2625, 2623, 2641, 2640, 2621, 2620, 2624, 2636, 2624, 1136, 2621, 2622, 2628, 0, 0, 2623, 0, 0, 2617, 2612, 2624, 2613, 0, 0, 944, 2622, 0, 0, 2613, 0, 2616, 2617, 1224, 2618, 2604, 2620, 2606, 2610, 2597, 2616, 2607, 2614, 2602, 2598, 2607, 2608, 2605, 2602, 2603, 2592, 2605, 2590, 2584, 2583, 2588, 3051, 3051, 2582, 2575, 2581, 2585, 2579, 0, 2581, 2584, 0, 2590, 2574, 2581, 2571, 1282, 2572, 2570, 0, 1261, 1287, 2574, 1292, 1290, 0, 2584, 2568, 1282, 2573, 2564, 125, 2562, 2540, 2545, 2532, 2545, 1290, 2549, 2534, 2530, 2510, 2493, 2485, 0, 1298, 2481, 2480, 2492, 2488, 0, 1298, 2474, 2486, 2467, 2481, 2476, 2470, 2468, 2452, 2464, 0, 2445, 1286, 2458, 2446, 2438, 2428, 0, 2443, 2438, 2431, 2423, 2427, 1303, 2414, 2431, 2419, 2407, 2423, 2407, 2401, 2406, 2379, 2382, 2387, 2401, 2378, 2382, 2377, 1340, 1311, 1307, 2367, 0, 2372, 1354, 1367, 2375, 2381, 2371, 2377, 2356, 2350, 2372, 2359, 2356, 2359, 2342, 2333, 2329, 1400, 2336, 2306, 2305, 2299, 2308, 2296, 2285, 2292, 2272, 2270, 2270, 2268, 2265, 2266, 0, 1350, 0, 0, 2270, 2266, 2259, 2262, 226, 292, 346, 364, 389, 1317, 0, 0, 739, 845, 1377, 944, 0, 0, 1010, 0, 1056, 1098, 1134, 1222, 1385, 1218, 1247, 1287, 1289, 0, 0, 1309, 1321, 0, 1342, 1340, 1340, 0, 0, 1352, 1344, 0, 1357, 1363, 1358, 1342, 0, 1362, 1365, 0, 1363, 1353, 0, 0, 0, 1371, 1366, 1360, 1361, 1362, 1376, 1360, 1374, 1362, 1377, 1368, 1364, 1366, 1369, 1363, 1368, 1387, 1385, 1376, 0, 1373, 1380, 0, 0, 0, 1384, 0, 1375, 1375, 1391, 1392, 1392, 0, 1387, 0, 1391, 1383, 1378, 1389, 1397, 0, 1404, 1391, 1387, 1405, 1400, 1393, 1391, 1392, 1410, 1402, 0, 1418, 1415, 1405, 1416, 1421, 1403, 1419, 1419, 1425, 1411, 0, 1414, 1424, 1412, 1424, 1428, 1424, 1433, 1417, 1433, 1436, 1435, 1427, 1428, 1434, 0, 1441, 1438, 1426, 0, 1443, 1441, 1431, 1436, 1446, 0, 1448, 1453, 1440, 1455, 1443, 1438, 1454, 1455, 1440, 1450, 1458, 1455, 1445, 1457, 1466, 1454, 1449, 1461, 1464, 1471, 1468, 1475, 1470, 1463, 1474, 1462, 1461, 1476, 1458, 1484, 1479, 1473, 1487, 1475, 1483, 1485, 1479, 1477, 1490, 1490, 1544, 1496, 1501, 1488, 1488, 1490, 1491, 1506, 1505, 1504, 1509, 1506, 1509, 0, 0, 0, 0, 1506, 1494, 1514, 1511, 1512, 1515, 1498, 1507, 1518, 1510, 1512, 1506, 1510, 0, 0, 1514, 1509, 1513, 0, 0, 1524, 0, 0, 0, 1510, 1526, 1523, 1510, 0, 1521, 1530, 0, 1530, 1532, 1513, 1521, 1568, 1570, 1572, 0, 0, 1541, 1527, 0, 0, 1542, 1544, 1530, 0, 0, 0, 1546, 1549, 1533, 1529, 1554, 1553, 1537, 1544, 0, 1554, 0, 0, 1546, 1562, 0, 0, 0, 0, 1557, 1549, 1563, 1545, 1545, 1549, 1553, 1550, 1567, 1550, 1567, 1562, 1567, 1554, 0, 0, 1557, 0, 1564, 1570, 1570, 1581, 1569, 0, 0, 1581, 1579, 1571, 1571, 1567, 1569, 1569, 1585, 0, 1571, 1579, 1573, 1574, 1576, 1579, 0, 1594, 1584, 1594, 0, 0, 0, 0, 1592, 1596, 1593, 1597, 0, 1592, 1587, 1588, 0, 1608, 1590, 1606, 1609, 0, 1592, 1599, 1614, 1611, 1590, 1596, 1597, 1606, 1647, 1618, 1617, 1651, 1601, 1621, 1621, 1612, 1623, 1614, 1612, 1615, 1621, 1627, 1614, 1622, 1631, 1638, 1613, 1627, 1620, 1642, 0, 1689, 1693, 3051, 1698, 1631, 1641, 1634, 1639, 1644, 1654, 1708, 1641, 1666, 1654, 1648, 1667, 1655, 0, 1657, 0, 0, 1651, 1660, 1664, 1665, 1670, 0, 0, 1662, 0, 0, 1673, 0, 1673, 0, 1657, 1666, 1676, 0, 1710, 1680, 0, 1684, 0, 0, 0, 0, 0, 0, 1682, 1678, 1679, 1671, 1685, 0, 1686, 0, 0, 1674, 1692, 1669, 1692, 1692, 1690, 1695, 0, 1692, 1691, 0, 1697, 1688, 1695, 1686, 1695, 1692, 1691, 1709, 1693, 1707, 1708, 0, 1713, 0, 1701, 1714, 1718, 1715, 1716, 1695, 1707, 0, 0, 0, 0, 1697, 0, 1698, 1719, 1720, 1705, 1722, 1708, 1728, 1715, 1728, 1712, 0, 0, 1729, 1730, 1720, 0, 1725, 1725, 0, 1733, 1724, 1720, 1722, 1721, 1734, 1745, 1742, 1736, 0, 1738, 0, 1734, 1735, 0, 1730, 1750, 1751, 1748, 1745, 1756, 1741, 1758, 1742, 1736, 1756, 1756, 1740, 1810, 1759, 1762, 1762, 1763, 1755, 1752, 1819, 1767, 1769, 1765, 1759, 1767, 0, 0, 1771, 1776, 1762, 1778, 0, 0, 1764, 1768, 1782, 0, 0, 0, 0, 0, 1775, 0, 1786, 1783, 1790, 0, 0, 1791, 1779, 1782, 1790, 0, 0, 1781, 1791, 1797, 0, 1785, 0, 1779, 1787, 0, 1793, 0, 1797, 1797, 1804, 1788, 1793, 1788, 0, 1800, 1808, 1806, 1792, 0, 1808, 0, 0, 1810, 0, 1810, 0, 0, 1804, 1796, 1809, 0, 1814, 0, 1806, 1816, 1810, 0, 1809, 0, 0, 1823, 1812, 1803, 1822, 1823, 1809, 1810, 1817, 1827, 1813, 1820, 1810, 1822, 1833, 1834, 1823, 1825, 1826, 1837, 1840, 1839, 1827, 1847, 1849, 1830, 1845, 1848, 1897, 1902, 1851, 1858, 1855, 0, 1862, 1857, 1848, 0, 1855, 1840, 1854, 0, 0, 0, 0, 0, 1847, 1855, 1866, 1865, 1859, 1859, 0, 1853, 1854, 1859, 1856, 1863, 1877, 1874, 1867, 1861, 1879, 1880, 1870, 1876, 0, 0, 0, 0, 1872, 0, 1867, 1869, 1871, 0, 1872, 1866, 0, 1880, 1888, 1885, 1879, 1893, 1889, 1879, 1894, 1897, 1896, 1898, 1880, 1899, 1900, 1901, 1889, 1903, 1894, 1892, 1893, 1906, 1893, 1911, 1914, 1894, 1910, 1899, 1916, 1915, 0, 1901, 1902, 1917, 1973, 1912, 1908, 0, 1926, 1927, 0, 1928, 1935, 1923, 1934, 1934, 0, 0, 0, 1931, 1936, 0, 0, 1915, 1936, 1934, 1924, 1930, 1942, 0, 1937, 0, 0, 0, 1935, 0, 1928, 1929, 1930, 0, 0, 1948, 1932, 0, 1954, 1939, 0, 1952, 1936, 1948, 1959, 1941, 1940, 1957, 1953, 0, 1943, 1944, 1960, 1965, 1962, 1969, 1949, 0, 1965, 1957, 1971, 2021, 0, 1969, 0, 0, 1966, 1964, 1975, 0, 1973, 0, 1977, 0, 0, 0, 0, 1964, 1979, 1970, 1961, 1979, 1989, 1990, 1970, 1986, 1970, 1975, 1993, 1975, 1978, 1993, 1978, 1993, 1981, 1987, 1987, 1998, 2001, 1985, 1986, 2001, 2003, 1996, 2010, 1991, 2058, 2066, 0, 2003, 2002, 2013, 0, 0, 0, 0, 2009, 0, 0, 2009, 2010, 0, 2022, 2022, 2024, 2004, 2005, 2026, 2023, 2032, 2020, 2030, 2030, 2036, 0, 2033, 2021, 0, 2020, 2036, 2028, 2042, 2040, 2044, 2033, 2035, 2043, 2045, 0, 0, 2037, 2038, 3051, 2050, 2035, 2056, 2040, 2050, 2039, 2039, 2051, 2043, 2061, 2042, 0, 2050, 2050, 2052, 2066, 2047, 2070, 2057, 2066, 2052, 2069, 2069, 2053, 0, 0, 2056, 2125, 2058, 2074, 2081, 2062, 2076, 2065, 2071, 2066, 2076, 2084, 2072, 2090, 2079, 2081, 2090, 2090, 2077, 2078, 0, 2078, 2094, 2085, 2149, 2129, 2094, 2154, 2085, 2093, 0, 0, 0, 2100, 2093, 2094, 2101, 2103, 2112, 2098, 2101, 2101, 0, 0, 2116, 2108, 2105, 2149, 2112, 2176, 2106, 2118, 2113, 2115, 2116, 2131, 2132, 2119, 2120, 2131, 0, 2138, 2122, 2129, 2166, 2173, 2141, 2195, 2130, 2150, 2134, 0, 0, 2134, 2136, 0, 0, 2134, 2137, 0, 2153, 2183, 2188, 2209, 2157, 2145, 0, 2148, 0, 2163, 0, 2149, 2201, 2202, 2220, 2159, 2157, 0, 0, 2159, 2206, 2207, 2227, 2231, 2177, 2183, 0, 2208, 2218, 2219, 2172, 2189, 2213, 2223, 2224, 2190, 0, 2222, 2227, 2224, 2228, 2254, 2245, 2249, 2253, 2254, 2255, 2256, 2265, 3051, 3051, 2201, 3051, 3051, 3051, 3051, 2261, 2270, 2208, 2224, 2213, 2215, 2224, 2222, 2225, 2275, 3051, 3051, 2283, 2297, 2311, 2321, 2331, 2345, 2352, 2359, 2373, 2380, 2394, 2401, 2408, 2418, 2431, 2444, 2458, 2471, 2479, 2493, 2503, 2517, 2530, 2538, 2552, 2566, 2580, 2593, 2605, 2619 } ; static yyconst flex_int32_t yy_def[1976] = { 0, 1946, 1946, 1945, 3, 3, 5, 5, 5, 5, 9, 9, 9, 9, 9, 1945, 15, 1945, 17, 1945, 19, 1945, 21, 1947, 1947, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1948, 1945, 1949, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1950, 1945, 1951, 1945, 1945, 1952, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1945, 1949, 1945, 1945, 37, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1945, 1945, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 132, 1950, 1950, 1950, 1950, 132, 1945, 1945, 1945, 1945, 1953, 1954, 1945, 1945, 1945, 1945, 1955, 1945, 1945, 1956, 1957, 1945, 1945, 1958, 1945, 1945, 1945, 1945, 1945, 1945, 1948, 1945, 1959, 1945, 1945, 1960, 37, 1961, 1945, 1945, 1945, 1962, 1945, 1963, 1945, 46, 1964, 46, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1950, 1951, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1945, 1959, 1959, 1959, 1959, 1959, 1959, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1965, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1945, 1945, 1945, 1945, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1945, 1953, 1945, 1945, 1945, 1945, 1945, 1945, 1955, 1956, 1956, 1945, 1957, 1958, 1945, 1945, 1959, 1945, 1960, 1960, 1961, 1961, 1961, 1966, 1967, 1962, 1963, 1963, 435, 1968, 1968, 435, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1945, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1959, 1959, 1959, 1959, 1959, 1959, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1945, 1945, 1945, 1945, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1945, 1966, 1967, 435, 435, 434, 1968, 1968, 1969, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1959, 1959, 1959, 1959, 1959, 1959, 1945, 1945, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1945, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1959, 1959, 1959, 1959, 1959, 1959, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1970, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1959, 1959, 1959, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1970, 1970, 1945, 1970, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1959, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1971, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1959, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1971, 1971, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1972, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1972, 1972, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1950, 1950, 1950, 1950, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1950, 1950, 1950, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1950, 1952, 1945, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1952, 1945, 1952, 1973, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1952, 1945, 1945, 1952, 1973, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1950, 1952, 1945, 1945, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1950, 1952, 1945, 1945, 1974, 1952, 1952, 1952, 1952, 1952, 1945, 1945, 1974, 1974, 1952, 1952, 1952, 1945, 1945, 1945, 1952, 1952, 1945, 1945, 1945, 1952, 1952, 1945, 1945, 1945, 1945, 1952, 1945, 1945, 1945, 1945, 1945, 1945, 1975, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1975, 1975, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 0, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945 } ; static yyconst flex_int32_t yy_nxt[3132] = { 0, 27, 28, 29, 28, 30, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 54, 54, 54, 54, 54, 55, 56, 57, 58, 54, 59, 60, 61, 62, 63, 64, 65, 54, 66, 67, 68, 54, 69, 70, 71, 72, 73, 54, 74, 75, 76, 54, 77, 78, 79, 54, 54, 80, 81, 82, 83, 84, 85, 231, 86, 87, 174, 232, 174, 174, 174, 174, 175, 174, 176, 174, 285, 188, 227, 88, 187, 89, 189, 202, 203, 204, 205, 206, 207, 229, 224, 407, 225, 408, 228, 233, 90, 226, 91, 92, 93, 230, 94, 234, 95, 235, 237, 96, 336, 97, 240, 98, 238, 236, 99, 307, 100, 102, 241, 103, 104, 105, 106, 107, 244, 386, 108, 109, 245, 110, 251, 111, 411, 252, 412, 247, 277, 278, 246, 248, 253, 387, 112, 294, 113, 114, 115, 249, 116, 250, 393, 268, 254, 210, 255, 117, 1023, 256, 118, 269, 257, 119, 120, 121, 122, 123, 124, 283, 270, 125, 126, 292, 127, 128, 129, 232, 130, 927, 131, 132, 133, 134, 135, 136, 280, 287, 203, 186, 137, 138, 212, 213, 214, 215, 216, 206, 288, 413, 217, 414, 258, 218, 259, 219, 295, 220, 263, 221, 222, 223, 303, 260, 296, 261, 139, 304, 264, 262, 272, 265, 281, 283, 273, 266, 267, 274, 275, 224, 441, 225, 441, 140, 276, 141, 226, 142, 289, 143, 516, 144, 317, 186, 145, 229, 146, 181, 517, 290, 147, 148, 282, 149, 233, 150, 138, 230, 303, 291, 243, 247, 234, 304, 293, 248, 253, 305, 297, 492, 315, 493, 236, 249, 298, 299, 318, 1119, 254, 263, 255, 139, 188, 256, 301, 302, 300, 189, 418, 264, 378, 284, 265, 419, 319, 304, 266, 267, 140, 305, 141, 323, 142, 337, 143, 225, 144, 327, 203, 145, 338, 146, 289, 308, 309, 147, 148, 310, 149, 320, 150, 138, 447, 324, 328, 205, 311, 206, 329, 312, 458, 313, 285, 459, 325, 321, 322, 326, 1120, 331, 448, 331, 331, 331, 339, 292, 139, 360, 340, 347, 423, 245, 547, 332, 333, 348, 334, 341, 453, 490, 228, 361, 384, 140, 342, 141, 451, 142, 454, 143, 452, 151, 335, 513, 145, 598, 152, 388, 385, 233, 147, 153, 1121, 149, 229, 150, 138, 234, 290, 349, 514, 343, 327, 203, 351, 344, 230, 236, 345, 350, 352, 346, 353, 354, 243, 1122, 238, 374, 355, 356, 357, 139, 297, 247, 375, 376, 568, 362, 359, 556, 557, 279, 569, 364, 270, 249, 1123, 299, 140, 614, 141, 377, 142, 363, 143, 254, 151, 255, 615, 145, 365, 152, 470, 366, 519, 147, 153, 471, 149, 520, 150, 154, 154, 155, 154, 156, 154, 154, 157, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 154, 154, 154, 154, 154, 154, 154, 158, 158, 158, 158, 158, 158, 154, 159, 154, 154, 158, 154, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 154, 154, 154, 154, 160, 160, 161, 160, 162, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 163, 160, 160, 160, 160, 160, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 160, 160, 160, 160, 160, 160, 160, 164, 164, 164, 164, 164, 164, 160, 160, 160, 160, 164, 160, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 160, 160, 160, 160, 165, 165, 166, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 167, 165, 165, 165, 165, 165, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 165, 165, 165, 165, 165, 165, 165, 168, 168, 168, 168, 168, 168, 165, 165, 165, 165, 168, 165, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 165, 165, 165, 165, 169, 169, 170, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 169, 169, 169, 169, 169, 169, 169, 171, 171, 171, 171, 171, 171, 169, 169, 169, 169, 171, 172, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 169, 169, 169, 169, 182, 182, 401, 398, 367, 1126, 258, 304, 368, 426, 426, 305, 379, 426, 559, 560, 271, 260, 183, 261, 380, 183, 182, 262, 399, 445, 381, 558, 389, 400, 183, 183, 183, 407, 382, 408, 183, 337, 273, 225, 470, 274, 383, 183, 338, 471, 289, 184, 276, 492, 540, 493, 182, 229, 182, 190, 190, 290, 532, 190, 390, 567, 466, 575, 344, 230, 191, 345, 581, 622, 346, 576, 582, 192, 520, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 398, 263, 233, 369, 190, 190, 370, 302, 190, 194, 234, 264, 391, 371, 265, 434, 406, 195, 372, 373, 392, 399, 350, 194, 196, 174, 400, 174, 174, 174, 1127, 197, 198, 564, 199, 353, 354, 200, 573, 201, 243, 355, 394, 357, 395, 247, 579, 565, 297, 396, 601, 367, 574, 258, 359, 397, 602, 249, 561, 299, 561, 561, 561, 580, 260, 363, 261, 382, 586, 600, 262, 402, 353, 354, 274, 383, 535, 541, 355, 403, 404, 276, 247, 603, 495, 618, 405, 174, 175, 174, 176, 174, 967, 968, 249, 544, 299, 428, 429, 428, 430, 428, 363, 562, 435, 411, 486, 653, 435, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 480, 583, 1130, 501, 596, 584, 481, 482, 593, 502, 695, 483, 594, 610, 503, 536, 572, 440, 504, 595, 631, 480, 432, 437, 1945, 696, 438, 481, 482, 1945, 611, 537, 483, 536, 623, 437, 437, 437, 418, 480, 523, 438, 624, 419, 434, 481, 482, 1945, 438, 590, 591, 1945, 439, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 331, 501, 331, 331, 331, 513, 605, 502, 632, 1131, 613, 490, 503, 646, 332, 333, 504, 334, 671, 610, 606, 672, 514, 544, 647, 580, 501, 598, 637, 811, 640, 605, 502, 335, 641, 638, 644, 503, 490, 812, 536, 504, 652, 642, 639, 606, 480, 413, 609, 414, 643, 651, 481, 482, 598, 637, 590, 650, 426, 426, 1945, 1945, 426, 1132, 1945, 428, 429, 428, 430, 428, 428, 429, 428, 430, 428, 428, 429, 428, 430, 428, 435, 435, 660, 426, 435, 435, 660, 660, 426, 668, 437, 660, 684, 438, 771, 669, 765, 682, 685, 707, 772, 708, 437, 437, 437, 1133, 676, 709, 438, 432, 677, 683, 768, 766, 432, 438, 747, 748, 657, 432, 769, 658, 1945, 678, 679, 700, 680, 730, 701, 821, 657, 657, 657, 1134, 775, 702, 658, 1945, 703, 957, 770, 704, 705, 658, 1945, 749, 958, 659, 1945, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 750, 793, 763, 751, 790, 701, 764, 697, 689, 662, 844, 729, 702, 831, 873, 703, 794, 440, 704, 705, 791, 742, 761, 662, 196, 561, 804, 561, 561, 561, 874, 197, 198, 828, 199, 800, 801, 200, 720, 201, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 919, 707, 805, 816, 1135, 701, 806, 442, 807, 817, 562, 832, 702, 1138, 973, 808, 839, 442, 809, 705, 833, 776, 842, 850, 834, 851, 859, 1139, 741, 701, 806, 850, 807, 872, 843, 862, 702, 919, 820, 808, 842, 876, 809, 705, 820, 411, 870, 653, 1011, 660, 426, 973, 843, 660, 1945, 1945, 891, 881, 1945, 881, 892, 913, 1007, 914, 944, 945, 1008, 974, 1014, 1140, 1016, 1019, 933, 893, 1036, 1020, 1042, 1054, 1037, 919, 1012, 923, 1055, 1029, 1141, 1015, 1065, 967, 968, 933, 1011, 1081, 1043, 973, 1124, 1068, 946, 1113, 1114, 1142, 1082, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 1125, 1143, 947, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 1128, 1129, 1144, 1098, 882, 1098, 1098, 1098, 1136, 1137, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 882, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1191, 1193, 1194, 1195, 1122, 1197, 1198, 1199, 1190, 1200, 1196, 1201, 1202, 1203, 1192, 1204, 1205, 1206, 1207, 1208, 1209, 1211, 1170, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1210, 1212, 1223, 1224, 1225, 1226, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1227, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1209, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1256, 1272, 1273, 1274, 1210, 1275, 1276, 1278, 1279, 1278, 1280, 1278, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1355, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1320, 1321, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1279, 1421, 1420, 1278, 1279, 1278, 1280, 1278, 1278, 1279, 1278, 1280, 1278, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1427, 1427, 1427, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1465, 1466, 1463, 1467, 1468, 1469, 1470, 1471, 1464, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1279, 1527, 1420, 1528, 1529, 1530, 1531, 1532, 1534, 1535, 1534, 1427, 1534, 1536, 1538, 1539, 1540, 1541, 1542, 1543, 1537, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1598, 1609, 1610, 1611, 1612, 1945, 1599, 1534, 1613, 1534, 1427, 1534, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1674, 1675, 1676, 1677, 1678, 1679, 1673, 1680, 1681, 1680, 1680, 1680, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1726, 1727, 1726, 1680, 1726, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1748, 1762, 1763, 1764, 1945, 1749, 1765, 1766, 1767, 1726, 1750, 1726, 1680, 1726, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1824, 1825, 1826, 1822, 1827, 1823, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1822, 1845, 1846, 1848, 1822, 1847, 1823, 1847, 1847, 1847, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1864, 1866, 1867, 1847, 1863, 1847, 1847, 1847, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1945, 1882, 1945, 1945, 1945, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1892, 1892, 1892, 1894, 1895, 1896, 1897, 1898, 1899, 1901, 1902, 1901, 1892, 1901, 1903, 1904, 1905, 1906, 1907, 1945, 1901, 1908, 1901, 1892, 1901, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1923, 1925, 1927, 1922, 1924, 1926, 1928, 1926, 1926, 1926, 1930, 1931, 1932, 1933, 1936, 1945, 1935, 1929, 1935, 1926, 1935, 1935, 1937, 1935, 1926, 1935, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 1118, 178, 180, 1117, 1116, 1115, 1112, 180, 180, 180, 1111, 180, 208, 1110, 1109, 208, 1108, 208, 208, 208, 1107, 208, 209, 1106, 1105, 1104, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 211, 1103, 211, 211, 211, 1102, 211, 409, 1101, 409, 409, 409, 1100, 409, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 416, 1099, 416, 416, 416, 1097, 416, 417, 417, 1096, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 420, 1095, 420, 420, 420, 1094, 420, 421, 1093, 421, 421, 421, 1092, 421, 424, 1091, 1090, 424, 1089, 424, 424, 424, 1088, 424, 427, 427, 1087, 1086, 1085, 1084, 427, 427, 427, 1083, 1080, 1079, 427, 431, 431, 431, 1078, 1077, 1076, 1075, 1074, 431, 431, 431, 431, 431, 433, 433, 1073, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 436, 1072, 1071, 1070, 1069, 1068, 436, 436, 436, 1067, 436, 1066, 436, 442, 442, 1064, 1063, 1062, 1061, 1060, 442, 555, 555, 555, 555, 555, 1059, 555, 555, 555, 555, 555, 555, 555, 555, 655, 1058, 1057, 655, 1056, 655, 655, 655, 1053, 655, 656, 1052, 1051, 1050, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 661, 661, 1049, 1048, 1047, 1046, 661, 661, 661, 1045, 1044, 1041, 661, 882, 882, 1040, 1039, 1038, 1035, 1034, 882, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1533, 1533, 1033, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1725, 1725, 1032, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1865, 1031, 1865, 1030, 1028, 1027, 1865, 1026, 1865, 1865, 1865, 1900, 1900, 1025, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1934, 1934, 1024, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1022, 1021, 1018, 1017, 1013, 1010, 1009, 1006, 1005, 1004, 1003, 1002, 1001, 1000, 999, 998, 997, 996, 995, 994, 993, 992, 991, 990, 989, 988, 987, 986, 985, 984, 983, 982, 981, 980, 979, 978, 977, 976, 975, 974, 972, 971, 970, 969, 966, 965, 964, 963, 962, 961, 960, 959, 956, 955, 954, 953, 952, 951, 950, 949, 948, 943, 942, 941, 940, 939, 938, 937, 936, 935, 934, 933, 932, 931, 930, 929, 928, 927, 926, 925, 924, 923, 922, 921, 920, 919, 918, 917, 916, 915, 912, 911, 910, 909, 908, 907, 906, 905, 904, 903, 902, 901, 900, 899, 898, 897, 896, 895, 894, 890, 889, 888, 887, 886, 885, 884, 883, 443, 1945, 880, 879, 878, 877, 875, 871, 869, 868, 867, 866, 865, 864, 863, 861, 860, 858, 857, 856, 855, 854, 853, 852, 849, 848, 847, 846, 845, 841, 840, 838, 837, 836, 835, 830, 829, 827, 826, 825, 824, 823, 822, 820, 819, 818, 815, 814, 813, 810, 803, 802, 799, 798, 797, 796, 795, 792, 789, 788, 787, 786, 785, 784, 783, 782, 781, 780, 779, 778, 777, 776, 774, 773, 770, 767, 762, 761, 760, 759, 758, 757, 756, 755, 754, 753, 752, 746, 745, 744, 743, 742, 741, 740, 739, 738, 737, 736, 735, 734, 733, 732, 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, 721, 720, 719, 718, 717, 716, 715, 714, 713, 712, 711, 710, 706, 699, 698, 697, 694, 693, 692, 691, 690, 689, 688, 687, 686, 681, 675, 674, 673, 670, 667, 666, 665, 664, 663, 654, 649, 648, 645, 636, 635, 634, 633, 630, 629, 628, 627, 626, 625, 621, 620, 619, 617, 616, 612, 609, 608, 607, 604, 599, 597, 592, 589, 588, 587, 585, 578, 577, 572, 571, 570, 566, 563, 554, 553, 552, 551, 550, 549, 548, 546, 545, 544, 543, 542, 541, 539, 538, 535, 534, 533, 531, 530, 529, 528, 527, 526, 525, 524, 523, 522, 521, 518, 515, 512, 511, 510, 509, 508, 507, 506, 505, 500, 499, 498, 497, 496, 495, 494, 491, 490, 489, 488, 487, 486, 485, 484, 479, 478, 477, 476, 475, 474, 473, 472, 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, 457, 456, 455, 450, 449, 446, 445, 443, 444, 443, 443, 443, 443, 1945, 425, 179, 423, 422, 415, 358, 330, 316, 314, 307, 306, 294, 286, 284, 279, 271, 243, 242, 239, 210, 187, 186, 185, 181, 179, 177, 1945, 101, 101, 25, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945 } ; static yyconst flex_int32_t yy_chk[3132] = { 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 63, 5, 5, 28, 63, 28, 28, 28, 30, 30, 30, 30, 30, 86, 45, 61, 5, 86, 5, 45, 49, 49, 50, 50, 51, 51, 62, 60, 156, 60, 156, 61, 64, 5, 60, 5, 5, 5, 62, 5, 64, 5, 64, 65, 5, 118, 5, 67, 5, 65, 64, 5, 138, 5, 9, 67, 9, 9, 9, 9, 9, 70, 138, 9, 9, 70, 9, 72, 9, 159, 72, 159, 71, 79, 79, 70, 71, 73, 138, 9, 143, 9, 9, 9, 71, 9, 71, 143, 76, 73, 118, 73, 9, 816, 73, 9, 76, 73, 9, 9, 9, 9, 9, 9, 84, 76, 9, 9, 92, 9, 9, 9, 92, 9, 816, 9, 9, 9, 9, 9, 9, 83, 88, 88, 84, 9, 11, 59, 59, 59, 59, 59, 89, 89, 162, 59, 162, 74, 59, 74, 59, 95, 59, 75, 59, 59, 59, 100, 74, 95, 74, 11, 100, 75, 74, 78, 75, 83, 108, 78, 75, 75, 78, 78, 90, 194, 90, 194, 11, 78, 11, 90, 11, 90, 11, 270, 11, 108, 108, 11, 91, 11, 106, 270, 91, 11, 11, 83, 11, 93, 11, 12, 91, 101, 91, 96, 97, 93, 101, 93, 97, 98, 101, 96, 250, 106, 250, 93, 97, 96, 97, 109, 919, 98, 99, 98, 12, 111, 98, 99, 99, 98, 111, 167, 99, 134, 109, 99, 167, 109, 134, 99, 99, 12, 134, 12, 111, 12, 119, 12, 119, 12, 113, 113, 12, 119, 12, 119, 104, 104, 12, 12, 104, 12, 110, 12, 13, 212, 112, 114, 114, 104, 115, 115, 104, 220, 104, 110, 220, 112, 110, 110, 112, 920, 117, 212, 117, 117, 117, 120, 122, 13, 128, 120, 122, 306, 128, 306, 117, 117, 122, 117, 120, 216, 362, 120, 128, 137, 13, 120, 13, 215, 13, 216, 13, 215, 13, 117, 268, 13, 362, 13, 139, 137, 123, 13, 13, 921, 13, 121, 13, 14, 123, 121, 123, 268, 121, 139, 139, 124, 121, 121, 123, 121, 123, 124, 121, 125, 125, 127, 922, 124, 133, 125, 125, 125, 14, 127, 129, 133, 133, 340, 129, 127, 327, 327, 137, 340, 130, 133, 129, 923, 129, 14, 375, 14, 133, 14, 129, 14, 130, 14, 130, 375, 14, 130, 14, 231, 130, 272, 14, 14, 231, 14, 272, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 37, 37, 149, 148, 131, 927, 131, 149, 131, 183, 183, 149, 135, 183, 329, 329, 135, 131, 37, 131, 135, 37, 37, 131, 148, 328, 135, 328, 140, 148, 37, 37, 37, 408, 136, 408, 37, 140, 136, 140, 292, 136, 136, 37, 140, 292, 140, 37, 136, 299, 299, 299, 37, 141, 37, 46, 46, 141, 292, 46, 141, 339, 339, 345, 141, 141, 46, 141, 350, 382, 141, 345, 350, 46, 382, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 153, 132, 142, 132, 190, 190, 132, 132, 190, 46, 142, 132, 142, 132, 132, 190, 153, 46, 132, 132, 142, 153, 142, 46, 46, 174, 153, 174, 174, 174, 928, 46, 46, 337, 46, 144, 144, 46, 344, 46, 145, 144, 144, 144, 145, 146, 349, 337, 145, 146, 365, 147, 344, 147, 145, 147, 365, 146, 333, 146, 333, 333, 333, 349, 147, 146, 147, 150, 353, 364, 147, 150, 151, 151, 150, 150, 353, 366, 151, 151, 151, 150, 152, 366, 364, 378, 152, 176, 176, 176, 176, 176, 755, 755, 152, 378, 152, 185, 185, 185, 185, 185, 152, 333, 191, 412, 360, 412, 191, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 241, 351, 930, 259, 360, 351, 241, 241, 359, 259, 471, 241, 359, 372, 259, 296, 390, 192, 259, 359, 390, 296, 185, 191, 417, 471, 191, 296, 296, 417, 372, 296, 296, 357, 383, 191, 191, 191, 418, 357, 383, 191, 383, 418, 195, 357, 357, 436, 191, 357, 357, 436, 191, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 331, 368, 331, 331, 331, 374, 368, 368, 391, 933, 374, 396, 368, 401, 331, 331, 368, 331, 453, 399, 368, 453, 374, 401, 401, 391, 397, 396, 396, 581, 398, 397, 397, 331, 398, 397, 399, 397, 405, 581, 404, 397, 406, 398, 397, 397, 404, 414, 406, 414, 398, 405, 404, 404, 405, 405, 404, 404, 426, 426, 427, 427, 426, 935, 427, 428, 428, 428, 428, 428, 429, 429, 429, 429, 429, 430, 430, 430, 430, 430, 434, 435, 437, 437, 434, 435, 437, 438, 438, 451, 439, 438, 460, 439, 538, 451, 534, 459, 460, 477, 538, 477, 439, 439, 439, 936, 457, 477, 439, 428, 457, 459, 536, 534, 429, 439, 517, 517, 434, 430, 536, 434, 435, 457, 457, 475, 457, 541, 475, 590, 434, 434, 434, 937, 541, 475, 434, 435, 475, 740, 590, 475, 475, 434, 435, 517, 740, 434, 435, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 517, 568, 533, 517, 566, 533, 533, 578, 566, 440, 612, 601, 533, 601, 647, 533, 568, 440, 533, 533, 566, 612, 575, 440, 440, 561, 578, 561, 561, 561, 647, 440, 440, 597, 440, 575, 575, 440, 597, 440, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 763, 585, 579, 585, 938, 579, 579, 441, 579, 585, 561, 602, 579, 940, 763, 579, 608, 442, 579, 579, 602, 608, 611, 618, 602, 618, 632, 941, 611, 632, 632, 646, 632, 646, 611, 635, 632, 805, 635, 632, 644, 649, 632, 632, 649, 653, 644, 653, 805, 660, 660, 805, 644, 660, 661, 661, 672, 662, 661, 662, 672, 692, 801, 692, 730, 730, 801, 806, 808, 942, 809, 813, 822, 672, 830, 813, 836, 848, 830, 859, 806, 809, 848, 822, 943, 808, 859, 875, 875, 877, 859, 876, 836, 859, 924, 876, 730, 912, 912, 946, 877, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 924, 947, 730, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 929, 929, 949, 896, 881, 896, 896, 896, 939, 939, 950, 951, 954, 955, 957, 958, 959, 882, 960, 962, 963, 965, 966, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 991, 995, 997, 998, 999, 1000, 1001, 1003, 1005, 1006, 1007, 1008, 1009, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1009, 1019, 1015, 1020, 1022, 1023, 1011, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1029, 1030, 1043, 1044, 1045, 1046, 1048, 1049, 1050, 1052, 1053, 1054, 1055, 1056, 1046, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1082, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1077, 1093, 1094, 1095, 1082, 1096, 1097, 1098, 1098, 1098, 1098, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1132, 1135, 1139, 1140, 1141, 1142, 1144, 1145, 1147, 1148, 1149, 1150, 1151, 1151, 1152, 1152, 1153, 1153, 1156, 1157, 1160, 1161, 1162, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1175, 1178, 1179, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1200, 1202, 1203, 1204, 1205, 1206, 1209, 1196, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1218, 1219, 1220, 1221, 1222, 1223, 1225, 1226, 1227, 1232, 1233, 1234, 1235, 1237, 1238, 1239, 1241, 1242, 1243, 1244, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1277, 1281, 1277, 1278, 1278, 1278, 1278, 1278, 1280, 1280, 1280, 1280, 1280, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1287, 1287, 1287, 1289, 1290, 1291, 1292, 1293, 1295, 1298, 1299, 1300, 1301, 1302, 1305, 1308, 1310, 1312, 1313, 1314, 1316, 1316, 1317, 1319, 1326, 1327, 1328, 1329, 1330, 1332, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1343, 1344, 1341, 1346, 1347, 1348, 1349, 1350, 1341, 1351, 1352, 1353, 1354, 1355, 1356, 1358, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1371, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1385, 1386, 1387, 1389, 1390, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1402, 1404, 1405, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1420, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1427, 1427, 1427, 1429, 1430, 1431, 1432, 1435, 1436, 1437, 1429, 1438, 1441, 1442, 1443, 1449, 1451, 1452, 1453, 1456, 1457, 1458, 1459, 1462, 1463, 1464, 1466, 1468, 1469, 1471, 1473, 1474, 1475, 1476, 1477, 1478, 1480, 1481, 1482, 1483, 1485, 1488, 1490, 1493, 1494, 1495, 1497, 1499, 1500, 1501, 1503, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1519, 1529, 1530, 1531, 1532, 1533, 1519, 1534, 1535, 1534, 1534, 1534, 1536, 1537, 1539, 1540, 1541, 1543, 1544, 1545, 1551, 1552, 1553, 1554, 1555, 1556, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1575, 1577, 1578, 1579, 1581, 1582, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1614, 1615, 1616, 1609, 1617, 1618, 1617, 1617, 1617, 1619, 1621, 1622, 1624, 1625, 1626, 1627, 1628, 1632, 1633, 1636, 1637, 1638, 1639, 1640, 1641, 1643, 1647, 1649, 1650, 1651, 1654, 1655, 1657, 1658, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1677, 1678, 1679, 1680, 1682, 1680, 1680, 1680, 1685, 1686, 1687, 1689, 1691, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1710, 1722, 1723, 1724, 1725, 1710, 1728, 1729, 1730, 1726, 1710, 1726, 1726, 1726, 1735, 1738, 1739, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1754, 1755, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1766, 1769, 1770, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1798, 1799, 1800, 1801, 1802, 1799, 1803, 1799, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1819, 1820, 1821, 1822, 1823, 1824, 1826, 1822, 1825, 1822, 1825, 1825, 1825, 1827, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1842, 1843, 1844, 1845, 1846, 1848, 1849, 1847, 1845, 1847, 1847, 1847, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1865, 1865, 1865, 1867, 1868, 1871, 1872, 1875, 1876, 1878, 1879, 1880, 1881, 1882, 1881, 1881, 1881, 1883, 1885, 1887, 1889, 1890, 1891, 1892, 1893, 1892, 1892, 1892, 1894, 1897, 1898, 1898, 1899, 1900, 1901, 1902, 1901, 1901, 1901, 1903, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1912, 1913, 1915, 1916, 1917, 1918, 1920, 1916, 1917, 1919, 1921, 1919, 1919, 1919, 1922, 1923, 1924, 1925, 1929, 1934, 1926, 1921, 1926, 1926, 1926, 1935, 1936, 1935, 1935, 1935, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 918, 1948, 1949, 917, 916, 915, 910, 1949, 1949, 1949, 909, 1949, 1950, 908, 907, 1950, 906, 1950, 1950, 1950, 905, 1950, 1951, 904, 903, 902, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1952, 901, 1952, 1952, 1952, 900, 1952, 1953, 899, 1953, 1953, 1953, 898, 1953, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1955, 897, 1955, 1955, 1955, 895, 1955, 1956, 1956, 894, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1957, 893, 1957, 1957, 1957, 892, 1957, 1958, 891, 1958, 1958, 1958, 890, 1958, 1959, 889, 888, 1959, 887, 1959, 1959, 1959, 886, 1959, 1960, 1960, 885, 884, 883, 880, 1960, 1960, 1960, 878, 874, 873, 1960, 1961, 1961, 1961, 872, 871, 870, 869, 868, 1961, 1961, 1961, 1961, 1961, 1962, 1962, 867, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1963, 866, 865, 864, 863, 862, 1963, 1963, 1963, 861, 1963, 860, 1963, 1964, 1964, 858, 857, 856, 855, 854, 1964, 1965, 1965, 1965, 1965, 1965, 852, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1966, 851, 850, 1966, 849, 1966, 1966, 1966, 847, 1966, 1967, 845, 844, 843, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1968, 1968, 842, 841, 840, 839, 1968, 1968, 1968, 838, 837, 834, 1968, 1969, 1969, 833, 832, 831, 828, 827, 1969, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1971, 1971, 826, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1972, 1972, 825, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1973, 824, 1973, 823, 821, 820, 1973, 819, 1973, 1973, 1973, 1974, 1974, 818, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1975, 1975, 817, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 815, 814, 812, 811, 807, 803, 802, 800, 799, 798, 797, 795, 794, 792, 791, 790, 789, 788, 785, 784, 783, 782, 781, 780, 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, 769, 768, 767, 766, 765, 764, 762, 761, 759, 756, 752, 751, 750, 749, 746, 743, 742, 741, 739, 738, 737, 736, 735, 734, 733, 732, 731, 729, 728, 726, 725, 724, 722, 720, 719, 718, 717, 715, 714, 713, 712, 711, 710, 708, 707, 706, 705, 704, 703, 702, 701, 700, 697, 696, 695, 694, 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, 677, 676, 675, 674, 673, 671, 670, 669, 668, 667, 666, 665, 664, 663, 659, 654, 652, 651, 650, 648, 645, 643, 642, 641, 640, 639, 638, 637, 634, 633, 631, 630, 624, 623, 622, 621, 620, 617, 616, 615, 614, 613, 610, 609, 607, 606, 604, 603, 600, 599, 596, 595, 594, 593, 592, 591, 589, 588, 587, 584, 583, 582, 580, 577, 576, 574, 573, 572, 571, 570, 567, 565, 564, 560, 556, 553, 552, 551, 550, 549, 548, 546, 544, 543, 542, 540, 539, 537, 535, 532, 531, 530, 529, 525, 523, 522, 521, 520, 519, 518, 516, 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, 504, 503, 501, 500, 499, 498, 497, 496, 495, 494, 493, 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, 481, 480, 479, 478, 476, 474, 473, 472, 470, 469, 468, 467, 466, 465, 463, 462, 461, 458, 456, 455, 454, 452, 450, 449, 448, 447, 444, 422, 403, 402, 400, 395, 394, 393, 392, 389, 388, 387, 386, 385, 384, 381, 380, 379, 377, 376, 373, 371, 370, 369, 367, 363, 361, 358, 356, 355, 354, 352, 347, 346, 343, 342, 341, 338, 334, 322, 313, 312, 311, 310, 309, 308, 305, 304, 303, 302, 301, 300, 298, 297, 295, 294, 293, 291, 290, 289, 288, 287, 278, 277, 276, 275, 274, 273, 271, 269, 267, 266, 265, 264, 263, 262, 261, 260, 258, 257, 256, 255, 254, 253, 252, 249, 248, 247, 246, 245, 244, 243, 242, 239, 238, 237, 236, 235, 234, 233, 232, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 219, 218, 217, 214, 213, 209, 204, 201, 200, 199, 198, 197, 196, 184, 181, 178, 177, 172, 163, 126, 116, 107, 105, 103, 102, 94, 87, 85, 81, 77, 69, 68, 66, 58, 43, 40, 38, 36, 32, 31, 25, 8, 7, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int VParseLex_flex_debug; int VParseLex_flex_debug = 1; static yyconst flex_int32_t yy_rule_linenum[418] = { 0, 114, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 257, 263, 264, 265, 266, 267, 268, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 400, 401, 402, 403, 408, 415, 416, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 473, 474, 475, 476, 477, 478, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, 512, 513, 518, 519, 520, 526, 534, 542, 543, 545, 547, 562, 565, 568, 571, 579, 580, 581, 582, 584, 585, 589, 590, 591, 592, 593, 599, 600, 601, 602, 608, 609, 610, 611, 619, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 659, 660, 661, 662, 663, 664, 665, 666, 673, 676, 677, 678, 682 } ; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected static int yy_more_flag = 0; static int yy_more_len = 0; #define yymore() ((yy_more_flag) = 1) #define YY_MORE_ADJ (yy_more_len) #define YY_RESTORE_YY_MORE_OFFSET char *VParseLextext; #line 1 "VParseLex.l" #line 6 "VParseLex.l" /************************************************************************** * DESCRIPTION: Verilog Parser Lexer * * This file is part of Verilog-Perl. * * Author: Wilson Snyder * * Code available from: http://www.veripool.org/systemperl * ************************************************************************** * * Copyright 2000-2016 by Wilson Snyder. This program is free software; * you can redistribute it and/or modify it under the terms of either the * GNU Lesser General Public License Version 3 or the Perl Artistic License * Version 2.0. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * ************************************************************************** * Do not use Flex in C++ mode. It has bugs with yyunput() which result in * lost characters. *************************************************************************/ #include "VParseLex.h" #include #include #include #include #include "VParseGrammar.h" #include "VParseBison.h" #define YY_SKIP_YYWRAP #define STATE_VERILOG_RECENT S12 // State name for most recent Verilog Version // Flex 2.5.35 has compile warning in ECHO, so we'll default our own rule #define ECHO yyerrorf("Missing VParseLex.l rule: ECHO rule invoked in state %d: %s", YY_START, VParseLextext); VParseLex* VParseLex::s_currentLexp = NULL; // Current lexing point VParseBisonYYSType* VParseLex::s_yylvalp = NULL; // LValue for current bison object #define LEXP (VParseLex::s_currentLexp) #define LPARSEP (LEXP->m_parsep) #define NEXTLINE() { LPARSEP->inFilelineInc(); } #define LINECHECKS(textp,len) { const char* cp=textp; for (int n=len; n; --n) if (cp[n]=='\n') NEXTLINE(); } #define LINECHECK() LINECHECKS(VParseLextext,VParseLexleng) #define FL { VParseLex::s_yylvalp->fl = LPARSEP->inFilelinep(); } // lval.fileline not used yet; here for Verilator parser compatibility #define VALTEXTS(strg) VParseLex::s_yylvalp->str = strg #define VALTEXT VALTEXTS(string(VParseLextext,VParseLexleng)) #define CALLBACKS(whichCb,strg) {LPARSEP->whichCb(VParseLex::s_yylvalp->fl, strg); } #define CALLBACK(whichCb) CALLBACKS(whichCb,string(VParseLextext,VParseLexleng)) #define YY_INPUT(buf,result,max_size) \ result = LPARSEP->inputToLex(buf,max_size); int VParseLexwrap() { return LPARSEP->eofToLex(); } #define StashPrefix LPARSEP->unreadbackCat(VParseLextext,VParseLexleng) void yyerror(char* errmsg) { LPARSEP->inFilelinep()->error(errmsg); } void yyerrorf(const char* format, ...) { char msg[1024]; va_list ap; va_start(ap,format); vsprintf(msg,format,ap); va_end(ap); yyerror(msg); } /**********************************************************************/ /* identifier */ /* escaped identifier */ /* verilog numbers, constructed to not match the ' that begins a '( or '{ */ #line 2044 "VParseLex_pretmp.cpp" #define INITIAL 0 #define V95 1 #define V01 2 #define V05 3 #define S05 4 #define S09 5 #define S12 6 #define STRING 7 #define ATTRMODE 8 #define CMTMODE 9 #define PROTMODE 10 #define DUMMY_TO_AVOID_WARNING 11 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ /* %if-c-only */ #include /* %endif */ /* %if-c++-only */ /* %endif */ #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif /* %if-c-only Reentrant structure and macros (non-C++). */ /* %if-reentrant */ /* %if-c-only */ static int yy_init_globals (void ); /* %endif */ /* %if-reentrant */ /* %endif */ /* %endif End reentrant structures and macros. */ /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int VParseLexlex_destroy (void ); int VParseLexget_debug (void ); void VParseLexset_debug (int debug_flag ); YY_EXTRA_TYPE VParseLexget_extra (void ); void VParseLexset_extra (YY_EXTRA_TYPE user_defined ); FILE *VParseLexget_in (void ); void VParseLexset_in (FILE * in_str ); FILE *VParseLexget_out (void ); void VParseLexset_out (FILE * out_str ); int VParseLexget_leng (void ); char *VParseLexget_text (void ); int VParseLexget_lineno (void ); void VParseLexset_lineno (int line_number ); /* %if-bison-bridge */ /* %endif */ /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int VParseLexwrap (void ); #else extern int VParseLexwrap (void ); #endif #endif /* %not-for-header */ static void yyunput (int c,char *buf_ptr ); /* %ok-for-header */ /* %endif */ #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT /* %if-c-only Standard (non-C++) definition */ /* %not-for-header */ #ifdef __cplusplus static int yyinput (void ); #else static int input (void ); #endif /* %ok-for-header */ /* %endif */ #endif /* %if-c-only */ static int yy_start_stack_ptr = 0; static int yy_start_stack_depth = 0; static int *yy_start_stack = NULL; static void yy_push_state (int new_state ); static void yy_pop_state (void ); static int yy_top_state (void ); /* %endif */ /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* %if-c-only Standard (non-C++) definition */ /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( VParseLextext, VParseLexleng, 1, VParseLexout )) {} } while (0) /* %endif */ /* %if-c++-only C++ definition */ /* %endif */ #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ size_t n; \ for ( n = 0; n < max_size && \ (c = getc( VParseLexin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( VParseLexin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, VParseLexin))==0 && ferror(VParseLexin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(VParseLexin); \ } \ }\ \ /* %if-c++-only C++ definition \ */\ /* %endif */ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR /* %if-c-only */ #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) /* %endif */ /* %if-c++-only */ /* %endif */ #endif /* %if-tables-serialization structures and prototypes */ /* %not-for-header */ /* %ok-for-header */ /* %not-for-header */ /* %tables-yydmap generated elements */ /* %endif */ /* end tables serialization structures and prototypes */ /* %ok-for-header */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 /* %if-c-only Standard (non-C++) definition */ extern int VParseLexlex (void); #define YY_DECL int VParseLexlex (void) /* %endif */ /* %if-c++-only C++ definition */ /* %endif */ #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after VParseLextext and VParseLexleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif /* %% [6.0] YY_RULE_SETUP definition goes here */ #define YY_RULE_SETUP \ YY_USER_ACTION /* %not-for-header */ /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; /* %% [7.0] user's declarations go here */ #line 112 "VParseLex.l" #line 2315 "VParseLex_pretmp.cpp" if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! VParseLexin ) /* %if-c-only */ VParseLexin = stdin; /* %endif */ /* %if-c++-only */ /* %endif */ if ( ! VParseLexout ) /* %if-c-only */ VParseLexout = stdout; /* %endif */ /* %if-c++-only */ /* %endif */ if ( ! YY_CURRENT_BUFFER ) { VParseLexensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = VParseLex_create_buffer(VParseLexin,YY_BUF_SIZE ); } VParseLex_load_buffer_state( ); } while ( 1 ) /* loops until end-of-file is reached */ { /* %% [8.0] yymore()-related code goes here */ (yy_more_len) = 0; if ( (yy_more_flag) ) { (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); (yy_more_flag) = 0; } yy_cp = (yy_c_buf_p); /* Support of VParseLextext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; /* %% [9.0] code to set up and find next match goes here */ yy_current_state = (yy_start); yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 1946 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 3051 ); yy_find_action: /* %% [10.0] code to find the action number goes here */ yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; /* %% [11.0] code for VParseLexlineno update goes here */ do_action: /* This label is used only to access EOF actions. */ /* %% [12.0] debug code goes here */ if ( VParseLex_flex_debug ) { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); else if ( yy_act < 418 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], VParseLextext ); else if ( yy_act == 418 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", VParseLextext ); else if ( yy_act == 419 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); } switch ( yy_act ) { /* beginning of action switch */ /* %% [13.0] actions go here */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: /* rule 1 can match eol */ YY_RULE_SETUP #line 114 "VParseLex.l" {BEGIN STATE_VERILOG_RECENT; yyless(0); } YY_BREAK /* Verilog 1995 */ case 2: YY_RULE_SETUP #line 118 "VParseLex.l" { StashPrefix; } /* otherwise ignore white-space */ YY_BREAK case 3: /* rule 3 can match eol */ YY_RULE_SETUP #line 119 "VParseLex.l" { StashPrefix; NEXTLINE(); } /* Count line numbers */ YY_BREAK /* Keywords */ case 4: YY_RULE_SETUP #line 121 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } YY_BREAK case 5: YY_RULE_SETUP #line 122 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yAND; } YY_BREAK case 6: YY_RULE_SETUP #line 123 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yASSIGN; } YY_BREAK case 7: YY_RULE_SETUP #line 124 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBEGIN; } YY_BREAK case 8: YY_RULE_SETUP #line 125 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBUF; } YY_BREAK case 9: YY_RULE_SETUP #line 126 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCASE; } YY_BREAK case 10: YY_RULE_SETUP #line 127 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCASEX; } YY_BREAK case 11: YY_RULE_SETUP #line 128 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCASEZ; } YY_BREAK case 12: YY_RULE_SETUP #line 129 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yDEASSIGN; } YY_BREAK case 13: YY_RULE_SETUP #line 130 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yDEFAULT; } YY_BREAK case 14: YY_RULE_SETUP #line 131 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yDEFPARAM; } YY_BREAK case 15: YY_RULE_SETUP #line 132 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yDISABLE; } YY_BREAK case 16: YY_RULE_SETUP #line 133 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEDGE; } YY_BREAK case 17: YY_RULE_SETUP #line 134 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yELSE; } YY_BREAK case 18: YY_RULE_SETUP #line 135 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEND; } YY_BREAK case 19: YY_RULE_SETUP #line 136 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCASE; } YY_BREAK case 20: YY_RULE_SETUP #line 137 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDFUNCTION; } YY_BREAK case 21: YY_RULE_SETUP #line 138 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDMODULE; } YY_BREAK case 22: YY_RULE_SETUP #line 139 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDMODULE; } YY_BREAK case 23: YY_RULE_SETUP #line 140 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDSPECIFY; } YY_BREAK case 24: YY_RULE_SETUP #line 141 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDTABLE; } YY_BREAK case 25: YY_RULE_SETUP #line 142 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDTASK; } YY_BREAK case 26: YY_RULE_SETUP #line 143 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEVENT; } YY_BREAK case 27: YY_RULE_SETUP #line 144 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFOR; } YY_BREAK case 28: YY_RULE_SETUP #line 145 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFORCE; } YY_BREAK case 29: YY_RULE_SETUP #line 146 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFOREVER; } YY_BREAK case 30: YY_RULE_SETUP #line 147 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFORK; } YY_BREAK case 31: YY_RULE_SETUP #line 148 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFUNCTION__LEX; } YY_BREAK case 32: YY_RULE_SETUP #line 149 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yIF; } YY_BREAK case 33: YY_RULE_SETUP #line 150 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINITIAL; } YY_BREAK case 34: YY_RULE_SETUP #line 151 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINOUT; } YY_BREAK case 35: YY_RULE_SETUP #line 152 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINPUT; } YY_BREAK case 36: YY_RULE_SETUP #line 153 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINTEGER; } YY_BREAK case 37: YY_RULE_SETUP #line 154 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yJOIN; } YY_BREAK case 38: YY_RULE_SETUP #line 155 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yMODULE; } YY_BREAK case 39: YY_RULE_SETUP #line 156 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yMODULE; } YY_BREAK case 40: YY_RULE_SETUP #line 157 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNAND; } YY_BREAK case 41: YY_RULE_SETUP #line 158 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNEGEDGE; } YY_BREAK case 42: YY_RULE_SETUP #line 159 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNOR; } YY_BREAK case 43: YY_RULE_SETUP #line 160 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNOT; } YY_BREAK case 44: YY_RULE_SETUP #line 161 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yOR; } YY_BREAK case 45: YY_RULE_SETUP #line 162 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yOUTPUT; } YY_BREAK case 46: YY_RULE_SETUP #line 163 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPARAMETER; } YY_BREAK case 47: YY_RULE_SETUP #line 164 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPOSEDGE; } YY_BREAK case 48: YY_RULE_SETUP #line 165 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yMODULE; } YY_BREAK case 49: YY_RULE_SETUP #line 166 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yREAL; } YY_BREAK case 50: YY_RULE_SETUP #line 167 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yREALTIME; } YY_BREAK case 51: YY_RULE_SETUP #line 168 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yREG; } YY_BREAK case 52: YY_RULE_SETUP #line 169 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRELEASE; } YY_BREAK case 53: YY_RULE_SETUP #line 170 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yREPEAT; } YY_BREAK case 54: YY_RULE_SETUP #line 171 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySCALARED; } YY_BREAK case 55: YY_RULE_SETUP #line 172 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySPECIFY; } YY_BREAK case 56: YY_RULE_SETUP #line 173 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySPECPARAM; } YY_BREAK case 57: YY_RULE_SETUP #line 174 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySUPPLY0; } YY_BREAK case 58: YY_RULE_SETUP #line 175 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySUPPLY1; } YY_BREAK case 59: YY_RULE_SETUP #line 176 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTABLE; } YY_BREAK case 60: YY_RULE_SETUP #line 177 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTASK__LEX; } YY_BREAK case 61: YY_RULE_SETUP #line 178 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTIME; } YY_BREAK case 62: YY_RULE_SETUP #line 179 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTRI; } YY_BREAK case 63: YY_RULE_SETUP #line 180 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTRI0; } YY_BREAK case 64: YY_RULE_SETUP #line 181 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTRI1; } YY_BREAK case 65: YY_RULE_SETUP #line 182 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTRIAND; } YY_BREAK case 66: YY_RULE_SETUP #line 183 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTRIOR; } YY_BREAK case 67: YY_RULE_SETUP #line 184 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTRIREG; } YY_BREAK case 68: YY_RULE_SETUP #line 185 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yVECTORED; } YY_BREAK case 69: YY_RULE_SETUP #line 186 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWAIT; } YY_BREAK case 70: YY_RULE_SETUP #line 187 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWAND; } YY_BREAK case 71: YY_RULE_SETUP #line 188 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWHILE; } YY_BREAK case 72: YY_RULE_SETUP #line 189 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWIRE; } YY_BREAK case 73: YY_RULE_SETUP #line 190 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWOR; } YY_BREAK case 74: YY_RULE_SETUP #line 191 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yXNOR; } YY_BREAK case 75: YY_RULE_SETUP #line 192 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yXOR; } YY_BREAK /* Types Verilator doesn't support but we do generically here */ case 76: YY_RULE_SETUP #line 194 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 77: YY_RULE_SETUP #line 195 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 78: YY_RULE_SETUP #line 196 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 79: YY_RULE_SETUP #line 197 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 80: YY_RULE_SETUP #line 198 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 81: YY_RULE_SETUP #line 199 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 82: YY_RULE_SETUP #line 200 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 83: YY_RULE_SETUP #line 201 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 84: YY_RULE_SETUP #line 202 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 85: YY_RULE_SETUP #line 203 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 86: YY_RULE_SETUP #line 204 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 87: YY_RULE_SETUP #line 205 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 88: YY_RULE_SETUP #line 206 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 89: YY_RULE_SETUP #line 207 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 90: YY_RULE_SETUP #line 208 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 91: YY_RULE_SETUP #line 209 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 92: YY_RULE_SETUP #line 210 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 93: YY_RULE_SETUP #line 211 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 94: YY_RULE_SETUP #line 212 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 95: YY_RULE_SETUP #line 213 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 96: YY_RULE_SETUP #line 214 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 97: YY_RULE_SETUP #line 215 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 98: YY_RULE_SETUP #line 216 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 99: YY_RULE_SETUP #line 217 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 100: YY_RULE_SETUP #line 218 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 101: YY_RULE_SETUP #line 219 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 102: YY_RULE_SETUP #line 220 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 103: YY_RULE_SETUP #line 221 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 104: YY_RULE_SETUP #line 222 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK /* Generic unsupported warnings */ /* Verilog 2001 */ /* Keywords*/ case 105: YY_RULE_SETUP #line 229 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yAUTOMATIC; } YY_BREAK case 106: YY_RULE_SETUP #line 230 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDGENERATE; } YY_BREAK case 107: YY_RULE_SETUP #line 231 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yGENERATE; } YY_BREAK case 108: YY_RULE_SETUP #line 232 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yGENVAR; } YY_BREAK case 109: YY_RULE_SETUP #line 233 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } YY_BREAK case 110: YY_RULE_SETUP #line 234 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yLOCALPARAM; } YY_BREAK case 111: YY_RULE_SETUP #line 235 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } YY_BREAK case 112: YY_RULE_SETUP #line 236 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } YY_BREAK case 113: YY_RULE_SETUP #line 237 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } YY_BREAK case 114: YY_RULE_SETUP #line 238 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } YY_BREAK case 115: YY_RULE_SETUP #line 239 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySIGNED; } YY_BREAK case 116: YY_RULE_SETUP #line 240 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNSIGNED; } YY_BREAK /* Generic unsupported keywords */ case 117: YY_RULE_SETUP #line 242 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 118: YY_RULE_SETUP #line 243 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 119: YY_RULE_SETUP #line 244 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 120: YY_RULE_SETUP #line 245 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 121: YY_RULE_SETUP #line 246 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 122: YY_RULE_SETUP #line 247 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 123: YY_RULE_SETUP #line 248 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 124: YY_RULE_SETUP #line 249 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 125: YY_RULE_SETUP #line 250 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 126: YY_RULE_SETUP #line 251 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK /* Verilog 2005 */ /* Keywords */ case 127: YY_RULE_SETUP #line 257 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWIRE; } YY_BREAK /* System Verilog 2005 */ /* System Tasks */ case 128: YY_RULE_SETUP #line 263 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yD_ERROR; } YY_BREAK case 129: YY_RULE_SETUP #line 264 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yD_FATAL; } YY_BREAK case 130: YY_RULE_SETUP #line 265 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yD_INFO; } YY_BREAK case 131: YY_RULE_SETUP #line 266 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yD_ROOT; } YY_BREAK case 132: YY_RULE_SETUP #line 267 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yD_UNIT; } YY_BREAK case 133: YY_RULE_SETUP #line 268 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yD_WARNING; } YY_BREAK /* Keywords */ case 134: YY_RULE_SETUP #line 270 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yALIAS; } YY_BREAK case 135: YY_RULE_SETUP #line 271 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } YY_BREAK case 136: YY_RULE_SETUP #line 272 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } YY_BREAK case 137: YY_RULE_SETUP #line 273 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } YY_BREAK case 138: YY_RULE_SETUP #line 274 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yASSERT; } YY_BREAK case 139: YY_RULE_SETUP #line 275 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yASSUME; } YY_BREAK case 140: YY_RULE_SETUP #line 276 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBEFORE; } YY_BREAK case 141: YY_RULE_SETUP #line 277 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBIND; } YY_BREAK case 142: YY_RULE_SETUP #line 278 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBINS; } YY_BREAK case 143: YY_RULE_SETUP #line 279 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBINSOF; } YY_BREAK case 144: YY_RULE_SETUP #line 280 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBIT; } YY_BREAK case 145: YY_RULE_SETUP #line 281 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBREAK; } YY_BREAK case 146: YY_RULE_SETUP #line 282 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBYTE; } YY_BREAK case 147: YY_RULE_SETUP #line 283 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCHANDLE; } YY_BREAK case 148: YY_RULE_SETUP #line 284 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCLASS; } YY_BREAK case 149: YY_RULE_SETUP #line 285 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCLOCKING; } YY_BREAK case 150: YY_RULE_SETUP #line 286 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCONST__LEX; } YY_BREAK case 151: YY_RULE_SETUP #line 287 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCONSTRAINT; } YY_BREAK case 152: YY_RULE_SETUP #line 288 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCONTEXT; } YY_BREAK case 153: YY_RULE_SETUP #line 289 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCONTINUE; } YY_BREAK case 154: YY_RULE_SETUP #line 290 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCOVER; } YY_BREAK case 155: YY_RULE_SETUP #line 291 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCOVERGROUP; } YY_BREAK case 156: YY_RULE_SETUP #line 292 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCOVERPOINT; } YY_BREAK case 157: YY_RULE_SETUP #line 293 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCROSS; } YY_BREAK case 158: YY_RULE_SETUP #line 294 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yDIST; } YY_BREAK case 159: YY_RULE_SETUP #line 295 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yDO; } YY_BREAK case 160: YY_RULE_SETUP #line 296 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCLASS; } YY_BREAK case 161: YY_RULE_SETUP #line 297 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCLOCKING; } YY_BREAK case 162: YY_RULE_SETUP #line 298 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDGROUP; } YY_BREAK case 163: YY_RULE_SETUP #line 299 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDINTERFACE; } YY_BREAK case 164: YY_RULE_SETUP #line 300 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDPACKAGE; } YY_BREAK case 165: YY_RULE_SETUP #line 301 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDPROGRAM; } YY_BREAK case 166: YY_RULE_SETUP #line 302 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDPROPERTY; } YY_BREAK case 167: YY_RULE_SETUP #line 303 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDSEQUENCE; } YY_BREAK case 168: YY_RULE_SETUP #line 304 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENUM; } YY_BREAK case 169: YY_RULE_SETUP #line 305 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEXPECT; } YY_BREAK case 170: YY_RULE_SETUP #line 306 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEXPORT; } YY_BREAK case 171: YY_RULE_SETUP #line 307 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEXTENDS; } YY_BREAK case 172: YY_RULE_SETUP #line 308 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEXTERN; } YY_BREAK case 173: YY_RULE_SETUP #line 309 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFINAL; } YY_BREAK case 174: YY_RULE_SETUP #line 310 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFIRST_MATCH; } YY_BREAK case 175: YY_RULE_SETUP #line 311 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFOREACH; } YY_BREAK case 176: YY_RULE_SETUP #line 312 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFORKJOIN; } YY_BREAK case 177: YY_RULE_SETUP #line 313 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yIFF; } YY_BREAK case 178: YY_RULE_SETUP #line 314 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yIGNORE_BINS; } YY_BREAK case 179: YY_RULE_SETUP #line 315 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yILLEGAL_BINS; } YY_BREAK case 180: YY_RULE_SETUP #line 316 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yIMPORT; } YY_BREAK case 181: YY_RULE_SETUP #line 317 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINSIDE; } YY_BREAK case 182: YY_RULE_SETUP #line 318 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINT; } YY_BREAK case 183: YY_RULE_SETUP #line 319 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINTERFACE; } YY_BREAK case 184: YY_RULE_SETUP #line 320 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINTERSECT; } YY_BREAK case 185: YY_RULE_SETUP #line 321 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yJOIN; } YY_BREAK case 186: YY_RULE_SETUP #line 322 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yJOIN; } YY_BREAK case 187: YY_RULE_SETUP #line 323 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yLOCAL__LEX; } YY_BREAK case 188: YY_RULE_SETUP #line 324 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yLOGIC; } YY_BREAK case 189: YY_RULE_SETUP #line 325 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yLONGINT; } YY_BREAK case 190: YY_RULE_SETUP #line 326 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yMATCHES; } YY_BREAK case 191: YY_RULE_SETUP #line 327 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yMODPORT; } YY_BREAK case 192: YY_RULE_SETUP #line 328 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNEW__LEX; } YY_BREAK case 193: YY_RULE_SETUP #line 329 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNULL; } YY_BREAK case 194: YY_RULE_SETUP #line 330 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPACKAGE; } YY_BREAK case 195: YY_RULE_SETUP #line 331 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPACKED; } YY_BREAK case 196: YY_RULE_SETUP #line 332 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPRIORITY; } YY_BREAK case 197: YY_RULE_SETUP #line 333 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPROGRAM; } YY_BREAK case 198: YY_RULE_SETUP #line 334 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPROPERTY; } YY_BREAK case 199: YY_RULE_SETUP #line 335 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPROTECTED; } YY_BREAK case 200: YY_RULE_SETUP #line 336 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPURE; } YY_BREAK case 201: YY_RULE_SETUP #line 337 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRAND; } YY_BREAK case 202: YY_RULE_SETUP #line 338 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDC; } YY_BREAK case 203: YY_RULE_SETUP #line 339 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDCASE; } YY_BREAK case 204: YY_RULE_SETUP #line 340 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDSEQUENCE; } YY_BREAK case 205: YY_RULE_SETUP #line 341 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yREF; } YY_BREAK case 206: YY_RULE_SETUP #line 342 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRETURN; } YY_BREAK case 207: YY_RULE_SETUP #line 343 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySEQUENCE; } YY_BREAK case 208: YY_RULE_SETUP #line 344 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySHORTINT; } YY_BREAK case 209: YY_RULE_SETUP #line 345 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySHORTREAL; } YY_BREAK case 210: YY_RULE_SETUP #line 346 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySOLVE; } YY_BREAK case 211: YY_RULE_SETUP #line 347 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySTATIC__LEX; } YY_BREAK case 212: YY_RULE_SETUP #line 348 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySTRING; } YY_BREAK case 213: YY_RULE_SETUP #line 349 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySTRUCT; } YY_BREAK case 214: YY_RULE_SETUP #line 350 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySUPER; } YY_BREAK case 215: YY_RULE_SETUP #line 351 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTAGGED; } YY_BREAK case 216: YY_RULE_SETUP #line 352 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTHIS; } YY_BREAK case 217: YY_RULE_SETUP #line 353 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTHROUGHOUT; } YY_BREAK case 218: YY_RULE_SETUP #line 354 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTIMEPRECISION; } YY_BREAK case 219: YY_RULE_SETUP #line 355 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTIMEUNIT; } YY_BREAK case 220: YY_RULE_SETUP #line 356 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTYPE; } YY_BREAK case 221: YY_RULE_SETUP #line 357 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTYPEDEF; } YY_BREAK case 222: YY_RULE_SETUP #line 358 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNION; } YY_BREAK case 223: YY_RULE_SETUP #line 359 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNIQUE; } YY_BREAK case 224: YY_RULE_SETUP #line 360 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yVAR; } YY_BREAK case 225: YY_RULE_SETUP #line 361 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yVIRTUAL__LEX; } YY_BREAK case 226: YY_RULE_SETUP #line 362 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yVOID; } YY_BREAK case 227: YY_RULE_SETUP #line 363 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWAIT_ORDER; } YY_BREAK case 228: YY_RULE_SETUP #line 364 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWILDCARD; } YY_BREAK case 229: YY_RULE_SETUP #line 365 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWITH__LEX; } YY_BREAK case 230: YY_RULE_SETUP #line 366 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWITHIN; } YY_BREAK /* System Verilog 2009 */ /* Keywords */ case 231: YY_RULE_SETUP #line 372 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yACCEPT_ON; } YY_BREAK case 232: YY_RULE_SETUP #line 373 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCHECKER; } YY_BREAK case 233: YY_RULE_SETUP #line 374 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCHECKER; } YY_BREAK case 234: YY_RULE_SETUP #line 375 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEVENTUALLY; } YY_BREAK case 235: YY_RULE_SETUP #line 376 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yGLOBAL__LEX; } YY_BREAK case 236: YY_RULE_SETUP #line 377 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yIMPLIES; } YY_BREAK case 237: YY_RULE_SETUP #line 378 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yLET; } YY_BREAK case 238: YY_RULE_SETUP #line 379 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNEXTTIME; } YY_BREAK case 239: YY_RULE_SETUP #line 380 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yREJECT_ON; } YY_BREAK case 240: YY_RULE_SETUP #line 381 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRESTRICT; } YY_BREAK case 241: YY_RULE_SETUP #line 382 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yS_ALWAYS; } YY_BREAK case 242: YY_RULE_SETUP #line 383 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yS_EVENTUALLY; } YY_BREAK case 243: YY_RULE_SETUP #line 384 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yS_NEXTTIME; } YY_BREAK case 244: YY_RULE_SETUP #line 385 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yS_UNTIL; } YY_BREAK case 245: YY_RULE_SETUP #line 386 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yS_UNTIL_WITH; } YY_BREAK case 246: YY_RULE_SETUP #line 387 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySTRONG; } YY_BREAK case 247: YY_RULE_SETUP #line 388 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySYNC_ACCEPT_ON; } YY_BREAK case 248: YY_RULE_SETUP #line 389 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySYNC_REJECT_ON; } YY_BREAK case 249: YY_RULE_SETUP #line 390 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNIQUE0; } YY_BREAK case 250: YY_RULE_SETUP #line 391 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNTIL; } YY_BREAK case 251: YY_RULE_SETUP #line 392 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNTIL_WITH; } YY_BREAK case 252: YY_RULE_SETUP #line 393 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNTYPED; } YY_BREAK case 253: YY_RULE_SETUP #line 394 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWEAK; } YY_BREAK /* System Verilog 2012 */ /* Keywords */ case 254: YY_RULE_SETUP #line 400 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yIMPLEMENTS; } YY_BREAK case 255: YY_RULE_SETUP #line 401 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINTERCONNECT; } YY_BREAK case 256: YY_RULE_SETUP #line 402 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNETTYPE; } YY_BREAK case 257: YY_RULE_SETUP #line 403 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySOFT; } YY_BREAK /* Default PLI rule */ case 258: YY_RULE_SETUP #line 408 "VParseLex.l" { FL; VALTEXT; CALLBACK(sysfuncCb); return ygenSYSCALL; } YY_BREAK /************************************************************************/ /* Single character operator thingies */ case 259: YY_RULE_SETUP #line 415 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 260: YY_RULE_SETUP #line 416 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 261: YY_RULE_SETUP #line 419 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 262: YY_RULE_SETUP #line 420 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 263: YY_RULE_SETUP #line 421 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 264: YY_RULE_SETUP #line 422 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 265: YY_RULE_SETUP #line 423 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 266: YY_RULE_SETUP #line 424 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 267: YY_RULE_SETUP #line 425 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 268: YY_RULE_SETUP #line 426 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 269: YY_RULE_SETUP #line 427 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 270: YY_RULE_SETUP #line 428 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 271: YY_RULE_SETUP #line 429 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 272: YY_RULE_SETUP #line 430 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 273: YY_RULE_SETUP #line 431 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 274: YY_RULE_SETUP #line 432 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 275: YY_RULE_SETUP #line 433 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 276: YY_RULE_SETUP #line 434 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 277: YY_RULE_SETUP #line 435 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 278: YY_RULE_SETUP #line 436 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 279: YY_RULE_SETUP #line 437 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 280: YY_RULE_SETUP #line 438 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 281: YY_RULE_SETUP #line 439 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 282: YY_RULE_SETUP #line 440 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 283: YY_RULE_SETUP #line 441 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 284: YY_RULE_SETUP #line 442 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK case 285: YY_RULE_SETUP #line 443 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return VParseLextext[0]; } YY_BREAK /************************************************************************/ /* Operators and multi-character symbols */ /* Verilog 1995 Operators */ case 286: YY_RULE_SETUP #line 451 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ANDAND; } YY_BREAK case 287: YY_RULE_SETUP #line 452 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_OROR; } YY_BREAK case 288: YY_RULE_SETUP #line 453 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_LTE; } YY_BREAK case 289: YY_RULE_SETUP #line 454 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_GTE; } YY_BREAK case 290: YY_RULE_SETUP #line 455 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFT; } YY_BREAK case 291: YY_RULE_SETUP #line 456 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SRIGHT; } YY_BREAK case 292: YY_RULE_SETUP #line 457 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_EQUAL; } YY_BREAK case 293: YY_RULE_SETUP #line 458 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_NOTEQUAL; } YY_BREAK case 294: YY_RULE_SETUP #line 459 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_CASEEQUAL; } YY_BREAK case 295: YY_RULE_SETUP #line 460 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_CASENOTEQUAL; } YY_BREAK case 296: YY_RULE_SETUP #line 461 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_XNOR; } YY_BREAK case 297: YY_RULE_SETUP #line 462 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_XNOR; } YY_BREAK case 298: YY_RULE_SETUP #line 463 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_NAND; } YY_BREAK case 299: YY_RULE_SETUP #line 464 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_NOR; } YY_BREAK case 300: YY_RULE_SETUP #line 465 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSGT; } YY_BREAK case 301: YY_RULE_SETUP #line 466 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_EQGT; } YY_BREAK case 302: YY_RULE_SETUP #line 467 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ASTGT; } YY_BREAK case 303: YY_RULE_SETUP #line 468 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ANDANDAND; } YY_BREAK /* Verilog 2001 Operators */ case 304: YY_RULE_SETUP #line 473 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFT; } YY_BREAK case 305: YY_RULE_SETUP #line 474 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SSRIGHT; } YY_BREAK case 306: YY_RULE_SETUP #line 475 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_POW; } YY_BREAK case 307: YY_RULE_SETUP #line 476 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_PLUSCOLON; } YY_BREAK case 308: YY_RULE_SETUP #line 477 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSCOLON; } YY_BREAK case 309: YY_RULE_SETUP #line 478 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_DOTSTAR; } YY_BREAK /* SystemVerilog 2005 Operators */ case 310: YY_RULE_SETUP #line 483 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_TICK; } YY_BREAK case 311: YY_RULE_SETUP #line 484 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_TICKBRA; } YY_BREAK case 312: YY_RULE_SETUP #line 485 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_WILDEQUAL; } YY_BREAK case 313: YY_RULE_SETUP #line 486 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_WILDNOTEQUAL; } YY_BREAK case 314: YY_RULE_SETUP #line 487 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_PLUSPLUS; } YY_BREAK case 315: YY_RULE_SETUP #line 488 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSMINUS; } YY_BREAK case 316: YY_RULE_SETUP #line 489 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_PLUSEQ; } YY_BREAK case 317: YY_RULE_SETUP #line 490 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSEQ; } YY_BREAK case 318: YY_RULE_SETUP #line 491 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_TIMESEQ; } YY_BREAK case 319: YY_RULE_SETUP #line 492 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_DIVEQ; } YY_BREAK case 320: YY_RULE_SETUP #line 493 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MODEQ; } YY_BREAK case 321: YY_RULE_SETUP #line 494 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ANDEQ; } YY_BREAK case 322: YY_RULE_SETUP #line 495 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_OREQ; } YY_BREAK case 323: YY_RULE_SETUP #line 496 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_XOREQ; } YY_BREAK case 324: YY_RULE_SETUP #line 497 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFTEQ; } YY_BREAK case 325: YY_RULE_SETUP #line 498 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SRIGHTEQ; } YY_BREAK case 326: YY_RULE_SETUP #line 499 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFTEQ; } YY_BREAK case 327: YY_RULE_SETUP #line 500 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SSRIGHTEQ; } YY_BREAK case 328: YY_RULE_SETUP #line 501 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSGTGT; } YY_BREAK case 329: YY_RULE_SETUP #line 502 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_POUNDPOUND; } YY_BREAK case 330: YY_RULE_SETUP #line 503 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ATAT; } YY_BREAK case 331: YY_RULE_SETUP #line 504 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_COLONCOLON; } YY_BREAK case 332: YY_RULE_SETUP #line 505 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_COLONEQ; } YY_BREAK case 333: /* rule 333 can match eol */ YY_RULE_SETUP #line 506 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_COLONDIV; } /* : then comment is not ":/" */ YY_BREAK case 334: YY_RULE_SETUP #line 507 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ORMINUSGT; } YY_BREAK case 335: YY_RULE_SETUP #line 508 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_OREQGT; } YY_BREAK /* Some simulators allow whitespace here. Grr */ case 336: YY_RULE_SETUP #line 510 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_BRASTAR; } YY_BREAK case 337: YY_RULE_SETUP #line 511 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_BRAEQ; } YY_BREAK case 338: YY_RULE_SETUP #line 512 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_BRAMINUSGT; } YY_BREAK case 339: YY_RULE_SETUP #line 513 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_BRAPLUSKET; } YY_BREAK /* SystemVerilog 2009 Operators */ case 340: YY_RULE_SETUP #line 518 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_POUNDMINUSPD; } YY_BREAK case 341: YY_RULE_SETUP #line 519 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_POUNDEQPD; } YY_BREAK case 342: YY_RULE_SETUP #line 520 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_LTMINUSGT; } YY_BREAK /* Identifiers and numbers */ /* Consume a following space, as we're going to add one to the symbol, we'd like to avoid inserting an extra */ case 343: YY_RULE_SETUP #line 526 "VParseLex.l" { if (VParseLex::symEscapeless(VParseLextext+1,VParseLexleng-1-1)) { string sym = string(VParseLextext+1,VParseLexleng-1-1); FL; CALLBACKS(symbolCb, sym); VALTEXTS(sym); unput(' '); } else { string sym = string(VParseLextext,VParseLexleng-1) + ' '; FL; CALLBACKS(symbolCb, sym); VALTEXTS(sym); } return yaID__LEX; } YY_BREAK case 344: YY_RULE_SETUP #line 534 "VParseLex.l" { if (VParseLex::symEscapeless(VParseLextext+1,VParseLexleng-1)) { string sym = string(VParseLextext+1,VParseLexleng-1); FL; CALLBACKS(symbolCb, sym); VALTEXTS(sym); } else { string sym = string(VParseLextext,VParseLexleng) + ' '; FL; CALLBACKS(symbolCb, sym); VALTEXTS(sym); } return yaID__LEX; } YY_BREAK case 345: YY_RULE_SETUP #line 542 "VParseLex.l" { FL; VALTEXT; CALLBACK(symbolCb); return yaID__LEX; } YY_BREAK case 346: /* rule 346 can match eol */ YY_RULE_SETUP #line 543 "VParseLex.l" { FL; VALTEXT; CALLBACK(stringCb); return yaSTRING; } YY_BREAK case 347: YY_RULE_SETUP #line 545 "VParseLex.l" { yy_push_state(STRING); yymore(); } YY_BREAK case 348: /* rule 348 can match eol */ YY_RULE_SETUP #line 547 "VParseLex.l" { /* "# 1'b0" is a delay value so must lex as "#" "1" "'b0" */ if (LEXP->prevLexToken()=='#') { int shortlen = 0; while (isdigit(VParseLextext[shortlen])) shortlen++; if (shortlen) { // Return is stuff before ' VALTEXTS(string(VParseLextext,shortlen)); // Push rest for later parse LEXP->unputString(VParseLextext+shortlen, VParseLexleng-shortlen); FL; LINECHECKS(VParseLextext,shortlen); CALLBACKS(numberCb,string(VParseLextext,shortlen)); return yaINTNUM; } } FL; VALTEXT; LINECHECK(); CALLBACK(numberCb); return yaINTNUM; } YY_BREAK case 349: YY_RULE_SETUP #line 562 "VParseLex.l" { FL; VALTEXT; CALLBACK(numberCb); return yaINTNUM; } YY_BREAK case 350: YY_RULE_SETUP #line 565 "VParseLex.l" { FL; VALTEXT; CALLBACK(numberCb); return yaFLOATNUM; } YY_BREAK case 351: YY_RULE_SETUP #line 568 "VParseLex.l" { FL; VALTEXT; CALLBACK(numberCb); return yaFLOATNUM; } YY_BREAK case 352: YY_RULE_SETUP #line 571 "VParseLex.l" { FL; VALTEXT; CALLBACK(numberCb); return yaTIMENUM; } YY_BREAK /************************************************************************/ /* STRINGS */ case YY_STATE_EOF(STRING): #line 578 "VParseLex.l" { yyerrorf("EOF in unterminated string"); VParseLexleng = 0; yy_pop_state(); } YY_BREAK case 353: /* rule 353 can match eol */ YY_RULE_SETUP #line 579 "VParseLex.l" { yyerrorf("Unterminated string"); NEXTLINE(); } YY_BREAK case 354: /* rule 354 can match eol */ YY_RULE_SETUP #line 580 "VParseLex.l" { yymore(); NEXTLINE(); } YY_BREAK case 355: YY_RULE_SETUP #line 581 "VParseLex.l" { yymore(); } YY_BREAK case 356: YY_RULE_SETUP #line 582 "VParseLex.l" { yy_pop_state(); FL; VALTEXT; CALLBACK(stringCb); return yaSTRING; } YY_BREAK case 357: YY_RULE_SETUP #line 584 "VParseLex.l" { yymore(); } YY_BREAK case 358: YY_RULE_SETUP #line 585 "VParseLex.l" { yymore(); } YY_BREAK /************************************************************************/ /* Multi-line COMMENTS */ case 359: YY_RULE_SETUP #line 589 "VParseLex.l" { yymore(); } YY_BREAK case 360: /* rule 360 can match eol */ YY_RULE_SETUP #line 590 "VParseLex.l" { yymore(); NEXTLINE(); } YY_BREAK case 361: YY_RULE_SETUP #line 591 "VParseLex.l" { VALTEXT; CALLBACK(commentCb); yy_pop_state(); } // No FL; it's at comment begin YY_BREAK case 362: YY_RULE_SETUP #line 592 "VParseLex.l" { yymore(); } YY_BREAK case 363: YY_RULE_SETUP #line 593 "VParseLex.l" { yymore(); } YY_BREAK case YY_STATE_EOF(CMTMODE): #line 594 "VParseLex.l" { yyerrorf("EOF in '/* ... */' block comment"); VParseLexleng = 0; yy_pop_state(); } YY_BREAK /************************************************************************/ /* Protected */ case 364: /* rule 364 can match eol */ YY_RULE_SETUP #line 599 "VParseLex.l" { if (LPARSEP->useProtected()) yymore(); NEXTLINE(); } YY_BREAK case 365: YY_RULE_SETUP #line 600 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); yy_pop_state(); } YY_BREAK case 366: YY_RULE_SETUP #line 601 "VParseLex.l" { if (LPARSEP->useProtected()) yymore(); } YY_BREAK case 367: YY_RULE_SETUP #line 602 "VParseLex.l" { if (LPARSEP->useProtected()) yymore(); } YY_BREAK case YY_STATE_EOF(PROTMODE): #line 603 "VParseLex.l" { yyerrorf("EOF in `protected"); VParseLexleng = 0; yy_pop_state(); } YY_BREAK /************************************************************************/ /* Attributes */ case 368: /* rule 368 can match eol */ YY_RULE_SETUP #line 608 "VParseLex.l" { yymore(); NEXTLINE(); } YY_BREAK case 369: YY_RULE_SETUP #line 609 "VParseLex.l" { FL; VALTEXT; CALLBACK(attributeCb); yy_pop_state(); } YY_BREAK case 370: YY_RULE_SETUP #line 610 "VParseLex.l" { yymore(); } YY_BREAK case 371: YY_RULE_SETUP #line 611 "VParseLex.l" { yymore(); } YY_BREAK case YY_STATE_EOF(ATTRMODE): #line 612 "VParseLex.l" { yyerrorf("EOF in (*"); VParseLexleng = 0; yy_pop_state(); } YY_BREAK /************************************************************************/ /* Attributes */ /* Note simulators vary in support for "(* /_*something*_/ foo*)" where _ doesn't exist */ case 372: /* rule 372 can match eol */ YY_RULE_SETUP #line 619 "VParseLex.l" { yymore(); yy_push_state(ATTRMODE); } // Doesn't match (*), but (* attr_spec YY_BREAK /************************************************************************/ /* Preprocessor */ case 373: YY_RULE_SETUP #line 625 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 374: YY_RULE_SETUP #line 626 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 375: YY_RULE_SETUP #line 627 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); LEXP->m_inCellDefine=true; } YY_BREAK case 376: YY_RULE_SETUP #line 628 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only YY_BREAK case 377: YY_RULE_SETUP #line 629 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog 2001 YY_BREAK case 378: YY_RULE_SETUP #line 630 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog 2009 YY_BREAK case 379: YY_RULE_SETUP #line 631 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only YY_BREAK case 380: YY_RULE_SETUP #line 632 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only YY_BREAK case 381: YY_RULE_SETUP #line 633 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only YY_BREAK case 382: YY_RULE_SETUP #line 634 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only YY_BREAK case 383: YY_RULE_SETUP #line 635 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 384: YY_RULE_SETUP #line 636 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 385: YY_RULE_SETUP #line 637 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); LEXP->m_inCellDefine=false; } YY_BREAK case 386: YY_RULE_SETUP #line 638 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK case 387: YY_RULE_SETUP #line 639 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 388: YY_RULE_SETUP #line 640 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK case 389: /* rule 389 can match eol */ YY_RULE_SETUP #line 641 "VParseLex.l" { LPARSEP->inLineDirective(VParseLextext); FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK case 390: YY_RULE_SETUP #line 642 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 391: YY_RULE_SETUP #line 643 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 392: YY_RULE_SETUP #line 644 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 393: YY_RULE_SETUP #line 645 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 394: YY_RULE_SETUP #line 646 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 395: YY_RULE_SETUP #line 647 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 396: YY_RULE_SETUP #line 648 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK case 397: YY_RULE_SETUP #line 649 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog 2005 YY_BREAK case 398: YY_RULE_SETUP #line 650 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK case 399: YY_RULE_SETUP #line 651 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); yy_push_state(PROTMODE); } YY_BREAK case 400: YY_RULE_SETUP #line 652 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 401: YY_RULE_SETUP #line 653 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 402: YY_RULE_SETUP #line 654 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK case 403: YY_RULE_SETUP #line 655 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 404: YY_RULE_SETUP #line 656 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK /* See also setLanguage below */ case 405: YY_RULE_SETUP #line 659 "VParseLex.l" { yy_push_state(V95); CALLBACK(preprocCb); } YY_BREAK case 406: YY_RULE_SETUP #line 660 "VParseLex.l" { yy_push_state(V01); CALLBACK(preprocCb); } YY_BREAK case 407: YY_RULE_SETUP #line 661 "VParseLex.l" { yy_push_state(V01); CALLBACK(preprocCb); } YY_BREAK case 408: YY_RULE_SETUP #line 662 "VParseLex.l" { yy_push_state(V05); CALLBACK(preprocCb); } YY_BREAK case 409: YY_RULE_SETUP #line 663 "VParseLex.l" { yy_push_state(S05); CALLBACK(preprocCb); } YY_BREAK case 410: YY_RULE_SETUP #line 664 "VParseLex.l" { yy_push_state(S09); CALLBACK(preprocCb); } YY_BREAK case 411: YY_RULE_SETUP #line 665 "VParseLex.l" { yy_push_state(S12); CALLBACK(preprocCb); } YY_BREAK case 412: YY_RULE_SETUP #line 666 "VParseLex.l" { yy_pop_state(); CALLBACK(preprocCb); } YY_BREAK /************************************************************************/ /* Default rules - leave last */ case 413: YY_RULE_SETUP #line 673 "VParseLex.l" { FL; VALTEXT; if (LPARSEP->sigParser()) { yyerrorf("Define or directive not defined: %s",VParseLextext); } else { CALLBACK(preprocCb); } } YY_BREAK case 414: YY_RULE_SETUP #line 676 "VParseLex.l" { FL; VALTEXT; CALLBACK(commentCb); } /* throw away single line comments */ YY_BREAK case 415: YY_RULE_SETUP #line 677 "VParseLex.l" { FL; yy_push_state(CMTMODE); yymore(); } // FL; marks start for COMMENT callback YY_BREAK case 416: YY_RULE_SETUP #line 678 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return ygenOPERATOR; } /* return single char ops. */ YY_BREAK /* Catch all - absolutely last */ case 417: /* rule 417 can match eol */ YY_RULE_SETUP #line 682 "VParseLex.l" { yyerrorf("Missing VParseLex.l rule: Default rule invoked in state %d: %s", YY_START, VParseLextext); } YY_BREAK case 418: YY_RULE_SETUP #line 683 "VParseLex.l" ECHO; YY_BREAK #line 4676 "VParseLex_pretmp.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(V95): case YY_STATE_EOF(V01): case YY_STATE_EOF(V05): case YY_STATE_EOF(S05): case YY_STATE_EOF(S09): case YY_STATE_EOF(S12): case YY_STATE_EOF(DUMMY_TO_AVOID_WARNING): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed VParseLexin at a new source and called * VParseLexlex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = VParseLexin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */ yy_cp = (yy_c_buf_p); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( VParseLexwrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * VParseLextext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of VParseLexlex */ /* %ok-for-header */ /* %if-c++-only */ /* %not-for-header */ /* %ok-for-header */ /* %endif */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ /* %if-c-only */ static int yy_get_next_buffer (void) /* %endif */ /* %if-c++-only */ /* %endif */ { register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = (yytext_ptr); register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ VParseLexrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), (size_t) num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; VParseLexrestart(VParseLexin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) VParseLexrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ /* %if-c-only */ /* %not-for-header */ static yy_state_type yy_get_previous_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { register yy_state_type yy_current_state; register char *yy_cp; /* %% [15.0] code to get the start state into yy_current_state goes here */ yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { /* %% [16.0] code to find the next state goes here */ register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 1946 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ /* %if-c-only */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) /* %endif */ /* %if-c++-only */ /* %endif */ { register int yy_is_jam; /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */ register char *yy_cp = (yy_c_buf_p); register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 1946 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 1945); return yy_is_jam ? 0 : yy_current_state; } /* %if-c-only */ static void yyunput (int c, register char * yy_bp ) /* %endif */ /* %if-c++-only */ /* %endif */ { register char *yy_cp; yy_cp = (yy_c_buf_p); /* undo effects of setting up VParseLextext */ *yy_cp = (yy_hold_char); if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ register int number_to_move = (yy_n_chars) + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; /* %% [18.0] update VParseLexlineno here */ (yytext_ptr) = yy_bp; (yy_hold_char) = *yy_cp; (yy_c_buf_p) = yy_cp; } /* %if-c-only */ /* %endif */ /* %if-c-only */ #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif /* %endif */ /* %if-c++-only */ /* %endif */ { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ VParseLexrestart(VParseLexin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( VParseLexwrap( ) ) return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve VParseLextext */ (yy_hold_char) = *++(yy_c_buf_p); /* %% [19.0] update BOL and VParseLexlineno */ return c; } /* %if-c-only */ #endif /* ifndef YY_NO_INPUT */ /* %endif */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ /* %if-c-only */ void VParseLexrestart (FILE * input_file ) /* %endif */ /* %if-c++-only */ /* %endif */ { if ( ! YY_CURRENT_BUFFER ){ VParseLexensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = VParseLex_create_buffer(VParseLexin,YY_BUF_SIZE ); } VParseLex_init_buffer(YY_CURRENT_BUFFER,input_file ); VParseLex_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ /* %if-c-only */ void VParseLex_switch_to_buffer (YY_BUFFER_STATE new_buffer ) /* %endif */ /* %if-c++-only */ /* %endif */ { /* TODO. We should be able to replace this entire function body * with * VParseLexpop_buffer_state(); * VParseLexpush_buffer_state(new_buffer); */ VParseLexensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; VParseLex_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (VParseLexwrap()) processing, but the only time this flag * is looked at is after VParseLexwrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } /* %if-c-only */ static void VParseLex_load_buffer_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; VParseLexin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ /* %if-c-only */ YY_BUFFER_STATE VParseLex_create_buffer (FILE * file, int size ) /* %endif */ /* %if-c++-only */ /* %endif */ { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) VParseLexalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in VParseLex_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) VParseLexalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in VParseLex_create_buffer()" ); b->yy_is_our_buffer = 1; VParseLex_init_buffer(b,file ); return b; } /** Destroy the buffer. * @param b a buffer created with VParseLex_create_buffer() * */ /* %if-c-only */ void VParseLex_delete_buffer (YY_BUFFER_STATE b ) /* %endif */ /* %if-c++-only */ /* %endif */ { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) VParseLexfree((void *) b->yy_ch_buf ); VParseLexfree((void *) b ); } /* %if-c-only */ #ifndef __cplusplus extern int isatty (int ); #endif /* __cplusplus */ /* %endif */ /* %if-c++-only */ /* %endif */ /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a VParseLexrestart() or at EOF. */ /* %if-c-only */ static void VParseLex_init_buffer (YY_BUFFER_STATE b, FILE * file ) /* %endif */ /* %if-c++-only */ /* %endif */ { int oerrno = errno; VParseLex_flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then VParseLex_init_buffer was _probably_ * called from VParseLexrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } /* %if-c-only */ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; /* %endif */ /* %if-c++-only */ /* %endif */ errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ /* %if-c-only */ void VParseLex_flush_buffer (YY_BUFFER_STATE b ) /* %endif */ /* %if-c++-only */ /* %endif */ { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) VParseLex_load_buffer_state( ); } /* %if-c-or-c++ */ /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ /* %if-c-only */ void VParseLexpush_buffer_state (YY_BUFFER_STATE new_buffer ) /* %endif */ /* %if-c++-only */ /* %endif */ { if (new_buffer == NULL) return; VParseLexensure_buffer_stack(); /* This block is copied from VParseLex_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from VParseLex_switch_to_buffer. */ VParseLex_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /* %endif */ /* %if-c-or-c++ */ /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ /* %if-c-only */ void VParseLexpop_buffer_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { if (!YY_CURRENT_BUFFER) return; VParseLex_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { VParseLex_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* %endif */ /* %if-c-or-c++ */ /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ /* %if-c-only */ static void VParseLexensure_buffer_stack (void) /* %endif */ /* %if-c++-only */ /* %endif */ { int num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; (yy_buffer_stack) = (struct yy_buffer_state**)VParseLexalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in VParseLexensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)VParseLexrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in VParseLexensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /* %endif */ /* %if-c-only */ /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE VParseLex_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) VParseLexalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in VParseLex_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; VParseLex_switch_to_buffer(b ); return b; } /* %endif */ /* %if-c-only */ /** Setup the input buffer state to scan a string. The next call to VParseLexlex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * VParseLex_scan_bytes() instead. */ YY_BUFFER_STATE VParseLex_scan_string (yyconst char * yystr ) { return VParseLex_scan_bytes(yystr,strlen(yystr) ); } /* %endif */ /* %if-c-only */ /** Setup the input buffer state to scan the given bytes. The next call to VParseLexlex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE VParseLex_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) VParseLexalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in VParseLex_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = VParseLex_scan_buffer(buf,n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in VParseLex_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } /* %endif */ /* %if-c-only */ static void yy_push_state (int new_state ) /* %endif */ /* %if-c++-only */ /* %endif */ { if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) ) { yy_size_t new_size; (yy_start_stack_depth) += YY_START_STACK_INCR; new_size = (yy_start_stack_depth) * sizeof( int ); if ( ! (yy_start_stack) ) (yy_start_stack) = (int *) VParseLexalloc(new_size ); else (yy_start_stack) = (int *) VParseLexrealloc((void *) (yy_start_stack),new_size ); if ( ! (yy_start_stack) ) YY_FATAL_ERROR( "out of memory expanding start-condition stack" ); } (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START; BEGIN(new_state); } /* %if-c-only */ static void yy_pop_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { if ( --(yy_start_stack_ptr) < 0 ) YY_FATAL_ERROR( "start-condition stack underflow" ); BEGIN((yy_start_stack)[(yy_start_stack_ptr)]); } /* %if-c-only */ static int yy_top_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { return (yy_start_stack)[(yy_start_stack_ptr) - 1]; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif /* %if-c-only */ static void yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* %endif */ /* %if-c++-only */ /* %endif */ /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up VParseLextext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ VParseLextext[VParseLexleng] = (yy_hold_char); \ (yy_c_buf_p) = VParseLextext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ VParseLexleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /* %if-c-only */ /* %if-reentrant */ /* %endif */ /** Get the current line number. * */ int VParseLexget_lineno (void) { return VParseLexlineno; } /** Get the input stream. * */ FILE *VParseLexget_in (void) { return VParseLexin; } /** Get the output stream. * */ FILE *VParseLexget_out (void) { return VParseLexout; } /** Get the length of the current token. * */ int VParseLexget_leng (void) { return VParseLexleng; } /** Get the current token. * */ char *VParseLexget_text (void) { return VParseLextext; } /* %if-reentrant */ /* %endif */ /** Set the current line number. * @param line_number * */ void VParseLexset_lineno (int line_number ) { VParseLexlineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * * @see VParseLex_switch_to_buffer */ void VParseLexset_in (FILE * in_str ) { VParseLexin = in_str ; } void VParseLexset_out (FILE * out_str ) { VParseLexout = out_str ; } int VParseLexget_debug (void) { return VParseLex_flex_debug; } void VParseLexset_debug (int bdebug ) { VParseLex_flex_debug = bdebug ; } /* %endif */ /* %if-reentrant */ /* %if-bison-bridge */ /* %endif */ /* %endif if-c-only */ /* %if-c-only */ static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from VParseLexlex_destroy(), so don't allocate here. */ (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; (yy_start_stack_ptr) = 0; (yy_start_stack_depth) = 0; (yy_start_stack) = NULL; /* Defined in main.c */ #ifdef YY_STDINIT VParseLexin = stdin; VParseLexout = stdout; #else VParseLexin = (FILE *) 0; VParseLexout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * VParseLexlex_init() */ return 0; } /* %endif */ /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */ /* VParseLexlex_destroy is for both reentrant and non-reentrant scanners. */ int VParseLexlex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ VParseLex_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; VParseLexpop_buffer_state(); } /* Destroy the stack itself. */ VParseLexfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Destroy the start condition stack. */ VParseLexfree((yy_start_stack) ); (yy_start_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * VParseLexlex() is called, initialization will occur. */ yy_init_globals( ); /* %if-reentrant */ /* %endif */ return 0; } /* %endif */ /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *VParseLexalloc (yy_size_t size ) { return (void *) malloc( size ); } void *VParseLexrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void VParseLexfree (void * ptr ) { free( (char *) ptr ); /* see VParseLexrealloc() for (char *) cast */ } /* %if-tables-serialization definitions */ /* %define-yytables The name for this specific scanner's tables. */ #define YYTABLES_NAME "yytables" /* %endif */ /* %ok-for-header */ #line 683 "VParseLex.l" void VParseLex::unputString(const char* textp) { s_currentLexp = this; // Add characters to input stream in back-to-front order const char* cp; for (cp = textp; *cp; cp++); for (cp--; cp >= textp; cp--) { unput(*cp); } } void VParseLex::unputString(const char* textp, size_t length) { s_currentLexp = this; // Add characters to input stream in back-to-front order const char* cp = textp; for (cp += length - 1; length--; cp--) { unput(*cp); } } void VParseLex::unused() { if (0) { // Prevent unused warnings yy_top_state(); } } int VParseLex::yylexReadTok() { // Call VParseLexlex() remembering last non-whitespace token int token = VParseLexlex(); m_prevLexToken = token; // Save so can find '#' to parse following number return token; } int VParseLex::lexToken(VParseBisonYYSType* yylvalp) { // Fetch next token from prefetch or real lexer s_currentLexp = this; int token; if (m_ahead) { // We prefetched an extra token, give it back m_ahead = false; token = m_aheadToken; *yylvalp = m_aheadVal; } else { // Parse new token s_yylvalp = yylvalp; // Read by VParseLexlex() token = yylexReadTok(); } // If a paren, read another if (token == '(' || token == yCONST__LEX || token == yGLOBAL__LEX || token == yLOCAL__LEX || token == yNEW__LEX || token == ySTATIC__LEX || token == yVIRTUAL__LEX || token == yWITH__LEX // Never put yID_* here; below symbol table resolution would break ) { #ifdef FLEX_DEBUG if (VParseLex_flex_debug) { cout<<" lexToken: reading ahead to find possible strength"<str = "global"; } // Avoid 2009 "global" conflicting with old code when we can } else if (token == yLOCAL__LEX) { if (nexttok == yP_COLONCOLON) token = yLOCAL__COLONCOLON; else token = yLOCAL__ETC; } else if (token == yNEW__LEX) { if (nexttok == '(') token = yNEW__PAREN; else token = yNEW__ETC; } else if (token == ySTATIC__LEX) { if (nexttok == yCONSTRAINT) token = ySTATIC__CONSTRAINT; else token = ySTATIC__ETC; } else if (token == yVIRTUAL__LEX) { if (nexttok == yCLASS) token = yVIRTUAL__CLASS; else if (nexttok == yINTERFACE) token = yVIRTUAL__INTERFACE; else if (nexttok == yaID__ETC || nexttok == yaID__LEX) // || nexttok == yaID__aINTERFACE // but we may not know interfaces yet. token = yVIRTUAL__anyID; else token = yVIRTUAL__ETC; } else if (token == yWITH__LEX) { if (nexttok == '(') token = yWITH__PAREN; else if (nexttok == '[') token = yWITH__BRA; else if (nexttok == '{') token = yWITH__CUR; else token = yWITH__ETC; } // If add to above "else if", also add to "if (token" further above } // Non-lookahead conversions // If a function/task convert token based on earlier detection of yPURE yVIRTUAL switch (token) { case yPURE: m_pvstate = 1; // found pure break; case yVIRTUAL__ETC: if (m_pvstate == 1) m_pvstate = 2; // found pure virtual else m_pvstate = 0; break; case yFUNCTION__LEX: token = (m_pvstate==2) ? yFUNCTION__aPUREV : yFUNCTION__ETC; m_pvstate = 0; break; case yTASK__LEX: token = (m_pvstate==2) ? yTASK__aPUREV : yTASK__ETC; m_pvstate = 0; break; case ';': // Just to be safe m_pvstate = 0; break; default: if (m_pvstate == 1) m_pvstate = 0; break; } // If an id, change the type based on symbol table // Note above sometimes converts yGLOBAL to a yaID__LEX s_yylvalp->scp = NULL; if (token == yaID__LEX) { VAstEnt* scp; if (VAstEnt* look_underp = LPARSEP->symTableNextId()) { if (VParseLex_flex_debug) { cout<<" lexToken: next id lookup forced under "<str<<"\""<findSym(s_yylvalp->str); // "consume" it. Must set again if want another token under temp scope LPARSEP->symTableNextId(NULL); } else { scp = LPARSEP->syms().findEntUpward(s_yylvalp->str); } if (scp) { s_yylvalp->scp = scp; switch (scp->type()) { case VAstType::PACKAGE: token = yaID__aPACKAGE; break; case VAstType::CLASS: token = yaID__aTYPE; break; case VAstType::COVERGROUP: token = yaID__aTYPE; break; case VAstType::TYPE: token = yaID__aTYPE; break; default: token = yaID__ETC; break; } } else { // Not found token = yaID__ETC; } } return token; } int VParseLex::lexToBison(VParseBisonYYSType* yylvalp) { int tok = lexToken(yylvalp); if (VParseLex_flex_debug || LPARSEP->debug()>=6) { // When debugging flex OR bison string shortstr = yylvalp->str; if (shortstr.length()>20) shortstr = string(shortstr,20)+"..."; cout<<" lexToBison TOKEN="<scp) cout<<" scp="<scp->ascii(); cout<. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { yaFLOATNUM = 258, yaID__ETC = 259, yaID__LEX = 260, yaID__aCLASS = 261, yaID__aPACKAGE = 262, yaID__aTYPE = 263, yaINTNUM = 264, yaTIMENUM = 265, yaSTRING = 266, yaSTRING__IGNORE = 267, yaTIMINGSPEC = 268, ygenGATE = 269, ygenCONFIGKEYWORD = 270, ygenOPERATOR = 271, ygenSTRENGTH = 272, ygenSYSCALL = 273, yACCEPT_ON = 274, yALIAS = 275, yALWAYS = 276, yAND = 277, yASSERT = 278, yASSIGN = 279, yASSUME = 280, yAUTOMATIC = 281, yBEFORE = 282, yBEGIN = 283, yBIND = 284, yBINS = 285, yBINSOF = 286, yBIT = 287, yBREAK = 288, yBUF = 289, yBYTE = 290, yCASE = 291, yCASEX = 292, yCASEZ = 293, yCHANDLE = 294, yCHECKER = 295, yCLASS = 296, yCLOCK = 297, yCLOCKING = 298, yCONSTRAINT = 299, yCONST__ETC = 300, yCONST__LEX = 301, yCONST__LOCAL = 302, yCONST__REF = 303, yCONTEXT = 304, yCONTINUE = 305, yCOVER = 306, yCOVERGROUP = 307, yCOVERPOINT = 308, yCROSS = 309, yDEASSIGN = 310, yDEFAULT = 311, yDEFPARAM = 312, yDISABLE = 313, yDIST = 314, yDO = 315, yEDGE = 316, yELSE = 317, yEND = 318, yENDCASE = 319, yENDCHECKER = 320, yENDCLASS = 321, yENDCLOCKING = 322, yENDFUNCTION = 323, yENDGENERATE = 324, yENDGROUP = 325, yENDINTERFACE = 326, yENDMODULE = 327, yENDPACKAGE = 328, yENDPROGRAM = 329, yENDPROPERTY = 330, yENDSEQUENCE = 331, yENDSPECIFY = 332, yENDTABLE = 333, yENDTASK = 334, yENUM = 335, yEVENT = 336, yEVENTUALLY = 337, yEXPECT = 338, yEXPORT = 339, yEXTENDS = 340, yEXTERN = 341, yFINAL = 342, yFIRST_MATCH = 343, yFOR = 344, yFORCE = 345, yFOREACH = 346, yFOREVER = 347, yFORK = 348, yFORKJOIN = 349, yFUNCTION__ETC = 350, yFUNCTION__LEX = 351, yFUNCTION__aPUREV = 352, yGENERATE = 353, yGENVAR = 354, yGLOBAL__CLOCKING = 355, yGLOBAL__LEX = 356, yIF = 357, yIFF = 358, yIGNORE_BINS = 359, yILLEGAL_BINS = 360, yIMPLEMENTS = 361, yIMPLIES = 362, yIMPORT = 363, yINITIAL = 364, yINOUT = 365, yINPUT = 366, yINSIDE = 367, yINT = 368, yINTEGER = 369, yINTERCONNECT = 370, yINTERFACE = 371, yINTERSECT = 372, yJOIN = 373, yLET = 374, yLOCALPARAM = 375, yLOCAL__COLONCOLON = 376, yLOCAL__ETC = 377, yLOCAL__LEX = 378, yLOGIC = 379, yLONGINT = 380, yMATCHES = 381, yMODPORT = 382, yMODULE = 383, yNAND = 384, yNEGEDGE = 385, yNETTYPE = 386, yNEW__ETC = 387, yNEW__LEX = 388, yNEW__PAREN = 389, yNEXTTIME = 390, yNOR = 391, yNOT = 392, yNULL = 393, yOR = 394, yOUTPUT = 395, yPACKAGE = 396, yPACKED = 397, yPARAMETER = 398, yPOSEDGE = 399, yPRIORITY = 400, yPROGRAM = 401, yPROPERTY = 402, yPROTECTED = 403, yPURE = 404, yRAND = 405, yRANDC = 406, yRANDCASE = 407, yRANDSEQUENCE = 408, yREAL = 409, yREALTIME = 410, yREF = 411, yREG = 412, yREJECT_ON = 413, yRELEASE = 414, yREPEAT = 415, yRESTRICT = 416, yRETURN = 417, ySCALARED = 418, ySEQUENCE = 419, ySHORTINT = 420, ySHORTREAL = 421, ySIGNED = 422, ySOFT = 423, ySOLVE = 424, ySPECIFY = 425, ySPECPARAM = 426, ySTATIC__CONSTRAINT = 427, ySTATIC__ETC = 428, ySTATIC__LEX = 429, ySTRING = 430, ySTRONG = 431, ySTRUCT = 432, ySUPER = 433, ySUPPLY0 = 434, ySUPPLY1 = 435, ySYNC_ACCEPT_ON = 436, ySYNC_REJECT_ON = 437, yS_ALWAYS = 438, yS_EVENTUALLY = 439, yS_NEXTTIME = 440, yS_UNTIL = 441, yS_UNTIL_WITH = 442, yTABLE = 443, yTAGGED = 444, yTASK__ETC = 445, yTASK__LEX = 446, yTASK__aPUREV = 447, yTHIS = 448, yTHROUGHOUT = 449, yTIME = 450, yTIMEPRECISION = 451, yTIMEUNIT = 452, yTRI = 453, yTRI0 = 454, yTRI1 = 455, yTRIAND = 456, yTRIOR = 457, yTRIREG = 458, yTYPE = 459, yTYPEDEF = 460, yUNION = 461, yUNIQUE = 462, yUNIQUE0 = 463, yUNSIGNED = 464, yUNTIL = 465, yUNTIL_WITH = 466, yUNTYPED = 467, yVAR = 468, yVECTORED = 469, yVIRTUAL__CLASS = 470, yVIRTUAL__ETC = 471, yVIRTUAL__INTERFACE = 472, yVIRTUAL__LEX = 473, yVIRTUAL__anyID = 474, yVOID = 475, yWAIT = 476, yWAIT_ORDER = 477, yWAND = 478, yWEAK = 479, yWHILE = 480, yWILDCARD = 481, yWIRE = 482, yWITHIN = 483, yWITH__BRA = 484, yWITH__CUR = 485, yWITH__ETC = 486, yWITH__LEX = 487, yWITH__PAREN = 488, yWOR = 489, yXNOR = 490, yXOR = 491, yD_ERROR = 492, yD_FATAL = 493, yD_INFO = 494, yD_ROOT = 495, yD_UNIT = 496, yD_WARNING = 497, yP_TICK = 498, yP_TICKBRA = 499, yP_OROR = 500, yP_ANDAND = 501, yP_NOR = 502, yP_XNOR = 503, yP_NAND = 504, yP_EQUAL = 505, yP_NOTEQUAL = 506, yP_CASEEQUAL = 507, yP_CASENOTEQUAL = 508, yP_WILDEQUAL = 509, yP_WILDNOTEQUAL = 510, yP_GTE = 511, yP_LTE = 512, yP_LTE__IGNORE = 513, yP_SLEFT = 514, yP_SRIGHT = 515, yP_SSRIGHT = 516, yP_POW = 517, yP_PAR__IGNORE = 518, yP_PAR__STRENGTH = 519, yP_LTMINUSGT = 520, yP_PLUSCOLON = 521, yP_MINUSCOLON = 522, yP_MINUSGT = 523, yP_MINUSGTGT = 524, yP_EQGT = 525, yP_ASTGT = 526, yP_ANDANDAND = 527, yP_POUNDPOUND = 528, yP_POUNDMINUSPD = 529, yP_POUNDEQPD = 530, yP_DOTSTAR = 531, yP_ATAT = 532, yP_COLONCOLON = 533, yP_COLONEQ = 534, yP_COLONDIV = 535, yP_ORMINUSGT = 536, yP_OREQGT = 537, yP_BRASTAR = 538, yP_BRAEQ = 539, yP_BRAMINUSGT = 540, yP_BRAPLUSKET = 541, yP_PLUSPLUS = 542, yP_MINUSMINUS = 543, yP_PLUSEQ = 544, yP_MINUSEQ = 545, yP_TIMESEQ = 546, yP_DIVEQ = 547, yP_MODEQ = 548, yP_ANDEQ = 549, yP_OREQ = 550, yP_XOREQ = 551, yP_SLEFTEQ = 552, yP_SRIGHTEQ = 553, yP_SSRIGHTEQ = 554, prUNARYARITH = 555, prREDUCTION = 556, prNEGATION = 557, prEVENTBEGIN = 558, prTAGGED = 559, prSEQ_CLOCKING = 560, prPOUNDPOUND_MULTI = 561, prLOWER_THAN_ELSE = 562 }; #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif Verilog-Perl-3.418/Parser/gen/bisonpre-00000644000177100017500000000003312654236610017722 0ustar wsnyderwsnyderzV9utroPw/qAVuAWIo2hPJN0evMVerilog-Perl-3.418/Parser/gen/bisonpre-s0000644000177100017500000000047412654236610020036 0ustar wsnyderwsnyder edit VParseBison.y VParseBison_pretmp.y bison -t -d -k -v --report=itemset --report=lookahead -p VParseBison -b VParseBison_pretmp -o VParseBison_pretmp.c VParseBison_pretmp.y edit VParseBison_pretmp.output VParseBison.output edit VParseBison_pretmp.c VParseBison.c edit VParseBison_pretmp.h VParseBison.h Verilog-Perl-3.418/Parser/gen/bisonpre-10000644000177100017500000725543512654236610017754 0ustar wsnyderwsnyder/* A Bison parser, made by GNU Bison 2.5. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 1 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Using locations. */ #define YYLSP_NEEDED 0 /* Substitute the variable and function names. */ #define yyparse VParseBisonparse #define yylex VParseBisonlex #define yyerror VParseBisonerror #define yylval VParseBisonlval #define yychar VParseBisonchar #define yydebug VParseBisondebug #define yynerrs VParseBisonnerrs /* Copy the first part of user declarations. */ /* Line 268 of yacc.c */ #line 24 "VParseBison.y" #include #include #include #include #include #include #include #include "VParse.h" #include "VParseGrammar.h" #define YYERROR_VERBOSE 1 #define YYINITDEPTH 5000 // Large as the stack won't grow, since YYSTYPE_IS_TRIVIAL isn't defined #define YYMAXDEPTH 5000 // See VParseGrammar.h for the C++ interface to this parser // Include that instead of VParseBison.h //************************************************************************* #define GRAMMARP VParseGrammar::staticGrammarp() #define PARSEP VParseGrammar::staticParsep() #define NEWSTRING(text) (string((text))) #define SPACED(a,b) ((a)+(((a)=="" || (b)=="")?"":" ")+(b)) #define VARRESET_LIST(decl) { GRAMMARP->pinNum(1); VARRESET(); VARDECL(decl); } // Start of pinlist #define VARRESET_NONLIST(decl) { GRAMMARP->pinNum(0); VARRESET(); VARDECL(decl); } // Not in a pinlist #define VARRESET() { VARDECL(""); VARIO(""); VARNET(""); VARDTYPE(""); } // Start of one variable decl // VARDECL("") indicates inside a port list or IO list and we shouldn't declare the variable #define VARDECL(type) { GRAMMARP->m_varDecl = (type); } // genvar, parameter, localparam #define VARIO(type) { GRAMMARP->m_varIO = (type); } // input, output, inout, ref, const ref #define VARNET(type) { GRAMMARP->m_varNet = (type); } // supply*,wire,tri #define VARDTYPE(type) { GRAMMARP->m_varDType = (type); } // "signed", "int", etc #define PINNUMINC() { GRAMMARP->pinNumInc(); } #define INSTPREP(cellmod,cellparam) { GRAMMARP->pinNum(1); GRAMMARP->m_cellMod=(cellmod); GRAMMARP->m_cellParam=(cellparam); } static void VARDONE(VFileLine* fl, const string& name, const string& array, const string& value) { if (GRAMMARP->m_varIO!="" && GRAMMARP->m_varDecl=="") GRAMMARP->m_varDecl="port"; if (GRAMMARP->m_varDecl!="") { PARSEP->varCb(fl, GRAMMARP->m_varDecl, name, PARSEP->symObjofUpward(), GRAMMARP->m_varNet, GRAMMARP->m_varDType, array, value); } if (GRAMMARP->m_varIO!="" || GRAMMARP->pinNum()) { PARSEP->portCb(fl, name, PARSEP->symObjofUpward(), GRAMMARP->m_varIO, GRAMMARP->m_varDType, array, GRAMMARP->pinNum()); } if (GRAMMARP->m_varDType == "type") { PARSEP->syms().replaceInsert(VAstType::TYPE,name); } } static void VARDONETYPEDEF(VFileLine* fl, const string& name, const string& type, const string& array) { VARRESET(); VARDECL("typedef"); VARDTYPE(type); VARDONE(fl,name,array,""); // TYPE shouldn't override a more specific node type, as often is forward reference PARSEP->syms().replaceInsert(VAstType::TYPE,name); } static void PINDONE(VFileLine* fl, const string& name, const string& expr) { if (GRAMMARP->m_cellParam) { // Stack them until we create the instance itself GRAMMARP->m_pinStack.push_back(VParseGPin(fl, name, expr, GRAMMARP->pinNum())); } else { PARSEP->pinCb(fl, name, expr, GRAMMARP->pinNum()); } } static void PINPARAMS() { // Throw out all the pins we found before we could do instanceCb while (!GRAMMARP->m_pinStack.empty()) { VParseGPin& pinr = GRAMMARP->m_pinStack.front(); PARSEP->parampinCb(pinr.m_fl, pinr.m_name, pinr.m_conn, pinr.m_number); GRAMMARP->m_pinStack.pop_front(); } } /* Yacc */ static int VParseBisonlex(VParseBisonYYSType* yylvalp) { return PARSEP->lexToBison(yylvalp); } static void VParseBisonerror(const char *s) { VParseGrammar::bisonError(s); } static void ERRSVKWD(VFileLine* fileline, const string& tokname) { static int toldonce = 0; fileline->error((string)"Unexpected \""+tokname+"\": \""+tokname+"\" is a SystemVerilog keyword misused as an identifier."); if (!toldonce++) fileline->error("Modify the Verilog-2001 code to avoid SV keywords, or use `begin_keywords or --language."); } static void NEED_S09(VFileLine*, const string&) { //Let lint tools worry about it //fileline->error((string)"Advanced feature: \""+tokname+"\" is a 1800-2009 construct, but used under --lanugage 1800-2005 or earlier."); } /* Line 268 of yacc.c */ #line 180 "VParseBison.c" /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 1 #endif /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { yaFLOATNUM = 258, yaID__ETC = 259, yaID__LEX = 260, yaID__aCLASS = 261, yaID__aPACKAGE = 262, yaID__aTYPE = 263, yaINTNUM = 264, yaTIMENUM = 265, yaSTRING = 266, yaSTRING__IGNORE = 267, yaTIMINGSPEC = 268, ygenGATE = 269, ygenCONFIGKEYWORD = 270, ygenOPERATOR = 271, ygenSTRENGTH = 272, ygenSYSCALL = 273, yACCEPT_ON = 274, yALIAS = 275, yALWAYS = 276, yAND = 277, yASSERT = 278, yASSIGN = 279, yASSUME = 280, yAUTOMATIC = 281, yBEFORE = 282, yBEGIN = 283, yBIND = 284, yBINS = 285, yBINSOF = 286, yBIT = 287, yBREAK = 288, yBUF = 289, yBYTE = 290, yCASE = 291, yCASEX = 292, yCASEZ = 293, yCHANDLE = 294, yCHECKER = 295, yCLASS = 296, yCLOCK = 297, yCLOCKING = 298, yCONSTRAINT = 299, yCONST__ETC = 300, yCONST__LEX = 301, yCONST__LOCAL = 302, yCONST__REF = 303, yCONTEXT = 304, yCONTINUE = 305, yCOVER = 306, yCOVERGROUP = 307, yCOVERPOINT = 308, yCROSS = 309, yDEASSIGN = 310, yDEFAULT = 311, yDEFPARAM = 312, yDISABLE = 313, yDIST = 314, yDO = 315, yEDGE = 316, yELSE = 317, yEND = 318, yENDCASE = 319, yENDCHECKER = 320, yENDCLASS = 321, yENDCLOCKING = 322, yENDFUNCTION = 323, yENDGENERATE = 324, yENDGROUP = 325, yENDINTERFACE = 326, yENDMODULE = 327, yENDPACKAGE = 328, yENDPROGRAM = 329, yENDPROPERTY = 330, yENDSEQUENCE = 331, yENDSPECIFY = 332, yENDTABLE = 333, yENDTASK = 334, yENUM = 335, yEVENT = 336, yEVENTUALLY = 337, yEXPECT = 338, yEXPORT = 339, yEXTENDS = 340, yEXTERN = 341, yFINAL = 342, yFIRST_MATCH = 343, yFOR = 344, yFORCE = 345, yFOREACH = 346, yFOREVER = 347, yFORK = 348, yFORKJOIN = 349, yFUNCTION__ETC = 350, yFUNCTION__LEX = 351, yFUNCTION__aPUREV = 352, yGENERATE = 353, yGENVAR = 354, yGLOBAL__CLOCKING = 355, yGLOBAL__LEX = 356, yIF = 357, yIFF = 358, yIGNORE_BINS = 359, yILLEGAL_BINS = 360, yIMPLEMENTS = 361, yIMPLIES = 362, yIMPORT = 363, yINITIAL = 364, yINOUT = 365, yINPUT = 366, yINSIDE = 367, yINT = 368, yINTEGER = 369, yINTERCONNECT = 370, yINTERFACE = 371, yINTERSECT = 372, yJOIN = 373, yLET = 374, yLOCALPARAM = 375, yLOCAL__COLONCOLON = 376, yLOCAL__ETC = 377, yLOCAL__LEX = 378, yLOGIC = 379, yLONGINT = 380, yMATCHES = 381, yMODPORT = 382, yMODULE = 383, yNAND = 384, yNEGEDGE = 385, yNETTYPE = 386, yNEW__ETC = 387, yNEW__LEX = 388, yNEW__PAREN = 389, yNEXTTIME = 390, yNOR = 391, yNOT = 392, yNULL = 393, yOR = 394, yOUTPUT = 395, yPACKAGE = 396, yPACKED = 397, yPARAMETER = 398, yPOSEDGE = 399, yPRIORITY = 400, yPROGRAM = 401, yPROPERTY = 402, yPROTECTED = 403, yPURE = 404, yRAND = 405, yRANDC = 406, yRANDCASE = 407, yRANDSEQUENCE = 408, yREAL = 409, yREALTIME = 410, yREF = 411, yREG = 412, yREJECT_ON = 413, yRELEASE = 414, yREPEAT = 415, yRESTRICT = 416, yRETURN = 417, ySCALARED = 418, ySEQUENCE = 419, ySHORTINT = 420, ySHORTREAL = 421, ySIGNED = 422, ySOFT = 423, ySOLVE = 424, ySPECIFY = 425, ySPECPARAM = 426, ySTATIC__CONSTRAINT = 427, ySTATIC__ETC = 428, ySTATIC__LEX = 429, ySTRING = 430, ySTRONG = 431, ySTRUCT = 432, ySUPER = 433, ySUPPLY0 = 434, ySUPPLY1 = 435, ySYNC_ACCEPT_ON = 436, ySYNC_REJECT_ON = 437, yS_ALWAYS = 438, yS_EVENTUALLY = 439, yS_NEXTTIME = 440, yS_UNTIL = 441, yS_UNTIL_WITH = 442, yTABLE = 443, yTAGGED = 444, yTASK__ETC = 445, yTASK__LEX = 446, yTASK__aPUREV = 447, yTHIS = 448, yTHROUGHOUT = 449, yTIME = 450, yTIMEPRECISION = 451, yTIMEUNIT = 452, yTRI = 453, yTRI0 = 454, yTRI1 = 455, yTRIAND = 456, yTRIOR = 457, yTRIREG = 458, yTYPE = 459, yTYPEDEF = 460, yUNION = 461, yUNIQUE = 462, yUNIQUE0 = 463, yUNSIGNED = 464, yUNTIL = 465, yUNTIL_WITH = 466, yUNTYPED = 467, yVAR = 468, yVECTORED = 469, yVIRTUAL__CLASS = 470, yVIRTUAL__ETC = 471, yVIRTUAL__INTERFACE = 472, yVIRTUAL__LEX = 473, yVIRTUAL__anyID = 474, yVOID = 475, yWAIT = 476, yWAIT_ORDER = 477, yWAND = 478, yWEAK = 479, yWHILE = 480, yWILDCARD = 481, yWIRE = 482, yWITHIN = 483, yWITH__BRA = 484, yWITH__CUR = 485, yWITH__ETC = 486, yWITH__LEX = 487, yWITH__PAREN = 488, yWOR = 489, yXNOR = 490, yXOR = 491, yD_ERROR = 492, yD_FATAL = 493, yD_INFO = 494, yD_ROOT = 495, yD_UNIT = 496, yD_WARNING = 497, yP_TICK = 498, yP_TICKBRA = 499, yP_OROR = 500, yP_ANDAND = 501, yP_NOR = 502, yP_XNOR = 503, yP_NAND = 504, yP_EQUAL = 505, yP_NOTEQUAL = 506, yP_CASEEQUAL = 507, yP_CASENOTEQUAL = 508, yP_WILDEQUAL = 509, yP_WILDNOTEQUAL = 510, yP_GTE = 511, yP_LTE = 512, yP_LTE__IGNORE = 513, yP_SLEFT = 514, yP_SRIGHT = 515, yP_SSRIGHT = 516, yP_POW = 517, yP_PAR__IGNORE = 518, yP_PAR__STRENGTH = 519, yP_LTMINUSGT = 520, yP_PLUSCOLON = 521, yP_MINUSCOLON = 522, yP_MINUSGT = 523, yP_MINUSGTGT = 524, yP_EQGT = 525, yP_ASTGT = 526, yP_ANDANDAND = 527, yP_POUNDPOUND = 528, yP_POUNDMINUSPD = 529, yP_POUNDEQPD = 530, yP_DOTSTAR = 531, yP_ATAT = 532, yP_COLONCOLON = 533, yP_COLONEQ = 534, yP_COLONDIV = 535, yP_ORMINUSGT = 536, yP_OREQGT = 537, yP_BRASTAR = 538, yP_BRAEQ = 539, yP_BRAMINUSGT = 540, yP_BRAPLUSKET = 541, yP_PLUSPLUS = 542, yP_MINUSMINUS = 543, yP_PLUSEQ = 544, yP_MINUSEQ = 545, yP_TIMESEQ = 546, yP_DIVEQ = 547, yP_MODEQ = 548, yP_ANDEQ = 549, yP_OREQ = 550, yP_XOREQ = 551, yP_SLEFTEQ = 552, yP_SRIGHTEQ = 553, yP_SSRIGHTEQ = 554, prUNARYARITH = 555, prREDUCTION = 556, prNEGATION = 557, prEVENTBEGIN = 558, prTAGGED = 559, prSEQ_CLOCKING = 560, prPOUNDPOUND_MULTI = 561, prLOWER_THAN_ELSE = 562 }; #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif /* Copy the second part of user declarations. */ /* Line 343 of yacc.c */ #line 528 "VParseBison.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int yyi) #else static int YYID (yyi) int yyi; #endif { return yyi; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 211 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 79393 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 344 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 538 /* YYNRULES -- Number of rules. */ #define YYNRULES 3126 /* YYNRULES -- Number of states. */ #define YYNSTATES 5445 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 570 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 19, 2, 20, 343, 21, 22, 2, 23, 24, 25, 26, 27, 28, 29, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 31, 32, 33, 34, 35, 36, 37, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 38, 2, 39, 40, 342, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 41, 42, 43, 44, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 4, 5, 6, 8, 10, 13, 15, 17, 19, 21, 23, 25, 27, 31, 37, 41, 46, 51, 52, 54, 56, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 86, 89, 91, 93, 95, 97, 99, 102, 106, 108, 112, 116, 118, 120, 126, 130, 138, 144, 148, 150, 153, 154, 159, 162, 163, 167, 168, 174, 176, 180, 182, 185, 186, 190, 191, 196, 198, 202, 203, 209, 215, 223, 231, 240, 250, 261, 269, 275, 282, 290, 295, 303, 312, 322, 329, 333, 334, 336, 339, 341, 342, 344, 345, 347, 349, 351, 359, 365, 369, 370, 372, 374, 377, 380, 382, 384, 386, 388, 390, 392, 394, 396, 401, 402, 404, 406, 409, 411, 413, 415, 417, 419, 427, 433, 437, 438, 440, 442, 445, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 476, 480, 485, 489, 491, 495, 496, 502, 504, 506, 510, 513, 516, 519, 522, 524, 526, 531, 537, 539, 541, 545, 547, 551, 554, 557, 560, 563, 566, 569, 572, 575, 578, 580, 582, 584, 586, 590, 596, 601, 602, 603, 605, 607, 609, 613, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 655, 657, 659, 661, 663, 666, 667, 673, 674, 681, 682, 688, 689, 694, 695, 701, 702, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 733, 735, 737, 739, 741, 743, 745, 747, 749, 751, 753, 755, 758, 760, 767, 773, 777, 780, 782, 783, 791, 792, 801, 803, 805, 807, 812, 816, 818, 820, 824, 826, 828, 830, 833, 836, 841, 843, 846, 847, 853, 855, 859, 863, 869, 871, 874, 876, 880, 884, 890, 892, 894, 896, 897, 899, 901, 904, 907, 909, 913, 917, 920, 924, 925, 927, 929, 931, 932, 934, 935, 938, 945, 946, 949, 951, 954, 958, 961, 963, 967, 971, 972, 976, 982, 983, 986, 988, 990, 992, 994, 996, 999, 1002, 1005, 1009, 1013, 1018, 1022, 1028, 1030, 1033, 1037, 1041, 1044, 1049, 1051, 1056, 1064, 1070, 1071, 1073, 1074, 1077, 1079, 1083, 1089, 1097, 1101, 1106, 1111, 1116, 1121, 1127, 1128, 1130, 1132, 1135, 1138, 1140, 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1156, 1160, 1162, 1164, 1166, 1168, 1170, 1172, 1174, 1179, 1181, 1183, 1186, 1188, 1190, 1192, 1195, 1201, 1204, 1207, 1209, 1211, 1213, 1218, 1224, 1227, 1231, 1235, 1241, 1243, 1247, 1249, 1251, 1255, 1258, 1262, 1265, 1267, 1269, 1271, 1273, 1277, 1280, 1287, 1293, 1300, 1306, 1310, 1313, 1320, 1326, 1333, 1339, 1341, 1343, 1345, 1347, 1349, 1352, 1354, 1357, 1359, 1361, 1363, 1369, 1376, 1382, 1390, 1396, 1403, 1409, 1417, 1427, 1437, 1441, 1446, 1447, 1451, 1455, 1459, 1463, 1467, 1471, 1475, 1479, 1483, 1487, 1491, 1495, 1498, 1501, 1504, 1507, 1509, 1512, 1514, 1517, 1521, 1525, 1528, 1532, 1536, 1539, 1541, 1545, 1549, 1550, 1552, 1554, 1560, 1561, 1563, 1566, 1571, 1578, 1587, 1589, 1591, 1593, 1595, 1597, 1599, 1605, 1607, 1611, 1614, 1619, 1623, 1625, 1627, 1628, 1629, 1631, 1633, 1636, 1637, 1639, 1640, 1644, 1650, 1651, 1653, 1655, 1658, 1660, 1663, 1669, 1673, 1675, 1679, 1681, 1685, 1689, 1690, 1691, 1699, 1700, 1701, 1709, 1711, 1713, 1715, 1719, 1721, 1724, 1726, 1730, 1734, 1738, 1741, 1742, 1746, 1752, 1753, 1756, 1758, 1762, 1763, 1765, 1768, 1771, 1776, 1782, 1790, 1800, 1806, 1808, 1810, 1814, 1820, 1825, 1828, 1833, 1836, 1838, 1842, 1845, 1850, 1853, 1858, 1861, 1866, 1868, 1873, 1877, 1882, 1886, 1888, 1892, 1894, 1898, 1900, 1903, 1905, 1907, 1910, 1912, 1915, 1918, 1920, 1922, 1924, 1927, 1929, 1933, 1935, 1938, 1943, 1948, 1954, 1961, 1965, 1971, 1975, 1981, 1988, 1995, 2002, 2011, 2014, 2021, 2030, 2033, 2038, 2043, 2046, 2051, 2055, 2059, 2063, 2068, 2071, 2077, 2083, 2092, 2100, 2106, 2109, 2113, 2116, 2119, 2121, 2124, 2127, 2130, 2132, 2138, 2142, 2148, 2150, 2156, 2158, 2162, 2164, 2167, 2172, 2176, 2180, 2184, 2188, 2192, 2196, 2200, 2204, 2208, 2212, 2216, 2221, 2225, 2229, 2233, 2237, 2241, 2245, 2249, 2253, 2257, 2261, 2265, 2268, 2271, 2274, 2277, 2280, 2283, 2286, 2289, 2292, 2295, 2298, 2301, 2304, 2307, 2310, 2313, 2316, 2319, 2322, 2325, 2328, 2331, 2334, 2337, 2339, 2342, 2347, 2352, 2360, 2361, 2363, 2365, 2367, 2369, 2373, 2376, 2381, 2386, 2391, 2392, 2394, 2395, 2397, 2398, 2400, 2404, 2408, 2411, 2416, 2420, 2425, 2429, 2433, 2436, 2441, 2445, 2450, 2452, 2456, 2458, 2460, 2466, 2468, 2474, 2476, 2480, 2483, 2485, 2489, 2491, 2495, 2497, 2502, 2504, 2508, 2512, 2518, 2524, 2526, 2528, 2530, 2534, 2538, 2541, 2544, 2546, 2550, 2555, 2561, 2565, 2566, 2568, 2570, 2574, 2576, 2578, 2580, 2584, 2586, 2588, 2592, 2597, 2603, 2608, 2610, 2616, 2618, 2622, 2624, 2630, 2632, 2636, 2638, 2641, 2646, 2649, 2654, 2657, 2662, 2665, 2670, 2673, 2678, 2682, 2688, 2692, 2698, 2702, 2708, 2712, 2718, 2720, 2722, 2724, 2731, 2736, 2742, 2745, 2747, 2749, 2756, 2763, 2768, 2773, 2779, 2782, 2789, 2793, 2795, 2797, 2798, 2800, 2802, 2804, 2806, 2808, 2812, 2815, 2818, 2821, 2823, 2825, 2828, 2830, 2834, 2836, 2842, 2845, 2850, 2852, 2853, 2855, 2858, 2860, 2862, 2864, 2866, 2869, 2871, 2873, 2874, 2877, 2879, 2883, 2884, 2887, 2889, 2891, 2894, 2896, 2899, 2902, 2904, 2907, 2911, 2914, 2918, 2922, 2924, 2928, 2934, 2935, 2938, 2941, 2947, 2948, 2953, 2955, 2957, 2959, 2961, 2968, 2975, 2982, 2989, 2990, 2993, 2994, 2996, 2998, 3008, 3010, 3012, 3014, 3016, 3018, 3020, 3022, 3024, 3026, 3028, 3030, 3032, 3034, 3036, 3038, 3040, 3044, 3046, 3049, 3052, 3055, 3058, 3061, 3064, 3067, 3070, 3073, 3076, 3078, 3084, 3090, 3096, 3102, 3108, 3114, 3120, 3126, 3132, 3138, 3144, 3150, 3154, 3158, 3162, 3166, 3170, 3174, 3178, 3182, 3186, 3190, 3194, 3198, 3202, 3206, 3210, 3214, 3218, 3222, 3226, 3230, 3234, 3238, 3242, 3246, 3250, 3254, 3258, 3262, 3266, 3272, 3278, 3281, 3285, 3287, 3289, 3291, 3293, 3296, 3303, 3313, 3325, 3337, 3349, 3351, 3355, 3359, 3363, 3371, 3378, 3384, 3390, 3392, 3394, 3396, 3400, 3404, 3408, 3414, 3417, 3420, 3423, 3426, 3429, 3432, 3435, 3438, 3441, 3444, 3446, 3452, 3458, 3464, 3470, 3476, 3482, 3488, 3494, 3500, 3506, 3512, 3518, 3522, 3526, 3530, 3534, 3538, 3542, 3546, 3550, 3554, 3558, 3562, 3566, 3570, 3574, 3578, 3582, 3586, 3590, 3594, 3598, 3602, 3606, 3610, 3614, 3618, 3622, 3626, 3630, 3634, 3640, 3646, 3649, 3653, 3655, 3657, 3659, 3661, 3664, 3671, 3681, 3693, 3705, 3717, 3719, 3723, 3727, 3731, 3739, 3746, 3752, 3758, 3760, 3762, 3764, 3768, 3772, 3776, 3782, 3784, 3788, 3792, 3795, 3798, 3801, 3804, 3807, 3810, 3813, 3816, 3819, 3822, 3824, 3830, 3836, 3842, 3848, 3854, 3860, 3866, 3872, 3878, 3884, 3890, 3896, 3900, 3904, 3908, 3912, 3916, 3920, 3924, 3928, 3932, 3936, 3940, 3944, 3948, 3952, 3956, 3960, 3964, 3968, 3972, 3976, 3980, 3984, 3988, 3992, 3996, 4000, 4004, 4008, 4012, 4018, 4024, 4027, 4031, 4033, 4035, 4037, 4039, 4042, 4049, 4059, 4071, 4083, 4095, 4097, 4101, 4105, 4110, 4119, 4126, 4132, 4138, 4140, 4142, 4144, 4148, 4152, 4156, 4162, 4166, 4174, 4176, 4180, 4187, 4196, 4205, 4214, 4217, 4220, 4222, 4224, 4226, 4230, 4237, 4246, 4255, 4264, 4267, 4270, 4272, 4274, 4276, 4280, 4287, 4296, 4305, 4314, 4317, 4320, 4322, 4324, 4326, 4330, 4337, 4346, 4355, 4364, 4367, 4370, 4372, 4374, 4376, 4380, 4387, 4396, 4405, 4414, 4417, 4420, 4422, 4424, 4426, 4430, 4437, 4446, 4455, 4464, 4467, 4470, 4472, 4474, 4476, 4478, 4480, 4482, 4485, 4488, 4492, 4496, 4498, 4500, 4502, 4505, 4508, 4512, 4516, 4518, 4520, 4522, 4525, 4528, 4532, 4536, 4538, 4540, 4542, 4545, 4548, 4552, 4556, 4558, 4560, 4562, 4565, 4568, 4572, 4576, 4578, 4580, 4582, 4585, 4588, 4592, 4596, 4598, 4600, 4602, 4604, 4606, 4612, 4614, 4616, 4618, 4622, 4624, 4628, 4631, 4633, 4635, 4639, 4641, 4643, 4647, 4649, 4653, 4655, 4659, 4661, 4665, 4666, 4668, 4669, 4671, 4673, 4677, 4679, 4683, 4688, 4694, 4699, 4705, 4710, 4715, 4721, 4727, 4729, 4731, 4735, 4737, 4741, 4743, 4749, 4757, 4765, 4773, 4775, 4777, 4779, 4781, 4783, 4785, 4787, 4789, 4791, 4793, 4795, 4797, 4798, 4800, 4804, 4810, 4814, 4816, 4819, 4821, 4823, 4825, 4827, 4829, 4831, 4833, 4835, 4837, 4839, 4841, 4843, 4845, 4847, 4849, 4851, 4853, 4855, 4857, 4859, 4861, 4863, 4865, 4867, 4869, 4871, 4873, 4875, 4877, 4879, 4881, 4883, 4885, 4887, 4889, 4891, 4893, 4895, 4897, 4899, 4901, 4903, 4905, 4907, 4909, 4911, 4913, 4915, 4917, 4919, 4921, 4923, 4925, 4927, 4929, 4931, 4933, 4935, 4937, 4939, 4941, 4943, 4945, 4947, 4949, 4951, 4953, 4955, 4957, 4959, 4961, 4963, 4965, 4967, 4969, 4971, 4973, 4975, 4977, 4979, 4981, 4983, 4985, 4987, 4989, 4991, 4993, 4995, 4997, 4999, 5001, 5003, 5005, 5007, 5009, 5011, 5013, 5015, 5017, 5019, 5021, 5023, 5025, 5027, 5029, 5031, 5033, 5035, 5037, 5039, 5041, 5043, 5045, 5047, 5049, 5051, 5053, 5055, 5057, 5059, 5061, 5063, 5065, 5067, 5069, 5071, 5073, 5075, 5077, 5079, 5081, 5083, 5085, 5087, 5089, 5091, 5093, 5095, 5097, 5099, 5101, 5103, 5105, 5107, 5109, 5111, 5113, 5115, 5117, 5119, 5121, 5123, 5125, 5127, 5129, 5131, 5133, 5135, 5137, 5139, 5141, 5143, 5145, 5147, 5149, 5151, 5153, 5155, 5157, 5159, 5161, 5163, 5165, 5167, 5169, 5171, 5173, 5175, 5177, 5179, 5181, 5183, 5185, 5187, 5189, 5191, 5193, 5195, 5197, 5199, 5201, 5203, 5205, 5207, 5209, 5211, 5213, 5215, 5217, 5219, 5221, 5223, 5225, 5227, 5229, 5231, 5233, 5235, 5237, 5239, 5241, 5243, 5245, 5247, 5249, 5251, 5253, 5255, 5257, 5259, 5261, 5263, 5265, 5267, 5269, 5271, 5273, 5275, 5277, 5279, 5281, 5283, 5285, 5287, 5289, 5291, 5293, 5295, 5297, 5299, 5301, 5303, 5305, 5307, 5309, 5311, 5313, 5315, 5317, 5319, 5321, 5323, 5325, 5327, 5329, 5331, 5333, 5335, 5337, 5339, 5341, 5343, 5345, 5347, 5349, 5351, 5353, 5355, 5357, 5359, 5361, 5363, 5365, 5367, 5369, 5371, 5373, 5375, 5377, 5379, 5381, 5383, 5385, 5387, 5389, 5391, 5393, 5395, 5397, 5399, 5401, 5403, 5405, 5407, 5409, 5411, 5413, 5415, 5417, 5419, 5421, 5423, 5425, 5427, 5429, 5431, 5433, 5435, 5437, 5439, 5441, 5443, 5445, 5447, 5449, 5451, 5453, 5455, 5457, 5459, 5461, 5463, 5465, 5467, 5469, 5471, 5475, 5477, 5481, 5484, 5486, 5489, 5491, 5493, 5495, 5497, 5499, 5501, 5503, 5505, 5507, 5509, 5511, 5513, 5515, 5517, 5519, 5521, 5523, 5525, 5527, 5529, 5531, 5533, 5535, 5537, 5539, 5541, 5543, 5545, 5547, 5549, 5551, 5553, 5555, 5557, 5559, 5561, 5563, 5565, 5567, 5569, 5571, 5573, 5575, 5577, 5579, 5581, 5583, 5585, 5587, 5589, 5591, 5593, 5595, 5597, 5599, 5601, 5603, 5605, 5607, 5609, 5611, 5613, 5615, 5617, 5619, 5621, 5623, 5625, 5627, 5629, 5631, 5633, 5635, 5637, 5639, 5641, 5643, 5645, 5647, 5649, 5651, 5653, 5655, 5657, 5659, 5661, 5663, 5665, 5667, 5669, 5671, 5673, 5675, 5677, 5679, 5681, 5683, 5685, 5687, 5689, 5691, 5693, 5695, 5697, 5699, 5701, 5703, 5705, 5707, 5709, 5711, 5713, 5715, 5717, 5719, 5721, 5723, 5725, 5727, 5729, 5731, 5733, 5735, 5737, 5739, 5741, 5743, 5745, 5747, 5749, 5751, 5753, 5755, 5757, 5759, 5761, 5763, 5765, 5767, 5769, 5771, 5773, 5775, 5777, 5779, 5781, 5783, 5785, 5787, 5789, 5791, 5793, 5795, 5797, 5799, 5801, 5803, 5805, 5807, 5809, 5811, 5813, 5815, 5817, 5819, 5821, 5823, 5825, 5827, 5829, 5831, 5833, 5835, 5837, 5839, 5841, 5843, 5845, 5847, 5849, 5851, 5853, 5855, 5857, 5859, 5861, 5863, 5865, 5867, 5869, 5871, 5873, 5875, 5877, 5879, 5881, 5883, 5885, 5887, 5889, 5891, 5893, 5895, 5897, 5899, 5901, 5903, 5905, 5907, 5909, 5911, 5913, 5915, 5917, 5919, 5921, 5923, 5925, 5927, 5929, 5931, 5933, 5935, 5937, 5939, 5941, 5943, 5945, 5947, 5949, 5951, 5953, 5955, 5957, 5959, 5961, 5963, 5965, 5967, 5969, 5971, 5973, 5975, 5977, 5979, 5981, 5983, 5985, 5987, 5989, 5991, 5993, 5995, 5997, 5999, 6001, 6003, 6005, 6007, 6009, 6011, 6013, 6015, 6017, 6019, 6021, 6023, 6025, 6027, 6029, 6031, 6033, 6035, 6037, 6039, 6041, 6043, 6045, 6047, 6049, 6051, 6053, 6055, 6057, 6059, 6061, 6063, 6065, 6067, 6069, 6071, 6073, 6075, 6077, 6079, 6081, 6083, 6085, 6087, 6089, 6091, 6093, 6095, 6097, 6099, 6101, 6103, 6105, 6107, 6109, 6111, 6113, 6115, 6117, 6119, 6121, 6123, 6125, 6127, 6129, 6131, 6133, 6135, 6137, 6139, 6141, 6145, 6147, 6151, 6153, 6156, 6158, 6160, 6162, 6164, 6166, 6168, 6170, 6172, 6174, 6176, 6178, 6180, 6182, 6184, 6186, 6188, 6190, 6192, 6194, 6196, 6198, 6200, 6202, 6204, 6206, 6208, 6210, 6212, 6214, 6216, 6218, 6220, 6222, 6224, 6226, 6228, 6230, 6232, 6234, 6236, 6238, 6240, 6242, 6244, 6246, 6248, 6250, 6252, 6254, 6256, 6258, 6260, 6262, 6264, 6266, 6268, 6270, 6272, 6274, 6276, 6278, 6280, 6282, 6284, 6286, 6288, 6290, 6292, 6294, 6296, 6298, 6300, 6302, 6304, 6306, 6308, 6310, 6312, 6314, 6316, 6318, 6320, 6322, 6324, 6326, 6328, 6330, 6332, 6334, 6336, 6338, 6340, 6342, 6344, 6346, 6348, 6350, 6352, 6354, 6356, 6358, 6360, 6362, 6364, 6366, 6368, 6370, 6372, 6374, 6376, 6378, 6380, 6382, 6384, 6386, 6388, 6390, 6392, 6394, 6396, 6398, 6400, 6402, 6404, 6406, 6408, 6410, 6412, 6414, 6416, 6418, 6420, 6422, 6424, 6426, 6428, 6430, 6432, 6434, 6436, 6438, 6440, 6442, 6444, 6446, 6448, 6450, 6452, 6454, 6456, 6458, 6460, 6462, 6464, 6466, 6468, 6470, 6472, 6474, 6476, 6478, 6480, 6482, 6484, 6486, 6488, 6490, 6492, 6494, 6496, 6498, 6500, 6502, 6504, 6506, 6508, 6510, 6512, 6514, 6516, 6518, 6520, 6522, 6524, 6526, 6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6548, 6550, 6552, 6554, 6556, 6558, 6560, 6562, 6564, 6566, 6568, 6570, 6572, 6574, 6576, 6578, 6580, 6582, 6584, 6586, 6588, 6590, 6592, 6594, 6596, 6598, 6600, 6602, 6604, 6606, 6608, 6610, 6612, 6614, 6616, 6618, 6620, 6622, 6624, 6626, 6628, 6630, 6632, 6634, 6636, 6638, 6640, 6642, 6644, 6646, 6648, 6650, 6652, 6654, 6656, 6658, 6660, 6662, 6664, 6666, 6668, 6670, 6672, 6674, 6676, 6678, 6680, 6682, 6684, 6686, 6688, 6690, 6692, 6694, 6696, 6698, 6700, 6702, 6704, 6706, 6708, 6710, 6712, 6714, 6716, 6718, 6720, 6722, 6724, 6726, 6728, 6730, 6732, 6734, 6736, 6738, 6740, 6742, 6744, 6746, 6748, 6750, 6752, 6754, 6756, 6758, 6760, 6762, 6764, 6766, 6768, 6770, 6772, 6774, 6776, 6778, 6780, 6782, 6784, 6786, 6788, 6790, 6792, 6794, 6796, 6798, 6800, 6802, 6804, 6806, 6808, 6810, 6812, 6814, 6816, 6818, 6820, 6822, 6826, 6831, 6836, 6840, 6842, 6844, 6848, 6850, 6854, 6856, 6860, 6864, 6870, 6873, 6876, 6878, 6882, 6886, 6892, 6895, 6898, 6900, 6904, 6906, 6908, 6912, 6914, 6918, 6920, 6922, 6926, 6928, 6932, 6934, 6939, 6946, 6953, 6960, 6962, 6967, 6974, 6981, 6988, 6995, 6997, 6998, 7001, 7004, 7011, 7013, 7016, 7019, 7023, 7026, 7030, 7033, 7038, 7039, 7041, 7043, 7046, 7050, 7054, 7056, 7059, 7062, 7067, 7070, 7073, 7078, 7080, 7082, 7086, 7088, 7092, 7093, 7095, 7097, 7100, 7102, 7105, 7107, 7110, 7112, 7115, 7118, 7123, 7125, 7127, 7129, 7131, 7133, 7135, 7139, 7141, 7143, 7145, 7147, 7149, 7155, 7161, 7167, 7175, 7182, 7190, 7197, 7205, 7212, 7218, 7220, 7224, 7231, 7238, 7245, 7252, 7265, 7277, 7284, 7291, 7294, 7295, 7296, 7301, 7303, 7307, 7310, 7313, 7316, 7320, 7324, 7328, 7330, 7333, 7338, 7339, 7341, 7344, 7347, 7349, 7351, 7354, 7361, 7364, 7366, 7368, 7370, 7372, 7374, 7377, 7381, 7383, 7386, 7393, 7395, 7397, 7404, 7407, 7415, 7418, 7420, 7427, 7433, 7439, 7447, 7449, 7453, 7457, 7462, 7465, 7470, 7472, 7475, 7480, 7485, 7489, 7493, 7495, 7499, 7503, 7506, 7509, 7515, 7521, 7524, 7530, 7536, 7539, 7545, 7551, 7555, 7559, 7563, 7567, 7571, 7575, 7581, 7587, 7593, 7599, 7607, 7610, 7614, 7617, 7621, 7627, 7631, 7635, 7639, 7644, 7651, 7655, 7659, 7662, 7665, 7668, 7671, 7674, 7677, 7680, 7683, 7686, 7689, 7692, 7694, 7700, 7706, 7712, 7718, 7724, 7730, 7736, 7742, 7748, 7754, 7760, 7766, 7770, 7774, 7778, 7782, 7786, 7790, 7794, 7798, 7802, 7806, 7810, 7814, 7818, 7822, 7826, 7830, 7834, 7838, 7842, 7846, 7850, 7854, 7858, 7862, 7866, 7870, 7874, 7878, 7882, 7888, 7894, 7897, 7901, 7903, 7905, 7907, 7909, 7912, 7919, 7929, 7941, 7953, 7965, 7967, 7971, 7975, 7980, 7989, 7996, 8002, 8008, 8010, 8012, 8014, 8018, 8022, 8026, 8032, 8035, 8040, 8045, 8049, 8053, 8055, 8059, 8063, 8066, 8069, 8075, 8081, 8084, 8090, 8096, 8099, 8105, 8111, 8115, 8119, 8123, 8127, 8131, 8135, 8141, 8147, 8153, 8159, 8167, 8170, 8174, 8177, 8181, 8187, 8191, 8195, 8199, 8204, 8211, 8215, 8219, 8222, 8225, 8228, 8231, 8234, 8237, 8240, 8243, 8246, 8249, 8252, 8254, 8260, 8266, 8272, 8278, 8284, 8290, 8296, 8302, 8308, 8314, 8320, 8326, 8330, 8334, 8338, 8342, 8346, 8350, 8354, 8358, 8362, 8366, 8370, 8374, 8378, 8382, 8386, 8390, 8394, 8398, 8402, 8406, 8410, 8414, 8418, 8422, 8426, 8430, 8434, 8438, 8442, 8448, 8454, 8457, 8461, 8463, 8465, 8467, 8469, 8472, 8479, 8489, 8501, 8513, 8525, 8527, 8531, 8535, 8540, 8549, 8556, 8562, 8568, 8570, 8572, 8574, 8578, 8582, 8586, 8592, 8595, 8599, 8602, 8606, 8612, 8616, 8620, 8624, 8629, 8636, 8640, 8644, 8647, 8650, 8653, 8656, 8659, 8662, 8665, 8668, 8671, 8674, 8677, 8679, 8685, 8691, 8697, 8703, 8709, 8715, 8721, 8727, 8733, 8739, 8745, 8751, 8755, 8759, 8763, 8767, 8771, 8775, 8779, 8783, 8787, 8791, 8795, 8799, 8803, 8807, 8811, 8815, 8819, 8823, 8827, 8831, 8835, 8839, 8843, 8847, 8851, 8855, 8859, 8863, 8867, 8873, 8879, 8882, 8886, 8888, 8890, 8892, 8894, 8897, 8904, 8914, 8926, 8938, 8950, 8952, 8956, 8960, 8965, 8974, 8981, 8987, 8993, 8995, 8997, 8999, 9003, 9007, 9011, 9017, 9020, 9023, 9028, 9033, 9037, 9040, 9042, 9046, 9048, 9052, 9055, 9057, 9061, 9065, 9067, 9069, 9073, 9077, 9083, 9086, 9087, 9091, 9098, 9108, 9111, 9113, 9114, 9116, 9118, 9121, 9123, 9125, 9128, 9130, 9136, 9141, 9148, 9155, 9165, 9174, 9182, 9184, 9185, 9190, 9194, 9197, 9199, 9202, 9206, 9208, 9217, 9227, 9240, 9254, 9261, 9269, 9276, 9284, 9285, 9288, 9292, 9294, 9296, 9298, 9300, 9304, 9308, 9314, 9316, 9320, 9322, 9327, 9332, 9337, 9339, 9341, 9345, 9352, 9357, 9361, 9367, 9369, 9373, 9375, 9378, 9382, 9384, 9387, 9391, 9393, 9395, 9397, 9399, 9405, 9410, 9419, 9424, 9430, 9440, 9446, 9450, 9454, 9458, 9460, 9464, 9465, 9467, 9474, 9479, 9481, 9485, 9488, 9491, 9493, 9496, 9499, 9505, 9512, 9514, 9517, 9522, 9525, 9527, 9533, 9538, 9540, 9544, 9546, 9550, 9555, 9557, 9562, 9570, 9572, 9574, 9578, 9581, 9585, 9587, 9590, 9592, 9594, 9596, 9599, 9601, 9603, 9609, 9617, 9623, 9630, 9632, 9635, 9637, 9642, 9644, 9647, 9652, 9656, 9661, 9668, 9671, 9673, 9674, 9676, 9678, 9681, 9683, 9685, 9688, 9690, 9692, 9694, 9696, 9698, 9701, 9703, 9705, 9707, 9709, 9711, 9713, 9715, 9720, 9726, 9728, 9730, 9732, 9734, 9736, 9743, 9752, 9757, 9762, 9763, 9765, 9766, 9769, 9775, 9776, 9779, 9781, 9785, 9788, 9791, 9794, 9796, 9799, 9802, 9804, 9807, 9810, 9811, 9813, 9814, 9818, 9819, 9823, 9824, 9828, 9829, 9831, 9833, 9836, 9838, 9840, 9842, 9844, 9846, 9848, 9851, 9854, 9856, 9859, 9862, 9865, 9870, 9874, 9876, 9878, 9880, 9881, 9883, 9885, 9888, 9890, 9892, 9895, 9897, 9899, 9901, 9906, 9911, 9917, 9923, 9927, 9929, 9932, 9938, 9940, 9942, 9946, 9948, 9950, 9953, 9956, 9960, 9965, 9971, 9979, 9985, 9990, 9992, 9996, 9998, 10002, 10004, 10008, 10012, 10017, 10018 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 347, 0, -1, -1, -1, -1, 348, -1, 349, -1, 348, 349, -1, 363, -1, 379, -1, 389, -1, 351, -1, 355, -1, 490, -1, 1, -1, 223, 10, 32, -1, 223, 10, 30, 10, 32, -1, 222, 10, 32, -1, 352, 353, 99, 721, -1, 167, 623, 704, 32, -1, -1, 354, -1, 355, -1, 354, 355, -1, 356, -1, 385, -1, 362, -1, 350, -1, 414, -1, 468, -1, 616, -1, 619, -1, 833, -1, 646, -1, 880, -1, 842, -1, 409, 32, -1, 410, 32, -1, 781, -1, 649, -1, 735, -1, 32, -1, 358, -1, 357, 358, -1, 134, 359, 32, -1, 360, -1, 359, 27, 360, -1, 7, 304, 361, -1, 704, -1, 25, -1, 110, 25, 304, 25, 32, -1, 110, 359, 32, -1, 364, 365, 371, 32, 479, 98, 721, -1, 112, 364, 365, 371, 32, -1, 154, 623, 704, -1, 367, -1, 357, 367, -1, -1, 20, 23, 553, 24, -1, 20, 521, -1, -1, 20, 23, 24, -1, -1, 20, 23, 368, 369, 24, -1, 370, -1, 369, 27, 370, -1, 536, -1, 413, 536, -1, -1, 23, 302, 24, -1, -1, 23, 372, 373, 24, -1, 374, -1, 373, 27, 374, -1, -1, 375, 703, 704, 454, 527, -1, 375, 142, 704, 454, 527, -1, 375, 703, 29, 704, 704, 454, 527, -1, 375, 142, 29, 704, 704, 454, 527, -1, 375, 444, 29, 378, 23, 377, 24, 527, -1, 375, 435, 455, 29, 378, 23, 377, 24, 527, -1, 375, 141, 435, 454, 29, 378, 23, 377, 24, 527, -1, 375, 29, 378, 23, 377, 24, 527, -1, 375, 444, 378, 454, 527, -1, 375, 435, 455, 378, 454, 527, -1, 375, 141, 435, 455, 378, 454, 527, -1, 375, 378, 454, 527, -1, 375, 444, 378, 454, 527, 34, 652, -1, 375, 435, 455, 378, 454, 527, 34, 652, -1, 375, 141, 435, 455, 378, 454, 527, 34, 652, -1, 375, 378, 454, 527, 34, 652, -1, 41, 373, 43, -1, -1, 422, -1, 422, 419, -1, 419, -1, -1, 419, -1, -1, 653, -1, 703, -1, 705, -1, 380, 365, 371, 32, 381, 97, 721, -1, 112, 380, 365, 371, 32, -1, 142, 623, 704, -1, -1, 382, -1, 383, -1, 382, 383, -1, 424, 32, -1, 494, -1, 384, -1, 389, -1, 379, -1, 350, -1, 484, -1, 397, -1, 396, -1, 172, 32, 386, 100, -1, -1, 387, -1, 388, -1, 387, 388, -1, 616, -1, 619, -1, 842, -1, 781, -1, 32, -1, 390, 365, 371, 32, 391, 100, 721, -1, 112, 390, 365, 371, 32, -1, 172, 623, 704, -1, -1, 392, -1, 393, -1, 392, 393, -1, 424, 32, -1, 394, -1, 485, -1, 488, -1, 486, -1, 487, -1, 743, -1, 350, -1, 395, -1, 508, -1, 506, -1, 494, -1, 613, -1, 112, 617, 32, -1, 112, 620, 32, -1, 112, 120, 617, 32, -1, 153, 398, 32, -1, 399, -1, 398, 27, 399, -1, -1, 401, 23, 400, 402, 24, -1, 703, -1, 403, -1, 402, 27, 403, -1, 422, 404, -1, 69, 704, -1, 134, 405, -1, 110, 405, -1, 404, -1, 703, -1, 29, 704, 23, 24, -1, 29, 704, 23, 653, 24, -1, 703, -1, 622, -1, 125, 407, 32, -1, 408, -1, 407, 27, 408, -1, 703, 527, -1, 411, 537, -1, 412, 537, -1, 421, 476, -1, 421, 440, -1, 421, 230, -1, 420, 476, -1, 420, 440, -1, 420, 230, -1, 412, -1, 411, -1, 440, -1, 230, -1, 415, 524, 32, -1, 416, 419, 692, 417, 418, -1, 416, 141, 435, 528, -1, -1, -1, 189, -1, 240, -1, 444, -1, 435, 529, 519, -1, 436, 519, -1, 519, -1, 205, -1, 206, -1, 224, -1, 225, -1, 226, -1, 227, -1, 228, -1, 229, -1, 249, -1, 253, -1, 260, -1, 169, -1, 146, -1, 137, -1, 166, -1, 136, -1, 182, -1, 74, 182, -1, 137, -1, 166, -1, 136, -1, 182, -1, 74, 182, -1, -1, 423, 376, 444, 425, 449, -1, -1, 423, 376, 435, 529, 426, 449, -1, -1, 423, 376, 436, 427, 449, -1, -1, 423, 376, 428, 449, -1, -1, 423, 444, 430, 451, 32, -1, -1, 423, 476, 431, 451, 32, -1, 61, -1, 191, -1, 139, -1, 151, -1, 140, -1, 221, -1, 58, -1, 150, -1, 183, -1, 192, -1, 180, -1, 181, -1, -1, 436, -1, 193, -1, 235, -1, 438, -1, 193, -1, 235, -1, 201, -1, 71, -1, 432, -1, 433, -1, 434, -1, 856, 8, -1, 440, -1, 243, 142, 703, 366, 29, 703, -1, 245, 703, 366, 29, 703, -1, 433, 435, 528, -1, 432, 435, -1, 434, -1, -1, 203, 460, 41, 441, 446, 43, 533, -1, -1, 232, 459, 460, 41, 442, 446, 43, 533, -1, 461, -1, 201, -1, 65, -1, 243, 142, 703, 366, -1, 245, 703, 366, -1, 107, -1, 445, -1, 856, 854, 533, -1, 440, -1, 246, -1, 440, -1, 239, 440, -1, 239, 476, -1, 230, 23, 670, 24, -1, 447, -1, 446, 447, -1, -1, 457, 443, 448, 449, 32, -1, 450, -1, 449, 27, 450, -1, 703, 454, 527, -1, 703, 454, 527, 34, 453, -1, 705, -1, 34, 579, -1, 452, -1, 451, 27, 452, -1, 703, 454, 527, -1, 703, 454, 527, 34, 653, -1, 653, -1, 580, -1, 579, -1, -1, 455, -1, 456, -1, 455, 456, -1, 38, 39, -1, 532, -1, 38, 652, 39, -1, 38, 440, 39, -1, 309, 39, -1, 38, 25, 39, -1, -1, 458, -1, 176, -1, 177, -1, -1, 215, -1, -1, 168, 435, -1, 106, 462, 41, 463, 43, 528, -1, -1, 435, 529, -1, 436, -1, 432, 435, -1, 433, 435, 530, -1, 704, 530, -1, 464, -1, 463, 27, 464, -1, 704, 465, 466, -1, -1, 38, 467, 39, -1, 38, 467, 31, 467, 39, -1, -1, 34, 652, -1, 9, -1, 470, -1, 478, -1, 358, -1, 474, -1, 866, 471, -1, 866, 478, -1, 866, 358, -1, 472, 449, 32, -1, 473, 449, 32, -1, 475, 239, 623, 440, -1, 475, 239, 623, -1, 475, 239, 623, 435, 529, -1, 439, -1, 624, 439, -1, 71, 623, 439, -1, 239, 623, 440, -1, 239, 623, -1, 239, 623, 435, 529, -1, 439, -1, 157, 440, 704, 32, -1, 157, 440, 704, 257, 857, 703, 32, -1, 157, 857, 703, 704, 32, -1, -1, 71, -1, -1, 435, 529, -1, 436, -1, 444, 449, 32, -1, 231, 440, 704, 454, 32, -1, 231, 703, 531, 29, 704, 704, 32, -1, 231, 703, 32, -1, 231, 106, 704, 32, -1, 231, 203, 704, 32, -1, 231, 232, 704, 32, -1, 231, 67, 704, 32, -1, 231, 142, 67, 704, 32, -1, -1, 480, -1, 481, -1, 480, 481, -1, 424, 32, -1, 482, -1, 494, -1, 483, -1, 697, -1, 700, -1, 389, -1, 363, -1, 379, -1, 350, -1, 83, 538, 32, -1, 694, -1, 484, -1, 488, -1, 540, -1, 736, -1, 490, -1, 485, -1, 46, 706, 489, 32, -1, 486, -1, 487, -1, 47, 560, -1, 508, -1, 506, -1, 613, -1, 1, 32, -1, 50, 692, 519, 516, 32, -1, 135, 560, -1, 113, 560, -1, 356, -1, 406, -1, 722, -1, 82, 69, 704, 32, -1, 82, 84, 129, 653, 32, -1, 34, 706, -1, 489, 34, 706, -1, 55, 492, 493, -1, 55, 492, 31, 491, 493, -1, 492, -1, 491, 27, 492, -1, 712, -1, 540, -1, 124, 502, 95, -1, 124, 95, -1, 124, 503, 95, -1, 124, 95, -1, 504, -1, 498, -1, 505, -1, 499, -1, 54, 502, 89, -1, 54, 89, -1, 703, 31, 54, 502, 89, 721, -1, 703, 31, 54, 89, 721, -1, 54, 31, 704, 502, 89, 721, -1, 54, 31, 704, 89, 721, -1, 54, 503, 89, -1, 54, 89, -1, 703, 31, 54, 503, 89, 721, -1, 703, 31, 54, 89, 721, -1, 54, 31, 704, 503, 89, 721, -1, 54, 31, 704, 89, 721, -1, 504, -1, 498, -1, 505, -1, 499, -1, 500, -1, 502, 500, -1, 501, -1, 503, 501, -1, 483, -1, 384, -1, 838, -1, 62, 23, 653, 24, 90, -1, 62, 23, 653, 24, 512, 90, -1, 128, 23, 653, 24, 496, -1, 128, 23, 653, 24, 496, 88, 496, -1, 62, 23, 653, 24, 90, -1, 62, 23, 653, 24, 513, 90, -1, 128, 23, 653, 24, 497, -1, 128, 23, 653, 24, 497, 88, 497, -1, 115, 23, 510, 32, 653, 32, 511, 24, 496, -1, 115, 23, 510, 32, 653, 32, 511, 24, 497, -1, 703, 34, 652, -1, 125, 408, 34, 652, -1, -1, 703, 34, 653, -1, 703, 315, 653, -1, 703, 316, 653, -1, 703, 317, 653, -1, 703, 318, 653, -1, 703, 319, 653, -1, 703, 320, 653, -1, 703, 321, 653, -1, 703, 322, 653, -1, 703, 323, 653, -1, 703, 324, 653, -1, 703, 325, 653, -1, 313, 703, -1, 314, 703, -1, 703, 313, -1, 703, 314, -1, 514, -1, 512, 514, -1, 515, -1, 513, 515, -1, 594, 31, 496, -1, 82, 31, 496, -1, 82, 496, -1, 594, 31, 497, -1, 82, 31, 497, -1, 82, 497, -1, 517, -1, 516, 27, 517, -1, 706, 34, 653, -1, -1, 520, -1, 557, -1, 186, 23, 653, 24, 557, -1, -1, 520, -1, 20, 521, -1, 20, 23, 523, 24, -1, 20, 23, 523, 27, 523, 24, -1, 20, 23, 523, 27, 523, 27, 523, 24, -1, 848, -1, 9, -1, 3, -1, 10, -1, 653, -1, 522, -1, 522, 31, 522, 31, 522, -1, 525, -1, 524, 27, 525, -1, 526, 527, -1, 526, 527, 34, 653, -1, 526, 455, 527, -1, 703, -1, 705, -1, -1, -1, 529, -1, 532, -1, 529, 532, -1, -1, 532, -1, -1, 38, 652, 39, -1, 38, 652, 31, 652, 39, -1, -1, 534, -1, 535, -1, 534, 535, -1, 532, -1, 38, 39, -1, 703, 454, 527, 34, 671, -1, 703, 454, 527, -1, 536, -1, 537, 27, 536, -1, 539, -1, 538, 27, 539, -1, 713, 34, 653, -1, -1, -1, 545, 541, 692, 366, 542, 549, 32, -1, -1, -1, 545, 543, 29, 703, 544, 546, 32, -1, 690, -1, 703, -1, 547, -1, 546, 27, 547, -1, 548, -1, 703, 552, -1, 550, -1, 549, 27, 550, -1, 551, 553, 24, -1, 703, 552, 23, -1, 552, 23, -1, -1, 38, 652, 39, -1, 38, 652, 31, 652, 39, -1, -1, 554, 555, -1, 556, -1, 555, 27, 556, -1, -1, 302, -1, 29, 705, -1, 29, 704, -1, 29, 704, 23, 24, -1, 29, 704, 23, 768, 24, -1, 29, 704, 23, 768, 31, 653, 24, -1, 29, 704, 23, 768, 31, 653, 31, 653, 24, -1, 29, 704, 23, 440, 24, -1, 440, -1, 653, -1, 653, 31, 653, -1, 653, 31, 653, 31, 653, -1, 37, 23, 558, 24, -1, 37, 25, -1, 37, 23, 25, 24, -1, 37, 709, -1, 655, -1, 558, 27, 655, -1, 170, 653, -1, 170, 653, 129, 653, -1, 156, 653, -1, 156, 653, 129, 653, -1, 87, 653, -1, 87, 653, 129, 653, -1, 569, -1, 563, 565, 89, 721, -1, 563, 89, 721, -1, 564, 565, 144, 721, -1, 564, 144, 721, -1, 54, -1, 54, 31, 704, -1, 119, -1, 119, 31, 704, -1, 566, -1, 566, 568, -1, 568, -1, 567, -1, 566, 567, -1, 468, -1, 409, 32, -1, 410, 32, -1, 649, -1, 778, -1, 560, -1, 568, 560, -1, 570, -1, 703, 31, 570, -1, 32, -1, 572, 32, -1, 663, 34, 579, 32, -1, 663, 34, 580, 32, -1, 663, 283, 518, 653, 32, -1, 50, 653, 34, 518, 653, 32, -1, 81, 706, 32, -1, 116, 653, 34, 653, 32, -1, 185, 706, 32, -1, 581, 583, 584, 586, 90, -1, 581, 583, 584, 152, 585, 90, -1, 581, 583, 584, 138, 587, 90, -1, 581, 128, 23, 653, 24, 560, -1, 581, 128, 23, 653, 24, 560, 88, 560, -1, 574, 32, -1, 246, 269, 23, 610, 24, 32, -1, 246, 269, 23, 653, 29, 610, 24, 32, -1, 609, 32, -1, 654, 29, 643, 32, -1, 654, 29, 609, 32, -1, 665, 32, -1, 654, 29, 579, 32, -1, 84, 713, 32, -1, 84, 119, 32, -1, 294, 713, 32, -1, 295, 518, 713, 32, -1, 118, 560, -1, 186, 23, 653, 24, 560, -1, 251, 23, 653, 24, 560, -1, 115, 23, 601, 653, 32, 604, 24, 560, -1, 86, 560, 251, 23, 653, 24, 32, -1, 117, 23, 710, 24, 569, -1, 188, 32, -1, 188, 653, 32, -1, 59, 32, -1, 76, 32, -1, 562, -1, 520, 560, -1, 557, 560, -1, 734, 560, -1, 561, -1, 247, 23, 653, 24, 560, -1, 247, 119, 32, -1, 248, 23, 711, 24, 582, -1, 738, -1, 663, 283, 734, 653, 32, -1, 816, -1, 178, 588, 90, -1, 742, -1, 1, 32, -1, 662, 34, 518, 653, -1, 662, 315, 653, -1, 662, 316, 653, -1, 662, 317, 653, -1, 662, 318, 653, -1, 662, 319, 653, -1, 662, 320, 653, -1, 662, 321, 653, -1, 662, 322, 653, -1, 662, 323, 653, -1, 662, 324, 653, -1, 662, 325, 653, -1, 663, 34, 518, 653, -1, 663, 315, 653, -1, 663, 316, 653, -1, 663, 317, 653, -1, 663, 318, 653, -1, 663, 319, 653, -1, 663, 320, 653, -1, 663, 321, 653, -1, 663, 322, 653, -1, 663, 323, 653, -1, 663, 324, 653, -1, 663, 325, 653, -1, 664, 313, -1, 664, 314, -1, 313, 653, -1, 314, 653, -1, 665, 313, -1, 665, 314, -1, 313, 653, -1, 314, 653, -1, 666, 313, -1, 666, 314, -1, 313, 653, -1, 314, 653, -1, 667, 313, -1, 667, 314, -1, 313, 653, -1, 314, 653, -1, 668, 313, -1, 668, 314, -1, 313, 653, -1, 314, 653, -1, 669, 313, -1, 669, 314, -1, 313, 653, -1, 314, 653, -1, 158, -1, 158, 653, -1, 160, 23, 674, 24, -1, 158, 38, 653, 39, -1, 158, 38, 653, 39, 23, 653, 24, -1, -1, 171, -1, 233, -1, 234, -1, 569, -1, 569, 88, 569, -1, 88, 569, -1, 62, 23, 653, 24, -1, 63, 23, 653, 24, -1, 64, 23, 653, 24, -1, -1, 586, -1, -1, 588, -1, -1, 589, -1, 594, 31, 560, -1, 82, 31, 560, -1, 82, 560, -1, 588, 594, 31, 560, -1, 588, 82, 560, -1, 588, 82, 31, 560, -1, 590, 31, 560, -1, 82, 31, 560, -1, 82, 560, -1, 589, 590, 31, 560, -1, 589, 82, 560, -1, 589, 82, 31, 560, -1, 591, -1, 590, 27, 591, -1, 592, -1, 653, -1, 38, 653, 31, 653, 39, -1, 783, -1, 38, 783, 31, 783, 39, -1, 653, -1, 594, 27, 653, -1, 29, 703, -1, 302, -1, 215, 703, 595, -1, 597, -1, 596, 27, 597, -1, 653, -1, 653, 41, 676, 43, -1, 595, -1, 599, 31, 653, -1, 599, 31, 595, -1, 598, 27, 599, 31, 653, -1, 598, 27, 599, 31, 595, -1, 652, -1, 82, -1, 438, -1, 270, 596, 43, -1, 270, 598, 43, -1, 270, 43, -1, 602, 32, -1, 603, -1, 602, 27, 603, -1, 440, 704, 34, 653, -1, 239, 440, 704, 34, 653, -1, 706, 34, 653, -1, -1, 605, -1, 606, -1, 605, 27, 606, -1, 571, -1, 573, -1, 610, -1, 653, 29, 643, -1, 664, -1, 703, -1, 607, 27, 703, -1, 703, 23, 675, 24, -1, 857, 703, 23, 675, 24, -1, 849, 23, 675, 24, -1, 608, -1, 608, 259, 23, 653, 24, -1, 611, -1, 608, 256, 870, -1, 608, -1, 608, 259, 23, 653, 24, -1, 612, -1, 608, 256, 870, -1, 612, -1, 18, 642, -1, 18, 23, 673, 24, -1, 264, 642, -1, 264, 23, 673, 24, -1, 263, 642, -1, 263, 23, 673, 24, -1, 268, 642, -1, 268, 23, 673, 24, -1, 265, 642, -1, 265, 23, 673, 24, -1, 264, 642, 32, -1, 264, 23, 673, 24, 32, -1, 263, 642, 32, -1, 263, 23, 673, 24, 32, -1, 268, 642, 32, -1, 268, 23, 673, 24, 32, -1, 265, 642, 32, -1, 265, 23, 673, 24, 32, -1, 768, -1, 216, -1, 218, -1, 216, 623, 625, 629, 105, 721, -1, 218, 623, 625, 630, -1, 615, 625, 23, 635, 24, -1, 615, 625, -1, 121, -1, 123, -1, 121, 623, 626, 629, 94, 721, -1, 121, 623, 627, 629, 94, 721, -1, 123, 623, 626, 630, -1, 123, 623, 627, 630, -1, 618, 626, 23, 635, 24, -1, 618, 626, -1, 618, 627, 23, 635, 24, 32, -1, 618, 627, 32, -1, 617, -1, 620, -1, -1, 624, -1, 199, -1, 52, -1, 628, -1, 628, -1, 435, 529, 628, -1, 436, 628, -1, 246, 628, -1, 440, 628, -1, 158, -1, 160, -1, 851, 160, -1, 703, -1, 703, 29, 703, -1, 849, -1, 23, 635, 24, 32, 631, -1, 32, 631, -1, 23, 635, 24, 32, -1, 32, -1, -1, 633, -1, 633, 568, -1, 568, -1, 246, -1, 440, -1, 634, -1, 633, 634, -1, 567, -1, 429, -1, -1, 636, 637, -1, 638, -1, 637, 27, 638, -1, -1, 639, 641, -1, 641, -1, 440, -1, 435, 529, -1, 436, -1, 239, 440, -1, 239, 476, -1, 640, -1, 640, 440, -1, 640, 435, 529, -1, 640, 436, -1, 640, 239, 440, -1, 640, 239, 476, -1, 422, -1, 703, 454, 527, -1, 703, 454, 527, 34, 653, -1, -1, 23, 24, -1, 645, 644, -1, 645, 23, 674, 24, 644, -1, -1, 259, 23, 653, 24, -1, 233, -1, 48, -1, 165, -1, 262, -1, 134, 11, 648, 647, 620, 32, -1, 134, 11, 648, 647, 617, 32, -1, 110, 11, 647, 618, 704, 32, -1, 110, 11, 647, 615, 704, 32, -1, -1, 704, 34, -1, -1, 75, -1, 175, -1, 55, 650, 618, 440, 704, 23, 651, 24, 32, -1, 334, -1, 313, -1, 335, -1, 314, -1, 336, -1, 288, -1, 337, -1, 338, -1, 276, -1, 277, -1, 339, -1, 283, -1, 340, -1, 282, -1, 341, -1, 440, -1, 651, 27, 440, -1, 653, -1, 26, 653, -1, 28, 653, -1, 19, 653, -1, 22, 653, -1, 44, 653, -1, 42, 653, -1, 40, 653, -1, 275, 653, -1, 273, 653, -1, 274, 653, -1, 573, -1, 23, 664, 34, 653, 24, -1, 23, 664, 315, 653, 24, -1, 23, 664, 316, 653, 24, -1, 23, 664, 317, 653, 24, -1, 23, 664, 318, 653, 24, -1, 23, 664, 319, 653, 24, -1, 23, 664, 320, 653, 24, -1, 23, 664, 321, 653, 24, -1, 23, 664, 322, 653, 24, -1, 23, 664, 323, 653, 24, -1, 23, 664, 324, 653, 24, -1, 23, 664, 325, 653, 24, -1, 653, 26, 653, -1, 653, 28, 653, -1, 653, 25, 653, -1, 653, 30, 653, -1, 653, 21, 653, -1, 653, 276, 653, -1, 653, 277, 653, -1, 653, 278, 653, -1, 653, 279, 653, -1, 653, 280, 653, -1, 653, 281, 653, -1, 653, 272, 653, -1, 653, 271, 653, -1, 653, 288, 653, -1, 653, 33, 653, -1, 653, 35, 653, -1, 653, 282, 653, -1, 653, 22, 653, -1, 653, 42, 653, -1, 653, 40, 653, -1, 653, 274, 653, -1, 653, 273, 653, -1, 653, 275, 653, -1, 653, 285, 653, -1, 653, 286, 653, -1, 653, 287, 653, -1, 653, 291, 653, -1, 653, 294, 877, -1, 653, 283, 653, -1, 653, 36, 653, 31, 653, -1, 653, 138, 41, 590, 43, -1, 215, 703, -1, 215, 703, 653, -1, 9, -1, 3, -1, 10, -1, 720, -1, 41, 43, -1, 41, 652, 41, 672, 43, 43, -1, 41, 652, 41, 672, 43, 43, 38, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 31, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 292, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 293, 653, 39, -1, 610, -1, 653, 29, 610, -1, 653, 29, 643, -1, 23, 653, 24, -1, 23, 653, 31, 653, 31, 653, 24, -1, 342, 23, 345, 653, 346, 24, -1, 437, 269, 23, 653, 24, -1, 653, 269, 23, 653, 24, -1, 343, -1, 164, -1, 656, -1, 653, 298, 653, -1, 653, 152, 595, -1, 653, 152, 653, -1, 653, 85, 41, 878, 43, -1, 26, 654, -1, 28, 654, -1, 19, 654, -1, 22, 654, -1, 44, 654, -1, 42, 654, -1, 40, 654, -1, 275, 654, -1, 273, 654, -1, 274, 654, -1, 574, -1, 23, 664, 34, 653, 24, -1, 23, 664, 315, 653, 24, -1, 23, 664, 316, 653, 24, -1, 23, 664, 317, 653, 24, -1, 23, 664, 318, 653, 24, -1, 23, 664, 319, 653, 24, -1, 23, 664, 320, 653, 24, -1, 23, 664, 321, 653, 24, -1, 23, 664, 322, 653, 24, -1, 23, 664, 323, 653, 24, -1, 23, 664, 324, 653, 24, -1, 23, 664, 325, 653, 24, -1, 654, 26, 654, -1, 654, 28, 654, -1, 654, 25, 654, -1, 654, 30, 654, -1, 654, 21, 654, -1, 654, 276, 654, -1, 654, 277, 654, -1, 654, 278, 654, -1, 654, 279, 654, -1, 654, 280, 654, -1, 654, 281, 654, -1, 654, 272, 654, -1, 654, 271, 654, -1, 654, 288, 654, -1, 654, 33, 654, -1, 654, 35, 654, -1, 654, 282, 654, -1, 654, 22, 654, -1, 654, 42, 654, -1, 654, 40, 654, -1, 654, 274, 654, -1, 654, 273, 654, -1, 654, 275, 654, -1, 654, 285, 654, -1, 654, 286, 654, -1, 654, 287, 654, -1, 654, 291, 654, -1, 654, 294, 877, -1, 654, 284, 654, -1, 654, 36, 654, 31, 654, -1, 654, 138, 41, 590, 43, -1, 215, 703, -1, 215, 703, 653, -1, 9, -1, 3, -1, 10, -1, 720, -1, 41, 43, -1, 41, 652, 41, 672, 43, 43, -1, 41, 652, 41, 672, 43, 43, 38, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 31, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 292, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 293, 653, 39, -1, 610, -1, 654, 29, 610, -1, 654, 29, 643, -1, 23, 653, 24, -1, 23, 653, 31, 653, 31, 653, 24, -1, 342, 23, 345, 653, 346, 24, -1, 437, 269, 23, 653, 24, -1, 654, 269, 23, 653, 24, -1, 343, -1, 164, -1, 657, -1, 654, 298, 654, -1, 654, 152, 595, -1, 654, 152, 654, -1, 654, 85, 41, 878, 43, -1, 559, -1, 655, 129, 653, -1, 655, 165, 655, -1, 26, 655, -1, 28, 655, -1, 19, 655, -1, 22, 655, -1, 44, 655, -1, 42, 655, -1, 40, 655, -1, 275, 655, -1, 273, 655, -1, 274, 655, -1, 577, -1, 23, 668, 34, 653, 24, -1, 23, 668, 315, 653, 24, -1, 23, 668, 316, 653, 24, -1, 23, 668, 317, 653, 24, -1, 23, 668, 318, 653, 24, -1, 23, 668, 319, 653, 24, -1, 23, 668, 320, 653, 24, -1, 23, 668, 321, 653, 24, -1, 23, 668, 322, 653, 24, -1, 23, 668, 323, 653, 24, -1, 23, 668, 324, 653, 24, -1, 23, 668, 325, 653, 24, -1, 655, 26, 655, -1, 655, 28, 655, -1, 655, 25, 655, -1, 655, 30, 655, -1, 655, 21, 655, -1, 655, 276, 655, -1, 655, 277, 655, -1, 655, 278, 655, -1, 655, 279, 655, -1, 655, 280, 655, -1, 655, 281, 655, -1, 655, 272, 655, -1, 655, 271, 655, -1, 655, 288, 655, -1, 655, 33, 655, -1, 655, 35, 655, -1, 655, 282, 655, -1, 655, 22, 655, -1, 655, 42, 655, -1, 655, 40, 655, -1, 655, 274, 655, -1, 655, 273, 655, -1, 655, 275, 655, -1, 655, 285, 655, -1, 655, 286, 655, -1, 655, 287, 655, -1, 655, 291, 655, -1, 655, 294, 877, -1, 655, 283, 655, -1, 655, 36, 655, 31, 655, -1, 655, 138, 41, 590, 43, -1, 215, 703, -1, 215, 703, 653, -1, 9, -1, 3, -1, 10, -1, 720, -1, 41, 43, -1, 41, 652, 41, 672, 43, 43, -1, 41, 652, 41, 672, 43, 43, 38, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 31, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 292, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 293, 653, 39, -1, 610, -1, 655, 29, 610, -1, 655, 29, 643, -1, 289, 23, 653, 24, -1, 289, 23, 653, 31, 653, 31, 653, 24, -1, 342, 23, 345, 653, 346, 24, -1, 437, 269, 23, 653, 24, -1, 655, 269, 23, 653, 24, -1, 343, -1, 164, -1, 660, -1, 655, 298, 655, -1, 655, 152, 595, -1, 655, 152, 655, -1, 655, 85, 41, 878, 43, -1, 23, 558, 24, -1, 23, 558, 31, 653, 31, 653, 24, -1, 664, -1, 41, 672, 43, -1, 41, 672, 43, 38, 653, 39, -1, 41, 672, 43, 38, 653, 31, 653, 39, -1, 41, 672, 43, 38, 653, 292, 653, 39, -1, 41, 672, 43, 38, 653, 293, 653, 39, -1, 664, 600, -1, 440, 600, -1, 600, -1, 685, -1, 665, -1, 41, 672, 43, -1, 41, 672, 43, 38, 653, 39, -1, 41, 672, 43, 38, 653, 31, 653, 39, -1, 41, 672, 43, 38, 653, 292, 653, 39, -1, 41, 672, 43, 38, 653, 293, 653, 39, -1, 665, 600, -1, 440, 600, -1, 600, -1, 685, -1, 666, -1, 41, 672, 43, -1, 41, 672, 43, 38, 653, 39, -1, 41, 672, 43, 38, 653, 31, 653, 39, -1, 41, 672, 43, 38, 653, 292, 653, 39, -1, 41, 672, 43, 38, 653, 293, 653, 39, -1, 666, 600, -1, 440, 600, -1, 600, -1, 685, -1, 667, -1, 41, 672, 43, -1, 41, 672, 43, 38, 653, 39, -1, 41, 672, 43, 38, 653, 31, 653, 39, -1, 41, 672, 43, 38, 653, 292, 653, 39, -1, 41, 672, 43, 38, 653, 293, 653, 39, -1, 667, 600, -1, 440, 600, -1, 600, -1, 685, -1, 668, -1, 41, 672, 43, -1, 41, 672, 43, 38, 653, 39, -1, 41, 672, 43, 38, 653, 31, 653, 39, -1, 41, 672, 43, 38, 653, 292, 653, 39, -1, 41, 672, 43, 38, 653, 293, 653, 39, -1, 668, 600, -1, 440, 600, -1, 600, -1, 685, -1, 669, -1, 41, 672, 43, -1, 41, 672, 43, 38, 653, 39, -1, 41, 672, 43, 38, 653, 31, 653, 39, -1, 41, 672, 43, 38, 653, 292, 653, 39, -1, 41, 672, 43, 38, 653, 293, 653, 39, -1, 669, 600, -1, 440, 600, -1, 600, -1, 685, -1, 656, -1, 657, -1, 219, -1, 718, -1, 857, 718, -1, 852, 718, -1, 653, 29, 718, -1, 653, 29, 204, -1, 204, -1, 219, -1, 718, -1, 857, 718, -1, 852, 718, -1, 654, 29, 718, -1, 654, 29, 204, -1, 204, -1, 219, -1, 718, -1, 857, 718, -1, 852, 718, -1, 770, 29, 718, -1, 770, 29, 204, -1, 204, -1, 219, -1, 718, -1, 857, 718, -1, 852, 718, -1, 769, 29, 718, -1, 769, 29, 204, -1, 204, -1, 219, -1, 718, -1, 857, 718, -1, 852, 718, -1, 655, 29, 718, -1, 655, 29, 204, -1, 204, -1, 219, -1, 718, -1, 857, 718, -1, 852, 718, -1, 768, 29, 718, -1, 768, 29, 204, -1, 204, -1, 653, -1, 440, -1, 557, -1, 653, -1, 653, 31, 653, 31, 653, -1, 440, -1, 557, -1, 689, -1, 672, 27, 689, -1, 670, -1, 673, 27, 670, -1, 673, 27, -1, 681, -1, 677, -1, 677, 27, 681, -1, 682, -1, 678, -1, 678, 27, 682, -1, 653, -1, 676, 27, 653, -1, 679, -1, 677, 27, 679, -1, 680, -1, 678, 27, 680, -1, -1, 653, -1, -1, 768, -1, 683, -1, 681, 27, 683, -1, 684, -1, 682, 27, 684, -1, 29, 704, 23, 24, -1, 29, 704, 23, 653, 24, -1, 29, 704, 23, 24, -1, 29, 704, 23, 768, 24, -1, 41, 285, 686, 43, -1, 41, 286, 686, 43, -1, 41, 285, 686, 687, 43, -1, 41, 286, 686, 687, 43, -1, 672, -1, 438, -1, 41, 688, 43, -1, 689, -1, 688, 27, 689, -1, 653, -1, 653, 255, 38, 653, 39, -1, 653, 255, 38, 653, 31, 653, 39, -1, 653, 255, 38, 653, 292, 653, 39, -1, 653, 255, 38, 653, 293, 653, 39, -1, 14, -1, 48, -1, 60, -1, 155, -1, 162, -1, 163, -1, 165, -1, 261, -1, 262, -1, 17, -1, 205, -1, 206, -1, -1, 693, -1, 290, 691, 24, -1, 290, 691, 27, 691, 24, -1, 214, 695, 104, -1, 696, -1, 695, 696, -1, 19, -1, 20, -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, 27, -1, 28, -1, 29, -1, 30, -1, 31, -1, 32, -1, 33, -1, 34, -1, 35, -1, 36, -1, 37, -1, 38, -1, 39, -1, 40, -1, 41, -1, 42, -1, 43, -1, 44, -1, 329, -1, 328, -1, 327, -1, 330, -1, 326, -1, 45, -1, 46, -1, 47, -1, 48, -1, 49, -1, 50, -1, 51, -1, 52, -1, 53, -1, 54, -1, 55, -1, 56, -1, 57, -1, 58, -1, 59, -1, 60, -1, 61, -1, 62, -1, 63, -1, 64, -1, 65, -1, 66, -1, 67, -1, 68, -1, 69, -1, 70, -1, 71, -1, 72, -1, 73, -1, 74, -1, 75, -1, 76, -1, 77, -1, 78, -1, 79, -1, 80, -1, 81, -1, 82, -1, 83, -1, 84, -1, 85, -1, 86, -1, 263, -1, 264, -1, 265, -1, 266, -1, 267, -1, 268, -1, 87, -1, 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, 94, -1, 95, -1, 96, -1, 97, -1, 98, -1, 99, -1, 100, -1, 101, -1, 102, -1, 103, -1, 105, -1, 106, -1, 107, -1, 108, -1, 109, -1, 110, -1, 111, -1, 112, -1, 113, -1, 114, -1, 115, -1, 116, -1, 117, -1, 118, -1, 119, -1, 120, -1, 121, -1, 122, -1, 123, -1, 124, -1, 125, -1, 126, -1, 127, -1, 128, -1, 129, -1, 130, -1, 131, -1, 132, -1, 133, -1, 134, -1, 135, -1, 136, -1, 137, -1, 138, -1, 139, -1, 140, -1, 141, -1, 142, -1, 143, -1, 144, -1, 145, -1, 146, -1, 147, -1, 148, -1, 149, -1, 150, -1, 151, -1, 152, -1, 153, -1, 154, -1, 155, -1, 156, -1, 157, -1, 158, -1, 159, -1, 160, -1, 161, -1, 162, -1, 163, -1, 164, -1, 165, -1, 166, -1, 167, -1, 168, -1, 169, -1, 170, -1, 171, -1, 172, -1, 173, -1, 174, -1, 175, -1, 272, -1, 298, -1, 320, -1, 297, -1, 303, -1, 310, -1, 311, -1, 312, -1, 309, -1, 278, -1, 279, -1, 304, -1, 306, -1, 305, -1, 318, -1, 302, -1, 296, -1, 276, -1, 282, -1, 283, -1, 284, -1, 291, -1, 293, -1, 316, -1, 294, -1, 295, -1, 314, -1, 319, -1, 275, -1, 273, -1, 277, -1, 321, -1, 308, -1, 307, -1, 271, -1, 289, -1, 290, -1, 292, -1, 315, -1, 313, -1, 301, -1, 300, -1, 299, -1, 288, -1, 285, -1, 323, -1, 286, -1, 324, -1, 287, -1, 325, -1, 269, -1, 270, -1, 317, -1, 280, -1, 281, -1, 274, -1, 322, -1, 176, -1, 177, -1, 178, -1, 179, -1, 180, -1, 181, -1, 182, -1, 183, -1, 184, -1, 185, -1, 186, -1, 187, -1, 188, -1, 189, -1, 190, -1, 191, -1, 192, -1, 193, -1, 194, -1, 195, -1, 196, -1, 197, -1, 198, -1, 199, -1, 200, -1, 201, -1, 202, -1, 203, -1, 204, -1, 205, -1, 206, -1, 207, -1, 208, -1, 209, -1, 210, -1, 211, -1, 212, -1, 213, -1, 215, -1, 216, -1, 217, -1, 218, -1, 219, -1, 220, -1, 221, -1, 222, -1, 223, -1, 224, -1, 225, -1, 226, -1, 227, -1, 228, -1, 229, -1, 230, -1, 231, -1, 232, -1, 233, -1, 234, -1, 235, -1, 236, -1, 237, -1, 238, -1, 239, -1, 240, -1, 241, -1, 242, -1, 243, -1, 244, -1, 245, -1, 246, -1, 247, -1, 248, -1, 249, -1, 250, -1, 251, -1, 252, -1, 253, -1, 254, -1, 255, -1, 256, -1, 257, -1, 258, -1, 259, -1, 260, -1, 261, -1, 262, -1, 3, -1, 4, -1, 5, -1, 6, -1, 7, -1, 8, -1, 9, -1, 11, -1, 12, -1, 10, -1, 13, -1, 15, -1, 14, -1, 16, -1, 17, -1, 18, -1, 214, 696, 104, -1, 1, -1, 196, 698, 103, -1, 196, 103, -1, 699, -1, 698, 699, -1, 19, -1, 20, -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, 27, -1, 28, -1, 29, -1, 30, -1, 31, -1, 32, -1, 33, -1, 34, -1, 35, -1, 36, -1, 37, -1, 38, -1, 39, -1, 40, -1, 41, -1, 42, -1, 43, -1, 44, -1, 329, -1, 328, -1, 327, -1, 330, -1, 326, -1, 45, -1, 46, -1, 47, -1, 48, -1, 49, -1, 50, -1, 51, -1, 52, -1, 53, -1, 54, -1, 55, -1, 56, -1, 57, -1, 58, -1, 59, -1, 60, -1, 61, -1, 62, -1, 63, -1, 64, -1, 65, -1, 66, -1, 67, -1, 68, -1, 69, -1, 70, -1, 71, -1, 72, -1, 73, -1, 74, -1, 75, -1, 76, -1, 77, -1, 78, -1, 79, -1, 80, -1, 81, -1, 82, -1, 83, -1, 84, -1, 85, -1, 86, -1, 263, -1, 264, -1, 265, -1, 266, -1, 267, -1, 268, -1, 87, -1, 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, 94, -1, 95, -1, 96, -1, 97, -1, 98, -1, 99, -1, 100, -1, 101, -1, 102, -1, 104, -1, 105, -1, 106, -1, 107, -1, 108, -1, 109, -1, 110, -1, 111, -1, 112, -1, 113, -1, 114, -1, 115, -1, 116, -1, 117, -1, 118, -1, 119, -1, 120, -1, 121, -1, 122, -1, 123, -1, 124, -1, 125, -1, 126, -1, 127, -1, 128, -1, 129, -1, 130, -1, 131, -1, 132, -1, 133, -1, 134, -1, 135, -1, 136, -1, 137, -1, 138, -1, 139, -1, 140, -1, 141, -1, 142, -1, 143, -1, 144, -1, 145, -1, 146, -1, 147, -1, 148, -1, 149, -1, 150, -1, 151, -1, 152, -1, 153, -1, 154, -1, 155, -1, 156, -1, 157, -1, 158, -1, 159, -1, 160, -1, 161, -1, 162, -1, 163, -1, 164, -1, 165, -1, 166, -1, 167, -1, 168, -1, 169, -1, 170, -1, 171, -1, 172, -1, 173, -1, 174, -1, 175, -1, 272, -1, 298, -1, 320, -1, 297, -1, 303, -1, 310, -1, 311, -1, 312, -1, 309, -1, 278, -1, 279, -1, 304, -1, 306, -1, 305, -1, 318, -1, 302, -1, 296, -1, 276, -1, 282, -1, 283, -1, 284, -1, 291, -1, 293, -1, 316, -1, 294, -1, 295, -1, 314, -1, 319, -1, 275, -1, 273, -1, 277, -1, 321, -1, 308, -1, 307, -1, 271, -1, 289, -1, 290, -1, 292, -1, 315, -1, 313, -1, 301, -1, 300, -1, 299, -1, 288, -1, 285, -1, 323, -1, 286, -1, 324, -1, 287, -1, 325, -1, 269, -1, 270, -1, 317, -1, 280, -1, 281, -1, 274, -1, 322, -1, 176, -1, 177, -1, 178, -1, 179, -1, 180, -1, 181, -1, 182, -1, 183, -1, 184, -1, 185, -1, 186, -1, 187, -1, 188, -1, 189, -1, 190, -1, 191, -1, 192, -1, 193, -1, 194, -1, 195, -1, 197, -1, 198, -1, 199, -1, 200, -1, 201, -1, 202, -1, 203, -1, 204, -1, 205, -1, 206, -1, 207, -1, 208, -1, 209, -1, 210, -1, 211, -1, 212, -1, 213, -1, 214, -1, 215, -1, 216, -1, 217, -1, 218, -1, 219, -1, 220, -1, 221, -1, 222, -1, 223, -1, 224, -1, 225, -1, 226, -1, 227, -1, 228, -1, 229, -1, 230, -1, 231, -1, 232, -1, 233, -1, 234, -1, 235, -1, 236, -1, 237, -1, 238, -1, 239, -1, 240, -1, 241, -1, 242, -1, 243, -1, 244, -1, 245, -1, 246, -1, 247, -1, 248, -1, 249, -1, 250, -1, 251, -1, 252, -1, 253, -1, 254, -1, 255, -1, 256, -1, 257, -1, 258, -1, 259, -1, 260, -1, 261, -1, 262, -1, 3, -1, 4, -1, 5, -1, 6, -1, 7, -1, 8, -1, 9, -1, 11, -1, 12, -1, 10, -1, 13, -1, 15, -1, 14, -1, 16, -1, 17, -1, 18, -1, 196, 699, 103, -1, 1, -1, 197, 701, 32, -1, 702, -1, 701, 702, -1, 19, -1, 20, -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, 27, -1, 28, -1, 29, -1, 30, -1, 31, -1, 33, -1, 34, -1, 35, -1, 36, -1, 37, -1, 38, -1, 39, -1, 40, -1, 41, -1, 42, -1, 43, -1, 44, -1, 329, -1, 328, -1, 327, -1, 330, -1, 326, -1, 45, -1, 46, -1, 47, -1, 48, -1, 49, -1, 50, -1, 51, -1, 52, -1, 53, -1, 54, -1, 55, -1, 56, -1, 57, -1, 58, -1, 59, -1, 60, -1, 61, -1, 62, -1, 63, -1, 64, -1, 65, -1, 66, -1, 67, -1, 68, -1, 69, -1, 70, -1, 71, -1, 72, -1, 73, -1, 74, -1, 75, -1, 76, -1, 77, -1, 78, -1, 79, -1, 80, -1, 81, -1, 82, -1, 83, -1, 84, -1, 85, -1, 86, -1, 263, -1, 264, -1, 265, -1, 266, -1, 267, -1, 268, -1, 87, -1, 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, 94, -1, 95, -1, 96, -1, 97, -1, 99, -1, 100, -1, 101, -1, 102, -1, 104, -1, 105, -1, 106, -1, 107, -1, 108, -1, 109, -1, 110, -1, 111, -1, 112, -1, 113, -1, 114, -1, 115, -1, 116, -1, 117, -1, 118, -1, 119, -1, 120, -1, 121, -1, 122, -1, 123, -1, 124, -1, 125, -1, 126, -1, 127, -1, 128, -1, 129, -1, 130, -1, 131, -1, 132, -1, 133, -1, 134, -1, 135, -1, 136, -1, 137, -1, 138, -1, 139, -1, 140, -1, 141, -1, 142, -1, 143, -1, 144, -1, 145, -1, 146, -1, 147, -1, 148, -1, 149, -1, 150, -1, 151, -1, 152, -1, 153, -1, 154, -1, 155, -1, 156, -1, 157, -1, 158, -1, 159, -1, 160, -1, 161, -1, 162, -1, 163, -1, 164, -1, 165, -1, 166, -1, 167, -1, 168, -1, 169, -1, 170, -1, 171, -1, 172, -1, 173, -1, 174, -1, 175, -1, 272, -1, 298, -1, 320, -1, 297, -1, 303, -1, 310, -1, 311, -1, 312, -1, 309, -1, 278, -1, 279, -1, 304, -1, 306, -1, 305, -1, 318, -1, 302, -1, 296, -1, 276, -1, 282, -1, 283, -1, 284, -1, 291, -1, 293, -1, 316, -1, 294, -1, 295, -1, 314, -1, 319, -1, 275, -1, 273, -1, 277, -1, 321, -1, 308, -1, 307, -1, 271, -1, 289, -1, 290, -1, 292, -1, 315, -1, 313, -1, 301, -1, 300, -1, 299, -1, 288, -1, 285, -1, 323, -1, 286, -1, 324, -1, 287, -1, 325, -1, 269, -1, 270, -1, 317, -1, 280, -1, 281, -1, 274, -1, 322, -1, 176, -1, 177, -1, 178, -1, 179, -1, 180, -1, 181, -1, 182, -1, 183, -1, 184, -1, 185, -1, 186, -1, 187, -1, 188, -1, 189, -1, 190, -1, 191, -1, 192, -1, 193, -1, 194, -1, 195, -1, 196, -1, 197, -1, 198, -1, 199, -1, 200, -1, 201, -1, 202, -1, 203, -1, 204, -1, 205, -1, 206, -1, 207, -1, 208, -1, 209, -1, 210, -1, 211, -1, 212, -1, 213, -1, 214, -1, 215, -1, 216, -1, 217, -1, 218, -1, 219, -1, 220, -1, 221, -1, 222, -1, 223, -1, 224, -1, 225, -1, 226, -1, 227, -1, 228, -1, 229, -1, 230, -1, 231, -1, 232, -1, 233, -1, 234, -1, 235, -1, 236, -1, 237, -1, 238, -1, 239, -1, 240, -1, 241, -1, 242, -1, 243, -1, 244, -1, 245, -1, 246, -1, 247, -1, 248, -1, 249, -1, 250, -1, 251, -1, 252, -1, 253, -1, 254, -1, 255, -1, 256, -1, 257, -1, 258, -1, 259, -1, 260, -1, 261, -1, 262, -1, 3, -1, 4, -1, 5, -1, 6, -1, 7, -1, 8, -1, 9, -1, 11, -1, 12, -1, 10, -1, 13, -1, 15, -1, 14, -1, 16, -1, 17, -1, 18, -1, 1, -1, 4, -1, 7, -1, 8, -1, 4, -1, 86, -1, 113, -1, 709, -1, 41, 707, 43, -1, 440, 270, 708, 43, -1, 709, 270, 708, 43, -1, 270, 708, 43, -1, 685, -1, 706, -1, 707, 27, 706, -1, 706, -1, 708, 27, 706, -1, 714, -1, 219, 29, 714, -1, 204, 29, 714, -1, 219, 29, 204, 29, 714, -1, 852, 714, -1, 857, 714, -1, 715, -1, 219, 29, 715, -1, 204, 29, 715, -1, 219, 29, 204, 29, 715, -1, 852, 715, -1, 857, 715, -1, 713, -1, 711, 27, 713, -1, 709, -1, 709, -1, 266, 29, 716, -1, 716, -1, 266, 29, 717, -1, 717, -1, 718, -1, 716, 29, 718, -1, 719, -1, 717, 29, 719, -1, 703, -1, 718, 38, 653, 39, -1, 718, 38, 652, 31, 652, 39, -1, 718, 38, 653, 292, 652, 39, -1, 718, 38, 653, 293, 652, 39, -1, 703, -1, 719, 38, 653, 39, -1, 719, 38, 652, 31, 652, 39, -1, 719, 38, 653, 292, 652, 39, -1, 719, 38, 653, 293, 652, 39, -1, 719, 38, 653, 27, 607, 39, -1, 11, -1, -1, 31, 704, -1, 31, 158, -1, 723, 724, 32, 725, 93, 721, -1, 69, -1, 69, 704, -1, 82, 69, -1, 82, 69, 704, -1, 126, 69, -1, 126, 69, 704, -1, 37, 703, -1, 37, 23, 558, 24, -1, -1, 726, -1, 727, -1, 726, 727, -1, 82, 728, 32, -1, 729, 730, 32, -1, 735, -1, 137, 733, -1, 166, 733, -1, 137, 733, 166, 733, -1, 137, 732, -1, 166, 732, -1, 137, 732, 166, 732, -1, 136, -1, 731, -1, 730, 27, 731, -1, 704, -1, 704, 34, 653, -1, -1, 733, -1, 170, -1, 170, 520, -1, 156, -1, 156, 520, -1, 87, -1, 87, 520, -1, 520, -1, 299, 9, -1, 299, 703, -1, 299, 23, 653, 24, -1, 745, -1, 756, -1, 778, -1, 743, -1, 737, -1, 741, -1, 703, 31, 741, -1, 744, -1, 739, -1, 841, -1, 740, -1, 741, -1, 49, 23, 653, 24, 582, -1, 51, 23, 653, 24, 582, -1, 77, 23, 653, 24, 569, -1, 49, 20, 9, 23, 653, 24, 582, -1, 49, 113, 23, 653, 24, 582, -1, 51, 20, 9, 23, 653, 24, 582, -1, 51, 113, 23, 653, 24, 582, -1, 77, 20, 9, 23, 653, 24, 569, -1, 77, 113, 23, 653, 24, 582, -1, 109, 23, 762, 24, 582, -1, 744, -1, 703, 31, 744, -1, 49, 173, 23, 762, 24, 582, -1, 51, 173, 23, 762, 24, 582, -1, 77, 173, 23, 762, 24, 560, -1, 77, 190, 23, 770, 24, 569, -1, 77, 190, 23, 724, 84, 129, 23, 653, 24, 770, 24, 569, -1, 77, 190, 23, 84, 129, 23, 653, 24, 770, 24, 569, -1, 187, 173, 23, 762, 24, 32, -1, 746, 747, 32, 754, 101, 721, -1, 173, 704, -1, -1, -1, 23, 748, 749, 24, -1, 750, -1, 749, 27, 750, -1, 751, 752, -1, 753, 759, -1, 753, 440, -1, 753, 239, 440, -1, 753, 239, 476, -1, 753, 435, 529, -1, 753, -1, 378, 454, -1, 378, 454, 34, 614, -1, -1, 148, -1, 148, 422, -1, 755, 763, -1, 763, -1, 477, -1, 755, 477, -1, 757, 758, 32, 761, 102, 721, -1, 190, 704, -1, 747, -1, 760, -1, 173, -1, 190, -1, 238, -1, 755, 770, -1, 755, 770, 32, -1, 770, -1, 770, 32, -1, 84, 129, 23, 653, 24, 769, -1, 769, -1, 764, -1, 84, 129, 23, 653, 24, 764, -1, 724, 765, -1, 724, 84, 129, 23, 653, 24, 765, -1, 769, 32, -1, 765, -1, 62, 23, 653, 24, 766, 90, -1, 62, 23, 653, 24, 90, -1, 128, 23, 653, 24, 769, -1, 128, 23, 653, 24, 769, 88, 769, -1, 767, -1, 766, 27, 767, -1, 594, 31, 769, -1, 594, 31, 769, 32, -1, 82, 769, -1, 82, 31, 769, 32, -1, 559, -1, 163, 769, -1, 202, 23, 770, 24, -1, 250, 23, 770, 24, -1, 768, 307, 769, -1, 768, 308, 769, -1, 765, -1, 768, 300, 769, -1, 768, 301, 769, -1, 161, 769, -1, 211, 769, -1, 161, 38, 653, 39, 769, -1, 211, 38, 653, 39, 769, -1, 47, 769, -1, 47, 38, 777, 39, 769, -1, 209, 38, 776, 39, 769, -1, 210, 769, -1, 108, 38, 776, 39, 769, -1, 210, 38, 777, 39, 769, -1, 768, 236, 769, -1, 768, 212, 769, -1, 768, 237, 769, -1, 768, 213, 769, -1, 768, 133, 769, -1, 768, 129, 768, -1, 45, 23, 653, 24, 769, -1, 184, 23, 653, 24, 769, -1, 207, 23, 653, 24, 769, -1, 208, 23, 653, 24, 769, -1, 724, 84, 129, 23, 653, 24, 769, -1, 771, 770, -1, 768, 771, 770, -1, 768, 774, -1, 23, 768, 24, -1, 23, 768, 27, 772, 24, -1, 768, 48, 768, -1, 768, 165, 768, -1, 768, 143, 770, -1, 114, 23, 770, 24, -1, 114, 23, 770, 27, 772, 24, -1, 768, 220, 770, -1, 768, 254, 770, -1, 724, 768, -1, 26, 653, -1, 28, 653, -1, 19, 653, -1, 22, 653, -1, 44, 653, -1, 42, 653, -1, 40, 653, -1, 275, 653, -1, 273, 653, -1, 274, 653, -1, 578, -1, 23, 669, 34, 653, 24, -1, 23, 669, 315, 653, 24, -1, 23, 669, 316, 653, 24, -1, 23, 669, 317, 653, 24, -1, 23, 669, 318, 653, 24, -1, 23, 669, 319, 653, 24, -1, 23, 669, 320, 653, 24, -1, 23, 669, 321, 653, 24, -1, 23, 669, 322, 653, 24, -1, 23, 669, 323, 653, 24, -1, 23, 669, 324, 653, 24, -1, 23, 669, 325, 653, 24, -1, 768, 26, 653, -1, 768, 28, 653, -1, 768, 25, 653, -1, 768, 30, 653, -1, 768, 21, 653, -1, 768, 276, 653, -1, 768, 277, 653, -1, 768, 278, 653, -1, 768, 279, 653, -1, 768, 280, 653, -1, 768, 281, 653, -1, 768, 272, 653, -1, 768, 271, 653, -1, 768, 288, 653, -1, 768, 33, 653, -1, 768, 35, 653, -1, 768, 282, 653, -1, 768, 22, 653, -1, 768, 42, 653, -1, 768, 40, 653, -1, 768, 274, 653, -1, 768, 273, 653, -1, 768, 275, 653, -1, 768, 285, 653, -1, 768, 286, 653, -1, 768, 287, 653, -1, 768, 291, 653, -1, 768, 294, 877, -1, 768, 283, 653, -1, 768, 36, 653, 31, 653, -1, 768, 138, 41, 590, 43, -1, 215, 703, -1, 215, 703, 653, -1, 9, -1, 3, -1, 10, -1, 720, -1, 41, 43, -1, 41, 652, 41, 672, 43, 43, -1, 41, 652, 41, 672, 43, 43, 38, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 31, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 292, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 293, 653, 39, -1, 610, -1, 768, 29, 610, -1, 768, 29, 643, -1, 289, 23, 653, 24, -1, 289, 23, 653, 31, 653, 31, 653, 24, -1, 342, 23, 345, 653, 346, 24, -1, 437, 269, 23, 653, 24, -1, 768, 269, 23, 653, 24, -1, 343, -1, 164, -1, 661, -1, 768, 298, 653, -1, 768, 152, 595, -1, 768, 152, 653, -1, 768, 85, 41, 878, 43, -1, 163, 769, -1, 202, 23, 770, 24, -1, 250, 23, 770, 24, -1, 769, 307, 769, -1, 769, 308, 769, -1, 765, -1, 769, 300, 769, -1, 769, 301, 769, -1, 161, 769, -1, 211, 769, -1, 161, 38, 653, 39, 769, -1, 211, 38, 653, 39, 769, -1, 47, 769, -1, 47, 38, 777, 39, 769, -1, 209, 38, 776, 39, 769, -1, 210, 769, -1, 108, 38, 776, 39, 769, -1, 210, 38, 777, 39, 769, -1, 769, 236, 769, -1, 769, 212, 769, -1, 769, 237, 769, -1, 769, 213, 769, -1, 769, 133, 769, -1, 769, 129, 769, -1, 45, 23, 653, 24, 769, -1, 184, 23, 653, 24, 769, -1, 207, 23, 653, 24, 769, -1, 208, 23, 653, 24, 769, -1, 724, 84, 129, 23, 653, 24, 769, -1, 771, 770, -1, 769, 771, 770, -1, 769, 774, -1, 23, 769, 24, -1, 23, 769, 27, 772, 24, -1, 769, 48, 769, -1, 769, 165, 769, -1, 769, 143, 770, -1, 114, 23, 770, 24, -1, 114, 23, 770, 27, 772, 24, -1, 769, 220, 770, -1, 769, 254, 770, -1, 724, 769, -1, 26, 653, -1, 28, 653, -1, 19, 653, -1, 22, 653, -1, 44, 653, -1, 42, 653, -1, 40, 653, -1, 275, 653, -1, 273, 653, -1, 274, 653, -1, 576, -1, 23, 667, 34, 653, 24, -1, 23, 667, 315, 653, 24, -1, 23, 667, 316, 653, 24, -1, 23, 667, 317, 653, 24, -1, 23, 667, 318, 653, 24, -1, 23, 667, 319, 653, 24, -1, 23, 667, 320, 653, 24, -1, 23, 667, 321, 653, 24, -1, 23, 667, 322, 653, 24, -1, 23, 667, 323, 653, 24, -1, 23, 667, 324, 653, 24, -1, 23, 667, 325, 653, 24, -1, 769, 26, 653, -1, 769, 28, 653, -1, 769, 25, 653, -1, 769, 30, 653, -1, 769, 21, 653, -1, 769, 276, 653, -1, 769, 277, 653, -1, 769, 278, 653, -1, 769, 279, 653, -1, 769, 280, 653, -1, 769, 281, 653, -1, 769, 272, 653, -1, 769, 271, 653, -1, 769, 288, 653, -1, 769, 33, 653, -1, 769, 35, 653, -1, 769, 282, 653, -1, 769, 22, 653, -1, 769, 42, 653, -1, 769, 40, 653, -1, 769, 274, 653, -1, 769, 273, 653, -1, 769, 275, 653, -1, 769, 285, 653, -1, 769, 286, 653, -1, 769, 287, 653, -1, 769, 291, 653, -1, 769, 294, 877, -1, 769, 283, 653, -1, 769, 36, 653, 31, 653, -1, 769, 138, 41, 590, 43, -1, 215, 703, -1, 215, 703, 653, -1, 9, -1, 3, -1, 10, -1, 720, -1, 41, 43, -1, 41, 652, 41, 672, 43, 43, -1, 41, 652, 41, 672, 43, 43, 38, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 31, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 292, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 293, 653, 39, -1, 610, -1, 769, 29, 610, -1, 769, 29, 643, -1, 289, 23, 653, 24, -1, 289, 23, 653, 31, 653, 31, 653, 24, -1, 342, 23, 345, 653, 346, 24, -1, 437, 269, 23, 653, 24, -1, 769, 269, 23, 653, 24, -1, 343, -1, 164, -1, 659, -1, 769, 298, 653, -1, 769, 152, 595, -1, 769, 152, 653, -1, 769, 85, 41, 878, 43, -1, 771, 770, -1, 770, 771, 770, -1, 770, 774, -1, 23, 770, 24, -1, 23, 770, 27, 772, 24, -1, 770, 48, 770, -1, 770, 165, 770, -1, 770, 143, 770, -1, 114, 23, 770, 24, -1, 114, 23, 770, 27, 772, 24, -1, 770, 220, 770, -1, 770, 254, 770, -1, 724, 770, -1, 26, 653, -1, 28, 653, -1, 19, 653, -1, 22, 653, -1, 44, 653, -1, 42, 653, -1, 40, 653, -1, 275, 653, -1, 273, 653, -1, 274, 653, -1, 575, -1, 23, 666, 34, 653, 24, -1, 23, 666, 315, 653, 24, -1, 23, 666, 316, 653, 24, -1, 23, 666, 317, 653, 24, -1, 23, 666, 318, 653, 24, -1, 23, 666, 319, 653, 24, -1, 23, 666, 320, 653, 24, -1, 23, 666, 321, 653, 24, -1, 23, 666, 322, 653, 24, -1, 23, 666, 323, 653, 24, -1, 23, 666, 324, 653, 24, -1, 23, 666, 325, 653, 24, -1, 770, 26, 653, -1, 770, 28, 653, -1, 770, 25, 653, -1, 770, 30, 653, -1, 770, 21, 653, -1, 770, 276, 653, -1, 770, 277, 653, -1, 770, 278, 653, -1, 770, 279, 653, -1, 770, 280, 653, -1, 770, 281, 653, -1, 770, 272, 653, -1, 770, 271, 653, -1, 770, 288, 653, -1, 770, 33, 653, -1, 770, 35, 653, -1, 770, 282, 653, -1, 770, 22, 653, -1, 770, 42, 653, -1, 770, 40, 653, -1, 770, 274, 653, -1, 770, 273, 653, -1, 770, 275, 653, -1, 770, 285, 653, -1, 770, 286, 653, -1, 770, 287, 653, -1, 770, 291, 653, -1, 770, 294, 877, -1, 770, 283, 653, -1, 770, 36, 653, 31, 653, -1, 770, 138, 41, 590, 43, -1, 215, 703, -1, 215, 703, 653, -1, 9, -1, 3, -1, 10, -1, 720, -1, 41, 43, -1, 41, 652, 41, 672, 43, 43, -1, 41, 652, 41, 672, 43, 43, 38, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 31, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 292, 653, 39, -1, 41, 652, 41, 672, 43, 43, 38, 653, 293, 653, 39, -1, 610, -1, 770, 29, 610, -1, 770, 29, 643, -1, 289, 23, 653, 24, -1, 289, 23, 653, 31, 653, 31, 653, 24, -1, 342, 23, 345, 653, 346, 24, -1, 437, 269, 23, 653, 24, -1, 770, 269, 23, 653, 24, -1, 343, -1, 164, -1, 658, -1, 770, 298, 653, -1, 770, 152, 595, -1, 770, 152, 653, -1, 770, 85, 41, 878, 43, -1, 299, 9, -1, 299, 703, -1, 299, 23, 652, 24, -1, 299, 38, 777, 39, -1, 299, 309, 39, -1, 299, 312, -1, 773, -1, 772, 27, 773, -1, 606, -1, 309, 775, 39, -1, 309, 39, -1, 312, -1, 310, 775, 39, -1, 311, 775, 39, -1, 652, -1, 777, -1, 652, 31, 652, -1, 652, 31, 652, -1, 779, 780, 34, 653, 32, -1, 145, 704, -1, -1, 23, 635, 24, -1, 782, 812, 32, 784, 96, 721, -1, 782, 23, 635, 24, 812, 32, 784, 96, 721, -1, 78, 704, -1, 653, -1, -1, 785, -1, 786, -1, 785, 786, -1, 788, -1, 801, -1, 787, 32, -1, 1, -1, 703, 29, 704, 34, 653, -1, 79, 653, 789, 790, -1, 703, 31, 79, 653, 789, 790, -1, 849, 31, 79, 653, 789, 790, -1, 849, 703, 440, 703, 31, 79, 653, 789, 790, -1, 849, 703, 703, 31, 79, 653, 789, 790, -1, 703, 703, 31, 79, 653, 789, 790, -1, 790, -1, -1, 129, 23, 653, 24, -1, 41, 791, 43, -1, 41, 43, -1, 32, -1, 792, 32, -1, 791, 792, 32, -1, 787, -1, 794, 703, 793, 34, 41, 590, 43, 789, -1, 252, 794, 703, 793, 34, 41, 590, 43, 789, -1, 794, 703, 793, 34, 41, 590, 43, 256, 41, 783, 24, 789, -1, 252, 794, 703, 793, 34, 41, 590, 43, 256, 41, 783, 24, 789, -1, 794, 703, 793, 34, 796, 789, -1, 252, 794, 703, 793, 34, 796, 789, -1, 794, 703, 793, 34, 82, 789, -1, 794, 703, 793, 34, 82, 190, 789, -1, -1, 38, 39, -1, 38, 783, 39, -1, 56, -1, 131, -1, 130, -1, 593, -1, 795, 27, 593, -1, 23, 797, 24, -1, 796, 27, 23, 797, 24, -1, 798, -1, 797, 296, 798, -1, 799, -1, 799, 309, 800, 39, -1, 799, 311, 800, 39, -1, 799, 310, 800, 39, -1, 795, -1, 783, -1, 783, 31, 783, -1, 703, 31, 80, 802, 789, 805, -1, 80, 802, 789, 805, -1, 804, 27, 804, -1, 804, 27, 804, 27, 803, -1, 804, -1, 803, 27, 804, -1, 704, -1, 41, 43, -1, 41, 806, 43, -1, 32, -1, 807, 32, -1, 806, 807, 32, -1, 808, -1, 619, -1, 787, -1, 809, -1, 794, 704, 34, 810, 789, -1, 57, 23, 811, 24, -1, 57, 23, 811, 24, 143, 41, 795, 43, -1, 259, 23, 783, 24, -1, 19, 57, 23, 811, 24, -1, 19, 57, 23, 811, 24, 143, 41, 795, 43, -1, 19, 259, 23, 783, 24, -1, 810, 272, 810, -1, 810, 271, 810, -1, 23, 810, 24, -1, 703, -1, 703, 29, 704, -1, -1, 724, -1, 257, 618, 704, 23, 635, 24, -1, 303, 23, 813, 24, -1, 814, -1, 813, 165, 814, -1, 54, 815, -1, 89, 815, -1, 713, -1, 713, 849, -1, 713, 703, -1, 179, 23, 24, 817, 102, -1, 179, 23, 703, 24, 817, 102, -1, 818, -1, 817, 818, -1, 819, 31, 820, 32, -1, 632, 703, -1, 703, -1, 632, 703, 23, 635, 24, -1, 703, 23, 635, 24, -1, 821, -1, 820, 42, 821, -1, 822, -1, 822, 305, 823, -1, 822, 305, 823, 824, -1, 827, -1, 176, 144, 830, 829, -1, 176, 144, 23, 653, 24, 830, 829, -1, 9, -1, 709, -1, 23, 653, 24, -1, 41, 43, -1, 41, 825, 43, -1, 826, -1, 825, 826, -1, 468, -1, 569, -1, 828, -1, 827, 828, -1, 830, -1, 824, -1, 128, 23, 653, 24, 830, -1, 128, 23, 653, 24, 830, 88, 830, -1, 186, 23, 653, 24, 830, -1, 62, 23, 653, 24, 831, 90, -1, 830, -1, 829, 830, -1, 703, -1, 703, 23, 674, 24, -1, 832, -1, 831, 832, -1, 594, 31, 830, 32, -1, 82, 830, 32, -1, 82, 31, 830, 32, -1, 834, 835, 32, 836, 91, 721, -1, 66, 704, -1, 747, -1, -1, 837, -1, 838, -1, 837, 838, -1, 839, -1, 486, -1, 47, 560, -1, 487, -1, 736, -1, 485, -1, 840, -1, 468, -1, 176, 468, -1, 619, -1, 833, -1, 735, -1, 781, -1, 649, -1, 406, -1, 722, -1, 82, 69, 703, 32, -1, 82, 84, 129, 653, 32, -1, 32, -1, 509, -1, 507, -1, 495, -1, 613, -1, 703, 703, 23, 553, 24, 32, -1, 843, 367, 845, 846, 32, 861, 92, 721, -1, 844, 67, 623, 704, -1, 142, 67, 623, 704, -1, -1, 241, -1, -1, 111, 850, -1, 111, 850, 23, 674, 24, -1, -1, 132, 847, -1, 850, -1, 847, 27, 850, -1, 856, 703, -1, 852, 703, -1, 856, 854, -1, 852, -1, 856, 853, -1, 854, 304, -1, 855, -1, 853, 855, -1, 8, 366, -1, -1, 857, -1, -1, 267, 858, 304, -1, -1, 7, 859, 304, -1, -1, 147, 860, 304, -1, -1, 862, -1, 863, -1, 862, 863, -1, 469, -1, 864, -1, 869, -1, 842, -1, 350, -1, 781, -1, 409, 32, -1, 410, 32, -1, 32, -1, 1, 32, -1, 866, 616, -1, 866, 619, -1, 112, 866, 622, 32, -1, 112, 866, 621, -1, 174, -1, 148, -1, 199, -1, -1, 867, -1, 868, -1, 867, 868, -1, 865, -1, 242, -1, 175, 242, -1, 458, -1, 52, -1, 71, -1, 881, 70, 704, 870, -1, 881, 70, 704, 32, -1, 112, 881, 70, 704, 32, -1, 175, 881, 70, 704, 32, -1, 41, 871, 43, -1, 872, -1, 871, 872, -1, 195, 873, 53, 873, 32, -1, 876, -1, 874, -1, 873, 27, 874, -1, 664, -1, 876, -1, 875, 876, -1, 653, 32, -1, 194, 653, 32, -1, 233, 41, 590, 43, -1, 128, 23, 653, 24, 877, -1, 128, 23, 653, 24, 877, 88, 877, -1, 117, 23, 710, 24, 877, -1, 84, 194, 653, 32, -1, 876, -1, 41, 875, 43, -1, 879, -1, 878, 27, 879, -1, 592, -1, 592, 305, 653, -1, 592, 306, 653, -1, 881, 70, 849, 870, -1, -1, 198, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 590, 590, 593, 600, 602, 606, 607, 611, 613, 614, 615, 616, 617, 619, 623, 624, 625, 632, 639, 645, 646, 650, 651, 655, 656, 657, 658, 662, 663, 664, 665, 666, 667, 668, 669, 671, 672, 673, 674, 675, 676, 680, 681, 685, 689, 690, 694, 700, 701, 705, 706, 715, 720, 727, 734, 735, 739, 740, 742, 746, 747, 752, 752, 757, 758, 763, 764, 768, 771, 772, 772, 776, 777, 787, 788, 791, 793, 796, 826, 828, 830, 832, 835, 837, 839, 841, 844, 846, 848, 850, 853, 857, 860, 861, 862, 866, 867, 871, 872, 876, 877, 885, 889, 893, 899, 900, 904, 905, 909, 911, 912, 913, 914, 915, 917, 923, 924, 932, 936, 937, 941, 942, 946, 947, 948, 949, 951, 956, 960, 965, 972, 973, 977, 978, 982, 983, 987, 988, 989, 990, 991, 992, 993, 997, 998, 999, 1000, 1004, 1005, 1006, 1010, 1014, 1015, 1019, 1019, 1026, 1032, 1033, 1042, 1044, 1045, 1046, 1049, 1054, 1055, 1056, 1060, 1061, 1068, 1072, 1073, 1077, 1082, 1090, 1094, 1095, 1096, 1100, 1101, 1102, 1107, 1108, 1110, 1111, 1115, 1119, 1120, 1124, 1128, 1129, 1130, 1137, 1138, 1139, 1140, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1158, 1162, 1167, 1168, 1169, 1170, 1171, 1176, 1177, 1178, 1179, 1180, 1191, 1191, 1192, 1192, 1193, 1193, 1194, 1194, 1204, 1204, 1205, 1205, 1209, 1210, 1211, 1212, 1213, 1214, 1218, 1219, 1220, 1224, 1225, 1226, 1230, 1231, 1235, 1236, 1243, 1248, 1249, 1250, 1251, 1256, 1257, 1258, 1261, 1267, 1270, 1272, 1277, 1278, 1279, 1280, 1280, 1283, 1283, 1286, 1287, 1288, 1294, 1296, 1303, 1304, 1313, 1319, 1320, 1324, 1325, 1326, 1330, 1334, 1335, 1339, 1339, 1344, 1345, 1349, 1351, 1353, 1363, 1367, 1368, 1372, 1374, 1379, 1380, 1381, 1385, 1386, 1390, 1391, 1396, 1398, 1399, 1401, 1402, 1403, 1410, 1411, 1415, 1416, 1420, 1421, 1425, 1426, 1434, 1438, 1441, 1442, 1444, 1445, 1448, 1452, 1453, 1457, 1461, 1462, 1463, 1467, 1468, 1472, 1480, 1481, 1482, 1488, 1492, 1493, 1494, 1502, 1507, 1512, 1513, 1514, 1517, 1518, 1519, 1530, 1531, 1532, 1535, 1542, 1544, 1545, 1549, 1550, 1555, 1556, 1557, 1562, 1567, 1569, 1572, 1573, 1574, 1575, 1576, 1577, 1584, 1585, 1589, 1590, 1594, 1595, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1611, 1615, 1617, 1621, 1625, 1626, 1627, 1628, 1630, 1631, 1632, 1634, 1635, 1636, 1637, 1639, 1643, 1647, 1651, 1655, 1656, 1657, 1658, 1659, 1663, 1664, 1670, 1671, 1675, 1676, 1680, 1687, 1699, 1700, 1704, 1704, 1709, 1710, 1714, 1714, 1718, 1719, 1720, 1721, 1722, 1723, 1727, 1727, 1727, 1727, 1727, 1727, 1731, 1732, 1736, 1736, 1740, 1741, 1745, 1745, 1750, 1752, 1759, 1764, 1765, 1767, 1768, 1772, 1772, 1772, 1772, 1776, 1781, 1785, 1786, 1789, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1804, 1805, 1806, 1807, 1811, 1812, 1816, 1816, 1820, 1821, 1822, 1826, 1826, 1826, 1833, 1834, 1838, 1842, 1843, 1844, 1845, 1849, 1850, 1854, 1855, 1856, 1857, 1862, 1863, 1864, 1865, 1869, 1873, 1874, 1878, 1879, 1883, 1884, 1885, 1889, 1890, 1894, 1898, 1899, 1903, 1904, 1908, 1909, 1913, 1914, 1921, 1925, 1926, 1930, 1931, 1935, 1936, 1945, 1948, 1953, 1954, 1958, 1959, 1963, 1976, 1976, 1976, 1979, 1979, 1979, 1983, 1988, 1992, 1993, 1997, 2002, 2006, 2007, 2011, 2019, 2020, 2024, 2025, 2026, 2030, 2030, 2034, 2035, 2039, 2040, 2041, 2042, 2043, 2046, 2047, 2048, 2050, 2052, 2054, 2055, 2056, 2063, 2064, 2065, 2067, 2080, 2081, 2086, 2087, 2088, 2089, 2090, 2091, 2098, 2103, 2104, 2108, 2109, 2113, 2114, 2118, 2119, 2124, 2125, 2126, 2130, 2131, 2135, 2136, 2137, 2138, 2139, 2143, 2144, 2148, 2149, 2151, 2156, 2161, 2162, 2165, 2168, 2169, 2170, 2171, 2174, 2175, 2176, 2179, 2180, 2182, 2187, 2188, 2191, 2192, 2193, 2194, 2199, 2202, 2203, 2205, 2206, 2208, 2209, 2210, 2212, 2214, 2216, 2219, 2220, 2221, 2222, 2224, 2226, 2227, 2228, 2230, 2233, 2234, 2235, 2238, 2243, 2245, 2248, 2250, 2252, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2276, 2277, 2279, 2280, 2284, 2284, 2284, 2284, 2288, 2288, 2288, 2288, 2292, 2292, 2292, 2292, 2296, 2296, 2296, 2296, 2300, 2300, 2300, 2300, 2305, 2306, 2308, 2312, 2313, 2320, 2321, 2322, 2323, 2327, 2328, 2329, 2333, 2334, 2335, 2339, 2344, 2348, 2349, 2353, 2354, 2358, 2359, 2360, 2361, 2362, 2363, 2367, 2368, 2369, 2370, 2371, 2372, 2376, 2377, 2381, 2385, 2386, 2390, 2391, 2395, 2396, 2400, 2401, 2404, 2409, 2410, 2414, 2415, 2416, 2420, 2421, 2422, 2423, 2429, 2431, 2432, 2443, 2447, 2449, 2455, 2459, 2460, 2465, 2467, 2469, 2473, 2474, 2478, 2479, 2483, 2485, 2487, 2489, 2490, 2494, 2495, 2511, 2512, 2513, 2518, 2519, 2520, 2526, 2531, 2532, 2533, 2539, 2543, 2547, 2549, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2577, 2583, 2584, 2588, 2591, 2599, 2600, 2604, 2605, 2609, 2612, 2615, 2618, 2626, 2627, 2631, 2632, 2636, 2637, 2641, 2642, 2647, 2648, 2652, 2660, 2663, 2666, 2669, 2672, 2678, 2681, 2684, 2691, 2692, 2693, 2697, 2698, 2702, 2703, 2707, 2708, 2709, 2710, 2714, 2715, 2719, 2720, 2724, 2725, 2730, 2730, 2735, 2736, 2741, 2742, 2743, 2747, 2748, 2749, 2750, 2751, 2753, 2754, 2755, 2756, 2757, 2758, 2762, 2766, 2768, 2773, 2774, 2787, 2788, 2794, 2795, 2799, 2800, 2801, 2802, 2806, 2807, 2808, 2809, 2813, 2814, 2818, 2819, 2820, 2824, 2829, 2830, 2831, 2832, 2833, 2834, 2835, 2836, 2837, 2838, 2839, 2840, 2841, 2842, 2843, 2847, 2848, 2863, 2870, 2871, 2872, 2873, 2874, 2875, 2876, 2877, 2878, 2879, 2882, 2886, 2887, 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, 2896, 2897, 2900, 2901, 2902, 2903, 2904, 2905, 2906, 2907, 2908, 2909, 2910, 2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2919, 2920, 2921, 2922, 2923, 2924, 2925, 2926, 2932, 2936, 2939, 2942, 2945, 2946, 2951, 2952, 2953, 2954, 2959, 2965, 2967, 2969, 2971, 2973, 2976, 2978, 2980, 2986, 2987, 2989, 2992, 2995, 3004, 3005, 3012, 3018, 3023, 3024, 3028, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3040, 3041, 3047, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3058, 3061, 3068, 3070, 3072, 3073, 3074, 3075, 3079, 3080, 3081, 3083, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3091, 3091, 3091, 3091, 3091, 3091, 3091, 3091, 3091, 3091, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3107, 3111, 3122, 3123, 3124, 3125, 3126, 3128, 3130, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3138, 3138, 3138, 3138, 3138, 3138, 3138, 3142, 3142, 3142, 3142, 3142, 3142, 3142, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3155, 3157, 3159, 3163, 3164, 3166, 3168, 3174, 3175, 3179, 3180, 3181, 3186, 3187, 3188, 3193, 3194, 3195, 3199, 3200, 3204, 3205, 3209, 3210, 3214, 3215, 3219, 3220, 3224, 3225, 3229, 3230, 3234, 3235, 3239, 3240, 3251, 3252, 3253, 3254, 3258, 3259, 3266, 3270, 3271, 3276, 3277, 3278, 3279, 3280, 3294, 3295, 3296, 3297, 3298, 3299, 3300, 3301, 3302, 3307, 3308, 3309, 3313, 3314, 3318, 3319, 3326, 3330, 3331, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3336, 3337, 3344, 3345, 3349, 3350, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3355, 3356, 3360, 3364, 3365, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3370, 3377, 3381, 3382, 3383, 3388, 3389, 3394, 3395, 3398, 3399, 3400, 3401, 3405, 3406, 3410, 3411, 3415, 3417, 3418, 3419, 3421, 3422, 3428, 3430, 3431, 3432, 3434, 3435, 3439, 3440, 3445, 3451, 3455, 3456, 3460, 3461, 3465, 3466, 3470, 3471, 3480, 3482, 3483, 3485, 3486, 3491, 3493, 3494, 3496, 3497, 3499, 3503, 3507, 3508, 3509, 3516, 3522, 3523, 3524, 3525, 3526, 3527, 3531, 3532, 3536, 3537, 3541, 3542, 3546, 3547, 3548, 3552, 3553, 3554, 3558, 3559, 3560, 3561, 3565, 3566, 3570, 3571, 3575, 3576, 3580, 3581, 3582, 3583, 3584, 3585, 3586, 3590, 3591, 3592, 3599, 3600, 3601, 3605, 3606, 3610, 3611, 3615, 3616, 3619, 3623, 3624, 3629, 3631, 3633, 3638, 3640, 3642, 3644, 3646, 3648, 3652, 3656, 3657, 3664, 3666, 3668, 3670, 3673, 3674, 3676, 3680, 3686, 3691, 3692, 3692, 3697, 3698, 3708, 3713, 3715, 3716, 3717, 3718, 3719, 3723, 3724, 3729, 3730, 3731, 3735, 3738, 3742, 3743, 3747, 3753, 3764, 3768, 3769, 3775, 3778, 3783, 3784, 3785, 3786, 3792, 3793, 3798, 3799, 3804, 3805, 3810, 3813, 3817, 3818, 3819, 3820, 3824, 3825, 3831, 3832, 3833, 3834, 3851, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3854, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3871, 3872, 3873, 3880, 3881, 3885, 3887, 3888, 3889, 3890, 3891, 3892, 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900, 3901, 3902, 3903, 3905, 3906, 3907, 3908, 3909, 3917, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3934, 3935, 3940, 3951, 3952, 3955, 3956, 3958, 3960, 3961, 3962, 3965, 3967, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3975, 3976, 3977, 3983, 3984, 3985, 3989, 3990, 3998, 4003, 4004, 4005, 4007, 4009, 4013, 4014, 4019, 4024, 4031, 4036, 4040, 4044, 4052, 4056, 4063, 4069, 4073, 4074, 4078, 4079, 4084, 4085, 4086, 4087, 4092, 4096, 4098, 4099, 4100, 4101, 4102, 4104, 4108, 4109, 4113, 4114, 4115, 4119, 4120, 4125, 4127, 4128, 4129, 4130, 4134, 4135, 4137, 4139, 4143, 4144, 4145, 4149, 4150, 4151, 4155, 4156, 4160, 4161, 4165, 4167, 4171, 4172, 4173, 4174, 4178, 4182, 4183, 4187, 4188, 4192, 4193, 4197, 4198, 4202, 4206, 4208, 4209, 4213, 4214, 4219, 4220, 4224, 4225, 4229, 4234, 4235, 4236, 4239, 4240, 4241, 4244, 4245, 4246, 4255, 4256, 4260, 4261, 4262, 4263, 4267, 4268, 4272, 4273, 4278, 4280, 4281, 4288, 4289, 4293, 4294, 4298, 4302, 4303, 4304, 4305, 4309, 4310, 4314, 4315, 4316, 4320, 4321, 4322, 4326, 4327, 4328, 4332, 4333, 4337, 4338, 4342, 4343, 4347, 4348, 4352, 4353, 4355, 4356, 4358, 4360, 4364, 4365, 4369, 4370, 4374, 4375, 4379, 4380, 4381, 4388, 4394, 4401, 4405, 4406, 4410, 4411, 4415, 4416, 4418, 4419, 4420, 4421, 4422, 4426, 4427, 4428, 4429, 4430, 4431, 4432, 4433, 4434, 4435, 4436, 4437, 4442, 4443, 4444, 4446, 4453, 4463, 4470, 4474, 4480, 4481, 4487, 4488, 4489, 4494, 4495, 4500, 4501, 4510, 4514, 4521, 4526, 4533, 4537, 4543, 4544, 4550, 4556, 4557, 4564, 4564, 4566, 4566, 4568, 4568, 4575, 4576, 4580, 4581, 4585, 4586, 4587, 4589, 4590, 4591, 4592, 4593, 4594, 4596, 4600, 4601, 4603, 4606, 4614, 4615, 4616, 4622, 4623, 4627, 4628, 4633, 4635, 4637, 4639, 4641, 4643, 4651, 4653, 4654, 4655, 4659, 4663, 4664, 4668, 4669, 4673, 4674, 4679, 4683, 4684, 4688, 4690, 4693, 4697, 4698, 4700, 4702, 4706, 4707, 4711, 4712, 4716, 4717, 4718, 4722, 4726, 4727 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "\"FLOATING-POINT NUMBER\"", "\"IDENTIFIER\"", "\"IDENTIFIER-in-lex\"", "\"CLASS-IDENTIFIER\"", "\"PACKAGE-IDENTIFIER\"", "\"TYPE-IDENTIFIER\"", "\"INTEGER NUMBER\"", "\"TIME NUMBER\"", "\"STRING\"", "\"STRING-ignored\"", "\"TIMING SPEC ELEMENT\"", "\"GATE keyword\"", "\"CONFIG keyword (cell/use/design/etc)\"", "\"OPERATOR\"", "\"STRENGTH keyword (strong1/etc)\"", "\"SYSCALL\"", "'!'", "'#'", "'%'", "'&'", "'('", "')'", "'*'", "'+'", "','", "'-'", "'.'", "'/'", "':'", "';'", "'<'", "'='", "'>'", "'?'", "'@'", "'['", "']'", "'^'", "'{'", "'|'", "'}'", "'~'", "\"accept_on\"", "\"alias\"", "\"always\"", "\"and\"", "\"assert\"", "\"assign\"", "\"assume\"", "\"automatic\"", "\"before\"", "\"begin\"", "\"bind\"", "\"bins\"", "\"binsof\"", "\"bit\"", "\"break\"", "\"buf\"", "\"byte\"", "\"case\"", "\"casex\"", "\"casez\"", "\"chandle\"", "\"checker\"", "\"class\"", "\"clock\"", "\"clocking\"", "\"constraint\"", "\"const\"", "\"const-in-lex\"", "\"const-then-local\"", "\"const-then-ref\"", "\"context\"", "\"continue\"", "\"cover\"", "\"covergroup\"", "\"coverpoint\"", "\"cross\"", "\"deassign\"", "\"default\"", "\"defparam\"", "\"disable\"", "\"dist\"", "\"do\"", "\"edge\"", "\"else\"", "\"end\"", "\"endcase\"", "\"endchecker\"", "\"endclass\"", "\"endclocking\"", "\"endfunction\"", "\"endgenerate\"", "\"endgroup\"", "\"endinterface\"", "\"endmodule\"", "\"endpackage\"", "\"endprogram\"", "\"endproperty\"", "\"endsequence\"", "\"endspecify\"", "\"endtable\"", "\"endtask\"", "\"enum\"", "\"event\"", "\"eventually\"", "\"expect\"", "\"export\"", "\"extends\"", "\"extern\"", "\"final\"", "\"first_match\"", "\"for\"", "\"force\"", "\"foreach\"", "\"forever\"", "\"fork\"", "\"forkjoin\"", "\"function\"", "\"function-in-lex\"", "\"function-is-pure-virtual\"", "\"generate\"", "\"genvar\"", "\"global-then-clocking\"", "\"global-in-lex\"", "\"if\"", "\"iff\"", "\"ignore_bins\"", "\"illegal_bins\"", "\"implements\"", "\"implies\"", "\"import\"", "\"initial\"", "\"inout\"", "\"input\"", "\"inside\"", "\"int\"", "\"integer\"", "\"interconnect\"", "\"interface\"", "\"intersect\"", "\"join\"", "\"let\"", "\"localparam\"", "\"local-then-::\"", "\"local\"", "\"local-in-lex\"", "\"logic\"", "\"longint\"", "\"matches\"", "\"modport\"", "\"module\"", "\"nand\"", "\"negedge\"", "\"nettype\"", "\"new\"", "\"new-in-lex\"", "\"new-then-paren\"", "\"nexttime\"", "\"nor\"", "\"not\"", "\"null\"", "\"or\"", "\"output\"", "\"package\"", "\"packed\"", "\"parameter\"", "\"posedge\"", "\"priority\"", "\"program\"", "\"property\"", "\"protected\"", "\"pure\"", "\"rand\"", "\"randc\"", "\"randcase\"", "\"randsequence\"", "\"real\"", "\"realtime\"", "\"ref\"", "\"reg\"", "\"reject_on\"", "\"release\"", "\"repeat\"", "\"restrict\"", "\"return\"", "\"scalared\"", "\"sequence\"", "\"shortint\"", "\"shortreal\"", "\"signed\"", "\"soft\"", "\"solve\"", "\"specify\"", "\"specparam\"", "\"static-then-constraint\"", "\"static\"", "\"static-in-lex\"", "\"string\"", "\"strong\"", "\"struct\"", "\"super\"", "\"supply0\"", "\"supply1\"", "\"sync_accept_on\"", "\"sync_reject_on\"", "\"s_always\"", "\"s_eventually\"", "\"s_nexttime\"", "\"s_until\"", "\"s_until_with\"", "\"table\"", "\"tagged\"", "\"task\"", "\"task-in-lex\"", "\"task-is-pure-virtual\"", "\"this\"", "\"throughout\"", "\"time\"", "\"timeprecision\"", "\"timeunit\"", "\"tri\"", "\"tri0\"", "\"tri1\"", "\"triand\"", "\"trior\"", "\"trireg\"", "\"type\"", "\"typedef\"", "\"union\"", "\"unique\"", "\"unique0\"", "\"unsigned\"", "\"until\"", "\"until_with\"", "\"untyped\"", "\"var\"", "\"vectored\"", "\"virtual-then-class\"", "\"virtual\"", "\"virtual-then-interface\"", "\"virtual-in-lex\"", "\"virtual-then-identifier\"", "\"void\"", "\"wait\"", "\"wait_order\"", "\"wand\"", "\"weak\"", "\"while\"", "\"wildcard\"", "\"wire\"", "\"within\"", "\"with-then-[\"", "\"with-then-{\"", "\"with\"", "\"with-in-lex\"", "\"with-then-(\"", "\"wor\"", "\"xnor\"", "\"xor\"", "\"$error\"", "\"$fatal\"", "\"$info\"", "\"$root\"", "\"$unit\"", "\"$warning\"", "\"'\"", "\"'{\"", "\"||\"", "\"&&\"", "\"~|\"", "\"^~\"", "\"~&\"", "\"==\"", "\"!=\"", "\"===\"", "\"!==\"", "\"==?\"", "\"!=?\"", "\">=\"", "\"<=\"", "\"<=-ignored\"", "\"<<\"", "\">>\"", "\">>>\"", "\"**\"", "\"(-ignored\"", "\"(-for-strength\"", "\"<->\"", "\"+:\"", "\"-:\"", "\"->\"", "\"->>\"", "\"=>\"", "\"*>\"", "\"&&&\"", "\"##\"", "\"#-#\"", "\"#=#\"", "\".*\"", "\"@@\"", "\"::\"", "\":=\"", "\":/\"", "\"|->\"", "\"|=>\"", "\"[*\"", "\"[=\"", "\"[->\"", "\"[+]\"", "\"++\"", "\"--\"", "\"+=\"", "\"-=\"", "\"*=\"", "\"/=\"", "\"%=\"", "\"&=\"", "\"|=\"", "\"^=\"", "\"<<=\"", "\">>=\"", "\">>>=\"", "prUNARYARITH", "prREDUCTION", "prNEGATION", "prEVENTBEGIN", "prTAGGED", "prSEQ_CLOCKING", "prPOUNDPOUND_MULTI", "prLOWER_THAN_ELSE", "\"+\"", "\"-\"", "\"*\"", "\"/\"", "\"%\"", "\"<\"", "\">\"", "\"=\"", "'_'", "'$'", "$accept", "statePushVlg", "statePop", "source_text", "descriptionList", "description", "timeunits_declaration", "package_declaration", "packageFront", "package_itemListE", "package_itemList", "package_item", "package_or_generate_item_declaration", "package_import_declarationList", "package_import_declaration", "package_import_itemList", "package_import_item", "package_import_itemObj", "package_export_declaration", "module_declaration", "modFront", "importsAndParametersE", "parameter_value_assignmentE", "parameter_port_listE", "$@1", "paramPortDeclOrArgList", "paramPortDeclOrArg", "portsStarE", "$@2", "list_of_portsE", "portE", "portDirNetE", "port_declNetE", "portAssignExprE", "portSig", "interface_declaration", "intFront", "interface_itemListE", "interface_itemList", "interface_item", "interface_or_generate_item", "anonymous_program", "anonymous_program_itemListE", "anonymous_program_itemList", "anonymous_program_item", "program_declaration", "pgmFront", "program_itemListE", "program_itemList", "program_item", "non_port_program_item", "program_generate_item", "extern_tf_declaration", "modport_declaration", "modport_itemList", "modport_item", "$@3", "modport_idFront", "modportPortsDeclList", "modportPortsDecl", "modportSimplePort", "modport_tf_port", "genvar_declaration", "list_of_genvar_identifiers", "genvar_identifierDecl", "local_parameter_declaration", "parameter_declaration", "local_parameter_declarationFront", "parameter_declarationFront", "parameter_port_declarationFront", "net_declaration", "net_declarationFront", "net_declRESET", "net_scalaredE", "net_dataType", "net_type", "varGParamReset", "varLParamReset", "port_direction", "port_directionReset", "port_declaration", "$@4", "$@5", "$@6", "$@7", "tf_port_declaration", "$@8", "$@9", "integer_atom_type", "integer_vector_type", "non_integer_type", "signingE", "signing", "casting_type", "simple_type", "data_typeVar", "data_type", "$@10", "$@11", "data_type_or_void", "var_data_type", "type_reference", "struct_union_memberList", "struct_union_member", "$@12", "list_of_variable_decl_assignments", "variable_decl_assignment", "list_of_tf_variable_identifiers", "tf_variable_identifier", "variable_declExpr", "variable_dimensionListE", "variable_dimensionList", "variable_dimension", "random_qualifierE", "random_qualifier", "taggedE", "packedSigningE", "enumDecl", "enum_base_typeE", "enum_nameList", "enum_name_declaration", "enumNameRangeE", "enumNameStartE", "intnumAsConst", "data_declaration", "class_property", "data_declarationVar", "data_declarationVarClass", "data_declarationVarFront", "data_declarationVarFrontClass", "net_type_declaration", "constE", "implicit_typeE", "assertion_variable_declaration", "type_declaration", "module_itemListE", "module_itemList", "module_item", "non_port_module_item", "module_or_generate_item", "module_common_item", "continuous_assign", "initial_construct", "final_construct", "module_or_generate_item_declaration", "aliasEqList", "bind_directive", "bind_target_instance_list", "bind_target_instance", "bind_instantiation", "generate_region", "c_generate_region", "generate_block", "c_generate_block", "genItemBegin", "c_genItemBegin", "genItemOrBegin", "c_genItemOrBegin", "genItemList", "c_genItemList", "generate_item", "c_generate_item", "conditional_generate_construct", "c_conditional_generate_construct", "loop_generate_construct", "c_loop_generate_construct", "genvar_initialization", "genvar_iteration", "case_generate_itemList", "c_case_generate_itemList", "case_generate_item", "c_case_generate_item", "assignList", "assignOne", "delay_or_event_controlE", "delayE", "delay_control", "delay_value", "delayExpr", "minTypMax", "netSigList", "netSig", "netId", "sigAttrListE", "rangeListE", "rangeList", "regrangeE", "bit_selectE", "anyrange", "packed_dimensionListE", "packed_dimensionList", "packed_dimension", "param_assignment", "list_of_param_assignments", "list_of_defparam_assignments", "defparam_assignment", "etcInst", "$@13", "$@14", "$@15", "$@16", "instName", "mpInstnameList", "mpInstnameParen", "mpInstname", "instnameList", "instnameParen", "instname", "instRangeE", "cellpinList", "$@17", "cellpinItList", "cellpinItemE", "event_control", "event_expression", "senitemEdge", "stmtBlock", "seq_block", "par_block", "seq_blockFront", "par_blockFront", "blockDeclStmtList", "block_item_declarationList", "block_item_declaration", "stmtList", "stmt", "statement_item", "operator_assignment", "foperator_assignment", "inc_or_dec_expression", "finc_or_dec_expression", "sinc_or_dec_expression", "pinc_or_dec_expression", "ev_inc_or_dec_expression", "pev_inc_or_dec_expression", "class_new", "dynamic_array_new", "unique_priorityE", "action_block", "caseStart", "caseAttrE", "case_patternListE", "case_itemListE", "case_insideListE", "case_itemList", "case_inside_itemList", "open_range_list", "open_value_range", "value_range", "covergroup_value_range", "caseCondList", "patternNoExpr", "patternList", "patternOne", "patternMemberList", "patternKey", "assignment_pattern", "for_initialization", "for_initializationItemList", "for_initializationItem", "for_stepE", "for_step", "for_step_assignment", "loop_variables", "funcRef", "task_subroutine_callNoMethod", "function_subroutine_callNoMethod", "system_t_call", "system_f_call", "elaboration_system_task", "property_actual_arg", "task", "task_declaration", "task_prototype", "function", "function_declaration", "function_prototype", "class_constructor_prototype", "method_prototype", "lifetimeE", "lifetime", "taskId", "funcId", "funcIdNew", "tfIdScoped", "tfGuts", "tfGutsPureV", "tfBodyE", "function_data_type", "tf_item_declarationList", "tf_item_declaration", "tf_port_listE", "$@18", "tf_port_listList", "tf_port_item", "tf_port_itemFront", "tf_port_itemDir", "tf_port_itemAssignment", "parenE", "array_methodNoRoot", "method_callWithE", "array_method_nameNoId", "dpi_import_export", "dpi_importLabelE", "dpi_tf_import_propertyE", "overload_declaration", "overload_operator", "overload_proto_formals", "constExpr", "expr", "fexpr", "ev_expr", "exprOkLvalue", "fexprOkLvalue", "sexprOkLvalue", "pexprOkLvalue", "ev_exprOkLvalue", "pev_exprOkLvalue", "exprLvalue", "fexprLvalue", "exprScope", "fexprScope", "sexprScope", "pexprScope", "ev_exprScope", "pev_exprScope", "exprOrDataType", "exprOrDataTypeOrMinTypMax", "cateList", "exprOrDataTypeList", "list_of_argumentsE", "pev_list_of_argumentsE", "argsExprList", "argsExprListE", "pev_argsExprListE", "argsExprOneE", "pev_argsExprOneE", "argsDottedList", "pev_argsDottedList", "argsDotted", "pev_argsDotted", "streaming_concatenation", "stream_concOrExprOrType", "stream_concatenation", "stream_expressionList", "stream_expression", "gateKwd", "strength", "strengthSpecE", "strengthSpec", "combinational_body", "tableJunkList", "tableJunk", "specify_block", "specifyJunkList", "specifyJunk", "specparam_declaration", "junkToSemiList", "junkToSemi", "id", "idAny", "idSVKwd", "variable_lvalue", "variable_lvalueConcList", "variable_lvalueList", "idClassSel", "idClassForeach", "hierarchical_identifierList", "hierarchical_identifierBit", "hierarchical_identifier", "idDotted", "idDottedForeach", "idDottedMore", "idDottedForeachMore", "idArrayed", "idForeach", "strAsInt", "endLabelE", "clocking_declaration", "clockingFront", "clocking_event", "clocking_itemListE", "clocking_itemList", "clocking_item", "default_skew", "clocking_direction", "list_of_clocking_decl_assign", "clocking_decl_assign", "clocking_skewE", "clocking_skew", "cycle_delay", "assertion_item_declaration", "assertion_item", "deferred_immediate_assertion_item", "procedural_assertion_statement", "immediate_assertion_statement", "simple_immediate_assertion_statement", "deferred_immediate_assertion_statement", "expect_property_statement", "concurrent_assertion_item", "concurrent_assertion_statement", "property_declaration", "property_declarationFront", "property_port_listE", "$@19", "property_port_list", "property_port_item", "property_port_itemFront", "property_port_itemAssignment", "property_port_itemDirE", "property_declarationBody", "assertion_variable_declarationList", "sequence_declaration", "sequence_declarationFront", "sequence_port_listE", "property_formal_typeNoDt", "sequence_formal_typeNoDt", "sequence_declarationBody", "property_spec", "property_statement_spec", "property_statement", "property_statementCaseIf", "property_case_itemList", "property_case_item", "pev_expr", "pexpr", "sexpr", "cycle_delay_range", "sequence_match_itemList", "sequence_match_item", "boolean_abbrev", "const_or_range_expression", "constant_range", "cycle_delay_const_range_expression", "let_declaration", "let_declarationFront", "let_port_listE", "covergroup_declaration", "covergroup_declarationFront", "cgexpr", "coverage_spec_or_optionListE", "coverage_spec_or_optionList", "coverage_spec_or_option", "coverage_option", "cover_point", "iffE", "bins_or_empty", "bins_or_optionsList", "bins_or_options", "bins_orBraE", "bins_keyword", "covergroup_range_list", "trans_list", "trans_set", "trans_range_list", "trans_item", "repeat_range", "cover_cross", "list_of_cross_items", "cross_itemList", "cross_item", "cross_body", "cross_body_itemSemiList", "cross_body_item", "bins_selection_or_option", "bins_selection", "select_expression", "bins_expression", "coverage_eventE", "block_event_expression", "block_event_expressionTerm", "hierarchical_btf_identifier", "randsequence_statement", "productionList", "production", "productionFront", "rs_ruleList", "rs_rule", "rs_production_list", "weight_specification", "rs_code_block", "rs_code_blockItemList", "rs_code_blockItem", "rs_prodList", "rs_prod", "production_itemList", "production_item", "rs_case_itemList", "rs_case_item", "checker_declaration", "checkerFront", "checker_port_listE", "checker_or_generate_itemListE", "checker_or_generate_itemList", "checker_or_generate_item", "checker_or_generate_item_declaration", "checker_generate_item", "checker_instantiation", "class_declaration", "classFront", "classVirtualE", "classExtendsE", "classImplementsE", "classImplementsList", "ps_id_etc", "class_scope_id", "class_typeWithoutId", "class_scopeWithoutId", "class_scopeIdFollows", "class_typeOneListColonIdFollows", "class_typeOneList", "class_typeOne", "package_scopeIdFollowsE", "package_scopeIdFollows", "$@20", "$@21", "$@22", "class_itemListE", "class_itemList", "class_item", "class_method", "class_item_qualifier", "memberQualResetListE", "memberQualList", "memberQualOne", "class_constraint", "constraint_block", "constraint_block_itemList", "constraint_block_item", "solve_before_list", "constraint_primary", "constraint_expressionList", "constraint_expression", "constraint_set", "dist_list", "dist_item", "extern_constraint_declaration", "constraintStaticE", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 33, 35, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 64, 91, 93, 94, 123, 124, 125, 126, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 95, 36 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { 0, 344, 345, 346, 347, 347, 348, 348, 349, 349, 349, 349, 349, 349, 349, 350, 350, 350, 351, 352, 353, 353, 354, 354, 355, 355, 355, 355, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 357, 357, 358, 359, 359, 360, 361, 361, 362, 362, 363, 363, 364, 365, 365, 366, 366, 366, 367, 367, 368, 367, 369, 369, 370, 370, 371, 371, 372, 371, 373, 373, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 375, 375, 375, 375, 376, 376, 377, 377, 378, 378, 379, 379, 380, 381, 381, 382, 382, 383, 383, 383, 383, 383, 383, 383, 384, 384, 385, 386, 386, 387, 387, 388, 388, 388, 388, 388, 389, 389, 390, 391, 391, 392, 392, 393, 393, 394, 394, 394, 394, 394, 394, 394, 395, 395, 395, 395, 396, 396, 396, 397, 398, 398, 400, 399, 401, 402, 402, 403, 403, 403, 403, 403, 404, 404, 404, 405, 405, 406, 407, 407, 408, 409, 410, 411, 411, 411, 412, 412, 412, 413, 413, 413, 413, 414, 415, 415, 416, 417, 417, 417, 418, 418, 418, 418, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 420, 421, 422, 422, 422, 422, 422, 423, 423, 423, 423, 423, 425, 424, 426, 424, 427, 424, 428, 424, 430, 429, 431, 429, 432, 432, 432, 432, 432, 432, 433, 433, 433, 434, 434, 434, 435, 435, 436, 436, 437, 437, 437, 437, 437, 438, 438, 438, 438, 439, 439, 439, 440, 440, 440, 441, 440, 442, 440, 440, 440, 440, 440, 440, 440, 440, 440, 443, 443, 444, 444, 444, 445, 446, 446, 448, 447, 449, 449, 450, 450, 450, 450, 451, 451, 452, 452, 453, 453, 453, 454, 454, 455, 455, 456, 456, 456, 456, 456, 456, 457, 457, 458, 458, 459, 459, 460, 460, 461, 462, 462, 462, 462, 462, 462, 463, 463, 464, 465, 465, 465, 466, 466, 467, 468, 468, 468, 468, 469, 469, 469, 470, 471, 472, 472, 472, 472, 472, 472, 473, 473, 473, 473, 474, 474, 474, 475, 475, 476, 476, 476, 477, 478, 478, 478, 478, 478, 478, 478, 478, 479, 479, 480, 480, 481, 481, 482, 482, 482, 482, 482, 482, 482, 482, 483, 483, 483, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 485, 486, 487, 488, 488, 488, 488, 488, 489, 489, 490, 490, 491, 491, 492, 493, 494, 494, 495, 495, 496, 496, 497, 497, 498, 498, 498, 498, 498, 498, 499, 499, 499, 499, 499, 499, 500, 500, 501, 501, 502, 502, 503, 503, 504, 504, 505, 506, 506, 506, 506, 507, 507, 507, 507, 508, 509, 510, 510, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 512, 512, 513, 513, 514, 514, 514, 515, 515, 515, 516, 516, 517, 518, 518, 518, 518, 519, 519, 520, 520, 520, 520, 521, 521, 521, 521, 522, 523, 523, 524, 524, 525, 525, 525, 526, 526, 527, 528, 528, 529, 529, 530, 530, 531, 531, 532, 533, 533, 534, 534, 535, 535, 536, 536, 537, 537, 538, 538, 539, 541, 542, 540, 543, 544, 540, 545, 545, 546, 546, 547, 548, 549, 549, 550, 551, 551, 552, 552, 552, 554, 553, 555, 555, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 557, 557, 557, 557, 558, 558, 559, 559, 559, 559, 559, 559, 560, 561, 561, 562, 562, 563, 563, 564, 564, 565, 565, 565, 566, 566, 567, 567, 567, 567, 567, 568, 568, 569, 569, 569, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 573, 573, 573, 573, 574, 574, 574, 574, 575, 575, 575, 575, 576, 576, 576, 576, 577, 577, 577, 577, 578, 578, 578, 578, 579, 579, 579, 580, 580, 581, 581, 581, 581, 582, 582, 582, 583, 583, 583, 584, 585, 586, 586, 587, 587, 588, 588, 588, 588, 588, 588, 589, 589, 589, 589, 589, 589, 590, 590, 591, 592, 592, 593, 593, 594, 594, 595, 595, 595, 596, 596, 597, 597, 597, 598, 598, 598, 598, 599, 599, 599, 600, 600, 600, 601, 602, 602, 603, 603, 603, 604, 604, 605, 605, 606, 606, 606, 606, 606, 607, 607, 608, 608, 608, 609, 609, 609, 609, 610, 610, 610, 610, 611, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 613, 613, 613, 613, 613, 613, 613, 613, 614, 615, 615, 616, 616, 617, 617, 618, 618, 619, 619, 619, 619, 620, 620, 621, 621, 622, 622, 623, 623, 624, 624, 625, 626, 626, 626, 626, 626, 627, 627, 627, 628, 628, 628, 629, 629, 630, 630, 631, 631, 631, 631, 632, 632, 633, 633, 634, 634, 636, 635, 637, 637, 638, 638, 638, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 640, 641, 641, 642, 642, 643, 643, 644, 644, 645, 645, 645, 645, 646, 646, 646, 646, 647, 647, 648, 648, 648, 649, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 651, 651, 652, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 662, 663, 664, 664, 664, 664, 664, 664, 664, 665, 665, 665, 665, 665, 665, 665, 666, 666, 666, 666, 666, 666, 666, 667, 667, 667, 667, 667, 667, 667, 668, 668, 668, 668, 668, 668, 668, 669, 669, 669, 669, 669, 669, 669, 670, 670, 670, 671, 671, 671, 671, 672, 672, 673, 673, 673, 674, 674, 674, 675, 675, 675, 676, 676, 677, 677, 678, 678, 679, 679, 680, 680, 681, 681, 682, 682, 683, 683, 684, 684, 685, 685, 685, 685, 686, 686, 687, 688, 688, 689, 689, 689, 689, 689, 690, 690, 690, 690, 690, 690, 690, 690, 690, 691, 691, 691, 692, 692, 693, 693, 694, 695, 695, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 697, 697, 698, 698, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 700, 701, 701, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 703, 704, 704, 704, 705, 705, 706, 706, 706, 706, 706, 706, 707, 707, 708, 708, 709, 709, 709, 709, 709, 709, 710, 710, 710, 710, 710, 710, 711, 711, 712, 713, 714, 714, 715, 715, 716, 716, 717, 717, 718, 718, 718, 718, 718, 719, 719, 719, 719, 719, 719, 720, 721, 721, 721, 722, 723, 723, 723, 723, 723, 723, 724, 724, 725, 725, 726, 726, 727, 727, 727, 728, 728, 728, 729, 729, 729, 729, 730, 730, 731, 731, 732, 732, 733, 733, 733, 733, 733, 733, 733, 734, 734, 734, 735, 735, 735, 736, 736, 737, 737, 738, 738, 738, 739, 739, 740, 740, 740, 741, 741, 741, 741, 741, 741, 742, 743, 743, 744, 744, 744, 744, 744, 744, 744, 745, 746, 747, 748, 747, 749, 749, 750, 751, 751, 751, 751, 751, 751, 752, 752, 753, 753, 753, 754, 754, 755, 755, 756, 757, 758, 759, 759, 760, 760, 761, 761, 761, 761, 762, 762, 763, 763, 763, 763, 764, 764, 765, 765, 765, 765, 766, 766, 767, 767, 767, 767, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 771, 771, 771, 771, 771, 771, 772, 772, 773, 774, 774, 774, 774, 774, 775, 775, 776, 777, 778, 779, 780, 780, 781, 781, 782, 783, 784, 784, 785, 785, 786, 786, 786, 786, 787, 788, 788, 788, 788, 788, 788, 788, 789, 789, 790, 790, 790, 791, 791, 792, 792, 792, 792, 792, 792, 792, 792, 792, 793, 793, 793, 794, 794, 794, 795, 795, 796, 796, 797, 797, 798, 798, 798, 798, 799, 800, 800, 801, 801, 802, 802, 803, 803, 804, 805, 805, 805, 806, 806, 807, 807, 808, 808, 809, 810, 810, 810, 810, 810, 810, 810, 810, 810, 811, 811, 812, 812, 812, 812, 813, 813, 814, 814, 815, 815, 815, 816, 816, 817, 817, 818, 819, 819, 819, 819, 820, 820, 821, 821, 821, 822, 822, 822, 823, 823, 823, 824, 824, 825, 825, 826, 826, 827, 827, 828, 828, 828, 828, 828, 828, 829, 829, 830, 830, 831, 831, 832, 832, 832, 833, 834, 835, 836, 836, 837, 837, 838, 838, 838, 838, 838, 838, 838, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 840, 840, 840, 840, 841, 842, 843, 843, 844, 844, 845, 845, 845, 846, 846, 847, 847, 848, 849, 850, 851, 852, 853, 854, 854, 855, 856, 856, 858, 857, 859, 857, 860, 857, 861, 861, 862, 862, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 864, 864, 864, 864, 865, 865, 865, 866, 866, 867, 867, 868, 868, 868, 868, 868, 868, 869, 869, 869, 869, 870, 871, 871, 872, 872, 873, 873, 874, 875, 875, 876, 876, 876, 876, 876, 876, 876, 877, 877, 878, 878, 879, 879, 879, 880, 881, 881 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 5, 3, 4, 4, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 3, 1, 3, 3, 1, 1, 5, 3, 7, 5, 3, 1, 2, 0, 4, 2, 0, 3, 0, 5, 1, 3, 1, 2, 0, 3, 0, 4, 1, 3, 0, 5, 5, 7, 7, 8, 9, 10, 7, 5, 6, 7, 4, 7, 8, 9, 6, 3, 0, 1, 2, 1, 0, 1, 0, 1, 1, 1, 7, 5, 3, 0, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 4, 0, 1, 1, 2, 1, 1, 1, 1, 1, 7, 5, 3, 0, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 3, 1, 3, 0, 5, 1, 1, 3, 2, 2, 2, 2, 1, 1, 4, 5, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 3, 5, 4, 0, 0, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 0, 5, 0, 6, 0, 5, 0, 4, 0, 5, 0, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 6, 5, 3, 2, 1, 0, 7, 0, 8, 1, 1, 1, 4, 3, 1, 1, 3, 1, 1, 1, 2, 2, 4, 1, 2, 0, 5, 1, 3, 3, 5, 1, 2, 1, 3, 3, 5, 1, 1, 1, 0, 1, 1, 2, 2, 1, 3, 3, 2, 3, 0, 1, 1, 1, 0, 1, 0, 2, 6, 0, 2, 1, 2, 3, 2, 1, 3, 3, 0, 3, 5, 0, 2, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 3, 5, 1, 2, 3, 3, 2, 4, 1, 4, 7, 5, 0, 1, 0, 2, 1, 3, 5, 7, 3, 4, 4, 4, 4, 5, 0, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 2, 1, 1, 1, 2, 5, 2, 2, 1, 1, 1, 4, 5, 2, 3, 3, 5, 1, 3, 1, 1, 3, 2, 3, 2, 1, 1, 1, 1, 3, 2, 6, 5, 6, 5, 3, 2, 6, 5, 6, 5, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 5, 6, 5, 7, 5, 6, 5, 7, 9, 9, 3, 4, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 2, 3, 3, 2, 1, 3, 3, 0, 1, 1, 5, 0, 1, 2, 4, 6, 8, 1, 1, 1, 1, 1, 1, 5, 1, 3, 2, 4, 3, 1, 1, 0, 0, 1, 1, 2, 0, 1, 0, 3, 5, 0, 1, 1, 2, 1, 2, 5, 3, 1, 3, 1, 3, 3, 0, 0, 7, 0, 0, 7, 1, 1, 1, 3, 1, 2, 1, 3, 3, 3, 2, 0, 3, 5, 0, 2, 1, 3, 0, 1, 2, 2, 4, 5, 7, 9, 5, 1, 1, 3, 5, 4, 2, 4, 2, 1, 3, 2, 4, 2, 4, 2, 4, 1, 4, 3, 4, 3, 1, 3, 1, 3, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 1, 2, 1, 3, 1, 2, 4, 4, 5, 6, 3, 5, 3, 5, 6, 6, 6, 8, 2, 6, 8, 2, 4, 4, 2, 4, 3, 3, 3, 4, 2, 5, 5, 8, 7, 5, 2, 3, 2, 2, 1, 2, 2, 2, 1, 5, 3, 5, 1, 5, 1, 3, 1, 2, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 4, 4, 7, 0, 1, 1, 1, 1, 3, 2, 4, 4, 4, 0, 1, 0, 1, 0, 1, 3, 3, 2, 4, 3, 4, 3, 3, 2, 4, 3, 4, 1, 3, 1, 1, 5, 1, 5, 1, 3, 2, 1, 3, 1, 3, 1, 4, 1, 3, 3, 5, 5, 1, 1, 1, 3, 3, 2, 2, 1, 3, 4, 5, 3, 0, 1, 1, 3, 1, 1, 1, 3, 1, 1, 3, 4, 5, 4, 1, 5, 1, 3, 1, 5, 1, 3, 1, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 3, 5, 3, 5, 3, 5, 3, 5, 1, 1, 1, 6, 4, 5, 2, 1, 1, 6, 6, 4, 4, 5, 2, 6, 3, 1, 1, 0, 1, 1, 1, 1, 1, 3, 2, 2, 2, 1, 1, 2, 1, 3, 1, 5, 2, 4, 1, 0, 1, 2, 1, 1, 1, 1, 2, 1, 1, 0, 2, 1, 3, 0, 2, 1, 1, 2, 1, 2, 2, 1, 2, 3, 2, 3, 3, 1, 3, 5, 0, 2, 2, 5, 0, 4, 1, 1, 1, 1, 6, 6, 6, 6, 0, 2, 0, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 2, 3, 1, 1, 1, 1, 2, 6, 9, 11, 11, 11, 1, 3, 3, 3, 7, 6, 5, 5, 1, 1, 1, 3, 3, 3, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 2, 3, 1, 1, 1, 1, 2, 6, 9, 11, 11, 11, 1, 3, 3, 3, 7, 6, 5, 5, 1, 1, 1, 3, 3, 3, 5, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 2, 3, 1, 1, 1, 1, 2, 6, 9, 11, 11, 11, 1, 3, 3, 4, 8, 6, 5, 5, 1, 1, 1, 3, 3, 3, 5, 3, 7, 1, 3, 6, 8, 8, 8, 2, 2, 1, 1, 1, 3, 6, 8, 8, 8, 2, 2, 1, 1, 1, 3, 6, 8, 8, 8, 2, 2, 1, 1, 1, 3, 6, 8, 8, 8, 2, 2, 1, 1, 1, 3, 6, 8, 8, 8, 2, 2, 1, 1, 1, 3, 6, 8, 8, 8, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 1, 1, 5, 1, 1, 1, 3, 1, 3, 2, 1, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 3, 0, 1, 0, 1, 1, 3, 1, 3, 4, 5, 4, 5, 4, 4, 5, 5, 1, 1, 3, 1, 3, 1, 5, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 3, 5, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, 3, 1, 1, 3, 1, 3, 1, 3, 3, 5, 2, 2, 1, 3, 3, 5, 2, 2, 1, 3, 1, 1, 3, 1, 3, 1, 1, 3, 1, 3, 1, 4, 6, 6, 6, 1, 4, 6, 6, 6, 6, 1, 0, 2, 2, 6, 1, 2, 2, 3, 2, 3, 2, 4, 0, 1, 1, 2, 3, 3, 1, 2, 2, 4, 2, 2, 4, 1, 1, 3, 1, 3, 0, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 4, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 5, 5, 5, 7, 6, 7, 6, 7, 6, 5, 1, 3, 6, 6, 6, 6, 12, 11, 6, 6, 2, 0, 0, 4, 1, 3, 2, 2, 2, 3, 3, 3, 1, 2, 4, 0, 1, 2, 2, 1, 1, 2, 6, 2, 1, 1, 1, 1, 1, 2, 3, 1, 2, 6, 1, 1, 6, 2, 7, 2, 1, 6, 5, 5, 7, 1, 3, 3, 4, 2, 4, 1, 2, 4, 4, 3, 3, 1, 3, 3, 2, 2, 5, 5, 2, 5, 5, 2, 5, 5, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 7, 2, 3, 2, 3, 5, 3, 3, 3, 4, 6, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 2, 3, 1, 1, 1, 1, 2, 6, 9, 11, 11, 11, 1, 3, 3, 4, 8, 6, 5, 5, 1, 1, 1, 3, 3, 3, 5, 2, 4, 4, 3, 3, 1, 3, 3, 2, 2, 5, 5, 2, 5, 5, 2, 5, 5, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 7, 2, 3, 2, 3, 5, 3, 3, 3, 4, 6, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 2, 3, 1, 1, 1, 1, 2, 6, 9, 11, 11, 11, 1, 3, 3, 4, 8, 6, 5, 5, 1, 1, 1, 3, 3, 3, 5, 2, 3, 2, 3, 5, 3, 3, 3, 4, 6, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 2, 3, 1, 1, 1, 1, 2, 6, 9, 11, 11, 11, 1, 3, 3, 4, 8, 6, 5, 5, 1, 1, 1, 3, 3, 3, 5, 2, 2, 4, 4, 3, 2, 1, 3, 1, 3, 2, 1, 3, 3, 1, 1, 3, 3, 5, 2, 0, 3, 6, 9, 2, 1, 0, 1, 1, 2, 1, 1, 2, 1, 5, 4, 6, 6, 9, 8, 7, 1, 0, 4, 3, 2, 1, 2, 3, 1, 8, 9, 12, 13, 6, 7, 6, 7, 0, 2, 3, 1, 1, 1, 1, 3, 3, 5, 1, 3, 1, 4, 4, 4, 1, 1, 3, 6, 4, 3, 5, 1, 3, 1, 2, 3, 1, 2, 3, 1, 1, 1, 1, 5, 4, 8, 4, 5, 9, 5, 3, 3, 3, 1, 3, 0, 1, 6, 4, 1, 3, 2, 2, 1, 2, 2, 5, 6, 1, 2, 4, 2, 1, 5, 4, 1, 3, 1, 3, 4, 1, 4, 7, 1, 1, 3, 2, 3, 1, 2, 1, 1, 1, 2, 1, 1, 5, 7, 5, 6, 1, 2, 1, 4, 1, 2, 4, 3, 4, 6, 2, 1, 0, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, 5, 1, 1, 1, 1, 1, 6, 8, 4, 4, 0, 1, 0, 2, 5, 0, 2, 1, 3, 2, 2, 2, 1, 2, 2, 1, 2, 2, 0, 1, 0, 3, 0, 3, 0, 3, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 2, 4, 3, 1, 1, 1, 0, 1, 1, 2, 1, 1, 2, 1, 1, 1, 4, 4, 5, 5, 3, 1, 2, 5, 1, 1, 3, 1, 1, 2, 2, 3, 4, 5, 7, 5, 4, 1, 3, 1, 3, 1, 3, 3, 4, 0, 1 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. Performed when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint16 yydefact[] = { 0, 14, 3061, 41, 832, 3057, 237, 231, 268, 0, 829, 0, 243, 271, 0, 0, 829, 829, 0, 233, 235, 829, 0, 208, 3063, 238, 234, 829, 3057, 829, 207, 829, 0, 241, 242, 239, 0, 232, 240, 3126, 831, 267, 313, 829, 829, 236, 0, 0, 0, 3057, 311, 3040, 0, 0, 3059, 0, 0, 6, 27, 11, 188, 12, 24, 333, 26, 8, 60, 9, 60, 25, 10, 60, 0, 0, 0, 0, 28, 0, 0, 243, 243, 243, 243, 261, 343, 256, 272, 266, 29, 331, 0, 334, 0, 332, 13, 30, 31, 3057, 33, 39, 40, 2422, 2455, 2423, 2455, 2424, 2866, 38, 2951, 32, 2455, 35, 60, 0, 0, 3058, 34, 0, 0, 2328, 0, 0, 0, 908, 909, 913, 911, 905, 901, 903, 900, 902, 904, 906, 907, 910, 912, 914, 0, 0, 2368, 2358, 411, 2344, 2361, 2364, 0, 0, 3058, 2331, 2329, 2330, 3006, 3057, 830, 2870, 245, 246, 243, 243, 0, 244, 0, 515, 0, 894, 0, 0, 45, 829, 829, 60, 60, 60, 243, 243, 896, 0, 829, 0, 2865, 0, 0, 0, 0, 0, 3058, 0, 119, 0, 2454, 2477, 243, 0, 3057, 3057, 0, 0, 3057, 0, 243, 0, 313, 311, 0, 517, 312, 313, 0, 57, 0, 1, 7, 0, 0, 0, 0, 188, 22, 0, 0, 60, 42, 68, 55, 68, 68, 36, 37, 528, 173, 297, 174, 2332, 2333, 0, 503, 510, 508, 509, 243, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 1332, 180, 0, 357, 179, 178, 177, 176, 175, 260, 244, 511, 0, 0, 284, 297, 288, 829, 344, 2456, 0, 2478, 0, 859, 0, 859, 0, 0, 0, 2952, 0, 3007, 0, 3041, 829, 57, 0, 520, 3054, 3057, 3062, 0, 0, 0, 1320, 3057, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 407, 412, 533, 539, 540, 817, 818, 3057, 0, 3057, 2348, 3052, 0, 2349, 345, 319, 515, 3057, 317, 513, 0, 321, 516, 0, 0, 0, 0, 0, 51, 68, 68, 68, 839, 840, 3057, 0, 244, 3057, 0, 0, 834, 842, 844, 0, 3051, 0, 0, 0, 897, 898, 894, 44, 0, 104, 3064, 54, 0, 57, 0, 0, 0, 127, 0, 120, 121, 123, 124, 126, 125, 130, 314, 262, 0, 833, 0, 0, 17, 0, 15, 975, 974, 976, 2379, 880, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 251, 993, 248, 267, 1234, 0, 1228, 249, 880, 880, 880, 880, 3057, 3057, 3057, 3057, 3057, 3057, 0, 992, 243, 243, 261, 0, 247, 1271, 1272, 928, 1174, 787, 984, 789, 1270, 994, 1166, 0, 1175, 2368, 1229, 977, 0, 0, 0, 3058, 0, 515, 0, 0, 0, 297, 361, 3057, 0, 0, 57, 3057, 270, 3060, 2380, 23, 62, 43, 56, 70, 0, 0, 0, 0, 3057, 0, 510, 298, 299, 302, 0, 185, 510, 505, 511, 0, 189, 1333, 356, 259, 512, 703, 0, 289, 0, 338, 510, 341, 2469, 3057, 3057, 0, 863, 3057, 0, 3057, 2390, 0, 0, 0, 353, 3057, 3044, 0, 3056, 3055, 3057, 3053, 524, 273, 521, 522, 0, 2346, 0, 2345, 2360, 0, 409, 1332, 0, 0, 2365, 0, 0, 917, 320, 0, 917, 514, 0, 322, 325, 49, 47, 48, 811, 812, 0, 0, 895, 0, 46, 0, 0, 0, 837, 3057, 836, 838, 859, 0, 0, 0, 0, 841, 3049, 859, 848, 821, 822, 0, 3038, 57, 270, 350, 0, 0, 19, 118, 122, 307, 0, 814, 0, 3057, 792, 920, 921, 0, 1166, 918, 919, 3057, 571, 573, 924, 978, 3057, 3057, 0, 1315, 0, 1277, 923, 922, 972, 3057, 796, 3057, 794, 3057, 800, 3057, 798, 0, 762, 758, 0, 746, 247, 752, 0, 748, 0, 0, 757, 750, 926, 927, 925, 681, 682, 2, 0, 1173, 0, 0, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 0, 0, 3057, 0, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 679, 680, 1172, 279, 1296, 1296, 2368, 1231, 57, 2368, 1230, 365, 362, 0, 363, 364, 0, 0, 0, 264, 269, 498, 497, 499, 553, 59, 496, 0, 0, 0, 18, 61, 3057, 0, 92, 0, 0, 188, 529, 0, 301, 0, 0, 305, 527, 300, 504, 507, 3057, 187, 1329, 1330, 1331, 0, 190, 191, 490, 704, 1294, 285, 286, 0, 340, 2470, 0, 2458, 0, 2466, 2728, 2727, 2729, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 0, 3057, 0, 0, 0, 0, 0, 3057, 3057, 2746, 0, 0, 1255, 0, 0, 0, 3057, 3057, 0, 1249, 355, 0, 3057, 3057, 3057, 0, 0, 3057, 3057, 0, 2745, 0, 276, 0, 2474, 2681, 1204, 2737, 2747, 1196, 1205, 1250, 2730, 3057, 0, 3057, 2473, 2489, 2634, 0, 3057, 0, 3058, 2822, 2821, 2823, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 0, 2840, 1248, 0, 1242, 3057, 3057, 3057, 0, 3057, 3057, 0, 2839, 0, 276, 2775, 1194, 2831, 2841, 1186, 1195, 1243, 2824, 3057, 3057, 0, 2485, 3057, 0, 3058, 2867, 0, 211, 209, 210, 212, 243, 877, 0, 244, 866, 860, 861, 0, 243, 865, 297, 0, 2951, 1140, 1139, 1141, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 1158, 3057, 1262, 0, 1256, 3057, 3057, 3057, 0, 3057, 3057, 0, 1157, 0, 0, 0, 1080, 1093, 1214, 1149, 574, 1159, 1206, 1215, 1257, 1142, 0, 3058, 0, 3057, 3057, 0, 2955, 2879, 2892, 0, 3057, 0, 0, 0, 0, 2874, 0, 2876, 2887, 2877, 0, 3030, 0, 0, 1332, 0, 0, 2384, 0, 0, 0, 0, 353, 0, 0, 0, 0, 353, 0, 880, 880, 880, 880, 3026, 3019, 3017, 3013, 3015, 3033, 3032, 3031, 3034, 3021, 3025, 0, 3027, 0, 3023, 3016, 2426, 2427, 2425, 2444, 3024, 3022, 0, 353, 3010, 3012, 3018, 3042, 0, 3057, 0, 3037, 525, 523, 3057, 3124, 0, 3057, 408, 57, 0, 0, 3057, 2369, 3057, 3057, 3057, 0, 511, 0, 328, 0, 0, 50, 53, 103, 129, 835, 0, 0, 1056, 1055, 1057, 3057, 3057, 3057, 3057, 3057, 3057, 605, 3057, 3057, 3057, 3057, 0, 3057, 0, 587, 0, 829, 0, 0, 0, 3057, 3057, 0, 0, 0, 3057, 0, 0, 589, 216, 214, 1074, 215, 709, 3057, 0, 217, 3057, 0, 3057, 1241, 0, 1235, 710, 711, 0, 0, 0, 0, 3057, 3057, 3057, 3057, 486, 0, 3057, 3057, 0, 1073, 0, 0, 243, 858, 0, 256, 596, 0, 0, 601, 645, 641, 0, 0, 857, 0, 582, 603, 0, 1009, 0, 1184, 787, 0, 1065, 785, 789, 846, 0, 855, 599, 0, 1075, 0, 1176, 1185, 2368, 1236, 1058, 0, 649, 2430, 2432, 2433, 653, 2429, 600, 651, 2431, 0, 3058, 2380, 2380, 843, 0, 3057, 0, 243, 0, 269, 0, 352, 309, 310, 307, 280, 3057, 308, 2380, 16, 881, 1279, 0, 987, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 0, 0, 1311, 1315, 1310, 0, 0, 3057, 0, 3057, 1167, 973, 0, 0, 0, 0, 745, 972, 3057, 760, 3057, 761, 3057, 3057, 3057, 3057, 790, 3057, 945, 958, 943, 941, 942, 887, 888, 1233, 886, 889, 985, 986, 884, 1232, 3058, 944, 955, 956, 0, 960, 959, 3057, 3057, 996, 997, 3057, 953, 952, 962, 961, 963, 946, 947, 948, 949, 950, 951, 957, 969, 964, 965, 966, 954, 967, 3057, 0, 0, 0, 3057, 0, 0, 3117, 968, 995, 2605, 2604, 2606, 3057, 3057, 3057, 3057, 3057, 0, 3057, 3057, 3057, 3057, 0, 3057, 0, 0, 3057, 3057, 2623, 0, 0, 1269, 0, 0, 0, 3057, 3057, 0, 1263, 0, 3057, 3057, 3057, 0, 3057, 3057, 0, 2622, 0, 0, 2505, 2558, 1224, 2614, 2624, 1216, 0, 1286, 1292, 1285, 1300, 1225, 1264, 2607, 3057, 2511, 1297, 3057, 0, 3058, 0, 1296, 366, 359, 518, 0, 307, 0, 0, 557, 3048, 258, 2382, 2381, 184, 0, 64, 182, 181, 0, 183, 66, 69, 92, 0, 72, 243, 95, 93, 0, 3057, 0, 0, 0, 3057, 0, 0, 0, 0, 0, 0, 0, 380, 400, 378, 379, 377, 401, 96, 0, 0, 0, 369, 372, 374, 383, 388, 390, 391, 384, 387, 373, 394, 393, 385, 395, 382, 375, 376, 540, 402, 386, 0, 0, 114, 113, 0, 0, 107, 111, 112, 117, 116, 0, 115, 110, 0, 0, 0, 142, 0, 188, 133, 136, 143, 0, 137, 139, 140, 138, 146, 145, 144, 147, 0, 141, 306, 304, 303, 3057, 506, 1334, 0, 186, 0, 490, 276, 192, 195, 491, 0, 1295, 0, 1283, 1290, 1282, 1298, 3057, 342, 2471, 2457, 2469, 297, 100, 101, 2460, 2480, 2481, 2482, 355, 0, 2462, 2461, 2479, 2673, 2674, 0, 1196, 3057, 2634, 0, 2671, 2672, 2677, 2731, 0, 0, 2676, 2675, 3057, 3057, 2641, 3057, 0, 3057, 3057, 3057, 3057, 2637, 2629, 3057, 3057, 3057, 3057, 3057, 3057, 2644, 3057, 2638, 2725, 277, 278, 3057, 2679, 2680, 2678, 3057, 2846, 3057, 3057, 0, 2851, 2847, 693, 694, 2, 0, 1203, 0, 691, 692, 1202, 0, 2634, 2670, 2380, 2475, 2472, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 2493, 3057, 3057, 3057, 3057, 3057, 3057, 0, 3057, 3057, 0, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 0, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 2857, 3057, 2660, 0, 2658, 1252, 1251, 2767, 2768, 1186, 0, 2765, 2766, 2771, 2825, 0, 0, 2770, 2769, 3057, 2819, 2773, 2774, 2772, 3057, 689, 690, 2, 0, 1193, 687, 688, 1192, 2764, 2483, 2380, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 2486, 3057, 3057, 3057, 3057, 3057, 3057, 0, 0, 3057, 3057, 3057, 3057, 3057, 0, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 2754, 2752, 1245, 1244, 213, 869, 870, 867, 863, 864, 243, 0, 244, 872, 510, 2864, 0, 1085, 1086, 0, 1206, 1083, 1084, 1089, 1143, 0, 0, 1088, 1087, 580, 578, 576, 1137, 1091, 1092, 1090, 3057, 697, 698, 2, 0, 1213, 2391, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 0, 3057, 0, 3057, 3057, 0, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 695, 696, 1212, 1259, 1258, 859, 2359, 2959, 2957, 2958, 2954, 0, 2891, 2907, 2909, 2908, 0, 0, 2895, 0, 0, 0, 2888, 2929, 2888, 0, 0, 0, 0, 2380, 2875, 2878, 0, 3057, 0, 3014, 0, 0, 0, 490, 0, 0, 0, 3057, 2385, 0, 0, 0, 0, 2386, 0, 399, 0, 353, 416, 436, 439, 353, 435, 0, 443, 0, 170, 510, 2388, 3057, 398, 3020, 0, 3057, 0, 3057, 0, 3057, 0, 3057, 0, 0, 0, 2380, 3011, 1294, 3050, 3045, 3046, 0, 3057, 3057, 3101, 3104, 2347, 410, 534, 537, 3057, 0, 0, 0, 0, 323, 315, 330, 0, 3057, 324, 893, 892, 0, 654, 1009, 1001, 1075, 1176, 3057, 492, 1002, 0, 1166, 999, 1000, 1005, 1059, 0, 0, 1004, 1003, 3057, 0, 3057, 0, 639, 218, 640, 3057, 3057, 3057, 0, 2339, 0, 2334, 0, 0, 0, 3057, 3057, 0, 3057, 631, 0, 0, 3057, 0, 743, 0, 0, 3057, 637, 0, 1053, 0, 3057, 0, 3057, 3057, 1007, 1008, 1006, 0, 0, 3057, 487, 488, 2419, 3057, 2420, 685, 686, 2, 597, 598, 227, 229, 0, 1183, 642, 643, 2380, 0, 0, 594, 0, 2380, 0, 602, 606, 619, 0, 0, 0, 0, 718, 0, 0, 622, 0, 856, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 0, 0, 3057, 0, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 486, 486, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 625, 683, 684, 1182, 0, 0, 644, 1238, 1237, 819, 820, 0, 816, 891, 824, 890, 0, 520, 281, 275, 274, 282, 813, 793, 1281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 572, 570, 3057, 1306, 0, 1307, 0, 0, 3057, 1278, 3057, 797, 795, 801, 799, 747, 749, 750, 0, 754, 753, 1288, 0, 3, 0, 0, 1294, 0, 882, 0, 3057, 3057, 3121, 739, 0, 3119, 0, 736, 738, 0, 1315, 3057, 3108, 3057, 3057, 3057, 0, 3057, 3110, 2550, 2551, 1216, 0, 2548, 2549, 0, 2554, 2608, 0, 0, 2553, 2552, 3057, 3057, 2518, 3057, 3057, 3057, 2514, 2506, 3057, 3057, 3057, 3057, 3057, 3057, 2521, 3057, 2515, 2602, 3057, 2556, 2557, 2555, 3057, 701, 702, 2, 0, 1223, 699, 700, 1222, 780, 1296, 0, 0, 2547, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 0, 3057, 3057, 0, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 0, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 2537, 2535, 1266, 1265, 782, 0, 0, 307, 257, 58, 0, 558, 566, 554, 555, 567, 63, 3057, 67, 0, 71, 92, 0, 243, 0, 297, 0, 0, 100, 94, 396, 0, 392, 3057, 2386, 0, 0, 530, 0, 0, 0, 414, 0, 442, 441, 434, 437, 0, 433, 540, 3057, 1998, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1990, 1988, 1989, 1991, 1993, 1992, 1994, 1995, 1996, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1668, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 0, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1744, 1745, 1746, 1747, 1748, 1749, 1888, 1889, 1872, 1838, 1867, 1893, 1866, 1855, 1868, 1847, 1848, 1891, 1892, 1856, 1857, 1858, 1882, 1884, 1886, 1881, 1873, 1874, 1859, 1875, 1860, 1862, 1863, 1854, 1841, 1839, 1880, 1879, 1878, 1853, 1842, 1849, 1851, 1850, 1871, 1870, 1846, 1843, 1844, 1845, 1877, 1864, 1876, 1861, 1890, 1852, 1865, 1840, 1869, 1894, 1883, 1885, 1887, 1701, 1699, 1698, 1697, 1700, 0, 1669, 2327, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2320, 2318, 2319, 2321, 2323, 2322, 2324, 2325, 2326, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2074, 2075, 2076, 2077, 2078, 2079, 2217, 2218, 2201, 2167, 2196, 2222, 2195, 2184, 2197, 2176, 2177, 2220, 2221, 2185, 2186, 2187, 2211, 2213, 2215, 2210, 2202, 2203, 2188, 2204, 2189, 2191, 2192, 2183, 2170, 2168, 2209, 2208, 2207, 2182, 2171, 2178, 2180, 2179, 2200, 2199, 2175, 2172, 2173, 2174, 2206, 2193, 2205, 2190, 2219, 2181, 2194, 2169, 2198, 2223, 2212, 2214, 2216, 2031, 2029, 2028, 2027, 2030, 0, 2000, 1666, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1658, 1656, 1657, 1659, 1661, 1660, 1662, 1663, 1664, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 0, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1412, 1413, 1414, 1415, 1416, 1417, 1556, 1557, 1540, 1506, 1535, 1561, 1534, 1523, 1536, 1515, 1516, 1559, 1560, 1524, 1525, 1526, 1550, 1552, 1554, 1549, 1541, 1542, 1527, 1543, 1528, 1530, 1531, 1522, 1509, 1507, 1548, 1547, 1546, 1521, 1510, 1517, 1519, 1518, 1539, 1538, 1514, 1511, 1512, 1513, 1545, 1532, 1544, 1529, 1558, 1520, 1533, 1508, 1537, 1562, 1551, 1553, 1555, 1369, 1367, 1366, 1365, 1368, 0, 1337, 225, 97, 371, 2380, 370, 0, 0, 0, 0, 152, 0, 156, 2380, 108, 109, 2380, 134, 135, 0, 1275, 1276, 1273, 526, 0, 490, 194, 0, 705, 1294, 0, 703, 287, 296, 295, 294, 2459, 2467, 2463, 2464, 2465, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 0, 2661, 3057, 3057, 1197, 0, 0, 0, 0, 3057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2726, 0, 0, 0, 0, 2850, 3057, 3057, 358, 0, 2453, 2698, 2711, 2696, 2694, 2695, 1254, 2738, 2739, 1253, 2697, 2708, 2709, 0, 2713, 2712, 2663, 3057, 2652, 2651, 3057, 2665, 2749, 2750, 2664, 2648, 2650, 2668, 2647, 2649, 2669, 3057, 2706, 2705, 2715, 2714, 2716, 2699, 2700, 2701, 2702, 2703, 2704, 2710, 2722, 2717, 2718, 2719, 2707, 2720, 2721, 2748, 2635, 2636, 2632, 2633, 2856, 2860, 0, 2861, 0, 0, 2659, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 2755, 3057, 3057, 1187, 0, 2820, 0, 3057, 3057, 2484, 2476, 2792, 2805, 2790, 2788, 2789, 1247, 2832, 2833, 1246, 2791, 2802, 2803, 0, 2807, 2806, 2757, 3057, 3057, 2759, 2843, 2844, 2758, 2762, 2763, 3057, 2800, 2799, 2809, 2808, 2810, 2793, 2794, 2795, 2796, 2797, 2798, 2804, 2816, 2811, 2812, 2813, 2801, 2814, 2815, 2842, 2753, 862, 875, 876, 873, 878, 0, 1164, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 1207, 3057, 3057, 3057, 1138, 0, 3057, 3057, 575, 1110, 1123, 1108, 1106, 1107, 1261, 1150, 1151, 1260, 1109, 1120, 1121, 0, 1125, 1124, 3057, 1081, 3057, 0, 1161, 1162, 1082, 3057, 1118, 1117, 1127, 1126, 1128, 1111, 1112, 1113, 1114, 1115, 1116, 1122, 1134, 1129, 1130, 1131, 1119, 1132, 1133, 1160, 0, 2961, 2960, 2956, 0, 2890, 0, 2893, 2904, 0, 0, 0, 0, 0, 3057, 0, 0, 2868, 3057, 0, 0, 0, 3057, 3057, 3057, 0, 3057, 3057, 0, 0, 3057, 3057, 3057, 2328, 0, 2387, 3057, 0, 0, 0, 0, 428, 353, 415, 440, 0, 0, 169, 172, 2389, 0, 3057, 0, 804, 0, 802, 0, 808, 0, 806, 2428, 2445, 2392, 3005, 0, 3057, 0, 3077, 3094, 3095, 3086, 3084, 3083, 3125, 3085, 3091, 3073, 0, 0, 3093, 3069, 3074, 3072, 0, 0, 3067, 3070, 3090, 3057, 3087, 3088, 3071, 0, 0, 1166, 0, 3105, 3100, 3102, 550, 0, 915, 0, 2370, 2371, 2372, 519, 0, 326, 329, 0, 3057, 501, 0, 500, 1068, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 1177, 0, 486, 0, 588, 0, 2340, 0, 2342, 0, 3057, 611, 3057, 628, 627, 0, 0, 0, 2488, 3057, 0, 3057, 0, 764, 0, 3057, 0, 0, 0, 2373, 0, 2350, 2363, 2366, 0, 3058, 590, 0, 726, 0, 652, 0, 3057, 0, 3057, 0, 613, 0, 638, 1054, 3057, 0, 647, 0, 2356, 0, 629, 3057, 0, 0, 3057, 0, 0, 3057, 584, 2380, 595, 0, 586, 2380, 3057, 3057, 3057, 3057, 720, 790, 3057, 1026, 1039, 1024, 1022, 1023, 1240, 0, 0, 1066, 1067, 1239, 1025, 1036, 1037, 0, 1041, 1040, 3057, 3057, 0, 1077, 1078, 3057, 1034, 1033, 1043, 1042, 1044, 1027, 1028, 1029, 1030, 1031, 1032, 1038, 1050, 1045, 1046, 1047, 1035, 1048, 1049, 1076, 3057, 0, 0, 3057, 3057, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 604, 2368, 553, 847, 859, 859, 351, 263, 0, 1280, 3057, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 0, 1313, 1308, 1309, 0, 0, 0, 3057, 3057, 751, 0, 990, 788, 0, 3057, 970, 0, 3057, 3057, 3057, 998, 3057, 971, 991, 3118, 3109, 0, 0, 0, 3111, 0, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 2538, 3057, 3057, 3057, 1217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2603, 0, 0, 3057, 3057, 1293, 1287, 1301, 0, 2575, 2588, 2573, 2571, 2572, 1268, 2615, 2616, 1267, 2574, 2585, 2586, 0, 2590, 2589, 2540, 3057, 2529, 2528, 3057, 2542, 2626, 2627, 2541, 2525, 2527, 2545, 2524, 2526, 2546, 3057, 2583, 2582, 2592, 2591, 2593, 2576, 2577, 2578, 2579, 2580, 2581, 2587, 2599, 2594, 2595, 2596, 2584, 2597, 2598, 2625, 2512, 2513, 2509, 2510, 2536, 781, 360, 520, 560, 559, 557, 3057, 65, 91, 73, 0, 297, 0, 297, 510, 0, 0, 297, 0, 297, 3057, 0, 0, 2387, 3057, 3057, 381, 3057, 0, 0, 422, 0, 413, 438, 0, 0, 0, 1667, 1670, 1999, 2001, 0, 1336, 1338, 0, 0, 223, 219, 52, 0, 148, 149, 0, 151, 154, 102, 128, 3057, 1335, 193, 3057, 1291, 1284, 1299, 3057, 3057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 928, 2854, 984, 0, 994, 0, 1166, 0, 2852, 0, 3057, 3057, 3057, 3057, 3057, 0, 3057, 3057, 2666, 3057, 3057, 3057, 3057, 2630, 3057, 3057, 3057, 3057, 3057, 2631, 2740, 3057, 2848, 2849, 3, 0, 3057, 3057, 0, 0, 0, 2855, 2858, 2859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3057, 2760, 3057, 2834, 3057, 3, 0, 3057, 0, 0, 0, 3057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3057, 581, 579, 577, 1152, 3057, 3, 0, 3057, 0, 0, 1137, 0, 2953, 2904, 2894, 3057, 0, 3057, 2881, 2932, 0, 2924, 2925, 3057, 2888, 2888, 3057, 2888, 0, 0, 3057, 0, 0, 0, 483, 0, 3057, 0, 0, 3057, 3057, 0, 0, 0, 3057, 0, 3028, 0, 0, 3057, 3057, 353, 427, 353, 171, 353, 0, 0, 0, 0, 0, 0, 2405, 2410, 2410, 0, 2393, 2394, 0, 2398, 3043, 3047, 3078, 0, 0, 0, 3092, 0, 3075, 3076, 2380, 3068, 829, 337, 349, 335, 0, 336, 3079, 3080, 3089, 0, 3057, 3057, 3057, 0, 545, 553, 0, 550, 0, 541, 543, 550, 0, 3057, 0, 845, 1067, 3057, 493, 3057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3057, 0, 3057, 0, 0, 3057, 2335, 3057, 2338, 0, 0, 3057, 0, 0, 0, 0, 0, 3057, 763, 3057, 0, 0, 0, 0, 0, 0, 3057, 2354, 2355, 725, 0, 728, 0, 744, 724, 853, 854, 0, 2968, 3057, 2964, 0, 3057, 0, 984, 0, 0, 0, 3057, 0, 0, 630, 2421, 3, 0, 290, 297, 0, 0, 583, 585, 0, 0, 0, 0, 722, 720, 0, 721, 0, 626, 624, 623, 3057, 0, 0, 1053, 0, 667, 607, 608, 0, 0, 0, 0, 0, 0, 0, 3057, 1312, 979, 3057, 1316, 3057, 3057, 3057, 1168, 3057, 3057, 756, 755, 1289, 989, 884, 0, 3057, 3122, 3123, 3120, 737, 3116, 3057, 3057, 3112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1304, 0, 0, 3057, 3057, 3057, 3057, 2543, 3057, 3057, 3057, 2507, 3057, 3057, 3057, 3057, 3057, 2508, 2617, 3057, 3, 0, 3057, 3057, 0, 0, 0, 265, 3057, 556, 568, 98, 0, 298, 0, 510, 86, 0, 297, 0, 510, 0, 510, 405, 389, 3057, 3057, 403, 0, 531, 532, 3057, 0, 421, 0, 0, 1997, 1665, 226, 221, 0, 0, 150, 153, 0, 0, 1302, 0, 0, 2468, 810, 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 3057, 3057, 486, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 2662, 3057, 0, 0, 2653, 2863, 2642, 3057, 2496, 0, 0, 2499, 3057, 2862, 2645, 0, 2497, 2639, 2654, 2655, 2656, 2643, 2646, 2640, 0, 0, 2743, 0, 2723, 2751, 2724, 2744, 2776, 2777, 2778, 2779, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2756, 0, 0, 0, 0, 0, 2837, 2817, 2845, 2818, 2838, 879, 2380, 3057, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 0, 0, 0, 0, 1155, 1135, 1163, 1136, 1156, 0, 2905, 2871, 0, 0, 0, 2930, 2936, 2937, 0, 0, 0, 2935, 2938, 0, 2880, 0, 0, 2888, 0, 0, 3057, 0, 0, 0, 3057, 397, 3057, 0, 0, 0, 353, 448, 3057, 475, 0, 0, 0, 0, 0, 0, 0, 3029, 3057, 0, 454, 2380, 353, 2380, 353, 450, 420, 419, 0, 805, 803, 809, 807, 0, 0, 0, 2416, 2414, 2412, 2418, 2402, 2411, 2403, 2380, 2395, 2408, 0, 2406, 827, 243, 828, 3082, 0, 0, 0, 3036, 347, 0, 0, 3106, 0, 0, 550, 535, 0, 549, 0, 0, 538, 544, 899, 916, 327, 0, 0, 3057, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 0, 0, 0, 712, 2434, 0, 2435, 2436, 2341, 2343, 2336, 2337, 0, 3057, 2443, 0, 3057, 769, 765, 768, 612, 2352, 0, 2351, 2362, 636, 2367, 0, 917, 729, 727, 2967, 859, 2962, 2965, 0, 3057, 632, 0, 3057, 646, 648, 2357, 633, 0, 0, 0, 228, 510, 230, 1071, 715, 716, 717, 0, 0, 0, 723, 0, 0, 719, 614, 788, 1051, 1079, 1052, 1072, 609, 650, 0, 815, 823, 283, 988, 1314, 3057, 0, 0, 0, 0, 0, 0, 883, 885, 0, 3115, 3113, 2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2539, 1305, 0, 0, 2530, 2519, 2522, 0, 2516, 2531, 2532, 2533, 2520, 2523, 2517, 0, 0, 2620, 0, 2600, 2628, 2601, 2621, 561, 0, 0, 3057, 0, 99, 0, 297, 297, 76, 3057, 0, 510, 98, 83, 297, 75, 406, 0, 444, 3057, 473, 0, 404, 0, 2380, 0, 2380, 0, 446, 418, 417, 0, 224, 220, 0, 0, 0, 0, 0, 157, 163, 0, 164, 3057, 1303, 706, 0, 986, 3057, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 2853, 2732, 3057, 1198, 3057, 3057, 3057, 2503, 3057, 3057, 2495, 2490, 2667, 3057, 3057, 2742, 3057, 2826, 3057, 1188, 3057, 3057, 2761, 3057, 2836, 2869, 0, 1144, 3057, 1208, 3057, 3057, 3057, 1154, 0, 2906, 3057, 3057, 2888, 2888, 2889, 0, 2931, 0, 2933, 2926, 2927, 2882, 2923, 0, 2883, 3057, 2888, 0, 2438, 2446, 484, 485, 0, 2440, 2447, 353, 482, 449, 476, 353, 0, 2442, 2448, 3057, 0, 2449, 455, 456, 432, 2380, 430, 2380, 353, 2452, 2399, 2400, 2396, 2417, 2415, 2413, 2410, 2383, 3057, 0, 2397, 0, 3081, 0, 0, 0, 346, 339, 3097, 3096, 3103, 3057, 551, 546, 547, 548, 542, 3057, 494, 3057, 0, 1060, 3057, 1178, 3057, 3057, 714, 0, 610, 0, 0, 3057, 766, 0, 770, 771, 0, 3057, 0, 2374, 3057, 3057, 859, 0, 0, 0, 0, 0, 0, 2998, 0, 2971, 2973, 2991, 2976, 2988, 2990, 2963, 620, 985, 489, 1070, 291, 292, 617, 0, 732, 616, 0, 0, 0, 615, 3035, 0, 1317, 1318, 1319, 1169, 1170, 1171, 740, 3057, 2609, 3057, 1218, 3057, 3057, 2544, 3057, 2619, 3057, 565, 562, 3057, 569, 510, 0, 510, 510, 90, 98, 84, 0, 3057, 510, 0, 479, 445, 474, 0, 456, 426, 2380, 424, 2380, 0, 222, 0, 160, 162, 168, 167, 161, 155, 0, 159, 1274, 3057, 3057, 655, 3057, 0, 0, 0, 0, 2501, 2500, 2498, 0, 2634, 2657, 3057, 0, 0, 0, 0, 1165, 3057, 0, 0, 0, 0, 3057, 2888, 3057, 2910, 741, 2920, 0, 2914, 2916, 0, 2888, 2902, 0, 2900, 0, 2934, 0, 2886, 2888, 0, 2437, 2439, 481, 480, 2441, 0, 3057, 0, 0, 0, 0, 431, 429, 451, 0, 2404, 2409, 2407, 859, 826, 3098, 3099, 348, 0, 502, 0, 1069, 3057, 0, 0, 0, 713, 635, 3057, 767, 0, 3057, 2353, 0, 0, 778, 0, 0, 0, 2970, 2982, 2986, 2987, 0, 2984, 3057, 3057, 0, 3057, 1294, 2966, 0, 3057, 2989, 0, 3057, 0, 731, 0, 734, 0, 730, 3057, 980, 3057, 3057, 3114, 3057, 0, 0, 0, 0, 2534, 0, 82, 98, 85, 78, 0, 3057, 510, 87, 77, 478, 477, 0, 425, 423, 447, 3057, 158, 0, 0, 1199, 1200, 1201, 2504, 2502, 2741, 0, 1189, 1190, 1191, 2835, 0, 1209, 1210, 1211, 1153, 0, 2901, 0, 3057, 2912, 3057, 3057, 3057, 3057, 2888, 2903, 3057, 0, 0, 0, 0, 2888, 2928, 0, 2885, 3057, 0, 469, 470, 353, 3057, 471, 472, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 2401, 0, 552, 495, 0, 1179, 1180, 1181, 2487, 634, 772, 2375, 0, 2378, 2376, 2377, 2969, 2983, 2985, 0, 0, 3057, 0, 0, 0, 2972, 2979, 3057, 2980, 2974, 621, 293, 618, 735, 733, 0, 0, 0, 0, 1219, 1220, 1221, 2618, 563, 3057, 0, 3057, 510, 88, 79, 0, 165, 0, 707, 3057, 2733, 3057, 3057, 3057, 2827, 3057, 3057, 3057, 1145, 3057, 3057, 2888, 3057, 2911, 2915, 2921, 0, 0, 0, 0, 2896, 0, 0, 0, 0, 0, 3057, 0, 0, 2939, 2884, 0, 3057, 453, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 0, 3057, 1061, 3057, 3057, 779, 3057, 0, 0, 2977, 2996, 0, 2999, 0, 2975, 981, 982, 983, 3057, 2610, 3057, 3057, 0, 510, 89, 80, 452, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2897, 0, 3057, 2917, 2919, 2918, 3057, 2913, 0, 3057, 2948, 2949, 0, 0, 2947, 2946, 0, 0, 825, 0, 0, 0, 0, 0, 3057, 3000, 2992, 0, 2997, 2994, 2981, 0, 0, 0, 564, 81, 2734, 2735, 2736, 2828, 2829, 2830, 1146, 1147, 1148, 3057, 742, 2922, 0, 0, 0, 0, 2940, 2942, 2451, 0, 1062, 1063, 1064, 0, 0, 0, 2995, 3001, 0, 0, 2611, 2612, 2613, 0, 2888, 2943, 2945, 2950, 0, 2450, 0, 3003, 0, 2993, 2978, 2888, 2898, 0, 3057, 3004, 3002, 2899, 3057, 0, 0, 2941, 2944 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1178, 3792, 55, 56, 57, 58, 59, 60, 216, 217, 61, 1340, 221, 63, 177, 168, 538, 64, 65, 66, 223, 508, 224, 700, 1312, 1313, 464, 702, 1321, 1322, 1323, 3204, 4741, 1429, 67, 68, 1373, 1374, 1375, 2207, 69, 368, 369, 370, 70, 71, 1387, 1388, 1389, 1390, 1391, 1378, 1379, 3212, 3213, 4390, 3214, 4776, 4777, 4778, 5007, 1344, 1782, 1783, 72, 73, 74, 75, 1316, 76, 77, 78, 724, 1410, 1324, 79, 80, 1325, 1345, 1346, 4387, 4769, 4386, 3951, 1070, 3684, 3685, 420, 421, 422, 254, 262, 423, 424, 84, 527, 575, 1303, 1997, 781, 86, 1131, 1132, 3767, 265, 266, 4253, 4254, 3235, 470, 471, 472, 1133, 1134, 207, 193, 87, 162, 534, 535, 995, 1825, 1823, 88, 3573, 89, 4158, 90, 4159, 91, 92, 257, 782, 93, 1347, 1348, 1349, 1350, 2208, 1352, 1353, 1354, 1355, 1356, 3928, 1357, 521, 138, 306, 1358, 950, 4766, 4552, 2209, 1776, 2210, 1777, 2211, 1778, 2212, 1779, 1359, 951, 1360, 952, 3531, 5069, 4757, 4535, 4758, 4536, 4106, 4107, 1890, 1415, 1074, 693, 3605, 3606, 235, 236, 237, 477, 483, 484, 327, 452, 473, 513, 514, 515, 229, 230, 2200, 2201, 1361, 523, 3592, 524, 3593, 308, 4173, 4174, 4175, 4168, 4169, 4170, 4171, 1305, 1306, 2177, 2178, 1075, 891, 892, 1076, 1077, 1078, 1079, 1080, 1908, 1909, 1081, 1082, 1083, 1084, 3986, 1085, 427, 1086, 828, 783, 893, 1278, 487, 3237, 1087, 4619, 1921, 3697, 4674, 4266, 4671, 4267, 4672, 2050, 2051, 2052, 5043, 1872, 2029, 616, 617, 618, 619, 428, 3644, 3645, 3646, 4921, 4922, 3988, 5099, 429, 1090, 430, 1092, 431, 1362, 4395, 1122, 95, 4575, 1124, 96, 4577, 4578, 5008, 153, 97, 378, 1990, 345, 346, 556, 563, 1094, 4236, 1095, 1096, 495, 496, 854, 855, 856, 857, 858, 580, 1193, 2042, 1194, 98, 330, 356, 99, 139, 3595, 3262, 532, 1098, 896, 433, 1099, 831, 786, 897, 1281, 3992, 1100, 434, 1101, 832, 787, 898, 1282, 1138, 3226, 596, 1139, 1419, 1283, 2036, 1420, 1284, 1421, 1285, 1422, 1286, 1423, 1287, 436, 1159, 2018, 3782, 597, 309, 721, 480, 481, 1363, 3202, 3203, 1364, 2544, 2545, 1365, 2872, 2873, 437, 1744, 268, 3631, 3630, 3632, 1860, 3653, 3676, 142, 1728, 143, 3654, 144, 3655, 438, 3656, 439, 698, 1367, 958, 1445, 4138, 4139, 4140, 4562, 4141, 4573, 4574, 4567, 4568, 1106, 100, 1368, 961, 1107, 1108, 1109, 1110, 1111, 963, 1112, 101, 102, 272, 492, 732, 733, 734, 1432, 735, 792, 793, 103, 104, 274, 1439, 1440, 838, 3640, 794, 795, 1446, 4433, 4434, 1293, 3641, 1593, 798, 3994, 3995, 1562, 3346, 3267, 3347, 105, 106, 276, 107, 108, 5044, 915, 916, 917, 918, 919, 3503, 920, 1740, 1741, 4089, 1742, 5045, 4837, 5046, 5047, 5048, 5284, 921, 1745, 4843, 1746, 4094, 4512, 4513, 4514, 4515, 5190, 5364, 282, 907, 908, 1729, 1114, 4238, 4239, 4240, 4938, 4939, 4940, 5242, 4941, 5108, 5109, 4942, 4943, 5323, 4944, 5376, 5377, 109, 110, 284, 967, 968, 1781, 970, 971, 1115, 111, 112, 113, 506, 975, 1804, 694, 440, 972, 349, 441, 317, 289, 290, 442, 443, 210, 118, 181, 3576, 3577, 3578, 3579, 3580, 3581, 3582, 3583, 3584, 980, 1808, 1809, 3588, 3589, 2055, 1233, 1234, 2048, 2049, 116, 117 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -4563 static const int yypact[] = { 74712, -4563, -4563, -4563, -4563, 1854, -4563, -4563, -4563, 1876, 419, 1876, 2645, -4563, 1273, 1013, 211, 211, 1342, -4563, -4563, 776, 1876, -4563, -4563, -4563, -4563, 211, 19998, 211, -4563, 441, 1876, -4563, -4563, -4563, 1876, -4563, -4563, -4563, -4563, -4563, 146, 211, 211, -4563, 354, 385, 396, 11831, 352, -4563, 473, 540, -4563, 702, 74959, -4563, -4563, -4563, 78702, -4563, -4563, -4563, -4563, -4563, 383, -4563, 383, -4563, -4563, 383, 771, 781, 540, 540, -4563, 630, 2693, 6227, 10649, 219, 219, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 920, -4563, 668, -4563, -4563, -4563, -4563, 21361, -4563, -4563, -4563, -4563, 965, -4563, 965, -4563, 985, -4563, 275, -4563, 965, -4563, 908, 901, 1056, -4563, -4563, 958, 735, -4563, 1128, 1160, 1243, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 3437, 534, -4563, -4563, -4563, -4563, 1257, 1076, 265, 1056, 265, -4563, -4563, -4563, -4563, 21361, -4563, -4563, -4563, -4563, 219, 219, 1322, 1042, 1185, 1322, 1090, 1876, 1107, 1039, -4563, 211, 211, 383, 383, 383, 23074, 23074, 264, 1209, 211, 1876, -4563, 1117, 1876, 1192, 540, 1876, 540, 1876, 1933, 1876, -4563, -4563, 219, 1330, 280, 280, 1396, 1230, 48788, 1876, 2645, 1394, 1030, 235, 1876, 1282, -4563, 146, 540, 1459, 1244, -4563, -4563, 3094, 1526, 1601, 1542, 78905, -4563, 1669, 1719, 383, -4563, 1724, -4563, 1724, 1724, -4563, -4563, -4563, 1646, 178, 1646, -4563, -4563, 1573, -4563, 178, -4563, -4563, 219, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 1465, 396, 1322, 1742, -4563, -4563, 396, -4563, -4563, -4563, -4563, 1322, 1427, 1599, -4563, 178, -4563, 211, -4563, -4563, 1730, -4563, 1760, -4563, 1767, -4563, 628, 534, 1798, -4563, 1800, -4563, 1832, 1797, 211, 1459, 1056, 191, -4563, 372, -4563, 265, 226, 540, -4563, 940, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 1874, -4563, -4563, -4563, -4563, 19998, 540, 52649, -4563, 1056, 1615, -4563, -4563, -4563, 1322, 52649, 1322, -4563, 1876, -4563, -4563, 1591, 1045, 1891, 1931, 1719, -4563, 1724, 1724, 1724, -4563, -4563, 280, 1322, 409, 280, 671, 671, -4563, 1949, -4563, 1821, 540, 1056, 1296, 1296, -4563, -4563, 1876, -4563, 1876, -4563, -4563, -4563, 540, 1459, 200, 1876, 1928, -4563, 1885, 1933, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 671, -4563, 540, 1296, -4563, 1980, -4563, -4563, -4563, -4563, -4563, 1975, 52649, 52649, 52649, 52649, 52649, 885, 52649, 41585, 52649, 52649, -4563, -4563, -4563, 1720, -4563, 540, -4563, -4563, 1976, 1981, 1987, 1991, 40485, 52649, 52649, 52649, 52649, 52649, 1997, -4563, 1240, 1284, 301, 1728, -4563, 1752, -4563, -4563, -4563, 1261, -4563, -4563, 70719, -4563, 907, 2013, -4563, 2041, 1076, -4563, 2043, 540, 2038, 540, 2037, 1478, 1876, 2044, 2057, 178, -4563, 52649, 2069, 2064, 1459, 1006, 2078, -4563, 2079, -4563, 2087, -4563, -4563, 1815, 2084, 2090, 2091, 540, 44109, 2085, -4563, 178, -4563, -4563, 630, -4563, 178, 2093, 1322, 397, 440, -4563, 1322, -4563, 1322, 49063, 2106, -4563, 920, -4563, -4563, 79126, 1984, 16181, 12078, 2109, 21336, 52649, 2110, 40760, -4563, 1876, 639, 1092, 78063, 372, 2003, 1876, -4563, -4563, 49339, -4563, -4563, -4563, 2100, -4563, 2098, -4563, 2114, -4563, 1257, 1799, -4563, 1465, 2115, 1876, 1076, 1752, 2117, 43398, -4563, 2121, 70719, -4563, 905, -4563, 2108, -4563, -4563, -4563, -4563, -4563, 1876, 1876, -4563, 2123, -4563, 2124, 2125, 2126, -4563, 658, -4563, -4563, -4563, 17415, 2065, 2068, 540, -4563, -4563, -4563, -4563, -4563, -4563, 1045, -4563, 1459, -4563, -4563, 372, 2128, -4563, -4563, -4563, 1666, 2061, -4563, 2131, 44384, -4563, 266, 266, 19653, 1210, 266, 266, 39660, -4563, -4563, 266, -4563, 52649, 52649, 2129, 40849, 955, -4563, 266, 266, 49063, 44384, -4563, 44384, -4563, 44384, -4563, 44384, -4563, 540, -4563, -4563, 540, -4563, 2133, -4563, 1000, -4563, 1054, 2138, -4563, 33343, 266, 266, 266, 266, 266, -4563, 2148, -4563, 2098, 2150, 52649, 52649, 52649, 52649, 52649, 2888, 52649, 52649, 52649, 52649, 52649, 52649, 2134, 2136, 44659, 2155, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 39935, 52649, -4563, -4563, -4563, -4563, 8197, 8197, 2159, 1076, 953, 2161, 1076, -4563, -4563, 2153, -4563, -4563, 2164, 2162, 1876, -4563, 2158, -4563, -4563, -4563, -4563, -4563, -4563, 540, 540, 842, -4563, -4563, 22488, 2176, 5517, 71306, 71792, 75553, -4563, 2163, -4563, 197, 851, -4563, 2169, -4563, -4563, -4563, 52649, -4563, -4563, -4563, -4563, 1717, -4563, -4563, 78960, 70719, 44934, -4563, 2170, 1322, -4563, 1539, 1807, -4563, 630, 16445, -4563, -4563, -4563, 52649, 52649, 39385, 52649, 52649, 52649, 41865, 52649, 52649, 2182, 16699, 2184, 2096, 2189, 2197, 2203, 17723, 39385, -4563, 2205, 2206, -4563, 2207, 2208, 2195, 18454, 33780, 540, -4563, 79126, 2211, 52649, 52649, 52649, 2213, 203, 52649, 52649, 2214, -4563, 1969, 1752, 920, -4563, -4563, -4563, -4563, -4563, 981, -4563, 1076, -4563, 36249, 2140, 16181, -4563, -4563, 2142, 14284, 41035, 540, 540, -4563, -4563, -4563, 52649, 52649, 41035, 52649, 52649, 52649, 42145, 52649, 52649, 2216, -4563, -4563, 540, -4563, 52649, 52649, 52649, 2222, 52649, 52649, 2225, -4563, 1989, 1752, -4563, -4563, -4563, -4563, 1031, -4563, 1076, -4563, 41035, 12078, 2147, 32123, 41035, 540, 540, -4563, 2077, -4563, -4563, -4563, -4563, 33253, -4563, 1322, 2253, -4563, 2234, -4563, 540, 27675, -4563, 178, 48602, 224, -4563, -4563, -4563, 40760, 40760, 40760, 40760, 40760, 40760, 42425, 40760, 40760, 52649, 52649, -4563, 52649, -4563, 540, -4563, 40760, 40760, 40760, 2239, 52649, 52649, 2240, -4563, 2011, 1752, 1890, -4563, -4563, -4563, -4563, 44473, -4563, 1085, -4563, 1076, -4563, 540, 540, 2258, 940, 940, 295, -4563, -4563, -4563, 1052, 52649, 1876, 991, 2190, 1749, -4563, 2252, -4563, -4563, -4563, 752, -4563, 35603, 493, 1465, 768, 2262, 1876, 688, 873, 35603, 2282, 76231, 540, 2237, 2285, 35603, 37676, 2139, 2286, 2293, 2294, 2295, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 2288, -4563, 2283, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 2230, 78292, -4563, -4563, -4563, 2299, 1056, 372, 2291, -4563, -4563, -4563, 32980, -4563, 265, 940, -4563, 1459, 540, 2301, 52649, -4563, 52649, 52649, 52649, 1876, 1322, 2316, 2297, 2303, 2306, -4563, -4563, -4563, -4563, -4563, 2309, 2315, -4563, -4563, -4563, 52924, 1106, 52924, 52649, 52924, 52924, -4563, 52924, 42705, 52924, 52924, 600, 52649, 703, 2312, 2317, 512, 2166, 2318, 602, 19518, 1620, 35603, 2329, 2330, 52649, 2331, 35603, 2324, -4563, -4563, -4563, -4563, -4563, 49614, 2334, -4563, 19518, 2335, 49889, -4563, 540, -4563, -4563, -4563, 2092, 590, 2337, 2339, 52924, 52924, 52924, 940, 403, 1245, 52649, 52649, 2340, -4563, 2332, 2341, 30071, -4563, 2112, 1752, -4563, 35603, 35603, -4563, -4563, -4563, 20821, 21118, -4563, 25301, -4563, -4563, 2344, 2347, 656, -4563, 340, 2350, -4563, -4563, 2351, -4563, 18079, -4563, -4563, 7346, 1179, 2188, 172, -4563, 863, 1076, -4563, 35603, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 540, 540, 2079, 2079, -4563, 2343, 280, 2352, 32715, 2354, -4563, 540, -4563, -4563, -4563, 643, -4563, 14855, -4563, 2079, -4563, -4563, -4563, 1924, -4563, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 2364, 1942, 2120, 49703, 2363, 1859, 1906, 52649, 2353, 52649, 2356, 13810, 1947, 1953, 1959, 1979, -4563, 34845, 44659, -4563, 50164, -4563, 44659, 52649, 52649, 52649, -4563, 52649, 196, 6923, 196, 738, 738, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 283, 1076, 540, 196, 1443, 1443, 49978, 5153, 6716, 50443, 50443, -4563, 13810, 52649, 5066, 5838, 6716, 5153, 6923, 2311, 2311, 2311, 2311, 2311, 2311, 1443, 1443, 941, 941, 941, 266, 13810, 20003, 2198, 2372, 2374, 52649, 2357, 51913, -4563, -4563, 16746, -4563, -4563, -4563, 52649, 52649, 15358, 52649, 52649, 1876, 52649, 42985, 52649, 52649, 2376, 37387, 2362, 2379, 37966, 39385, -4563, 2381, 2382, -4563, 2383, 2386, 2373, 38249, 38542, 540, -4563, 2387, 52649, 52649, 52649, 2390, 52649, 52649, 2391, -4563, 2146, 1752, -4563, -4563, -4563, -4563, -4563, 1242, 2393, 2406, -4563, 2407, -4563, -4563, 1076, -4563, 8745, -4563, 23640, 41035, 540, 540, 2394, 8197, -4563, -4563, -4563, 1876, 1666, 540, 2411, 43265, -4563, -4563, -4563, -4563, 396, 1988, -4563, -4563, -4563, 540, -4563, -4563, -4563, 8464, 1994, -4563, 25031, -4563, 2236, 2405, 19518, 35603, 2416, 978, 940, 2429, 2420, 72521, 2421, 53267, 55247, 54257, -4563, -4563, -4563, -4563, -4563, -4563, 2236, 2413, 2355, 71549, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 2288, -4563, -4563, 1801, 540, -4563, -4563, 2358, 72035, -4563, -4563, -4563, -4563, -4563, 2419, -4563, -4563, 2275, 2279, 271, -4563, 2366, 75773, -4563, -4563, -4563, 2422, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 2425, -4563, -4563, -4563, -4563, 48788, 70719, -4563, 397, -4563, 1322, 952, -4563, -4563, -4563, -4563, 1876, 70719, 2433, 2431, -4563, 2441, -4563, 45209, 1322, -4563, -4563, 1984, 178, -4563, -4563, -4563, -4563, -4563, -4563, 79126, 1322, -4563, -4563, -4563, 266, 266, 1752, 1954, 36524, -4563, 5361, 266, 266, 266, -4563, 2428, 1064, 266, 266, 52649, 52649, 21647, 52649, 2447, 52649, 41035, 52649, 52649, 26460, 319, 52649, 41035, 52649, 52649, 52649, 52649, 21647, 52649, 26460, 49063, -4563, -4563, 41035, 266, 266, 266, 52649, -4563, 52649, 52649, 2434, -4563, -4563, 266, 266, -4563, 2449, -4563, 1605, -4563, -4563, -4563, 2345, 2380, 21647, 2079, -4563, -4563, 52649, 52649, 52649, 52649, 52649, 4612, 52649, -4563, 52649, 52649, 52649, 52649, 52649, 39385, 2443, 39385, 39385, 2445, 41035, 44659, 39385, 39385, 39385, 41035, 39385, 39385, 41035, 2464, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 39935, 52649, 39385, 39385, 39385, 39385, 50719, 52649, 52649, -4563, 41035, -4563, 1752, 10164, 1076, 1076, 266, 266, 1974, 10669, 266, 266, 266, -4563, 2453, 1067, 266, 266, 41035, 49063, 266, 266, 266, 52649, 266, 266, -4563, 2465, -4563, -4563, -4563, -4563, 34453, 37027, 2079, 52649, 52649, 52649, 52649, 52649, 4624, 52649, -4563, 52649, 52649, 52649, 52649, 52649, 41035, 2454, 2456, 41035, 44659, 41035, 41035, 41035, 2467, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 39935, 52649, 41035, -4563, 10164, 1076, 1076, -4563, -4563, -4563, 1322, 21336, -4563, 33253, 1322, 2494, -4563, -4563, -4563, 2468, 321, 321, 1755, 2107, 321, 321, 321, -4563, 2458, 1169, 321, 321, 13810, 13810, 13810, 49063, 321, 321, 321, 52649, 266, 266, -4563, 2479, -4563, -4563, 40760, 40760, 40760, 40760, 40760, 40760, 4769, 40760, 40760, 40760, 40760, 40760, 40760, 2473, 52649, 2476, 29157, 40760, 2496, 40760, 40760, 40760, 40760, 40760, 40760, 40760, 40760, 40760, 40760, 40760, 40760, 40760, 40760, 40760, 40760, 40760, 40760, 39935, 40760, -4563, -4563, -4563, 1076, 1076, -4563, -4563, 409, -4563, -4563, -4563, 639, -4563, -4563, -4563, -4563, 252, 2491, -4563, 1078, 2489, 540, 52188, -4563, 2398, 2501, 1876, 1776, 2492, 2079, -4563, -4563, 2450, 14604, 1752, -4563, 2521, 2508, 2509, 2513, 2526, 2514, 2515, 52649, -4563, 2527, 2516, 2517, 2518, 1884, 2414, -4563, 290, 76002, -4563, -4563, -4563, 76460, -4563, 2519, -4563, 1653, -4563, -4563, 1876, 52649, -4563, -4563, 2522, 44384, 2520, 44384, 2523, 44384, 2524, 44384, 2525, 1407, 2528, 2079, -4563, 44934, 1615, 2531, -4563, 75162, 52649, 27940, -4563, -4563, -4563, -4563, -4563, -4563, 19998, 2507, 2512, 2529, 2530, -4563, -4563, -4563, 1123, 52649, -4563, -4563, -4563, 2532, -4563, -4563, 329, -4563, 1276, 52649, -4563, 329, 44748, 2292, 329, 329, 329, -4563, 2506, 1197, 329, 329, 52649, 52463, 52649, 1876, -4563, -4563, -4563, 52649, 2784, 19518, 2284, -4563, 2533, 2296, 2538, 2539, 2302, 38835, 18684, 52738, 1188, -4563, 1876, 27400, 45484, 1532, 70719, 729, 2540, 52649, -4563, 55585, 49063, 2550, 52649, 2542, 940, 52649, 329, 329, 329, 2543, 2553, 940, -4563, -4563, -4563, 52649, -4563, 206, 206, -4563, -4563, -4563, -4563, -4563, 2554, -4563, -4563, -4563, 2079, 2474, 20524, -4563, 26327, 2079, 2435, -4563, -4563, -4563, 2558, 2559, 2560, 2562, -4563, 2098, 2564, -4563, 26787, -4563, 52924, 52924, 52924, 52924, 52924, 4533, 52924, 52924, 52924, 52924, 52924, 52924, 2548, 2549, 45759, 2568, 52924, 52924, 52924, 52924, 52924, 52924, 52924, 52924, 52924, 52924, 52924, 52924, 52924, 52924, 52924, 52924, 52924, 52924, 39935, 52924, 1015, 339, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, -4563, -4563, -4563, -4563, 35900, 2572, -4563, 1076, 1076, -4563, -4563, 2569, 2579, -4563, 2581, -4563, 2589, 2100, -4563, -4563, -4563, -4563, -4563, -4563, 46034, 55615, 55643, 55689, 55914, 55960, 55988, 56018, 56046, 56092, 56317, 56363, 56391, 56421, -4563, -4563, 52649, -4563, 2583, -4563, 2586, 1294, 52649, -4563, 52649, -4563, -4563, -4563, -4563, -4563, -4563, 56449, 2593, -4563, 70719, 70719, 1336, 70719, 56495, 56720, 44934, 2607, -4563, 2161, 52649, 52649, 1306, 70719, 1347, -4563, 1359, -4563, -4563, 56766, 39749, 32022, -4563, 52649, 1188, 52649, 56794, 50443, -4563, 266, 266, 2404, 9517, 266, 266, 2608, 266, -4563, 2591, 1374, 266, 266, 52649, 52649, 21647, 52649, 41035, 52649, 26460, 319, 52649, 41035, 52649, 52649, 52649, 52649, 21647, 52649, 26460, 49063, 41035, 266, 266, 266, 52649, 266, 266, -4563, 2610, -4563, -4563, -4563, -4563, -4563, 8197, 2605, 2534, 27062, 52649, 52649, 52649, 52649, 52649, 5211, 52649, 52649, 52649, 52649, 52649, 52649, 15358, 2594, 15358, 39385, 2595, 41035, 44659, 15358, 39385, 39385, 41035, 39385, 39385, 41035, 2614, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 39935, 52649, 39385, 39385, 39385, 39385, 41035, -4563, 10164, 1076, 1076, -4563, 2617, 2612, 727, -4563, -4563, 1536, -4563, 1752, 2615, -4563, 56824, -4563, 22488, -4563, 1376, -4563, 2766, 630, 219, 1227, 178, 178, 945, 1405, -4563, -4563, 2613, -4563, 52649, 1876, 2535, 1713, -4563, 2616, 290, 72278, -4563, 1368, -4563, -4563, -4563, -4563, 72764, -4563, 2620, 52649, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 54587, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 53597, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 54917, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 54257, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 53927, -4563, 79109, -4563, -4563, 2079, -4563, 1386, 2624, 2627, 1745, -4563, 2623, -4563, 2079, -4563, -4563, 2079, -4563, -4563, 1487, 1752, -4563, 56852, -4563, 2636, 1098, -4563, 2625, -4563, 44934, 2632, 46313, -4563, -4563, -4563, 70719, -4563, 2628, -4563, -4563, 1322, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 2536, -4563, 52649, 52649, 2633, 56898, 2635, 2634, 57123, 52649, 2641, 2637, 13204, 57169, 57197, 57227, 41675, 57255, 57301, 2638, 2639, 57526, 13810, 42235, 45023, 2651, 2642, -4563, 52649, 52649, -4563, 2657, -4563, 196, 6923, 196, 738, 738, -4563, -4563, -4563, 1076, 196, 1443, 1443, 57572, 5153, 6716, 26460, 50443, 19018, 9078, 50443, 12691, -4563, 13810, 24720, 9078, 9078, 6551, 9078, 9078, 6551, 52649, 5066, 5838, 6716, 5153, 6923, 2311, 2311, 2311, 2311, 2311, 2311, 1443, 1443, 941, 941, 941, 266, 13810, -4563, 16746, 21647, 21647, 21647, 21647, -4563, 2635, 2644, -4563, 2649, 2652, 9860, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, -4563, 52649, 52649, 2655, 15713, 13810, 45573, 52649, 52649, -4563, -4563, 196, 6923, 196, 738, 738, -4563, -4563, -4563, 1076, 196, 1443, 1443, 57600, 5153, 6716, 29760, 50443, 50443, 12691, -4563, 13810, 25718, 6551, 6551, 52649, 5066, 5838, 6716, 5153, 6923, 2311, 2311, 2311, 2311, 2311, 2311, 1443, 1443, 941, 941, 941, 266, 13810, -4563, 16746, 9860, -4563, -4563, -4563, 1322, 2661, 1092, -4563, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 2658, 52649, 52649, 52649, 13810, 45848, 52649, 52649, 44473, 307, 7994, 307, 930, 930, -4563, -4563, -4563, 1076, 307, 1966, 1966, 6999, 5746, 8287, 50443, 13810, 50443, 540, -4563, 3776, 30676, 52649, 8014, 14009, 8287, 5746, 7994, 3815, 3815, 3815, 3815, 3815, 3815, 1966, 1966, 1120, 1120, 1120, 321, 30676, -4563, 7436, 2673, -4563, -4563, -4563, 540, -4563, 2666, -4563, 2662, 2676, 1187, 1300, 1876, 2667, 52649, 1876, 2629, -4563, 52649, 540, 2671, 2681, 52649, 38835, 19518, 2684, 52649, 38835, 57630, 2687, 52649, 38835, 28349, 2674, 2682, -4563, 52649, 540, 2683, 2679, 1876, -4563, 76689, -4563, -4563, 1201, 540, -4563, -4563, -4563, 57658, 38835, 2000, -4563, 2002, -4563, 2007, -4563, 2008, -4563, -4563, -4563, 1561, -4563, 2706, 372, 2699, -4563, -4563, -4563, 1700, -4563, -4563, 248, -4563, -4563, -4563, 2701, 2703, -4563, -4563, -4563, -4563, 2646, 75350, -4563, -4563, -4563, 40205, 2194, -4563, -4563, 2669, 70719, 346, 800, -4563, -4563, -4563, 382, 540, -4563, 2014, -4563, -4563, -4563, -4563, 2316, -4563, -4563, 17415, 5253, 2705, 2015, 70719, -4563, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 2702, 57704, 403, 57929, -4563, 57975, -4563, 1399, -4563, 1416, 19518, -4563, 19518, -4563, -4563, 2714, 2622, 2717, 25931, 19998, 289, 52649, 1762, -4563, 2708, 52649, 2715, 2729, 2731, -4563, 2739, -4563, 2753, 2751, 277, 277, -4563, 35603, -4563, 31220, -4563, 1552, 52649, 35603, 34052, 2768, -4563, 58003, -4563, 13810, 52649, 58033, -4563, 2023, -4563, 58061, -4563, 52649, 2762, 58107, 52649, 540, 540, 52649, -4563, 2079, -4563, 30341, -4563, 2079, 52649, 52649, 52649, 52649, 41310, 2765, 52649, 359, 8452, 359, 1020, 1020, -4563, 2770, 2772, -4563, 2773, 1076, 359, 2042, 2042, 14957, 3075, 10394, 50443, 50443, 540, -4563, 9945, 52649, 11924, 15841, 10394, 3075, 8452, 4047, 4047, 4047, 4047, 4047, 4047, 2042, 2042, 1217, 1217, 1217, 329, 9945, -4563, 10996, 52649, 2774, 2776, 52649, 52649, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, -4563, 821, -4563, -4563, -4563, -4563, -4563, -4563, 920, -4563, 52649, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 1438, -4563, -4563, -4563, 2755, 8589, 12509, 44659, 52649, -4563, 2786, -4563, -4563, 2787, 52649, 11084, 58332, 52649, 52649, 50443, -4563, 50443, -4563, -4563, -4563, -4563, 58378, 2788, 58406, -4563, 1439, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, -4563, 52649, 11440, 52649, 2775, 58436, 2761, 2777, 36939, 58464, 58510, 42795, 58735, 58781, 2778, 2779, 58809, 13810, 43923, 46952, 52649, 52649, -4563, 2407, -4563, 2791, 196, 6923, 196, 738, 738, -4563, -4563, -4563, 1076, 196, 1443, 1443, 58839, 5153, 6716, 30758, 50443, 30831, 9078, 50443, 12691, -4563, 13810, 28660, 9078, 9078, 6551, 9078, 9078, 6551, 52649, 5066, 5838, 6716, 5153, 6923, 2311, 2311, 2311, 2311, 2311, 2311, 1443, 1443, 941, 941, 941, 266, 13810, -4563, 16746, 21647, 21647, 21647, 21647, 9860, -4563, -4563, 2100, 2796, -4563, 43265, 52649, -4563, -4563, -4563, 2797, 178, 1876, 178, -4563, 336, 630, 178, 1876, 178, 19518, 1923, 58867, 2789, 52649, 940, -4563, 52649, 2790, 1876, -4563, 73007, -4563, -4563, 1303, 58913, 2720, -4563, -4563, -4563, -4563, 2722, -4563, -4563, 920, 1322, 1742, -4563, -4563, 2792, -4563, -4563, 540, -4563, -4563, -4563, -4563, 52649, -4563, -4563, 50994, -4563, 2441, -4563, 52649, 15358, 59138, 59184, 59212, 59242, 59270, 59316, 59541, 59587, 59615, 59645, 59673, 59719, 2806, -4563, 2024, -4563, 2028, 70990, 186, 1893, 227, 2053, -4563, 1440, 52649, 39385, 52649, 39385, 46588, 59944, 52649, 39385, -4563, 52649, 39385, 39385, 39385, -4563, 39385, 39385, 39385, 39385, 39385, -4563, -4563, 52649, -4563, -4563, 70719, 59990, 52649, 52649, 1449, 1514, 60018, -4563, -4563, -4563, 60048, 60076, 60122, 60347, 60393, 60421, 60451, 60479, 60525, 60750, 60796, 60824, 2054, 1553, 52649, -4563, 52649, -4563, 52649, 70719, 60854, 52649, 1564, 1587, 60882, 52649, 2734, 60928, 61153, 61199, 61227, 61257, 61285, 61331, 61556, 61602, 61630, 61660, 61688, 61734, 1593, 52649, 13810, 13810, 13810, -4563, 52649, 70719, 61959, 40760, 1596, 1618, 34845, 62005, -4563, 2662, -4563, 51270, 2798, 52649, -4563, -4563, 1431, -4563, 2804, 52649, 52188, 2398, 52649, 52188, 2802, 2756, 52649, 62033, 2813, 1766, -4563, 2805, 52649, 62063, 2817, 46863, 52649, 62091, 2819, 2718, 40210, 49153, -4563, 62137, 2810, 52649, 52649, 76918, -4563, 77147, -4563, 78521, 2822, 2816, 2818, 2820, 2821, 230, -4563, 1060, 1060, 2763, 1561, -4563, 1876, -4563, -4563, -4563, -4563, 2619, 1045, 2785, -4563, 2795, -4563, -4563, 2079, -4563, 211, -4563, -4563, -4563, 920, -4563, -4563, -4563, -4563, 1876, 52649, 52649, 52649, 1775, -4563, -4563, 2831, 2824, 1782, -4563, -4563, 2824, 2825, 19998, 2828, -4563, -4563, 52649, -4563, 52649, 62362, 62408, 62436, 62466, 62494, 62540, 62765, 62811, 62839, 62869, 62897, 62943, 63168, 1628, 52649, 31575, 52649, 31575, 35603, 19518, -4563, 19518, -4563, 1629, 1641, 52649, 2835, 31575, 1876, 2834, 63214, 18684, -4563, 52649, 63242, 277, 316, 540, 35603, 540, 52649, -4563, -4563, -4563, 35603, -4563, 35603, 70719, -4563, -4563, -4563, 540, 2836, 17718, -4563, 2838, 34052, 35603, 2846, 71018, 35603, 31575, 940, 35603, 63272, -4563, -4563, 70719, 1784, -4563, 178, 1808, 63300, -4563, -4563, 63346, 63571, 63617, 63645, 43554, 47138, 2781, 47413, 63675, -4563, -4563, -4563, 52924, 1650, 1652, 34845, 63703, 70719, -4563, -4563, 63749, 63974, 2852, 2853, 2854, 1814, 64020, 52649, -4563, 2841, 52649, -4563, 52649, 52649, 52649, -4563, 52649, 52649, -4563, 70719, 70719, -4563, 2626, 64048, 52649, 70719, 70719, -4563, -4563, -4563, 39935, 39935, -4563, 64078, 64106, 64152, 64377, 64423, 64451, 64481, 64509, 64555, 64780, 64826, 64854, 2058, -4563, 17022, 1667, 52649, 39385, 39385, 39385, -4563, 52649, 39385, 39385, -4563, 39385, 39385, 39385, 39385, 39385, -4563, -4563, 52649, 70719, 64884, 52649, 52649, 1673, 1677, 64912, -4563, 14609, -4563, 64958, 49063, 2855, 236, 1876, -4563, 2847, 630, 178, 2859, -4563, 1876, -4563, -4563, -4563, 19518, 47688, -4563, 65183, -4563, 70719, 52649, 73250, -4563, 73493, 74465, -4563, -4563, 2856, 1322, 920, 920, -4563, -4563, 1577, 65229, -4563, 65257, 65287, -4563, 23640, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 52649, 2888, 403, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, -4563, 52649, 2843, 13735, 21647, -4563, 21647, 39110, -4563, 1623, 578, -4563, 39385, -4563, 21647, 2059, 2799, 26460, 21647, 21647, 21647, 21647, 21647, 26460, 65315, 2864, -4563, 65361, 11084, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 2850, 24413, 2060, 65586, 2865, -4563, 11084, -4563, -4563, -4563, 70719, 2079, 52649, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 2851, 25632, 65632, 2872, -4563, 12843, -4563, -4563, -4563, 2863, -4563, 70719, 2861, 960, 65660, -4563, -4563, -4563, 1876, 1578, 2873, -4563, -4563, 1876, 70719, 1187, 1300, 52188, 1187, 2832, 52649, 65690, 31575, 31575, 19518, -4563, 52649, 65718, 31575, 31575, 77376, -4563, 47963, -4563, 1768, 65764, 31575, 35603, 2884, 2801, 35603, -4563, 52649, 65989, -4563, 2079, 77605, 2079, 77834, 2827, -4563, -4563, 2878, -4563, -4563, -4563, -4563, 1060, 1060, 2893, 2513, 2513, 2513, -4563, 2750, -4563, -4563, 2079, -4563, 2892, 1822, -4563, -4563, 23074, -4563, -4563, 2895, 1876, 1876, -4563, 79126, 1825, 1334, -4563, 1836, 1155, 382, -4563, 2904, -4563, 2916, 540, -4563, -4563, -4563, -4563, -4563, 2909, 2066, 52649, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 2900, 29453, 35603, 2857, -4563, 66035, -4563, -4563, -4563, -4563, -4563, -4563, 66063, 52649, -4563, 2913, 52649, 49063, -4563, 70719, -4563, -4563, 2922, -4563, 2753, -4563, 2751, 2923, 33004, -4563, -4563, 2933, -4563, -4563, -4563, 1196, 23100, -4563, 2925, 2888, -4563, -4563, -4563, -4563, 2924, 2938, 540, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 35603, 32440, 2876, 43833, 1781, 2880, -4563, -4563, 2931, 9583, -4563, -4563, -4563, -4563, -4563, 2936, -4563, -4563, -4563, -4563, -4563, 52649, 66093, 66121, 66392, 66420, 66450, 66478, -4563, -4563, 66749, -4563, 2885, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 2935, 36863, 21647, 21647, 21647, 2067, 26460, 21647, 21647, 21647, 21647, 21647, 26460, 66524, 2950, -4563, 66795, 11084, -4563, -4563, -4563, -4563, 279, 13409, 52649, 2955, 70719, 630, 178, 178, -4563, 52649, 2958, -4563, 49063, 2948, 178, -4563, -4563, 73736, -4563, 48238, -4563, 1792, -4563, 66823, 2079, 73979, 2079, 74222, 2898, -4563, -4563, 920, 2856, 2856, 1876, 1876, 1007, 1007, 2073, -4563, -4563, 342, -4563, 52649, -4563, 2960, 66853, 2075, 52649, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, -4563, 2951, 52649, -4563, 52649, 52649, 39385, 25931, 39385, 51545, -4563, -4563, -4563, 39385, 52649, -4563, 39385, 2959, 52649, -4563, 52649, 52649, -4563, 52649, -4563, -4563, 66881, 2962, 52649, -4563, 52649, 52649, 52649, -4563, 1161, -4563, 51824, 50443, 171, 585, -4563, 2967, -4563, 2964, -4563, 2975, -4563, -4563, -4563, 1187, -4563, 52649, 52188, 31575, -4563, -4563, -4563, 70719, 31575, -4563, -4563, 78521, -4563, -4563, -4563, 78521, 35603, -4563, -4563, 52649, 2981, -4563, -4563, 215, -4563, 2079, -4563, 2079, 78521, -4563, 2840, -4563, -4563, -4563, -4563, -4563, 1060, -4563, 52649, 1876, -4563, 1392, -4563, 2976, 2977, 1322, -4563, -4563, -4563, -4563, -4563, 52649, -4563, -4563, -4563, -4563, -4563, 52649, -4563, 52649, 66927, 2969, 52649, -4563, 52649, 52649, -4563, 35603, -4563, 2978, 67152, 52649, 70719, 2987, 2985, -4563, 277, 52649, 540, -4563, 52649, 52649, -4563, 2989, 22800, 2994, 2997, 2877, 2999, 3001, 710, -4563, 2723, -4563, 1335, -4563, -4563, -4563, -4563, 3006, -4563, -4563, -4563, 2991, 2944, 35603, -4563, -4563, 35226, 1839, 35603, -4563, -4563, 37810, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 39935, 2995, 52649, -4563, 52649, 52649, -4563, 52649, -4563, 39385, -4563, -4563, 52649, 70719, -4563, 3011, -4563, -4563, -4563, 49063, 3004, 3015, 52649, -4563, 74465, -4563, -4563, -4563, 74465, 215, -4563, 2079, -4563, 2079, 74465, 2856, 3017, -4563, -4563, -4563, -4563, -4563, -4563, 1577, -4563, 70719, 52649, 39385, 70719, 52649, 67206, 67234, 67267, 19181, 22227, -4563, -4563, 67303, 2940, 21647, 52649, 67574, 67602, 67632, 67660, -4563, 52649, 67931, 67959, 67989, 68017, 50443, 585, 52649, -4563, -4563, 3016, 198, -4563, 1630, 1690, 2398, -4563, 3019, -4563, 402, -4563, 1876, -4563, 52188, 1187, -4563, -4563, -4563, -4563, -4563, 68063, 52649, 540, 540, 3020, 1253, -4563, -4563, -4563, 1060, -4563, 70719, -4563, -4563, -4563, -4563, -4563, 1322, 3008, -4563, 3021, -4563, 52649, 68288, 68342, 68370, -4563, -4563, 39385, 70719, 35603, 52649, -4563, 3010, 857, -4563, 3013, 3018, 3032, -4563, -4563, -4563, -4563, 24069, -4563, 52649, 52649, 856, 52649, 44934, -4563, 1196, 2036, -4563, 3026, 52649, 35603, -4563, 35603, -4563, 35603, -4563, 52649, -4563, 52649, 52649, -4563, 52649, 68403, 68439, 68710, 68738, 21647, 47227, -4563, 49063, 3027, -4563, 3036, 52649, -4563, -4563, -4563, -4563, -4563, 3039, -4563, -4563, -4563, 52099, -4563, 68768, 46123, -4563, -4563, -4563, -4563, -4563, -4563, 50253, -4563, -4563, -4563, -4563, 51634, -4563, -4563, -4563, -4563, 1711, -4563, 3033, 51824, -4563, 51824, 52649, 52649, 52649, 335, -4563, 51824, 328, 402, 3042, 3043, 176, -4563, 1187, -4563, 41035, 68796, -4563, -4563, 78521, 52649, -4563, -4563, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, 52649, -4563, 3044, -4563, -4563, 52948, -4563, -4563, -4563, 25931, -4563, -4563, -4563, 540, -4563, -4563, -4563, -4563, -4563, -4563, 68842, 69067, 52649, 540, 69113, 3047, -4563, -4563, 52649, -4563, 3034, -4563, 70719, -4563, -4563, -4563, 69141, 69171, 69199, 55557, -4563, -4563, -4563, -4563, -4563, 52649, 3049, 52649, -4563, -4563, -4563, 74465, -4563, 69245, -4563, 52649, -4563, 52649, 52649, 52649, -4563, 52649, 52649, 52649, -4563, 52649, 52649, 426, 52649, -4563, -4563, 3046, 3035, 3040, 3045, 3041, -4563, 225, 3060, 3063, 262, 540, 52649, 402, 402, -4563, -4563, 50533, 41035, -4563, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 70719, 3055, 52649, -4563, 52649, 52649, -4563, 52374, 540, 69470, 540, -4563, 540, -4563, 69516, -4563, -4563, -4563, -4563, 52649, -4563, 52649, 52649, 69544, -4563, -4563, -4563, -4563, -4563, 69574, 69602, 69873, 69901, 69931, 69959, 70230, 70258, 70288, 3050, -4563, 3051, 52649, -4563, -4563, -4563, 52649, -4563, 540, 52649, -4563, 3059, 3071, 3078, 2837, -4563, 35603, 51084, -4563, 70316, 70587, 70615, 1017, 1882, 48513, -4563, 3023, 540, -4563, -4563, -4563, 70645, 70673, 70944, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 52649, -4563, -4563, 3082, 3083, 3088, 1876, 2956, -4563, -4563, 35603, -4563, -4563, -4563, 540, 3081, 540, -4563, -4563, 540, 540, -4563, -4563, -4563, 3090, 2398, 2972, -4563, -4563, 3076, -4563, 3084, -4563, 3086, -4563, 540, 2398, -4563, 3085, 51824, -4563, -4563, -4563, 51824, 1721, 1748, -4563, -4563 }; /* YYPGOTO[NTERM-NUM]. */ static const int yypgoto[] = { -4563, -1312, -3669, -4563, -4563, 3066, -664, -4563, -4563, -4563, -4563, 320, 614, -4563, -7, 3109, 2794, -4563, -4563, -574, 3110, 1008, -111, 256, -4563, -4563, 943, 939, -4563, 1812, 957, -4563, -4563, -4559, -1265, -519, 71, -4563, -4563, 1769, -576, -4563, -4563, -4563, 2780, -486, 77, -4563, -4563, 1756, -4563, -4563, -4563, -4563, -4563, -814, -4563, -4563, -4563, -1865, -1631, -1621, -368, -4563, -2082, -541, -518, -634, -632, -4563, -4563, -4563, -4563, -4563, -4563, 6, -4563, -4563, -487, -527, -578, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 11062, 13576, 14359, 572, 34, 29220, -310, -91, 6050, -4563, -4563, -4563, -682, -4563, 1855, -1040, -4563, -768, 2680, -528, -1502, -4563, -93, -227, -451, -4563, -1757, -4563, 2963, -4563, -4563, -4563, 2177, -4563, -4563, -428, -256, -4563, -4563, -4563, -4563, -4563, -4563, -4563, 9, -15, -419, -4563, -4563, 1828, -4563, -563, -548, -468, -374, -96, -584, -4563, 313, -4563, -203, 2656, -567, -4563, -4562, -4408, -4276, -4011, -2177, -1748, -2157, -1739, -4259, -3941, -582, -4563, -558, -4563, 977, -1816, -4563, -4563, -1573, -1350, -4563, -1339, -1910, -1349, -413, 2181, -4073, -4065, -4563, 2719, -4563, -438, -320, -144, 2869, -4563, 363, -1950, -4563, 2678, -385, 3121, -4563, -735, 58, -4563, -4563, -4563, -4563, -4563, -4563, -1396, -4563, -4563, -1390, -4563, -2261, -3590, -4563, -4563, -712, -127, -331, -566, 1044, -4563, -4563, -4563, -4563, 2122, -4563, -964, -945, -2807, 1221, -4563, -4563, -3207, 4554, -4563, -4563, -4563, -4563, -1226, 1241, -4563, -3895, -4563, -4563, -4563, -1062, -4563, 2165, -4563, -1960, -597, -1158, -1969, -1848, -313, -4563, 2045, -4563, 2040, 22948, -4563, -4563, -1006, -4563, -4563, -4450, -4563, 2099, 1283, 24180, -4563, 4128, 44, -4563, 2886, -170, -515, -124, -186, -484, -4563, -929, 184, 132, -112, 1697, -172, -63, 377, 268, -383, -4563, -4563, 2132, -276, -4563, -4563, 1574, -4563, -4563, 2367, -4, -1450, -1074, -4563, -4563, 2874, -4563, -416, -4563, -4563, -121, 18366, 5300, 1063, -3191, 5604, -4563, -4563, -4563, -4563, -4563, -4563, -384, 6160, 2423, 2490, 2365, 1992, -133, -4563, -347, -343, -1781, -511, -4563, -4563, -4563, 2, 1127, 4, 1129, 8, 1130, 27988, 2647, 2082, -4563, -1141, -4563, 1834, -363, -4563, -4563, -4563, -2651, -4563, -4563, -2086, -4563, -4563, 373, -5, 68, -46, -950, -4563, -1663, 7, 1189, -4563, -4563, -1003, -28, -3480, 2954, -976, 8404, -974, 32842, 500, -134, -4563, -101, -4563, -4563, -888, -4563, -4563, -4563, -1635, -4013, -4393, 1289, -360, 138, -4563, -4563, -4563, -4563, -32, -4563, -553, 314, -4563, -4563, 1435, -4563, -4563, 1827, -4563, -4563, -4563, -4563, 2764, -4563, -4563, -4563, -4563, -4563, -4563, -2211, 2469, -1175, -348, -4563, -1544, -1145, 6398, -477, 33603, -3261, -1160, 2570, 323, -1317, -1131, -522, -4563, -4563, -177, -4563, -3977, -160, -4563, 2360, -907, -4563, -1148, -3395, -4563, 1527, -818, -1713, -3502, -1563, -1915, -1908, -4563, -3288, -4563, -236, -4563, -3431, -1246, -4563, -1238, -4563, -4563, -4126, -2083, 2417, -4563, 1548, 2375, -4563, -959, -4050, -4563, -4563, -1833, -4563, -4563, -1958, -4563, -1823, -4563, -1656, -2130, -4147, -4563, -2088, 152, -4563, -4563, -4563, -4563, -318, -4563, -4563, -4563, -159, -4563, -4563, -4563, -4563, -4563, -4563, -119, -955, -4563, 12269, -21, -50, 492, 10839, 1610, -4563, -4563, -4563, -4563, -4563, -288, -4563, -4563, -273, -4563, -291, -4563, -625, -4563, 1497, -859, -855, -4563, -892, -1524, -3074, -472, -4563, -1733 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -3126 static const yytype_int16 yytable[] = { 140, 498, 372, 353, 1739, 1180, 270, 281, 584, 850, 476, 373, 141, 1495, 1067, 313, 324, 839, 371, 1805, 713, 3557, 2023, 3664, 3497, 713, 1862, 3338, 1069, 374, 3537, 239, 712, 1113, 3940, 3535, 947, 1068, 715, 1339, 1371, 1386, 1414, 3766, 205, 2046, 161, 3938, 209, 3572, 1123, 3987, 728, 3743, 3746, 348, 348, 1888, 2189, 222, 3296, 222, 320, 3229, 222, 435, 1314, 3991, 1315, 231, 231, 426, 238, 3585, 4095, 348, 348, 152, 1859, 155, 163, 1125, 706, 381, 252, 267, 172, 1810, 955, 260, 180, 1994, 173, 288, 522, 1875, 2066, 318, 456, 615, 190, 3812, 614, 4043, 191, 4767, 1277, 1277, 4091, 4600, 482, 4505, 3417, 255, 255, 1910, 1910, 4553, 316, 4601, 319, 1396, 4768, 1398, 4569, 4860, 1380, 1392, 1376, 1341, 948, 379, 379, 310, 1911, 1911, 945, 1382, 1397, 1097, 1351, 140, 154, 140, 959, 796, 2111, 1399, 154, 154, 1925, 3381, 1402, 154, 3275, 501, 1381, 3987, 717, 154, 984, 154, 1297, 154, 222, 222, 222, 4878, 4879, 347, 347, 4282, 516, 3991, 490, 154, 154, 4226, 4227, 363, 3284, 365, 4923, 372, 1342, 1372, 969, 4554, 4649, 347, 347, 4990, 373, 4994, 528, 3491, 307, 551, 3236, 371, 174, 175, 531, 454, 1976, 179, 543, 119, 342, 342, 374, 182, 1484, 187, 461, 189, 468, 1343, 1377, 119, -1226, 348, 5178, 348, 348, 637, 1485, 194, 195, 510, 119, 4025, 569, 331, 161, 637, 1404, 1393, 3457, 149, 119, 1486, 150, 151, 1426, 1158, 1158, 359, 946, 5359, 361, -777, 568, 364, -777, 366, 1155, 375, 1166, 3795, 1167, 278, 1168, 4, 1169, 517, 519, 444, 445, 119, 447, 448, 449, 500, 468, 3370, 594, 550, 1003, 552, 553, 119, 1156, 1156, 119, 1121, 5362, 2, 140, 140, 140, 620, 140, 149, 119, 637, 150, 151, 277, 1073, 3502, 154, 154, 4979, 141, 3502, 2040, 4621, 1734, 140, 154, 1416, 278, 94, 192, 1318, 4053, 4629, 954, 1731, 119, 1564, 233, 3943, 1292, 1292, 3263, 965, 2202, 1570, 685, 1394, -254, 1205, 2056, 347, 1688, 347, 347, 354, 119, 3276, -254, 688, -254, 560, 119, 710, 1510, 234, 1688, 4656, 4448, 179, 189, 3282, 684, 567, 3604, 1009, 1594, 5050, 358, 1640, 196, 4363, 3447, 4560, 285, 94, 957, 4772, -783, -3107, 468, 560, 395, 2195, -3107, 2, 218, 4472, 1735, 1736, 922, 5290, 119, 1901, 3604, 531, 140, 4081, 791, 836, 536, 197, 4561, 539, 1453, -3107, 600, 154, 589, 219, 602, 604, 606, 608, 949, 4496, 40, 3517, 156, 119, 718, 3530, 2, -3057, 154, 198, 4167, 5186, 233, 1009, 331, 5187, 566, 24, 239, 5143, 518, 5148, 348, 571, 3948, 5149, 674, 3741, 677, 355, 395, 5153, 412, 1500, 1768, 796, 39, 5295, 5296, 234, 206, 5062, 426, 491, 157, 5063, 1126, 570, 3945, 5188, 1732, 1769, 231, 1576, 3502, 647, 947, 412, 5073, 238, 507, 4, 962, 188, 426, 647, 426, 462, 426, 4767, 426, 279, 3709, 267, 664, 1977, 1978, 469, 1002, 660, 4149, 859, 122, 4, 5179, 511, 4768, 412, 914, 956, 947, -1226, -1226, -1226, -1226, -1226, -1226, -1226, -1226, -1226, -1226, -1226, 1487, 1757, 681, 1488, 310, 220, 955, 24, 4637, 5179, 4553, 325, 1665, 1889, 328, 280, 5067, 5068, 852, 122, 279, 5295, 5296, 647, 1658, 459, 1067, 1067, 668, 669, 2041, 3651, 119, 469, 347, 54, 953, 412, 1103, 3950, 955, 1120, 1067, 3502, 24, 1113, 1113, 3633, 948, 1068, 1068, 1760, 4, 4325, 945, 206, 1069, 904, -254, 1291, 1291, 1113, 959, 976, 1700, 1068, 280, 307, 4591, 5258, 3651, 4660, 160, 1425, 3683, 5291, 1532, 1889, 1700, 5287, 4554, 986, 948, 1717, 1922, 3504, 1942, 1923, 945, 4649, 719, 720, 1170, 4807, 1758, 1171, 959, 1395, 996, 997, 5052, 1881, 62, 208, 412, 325, 40, 3987, 1757, 564, 1766, 1847, 1452, 1854, 325, 1838, 1942, 722, 4852, 4853, 119, 3900, 119, 3991, 4857, 4858, 1062, 54, 40, 2191, 960, 4273, 4865, 469, 5223, 1959, 1891, 577, 1801, 499, 512, 261, 263, 311, 966, 312, -354, 668, 669, 5189, 119, 1097, 1097, 2, 1759, 3858, 4808, 1844, 62, 962, 962, 1821, 62, 1277, 54, 4730, 946, 1097, 723, 5213, 5351, 1788, 1339, 328, 1993, 533, 1431, 1575, 1307, 1308, 791, 905, 554, 231, 323, 836, 1366, 1366, 1401, 5340, 211, 555, 325, 836, 3706, 1646, 1766, 1882, 1371, 40, 946, 1758, 3502, 1767, 233, 4767, 1917, 1918, 1919, 4767, 557, 1761, 1386, 1277, 1849, 4767, 906, 1430, 321, 322, 1277, 119, 4768, 836, 836, 3744, 4768, 836, 4636, 4638, 5115, 234, 4768, 4438, 341, 341, 954, 1400, 1664, -354, 5116, 3667, 1302, 576, 119, 965, 1412, 632, 281, 1476, 3832, 634, 376, 1310, 1653, 637, 638, 1489, 3909, 3839, 160, 1759, 1341, 1768, 267, 1478, 1503, 1812, 509, -251, 954, 1753, 1920, 1351, 4470, 2169, 1761, 3845, 5301, 965, 1769, 4350, 674, 677, 1380, 922, 1376, 3987, 957, 1767, 255, 227, 1396, 24, 1398, 1382, 328, 509, 1392, 1580, 478, 228, 2021, 3991, 1762, 2165, 964, 1129, 1130, 1397, 1503, 1073, 1073, 119, 1381, 4165, 4, 1342, 1399, 62, 5084, 1739, 957, 1402, 674, 677, 949, 1073, 3987, 325, 5085, 178, 672, 533, 149, 533, 4553, 150, 151, 859, 4553, 4166, 3210, 1372, 3991, 1799, 1645, 615, 119, 1768, 1343, 2033, 614, 4553, 1816, 119, 1817, 1818, 1819, 5075, 949, 1813, 1671, 3783, 1763, 512, 1769, 5234, 3677, 1762, 991, 255, 5225, 3211, 672, 3681, 1377, 119, 1405, 1651, 2, 1292, 1980, 1843, 5226, 674, 677, 2073, 140, 140, 962, 1129, 1130, 3629, 1738, 269, 587, 1749, 588, 914, 1727, 1727, 533, 3647, 1810, 1754, 4554, 1103, 1393, 3917, 4554, 1803, 119, 54, 3924, 1103, 219, 1780, 1784, 2182, 992, 1103, 1892, 4554, 962, 1791, 1793, 1795, 1797, 1763, 1770, 1292, 119, 3689, 3831, 2, 993, 119, 1292, 1683, 288, 1811, 264, 1685, 5060, 1771, 3840, 1688, 1689, 5061, 632, 956, 3690, 5235, 634, 635, 286, 636, 637, 638, 1009, 455, 3923, 40, 140, 140, 953, 3866, 1814, 3868, 1163, 4834, -255, 3268, 3874, 4767, 271, 141, -244, 3272, 261, 263, -255, 119, -255, 1765, 1164, 1416, 1309, 4835, 3279, 348, 4768, 348, 233, 647, 275, 689, 1988, 119, 953, 2, 1394, 690, 691, 964, 964, 964, 1747, 119, 1748, 140, 140, 1103, 664, 1172, 291, 692, 1103, 233, 24, 234, 149, 1009, 1727, 150, 151, 292, 140, 1927, 4836, 1173, 1879, 1929, 3309, 2198, 5411, 3604, 1933, 3315, 395, 620, 3318, 140, 119, 1895, 234, 379, 536, 5292, 2199, 729, 287, 5176, 333, 1727, 851, 1103, 1103, 334, 960, 4721, 1103, 1103, 225, 1103, 1902, 226, 1009, 1174, 119, -318, 3350, 4844, 966, 24, 5324, 120, 1103, 1163, 325, 909, 1163, 1733, 119, 1175, 1981, 2, -3057, 1103, 3367, 255, 121, 594, 960, 3260, 1734, 689, 3366, 674, 677, 2, 315, 690, 691, 347, 1009, 347, 966, 3498, 1992, 4845, 910, 2072, 4848, 3987, 311, 1834, 312, 1994, 3389, 911, 1734, 3392, 323, 3395, 3396, 3397, 1291, 1683, 3569, 3991, 120, 1685, 1686, 4563, 1687, 1688, 1689, 122, 54, 24, 3600, 169, 154, 293, 342, 121, 850, 3419, 3601, 3807, 465, 466, 311, 27, 312, 5366, 5367, 912, 913, 3234, 5378, 486, 5380, 412, 5381, 335, 336, 337, 1735, 1736, 4834, 170, 4899, 4553, -2872, 294, 1291, 2043, 119, 836, 4900, 2, 1163, 1291, 192, 1700, 119, 1889, 5040, 5283, 5283, 5283, 122, 54, 1735, 1736, 647, 3310, 3441, -1227, 325, 3424, 4564, 3987, 1717, 910, 668, 669, -255, 540, 1163, 541, 326, 5412, 911, 664, 4565, 149, 5417, 3991, 150, 151, 333, 4932, 1927, 24, 3623, 357, 1929, 1930, 1142, 1931, 3604, 1933, 964, 119, 925, 412, 927, 24, 1893, 4126, 3919, 4554, 4933, 2093, 383, 540, 384, 541, 5428, 3570, 5430, 3228, 1894, 5431, 5324, -252, 295, 54, 547, 548, 549, 1431, 930, 3224, 164, -252, 964, -252, 165, 5380, 314, 5199, 3571, 1942, 674, 677, 1395, 3243, 1496, 1497, 1411, 3698, 166, 2172, 3393, 412, 962, 5353, 1737, 4105, 947, 1437, 1959, 4111, 947, 231, 2069, 4115, 450, -253, 962, 5365, 2192, 561, 451, 1163, 140, 1103, 4934, -253, 140, -253, 562, 2213, 1737, 2193, 4092, 4129, 362, 24, 3240, 3786, 1727, 119, 3266, 4093, 962, 1366, 1590, 1591, 3541, 1416, 4026, 164, 3266, 3205, 925, 176, 927, 412, 325, 4380, 955, 54, 323, 836, 955, 3790, 3281, 3215, 4896, 836, 1067, 1366, 2170, 377, 4935, 54, 3801, 979, 4932, 5399, 836, 3791, 930, 5400, 4936, 1401, 5402, 3469, 3803, 1113, 940, 1700, 3802, 1068, 3649, 4618, 329, 4618, 4622, 4933, 1721, 1722, 948, 1163, 3804, 2185, 948, 4618, 945, 3650, 1717, 149, 945, 332, 150, 151, 959, 5078, 4640, 3829, 959, 3915, 5421, 360, 836, 3587, 5079, 3987, 4204, 836, 382, 1650, 836, 4054, 1400, 156, 3925, 119, 3345, 3345, 3345, 4618, 172, 3991, 4205, 4206, 5097, 3242, 173, 3545, 4121, 3547, 3493, 3549, 5057, 3551, 3651, 54, 925, 4127, 927, 4207, 836, 446, -1227, 4934, 632, 4287, 3803, 1163, 634, 635, 255, 636, 637, 638, 4508, 157, 3801, 156, 836, 455, 412, 4288, 4312, 4425, 930, 3230, 1942, 1734, 3209, 311, 940, 312, 4452, 1097, -1227, -1227, -1227, -1227, -1227, -1227, -1227, -1227, -1227, -1227, -1227, 1959, 3423, 4082, 836, -252, 680, 836, 412, 836, 836, 836, 323, 630, 946, 157, 631, 4936, 946, 668, 669, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1383, 836, 1384, 273, 149, 3803, 1277, 150, 151, 283, 412, 1314, 457, 1315, 1891, 1891, 16, -253, 17, 2104, 2105, 4453, 1277, 3665, 1277, 1735, 1736, 3666, 1385, 1277, 5200, 5201, 5202, 5203, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5211, 5212, 3665, 1163, 119, 119, 4231, 540, 485, 541, 486, 954, 1977, 1978, 3801, 954, 178, 940, 149, 4468, 965, 150, 151, 474, 965, 540, 3833, 541, 475, 4772, 4475, 3836, 3495, 115, 3799, 3800, 844, 3803, 148, 537, 3843, 1985, 1986, 1163, 4840, 233, 3801, 119, 5191, 488, 2, 3720, 3574, 4476, 489, 488, 188, 1734, 1998, 4493, 3286, 186, 4499, 957, 458, 859, 4134, 957, 3803, 4773, 3575, 964, 234, 3665, 844, 3871, 1073, 4806, 1163, 4206, 3877, 3422, 115, 3880, 4500, 964, 426, 5193, 426, 115, 426, 4206, 426, 115, 4615, 4625, 467, 940, 845, 846, 3801, 949, 3803, 3539, 852, 949, 255, 4626, 3540, 3906, 4774, 964, 115, 115, 3210, 460, 4679, 1163, 4680, 341, 4135, 4136, 16, 3801, 17, 964, 3602, 3803, 847, 22, 115, 1735, 1736, 4716, 4775, 647, 845, 846, 4201, 4734, 3803, 4618, 4618, 4735, 848, 3211, 3494, 4618, 4618, 164, 4137, 661, 662, 663, 664, 4618, 5183, 32, 1738, 4869, 3501, 3803, 1861, 3932, 1408, 962, 847, 1409, 3933, 962, 463, 5177, 3513, 909, 36, 3561, 119, 5279, 479, 2, -3057, 4274, 848, 1292, 3940, 493, 115, 5443, 3527, 3553, 24, 3532, 1780, -3125, 3562, 3959, 1780, 325, 5177, 1292, 3960, 1292, 3426, -244, 910, 1682, 1292, 115, 115, 3427, 3537, 533, 4216, 911, 5444, 494, 4527, 4217, 3665, 1318, 5298, 4528, 4863, 325, 497, 4589, 119, 115, 115, 3572, 4590, 3803, 4594, 4914, 4661, 4958, 296, 4595, 3506, 4662, 3872, 953, 3665, 3572, 502, 953, 4997, 120, 3572, 982, 115, 912, 913, 4148, 1427, 503, 4150, 1428, 4661, 1892, 1892, 3528, 121, 4664, 488, 1129, 1130, 3585, -2873, 4687, 298, 3564, 4887, 140, 140, 488, 3542, 4888, 3507, 3508, 4895, 119, 299, 140, 2, 3652, 4165, 504, 1103, 3803, 3768, 4898, 3668, 5125, 344, 352, 426, 3565, 4146, 1129, 1130, 140, 3966, 149, 3348, 3349, 150, 151, 140, 122, 54, 3526, 3987, 1727, 150, 151, 5285, 5286, 2190, 24, 1727, 39, 3567, 2016, 115, 2017, -536, 1103, 3991, 1103, 148, 505, 3665, 4351, 4593, 960, 5413, 1681, 4596, 960, 1682, 3627, 511, 1103, 3209, 311, 115, 312, 544, 966, 4411, 1656, 1657, 966, 1660, 1661, 1662, 5441, 1666, 1667, 3659, 5442, 5180, 5181, 5182, 3568, 169, 1672, 1673, 1674, 2016, 1999, 2019, 115, 2000, 115, 115, 300, 4370, 545, 4371, 3266, 4353, 572, 301, 302, 3922, 303, 367, 2015, 3266, 1756, 1682, 4208, 2025, 4209, 170, 2000, 3760, 1772, 2026, 558, 836, 2000, 559, 1787, 2027, 836, 573, 2000, 1683, 3244, -250, 578, 1685, 1686, 836, 1687, 1688, 1689, 628, 579, 601, -3039, 24, 3288, 2028, 603, 148, 2000, 1291, 3351, 533, 605, 11, 2180, 325, 607, 2181, 54, 540, 2184, 541, 627, 2185, 412, 1291, 4130, 1291, 4131, 2000, 836, 2000, 1291, 4132, 4133, 836, 2000, 2000, 836, 671, 4177, 4183, 119, 4178, 4184, 2, 4618, 5239, 676, 4246, -774, 4618, 4247, -774, -775, 3652, 16, -775, 17, 5064, 120, 5240, 304, 305, 836, 1927, 672, 115, 673, 1929, 1930, 679, 1931, 3604, 1933, 121, 1863, 214, 682, 4423, 4467, 1868, 4424, 4424, 4714, 4810, 4820, 4424, 4424, 4424, 964, 683, 4906, 4975, 964, 4907, 4424, 3373, 3921, 5011, 686, -776, 5012, 115, -776, 800, 842, 687, 115, 696, 5091, 903, 697, 699, 3554, 115, 115, 115, 703, 701, 1905, 1906, 122, 54, 704, 705, 711, 5107, 1914, 716, 3911, 726, 123, 124, 731, 843, 861, 974, 125, 126, 510, 979, 1431, 3428, 127, 981, 985, 1431, 994, 2046, 987, 43, 1982, 44, 991, 4432, 4181, 998, 999, 1000, 1001, 1118, 1128, 115, 1119, 1136, -759, 1117, 1135, 128, 129, 1176, 1161, 1179, 962, 1181, 51, 1203, 231, 1204, 1207, 962, 1127, 1430, -3049, 24, 1298, 1299, 1430, 1304, 130, 131, 132, 133, 134, 135, 136, 137, 1300, 903, 3532, 2213, 1319, 1301, 1403, 1406, 1424, 1456, 2213, 1459, 4412, 4413, 4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421, 4422, 851, 1462, 4763, 1963, 4765, 412, 1460, 1463, 1461, 1467, 1468, 1469, 1470, 2046, 1471, 1479, 1700, 1483, 1492, 1493, 1579, 120, 1502, 3910, -2494, 412, 1584, 3561, 1196, 1587, 1595, 3510, 1714, 1715, 1716, 1717, 121, 3920, -868, 1588, 1643, 3926, 1647, 1675, 1678, 4537, 3562, 3930, 1496, 1497, 3245, 3246, 3247, 3248, 3249, 3250, 3251, 3252, 3253, 3254, 3255, 1679, 1726, 1296, 1296, 1752, 1764, 1750, 1590, 1591, 3352, 3353, 3354, 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362, 3556, 5107, 122, 54, 4673, 1773, 1785, 2046, 1786, 1790, 115, 1942, 1789, 115, 115, 115, 1792, 1794, 1796, 1798, 278, 1800, 1802, 1806, 1815, 1822, 3610, 1956, 1957, 1958, 1959, 1824, 632, 1828, 115, 1826, 634, 635, 1827, 636, 637, 638, 3564, 1850, 639, 115, 640, 1829, 1852, 1851, 1853, 800, 1864, 1865, 1867, 1869, 512, 1874, 1876, 800, 1883, 1880, 1884, 1898, 1899, 800, 800, 1987, 3565, 4146, 1129, 1130, 2196, 1900, 800, 800, 1915, 412, 115, 1916, 4511, 1903, 1924, -791, 1989, 4549, 1991, 4551, 2014, -247, 1163, 2022, 2057, 3567, 2024, 2058, 644, 2059, 2061, 2076, 2079, 800, 2080, 800, 2084, 2085, 2086, 3687, 842, 2087, 2094, 2088, 3691, 2098, 2101, 2102, 842, 2107, 2168, 3664, 1721, 1722, 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438, 3439, 2108, 2109, 2173, 3568, 2194, 3813, 2197, 165, 241, 242, 2203, 2214, 3206, 842, 842, 1759, 645, 842, 3218, 1763, 3207, 3221, 3216, 3222, 3231, 3232, 115, 243, 244, 245, 246, 247, 248, 3219, 115, 3233, 3259, 3265, 1964, 3285, 3283, 3287, 903, 903, 903, 903, 903, 903, -2491, 903, 903, 3305, 249, 3308, 3319, 3371, 250, 3398, 903, 903, 903, 3365, 3390, 251, 3391, -874, 3440, 3425, 4786, 3448, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 3465, 148, 148, 3467, 964, 3472, 1747, 3500, 3954, 3509, 4759, 964, 115, 3502, 3505, 3511, 3514, 3515, 3516, 1009, 1117, 3518, 3522, 3519, 3520, 3523, 3524, 3525, 1117, 3529, 115, 3544, 3596, 3622, 1117, 115, 3538, 3597, 3546, 3638, 3633, 3548, 3550, 3552, 3558, 2046, 3555, 5406, 412, 3688, 3603, 3634, 3635, 4108, 3598, 3599, 3636, 3637, 3669, 3673, 3675, 3679, 3680, 3686, 115, 3692, 647, 3693, 3694, 3695, 115, 3696, 3940, 3699, 3940, 3717, 3718, 3722, 148, 659, 660, 3761, 661, 662, 663, 664, 5427, 3762, 3763, 4144, 3764, 668, 669, 3611, 3612, 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620, 3621, 1117, 115, 1117, 3765, 1117, 1117, 3789, 1117, 3784, 1117, 1117, 3785, 3796, 3827, 3828, 3846, 1244, 3867, 3870, 3881, 148, 148, 1117, 3907, 3912, 2046, 3908, 1117, 3961, 3927, 3967, 149, 3934, 3941, 150, 151, 1089, 148, 3957, 4364, 4365, 3958, 3965, 1417, 3972, 3850, 3931, 3985, 3999, 1117, 1117, 1117, 148, 3997, 4003, 4000, 412, 4019, 4004, 4013, 4014, 115, 4023, 4020, 4327, 4028, 1117, 1117, -316, 4537, 4029, 1117, 1117, 4030, 1117, 4045, 3956, 4056, 4072, 4085, 4087, 4090, 4088, 4096, 4102, 6, 4103, 1117, 7, 4109, 4099, 2046, 4113, -2331, 4957, 4123, 4119, 4122, 1117, 2104, 2105, 3814, 3815, 3816, 3817, 3818, 3819, 3820, 3821, 3822, 3823, 3824, 4143, 4145, 115, 4151, 115, 4152, 4182, 4210, 4153, 4164, 4199, 4212, 4218, 115, 4220, 3449, 3450, 3451, 3452, 3453, 3454, 4211, 3459, 3460, 3461, 3462, 3463, 3464, 4221, 3918, 4222, 3470, 3471, 4223, 3473, 3474, 3475, 3476, 3477, 3478, 3479, 3480, 3481, 3482, 3483, 3484, 3485, 3486, 3487, 3488, 3489, 3490, 4224, 3492, 19, 20, 4700, 4701, 119, 4225, -74, 2, 4241, -74, 4250, 25, 26, -786, 4289, 4511, 4331, 3537, 4269, 3537, 4270, 4271, 4278, 1320, 4279, -74, 4301, 4302, 4310, 4329, 4348, 1416, 4332, 4340, 4341, 4354, 4357, 4373, 4377, 4382, 4388, 1855, 4383, 4396, 35, 4409, 4479, 4516, 4506, 4522, 240, 4523, 37, 4526, 156, 4529, 844, 4532, 6, 4540, 4545, 7, 4555, 4541, 4556, 8, 4557, 1296, 4558, 4559, 4592, 4580, 4570, 4597, 4628, 4647, 800, 4149, 4167, 800, 800, 4581, 45, 4599, 4631, 4650, 4653, 4676, 800, 800, 3993, 5049, 4684, 4685, 4686, 4690, 157, 4747, 4750, 488, 4743, 2041, 4799, 4811, 4813, 4822, 12, 13, 119, 4815, 4825, 2, 4831, 4832, 241, 242, 4833, 1296, 845, 846, 842, 4842, 389, 4867, 1296, 4759, 4877, 4849, 3996, 3569, 3661, 4876, 4884, 243, 244, 245, 246, 247, 248, 19, 20, 4880, 4886, 4890, 4902, 2202, 4868, 24, 847, 115, 25, 26, 1187, 148, 1117, 4903, 4905, 148, 249, 4909, 115, 4915, 250, 4919, 848, 4518, 4519, 4924, 4521, 251, 4925, 1914, 4930, 4946, 115, 4432, 4785, 395, 4949, -784, 33, 34, 4955, 35, 4960, 1914, 4959, 241, 242, 4969, 4977, 37, 38, 4369, 4970, 4983, 3993, 4988, 4991, 5015, 115, 41, 5003, 42, 120, 5018, 243, 244, 245, 246, 247, 248, 5055, 5029, 115, 4285, 5035, 5054, 5056, 121, 5066, 45, 5074, 5087, 5080, 5081, 5092, 5095, 5096, 5104, 48, 249, 50, 5110, 4044, 250, 5111, 5112, 5113, 1089, 5114, 5120, 251, 183, 5117, 184, 5119, 1089, 5121, 5132, 5140, 24, 3570, 1089, 5144, 5145, 5154, -2492, 5185, 5177, 5198, 5216, 115, 5215, 4118, 5224, 122, 54, 5227, 1188, 1856, 800, 5229, 5228, 5243, 3571, 5260, 5259, 1067, 5263, 5280, 5293, 5294, 947, 5314, 592, 593, 5326, 842, 5337, 5355, 4932, 1069, 5354, 842, 5356, 5174, 1113, 5358, 5360, 5357, 1068, 5361, 5370, 5403, 842, 5398, 5397, 1189, 4071, 4744, 5404, 1927, 1928, 4748, 5426, 1929, 1930, 5405, 1931, 3604, 1933, 5422, 5423, 1934, 5296, 1935, 5416, 5424, 5429, 5433, 5435, 5437, 5436, 5438, 955, 1196, 1190, 212, 167, 3914, 171, 5440, 546, 800, 1089, 800, 800, 2183, 842, 1089, 800, 800, 800, 842, 800, 800, 842, 3916, 3217, 3220, 4389, 4689, 5155, 5013, 574, 1191, 408, 409, 410, 5010, 54, 411, 4256, 2171, 4950, 1939, 948, 4160, 800, 800, 800, 800, 945, 727, 1820, 453, 842, 4179, 1089, 1089, 959, 3208, 983, 1089, 1089, 3935, 1089, 5150, 4384, 4996, 4862, 4510, 1097, 4854, 842, 1835, 530, 978, 714, 1089, 4142, 232, 4375, 4904, 4901, 4355, 3759, 1913, 4675, 3745, 1089, 4308, 1871, 5281, 4739, 4633, 1196, 1891, 1940, 2032, 3707, 542, 2030, 4579, 842, 4180, 3420, 842, 1648, 842, 842, 842, 1926, 4697, 1569, 565, 1444, 1659, 2065, 3968, 3847, 3969, 3848, 3953, 3849, 1160, 3970, 2020, 3227, 4657, 3947, 4639, 3809, 842, 520, 4641, 4571, 5077, 3747, 4623, 3239, 4624, 115, 837, 115, 4809, 1277, 1504, 5024, 4798, 4057, 3647, 3499, 4502, 5041, 5289, 5282, 4098, 4846, 4841, 4198, 1751, 5401, 1655, 946, 3496, 1730, 4651, 5238, 5328, 5231, 5118, 5432, 5415, 4154, 4147, 4163, 903, 903, 903, 903, 903, 903, 1196, 903, 903, 903, 903, 903, 903, 3591, 922, 4587, 903, 903, 4586, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 4307, 903, 0, 0, 5237, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 1942, 0, 0, 1073, 0, 954, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 965, 1955, 1956, 1957, 1958, 1959, 115, 0, 0, 0, 0, 0, 123, 124, 4847, 0, 0, 0, 125, 126, 0, 0, 0, 0, 127, 0, 115, 0, 0, 0, 115, 0, 0, 4584, 0, 0, 0, 4162, 0, 0, 0, 0, 3574, 957, 0, 0, 0, 0, 1277, 128, 129, 1639, 0, 4161, 0, 0, 0, 0, 0, 0, 3575, 0, 914, 4754, 0, 0, 4117, 115, 0, 1089, 130, 131, 132, 133, 134, 135, 136, 137, 0, 0, 0, 949, 0, 119, 3993, 0, 0, 5131, 0, 0, 0, 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4083, 0, 148, 148, 0, 297, 0, 0, 713, 5375, 0, 800, 148, 4298, 3658, 4984, 1292, 1117, 4328, 0, 4362, 0, 298, 0, 4283, 4284, 0, 4157, 0, 4086, 148, 0, 0, 0, 299, 1892, 0, 148, 0, 0, 962, 0, 0, 3553, 4101, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 1117, 0, 1117, 0, 0, 0, 1784, 0, 0, 5375, 0, 1780, 0, 0, 0, 1784, 1117, 3554, 1117, 1117, 1117, 1117, 1117, 1196, 1117, 1117, 1117, 1117, 1117, 1117, 0, 0, 1117, 0, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 0, 1117, 0, 4156, 0, 0, 4108, 0, 953, 0, 0, 0, 0, 0, 0, 0, 4172, 4176, 0, 1117, 533, 300, 0, 0, 0, 0, 0, 1103, 301, 302, 4124, 303, 0, 0, 4510, 533, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4770, 4771, 0, 0, 3993, 0, 1292, 0, 0, 0, 140, 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3652, 3652, 0, 1103, 947, 1103, 947, 0, 947, 1103, 4237, 3993, 0, 0, 0, 0, 3658, 0, 0, 0, 0, 960, 0, 0, 0, 0, 0, 4255, 4255, 0, 0, 0, 0, 1103, 0, 966, 5051, 5053, 842, 4359, 0, 0, 0, 842, 0, 0, 304, 305, 0, 0, 5059, 0, 842, 0, 0, 3955, 955, 0, 955, 4214, 955, 0, 4275, 0, 3962, 0, 1296, 3963, 0, 0, 0, 4566, 4566, 0, 1291, 1196, 0, 0, 0, 0, 0, 0, 1296, 0, 1296, 800, 0, 842, 0, 1296, 800, 800, 842, 800, 800, 842, 0, 0, 948, 0, 948, 0, 948, 1981, 945, 0, 945, 0, 945, 0, 267, 0, 959, 0, 959, 0, 959, 800, 800, 800, 800, 842, 0, 0, 3952, 0, 0, 4142, 0, 3587, 3587, 0, 0, 0, 533, 0, 1277, 0, 0, 115, 0, 0, 0, 0, 0, 1683, 1684, 0, 0, 1685, 1686, 0, 1687, 1688, 1689, 0, 4385, 1690, 0, 1691, 1692, 0, 115, 0, 1693, 0, 1694, 0, 0, 115, 0, 0, 0, 4358, 0, 4361, 0, 0, 0, 4366, 0, 4368, 0, 0, 1683, 0, 0, 0, 1685, 1686, 0, 1687, 1688, 1689, 0, 0, 1690, 964, 1691, 0, 3554, 0, 0, 0, 0, 0, 0, 0, 0, 1695, 0, 2164, 0, 0, 0, 0, 946, 0, 946, 1291, 946, 0, 0, 0, 1431, 1431, 4428, 0, 0, 0, 4436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5175, 0, 0, 0, 0, 0, 0, 1695, 0, 5184, 4779, 0, 1696, 962, 4509, 713, 3553, 5192, 0, 0, 0, 1697, 0, 0, 1430, 1430, 0, 0, 0, 140, 4746, 0, 0, 0, 140, 4751, 0, 4753, 0, 0, 2213, 0, 0, 0, 0, 954, 1727, 954, 1699, 954, 0, 0, 0, 267, 965, 0, 965, 3993, 965, 0, 1697, 3215, 0, 0, 0, 0, 0, 4897, 0, 0, 0, 0, 0, 0, 0, 0, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4360, 0, 0, 957, 0, 957, 4367, 957, 0, 0, 0, 1891, 0, 0, 5004, 4547, 0, 4378, 0, 1292, 0, 1089, 0, 1089, 0, 0, 0, 0, 0, 836, 0, 0, 0, 0, 0, 0, 4576, 1089, 0, 0, 0, 949, 0, 949, 1089, 949, 0, 0, 5288, 0, 0, 0, 0, 3993, 0, 5297, 0, 0, 1700, 4588, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 947, 0, 1718, 1927, 0, 1719, 0, 1929, 1930, 0, 1931, 3604, 1933, 0, 1089, 1934, 947, 1935, 947, 1700, 0, 0, 796, 1738, 0, 0, 0, 962, 0, 962, 0, 962, 1712, 1713, 0, 1714, 1715, 1716, 1717, 4642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 955, 0, 1780, 0, 1780, 0, 1780, 0, 0, 0, 0, 0, 0, 0, 5352, 1939, 955, 1639, 955, 0, 0, 0, 0, 1639, 0, 0, 0, 0, 0, 0, 4566, 4566, 0, 4881, 4882, 4883, 0, 267, 0, 0, 0, 0, 948, 0, 0, 4663, 1639, 1639, 945, 0, 0, 953, 0, 953, 0, 953, 959, 0, 948, 0, 948, 0, 0, 0, 945, 0, 945, 0, 1940, 0, 0, 4258, 959, 0, 959, 4259, 0, 0, 1103, 0, 1103, 1103, 140, 0, 140, 0, 0, 0, 0, 0, 1103, 0, 4572, 1639, 140, 0, 0, 0, 3652, 3652, 3652, 1103, 3652, 0, 0, 0, 0, 1103, 4951, 1103, 0, 0, 0, 0, 4646, 4585, 4237, 0, 0, 4237, 1103, 0, 0, 1103, 1103, 140, 1103, 0, 0, 0, 0, 3993, 0, 0, 0, 964, 1291, 1727, 3554, 0, 0, 0, 0, 0, 0, 960, 0, 960, 0, 960, 0, 0, 0, 0, 4749, 512, 0, 5434, 0, 966, 946, 966, 0, 966, 4630, 0, 0, 1892, 5439, 0, 154, 0, 0, 0, 0, 0, 946, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4989, 0, 1431, 0, 325, 1942, 1431, 0, 0, 0, 0, 0, 0, 0, 0, 4509, 0, 0, 1954, 0, 1955, 1956, 1957, 1958, 1959, 0, 0, 0, 4583, 0, 0, 0, 0, 0, 0, 962, 954, 962, 962, 0, 0, 0, 0, 1430, 0, 965, 0, 1430, 0, 0, 0, 0, 954, 0, 954, 140, 0, 0, 0, 0, 4931, 965, 2213, 965, 2213, 2213, 0, 0, 0, 0, 267, 267, 0, 0, 4780, 0, 0, 0, 0, 0, 947, 0, 0, 0, 947, 0, 0, 0, 957, 0, 0, 0, 0, 4889, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 957, 0, 957, 0, 0, 0, 0, 0, 0, 4870, 0, 0, 0, 4745, 0, 0, 0, 0, 0, 0, 4752, 0, 949, 964, 0, 964, 0, 964, 955, 0, 0, 0, 955, 0, 0, 0, 0, 0, 949, 0, 949, 0, 348, 0, 0, 955, 0, 0, 0, 0, 0, 5027, 0, 0, 0, 0, 4566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 948, 0, 0, 0, 948, 0, 945, 0, 0, 0, 945, 0, 0, 0, 959, 0, 962, 948, 959, 0, 0, 0, 1738, 945, 0, 0, 0, 0, 0, 0, 0, 959, 962, 0, 962, 1103, 1103, 140, 0, 0, 4779, 1103, 1103, 1780, 0, 0, 0, 4948, 0, 1103, 1103, 0, 119, 1103, 0, 2, 0, 0, 0, 1780, 5139, 1780, 5141, 5142, 0, 0, 389, 0, 0, 5147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, 0, 0, 0, 953, 0, 4839, 0, 1187, 0, 0, 4172, 0, 0, 0, 0, 4176, 0, 0, 0, 953, 0, 953, 0, 0, 0, 0, 0, 0, 0, 946, 0, 0, 0, 946, 0, 0, 342, 0, 1103, 0, 0, 0, 119, 0, 0, 2, 946, 0, 0, 0, 0, 0, 4987, 0, 119, 0, 389, 2, 0, 0, 0, 0, 2164, 0, 0, 0, 0, 0, 389, 0, 0, 4937, 4237, 0, 4891, 4892, 0, 4985, 4986, 4582, 5103, 0, 4255, 0, 0, 4992, 1187, 4566, 0, 0, 1103, 1103, 0, 0, 0, 0, 0, 960, 1187, 954, 0, 0, 5106, 954, 0, 0, 24, 2164, 965, 1093, 0, 966, 965, 960, 0, 960, 954, 485, 964, 486, 964, 964, 0, 1431, 1188, 965, 0, 966, 0, 966, 4228, 0, 4230, 5262, 0, 0, 4233, 0, 3993, 0, 0, 0, 0, 5299, 0, 0, 0, 0, 0, 962, 0, 957, 0, 0, 0, 957, 947, 962, 0, 962, 1914, 1639, 0, 3705, 1430, 0, 0, 0, 957, 0, 0, 0, 0, 0, 533, 5082, 2213, 0, 0, 0, 0, 0, 0, 0, 2213, 24, 2213, 0, 0, 949, 267, 0, 1190, 949, 0, 5009, 5009, 24, 0, 119, 4780, 0, 2, 1188, 5083, 0, 949, 0, 955, 0, 0, 0, 0, 389, 0, 1188, 0, 0, 0, 0, 0, 1191, 408, 409, 410, 0, 54, 411, 5214, 0, 5098, 0, 0, 5101, 5102, 0, 0, 0, 0, 0, 115, 0, 3294, 1187, 0, 0, 0, 0, 5339, 5369, 948, 0, 0, 962, 3379, 0, 945, 962, 0, 0, 0, 0, 0, 0, 959, 0, 5005, 5006, 0, 0, 962, 1190, 1103, 964, 0, 0, 0, 1103, 5106, 0, 1780, 0, 0, 1190, 1780, 1103, 0, 0, 0, 964, 0, 964, 5070, 0, 0, 0, 5146, 1780, 0, 0, 1191, 408, 409, 410, 0, 54, 411, 0, 0, 0, 0, 0, 1191, 408, 409, 410, 0, 54, 411, 0, 0, 0, 0, 0, 0, 5387, 0, 0, 0, 953, 0, 0, 0, 953, 0, 0, 1103, 0, 0, 0, 0, 0, 24, 0, 0, 3652, 953, 5100, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 1188, 0, 0, 4937, 0, 0, 0, 0, 946, 0, 0, 0, 0, 0, 1103, 0, 0, 1103, 0, 1103, 0, 4572, 0, 0, 0, 0, 0, 962, 0, 0, 0, 962, 0, 0, 0, 0, 0, 962, 0, 3455, 0, 0, 0, 0, 0, 4823, 0, 0, 0, 0, 0, 0, 0, 0, 2213, 0, 0, 0, 2213, 5070, 0, 0, 0, 960, 2213, 0, 0, 960, 1190, 0, 0, 0, 0, 4780, 0, 0, 0, 966, 954, 0, 960, 966, 0, 0, 0, 0, 0, 965, 0, 5261, 0, 0, 0, 0, 966, 0, 0, 1191, 408, 409, 410, 115, 54, 411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4872, 0, 4874, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 1093, 0, 5196, 5197, 957, 0, 1093, 0, 0, 964, 4885, 0, 0, 0, 0, 0, 0, 964, 0, 964, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 1103, 634, 635, 836, 636, 637, 638, 0, 0, 639, 0, 640, 949, 1103, 0, 0, 642, 4937, 643, 0, 0, 4937, 140, 0, 0, 0, 1103, 0, 1103, 0, 1103, 0, 0, 0, 5241, 0, 800, 148, 0, 0, 800, 0, 0, 0, 800, 842, 0, 0, 5338, 0, 0, 0, 0, 4498, 0, 115, 0, 0, 341, 0, 0, 644, 0, 0, 800, 4893, 0, 0, 1093, 0, 0, 0, 0, 1093, 0, 0, 962, 0, 115, 0, 0, 0, 0, 964, 632, 633, 0, 964, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 0, 964, 115, 0, 1780, 0, 0, 0, 0, 0, 836, 0, 0, 1093, 1093, 645, 0, 0, 1093, 1093, 0, 1093, 0, 0, 1117, 1196, 119, 0, 0, 2, 0, 5319, 0, 0, 1093, 0, 0, 0, 0, 0, 389, 4937, 962, 0, 0, 1093, 0, 0, 0, 644, 0, 0, 0, 953, 148, 0, 148, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 325, 119, 2213, 1187, 2, 0, 4999, 0, 5001, 0, 0, 0, 0, 0, 1117, 389, 1117, 4644, 0, 4645, 1117, 115, 0, 0, 0, 0, 0, 0, 0, 0, 4652, 0, 5363, 4655, 0, 645, 4658, 0, 0, 0, 0, 0, 0, 0, 1117, 1187, 0, 0, 0, 0, 0, 964, 0, 0, 0, 964, 0, 0, 0, 0, 4937, 964, 4937, 0, 4937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 960, 0, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 966, 661, 662, 663, 664, 5363, 0, 0, 24, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 4937, 0, 0, 0, 5071, 4937, 5072, 1188, 0, 0, 0, 0, 0, 1505, 1506, 0, 3257, 1507, 1508, 3258, 1509, 1510, 1511, 0, 0, 1513, 0, 1514, 1515, 0, 0, 24, 1516, 1103, 1517, 0, 0, 4937, 0, 4937, 1518, 0, 4937, 4937, 0, 0, 3856, 0, 0, 1188, 0, 0, 0, 647, 0, 0, 0, 0, 4937, 652, 653, 654, 655, 656, 657, 658, 659, 660, 1296, 661, 662, 663, 664, 0, 0, 1190, 533, 1519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1093, 3705, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5425, 0, 1191, 408, 409, 410, 0, 54, 411, 0, 0, 0, 0, 0, 0, 1190, 0, 0, 0, 1520, 0, 0, 0, 1521, 0, 0, 0, 0, 1522, 5151, 0, 5152, 0, 1523, 0, 0, 0, 0, 0, 0, 0, 964, 1524, 0, 1191, 408, 409, 410, 0, 54, 411, 0, 0, 0, 0, 1525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, -74, 148, 0, -74, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1320, 0, 0, 0, 1830, 0, 1830, 0, 1830, 1830, 0, 1830, 0, 1830, 1830, 1526, 1527, 0, 0, 964, 0, 0, 0, 1528, 1296, 0, 4866, 0, 0, 0, 0, 0, 0, 844, 0, 0, 0, 0, 0, 1529, 1530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 800, 0, 800, 1830, 1830, 1830, 800, 1531, 0, 800, 800, 800, 0, 800, 800, 800, 800, 800, 0, 0, 0, 0, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0, 1546, 1547, 1548, 1549, 0, 0, 1550, 845, 846, 1551, 0, 0, 0, 1552, 774, 1553, 1554, 0, 0, 0, 0, 0, 1555, 1556, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 847, 0, 0, 0, 0, 0, 0, 903, 0, 0, 0, 0, 0, 0, 0, 0, 848, 0, 0, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4952, 4954, 0, 0, 0, 0, 0, 0, 0, 241, 242, 0, 0, 0, 842, 0, 0, 0, 0, 0, 0, 115, 0, 115, 0, 115, 0, 0, 243, 244, 245, 246, 247, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1089, 0, 1089, 0, 0, 0, 1089, 249, 1683, 1684, 0, 250, 1685, 1686, 0, 1687, 1688, 1689, 251, 0, 1690, 0, 1691, 0, 0, 0, 0, 0, 0, 115, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1117, 0, 1117, 1117, 148, 0, 148, 0, 0, 0, 0, 0, 1117, 0, 0, 0, 148, 0, 0, 0, 0, 1695, 0, 1117, 0, 0, 0, 0, 1639, 1117, 0, 1117, 1639, 0, 0, 0, 0, 0, 115, 1639, 0, 115, 1117, 0, 0, 1117, 1117, 148, 1117, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 0, 0, 0, 0, 642, 1639, 643, 0, 1117, 0, 1697, 1639, 0, 0, 1639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1639, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1639, 0, 0, 800, 800, 800, 0, 0, 800, 800, 0, 800, 800, 800, 800, 800, 0, 0, 0, 0, 0, 0, 1639, 0, 0, 1639, 0, 1296, 1639, 1639, 1639, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 115, 1639, 115, 115, 0, 0, 0, 0, 0, 5122, 1093, 0, 5124, 0, 5126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1700, 0, 0, 0, 0, 1196, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 0, 0, 1093, 0, 1093, 800, 0, 0, 0, 0, 800, 0, 0, 0, 0, 85, 0, 0, 1093, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 85, 647, 1093, 0, 85, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 256, 259, 0, 0, 0, 0, 1117, 1117, 148, 0, 5222, 0, 1117, 1117, 115, 0, 0, 0, 85, 0, 1117, 1117, 0, 0, 1117, 0, 0, 0, 0, 0, 115, 0, 115, 0, 0, 0, 5245, 0, 5246, 0, 5247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 343, 343, 0, 1117, 0, 0, 0, -355, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 1196, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1117, 1117, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1089, 0, 1089, 1089, 0, 0, 0, 0, 0, 1831, 0, 1836, 1089, 1839, 1840, 0, 1841, 0, 1845, 1846, 0, 0, 0, 1089, 0, 0, 0, 0, 0, 1089, 0, 1089, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 1089, 0, 0, 1089, 1089, 0, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1885, 1886, 1887, 0, 0, 0, 525, 0, 115, 19, 20, 0, 0, 0, 0, 0, 115, 24, 115, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1639, 0, 0, 1639, 33, 34, 0, 35, 0, 0, 1639, 800, 0, 800, 0, 37, 38, 156, 800, 0, 0, 800, 0, 0, 0, 41, 0, 42, 0, 0, 0, 0, 0, 2164, 0, 2164, 0, 0, 1639, 0, 0, 2164, 0, 0, 1639, 45, 0, 1639, 0, 0, 0, 0, 0, 0, 253, 0, 50, 0, 1117, 157, 0, 0, 0, 1117, 0, 0, 115, 183, 0, 184, 115, 1117, 0, 1639, 0, 0, 0, 0, 1830, 1830, 1830, 1830, 1830, 115, 1830, 1830, 1830, 1830, 1830, 1830, 0, 54, 1830, 0, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 0, 1830, 0, 709, 0, 0, 0, 0, 0, 0, 1117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 730, 1117, 780, 827, 0, 853, 0, 0, 890, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 1117, 0, 0, 1117, 0, 1117, 0, 0, 0, 1596, 1597, 0, 0, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 800, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 1072, 0, 115, 0, 0, 0, 0, 1832, 115, 1832, 0, 1832, 1832, 0, 1832, 0, 1832, 1832, 0, 1089, 1089, 800, 0, 0, 425, 1089, 1089, 0, 0, 0, 0, 1610, 890, 1089, 1089, 0, 0, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 425, 0, 425, 0, 425, 0, 425, 0, 0, 0, 1832, 1832, 1832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1639, 1611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 800, 0, 1117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1089, 0, 1117, 0, 0, 0, 1276, 1276, 0, 0, 0, 148, 0, 0, 0, 1117, 0, 1117, 0, 1117, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 1317, 640, 0, 85, 85, 85, 642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1089, 1089, 0, 1615, 0, 0, 1413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1438, 0, 0, 0, 0, 0, 1443, 0, 0, 0, 0, 0, 0, 0, 1443, 0, 644, 0, 0, 842, 1443, 1443, 0, 115, 0, 0, 0, 0, 0, 1443, 1443, 0, 0, 1477, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 1443, 1635, 780, 0, 1636, 0, 0, 1563, 0, 774, 0, 0, 0, 645, 0, 1563, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1563, 827, 0, 0, 1563, 797, 0, 0, 0, 0, 0, 2164, 0, 1644, 0, 0, 0, 0, 0, 0, 0, 1652, 0, 0, 842, 0, 0, 0, 0, 890, 890, 890, 890, 890, 890, 0, 890, 890, 0, 0, 0, 0, 0, 0, 0, 890, 890, 890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 0, 0, 0, 634, 635, 1089, 636, 637, 638, 0, 1089, 639, 0, 640, 0, 0, 0, 0, 1089, 0, 0, 2164, 0, 0, 0, 0, 0, 0, 0, 1755, 0, 0, 0, 1117, 0, 0, 0, 1755, 0, 85, 647, 0, 0, 1755, 85, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 0, 644, 0, 0, 0, 0, 0, 1089, 0, 0, 1117, 85, 0, 1683, 1684, 0, 0, 1685, 1686, 0, 1687, 1688, 1689, 4080, 1089, 1690, 0, 1691, 1692, 0, 0, 0, 1693, 0, 1694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1089, 0, 0, 1089, 0, 1089, 1755, 0, 1755, 645, 1755, 1755, 0, 1755, 0, 1755, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1857, 0, 1755, 0, 0, 0, 1695, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1857, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1755, 1755, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1413, 0, 0, 0, 0, 1755, 1755, 0, 0, 1696, 1072, 1072, 0, 1755, 0, 0, 0, 0, 1697, 0, 1447, 0, 0, 0, 0, 0, 1072, 0, 1458, 0, 0, 0, 1698, 0, 1465, 1466, 0, 1755, 0, 0, 0, 0, 0, 1473, 1475, 1699, 0, 0, 0, 1833, 0, 1833, 0, 1833, 1833, 343, 1833, 0, 1833, 1833, 0, 0, 0, 0, 1996, 0, 0, 0, 0, 0, 1501, 0, 797, 647, 0, 1089, 0, 0, 0, 0, 653, 654, 655, 656, 657, 658, 659, 660, 1089, 661, 662, 663, 664, 0, 0, 0, 0, 0, 1833, 1833, 1833, 1089, 0, 1089, 0, 1089, 0, 0, 3700, 3701, 3702, 3703, 3704, 0, 3711, 3712, 3713, 3714, 3715, 3716, 0, 0, 3721, 0, 3723, 3724, 3725, 3726, 3727, 3728, 3729, 3730, 3731, 3732, 3733, 3734, 3735, 3736, 3737, 3738, 3739, 3740, 0, 3742, 0, 0, 0, 0, 0, 1700, 0, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 0, 0, 1718, 1276, 0, 1719, 0, 0, 0, 1720, 0, 0, 1443, 0, 0, 1443, 1443, 0, 0, 0, 0, 2164, 0, 0, 1443, 1443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276, 0, 0, 1563, 0, 0, 0, 1276, 0, 0, 0, 0, 0, 0, 0, 2176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1927, 1928, 0, 0, 1929, 1930, 1413, 1931, 1932, 1933, 1857, 1755, 1934, 0, 1935, 1936, 0, 85, 0, 1937, 0, 1938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 1939, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3223, 1683, 1684, 0, 0, 1685, 1686, 0, 1687, 1688, 1689, 1089, 0, 1690, 0, 1691, 1692, 0, 0, 0, 1693, 0, 1694, 0, 0, 0, 0, 0, 1940, 0, 3241, 0, 0, 0, 0, 0, 0, 0, 0, 1443, 0, 0, 1941, 0, 0, 0, 0, 0, 0, 0, 1089, 0, 0, 0, 0, 0, 1563, 0, 0, 0, 0, 0, 1563, 0, 0, 1695, 0, 0, 0, 0, 0, 0, 0, 1563, 0, 1832, 1832, 1832, 1832, 1832, 0, 1832, 1832, 1832, 1832, 1832, 1832, 0, 0, 1832, 0, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1696, 1832, 0, 1443, 0, 1443, 1443, 0, 1563, 1697, 1443, 1443, 1443, 1563, 1443, 1443, 1563, 0, 0, 0, 0, 0, 0, 1698, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1699, 0, 1443, 1443, 1443, 1443, 0, 0, 0, 0, 1563, 0, 0, 0, 1942, 0, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1563, 1955, 1956, 1957, 1958, 1959, 0, 0, 1960, 0, 0, 1961, 0, 0, 0, 1962, 0, 0, 0, 2078, 0, 0, 2082, 2083, 0, 0, 0, 0, 0, 0, 1563, 2090, 2092, 1563, 0, 1563, 1563, 1563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1563, 0, 0, 0, 0, 0, 0, 0, 0, 853, 0, 3421, 0, 0, 0, 0, 0, 1700, 0, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 0, 0, 1718, 0, 0, 1719, 1093, 890, 890, 890, 890, 890, 890, 0, 890, 890, 890, 890, 890, 890, 0, 0, 0, 890, 890, 0, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 0, 890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1093, 0, 1093, 0, 0, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 425, 0, 425, 1501, 425, 0, 425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3594, 0, 0, 0, 1639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1857, 1857, 0, 0, 0, 0, 0, 0, 0, 1443, 3643, 3304, 0, 3306, 3307, 1755, 0, 0, 3312, 3313, 3314, 0, 3316, 3317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3340, 3341, 3342, 3343, 0, 0, 0, 0, 1072, 0, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1755, 0, 1755, 1755, 1755, 1755, 1755, 0, 1755, 1755, 1755, 1755, 1755, 1755, 0, 0, 1755, 0, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 0, 1755, 0, 0, 1683, 0, 0, 0, 1685, 1686, 0, 1687, 1688, 1689, 0, 0, 1690, 0, 1691, 1755, 0, 0, 0, 0, 1683, 1684, 0, 0, 1685, 1686, 0, 1687, 1688, 1689, 0, 0, 1690, 0, 1691, 425, 0, 0, 0, 1693, 0, 1694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1695, 0, 0, 0, 0, 0, 0, 0, 1833, 1833, 1833, 1833, 1833, 0, 1833, 1833, 1833, 1833, 1833, 1833, 1695, 0, 1833, 0, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 0, 1833, 0, 0, 0, 0, 0, 0, 0, 1563, 0, 1697, 0, 0, 1563, 0, 0, 0, 0, 0, 0, 0, 0, 1563, 0, 0, 0, 0, 0, 0, 0, 1697, 0, 0, 0, 0, 0, 1276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276, 0, 1276, 1443, 0, 1563, 0, 1276, 1443, 1443, 1563, 1443, 1443, 1563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1236, 119, 0, 0, 2, -3057, 1237, 1238, 388, 1443, 1443, 1443, 1443, 1563, 0, 389, 1239, 0, 0, 1240, 1241, 0, 0, 1242, 0, 1243, 1244, 0, 0, 0, 0, 1317, 0, 0, 278, 0, 0, 1245, 1246, 1247, 0, 1248, 1249, 0, 1250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 6, 0, 0, 7, 750, 0, 85, 8, 1700, 0, 0, 0, 0, 400, 0, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 1700, 874, 0, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 12, 13, 1251, 0, 0, 1683, 1684, 0, 1252, 1685, 1686, 0, 1687, 1688, 1689, 0, 0, 1690, 0, 1691, 0, 0, 754, 0, 1693, 1093, 0, 1093, 1093, 0, 0, 0, 0, 19, 20, 0, 0, 1093, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 1093, 0, 875, 0, 0, 0, 1093, 1253, 1093, 1254, 1255, 0, 0, 0, 0, 0, 877, 0, 0, 1093, 0, 1695, 1093, 1093, 0, 1093, 33, 34, 0, 35, 1256, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 1257, 42, 1258, 0, 0, 1259, 1260, 1261, 1262, 1263, 145, 0, 0, 1264, 0, 0, 0, 1265, 0, 45, 0, 0, 0, 0, 0, 0, 1697, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 1266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1267, 1268, 1269, 1927, 0, 0, 0, 1929, 1930, 0, 1931, 3604, 1933, 0, 0, 1934, 1270, 1935, 0, 0, 0, -74, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 1320, 0, -74, 0, 0, 1271, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3869, 0, 0, 0, 0, 3875, 3876, 0, 3878, 3879, 0, 0, 1939, 844, 1273, 1274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 145, 0, 0, 0, 1700, 3902, 3903, 3904, 3905, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 845, 846, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4290, 0, 639, 0, 640, 641, 0, 0, 4291, 642, 847, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 848, 0, 0, 0, 0, 0, 0, 1093, 1093, 0, 0, 0, 0, 1093, 1093, 0, 0, 0, 0, 0, 0, 1093, 1093, 241, 242, 1093, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 244, 245, 246, 247, 248, 0, 0, 0, 145, 145, 145, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 0, 0, 250, 526, 0, 0, 1942, 0, 0, 251, 0, 0, 645, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 0, 1955, 1956, 1957, 1958, 1959, 646, 0, 0, 0, 1093, 0, 0, 1236, 119, 0, 0, 2, 0, 1237, 1238, 388, 0, 0, 0, 0, 0, 0, 389, 1239, 0, 0, 1240, 1241, 0, 0, 1242, 0, 1243, 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, 1245, 1246, 1247, 0, 1248, 1249, 0, 1250, 0, 0, 0, 0, 1093, 1093, 145, 0, 0, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1830, 0, 0, 2110, 0, 0, 874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 675, 0, 678, 0, 0, 0, 12, 13, 1251, 0, 0, 0, 0, 647, 1252, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 754, 661, 662, 663, 664, 0, 0, 665, 4292, 4293, 666, 19, 20, 0, 667, 0, 0, 0, 0, 24, 0, 0, 25, 26, 789, 834, 0, 0, 875, 0, 900, 0, 0, 1253, 0, 1254, 1255, 0, 0, 0, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 1256, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 1257, 42, 1258, 0, 0, 1259, 1260, 1261, 1262, 1263, 0, 0, 1104, 1264, 0, 0, 0, 1265, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 1093, 407, 0, 0, 0, 1093, 0, 0, 0, 183, 0, 184, 900, 1093, 0, 0, 1266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1267, 1268, 1269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1270, 0, 0, 0, 0, 0, 0, 1195, 0, 1093, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1271, 1272, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1289, 1289, 0, 0, 0, 1093, 0, 0, 1093, 0, 1093, 1273, 1274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1505, 1506, 0, 0, 1507, 1508, 0, 1509, 1510, 1511, 0, 0, 1513, 0, 1514, 1515, 0, 0, 0, 1516, 0, 1517, 0, 0, 0, 0, 0, 1518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 789, 0, 0, 0, 0, 0, 0, 0, 789, 0, 0, 0, 0, 0, 789, 789, 0, 0, 1519, 0, 0, 0, 0, 789, 789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 789, 0, 789, 0, 0, 0, 0, 834, 1565, 1566, 0, 0, 1520, 0, 0, 834, 1521, 0, 0, 0, 0, 1522, 0, 0, 0, 0, 1523, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 0, 834, 834, 0, 1525, 834, 1641, 1642, 0, 0, 1093, 0, 1093, 0, 1093, 1413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 900, 900, 900, 900, 900, 900, 0, 900, 900, 0, 0, 0, 0, 0, 0, 0, 900, 900, 900, 0, 0, 1526, 1527, 0, 0, 0, 0, 0, 0, 1528, 0, 0, 0, 0, 0, 0, 0, 1724, 1725, 0, 145, 145, 0, 0, 0, 1529, 1530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 0, 0, 1531, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0, 1546, 1547, 1548, 1549, 0, 0, 1550, 0, 0, 1551, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 145, 145, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 1104, 0, 1104, 1104, 0, 1104, 0, 1104, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 1104, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 1104, 1104, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 1104, 0, 0, 0, 1104, 1104, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1983, 1984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 2112, 2113, 0, 3825, 2114, 2115, 3826, 2116, 2117, 2118, 0, 0, 2119, 0, 2120, 2121, 0, 0, 0, 2122, 0, 2123, 0, 0, 0, 0, 0, 2124, 1443, 1857, 0, 0, 1443, 0, 4678, 0, 1443, 1563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 1443, 0, 0, 0, 0, 0, 0, 0, 2125, 0, 1927, 1928, 0, 0, 1929, 1930, 0, 1931, 3604, 1933, 0, 0, 1934, 0, 1935, 1936, 0, 0, 0, 1937, 0, 1938, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1289, 2126, 0, 0, 0, 2127, 0, 0, 1072, 789, 2128, 0, 789, 789, 0, 2129, 0, 0, 0, 0, 0, 789, 789, 1939, 2130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2131, 1857, 0, 1857, 0, 0, 0, 0, 0, 0, 4213, 0, 0, 1289, 0, 0, 834, 2166, 2167, 0, 1289, 0, 0, 0, 0, 0, 0, 0, 1755, 0, 1755, 0, 0, 0, 1755, 4235, 0, 0, 0, 1940, 0, 0, 0, 0, 0, 0, 0, 2132, 2133, 145, 1104, 0, 0, 145, 0, 2134, 0, 0, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2135, 2136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2138, 0, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 0, 2152, 2153, 2154, 2155, 0, 0, 2156, 0, 0, 2157, 0, 0, 0, 2158, 774, 2159, 2160, 0, 0, 0, 0, 0, 2161, 2162, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 789, 0, 0, 1942, 0, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 834, 1955, 1956, 1957, 1958, 1959, 834, 0, 0, 0, 1832, 1276, 0, 0, 0, 1596, 1597, 834, 0, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3297, 0, 0, 0, 0, 0, 0, 0, 789, 0, 789, 789, 0, 834, 0, 789, 789, 789, 834, 789, 789, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 789, 789, 789, 789, 0, 2176, 0, 0, 834, 1927, 1928, 0, 0, 1929, 1930, 0, 1931, 3604, 1933, 0, 1857, 1934, 0, 1935, 1936, 0, 834, 0, 1937, 0, 1938, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1611, 0, 0, 0, 0, 0, 0, 3382, 0, 0, 0, 0, 0, 0, 0, 834, 0, 0, 834, 0, 834, 834, 834, 0, 1276, 0, 0, 0, 0, 0, 0, 0, 1939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, 1443, 0, 1443, 0, 0, 0, 1443, 0, 0, 1443, 1443, 1443, 0, 1443, 1443, 1443, 1443, 1443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1940, 0, 0, 900, 900, 900, 900, 900, 900, 3458, 900, 900, 900, 900, 900, 900, 0, 0, 0, 900, 900, 0, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 0, 900, 0, 0, 0, 0, 1617, 890, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 0, 1636, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 1563, 0, 1557, 1558, 1559, 1560, 0, 85, 0, 85, 0, 85, 0, 0, 0, 0, 0, 0, 1596, 1597, 0, 0, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 0, 0, 1942, 0, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 4598, 1955, 1956, 1957, 1958, 1959, 0, 0, 1960, 0, 0, 1961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 1755, 0, 1755, 1755, 1857, 0, 1857, 0, 0, 145, 145, 0, 1755, 0, 0, 0, 3643, 0, 789, 145, 0, 0, 0, 1755, 1104, 0, 0, 0, 0, 1755, 0, 1755, 0, 0, 0, 0, 0, 145, 4235, 0, 0, 4235, 1755, 0, 145, 1755, 1755, 0, 1755, 0, 0, 0, 1611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 1104, 0, 0, 0, 0, 0, 0, 1755, 0, 0, 0, 0, 0, 0, 1104, 0, 1104, 1104, 1104, 1104, 1104, 3710, 1104, 1104, 1104, 1104, 1104, 1104, 0, 0, 1104, 0, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1443, 1443, 1443, 0, 1104, 1443, 1443, 0, 1443, 1443, 1443, 1443, 1443, 0, 0, 0, 4427, 0, 4429, 0, 0, 0, 4437, 0, 4738, 4439, 4440, 4441, 0, 4442, 4443, 4444, 4445, 4446, 0, 1927, 1928, 0, 0, 1929, 1930, 1857, 1931, 3604, 1933, 0, 0, 1934, 85, 1935, 85, 85, 1833, 1617, 1937, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 0, 1636, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 1939, 1443, 0, 0, 0, 834, 1443, 0, 0, 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1289, 0, 0, 0, 0, 0, 0, 0, 0, 3859, 0, 0, 0, 0, 0, 0, 1289, 0, 1289, 789, 1940, 834, 0, 1289, 789, 789, 834, 789, 789, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 789, 789, 789, 789, 834, 0, 0, 0, 0, 0, 0, 0, 1755, 1755, 1857, 0, 0, 0, 1755, 1755, 85, 0, 0, 0, 0, 0, 1755, 1755, 0, 0, 1755, 0, 0, 0, 0, 0, 85, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 343, 0, 0, 0, 0, 0, 0, 4894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -355, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 1942, 0, 0, 0, 1755, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 0, 1955, 1956, 1957, 1958, 1959, 0, 0, 0, 0, 0, 0, 0, 1596, 1597, 0, 3363, 1598, 1599, 3364, 1600, 1601, 1602, 0, 4235, 1604, 0, 1605, 1606, 0, 6, 0, 1607, 7, 1608, 0, 0, 8, 0, 0, 1609, 0, 1755, 1755, 0, 0, 0, 0, 0, 0, 0, 4718, 4719, 4720, 0, 0, 4722, 4723, 0, 4724, 4725, 4726, 4727, 4728, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 85, 0, 1611, 0, 0, 0, 0, 1612, 85, 0, 85, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, 0, 4805, 33, 34, 0, 35, 797, 1614, 0, 0, 0, 0, 114, 37, 38, 156, 0, 147, 0, 0, 0, 0, 0, 41, 0, 42, 0, 1443, 0, 1443, 0, 0, 0, 0, 1443, 0, 0, 1443, 0, 0, 114, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 258, 0, 50, 0, 0, 157, 0, 0, 0, 114, 1615, 0, 0, 183, 0, 184, 114, 0, 0, 0, 114, 0, 1755, 0, 0, 0, 0, 1755, 0, 0, 85, 0, 0, 0, 85, 1755, 0, 54, 0, 114, 114, 0, 0, 0, 1616, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 0, 1636, 0, 1755, 0, 1637, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 1072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1755, 0, 0, 1755, 0, 1755, 0, 0, 0, 0, 351, 351, 0, 0, 1927, 1928, 0, 0, 1929, 1930, 0, 1931, 3604, 1933, 0, 1443, 1934, 0, 1935, 1936, 147, 147, 0, 1937, 0, 1938, 0, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 0, 0, 85, 0, 0, 114, 0, 0, 0, 0, 0, 81, 0, 0, 0, 1443, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 1939, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 81, 636, 637, 638, 0, 0, 639, 81, 640, 641, 0, 81, 0, 642, 0, 643, 0, 0, 0, 147, 0, 0, 0, 1940, 0, 147, 0, 0, 0, 0, 81, 81, 1443, 0, 1755, 0, 0, 1941, 0, 0, 0, 114, 0, 0, 0, 0, 0, 1072, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 1755, 0, 1755, 0, 1755, 0, 0, 0, 147, 0, 147, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5022, 0, 5023, 0, 0, 0, 0, 5025, 0, 0, 5028, 0, 0, 81, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 81, 81, 0, 0, 0, 0, 0, 0, 1563, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 1942, 0, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 81, 1955, 1956, 1957, 1958, 1959, 0, 0, 1960, 0, 0, 1961, 0, 0, 0, 695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 147, 114, 973, 0, 0, 0, 0, 0, 1563, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 81, 5137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5028, 0, 0, 0, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1236, 119, 0, 0, 2, 0, 1237, 1238, 388, 0, 0, 0, 0, 0, 1755, 389, 1239, 0, 0, 1240, 1241, 4326, 0, 1242, 0, 1243, 0, 0, 0, 0, 0, 0, 0, 147, 278, 0, 0, 1245, 1246, 1247, 0, 1248, 1249, 0, 1250, 0, 0, 0, 5221, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 114, 114, 114, 0, 12, 13, 1251, 0, 0, 0, 0, 81, 1252, 0, 0, 0, 81, 0, 0, 0, 0, 114, 0, 0, 81, 0, 754, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 875, 0, 0, 0, 0, 1253, 0, 1254, 1255, 0, 0, 114, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 1256, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 1257, 42, 1258, 0, 0, 1259, 1260, 1261, 1262, 1263, 0, 0, 0, 1264, 0, 0, 0, 1265, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 114, 0, 1266, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1267, 1268, 1269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 774, 0, 0, 0, 0, 147, 147, 0, 0, 0, 0, 0, 0, 0, 1271, 1272, 147, 0, 0, 0, 0, 0, 0, 81, 0, 0, 81, 81, 81, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 114, 0, 0, 0, 1273, 1274, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 119, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 351, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 351, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 199, 147, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 81, 789, 145, 0, 0, 789, 0, 0, 0, 789, 834, 0, 0, 0, 0, 0, 0, 0, 200, 13, 0, 0, 0, 0, 0, 0, 1927, 1928, 0, 789, 1929, 1930, 0, 1931, 3604, 1933, 0, 0, 1934, 0, 1935, 0, 147, 0, 351, 1937, 0, 1938, 0, 0, 0, 19, 20, 114, 201, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 1104, 3710, 1939, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, 81, 0, 41, 0, 202, 0, 0, 145, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 1940, 203, 1104, 0, 1104, 0, 0, 0, 1104, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 801, 119, 0, 0, 2, 0, 802, 803, 388, 81, 0, 0, 0, 1104, 0, 389, 804, 54, 0, 805, 806, 0, 0, 807, 0, 808, 81, 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, 809, 810, 811, 0, 812, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 351, 0, 0, 0, 147, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 81, 114, 0, 0, 0, 0, 813, 1942, 0, 81, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 0, 1955, 1956, 1957, 1958, 1959, 114, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 114, 25, 26, 0, 1289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 146, 114, 0, 0, 0, 403, 0, 42, 815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 816, 0, 0, 0, 817, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 768, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 145, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 147, 0, 818, 819, 820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 821, 0, 0, 0, 0, 0, 0, 0, 0, 1289, 774, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 81, 0, 822, 823, 0, 0, 0, 81, 0, 0, 0, 0, 0, 789, 0, 789, 0, 0, 0, 789, 0, 81, 789, 789, 789, 0, 789, 789, 789, 789, 789, 824, 825, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 147, 0, 0, 350, 350, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 900, 0, 114, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, 147, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4294, 0, 639, 0, 640, 641, 0, 0, 4295, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 0, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 1104, 1104, 145, 380, 145, 380, 380, 114, 0, 0, 1104, 114, 0, 0, 145, 0, 0, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 1104, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 645, 0, 1104, 1104, 145, 1104, 0, 114, 0, 0, 0, 0, 0, 0, 646, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 351, 351, 0, 0, 0, 0, 0, 0, 0, 0, 351, 0, 147, 0, 0, 81, 0, 81, 1596, 1597, 0, 0, 1598, 1599, 0, 1600, 1601, 1602, 147, 0, 1604, 0, 1605, 1606, 0, 147, 0, 1607, 0, 1608, 789, 789, 789, 0, 0, 789, 789, 0, 789, 789, 789, 789, 789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1289, 0, 0, 0, 799, 841, 0, 0, 0, 0, 902, 0, 0, 147, 380, 0, 0, 145, 1610, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 4296, 4297, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 1195, 0, 81, 0, 0, 0, 380, 0, 0, 0, 1116, 0, 0, 0, 0, 1611, 0, 0, 0, 0, 789, 0, 81, 0, 0, 789, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 1683, 1684, 0, 0, 1685, 1686, 0, 1687, 1688, 1689, 0, 0, 1690, 81, 1691, 1692, 0, 0, 0, 1693, 0, 1694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 1615, 0, 0, 0, 0, 0, 81, 81, 0, 0, 0, 0, 0, 0, 0, 0, 81, 1695, 1104, 1104, 145, 0, 0, 0, 1104, 1104, 0, 0, 0, 0, 1295, 1295, 1104, 1104, 1616, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 1697, 1635, 0, 0, 1636, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 799, 0, 0, 0, 0, 0, 0, 0, 799, 0, 114, 1104, 0, 0, 799, 799, 0, 0, 0, 0, 0, 0, 0, 799, 799, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 1195, 0, 799, 0, 799, 0, 0, 0, 0, 841, 0, 0, 0, 0, 0, 1104, 1104, 841, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 841, 841, 0, 0, 841, 0, 0, 1700, 0, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 0, 0, 902, 902, 902, 902, 902, 902, 0, 902, 902, 0, 0, 0, 0, 0, 0, 0, 902, 902, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 0, 1116, 789, 0, 789, 0, 0, 0, 0, 789, 0, 0, 789, 0, 0, 0, 0, 0, 0, 1596, 1597, 0, 4005, 1598, 1599, 4006, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 81, 1607, 0, 1608, 0, 0, 0, 0, 146, 1609, 0, 0, 1104, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 81, 0, 1104, 0, 0, 0, 0, 81, 0, 0, 0, 1116, 0, 1116, 0, 1116, 1116, 0, 1116, 0, 1116, 1116, 0, 1610, 0, 0, 0, 0, 0, 0, 0, 146, 146, 1116, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 0, 1116, 1116, 1116, 146, 0, 0, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 1611, 1116, 1116, 0, 0, 1612, 1116, 1116, 0, 1116, 0, 0, 0, 0, 1613, 1104, 0, 0, 1104, 0, 1104, 0, 1116, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 0, 0, 789, 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 789, 0, 0, 0, 1615, 0, 0, 0, 0, 0, 2112, 2113, 0, 4980, 2114, 2115, 0, 2116, 2117, 2118, 4981, 0, 2119, 0, 2120, 2121, 0, 0, 0, 2122, 0, 2123, 0, 0, 0, 0, 0, 2124, 1616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 2125, 1635, 0, 789, 1636, 1104, 0, 0, 1637, 774, 0, 0, 0, 0, 0, 0, 1295, 0, 1104, 1557, 1558, 1559, 1560, 0, 0, 799, 0, 145, 799, 799, 0, 1104, 0, 1104, 0, 1104, 0, 799, 799, 0, 0, 0, 0, 0, 2126, 0, 0, 0, 2127, 0, 0, 0, 0, 2128, 0, 0, 0, 0, 2129, 0, 0, 0, 0, 0, 0, 0, 1295, 2130, 0, 841, 0, 0, 0, 1295, 0, 0, 0, 0, 0, 0, 2131, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 146, 1116, 834, 0, 146, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2132, 2133, 0, 0, 82, 0, 0, 0, 2134, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 2135, 2136, 0, 0, 0, 0, 0, 0, 0, 0, 82, 82, 0, 0, 0, 0, 0, 0, 2137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 2138, 0, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 0, 2152, 2153, 2154, 2155, 0, 0, 2156, 0, 0, 2157, 834, 0, 0, 2158, 774, 2159, 2160, 0, 0, 0, 799, 0, 2161, 2162, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 82, 0, 841, 0, 0, 0, 0, 0, 841, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 841, 0, 82, 82, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4800, 0, 639, 0, 640, 641, 1104, 0, 4801, 642, 159, 643, 0, 380, 0, 0, 0, 0, 0, 0, 0, 799, 0, 799, 799, 0, 841, 82, 799, 799, 799, 841, 799, 799, 841, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 799, 799, 799, 799, 0, 0, 0, 0, 841, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 841, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, 0, 645, 0, 0, 0, 0, 841, 0, 0, 841, 0, 841, 841, 841, 0, 646, 0, 82, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 841, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 902, 902, 902, 902, 902, 902, 380, 902, 902, 902, 902, 902, 902, 0, 0, 0, 902, 902, 0, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 0, 902, 0, 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 4802, 4803, 666, 1683, 1684, 0, 667, 1685, 1686, 0, 1687, 1688, 1689, 0, 0, 1690, 114, 1691, 0, 0, 0, 0, 1693, 0, 1694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 647, 82, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 1695, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 146, 0, 0, 0, 0, 0, 0, 0, 799, 146, 0, 3657, 0, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 1697, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 1116, 1116, 1116, 1116, 1116, 380, 1116, 1116, 1116, 1116, 1116, 1116, 0, 0, 1116, 0, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 1700, 82, 82, 82, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 0, 0, 82, 0, 0, 0, 0, 1505, 1506, 0, 0, 1507, 1508, 82, 1509, 1510, 1511, 0, 1512, 1513, 0, 1514, 1515, 0, 0, 0, 1516, 0, 1517, 3657, 0, 0, 0, 0, 1518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 841, 0, 0, 0, 0, 841, 0, 351, 0, 0, 83, 0, 0, 0, 841, 0, 0, 0, 0, 0, 1519, 0, 0, 0, 0, 114, 0, 0, 1295, 0, 0, 0, 0, 0, 0, 0, 0, 380, 83, 0, 0, 0, 0, 0, 1295, 0, 1295, 799, 973, 841, 0, 1295, 799, 799, 841, 799, 799, 841, 0, 83, 0, 0, 0, 0, 1520, 0, 83, 0, 1521, 0, 83, 114, 0, 1522, 0, 0, 82, 0, 1523, 799, 799, 799, 799, 841, 82, 0, 0, 1524, 0, 83, 83, 0, 0, 0, 147, 0, 0, 0, 0, 0, 1525, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 351, 0, 351, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1526, 1527, 0, 0, 0, 0, 0, 0, 1528, 0, 114, 0, 0, 0, 82, 0, 83, 0, 0, 82, 0, 0, 0, 0, 1529, 1530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 83, 0, 0, 0, 1531, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0, 1546, 1547, 1548, 1549, 0, 0, 1550, 83, 0, 1551, 81, 0, 0, 1552, 774, 1553, 1554, 0, 0, 0, 0, 0, 1555, 1556, 1557, 1558, 1559, 1560, 81, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 119, 0, 0, 2, 1236, 119, 0, 0, 2, 0, 1237, 1238, 388, 82, 0, 0, 0, 0, 0, 389, 1239, 0, 0, 1240, 1241, 4737, 0, 1242, 0, 1243, 0, 0, 0, 0, 0, 81, 0, 82, 278, 0, 0, 1245, 1246, 1247, 0, 1248, 1249, 0, 1250, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 6, 0, 8, 7, 750, 83, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 874, 81, 0, 0, 82, 0, 0, 0, 81, 0, 0, 0, 0, 82, 12, 13, 0, 0, 0, 12, 13, 1251, 0, 0, 0, 0, 0, 1252, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 19, 20, 0, 24, 0, 0, 25, 26, 24, 0, 0, 25, 26, 0, 0, 0, 0, 875, 351, 0, 0, 0, 1253, 147, 1254, 1255, 0, 0, 0, 114, 0, 877, 0, 0, 0, 0, 33, 34, 0, 35, 0, 33, 34, 0, 35, 1256, 0, 37, 38, 0, 0, 0, 37, 38, 402, 0, 0, 41, 0, 42, 0, 0, 403, 1257, 42, 1258, 0, 0, 1259, 1260, 1261, 1262, 1263, 0, 0, 0, 1264, 45, 0, 0, 1265, 0, 45, 0, 0, 0, 48, 0, 50, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 183, 0, 184, 83, 0, 183, 0, 184, 83, 0, 0, 0, 1266, 0, 0, 2, 83, 0, 0, 0, 0, 0, 0, 0, 54, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1267, 1268, 1269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1270, 82, 0, 0, 0, 82, 0, 0, 0, 0, 774, 0, 82, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 1271, 1272, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 1273, 1274, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 114, 82, 114, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1927, 1928, 0, 0, 1929, 1930, 0, 1931, 3604, 1933, 4272, 81, 1934, 0, 1935, 1936, 19, 20, 0, 1937, 0, 1938, 81, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 1939, 351, 0, 351, 37, 38, 0, 0, 0, 0, 0, 0, 0, 351, 41, 0, 42, 83, 0, 0, 83, 83, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 114, 0, 0, 114, 0, 0, 83, 0, 48, 147, 50, 0, 0, 0, 0, 0, 0, 83, 1940, 0, 0, 183, 0, 184, 1995, 0, 0, 0, 0, 0, 0, 0, 1941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 81, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 351, 0, 0, 0, 0, 0, 83, 114, 0, 114, 114, 0, 0, 82, 0, 82, 1942, 0, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 81, 1955, 1956, 1957, 1958, 1959, 0, 0, 1960, 147, 0, 1961, 0, 0, 0, 1962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 83, 0, 81, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 1236, 119, 0, 0, 2, 351, 1237, 1238, 388, 0, 0, 114, 0, 0, 0, 389, 1239, 0, 0, 1240, 1241, 0, 0, 1242, 0, 1243, 83, 114, 0, 114, 82, 0, 0, 0, 278, 0, 0, 1245, 1246, 1247, 0, 1248, 1249, 83, 1250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 351, 6, 0, 0, 7, 750, 0, 114, 8, 0, 0, 0, 0, 83, 400, 0, 82, 82, 81, 0, 0, 0, 0, 0, 0, 81, 82, 81, 81, 0, 874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 1251, 0, 0, 0, 0, 0, 1252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 754, 0, 0, 0, 114, 0, 83, 147, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 875, 0, 0, 0, 0, 1253, 0, 1254, 1255, 0, 0, 0, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 1256, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 1257, 42, 1258, 0, 0, 1259, 1260, 1261, 1262, 1263, 0, 0, 0, 1264, 0, 0, 0, 1265, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 81, 50, 0, 0, 407, 114, 81, 0, 0, 0, 0, 0, 183, 114, 184, 114, 0, 0, 0, 1266, 0, 0, 81, 0, 81, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1267, 1268, 1269, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 81, 0, 1270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1271, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 83, 380, 0, 0, 0, 114, 0, 1273, 1274, 114, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 81, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 1596, 1597, 0, 4046, 1598, 1599, 4047, 1600, 1601, 1602, 0, 0, 1604, 83, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 82, 0, 0, 0, 1609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 799, 146, 82, 0, 799, 0, 0, 0, 799, 841, 83, 0, 0, 1610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 799, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 81, 0, 81, 0, 0, 0, 0, 114, 0, 0, 0, 114, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 1611, 0, 0, 0, 0, 1612, 0, 0, 0, 0, 0, 1927, 1928, 0, 1613, 1929, 1930, 0, 1931, 3604, 1933, 1116, 380, 1934, 0, 1935, 0, 1614, 0, 0, 1937, 0, 1938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 81, 1939, 0, 0, 1116, 0, 1116, 0, 1615, 0, 1116, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 1616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1940, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 83, 1636, 83, 0, 0, 1637, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1295, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 1942, 0, 0, 83, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 0, 1955, 1956, 1957, 1958, 1959, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 736, 119, 0, 0, 2, 0, 737, 738, 388, 0, 0, 0, 146, 0, 0, 389, 739, 146, 0, 740, 741, 0, 0, 742, 0, 743, 0, 0, 0, 0, 83, 83, 0, 0, 278, 0, 0, 744, 745, 746, 83, 747, 748, 0, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1295, 7, 750, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 751, 0, 799, 0, 799, 0, 0, 0, 799, 0, 0, 799, 799, 799, 0, 799, 799, 799, 799, 799, 0, 0, 12, 13, 752, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 81, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 759, 42, 760, 841, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 768, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 2, -3057, 770, 771, 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 773, 1116, 1116, 146, 0, 146, 0, 0, 0, 0, 774, 1116, 0, -243, 0, 146, 0, 0, 0, 0, 0, 0, 1116, 0, 775, 776, 0, 0, 1116, 0, 1116, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 1116, 0, 0, 1116, 1116, 146, 1116, 0, 0, 0, 0, 0, 777, 778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 799, 799, 799, 0, 0, 799, 799, 0, 799, 799, 799, 799, 799, 0, 0, 0, 0, 0, 0, 1433, 0, 0, 0, 0, 1295, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 1434, 37, 38, 156, 0, 146, 0, 0, 0, 0, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 380, 157, 0, 0, 1435, 1436, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 799, 0, 0, 736, 119, 799, 0, 2, 0, 737, 738, 388, 0, 54, 0, 0, 0, 0, 389, 739, 0, 0, 740, 741, 0, 0, 742, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 278, 1457, 0, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 0, 632, 633, 0, 400, 634, 635, 0, 636, 637, 638, 0, 0, 639, 82, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 1116, 1116, 146, 0, 0, 0, 1116, 1116, 0, 0, 0, 12, 13, 752, 1116, 1116, 0, 0, 1116, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 350, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 645, 0, 1116, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 646, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 380, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 1116, 1116, 0, 0, 183, 0, 184, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 770, 771, 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 775, 776, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 777, 778, 2112, 2113, 0, 4715, 2114, 2115, 0, 2116, 2117, 2118, 0, 0, 2119, 0, 2120, 2121, 0, 0, 0, 2122, 0, 2123, 0, 0, 0, 0, 0, 2124, 0, 0, 799, 0, 799, 0, 0, 0, 0, 799, 0, 0, 799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2125, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2126, 0, 0, 0, 2127, 0, 82, 0, 0, 2128, 0, 0, 0, 0, 2129, 0, 0, 0, 0, 0, 0, 0, 0, 2130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 0, 2131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 82, 0, 82, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 1116, 0, 0, 1116, 0, 1116, 0, 0, 0, 0, 0, 0, 2132, 2133, 0, 0, 0, 0, 0, 0, 2134, 82, 0, 0, 0, 799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2135, 2136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2137, 0, 0, 0, 0, 0, 0, 0, 0, 799, 0, 0, 0, 0, 0, 2138, 0, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 0, 2152, 2153, 2154, 2155, 0, 0, 2156, 0, 0, 2157, 0, 0, 0, 2158, 774, 2159, 2160, 0, 0, 0, 0, 0, 2161, 2162, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 799, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 1116, 0, 1116, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 841, 1019, 1020, 1021, 4, 0, 1022, 213, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 1024, 0, 0, 1025, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 82, 0, 0, 0, 0, 0, -849, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, -849, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 220, 0, 1037, 1038, 0, 19, 20, 0, 0, 0, 0, 22, 23, 24, 83, 0, 25, 26, 0, 0, 841, 0, 0, 28, 0, 0, 0, 0, 0, 0, 1039, 0, 1040, 0, 0, 30, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 1044, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 40, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 1116, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 1051, 1052, 407, 0, 0, 0, -353, 0, 0, 0, 52, 0, 53, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 82, 0, 82, 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 2, 736, 119, 1063, 1064, 2, 0, 737, 738, 388, 0, 0, 0, 0, 0, 0, 389, 739, 0, 0, 740, 741, 0, 0, 742, 0, 743, 0, 0, 82, 0, 0, 1065, 1066, 0, 278, 1464, 0, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 0, 6, 0, 0, 7, 82, 6, 82, 8, 7, 750, 0, 0, 8, 0, 0, 0, 82, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 82, 0, 0, 4648, 0, 0, 0, 12, 13, 0, 0, 0, 12, 13, 752, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 19, 20, 0, 24, 0, 0, 25, 26, 24, 0, 0, 25, 26, 0, 83, 0, 0, 0, 0, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 33, 34, 0, 35, 0, 33, 34, 0, 35, 758, 0, 37, 38, 0, 0, 0, 37, 38, 402, 0, 0, 41, 0, 42, 0, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 45, 83, 0, 767, 0, 45, 0, 0, 82, 48, 0, 50, 0, 0, 48, 82, 50, 82, 82, 407, 0, 0, 183, 0, 184, 4234, 0, 183, 0, 184, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 408, 409, 410, 0, 54, 411, 83, 412, 83, 0, 770, 771, 772, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 774, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 775, 776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 777, 778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 82, 0, 1012, 0, 1013, 0, 82, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 0, 82, 0, 82, 1019, 1020, 1021, 4, 0, 1022, 213, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 1024, 0, 82, 1025, 0, 1026, 1027, 0, 0, 82, 1028, 0, 0, 1029, 0, 1030, 0, 0, 0, 0, 0, 0, 0, -850, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -850, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 220, 0, 1037, 1038, 0, 19, 20, 0, 0, 0, 0, 22, 23, 24, 82, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 1039, 0, 1040, 0, 0, 30, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 1044, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 40, 0, 403, 0, 42, 1048, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 83, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 1051, 1052, 407, 0, 0, 0, -353, 0, 0, 0, 52, 0, 53, 1053, 1054, 1055, 0, 0, 1056, 82, 0, 0, 0, 0, 0, 0, 0, 82, 0, 82, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1065, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 736, 119, 0, 0, 2, 0, 737, 738, 388, 0, 0, 0, 0, 0, 0, 389, 739, 0, 0, 740, 741, 0, 0, 742, 0, 743, 83, 0, 83, 0, 83, 0, 0, 0, 278, 1472, 0, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 752, 83, 432, 83, 0, 0, 753, 82, 0, 0, 0, 82, 0, 83, 0, 0, 0, 82, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 83, 0, 0, 83, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 0, 0, 0, 529, 0, 0, 48, 0, 50, 0, 119, 407, 0, 2, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 1855, 0, 770, 771, 772, 83, 0, 0, 0, 0, 0, 0, 83, 0, 83, 83, 0, 6, 773, 0, 7, 0, 0, 0, 8, 0, 0, 0, 774, 0, 0, 581, 582, 583, 585, 586, 0, 590, 595, 598, 599, 0, 775, 776, 0, 0, 0, 0, 0, 82, 0, 0, 0, 621, 622, 623, 624, 625, 626, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 777, 778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 860, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 41, 83, 42, 120, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 45, 0, 0, 83, 0, 83, 0, 0, 0, 48, 0, 50, 0, 0, 0, 0, 0, 0, 3642, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 83, 0, 0, 432, 0, 0, 0, 0, 122, 54, 0, 0, 1856, 0, 0, 0, 1157, 1157, 0, 0, 0, 0, 0, 0, 1165, 432, 0, 432, 0, 432, 0, 432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1182, 1183, 1184, 1185, 1186, 0, 1197, 1198, 1199, 1200, 1201, 1202, 83, 0, 1206, 0, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1232, 1235, 0, 0, 0, 0, 0, 1505, 1506, 0, 0, 1507, 1508, 0, 1509, 1510, 1511, 0, 0, 1513, 0, 1514, 1515, 0, 0, 0, 1516, 0, 1517, 0, 0, 0, 0, 0, 1518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1519, 0, 1441, 1442, 0, 1448, 1449, 1450, 595, 1454, 1455, 83, 0, 0, 0, 0, 0, 0, 0, 83, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1480, 1481, 1482, 0, 0, 1490, 1491, 0, 0, 0, 0, 1520, 0, 0, 0, 0, 0, 0, 0, 0, 1522, 0, 0, 0, 0, 1523, 0, 0, 0, 0, 0, 0, 0, 0, 1567, 1568, 0, 1571, 1572, 1573, 595, 1577, 1578, 0, 0, 0, 0, 1525, 1581, 1582, 1583, 0, 1585, 1586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1505, 1506, 0, 0, 1507, 1508, 0, 1509, 1510, 1511, 0, 5161, 1513, 0, 1514, 1515, 83, 0, 0, 1516, 83, 1517, 0, 0, 0, 0, 0, 1518, 0, 0, 0, 0, 0, 83, 0, 595, 1528, 0, 1668, 1669, 0, 1670, 0, 0, 0, 0, 0, 0, 0, 1676, 1677, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1519, 0, 0, 0, 0, 0, 1531, 0, 0, 0, 0, 0, 1743, 0, 0, 0, 0, 0, 0, 0, 0, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0, 1546, 1547, 1548, 1549, 0, 0, 1550, 1520, 0, 1551, 0, 1521, 0, 0, 774, 0, 1522, 0, 0, 0, 0, 1523, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 1524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1232, 1525, 0, 0, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1837, 0, 0, 0, 0, 595, 0, 0, 0, 1848, 0, 0, 0, 0, 0, 0, 1526, 1527, 0, 0, 0, 0, 1866, 0, 1528, 0, 0, 0, 0, 0, 0, 1873, 0, 0, 0, 0, 1878, 0, 0, 0, 1529, 1530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1896, 1897, 0, 0, 0, 0, 1531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0, 1546, 1547, 1548, 1549, 0, 0, 1550, 0, 0, 1551, 0, 0, 0, 1552, 774, 1553, 1554, 0, 0, 0, 0, 0, 1555, 1556, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 0, 0, 119, 0, 0, 2, 0, 1157, 0, 1157, 0, 0, 0, 0, 0, 0, 0, 1165, 2031, 0, 0, 0, 2034, 2035, 2037, 2038, 0, 2039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 1855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2047, 2047, 0, 0, 2053, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2054, 0, 0, 0, 2060, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 2064, 0, 2067, 2068, 0, 2070, 595, 2074, 2075, 0, 0, 0, 0, 0, 0, 0, 83, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 2095, 2096, 2097, 0, 2099, 2100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 2179, 0, 632, 633, 0, 1140, 634, 635, 0, 636, 637, 638, 1141, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 644, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 3225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 54, 0, 0, 1856, 0, 3238, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3261, 0, 0, 3264, 0, 0, 0, 3269, 3270, 0, 0, 3271, 0, 3273, 3274, 0, 0, 0, 3277, 0, 3278, 0, 0, 0, 0, 0, 0, 3280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3289, 3290, 3291, 3292, 3293, 0, 3298, 0, 3299, 3300, 3301, 3302, 3303, 0, 0, 0, 0, 0, 0, 3311, 0, 0, 0, 0, 0, 0, 0, 0, 3320, 3321, 3322, 3323, 3324, 3325, 3326, 3327, 3328, 3329, 3330, 3331, 3332, 3333, 3334, 3335, 3336, 3337, 1232, 3339, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 3368, 666, 0, 0, 3369, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3374, 3375, 3376, 3377, 3378, 0, 3383, 0, 3384, 3385, 3386, 3387, 3388, 0, 0, 0, 0, 3394, 0, 0, 0, 0, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, 3414, 3415, 3416, 1232, 3418, 0, 2, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 3445, 0, 0, 0, 3446, 0, 396, 397, 398, 591, 399, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 6, 3466, 8, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1232, 0, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3521, 1229, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 19, 20, 0, 24, 0, 0, 25, 26, 24, 0, 3543, 25, 26, 0, 432, 0, 432, 0, 432, 0, 432, 0, 0, 0, 0, 401, 1418, 0, 0, 0, 0, 3586, 1232, 0, 0, 0, 33, 34, 0, 35, 0, 33, 34, 0, 35, 0, 0, 37, 38, 0, 0, 0, 37, 38, 402, 1230, 0, 41, 3607, 42, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 3624, 0, 3626, 0, 0, 405, 45, 3628, 0, 406, 0, 45, 0, 0, 0, 48, 0, 50, 0, 0, 48, 0, 50, 1231, 1873, 407, 0, 0, 183, 3670, 184, 0, 3672, 183, 3674, 184, 0, 3678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3682, 0, 0, 0, 0, 54, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 592, 593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1232, 0, 0, 0, 3748, 3749, 3750, 3751, 3752, 3753, 3754, 3755, 3756, 3757, 3758, 0, 0, 0, 418, 419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157, 0, 0, 0, 0, 0, 3787, 0, 3788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1418, 0, 0, 0, 3797, 3798, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1232, 0, 3808, 0, 3810, 0, 2047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3830, 0, 0, 0, 0, 3834, 0, 0, 3835, 0, 3837, 3838, 0, 0, 0, 3841, 0, 3842, 0, 0, 0, 0, 3844, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3851, 3852, 3853, 3854, 3855, 0, 3860, 3861, 3862, 3863, 3864, 3865, 0, 0, 0, 0, 0, 0, 3873, 0, 0, 0, 0, 0, 0, 0, 0, 3882, 3883, 3884, 3885, 3886, 3887, 3888, 3889, 3890, 3891, 3892, 3893, 3894, 3895, 3896, 3897, 3898, 3899, 1232, 3901, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 0, 395, 0, 3929, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 4, 0, 1022, 213, 3942, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, -591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 19, 20, 0, 0, 0, -591, 22, 23, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 1039, 0, 0, 0, 0, 30, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 40, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 1051, 1052, 407, 0, 0, 0, -353, 0, 0, 0, 52, 0, 53, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 1004, 1062, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 1063, 1064, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 1065, 1066, 0, 0, 1019, 1020, 1021, 4, 0, 1022, 213, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, 1907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 1039, 0, 0, 0, 0, 30, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 40, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 1051, 1052, 407, 0, 0, 0, -353, 0, 0, 0, 52, 0, 53, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 1004, 1062, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 1063, 1064, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 1065, 1066, 0, 0, 1019, 1020, 1021, 4, 0, 1022, 213, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 19, 20, 0, 0, 0, 1912, 22, 23, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 1039, 0, 0, 0, 0, 30, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 40, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 119, 0, 0, 2, -3057, 0, 0, 0, 48, 49, 50, 1051, 1052, 407, 0, 0, 0, -353, 0, 0, 0, 52, 0, 53, 1053, 1054, 1055, 0, 2, 1056, 0, 0, 0, 0, -243, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 844, 0, 1060, 1061, 0, 0, 0, 1062, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1065, 1066, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 845, 846, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 847, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 33, 34, 848, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 156, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 45, 0, 0, 0, 0, 41, 0, 42, 0, 48, 0, 50, 0, 0, 157, 0, 0, 0, 849, 0, 0, 0, 183, 0, 184, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 0, 0, 1418, 0, 725, 0, 0, 54, 52, 0, 53, 0, 0, 0, 3973, 3974, 3975, 3976, 3977, 3978, 3979, 3980, 3981, 3982, 3983, 3984, 0, 0, 3990, 1157, 0, 0, 54, 0, 0, 4002, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4021, 4022, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1505, 1506, 0, 2047, 1507, 1508, 2047, 1509, 1510, 1511, 0, 0, 1513, 0, 1514, 1515, 0, 4027, 0, 1516, 0, 1517, 0, 0, 0, 0, 0, 1518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4031, 4032, 4033, 4034, 4035, 4036, 4037, 4038, 4039, 4040, 4041, 4042, 0, 3990, 1157, 1519, 0, 0, 0, 4050, 4051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2047, 2047, 0, 0, 0, 0, 0, 0, 4055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1520, 0, 0, 0, 1521, 0, 0, 0, 0, 1522, 0, 0, 0, 0, 1523, 0, 0, 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065, 4066, 4067, 4068, 4069, 4070, 1157, 0, 4073, 4074, 4075, 0, 1525, 4078, 4079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2047, 0, 2047, 0, 0, 0, 0, 4084, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1526, 1527, 0, 0, 0, 0, 0, 0, 1528, 0, 0, 0, 0, 0, 4097, 0, 0, 0, 4100, 0, 0, 0, 4104, 0, 1529, 1530, 4110, 0, 0, 0, 4114, 0, 0, 0, 0, 0, 4120, 0, 0, 0, 0, 0, 1531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0, 1546, 1547, 1548, 1549, 0, 0, 1550, 0, 0, 1551, 0, 0, 0, 0, 774, 1553, 1554, 0, 0, 0, 0, 0, 1555, 1556, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4185, 4186, 4187, 4188, 4189, 4190, 4191, 4192, 4193, 4194, 4195, 4196, 4197, 1157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4215, 0, 0, 0, 4219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4232, 0, 0, 0, 0, 0, 0, 0, 4244, 0, 0, 0, 0, 0, 0, 4249, 0, 0, 4252, 0, 0, 4257, 0, 0, 0, 0, 0, 0, 4260, 4261, 4262, 4263, 1873, 0, 4268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2047, 2047, 0, 0, 0, 4276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4277, 0, 0, 4280, 4281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4299, 4300, 0, 0, 0, 0, 0, 4303, 0, 0, 4305, 4306, 2047, 0, 2047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4313, 4314, 4315, 4316, 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4324, 0, 3990, 0, 1157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4346, 4347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2047, 0, 0, 2047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4352, 1505, 1506, 0, 0, 1507, 1508, 0, 1509, 1510, 1511, 0, 5162, 1513, 0, 1514, 1515, 0, 0, 0, 1516, 0, 1517, 0, 0, 0, 0, 0, 1518, 0, 0, 2179, 4356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4374, 0, 0, 4376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4391, 0, 0, 4393, 0, 0, 0, 4394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1520, 0, 0, 0, 1521, 0, 0, 4426, 0, 1522, 0, 1873, 0, 0, 1523, 0, 3990, 0, 0, 0, 0, 0, 0, 1524, 0, 0, 0, 0, 4447, 0, 0, 0, 0, 4450, 4451, 0, 1525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4469, 0, 3990, 0, 4471, 0, 0, 4474, 0, 0, 0, 4478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4494, 1526, 1527, 0, 0, 4495, 0, 0, 0, 1528, 0, 3445, 0, 0, 0, 0, 4504, 0, 4507, 0, 0, 0, 0, 0, 4517, 1529, 1530, 4520, 0, 0, 0, 4524, 0, 0, 0, 0, 0, 4530, 0, 0, 1873, 4538, 0, 1531, 0, 0, 0, 0, 0, 0, 4546, 0, 0, 0, 119, 0, 0, 2, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0, 1546, 1547, 1548, 1549, 0, 0, 1550, 0, 0, 1551, 0, 0, 0, 1552, 774, 1553, 1554, 0, 0, 3586, 3586, 0, 1555, 1556, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 6, 0, 3607, 7, 3607, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4616, 0, 4620, 0, 0, 0, 0, 0, 0, 0, 0, 4627, 0, 0, 0, 0, 0, 0, 0, 4634, 0, 0, 0, 0, 0, 0, 4643, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 2047, 1873, 0, 1873, 23, 24, 0, 0, 25, 26, 0, 3672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157, 0, 0, 4691, 30, 4692, 4693, 4694, 0, 4695, 4696, 0, 0, 0, 0, 33, 34, 4699, 35, 0, 0, 0, 0, 1232, 1232, 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 0, 0, 0, 4717, 0, 0, 0, 0, 3990, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4729, 0, 0, 4732, 4733, 0, 0, 1311, 0, 50, 0, 0, 4742, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 1873, 0, 0, 0, 0, 4761, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4784, 0, 0, 4787, 4788, 4789, 4790, 4791, 4792, 4793, 4794, 4795, 4796, 4797, 0, 3990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 5105, 1018, 0, 4824, 0, 0, 1019, 1020, 1021, 4, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, 4850, 0, 0, 0, 0, 0, 4855, 0, 0, 0, 0, 0, 1873, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 1039, 0, 0, 0, 4908, 0, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 4918, 0, 0, 4920, 3990, 40, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 1051, 1052, 407, 0, 0, 2047, -353, 0, 0, 0, 52, 0, 53, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 4961, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 119, 0, 4982, 2, 0, 0, 0, 0, 0, 1063, 1064, 0, 4742, 0, 0, 0, 0, 0, 0, 1873, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 1065, 1066, 0, 0, 0, 5014, 0, 0, 0, 0, 5017, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 5019, 0, 5020, 5021, 0, 0, 0, 1873, 0, 0, 0, 0, 5026, 0, 12, 13, 5030, 0, 5031, 5032, 0, 5033, 0, 0, 0, 0, 5036, 0, 5037, 5038, 5039, 0, 0, 0, 4504, 2047, 4945, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 19, 20, 5058, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 338, 5065, 339, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 5076, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 156, 0, 0, 0, 3607, 0, 3607, 0, 41, 5088, 42, 5089, 5090, 33, 34, 0, 35, 0, 5094, 0, 0, 0, 0, 0, 37, 38, 0, 0, 45, 0, 0, 0, 0, 0, 41, 0, 42, 48, 0, 50, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 340, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 1232, 0, 5133, 0, 5134, 5135, 54, 5136, 183, 0, 184, 4234, 5138, 0, 0, 0, 0, 0, 0, 4742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 5156, 670, 0, 5157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5164, 0, 0, 0, 0, 0, 5169, 0, 0, 0, 0, 2047, 0, 4504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5195, 0, 0, 0, 0, 0, 0, 0, 0, 784, 829, 0, 0, 0, 0, 894, 0, 0, 0, 0, 0, 5217, 0, 0, 0, 0, 0, 0, 0, 0, 3990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 629, 5232, 5233, 0, 5236, 1418, 0, 0, 0, 0, 0, 5244, 0, 0, 0, 0, 0, 0, 5248, 0, 5249, 5250, 0, 5251, 0, 0, 0, 0, 1088, 0, 0, 4742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 670, 0, 0, 894, 0, 0, 0, 0, 0, 0, 0, 4504, 0, 4504, 4504, 4504, 4504, 0, 0, 4504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5302, 0, 0, 5303, 5304, 5305, 5306, 5307, 5308, 5309, 5310, 5311, 5312, 5313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5322, 0, 0, 0, 0, 0, 5327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1279, 1279, 0, 5336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5342, 0, 5343, 5344, 5345, 0, 5346, 5347, 5348, 0, 5349, 5350, 0, 4504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 629, 0, 0, 4504, 2112, 2113, 0, 0, 2114, 2115, 0, 2116, 2117, 2118, 0, 0, 2119, 0, 2120, 2121, 0, 0, 0, 2122, 5371, 2123, 5372, 5373, 0, 1873, 0, 2124, 784, 0, 0, 0, 0, 0, 0, 0, 784, 5383, 0, 5384, 5385, 0, 784, 784, 0, 0, 0, 0, 0, 0, 0, 784, 784, 0, 0, 0, 0, 0, 0, 4504, 0, 0, 0, 4504, 2125, 0, 4504, 1494, 0, 0, 0, 0, 0, 0, 1498, 0, 0, 0, 784, 0, 784, 1873, 0, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 0, 4504, 0, 0, 0, 0, 0, 2126, 0, 0, 0, 2127, 0, 1589, 0, 0, 2128, 0, 1592, 0, 0, 2129, 829, 829, 0, 0, 829, 0, 0, 0, 2130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4504, 0, 0, 2131, 4504, 0, 0, 0, 0, 0, 0, 894, 894, 894, 894, 894, 894, 0, 894, 894, 0, 0, 0, 0, 0, 0, 0, 894, 894, 894, 0, 0, 0, 0, 0, 0, 1680, 0, 0, 0, 0, 0, 0, 0, 1723, 0, 0, 0, 0, 0, 2132, 2133, 0, 0, 0, 0, 0, 0, 2134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 2135, 2136, 0, 0, 1088, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 2137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2138, 0, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 0, 2152, 2153, 2154, 2155, 0, 0, 2156, 0, 0, 2157, 0, 0, 0, 2158, 774, 2159, 2160, 0, 0, 0, 0, 0, 2161, 2162, 1557, 1558, 1559, 1560, 0, 0, 0, 1088, 0, 1088, 0, 1088, 1088, 0, 1088, 0, 1088, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 1088, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1904, 0, 1088, 1088, 0, 0, 0, 1088, 1088, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 5230, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 4, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 1279, 0, 0, 0, 0, 0, 0, 0, -708, 784, 0, 0, 784, 784, 220, 0, 0, 0, 0, 19, 20, 784, 784, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 2103, 0, 28, 0, 0, 0, 2106, 0, 0, 1039, 0, 0, 0, 0, 0, 1279, 1041, 0, 829, 0, 0, 0, 1279, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 40, 0, 403, 0, 42, 1048, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 1051, 1052, 407, 0, 0, 0, -353, 0, 0, 0, 52, 0, 53, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 1494, 1498, 784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 829, 1065, 1066, 0, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 829, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4816, 0, 639, 0, 640, 641, 0, 0, 4817, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 784, 0, 784, 784, 0, 829, 0, 784, 784, 784, 829, 784, 784, 829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 784, 784, 784, 784, 0, 0, 0, 0, 829, 0, 1589, 0, 0, 0, 0, 0, 1592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 829, 0, 0, 829, 0, 829, 829, 829, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 894, 894, 894, 894, 894, 894, 0, 894, 894, 894, 894, 894, 894, 0, 0, 0, 894, 894, 0, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 0, 894, 0, 0, 0, 0, 785, 830, 0, 0, 0, 0, 895, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 1904, 665, 4818, 4819, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0, 0, 0, 0, 1505, 1506, 0, 0, 1507, 1508, 0, 1509, 1510, 1511, 0, 0, 1513, 0, 1514, 1515, 0, 0, 0, 1516, 0, 1517, 0, 0, 0, 0, 895, 1518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1519, 0, 0, 0, 0, 0, 0, 784, 0, 0, 0, 0, 1192, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1280, 1280, 0, 0, 0, 1088, 1522, 1088, 0, 0, 0, 1523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 1088, 1088, 1088, 1088, 1088, 0, 1088, 1088, 1088, 1088, 1088, 1088, 0, 0, 1088, 0, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 0, 0, 0, 0, 0, 0, 1088, 785, 0, 0, 0, 0, 0, 785, 785, 0, 0, 0, 1528, 0, 0, 0, 785, 785, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 0, 785, 1531, 0, 0, 0, 830, 0, 0, 0, 0, 0, 0, 0, 830, 0, 0, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0, 1546, 1547, 1548, 1549, 0, 0, 1550, 0, 2106, 1551, 0, 830, 830, 0, 774, 830, 0, 0, 0, 0, 0, 0, 0, 829, 1557, 1558, 1559, 1560, 829, 0, 119, 0, 0, 2, -3057, 0, 0, 829, 0, 0, 895, 895, 895, 895, 895, 895, 0, 895, 895, 0, 0, 1279, 0, 0, 0, 2186, 895, 895, 895, 0, 0, 0, 0, 0, 0, 0, 0, 1279, 0, 1279, 784, 0, 829, 0, 1279, 784, 784, 829, 784, 784, 829, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0, 784, 784, 784, 784, 829, 1091, 0, 0, 0, 0, 233, 1091, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 2187, 2188, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 1091, 0, 1091, 0, 1091, 1091, 0, 1091, 0, 1091, 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 33, 34, 0, 35, 1091, 0, 0, 0, 0, 0, 0, 37, 38, 156, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 0, 0, 1091, 1091, 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 1091, 1091, 0, 0, 0, 1091, 1091, 48, 1091, 50, 0, 0, 157, 0, 0, 0, 768, 0, 0, 0, 183, 1091, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 0, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, 0, 0, 0, 0, 0, -852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -852, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 1280, 0, 0, 0, 0, 0, 0, 0, -708, 785, 0, 0, 785, 785, 0, 0, 0, 0, 0, 19, 20, 785, 785, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1039, 0, 0, 0, 0, 0, 1280, 1041, 0, 830, 0, 0, 0, 1280, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 1091, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1051, 1052, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, 1065, 1066, 0, 0, 0, 830, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 830, 636, 637, 638, 4826, 0, 639, 0, 640, 641, 0, 0, 4827, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3295, 0, 0, 0, 0, 0, 0, 0, 785, 0, 785, 785, 0, 830, 0, 785, 785, 785, 830, 785, 785, 830, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 785, 785, 785, 0, 0, 1596, 1597, 830, 0, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 830, 1608, 0, 0, 0, 0, 0, 1609, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3380, 0, 0, 646, 0, 0, 0, 0, 830, 0, 0, 830, 0, 830, 830, 830, 0, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1611, 0, 0, 0, 0, 1612, 895, 895, 895, 895, 895, 895, 3456, 895, 895, 895, 895, 895, 895, 0, 0, 0, 895, 895, 0, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 0, 895, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 4828, 4829, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 1615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1505, 1506, 0, 0, 1507, 1508, 0, 1509, 1510, 1511, 0, 0, 1513, 0, 1514, 1515, 0, 0, 0, 1516, 1616, 1517, 0, 0, 0, 0, 0, 1518, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 0, 1636, 0, 0, 0, 1519, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 0, 0, 0, 0, 0, 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1520, 0, 0, 0, 1521, 0, 0, 0, 0, 1522, 0, 0, 0, 0, 1523, 0, 0, 0, 0, 0, 0, 0, 0, 1524, 0, 0, 0, 0, 0, 1091, 0, 1091, 0, 0, 0, 0, 1525, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 1091, 1091, 1091, 1091, 1091, 3708, 1091, 1091, 1091, 1091, 1091, 1091, 0, 0, 1091, 0, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 0, 1091, 1526, 1527, 0, 0, 0, 0, 0, 0, 1528, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0, 0, 0, 0, 0, 1529, 1530, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0, 1546, 1547, 1548, 1549, 0, 0, 1550, 0, 0, 1551, 0, 0, 0, 1552, 774, 1553, 1554, 0, 0, 0, 0, 0, 1555, 1556, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, 0, 0, 0, 0, 830, 0, 0, 0, 0, 0, 0, 0, 0, 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1280, 0, 0, 0, 0, 0, 0, 0, 0, 3857, 0, 0, 0, 0, 0, 0, 1280, 0, 1280, 785, 0, 830, 0, 1280, 785, 785, 830, 785, 785, 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 785, 785, 785, 785, 830, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 0, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, -593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 0, 0, 0, 784, 0, 19, 20, 784, 0, 0, -593, 784, 829, 24, 0, 0, 25, 26, 0, 0, 1505, 1506, 0, 0, 1507, 1508, 0, 1509, 1510, 1511, 1039, 784, 1513, 0, 1514, 1515, 0, 1041, 0, 1516, 0, 1517, 0, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 0, 670, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 1519, 1050, 0, 45, 0, 0, 1088, 0, 0, 0, 0, 0, 48, 0, 50, 1051, 1052, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 1522, 0, 1057, 1058, 1059, 1523, 0, 0, 0, 0, 1088, 0, 1088, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1065, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0, 1546, 1547, 1548, 1549, 0, 0, 1550, 0, 0, 1551, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 1279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 0, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, 0, 0, 0, 0, 0, -851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -851, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 1279, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 670, 0, 0, 0, 0, 784, 0, 784, 0, 0, 1039, 784, 0, 0, 784, 784, 784, 1041, 784, 784, 784, 784, 784, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1051, 1052, 407, 0, 0, 0, 0, 0, 894, 0, 183, 0, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 2112, 2113, 0, 1062, 2114, 2115, 0, 2116, 2117, 2118, 0, 0, 2119, 0, 2120, 2121, 0, 1063, 1064, 2122, 0, 2123, 0, 0, 0, 0, 0, 2124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1065, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2125, 1088, 0, 1088, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 1088, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 2126, 0, 1088, 1088, 2127, 1088, 0, 0, 0, 2128, 0, 0, 0, 0, 2129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 2131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2132, 2133, 0, 0, 784, 784, 784, 0, 2134, 784, 784, 0, 784, 784, 784, 784, 784, 0, 0, 0, 0, 0, 0, 0, 2135, 2136, 0, 0, 1279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2138, 0, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 0, 2152, 2153, 2154, 2155, 0, 0, 2156, 0, 0, 2157, 0, 0, 0, 0, 774, 2159, 2160, 0, 0, 0, 0, 0, 2161, 2162, 1557, 1558, 1559, 1560, 0, 0, 0, 784, 0, 0, 0, 0, 784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 3660, 1014, 0, 0, 0, 0, 395, 3989, 0, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 0, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 400, 0, 1088, 1088, 0, 1026, 1027, 0, 1088, 1088, 1028, 0, 0, 1029, 0, 1030, 1088, 1088, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 3989, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1039, 1088, 0, 0, 0, 0, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 1088, 1088, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1051, 1052, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, -871, 0, 0, 2, -3057, 0, 0, 2103, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 785, 0, 0, 1062, 785, 0, 0, 0, 785, 830, 0, 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 1065, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 784, 0, 784, 0, 0, 0, 0, 784, 0, 0, 784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 1091, 3708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 1091, 0, 0, 0, 1091, 0, 0, 0, 0, 0, 0, 4243, 0, 33, 34, 0, 35, 0, 0, 0, 0, 1088, 0, 0, 37, 38, 156, 0, 1091, 0, 0, 0, 0, 0, 41, 0, 42, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 1088, 0, 0, 1088, 48, 1088, 50, 0, 0, 157, 0, 0, 0, 1649, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 784, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 3590, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 3989, 1280, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 784, 0, 1088, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 1228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1229, 1088, 0, 1088, 0, 1088, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 1230, 1807, 0, 0, 0, 0, 0, 403, 829, 42, 404, 0, 0, 0, 0, 0, 0, 0, 1280, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1231, 0, 407, 0, 0, 785, 0, 785, 0, 0, 183, 785, 184, 3989, 785, 785, 785, 0, 785, 785, 785, 785, 785, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 829, 0, 0, 0, 0, 416, 417, 0, 0, 0, 0, 0, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, 419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 801, 119, 0, 1088, 2, 0, 802, 803, 388, 0, 0, 0, 0, 0, 0, 389, 804, 0, 0, 805, 806, 0, 0, 807, 0, 808, 0, 0, 1091, 0, 1091, 1091, 0, 0, 278, 0, 0, 809, 810, 811, 1091, 812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0, 0, 6, 0, 1091, 7, 1091, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 1091, 0, 0, 1091, 1091, 0, 1091, 0, 0, 0, 0, 4116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 788, 833, 0, 0, 0, 0, 899, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 785, 785, 814, 3989, 785, 785, 0, 785, 785, 785, 785, 785, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 1280, 0, 0, 0, 0, 0, 37, 38, 402, 1102, 0, 0, 0, 0, 0, 0, 403, 0, 42, 815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 816, 0, 0, 0, 817, 0, 45, 0, 0, 0, 0, 899, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 1192, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3989, 0, 0, 0, 0, 0, 785, 0, 408, 409, 410, 785, 54, 411, 0, 412, 0, 0, 818, 819, 820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1288, 1288, 822, 823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 2113, 0, 0, 2114, 2115, 0, 2116, 2117, 2118, 824, 825, 2119, 0, 2120, 2121, 0, 0, 0, 2122, 0, 2123, 0, 0, 1091, 1091, 0, 2124, 0, 0, 1091, 1091, 0, 0, 0, 0, 0, 0, 1091, 1091, 0, 0, 1091, 0, 0, 0, 0, 0, 788, 0, 0, 0, 0, 0, 0, 0, 788, 0, 0, 0, 0, 0, 788, 788, 2125, 0, 0, 0, 0, 0, 0, 788, 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 788, 0, 788, 0, 0, 0, 0, 833, 0, 0, 0, 0, 0, 0, 0, 833, 0, 0, 1091, 2128, 0, 0, 0, 0, 2129, 0, 0, 0, 0, 0, 0, 0, 0, 3989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 833, 833, 0, 0, 833, 0, 0, 0, 0, 0, 4947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 1091, 0, 0, 899, 899, 899, 899, 899, 899, 0, 899, 899, 0, 0, 0, 0, 0, 0, 0, 899, 899, 899, 0, 0, 0, 0, 0, 0, 0, 0, 2134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 2137, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 1102, 0, 0, 2138, 0, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 0, 2152, 2153, 2154, 2155, 0, 0, 2156, 0, 0, 2157, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 0, 785, 0, 0, 0, 0, 785, 0, 0, 785, 0, 1102, 0, 1102, 0, 1102, 1102, 0, 1102, 0, 1102, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1858, 0, 1102, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 1858, 0, 0, 1091, 0, 0, 0, 0, 0, 0, 0, 1091, 1102, 1102, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 1102, 0, 0, 0, 1102, 1102, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0, 1091, 0, 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 0, 862, 119, 0, 0, 2, 0, 863, 864, 388, 0, 0, 0, 0, 0, 0, 389, 865, 0, 0, 866, 867, 0, 0, 868, 0, 869, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 870, 871, 872, 0, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 1288, 0, 0, 0, 0, 0, 0, 0, 0, 788, 0, 0, 788, 788, 0, 874, 0, 0, 0, 0, 0, 788, 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 785, 0, 1091, 3989, 0, 0, 1288, 0, 0, 833, 0, 0, 0, 1288, 0, 1091, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 1091, 0, 1091, 24, 1091, 0, 25, 26, 0, 0, 0, 0, 875, 0, 1858, 1102, 0, 0, 0, 0, 876, 0, 0, 0, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3468, 0, 830, 0, 880, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 881, 882, 883, 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 884, 0, 0, 0, 833, 0, 0, 0, 0, 0, 833, 0, 0, 613, 0, 0, 0, 0, 0, 0, 0, 833, 0, 0, 885, 886, 0, 0, 632, 633, 0, 0, 634, 635, 830, 636, 637, 638, 4910, 0, 639, 0, 640, 641, 0, 0, 4911, 642, 0, 643, 0, 0, 0, 887, 888, 0, 0, 0, 0, 0, 788, 0, 788, 788, 0, 833, 0, 788, 788, 788, 833, 788, 788, 833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 788, 788, 788, 788, 0, 0, 0, 1091, 833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0, 0, 645, 0, 0, 0, 0, 0, 833, 0, 0, 833, 0, 833, 833, 833, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 899, 899, 899, 899, 899, 899, 0, 899, 899, 899, 899, 899, 899, 0, 0, 0, 899, 899, 0, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 0, 899, 0, 0, 0, 0, 779, 826, 0, 0, 0, 0, 889, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 4912, 4913, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, 0, 1596, 1597, 0, 0, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1858, 1858, 1610, 0, 0, 0, 0, 0, 0, 788, 1858, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1275, 1275, 0, 0, 0, 1102, 1611, 1102, 0, 0, 0, 1612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 1102, 1102, 1102, 1102, 1102, 0, 1102, 1102, 1102, 1102, 1102, 1102, 0, 0, 1102, 0, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, 0, 0, 0, 0, 0, 0, 1102, 779, 0, 0, 0, 0, 0, 779, 779, 0, 0, 0, 1615, 0, 0, 0, 779, 779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, 0, 779, 1616, 0, 0, 0, 826, 0, 0, 0, 0, 0, 0, 0, 826, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 0, 1636, 0, 826, 826, 0, 774, 826, 0, 0, 0, 0, 0, 0, 0, 833, 1557, 1558, 1559, 1560, 833, 0, -355, 0, 0, 2, -3057, 0, 0, 833, 0, 0, 889, 889, 889, 889, 889, 889, 0, 889, 889, 0, 0, 1288, 0, 0, 0, 0, 889, 889, 889, 0, 0, 0, 0, 0, 0, 0, 0, 1288, 0, 1288, 788, 0, 833, 0, 1288, 788, 788, 833, 788, 788, 833, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 0, 788, 788, 788, 788, 833, 1071, 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 1071, 0, 1071, 0, 1071, 1071, 0, 1071, 0, 1071, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 33, 34, 0, 35, 1071, 0, 0, 0, 0, 0, 0, 37, 38, 156, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 0, 0, 1071, 1071, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 1071, 1071, 0, 0, 0, 1071, 1071, 48, 1071, 50, 0, 0, 157, 0, 0, 0, 768, 0, 0, 0, 183, 1071, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 0, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, -592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 1275, 0, 0, 0, 0, 0, 0, 0, -708, 779, 0, 0, 779, 779, 0, 0, 0, 0, 0, 19, 20, 779, 779, 0, -592, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1039, 0, 0, 0, 0, 0, 1275, 1041, 0, 826, 0, 0, 0, 1275, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1051, 1052, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 826, 1065, 1066, 0, 0, 0, 826, 0, 0, 0, 0, 0, 0, 0, 0, 1683, 1684, 826, 0, 1685, 1686, 0, 1687, 1688, 1689, 0, 0, 1690, 0, 1691, 1692, 0, 0, 0, 1693, 0, 1694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, 0, 779, 779, 0, 826, 0, 779, 779, 779, 826, 779, 779, 826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, 779, 779, 779, 0, 0, 2112, 2113, 826, 0, 2114, 2115, 0, 2116, 2117, 2118, 0, 0, 2119, 0, 2120, 2121, 0, 0, 0, 2122, 826, 2123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1697, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 826, 0, 0, 826, 0, 826, 826, 826, 0, 0, 0, 0, 0, 0, 2125, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 2113, 0, 0, 2114, 2115, 826, 2116, 2117, 2118, 0, 0, 2119, 0, 2120, 2121, 0, 0, 0, 2122, 0, 2123, 0, 0, 0, 0, 0, 2124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2128, 0, 0, 0, 0, 2129, 889, 889, 889, 889, 889, 889, 0, 889, 889, 889, 889, 889, 889, 0, 2125, 0, 889, 889, 0, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 0, 889, 0, 0, 0, 0, 1700, 0, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 2126, 1714, 1715, 1716, 1717, 0, 0, 1718, 0, 2128, 1719, 0, 0, 0, 2129, 0, 0, 0, 2134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2138, 0, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 0, 2152, 2153, 2154, 2155, 0, 0, 2156, 0, 2134, 2157, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, 2137, 0, 0, 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2138, 0, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 0, 2152, 2153, 2154, 2155, 0, 0, 2156, 0, 0, 2157, 0, 0, 0, 1071, 774, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 1071, 0, 1071, 1071, 1071, 1071, 1071, 0, 1071, 1071, 1071, 1071, 1071, 1071, 0, 0, 1071, 0, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 4229, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 0, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 0, 0, 826, 1028, 0, 0, 1029, 826, 1030, 0, 0, 0, 0, 0, 0, 0, 826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 1275, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 1275, 0, 1275, 779, -708, 826, 0, 1275, 779, 779, 826, 779, 779, 826, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 779, 779, 779, 779, 826, 1039, 0, 0, 0, 0, 0, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1051, 1052, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 788, 1858, 0, 0, 788, 0, 0, 0, 788, 833, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 788, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1065, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 1102, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 0, 1858, 0, 1858, 1019, 1020, 1021, 0, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 400, 0, 1102, 0, 1102, 1026, 1027, 0, 1102, 0, 1028, 0, 0, 1029, 0, 1030, 0, 4617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1039, 0, 0, 0, 0, 0, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1051, 1052, 407, 0, 0, 0, 0, 1288, 0, 0, 183, 0, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1858, 0, 1065, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 788, 0, 788, 0, 0, 0, 788, 0, 0, 788, 788, 788, 0, 788, 788, 788, 788, 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 3806, 399, 0, 899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 833, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1228, 0, 0, 0, 0, 1596, 1597, 0, 0, 1598, 1599, 1229, 1600, 1601, 1602, 0, 1603, 1604, 0, 1605, 1606, 0, 19, 20, 1607, 0, 1608, 0, 0, 0, 24, 0, 1609, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 1102, 0, 1102, 1102, 1858, 0, 1858, 0, 0, 0, 0, 0, 1102, 0, 33, 34, 1858, 35, 0, 0, 1610, 0, 0, 1102, 0, 37, 38, 402, 1230, 1102, 0, 1102, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 1102, 0, 0, 1102, 1102, 0, 1102, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1231, 0, 407, 0, 0, 1102, 1611, 0, 0, 0, 183, 1612, 184, 0, 0, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 1614, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 788, 788, 788, 0, 0, 788, 788, 0, 788, 788, 788, 788, 788, 0, 0, 0, 0, 416, 417, 0, 0, 0, 0, 0, 1288, 1615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1858, 0, 0, 0, 0, 418, 419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 0, 1636, 788, 0, 0, 1637, 774, 788, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 4953, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 0, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 400, 0, 1102, 1102, 1858, 1026, 1027, 0, 1102, 1102, 1028, 0, 0, 1029, 0, 1030, 1102, 1102, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1039, 1102, 0, 0, 0, 0, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 1102, 1102, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1051, 1052, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 779, 0, 0, 1062, 779, 0, 0, 0, 779, 826, 0, 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 1065, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 788, 0, 788, 0, 0, 0, 0, 788, 0, 0, 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 1071, 0, 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 1102, 0, 0, 37, 38, 156, 0, 1071, 0, 0, 0, 0, 0, 41, 0, 42, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 1102, 0, 0, 1102, 48, 1102, 50, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 340, 0, 0, 0, 0, 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 788, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 632, 633, 0, 0, 634, 635, 4926, 636, 637, 638, 0, 0, 639, 6, 640, 641, 7, 0, 4927, 642, 8, 643, 1275, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 788, 0, 1102, 0, 0, 12, 13, 0, 644, 0, 0, 0, 0, 0, 0, 1102, 1228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1229, 1102, 0, 1102, 0, 1102, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 1230, 1807, 0, 0, 0, 0, 0, 403, 833, 42, 404, 0, 0, 0, 0, 0, 0, 0, 1275, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1231, 0, 407, 0, 0, 779, 0, 779, 0, 0, 183, 779, 184, 0, 779, 779, 779, 0, 779, 779, 779, 779, 779, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, -355, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 833, 661, 662, 663, 664, 416, 417, 665, 4928, 4929, 666, 0, 889, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 418, 419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 790, 835, 826, 0, 0, 0, 901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 12, 13, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, -917, 0, 639, 0, 640, 641, 0, 0, 0, 642, 1177, 643, 0, 0, 0, 0, 0, 0, 19, 20, 0, 1102, 0, 1105, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 1071, 1071, 0, 0, 0, 0, 644, 901, 0, 0, 1071, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 1071, 37, 38, 156, 0, 0, 1071, 0, 1071, 0, 0, 41, 0, 42, 0, 0, 0, 0, 0, 1071, 0, 0, 1071, 1071, 0, 1071, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 645, 0, 48, 0, 50, 0, 0, 157, 0, 0, 0, 1071, 0, 0, 646, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1290, 1290, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, 779, 779, 0, 0, 779, 779, 0, 779, 779, 779, 779, 779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1275, 0, 0, 0, 0, 0, 0, 0, 0, 790, 0, 0, 0, 0, 0, 0, 0, 790, 0, 0, 0, 0, 0, 790, 790, 0, 0, 0, 0, 0, 0, 0, 790, 790, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 790, 665, 790, 0, 666, 0, 0, 835, 667, 0, 0, 0, 0, 0, 0, 835, 0, 779, 0, 0, 0, 0, 779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 835, 835, 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 901, 901, 901, 901, 901, 901, 0, 901, 901, 0, 0, 0, 0, 0, 0, 0, 901, 901, 901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 1071, 0, 0, 0, 0, 1071, 1071, 0, 0, 0, 0, 0, 0, 1071, 1071, 0, 0, 1071, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 1105, 0, 0, 736, 119, 0, 0, 2, 0, 737, 738, 388, 0, 0, 0, 0, 0, 0, 389, 739, 0, 0, 740, 741, 0, 0, 742, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 278, 1474, 0, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 6, 0, 0, 7, 750, 0, 0, 8, 0, 0, 0, 0, 1105, 400, 1105, 0, 1105, 1105, 0, 1105, 0, 1105, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 752, 1071, 1071, 0, 0, 0, 753, 0, 0, 0, 0, 1105, 1105, 1105, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 1105, 1105, 0, 19, 20, 1105, 1105, 0, 1105, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 779, 184, 779, 0, 0, 0, 769, 779, 0, 0, 779, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 770, 771, 772, 119, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 0, 1071, 0, 0, 0, 0, 1071, 0, 0, 774, 0, 0, 0, 1290, 1071, 0, 0, 0, 0, 0, 0, 0, 790, 775, 776, 790, 790, 840, 0, 0, 0, 0, 0, 0, 790, 790, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 777, 778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1290, 0, 1071, 835, 0, 0, 0, 1290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 1071, 0, 0, 1071, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 779, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 779, 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 1294, 1294, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 790, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 4234, 0, 0, 0, 0, 0, 835, 0, 0, 0, 0, 0, 835, 0, 0, 779, 0, 1071, 0, 0, 0, 54, 0, 835, 0, 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 1071, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 790, 0, 790, 790, 0, 835, 0, 790, 790, 790, 835, 790, 790, 835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 790, 790, 790, 790, 0, 1561, 840, 0, 835, 0, 0, 0, 0, 0, 840, 0, 0, 0, 0, 826, 0, 0, 0, 0, 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 840, 840, 0, 1638, 840, 0, 0, 0, 0, 0, 0, 0, 835, 0, 0, 835, 0, 835, 835, 835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1596, 1597, 0, 0, 1598, 1599, 835, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 826, 0, 0, 0, 901, 901, 901, 901, 901, 901, 0, 901, 901, 901, 901, 901, 901, 0, 1610, 0, 901, 901, 0, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 0, 901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 0, 1611, 0, 0, 0, 0, 1612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 790, 1616, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 0, 1636, 0, 0, 0, 1105, 774, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 1105, 0, 1105, 1105, 1105, 1105, 1105, 0, 1105, 1105, 1105, 1105, 1105, 1105, 0, 0, 1105, 0, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1294, 0, 0, 0, 385, 119, 0, 0, 2, -3057, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 0, 0, 0, 0, 1294, 0, 2163, 840, 0, 0, 0, 1294, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 835, 0, 0, 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1290, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1290, 0, 1290, 790, 0, 835, 0, 1290, 790, 790, 835, 790, 790, 835, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 790, 790, 790, 790, 835, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 1561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 612, 1561, 0, 0, 406, 840, 45, 0, 1561, 1561, 0, 840, 0, 0, 0, 48, 1561, 50, 1561, 0, 407, 0, 840, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1561, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 840, 0, 0, 0, 0, 840, 0, 0, 840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 0, 0, 0, 0, 840, 0, 0, 1638, 0, 0, 0, 0, 0, 1638, 0, 0, 0, 0, 0, 0, 0, 0, 840, 0, 0, 0, 0, 418, 419, 0, 0, 0, 0, 0, 0, 0, 1638, 1638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 840, 0, 0, 840, 0, 840, 840, 840, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 840, 0, 1638, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 5123, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 0, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1039, 0, 0, 0, 0, 0, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1051, 1052, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1065, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 0, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 2163, 0, 0, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 1561, 0, 840, 1028, 1561, 1561, 1029, 840, 1030, 0, 0, 0, 1561, 0, 1561, 0, 840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 1294, 1031, 0, 2163, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 1294, 0, 1294, 0, -708, 840, 0, 1294, 0, 0, 840, 0, 0, 840, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 840, 1039, 1638, 0, 0, 0, 0, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1051, 1052, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 1004, 1062, 1005, 119, 0, 0, 2, -3057, 1006, 1007, 388, 0, 0, 0, 0, 1063, 1064, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 0, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 1065, 1066, 0, 0, 1019, 1020, 1021, 0, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -708, -708, -708, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1039, 0, 0, 0, 0, 0, 0, 1041, 0, 0, 0, 0, 0, 0, 1042, 1043, 33, 34, 0, 35, 0, 1045, 1046, 940, 1047, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1051, 1052, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1065, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 736, 119, 0, 0, 2, 0, 737, 738, 388, 0, 0, 0, 0, 0, 0, 389, 739, 0, 0, 740, 741, 0, 0, 742, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 752, 790, 0, 0, 0, 790, 753, 0, 0, 790, 835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, 790, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 1105, 0, 0, 0, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 769, 0, 0, 1105, 0, 1105, 0, 0, 0, 1105, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 770, 771, 772, 0, 0, 736, 119, 0, 0, 2, 1105, 737, 738, 388, 0, 0, 773, 0, 0, 0, 389, 739, 0, 0, 740, 741, 774, 0, 742, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 278, 775, 776, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 777, 778, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 752, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 1290, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 770, 771, 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 1290, 0, 0, 0, 0, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 775, 776, 0, 790, 0, 790, 0, 0, 0, 790, 0, 0, 790, 790, 790, 0, 790, 790, 790, 790, 790, 0, 0, 0, 0, 0, 0, 0, 0, 777, 778, 0, 0, 0, 1638, 0, 0, 0, 1638, 0, 0, 0, 0, 0, 0, 1638, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4971, 0, 639, 0, 640, 641, 0, 0, 4972, 642, 0, 643, 0, 1561, 0, 1561, 1561, 0, 1638, 0, 0, 1561, 1561, 1561, 1638, 1561, 1561, 1638, 901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1561, 1561, 1561, 1561, 0, 644, 0, 0, 0, 0, 1638, 0, 0, 0, 0, 0, 835, 1596, 1597, 0, 4333, 1598, 1599, 4334, 1600, 1601, 1602, 1638, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 0, 0, 0, 0, 1638, 0, 0, 1638, 0, 0, 1638, 1638, 1638, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 1638, 0, 1610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 1105, 1105, 0, 0, 1596, 1597, 0, 0, 1598, 1599, 1105, 1600, 1601, 1602, 0, 3372, 1604, 0, 1605, 1606, 0, 1105, 0, 1607, 0, 1608, 0, 1105, 0, 1105, 0, 1609, 0, 1611, 0, 0, 0, 0, 1612, 0, 1105, 0, 0, 1105, 1105, 0, 1105, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 1610, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 840, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 4973, 4974, 666, 0, 1615, 0, 667, 0, 0, 0, 1611, 0, 0, 0, 0, 1612, 0, 790, 790, 790, 0, 0, 790, 790, 1613, 790, 790, 790, 790, 790, 0, 0, 0, 0, 0, 0, 0, 1614, 1616, 0, 0, 1290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 0, 1636, 0, 0, 0, 1637, 774, 0, 0, 0, 0, 0, 1561, 0, 0, 1615, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 790, 0, 0, 0, 0, 790, 0, 0, 0, 1616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 0, 1636, 0, 0, 0, 1637, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 1105, 0, 0, 0, 0, 1105, 1105, 0, 0, 0, 0, 0, 0, 1105, 1105, 0, 0, 1105, 0, 0, 0, 0, 736, 119, 0, 0, 2, 0, 737, 738, 388, 0, 0, 0, 0, 0, 0, 389, 739, 0, 0, 740, 741, 0, 0, 742, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 278, 2077, 0, 744, 745, 746, 1294, 747, 748, 0, 749, 0, 1638, 0, 0, 1638, 0, 0, 0, 0, 0, 6, 1638, 0, 7, 750, 0, 0, 8, 0, 0, 0, 0, 0, 400, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2163, 0, 2163, 1561, 0, 1638, 0, 0, 2163, 1561, 1561, 1638, 1561, 1561, 1638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 752, 0, 0, 0, 0, 0, 753, 0, 0, 0, 1561, 1561, 1561, 1561, 1638, 0, 1105, 1105, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 0, 0, 0, 1294, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 790, 0, 790, 0, 408, 409, 410, 790, 54, 411, 790, 412, 0, 0, 770, 771, 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 0, 0, 0, 0, 0, 0, 2, -3057, 0, 774, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 1105, 0, 775, 776, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 840, 1638, 0, 0, 0, 0, 0, 0, 4, 777, 778, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 1105, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 19, 20, 0, 0, 0, 790, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 632, 633, 28, 0, 634, 635, 0, 636, 637, 638, 5127, 0, 639, 0, 640, 641, 0, 0, 5128, 642, 0, 643, 0, 0, 0, 33, 34, 790, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 2163, 0, 0, 0, 0, 790, 0, 1105, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 645, 0, 1105, 0, 0, 0, 0, 0, 0, 1294, 0, 0, 0, 0, 646, 1105, 0, 1105, 0, 1105, 0, 736, 119, 0, 0, 2, 0, 737, 738, 388, 0, 0, 0, 0, 0, 0, 389, 739, 0, 0, 740, 741, 0, 0, 742, 0, 743, 0, 0, 0, 0, 2163, 0, 0, 0, 278, 2081, 0, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 0, 1561, 8, 1561, 0, 0, 0, 835, 400, 0, 0, 1561, 0, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 752, 0, 0, 0, 0, 647, 753, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 754, 661, 662, 663, 664, 0, 0, 665, 5129, 5130, 666, 19, 20, 0, 667, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 835, 0, 0, 0, 33, 34, 0, 35, 758, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 1105, 184, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 770, 771, 772, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 736, 119, 0, 773, 2, 0, 737, 738, 388, 0, 0, 0, 0, 774, 0, 389, 739, 0, 0, 740, 741, 0, 0, 742, 0, 743, 0, 775, 776, 0, 0, 0, 0, 0, 278, 2089, 0, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 777, 778, 7, 750, 0, 0, 8, 0, 0, 0, 0, 0, 400, 1561, 1561, 1561, 0, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 752, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 1561, 0, 755, 0, 756, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 770, 771, 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 0, 0, 0, 0, 0, 0, 736, 119, 0, 774, 2, 0, 737, 738, 388, 0, 0, 0, 0, 0, 0, 389, 739, 775, 776, 740, 741, 0, 0, 742, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 278, 2091, 0, 744, 745, 746, 0, 747, 748, 0, 749, 0, 777, 778, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1561, 1561, 0, 1561, 0, 0, 1561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 752, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 1561, 0, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 769, 0, 0, 0, 0, 840, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 770, 771, 772, 0, 0, 0, 0, 0, 0, 1561, 0, 0, 0, 0, 0, 0, 773, 0, 0, 0, 0, 0, 0, 736, 119, 0, 774, 2, 0, 737, 738, 388, 0, 0, 0, 0, 0, 0, 389, 739, 775, 776, 740, 741, 0, 0, 742, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, 744, 745, 746, 0, 747, 748, 0, 749, 0, 777, 778, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 1638, 840, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 752, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, 1638, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 770, 771, 772, 0, 0, 736, 119, 0, 0, 2, 0, 737, 738, 388, 0, 0, 773, 0, 0, 0, 389, 739, 0, 0, 740, 741, 774, 0, 742, 0, 743, 0, 0, 4804, 0, 0, 0, 0, 0, 278, 775, 776, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 777, 778, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 752, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 770, 771, 772, 0, 0, 736, 119, 0, 0, 2, 0, 737, 738, 388, 0, 0, 773, 0, 0, 0, 389, 739, 0, 0, 740, 741, 774, 0, 742, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 278, 775, 776, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 777, 778, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 752, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 756, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 759, 42, 760, 0, 0, 761, 762, 763, 764, 765, 0, 0, 0, 766, 0, 0, 0, 767, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 770, 771, 772, 0, 0, 862, 119, 0, 0, 2, 0, 863, 864, 388, 0, 0, 773, 0, 0, 0, 389, 865, 0, 0, 866, 867, 774, 1154, 868, 0, 869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 775, 776, 870, 871, 872, 0, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 777, 778, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 2062, 639, 0, 640, 641, 0, 0, 0, 642, -917, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 875, 0, 0, 0, 0, 0, 0, 0, 876, 0, 0, 0, 0, 0, 877, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 880, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 881, 882, 883, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 884, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 886, 396, 1226, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 887, 888, 1162, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 1227, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 0, 0, 667, 0, 0, 0, 0, 1228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 1230, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1231, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 2, 801, 119, 0, 0, 2, 0, 802, 803, 388, 0, 0, 0, 0, 0, 0, 389, 804, 0, 0, 805, 806, 0, 0, 807, 0, 808, 0, 0, 0, 0, 0, 0, 0, 0, 278, 416, 417, 809, 810, 811, 0, 812, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 6, 0, 8, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 813, 0, 16, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 19, 20, 0, 0, 0, 19, 20, 0, 24, 0, 0, 25, 26, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 33, 34, 0, 35, 0, 0, 37, 38, 0, 0, 0, 37, 38, 402, 0, 0, 41, 0, 42, 0, 0, 403, 0, 42, 815, 0, 0, 0, 0, 0, 0, 43, 0, 44, 0, 816, 45, 0, 0, 817, 0, 45, 0, 0, 0, 48, 49, 50, 0, 0, 48, 0, 50, 0, 4155, 407, 0, 0, 52, 0, 53, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 818, 819, 820, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 821, 0, 0, 0, 389, 390, 0, 0, 391, 392, 774, 0, 393, 0, 394, 609, 0, 0, 0, 0, 0, 0, 0, 0, 822, 823, 396, 397, 398, 610, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 824, 825, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 612, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 862, 119, 0, 0, 2, 0, 863, 864, 388, 0, 0, 0, 0, 0, 0, 389, 865, 0, 0, 866, 867, 0, 0, 868, 613, 869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 870, 871, 872, 0, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, -917, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 875, 0, 0, 0, 0, 0, 0, 0, 876, 0, 0, 0, 0, 0, 877, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 880, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 881, 882, 883, 0, 0, 801, 119, 0, 0, 2, 0, 802, 803, 388, 0, 0, 884, 0, 0, 0, 389, 804, 0, 0, 805, 806, 0, 0, 807, 0, 808, 0, 0, 0, 0, 0, 0, 0, 0, 278, 885, 886, 809, 810, 811, 0, 812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 887, 888, 1162, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 0, 0, 667, 0, 813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 816, 0, 0, 0, 817, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 818, 819, 820, 0, 0, 385, 119, 0, 0, 2, -3057, 386, 387, 388, 0, 0, 821, 0, 0, 0, 389, 390, 0, 0, 391, 392, 774, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 822, 823, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 824, 825, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4264, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 4265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 591, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 1596, 1597, 0, 4010, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 1611, 0, 48, 0, 50, 1612, 0, 407, 0, 0, 0, 0, 0, 0, 1613, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 0, 385, 119, 592, 593, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 1615, 0, 0, 416, 417, 0, 0, 0, 0, 0, 396, 397, 398, 1451, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 418, 419, 1616, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 0, 1636, 0, 12, 13, 1637, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 0, 385, 119, 592, 593, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 416, 417, 0, 0, 0, 0, 0, 396, 397, 398, 1574, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 418, 419, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 1596, 1597, 0, 4016, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 1611, 0, 48, 0, 50, 1612, 0, 407, 0, 0, 0, 0, 0, 0, 1613, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 0, 385, 119, 592, 593, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 1615, 0, 0, 416, 417, 0, 0, 0, 0, 0, 396, 397, 398, 1663, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 418, 419, 1616, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 0, 1636, 0, 12, 13, 1637, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 0, 385, 119, 592, 593, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 416, 417, 0, 0, 0, 0, 0, 396, 397, 398, 1842, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 418, 419, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 1596, 1597, 0, 4337, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 1611, 0, 48, 0, 50, 1612, 0, 407, 0, 0, 0, 0, 0, 0, 1613, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 0, 385, 119, 592, 593, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 1615, 0, 0, 416, 417, 0, 0, 0, 0, 0, 396, 397, 398, 2071, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 418, 419, 1616, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 0, 0, 1636, 0, 12, 13, 1637, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 0, 385, 119, 592, 593, 2, -3057, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 2174, 0, 0, 0, 416, 417, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 418, 419, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 401, 0, 639, 0, 640, 641, 0, 0, 988, 642, 0, 643, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 644, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 645, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 385, 119, 0, 0, 2, -3057, 386, 387, 388, 0, 2175, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 416, 417, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2045, 0, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 418, 419, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 989, 990, 666, 19, 20, 0, 667, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 385, 119, 0, 0, 2, -3057, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 416, 417, 0, 0, 2045, 0, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 418, 419, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4956, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 1596, 1597, 0, 4343, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 1611, 0, 48, 0, 50, 1612, 0, 407, 0, 0, 0, 0, 0, 0, 1613, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 707, 393, 0, 394, 0, 0, 0, 0, 0, 1615, 0, 0, 416, 417, 708, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 418, 419, 1616, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 12, 13, 1636, 0, 0, 0, 1637, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 1137, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 395, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1683, 1684, 0, 0, 1685, 1686, 0, 1687, 1688, 1689, 0, 0, 1690, 0, 1691, 1692, 0, 0, 0, 1693, 0, 1694, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1695, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 1696, 406, 0, 45, 0, 0, 0, 0, 0, 1697, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 1698, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 1699, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 609, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1700, 0, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 0, 0, 1718, 12, 13, 1719, 0, 632, 633, 1720, 3608, 634, 635, 0, 636, 637, 638, 3609, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 612, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, -3057, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 613, 394, 1417, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 632, 633, 667, 4017, 634, 635, 0, 636, 637, 638, 4018, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 3234, 0, 486, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3662, 0, 0, 0, 0, 0, 0, 0, 3663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 632, 633, 0, 4048, 634, 635, 0, 636, 637, 638, 4049, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 1005, 119, 0, 0, 2, 0, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 0, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 609, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 632, 633, 667, 4076, 634, 635, 0, 636, 637, 638, 4077, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3719, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 385, 119, 0, 0, 2, -3057, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 613, 394, 0, 0, 0, 0, 0, 0, 0, 0, 395, 1063, 1064, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 1065, 1066, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 632, 633, 667, 0, 634, 635, 0, 636, 637, 638, 5267, 0, 639, 0, 640, 641, 0, 0, 5268, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 385, 119, 0, 0, 2, -3057, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 416, 417, 0, 0, 3971, 0, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 418, 419, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 5269, 5270, 666, 0, 12, 13, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4430, 0, 0, 0, 0, 0, 0, 0, 4431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4533, 0, 0, 0, 0, 0, 0, 0, 4534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 632, 633, 0, 4344, 634, 635, 0, 636, 637, 638, 4345, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, -3057, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1870, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 632, 633, 667, 5256, 634, 635, 0, 636, 637, 638, 5257, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, -3057, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3662, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4755, 0, 0, 0, 0, 0, 0, 0, 4756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4533, 0, 0, 0, 0, 0, 0, 0, 4861, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4755, 0, 0, 0, 0, 0, 0, 0, 4995, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5374, 0, 0, 0, 0, 0, 0, 0, 5414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 1654, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 395, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, -3057, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 1596, 1597, 0, 4543, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 1611, 0, 48, 0, 50, 1612, 0, 407, 0, 0, 0, 0, 0, 0, 1613, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 1615, 0, 0, 416, 417, 977, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 418, 419, 1616, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 12, 13, 1636, 0, 0, 0, 1637, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 1877, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 1162, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 632, 633, 667, 0, 634, 635, 0, 636, 637, 638, 2044, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 611, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 632, 633, 667, 0, 634, 635, 0, 636, 637, 638, 5271, 0, 639, 0, 640, 641, 0, 0, 5272, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 416, 417, 0, 0, 2045, 0, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 418, 419, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 5273, 5274, 666, 0, 12, 13, 667, 0, 0, 1596, 1597, 0, 5368, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 1611, 0, 48, 0, 50, 1612, 0, 407, 0, 0, 0, 0, 0, 0, 1613, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 1615, 0, 0, 416, 417, 3344, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 418, 419, 1616, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 12, 13, 1636, 0, 0, 0, 1637, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 4392, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 1596, 1597, 0, 5407, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 1611, 0, 48, 0, 50, 1612, 0, 407, 0, 0, 0, 0, 0, 0, 1613, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 1615, 0, 0, 416, 417, 4503, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 418, 419, 1616, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 0, 1635, 12, 13, 1636, 0, 0, 0, 1637, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 5275, 0, 639, 0, 640, 641, 0, 0, 5276, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 0, 0, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 416, 417, 0, 0, 5042, 0, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 418, 419, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 5277, 5278, 666, 0, 12, 13, 667, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 2062, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 5264, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 632, 633, 667, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 3502, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5374, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 632, 633, 667, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 3625, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 385, 119, 0, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 0, 632, 633, 667, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 3648, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 406, 0, 45, 0, 0, 0, 0, 0, 645, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 646, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 1005, 119, 0, 0, 2, 0, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 0, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 1015, 1016, 1017, 0, 1018, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 5315, 0, 639, 6, 640, 641, 7, 0, 5316, 642, 8, 643, 418, 419, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 12, 13, 666, 644, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 1039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 1063, 1064, 665, 5317, 5318, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1065, 1066, 2215, 0, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2215, 0, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 3944, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2874, 0, 2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2884, 2885, 2886, 2887, 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, 2896, 2897, 2898, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2906, 2907, 2908, 2909, 2910, 2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2919, 2920, 2921, 2922, 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931, 2932, 2933, 2934, 2935, 2936, 2937, 2938, 2939, 2940, 2941, 2942, 2943, 2944, 2945, 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954, 2955, 2956, 2957, 2958, 2959, 2960, 2961, 2962, 2963, 2964, 2965, 2966, 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2974, 2975, 3949, 2976, 2977, 2978, 2979, 2980, 2981, 2982, 2983, 2984, 2985, 2986, 2987, 2988, 2989, 2990, 2991, 2992, 2993, 2994, 2995, 2996, 2997, 2998, 2999, 3000, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3020, 3021, 3022, 3023, 3024, 3025, 3026, 3027, 3028, 3029, 3030, 3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3042, 3043, 3044, 3045, 3046, 3047, 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075, 3076, 3077, 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, 3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148, 3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, 3183, 3184, 3185, 3186, 3187, 3188, 3189, 3190, 3191, 3192, 3193, 3194, 3195, 3196, 3197, 3198, 3199, 3200, 3201, 2874, 0, 2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2884, 2885, 2886, 2887, 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, 2896, 2897, 2898, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2906, 2907, 2908, 2909, 2910, 2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2919, 2920, 2921, 2922, 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931, 2932, 2933, 2934, 2935, 2936, 2937, 2938, 2939, 2940, 2941, 2942, 2943, 2944, 2945, 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954, 2955, 2956, 2957, 2958, 2959, 2960, 2961, 2962, 2963, 2964, 2965, 2966, 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2974, 2975, 0, 2976, 2977, 2978, 2979, 2980, 2981, 2982, 2983, 2984, 2985, 2986, 2987, 2988, 2989, 2990, 2991, 2992, 2993, 2994, 2995, 2996, 2997, 2998, 2999, 3000, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3020, 3021, 3022, 3023, 3024, 3025, 3026, 3027, 3028, 3029, 3030, 3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3042, 3043, 3044, 3045, 3046, 3047, 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075, 3076, 3077, 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, 3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148, 3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, 3183, 3184, 3185, 3186, 3187, 3188, 3189, 3190, 3191, 3192, 3193, 3194, 3195, 3196, 3197, 3198, 3199, 3200, 3201, 2215, 0, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 0, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2546, 0, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 3946, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640, 0, 2641, 2642, 2643, 2644, 0, 2645, 2646, 2647, 2648, 2649, 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680, 2681, 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735, 2736, 2737, 2738, 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751, 2752, 2753, 2754, 2755, 2756, 2757, 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2773, 2774, 2775, 2776, 2777, 2778, 2779, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788, 2789, 2790, 2791, 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799, 2800, 2801, 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2821, 2822, 2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830, 2831, 2832, 2833, 2834, 2835, 2836, 2837, 2838, 2839, 2840, 2841, 2842, 2843, 2844, 2845, 2846, 2847, 2848, 2849, 2850, 2851, 2852, 2853, 2854, 2855, 2856, 2857, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2546, 0, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 0, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640, 0, 2641, 2642, 2643, 2644, 0, 2645, 2646, 2647, 2648, 2649, 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680, 2681, 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735, 2736, 2737, 2738, 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751, 2752, 2753, 2754, 2755, 2756, 2757, 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2773, 2774, 2775, 2776, 2777, 2778, 2779, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788, 2789, 2790, 2791, 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799, 2800, 2801, 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2821, 2822, 2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830, 2831, 2832, 2833, 2834, 2835, 2836, 2837, 2838, 2839, 2840, 2841, 2842, 2843, 2844, 2845, 2846, 2847, 2848, 2849, 2850, 2851, 2852, 2853, 2854, 2855, 2856, 2857, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 5332, 0, 639, 0, 640, 641, 0, 0, 5333, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 3671, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 3769, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 3770, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 3771, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 5334, 5335, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 3772, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 3773, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 3774, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 3775, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 3776, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 3777, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 3778, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 3779, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 3780, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 3781, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 1177, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 3793, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 3794, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 3805, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 3811, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 3913, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 3964, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 3998, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4001, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4007, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 4008, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4009, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4011, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4012, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 4015, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 4024, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4052, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4112, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4128, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4200, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4202, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4203, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4242, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4245, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4248, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4251, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 4304, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 4309, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4311, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4330, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 4335, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4336, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4338, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4339, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 4342, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 4349, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4372, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4381, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4397, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4398, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4399, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4400, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4401, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4402, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4403, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4404, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4405, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4406, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4407, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4408, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4435, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4449, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4454, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4455, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4456, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4457, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4458, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4459, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4460, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4461, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4462, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4463, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4464, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4465, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4466, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4473, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4477, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4480, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4481, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4482, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4483, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4484, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4485, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4486, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4487, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4488, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4489, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4490, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4491, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4492, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4497, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4501, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4525, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4531, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4539, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 4544, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 4602, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4603, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4604, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4605, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4606, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4607, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4608, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4609, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4610, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4611, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4612, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4613, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4614, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 4632, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 4635, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4659, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4665, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4666, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4667, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4668, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4669, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4677, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4681, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 4682, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 4683, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4688, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4698, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4702, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4703, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4704, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4705, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4706, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4707, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4708, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4709, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4710, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4711, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4712, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4713, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4731, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4736, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4740, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 4760, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 4781, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4782, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 4783, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 4812, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4814, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 4821, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 4830, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4838, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4851, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4856, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4864, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 4871, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 4916, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4917, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 4962, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 4963, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 4964, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 4965, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 4966, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 4967, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4976, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 4968, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 4978, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 4998, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 5016, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 5034, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 5086, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 5093, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 644, 0, 639, 0, 640, 641, 0, 0, 5158, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5159, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 645, 644, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 646, 0, 5160, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 632, 633, 0, 5163, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 645, 643, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 645, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5165, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5166, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5167, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 5168, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5170, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5171, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5172, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 5173, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 5194, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5218, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 644, 0, 639, 0, 640, 641, 0, 0, 5219, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5220, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 645, 644, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 646, 0, 5252, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5253, 642, 645, 643, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 645, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5254, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 5255, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 5266, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 5300, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 5320, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 5321, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 5325, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5329, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 5330, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5331, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 5341, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 5379, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 5382, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 5386, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 5388, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5389, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5390, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5391, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5392, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5393, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5394, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5395, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5396, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5408, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5409, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5410, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5418, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5419, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 645, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 646, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 5420, 642, 0, 643, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 4410, 638, 0, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 4654, 638, 0, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 0, 0, 647, 667, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 1326, 0, 665, 119, 0, 666, 2, -3057, 0, 667, 0, 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 0, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 1025, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -367, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 15, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 1334, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 1037, 1038, 0, 19, 20, -188, 21, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 0, 27, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 1040, 0, 0, 30, 0, 0, 170, 32, 0, 0, 0, 0, 0, 0, 33, 34, 1044, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 1336, 1337, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 46, 47, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 0, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 1025, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -368, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 15, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 1334, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 1037, 1038, 0, 19, 20, -188, 21, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 0, 27, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 1040, 0, 0, 30, 0, 0, 170, 32, 0, 0, 0, 0, 0, 0, 33, 34, 1044, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 1336, 1337, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 46, 47, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 0, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 1025, 0, 0, 930, 11, 0, 0, 0, 1330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 1369, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 1334, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 1037, 1038, 0, 19, 20, -188, 21, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 1370, 0, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 1040, 0, 0, 30, 0, 0, 170, 32, 0, 0, 0, 0, 0, 0, 33, 34, 1044, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 44, 0, 0, 45, 46, 47, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 0, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 1025, 0, 0, 930, 11, 0, 0, 0, 1330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 1369, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 1334, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 1037, 1038, 0, 19, 20, -188, 21, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 1370, 0, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 1040, 0, 0, 30, 0, 0, 170, 32, 0, 0, 0, 0, 0, 0, 33, 34, 1044, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 44, 0, 0, 45, 46, 47, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 3936, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 2204, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 3937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2206, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 0, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 0, 0, 0, 19, 20, -188, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 1370, 0, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 2204, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2206, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 0, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 0, 0, 0, 19, 20, -188, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 1370, 0, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 2204, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2206, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 0, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 0, 0, 0, 19, 20, -188, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 1370, 0, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 2204, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 4379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2206, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 0, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 0, 0, 0, 19, 20, -188, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 1370, 0, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 2204, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 4762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2206, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 0, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 0, 0, 0, 19, 20, -188, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 1370, 0, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 2204, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 4764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2206, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 0, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 0, 0, 0, 19, 20, -188, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 1370, 0, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 4993, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 2204, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2206, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 0, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 0, 0, 0, 19, 20, -188, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 1370, 0, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 2204, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 5000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2206, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 0, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 0, 0, 0, 19, 20, -188, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 1370, 0, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 2204, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 5002, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2206, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 0, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 0, 0, 0, 19, 20, -188, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 1370, 0, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 1326, 53, 0, 119, 0, -188, 2, -3057, 0, -188, 0, 0, 0, 296, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 2204, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2206, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 0, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 0, 0, 0, 19, 20, -188, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 1370, 0, 300, 0, 28, 0, 0, 0, 0, 301, 302, 0, 303, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 0, 53, 0, -4, 1, -188, 0, 0, 0, -188, 2, -3057, 0, 0, 0, 0, -188, 304, 305, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 9, -3039, 0, 0, -3125, 10, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 14, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 19, 20, -188, 21, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 0, 27, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 30, 0, 0, 31, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 44, 0, 0, 45, 46, 47, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 0, 53, 0, -5, 1, -188, 0, 0, 0, -188, 2, -3057, 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 9, -3039, 0, 0, -3125, 10, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 14, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 19, 20, -188, 21, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 0, 27, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 30, 0, 0, 31, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 3559, -188, -188, 0, 0, 0, -3086, -3086, 0, 0, 0, 0, 43, 0, 44, 0, 0, 45, 46, 47, -188, -188, -188, -188, -188, -188, 48, 49, 50, 0, 0, 3560, 0, 0, 0, -353, 0, 51, 0, 52, 0, 53, 0, 0, 0, -188, 0, 0, 0, -188, 0, 3561, 0, 0, 0, 0, -188, -3086, 0, 0, -3086, 0, 0, 54, -3086, 0, -3039, 0, 0, -3125, 3562, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3086, -3086, 0, 0, 0, 0, 3563, 0, 0, 0, 0, 0, 0, 0, 0, -3086, 0, -3086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3086, 0, 0, 0, 0, -3086, -3086, 0, 214, 0, 0, 0, 23, -3086, 3564, 0, -3086, -3086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 3565, 3566, 1129, 1130, 0, 0, -3086, -3086, 0, -3086, 0, 0, 0, 0, 0, 3559, 0, -3086, -3086, 0, 0, -3086, -3086, 0, 39, 3567, 0, -3086, 0, -3086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3086, 0, -3086, 0, 3560, -3086, 46, 47, 0, 0, 0, 0, 0, 0, -3086, -3086, -3086, 0, 0, 0, 0, 0, 0, -3086, 3561, 51, 3568, -3086, 0, -3086, -3086, 0, 0, -3086, 0, 0, 0, -3086, 0, -3039, 0, 0, -3125, 3562, 0, 0, 0, 0, 0, 0, 11, -3086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3086, -3086, 0, 0, 0, 0, 3563, 0, 0, 0, 0, 0, 0, 0, 0, -3086, 0, -3086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3086, 0, 0, 0, 0, -3086, -3086, 0, 214, 0, 0, 0, 23, -3086, 3564, 0, -3086, -3086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 3565, 3566, 1129, 1130, 0, 0, -3086, -3086, 0, -3086, 0, 0, 0, 0, 0, 0, 0, -3086, -3086, 0, 0, 0, 0, 0, 39, 3567, 0, -3086, 0, -3086, 0, 0, 0, 119, 0, 0, 2, -3057, 0, 0, 0, 0, -3086, 0, -3086, 0, 0, -3086, 46, 47, 0, 0, 0, 0, 0, 0, -3086, -3086, -3086, 0, 0, 3, 0, 0, 0, -3086, 0, 51, 3568, -3086, 0, -3086, 0, 0, 0, 0, 0, 0, 1383, 926, 1384, 4, 0, 0, 213, 0, 0, 6, 0, 0, 7, 1329, 0, -3086, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 1025, 0, 0, 1385, 11, 0, 0, 0, 1330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -131, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 0, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 1334, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 1037, 1038, 0, 19, 20, 0, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 1040, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 33, 34, 1044, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 44, 0, 0, 45, 46, 47, 119, 0, 0, 2, -3057, 0, 48, 49, 50, 0, 0, 0, 0, 0, 0, -353, 0, 51, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 941, 942, 943, 0, 54, 944, 1383, 926, 1384, 4, 0, 0, 213, 0, 0, 6, 0, 0, 7, 1329, 0, 0, 8, 9, -3039, 0, 929, -3125, 10, 0, 0, 1025, 0, 0, 1385, 11, 0, 0, 0, 1330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 0, 932, 0, 1333, 0, 0, 0, 0, 0, 16, 0, 17, 1334, 935, 936, 0, 1335, 0, 0, 0, 0, 0, 18, 938, 1037, 1038, 0, 19, 20, 0, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 1040, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 33, 34, 1044, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 44, 0, 0, 45, 46, 47, 0, 0, 0, 0, 0, 0, 48, 49, 50, 119, 0, 0, 2, -3057, 0, -353, 0, 51, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3533, 923, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1774, 213, 0, 0, 6, 0, 0, 7, 928, 0, 0, 8, 9, 0, 0, 929, 0, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 3534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 932, 0, 933, 0, 0, 0, 0, 0, 16, 0, 17, 934, 935, 936, 0, 937, 0, 0, 0, 0, 0, 220, 938, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 939, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1774, 213, 0, 0, 6, 0, 0, 7, 928, 0, 0, 8, 9, 0, 0, 929, 0, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 932, 0, 933, 0, 0, 0, 0, 0, 16, 0, 17, 934, 935, 936, 0, 937, 0, 0, 0, 0, 0, 220, 938, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 939, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1774, 213, 0, 0, 6, 0, 0, 7, 928, 0, 0, 8, 9, 0, 0, 929, 0, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 932, 0, 933, 0, 0, 0, 0, 0, 16, 0, 17, 934, 935, 936, 0, 937, 0, 0, 0, 0, 0, 220, 938, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 939, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1774, 213, 0, 0, 6, 0, 0, 7, 928, 0, 0, 8, 9, 0, 0, 929, 0, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 4125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 932, 0, 933, 0, 0, 0, 0, 0, 16, 0, 17, 934, 935, 936, 0, 937, 0, 0, 0, 0, 0, 220, 938, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 939, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1774, 213, 0, 0, 6, 0, 0, 7, 928, 0, 0, 8, 9, 0, 0, 929, 0, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 4548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 932, 0, 933, 0, 0, 0, 0, 0, 16, 0, 17, 934, 935, 936, 0, 937, 0, 0, 0, 0, 0, 220, 938, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 939, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1774, 213, 0, 0, 6, 0, 0, 7, 928, 0, 0, 8, 9, 0, 0, 929, 0, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 4550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 932, 0, 933, 0, 0, 0, 0, 0, 16, 0, 17, 934, 935, 936, 0, 937, 0, 0, 0, 0, 0, 220, 938, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 939, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4859, 923, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1774, 213, 0, 0, 6, 0, 0, 7, 928, 0, 0, 8, 9, 0, 0, 929, 0, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 932, 0, 933, 0, 0, 0, 0, 0, 16, 0, 17, 934, 935, 936, 0, 937, 0, 0, 0, 0, 0, 220, 938, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 939, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1774, 213, 0, 0, 6, 0, 0, 7, 928, 0, 0, 8, 9, 0, 0, 929, 0, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 4873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 932, 0, 933, 0, 0, 0, 0, 0, 16, 0, 17, 934, 935, 936, 0, 937, 0, 0, 0, 0, 0, 220, 938, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 939, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1774, 213, 0, 0, 6, 0, 0, 7, 928, 0, 0, 8, 9, 0, 0, 929, 0, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 4875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 932, 0, 933, 0, 0, 0, 0, 0, 16, 0, 17, 934, 935, 936, 0, 937, 0, 0, 0, 0, 0, 220, 938, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 939, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 0, 213, 0, 0, 6, 0, 0, 7, 928, 0, 0, 8, 9, 0, 0, 929, 0, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 0, 0, -3008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 932, 0, 933, 0, 0, 0, 0, 0, 16, 0, 17, 934, 935, 936, 0, 937, 0, 0, 0, 0, 0, 220, 938, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 939, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 0, 213, 0, 0, 6, 0, 0, 7, 928, 0, 0, 8, 9, 0, 0, 929, 0, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 0, 0, -3009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 932, 0, 933, 0, 0, 0, 0, 0, 16, 0, 17, 934, 935, 936, 0, 937, 0, 0, 0, 0, 0, 220, 938, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 939, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 119, 0, 0, 2, -3057, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1774, 213, 0, 0, 6, 0, 0, 7, 928, 0, 0, 8, 9, 0, 0, 929, 0, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 932, 0, 933, 0, 0, 0, 0, 0, 16, 0, 17, 934, 935, 936, 0, 937, 0, 0, 0, 0, 0, 220, 938, 0, 0, 0, 19, 20, 0, 0, 0, 0, 22, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 939, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 940, 2, -3057, 36, 37, 38, 0, 0, 0, 0, 0, 0, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 4, 0, 0, 213, 0, 0, 6, 0, 0, 7, 52, 0, 53, 8, 9, -3039, 0, 0, -3125, 10, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 19, 20, 0, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 215, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 39, 40, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 2, -3057, 0, 0, 0, 0, 43, 0, 44, 0, 0, 45, 46, 47, 0, 0, 0, 0, 0, 0, 48, 49, 50, 0, 0, 3, 0, 0, 0, -353, 0, 51, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 213, 0, 0, 6, 0, 0, 7, 2, -3057, 54, 8, 9, -3039, 0, 0, -3125, 10, 0, 0, 0, 1009, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -243, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 14, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 16, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 19, 20, 0, 214, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 30, 0, 0, 215, 32, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 36, 37, 38, 0, 19, 20, 0, 0, 39, 40, 0, 41, 24, 42, 0, 25, 26, 0, 0, 0, 0, 2, -3057, 0, 0, 0, 43, 0, 44, 0, 0, 45, 46, 47, 0, 0, 0, 0, 2, -3057, 48, 49, 50, 0, 0, 33, 34, 0, 35, -353, 0, 51, -243, 52, 0, 53, 37, 38, 156, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, -243, 0, 0, 6, 0, 0, 7, 0, 54, 0, 8, 0, 0, 0, 0, 0, 0, 45, 0, 0, 6, 0, 0, 7, 0, 0, 48, 8, 50, 0, 0, 157, 0, 0, 0, 768, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 156, 0, 0, 0, 33, 34, 0, 35, 41, 0, 42, 0, 0, 0, 0, 37, 38, 156, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 157, 0, 0, 45, 768, 0, 0, 0, 183, 0, 184, 0, 48, 0, 50, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54 }; #define yypact_value_is_default(yystate) \ ((yystate) == (-4563)) #define yytable_value_is_error(yytable_value) \ YYID (0) static const yytype_int16 yycheck[] = { 5, 277, 188, 175, 911, 630, 97, 108, 392, 496, 237, 188, 5, 781, 555, 139, 160, 494, 188, 974, 471, 1802, 1163, 1871, 1737, 476, 1029, 1551, 555, 188, 1778, 77, 470, 555, 2211, 1774, 504, 555, 476, 703, 704, 705, 724, 1993, 49, 1203, 12, 2204, 53, 1806, 565, 3258, 490, 1963, 1964, 174, 175, 1060, 1323, 66, 1510, 68, 153, 1412, 71, 198, 700, 3258, 700, 74, 75, 198, 77, 1806, 3505, 194, 195, 9, 1028, 11, 12, 565, 467, 195, 78, 90, 15, 979, 504, 80, 22, 1131, 15, 114, 297, 1045, 1241, 147, 209, 412, 32, 2061, 412, 3364, 36, 4381, 672, 673, 3503, 4182, 254, 4088, 1636, 79, 80, 1079, 1080, 4128, 146, 4184, 148, 705, 4381, 705, 4137, 4533, 704, 705, 704, 703, 504, 194, 195, 138, 1079, 1080, 504, 704, 705, 555, 703, 146, 10, 148, 504, 493, 1291, 705, 16, 17, 1095, 1601, 705, 21, 1471, 279, 704, 3364, 478, 27, 523, 29, 673, 31, 171, 172, 173, 4560, 4561, 174, 175, 3761, 291, 3364, 267, 43, 44, 3657, 3658, 184, 1492, 186, 4632, 369, 703, 704, 504, 4128, 4238, 194, 195, 4750, 369, 4755, 315, 1719, 138, 341, 1424, 369, 16, 17, 323, 208, 32, 21, 330, 4, 174, 175, 369, 27, 9, 29, 221, 31, 38, 703, 704, 4, 34, 340, 24, 342, 343, 29, 23, 43, 44, 38, 4, 3305, 32, 165, 200, 29, 39, 705, 1688, 4, 4, 38, 7, 8, 731, 592, 593, 179, 504, 24, 182, 24, 363, 185, 27, 187, 587, 189, 601, 2040, 603, 37, 605, 52, 607, 293, 294, 199, 200, 4, 202, 203, 204, 278, 38, 1587, 397, 340, 554, 342, 343, 4, 592, 593, 4, 561, 24, 7, 293, 294, 295, 412, 297, 4, 4, 29, 7, 8, 23, 555, 129, 169, 170, 24, 297, 129, 23, 4202, 56, 314, 178, 724, 37, 0, 168, 700, 3390, 4212, 504, 24, 4, 798, 86, 2409, 672, 673, 1457, 504, 1331, 806, 451, 705, 31, 646, 1226, 340, 29, 342, 343, 75, 4, 1472, 41, 454, 43, 350, 4, 468, 29, 113, 29, 4246, 4021, 169, 170, 1486, 449, 362, 29, 20, 837, 190, 178, 840, 10, 29, 1678, 137, 112, 56, 504, 29, 32, 27, 38, 380, 37, 1327, 32, 7, 60, 4050, 130, 131, 503, 57, 4, 1069, 29, 510, 395, 3465, 493, 494, 326, 10, 166, 329, 745, 53, 405, 269, 395, 20, 408, 409, 410, 411, 504, 4078, 199, 1760, 193, 4, 17, 125, 7, 8, 286, 23, 38, 19, 86, 20, 356, 23, 358, 147, 474, 4988, 204, 4993, 551, 365, 3085, 4997, 441, 1961, 443, 175, 37, 5003, 270, 791, 173, 793, 198, 271, 272, 113, 215, 4859, 579, 269, 235, 4863, 567, 257, 2544, 57, 165, 190, 467, 810, 129, 269, 934, 270, 4876, 474, 286, 52, 504, 32, 601, 269, 603, 221, 605, 4755, 607, 257, 1932, 488, 288, 313, 314, 309, 551, 283, 242, 496, 266, 52, 296, 304, 4755, 270, 503, 504, 968, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 309, 20, 446, 312, 521, 134, 934, 147, 204, 296, 4533, 160, 871, 186, 163, 303, 313, 314, 496, 266, 257, 271, 272, 269, 867, 217, 1079, 1080, 313, 314, 259, 266, 4, 309, 551, 267, 504, 270, 555, 3202, 968, 558, 1095, 129, 147, 1079, 1080, 270, 934, 1079, 1080, 926, 52, 3826, 934, 215, 1095, 501, 269, 672, 673, 1095, 934, 507, 269, 1095, 303, 521, 4170, 5140, 266, 4252, 12, 729, 1898, 259, 269, 186, 269, 256, 4533, 525, 968, 288, 256, 1745, 269, 259, 968, 4651, 205, 206, 609, 27, 113, 612, 968, 705, 542, 543, 27, 23, 0, 142, 270, 254, 199, 3826, 20, 353, 20, 23, 745, 23, 263, 1011, 269, 189, 4525, 4526, 4, 2157, 4, 3826, 4531, 4532, 299, 267, 199, 1323, 504, 3717, 4539, 309, 5096, 288, 1061, 381, 968, 23, 289, 81, 82, 121, 504, 123, 239, 313, 314, 259, 4, 1079, 1080, 7, 173, 2117, 90, 1016, 56, 703, 704, 993, 60, 1241, 267, 4346, 934, 1095, 240, 5074, 256, 939, 1348, 322, 43, 324, 734, 810, 695, 696, 793, 54, 23, 700, 38, 798, 703, 704, 705, 5263, 0, 32, 341, 806, 1932, 851, 20, 119, 1374, 199, 968, 113, 129, 113, 86, 4993, 62, 63, 64, 4997, 345, 20, 1388, 1291, 23, 5003, 89, 734, 158, 159, 1298, 4, 4993, 836, 837, 1963, 4997, 840, 4220, 4221, 32, 113, 5003, 4006, 174, 175, 934, 705, 871, 239, 42, 24, 686, 378, 4, 934, 724, 21, 861, 766, 2079, 25, 192, 697, 859, 29, 30, 774, 43, 2088, 200, 173, 1348, 173, 781, 768, 793, 982, 288, 269, 968, 31, 128, 1348, 4047, 1298, 20, 2101, 5198, 968, 190, 3867, 799, 800, 1374, 916, 1374, 4006, 934, 113, 768, 32, 1388, 147, 1388, 1374, 445, 317, 1388, 816, 240, 32, 1161, 4006, 113, 1294, 504, 176, 177, 1388, 837, 1079, 1080, 4, 1374, 27, 52, 1348, 1388, 217, 4905, 1740, 968, 1388, 841, 842, 934, 1095, 4047, 478, 4907, 67, 23, 482, 4, 484, 4859, 7, 8, 856, 4863, 53, 1369, 1374, 4047, 958, 849, 1172, 4, 173, 1348, 1176, 1174, 4876, 987, 4, 989, 990, 991, 4884, 968, 984, 879, 2016, 173, 514, 190, 23, 1883, 113, 31, 849, 27, 1369, 23, 1890, 1374, 4, 39, 857, 7, 1241, 31, 1016, 39, 902, 903, 1246, 905, 906, 934, 176, 177, 1855, 911, 239, 23, 914, 25, 916, 905, 906, 551, 1865, 1808, 922, 4859, 924, 1388, 2186, 4863, 973, 4, 267, 2191, 932, 20, 934, 935, 1316, 27, 938, 1061, 4876, 968, 941, 942, 943, 944, 173, 69, 1291, 4, 1909, 2077, 7, 43, 4, 1298, 21, 973, 981, 34, 25, 4851, 84, 2089, 29, 30, 4856, 21, 968, 1909, 5112, 25, 26, 67, 28, 29, 30, 20, 20, 29, 199, 981, 982, 934, 2124, 985, 2126, 27, 23, 31, 1462, 2131, 5263, 23, 982, 38, 1468, 420, 421, 41, 4, 43, 929, 43, 1412, 158, 41, 1479, 1122, 5263, 1124, 86, 269, 23, 3, 1122, 4, 968, 7, 1388, 9, 10, 703, 704, 705, 29, 4, 31, 1028, 1029, 1030, 288, 27, 70, 23, 1035, 86, 147, 113, 4, 20, 1029, 7, 8, 304, 1045, 21, 82, 43, 1049, 25, 1523, 69, 31, 29, 30, 1528, 37, 1174, 1531, 1060, 4, 1062, 113, 1122, 992, 5187, 84, 491, 8, 5042, 27, 1060, 496, 1074, 1075, 32, 934, 4334, 1079, 1080, 68, 1082, 1069, 71, 20, 27, 4, 41, 1561, 4516, 934, 147, 5235, 204, 1095, 27, 729, 1, 27, 43, 4, 43, 1103, 7, 8, 1106, 1579, 1069, 219, 1226, 968, 43, 56, 3, 43, 1116, 1117, 7, 38, 9, 10, 1122, 20, 1124, 968, 43, 1127, 4518, 32, 1246, 4521, 4334, 121, 23, 123, 2171, 1609, 41, 56, 1612, 38, 1614, 1615, 1616, 1241, 21, 1806, 4334, 204, 25, 26, 87, 28, 29, 30, 266, 267, 147, 31, 142, 1024, 29, 1124, 219, 1647, 1638, 39, 2055, 225, 226, 121, 154, 123, 5295, 5296, 79, 80, 158, 5321, 160, 5323, 270, 5325, 171, 172, 173, 130, 131, 23, 172, 31, 5198, 96, 29, 1291, 1196, 4, 1294, 39, 7, 27, 1298, 168, 269, 4, 186, 41, 5180, 5181, 5182, 266, 267, 130, 131, 269, 1524, 43, 34, 851, 1653, 156, 4424, 288, 32, 313, 314, 269, 216, 27, 218, 41, 5374, 41, 288, 170, 4, 5379, 4424, 7, 8, 27, 41, 21, 147, 43, 32, 25, 26, 34, 28, 29, 30, 934, 4, 49, 270, 51, 147, 9, 54, 29, 5198, 62, 1264, 30, 216, 32, 218, 5411, 1806, 5413, 1411, 23, 5416, 5417, 31, 29, 267, 335, 336, 337, 1323, 77, 1406, 7, 41, 968, 43, 11, 5432, 29, 34, 1806, 269, 1295, 1296, 1388, 1437, 313, 314, 724, 1922, 25, 1304, 1613, 270, 1334, 5280, 252, 3516, 1774, 735, 288, 3520, 1778, 1316, 1244, 3524, 32, 31, 1348, 5294, 1323, 23, 38, 27, 1327, 1328, 128, 41, 1331, 43, 32, 1334, 252, 1325, 32, 3544, 142, 147, 1429, 43, 1331, 4, 1461, 41, 1374, 1348, 313, 314, 1784, 1760, 3308, 7, 1471, 1345, 49, 11, 51, 270, 993, 54, 1774, 267, 38, 1462, 1778, 27, 1485, 1370, 32, 1468, 1909, 1374, 1302, 41, 176, 267, 27, 41, 41, 5354, 1479, 43, 77, 5358, 186, 1388, 5361, 1698, 27, 1909, 187, 269, 43, 1909, 204, 4200, 304, 4202, 4203, 62, 313, 314, 1774, 27, 43, 27, 1778, 4212, 1774, 219, 288, 4, 1778, 304, 7, 8, 1774, 23, 4223, 43, 1778, 43, 5397, 304, 1523, 1807, 32, 4632, 27, 1528, 32, 857, 1531, 3391, 1388, 193, 29, 4, 1557, 1558, 1559, 4246, 1369, 4632, 43, 27, 4924, 1436, 1369, 1790, 3530, 1792, 1726, 1794, 4847, 1796, 266, 267, 49, 3539, 51, 43, 1561, 67, 283, 128, 21, 27, 27, 27, 25, 26, 1436, 28, 29, 30, 43, 235, 27, 193, 1579, 20, 270, 43, 43, 43, 77, 1417, 269, 56, 120, 121, 187, 123, 43, 1909, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 288, 1650, 3467, 1609, 269, 32, 1612, 270, 1614, 1615, 1616, 38, 256, 1774, 235, 259, 186, 1778, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 49, 1638, 51, 104, 4, 27, 2108, 7, 8, 110, 270, 2181, 304, 2181, 1963, 1964, 121, 269, 123, 313, 314, 43, 2124, 27, 2126, 130, 131, 31, 77, 2131, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 27, 27, 4, 4, 31, 216, 158, 218, 160, 1774, 313, 314, 27, 1778, 67, 187, 4, 43, 1774, 7, 8, 27, 1778, 216, 2080, 218, 32, 29, 43, 2085, 1728, 0, 305, 306, 74, 27, 5, 25, 2094, 1118, 1119, 27, 43, 86, 27, 4, 5056, 27, 7, 1941, 1806, 43, 32, 27, 32, 56, 1135, 43, 32, 28, 43, 1774, 99, 1647, 82, 1778, 27, 69, 1806, 1334, 113, 27, 74, 2129, 1909, 31, 27, 27, 2134, 1649, 49, 2137, 43, 1348, 1790, 5059, 1792, 56, 1794, 27, 1796, 60, 43, 43, 27, 187, 136, 137, 27, 1774, 27, 27, 1647, 1778, 1649, 43, 32, 2163, 110, 1374, 79, 80, 2206, 23, 43, 27, 43, 1124, 136, 137, 121, 27, 123, 1388, 1824, 27, 166, 145, 97, 130, 131, 43, 134, 269, 136, 137, 3625, 43, 27, 4525, 4526, 43, 182, 2206, 1728, 4531, 4532, 7, 166, 285, 286, 287, 288, 4539, 43, 173, 1740, 4543, 1742, 27, 119, 27, 24, 1774, 166, 27, 32, 1778, 23, 27, 1754, 1, 190, 52, 4, 43, 290, 7, 8, 3718, 182, 2108, 3938, 32, 153, 43, 1770, 1798, 147, 1773, 1774, 70, 71, 27, 1778, 1411, 27, 2124, 32, 2126, 24, 38, 32, 27, 2131, 174, 175, 31, 3535, 1425, 27, 41, 43, 32, 27, 32, 27, 2181, 5192, 32, 31, 1437, 34, 27, 4, 194, 195, 3563, 32, 27, 27, 4617, 27, 31, 14, 32, 1747, 32, 2130, 1774, 27, 3577, 23, 1778, 31, 204, 3582, 27, 217, 79, 80, 3563, 24, 32, 3566, 27, 27, 1963, 1964, 1770, 219, 32, 27, 176, 177, 3577, 96, 32, 48, 148, 27, 1855, 1856, 27, 1785, 32, 79, 80, 32, 4, 60, 1865, 7, 1867, 27, 32, 1870, 27, 2000, 32, 1874, 31, 174, 175, 2000, 174, 175, 176, 177, 1883, 3228, 4, 1558, 1559, 7, 8, 1890, 266, 267, 4, 5096, 1883, 7, 8, 5181, 5182, 1323, 147, 1890, 198, 199, 41, 291, 43, 29, 1909, 5096, 1911, 297, 111, 27, 3870, 4172, 1774, 31, 24, 4176, 1778, 27, 1850, 304, 1925, 120, 121, 313, 123, 34, 1774, 34, 865, 866, 1778, 868, 869, 870, 5436, 872, 873, 1869, 5440, 309, 310, 311, 242, 142, 881, 882, 883, 41, 24, 43, 340, 27, 342, 343, 155, 32, 25, 34, 2079, 3909, 32, 162, 163, 2190, 165, 32, 24, 2088, 924, 27, 3633, 24, 3635, 172, 27, 1980, 932, 24, 29, 2080, 27, 160, 938, 24, 2085, 100, 27, 21, 34, 269, 10, 25, 26, 2094, 28, 29, 30, 269, 23, 23, 67, 147, 1502, 24, 23, 395, 27, 2108, 34, 1646, 23, 78, 24, 1650, 23, 27, 267, 216, 24, 218, 23, 27, 270, 2124, 24, 2126, 24, 27, 2129, 27, 2131, 24, 24, 2134, 27, 27, 2137, 24, 24, 24, 4, 27, 27, 7, 4851, 9, 8, 24, 24, 4856, 27, 27, 24, 2058, 121, 27, 123, 4864, 204, 23, 261, 262, 2163, 21, 23, 455, 23, 25, 26, 32, 28, 29, 30, 219, 1030, 142, 32, 24, 24, 1035, 27, 27, 24, 24, 24, 27, 27, 27, 1774, 32, 24, 24, 1778, 27, 27, 1595, 2189, 24, 29, 24, 27, 491, 27, 493, 494, 41, 496, 29, 4915, 499, 31, 24, 1798, 503, 504, 505, 32, 302, 1074, 1075, 266, 267, 32, 32, 39, 4932, 1082, 34, 2174, 23, 276, 277, 148, 24, 24, 132, 282, 283, 38, 41, 2186, 34, 288, 29, 29, 2191, 38, 3305, 31, 216, 1106, 218, 31, 4001, 3604, 32, 32, 32, 32, 94, 32, 551, 94, 32, 31, 555, 105, 313, 314, 31, 41, 23, 2204, 23, 241, 41, 2181, 41, 23, 2211, 570, 2186, 23, 147, 23, 32, 2191, 29, 334, 335, 336, 337, 338, 339, 340, 341, 32, 587, 2203, 2204, 24, 39, 39, 34, 34, 23, 2211, 23, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 1647, 23, 4378, 34, 4380, 270, 129, 23, 38, 23, 23, 23, 23, 3390, 38, 23, 269, 23, 23, 269, 23, 204, 101, 2174, 101, 270, 23, 52, 637, 23, 102, 1750, 285, 286, 287, 288, 219, 2188, 4, 269, 182, 2192, 27, 23, 23, 4112, 71, 2198, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 269, 23, 672, 673, 32, 23, 96, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 1800, 5108, 266, 267, 4264, 23, 69, 3465, 23, 23, 700, 269, 173, 703, 704, 705, 23, 23, 23, 31, 37, 91, 23, 32, 23, 9, 34, 285, 286, 287, 288, 34, 21, 24, 724, 32, 25, 26, 32, 28, 29, 30, 148, 31, 33, 735, 35, 32, 182, 32, 32, 741, 23, 23, 23, 31, 1993, 23, 23, 749, 23, 269, 23, 23, 32, 755, 756, 24, 174, 175, 176, 177, 1328, 32, 764, 765, 32, 270, 768, 32, 4093, 269, 32, 32, 32, 4124, 32, 4126, 24, 269, 27, 38, 194, 199, 38, 23, 85, 23, 41, 23, 38, 791, 23, 793, 23, 23, 23, 1907, 798, 23, 23, 38, 1912, 23, 23, 269, 806, 24, 24, 4267, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 27, 27, 24, 242, 32, 34, 23, 11, 205, 206, 23, 23, 32, 836, 837, 173, 138, 840, 32, 173, 98, 32, 97, 31, 24, 27, 849, 224, 225, 226, 227, 228, 229, 100, 857, 27, 41, 23, 283, 23, 39, 129, 865, 866, 867, 868, 869, 870, 101, 872, 873, 41, 249, 41, 23, 23, 253, 23, 881, 882, 883, 41, 41, 260, 41, 4, 41, 32, 4411, 23, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 41, 905, 906, 41, 2204, 23, 29, 32, 3204, 31, 4372, 2211, 916, 129, 27, 79, 9, 23, 23, 20, 924, 9, 9, 23, 23, 23, 23, 23, 932, 129, 934, 23, 39, 41, 938, 939, 31, 39, 32, 251, 270, 32, 32, 32, 27, 3717, 32, 5368, 270, 89, 32, 32, 270, 3517, 39, 39, 32, 32, 32, 23, 32, 32, 23, 23, 968, 144, 269, 23, 23, 23, 974, 23, 4763, 23, 4765, 41, 41, 23, 982, 282, 283, 23, 285, 286, 287, 288, 5407, 32, 23, 3558, 23, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 1008, 1009, 1010, 32, 1012, 1013, 31, 1015, 43, 1017, 1018, 43, 23, 23, 41, 23, 29, 41, 41, 23, 1028, 1029, 1030, 24, 27, 3801, 32, 1035, 23, 34, 23, 4, 34, 31, 7, 8, 555, 1045, 32, 3922, 3923, 32, 24, 29, 34, 129, 129, 129, 31, 1057, 1058, 1059, 1060, 38, 31, 39, 270, 24, 39, 39, 39, 1069, 23, 39, 3827, 39, 1074, 1075, 41, 4535, 39, 1079, 1080, 39, 1082, 38, 3209, 34, 38, 24, 32, 23, 38, 34, 31, 58, 23, 1095, 61, 23, 79, 3867, 23, 37, 4672, 34, 32, 32, 1106, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 24, 32, 1122, 32, 1124, 32, 31, 23, 92, 70, 38, 24, 34, 1133, 29, 1682, 1683, 1684, 1685, 1686, 1687, 129, 1689, 1690, 1691, 1692, 1693, 1694, 29, 2187, 29, 1698, 1699, 24, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 29, 1720, 139, 140, 4310, 4311, 4, 38, 24, 7, 24, 27, 32, 150, 151, 32, 43, 4512, 39, 4549, 32, 4551, 32, 32, 32, 41, 32, 43, 24, 24, 24, 38, 23, 3228, 39, 39, 39, 23, 23, 32, 32, 103, 32, 41, 104, 3972, 183, 23, 96, 27, 34, 31, 141, 79, 191, 24, 193, 34, 74, 24, 58, 24, 34, 61, 24, 129, 32, 65, 32, 1241, 32, 32, 23, 70, 93, 32, 23, 23, 1250, 242, 38, 1253, 1254, 70, 221, 39, 34, 31, 24, 90, 1262, 1263, 3258, 4835, 24, 24, 24, 38, 235, 34, 23, 27, 29, 259, 43, 88, 24, 24, 106, 107, 4, 43, 43, 7, 24, 34, 205, 206, 39, 1291, 136, 137, 1294, 32, 18, 23, 1298, 4757, 32, 79, 3259, 3577, 1870, 88, 166, 224, 225, 226, 227, 228, 229, 139, 140, 32, 34, 32, 24, 3932, 129, 147, 166, 1323, 150, 151, 48, 1327, 1328, 23, 31, 1331, 249, 43, 1334, 88, 253, 34, 182, 4097, 4098, 29, 4100, 260, 31, 1911, 23, 32, 1348, 4807, 4410, 37, 24, 32, 180, 181, 90, 183, 32, 1925, 90, 205, 206, 88, 24, 191, 192, 3927, 43, 24, 3364, 23, 34, 23, 1374, 201, 88, 203, 204, 38, 224, 225, 226, 227, 228, 229, 32, 38, 1388, 3767, 38, 34, 27, 219, 23, 221, 166, 38, 32, 32, 32, 24, 27, 24, 230, 249, 232, 23, 3365, 253, 23, 144, 23, 924, 23, 34, 260, 243, 305, 245, 24, 932, 88, 38, 23, 147, 3577, 938, 34, 24, 23, 101, 23, 27, 24, 24, 1436, 39, 3525, 39, 266, 267, 39, 165, 270, 1445, 24, 39, 32, 3577, 24, 34, 3603, 24, 31, 23, 23, 3535, 24, 285, 286, 24, 1462, 24, 39, 41, 3603, 31, 1468, 39, 5040, 3603, 41, 23, 39, 3603, 23, 32, 29, 1479, 39, 41, 204, 3440, 4359, 24, 21, 22, 4363, 143, 25, 26, 24, 28, 29, 30, 24, 24, 33, 272, 35, 88, 24, 32, 24, 143, 32, 41, 32, 3535, 1510, 233, 56, 14, 2181, 15, 41, 333, 1518, 1030, 1520, 1521, 1320, 1523, 1035, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 2185, 1374, 1388, 3959, 4287, 5012, 4779, 369, 262, 263, 264, 265, 4775, 267, 268, 3685, 1303, 4661, 85, 3535, 3581, 1553, 1554, 1555, 1556, 3535, 488, 992, 207, 1561, 3600, 1074, 1075, 3535, 1348, 521, 1079, 1080, 2203, 1082, 4998, 3951, 4757, 4535, 4093, 3603, 4527, 1579, 1009, 322, 514, 474, 1095, 3555, 75, 3932, 4594, 4589, 3912, 1980, 1080, 4265, 1963, 1106, 3803, 1042, 5177, 4354, 4216, 1601, 3625, 138, 1174, 1932, 330, 1172, 4147, 1609, 3603, 1647, 1612, 856, 1614, 1615, 1616, 1095, 4302, 806, 356, 741, 867, 1241, 3232, 2108, 3232, 2108, 3204, 2109, 593, 3233, 1160, 1409, 4247, 2872, 4222, 2058, 1638, 295, 4224, 4139, 4887, 1964, 4204, 1428, 4206, 1647, 494, 1649, 4435, 3827, 793, 4807, 4424, 3425, 4216, 1740, 4086, 4832, 5185, 5179, 3508, 4519, 4512, 3622, 916, 5360, 861, 3535, 1732, 906, 4241, 5116, 5242, 5108, 4942, 5417, 5376, 3577, 3563, 3582, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1808, 3425, 4166, 1698, 1699, 4165, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 3801, 1720, -1, -1, 5114, -1, -1, -1, -1, 1728, -1, -1, -1, -1, -1, 269, -1, -1, 3603, -1, 3535, 275, 276, 277, 278, 279, 280, 281, 282, 3535, 284, 285, 286, 287, 288, 1754, -1, -1, -1, -1, -1, 276, 277, 4520, -1, -1, -1, 282, 283, -1, -1, -1, -1, 288, -1, 1774, -1, -1, -1, 1778, -1, -1, 4159, -1, -1, -1, 3581, -1, -1, -1, -1, 3577, 3535, -1, -1, -1, -1, 3972, 313, 314, 839, -1, 3581, -1, -1, -1, -1, -1, -1, 3577, -1, 3425, 4371, -1, -1, 3525, 1815, -1, 1328, 334, 335, 336, 337, 338, 339, 340, 341, -1, -1, -1, 3535, -1, 4, 3826, -1, -1, 4969, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3468, -1, 1855, 1856, -1, 31, -1, -1, 3922, 5320, -1, 1864, 1865, 3789, 1867, 4743, 3827, 1870, 3828, -1, 3921, -1, 48, -1, 3763, 3764, -1, 3581, -1, 3497, 1883, -1, -1, -1, 60, 3625, -1, 1890, -1, -1, 3535, -1, -1, 3538, 3512, -1, -1, -1, -1, 3517, -1, -1, -1, -1, -1, -1, 1909, -1, 1911, -1, -1, -1, 3530, -1, -1, 5376, -1, 3535, -1, -1, -1, 3539, 1925, 3222, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, -1, -1, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, -1, 1962, -1, 3581, -1, -1, 4527, -1, 3535, -1, -1, -1, -1, -1, -1, -1, 3592, 3593, -1, 1980, 3228, 155, -1, -1, -1, -1, -1, 3603, 162, 163, 3533, 165, -1, -1, 4512, 3243, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4386, 4387, -1, -1, 4006, -1, 3972, -1, -1, -1, 3633, -1, 3635, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3657, 3658, -1, 3660, 4124, 3662, 4126, -1, 4128, 3666, 3667, 4047, -1, -1, -1, -1, 2058, -1, -1, -1, -1, 3535, -1, -1, -1, -1, -1, 3684, 3685, -1, -1, -1, -1, 3690, -1, 3535, 4836, 4837, 2080, 3918, -1, -1, -1, 2085, -1, -1, 261, 262, -1, -1, 4850, -1, 2094, -1, -1, 3207, 4124, -1, 4126, 3643, 4128, -1, 3719, -1, 3216, -1, 2108, 3219, -1, -1, -1, 4136, 4137, -1, 3827, 2117, -1, -1, -1, -1, -1, -1, 2124, -1, 2126, 2127, -1, 2129, -1, 2131, 2132, 2133, 2134, 2135, 2136, 2137, -1, -1, 4124, -1, 4126, -1, 4128, 3760, 4124, -1, 4126, -1, 4128, -1, 3767, -1, 4124, -1, 4126, -1, 4128, 2159, 2160, 2161, 2162, 2163, -1, -1, 3204, -1, -1, 4139, -1, 4165, 4166, -1, -1, -1, 3423, -1, 4354, -1, -1, 2181, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 3952, 33, -1, 35, 36, -1, 2204, -1, 40, -1, 42, -1, -1, 2211, -1, -1, -1, 3918, -1, 3920, -1, -1, -1, 3924, -1, 3926, -1, -1, 21, -1, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, 3535, 35, -1, 3538, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, 1293, -1, -1, -1, -1, 4124, -1, 4126, 3972, 4128, -1, -1, -1, 3922, 3923, 3999, -1, -1, -1, 4003, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5041, -1, -1, -1, -1, -1, -1, 85, -1, 5050, 4390, -1, 129, 3938, 4093, 4359, 3941, 5058, -1, -1, -1, 138, -1, -1, 3922, 3923, -1, -1, -1, 3927, 4361, -1, -1, -1, 3932, 4366, -1, 4368, -1, -1, 3938, -1, -1, -1, -1, 4124, 3932, 4126, 165, 4128, -1, -1, -1, 3951, 4124, -1, 4126, 4334, 4128, -1, 138, 3959, -1, -1, -1, -1, -1, 4585, -1, -1, -1, -1, -1, -1, -1, -1, 1870, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3919, -1, -1, 4124, -1, 4126, 3925, 4128, -1, -1, -1, 4411, -1, -1, 4769, 4123, -1, 3936, -1, 4354, -1, 1909, -1, 1911, -1, -1, -1, -1, -1, 4117, -1, -1, -1, -1, -1, -1, 4147, 1925, -1, -1, -1, 4124, -1, 4126, 1932, 4128, -1, -1, 5183, -1, -1, -1, -1, 4424, -1, 5190, -1, -1, 269, 4167, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, 4533, -1, 291, 21, -1, 294, -1, 25, 26, -1, 28, 29, 30, -1, 1980, 33, 4549, 35, 4551, 269, -1, -1, 4435, 4093, -1, -1, -1, 4124, -1, 4126, -1, 4128, 282, 283, -1, 285, 286, 287, 288, 4225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4533, -1, 4124, -1, 4126, -1, 4128, -1, -1, -1, -1, -1, -1, -1, 5279, 85, 4549, 1564, 4551, -1, -1, -1, -1, 1570, -1, -1, -1, -1, -1, -1, 4560, 4561, -1, 4563, 4564, 4565, -1, 4159, -1, -1, -1, -1, 4533, -1, -1, 4255, 1593, 1594, 4533, -1, -1, 4124, -1, 4126, -1, 4128, 4533, -1, 4549, -1, 4551, -1, -1, -1, 4549, -1, 4551, -1, 138, -1, -1, 3688, 4549, -1, 4551, 3692, -1, -1, 4200, -1, 4202, 4203, 4204, -1, 4206, -1, -1, -1, -1, -1, 4212, -1, 4141, 1640, 4216, -1, -1, -1, 4220, 4221, 4222, 4223, 4224, -1, -1, -1, -1, 4229, 4663, 4231, -1, -1, -1, -1, 4236, 4164, 4238, -1, -1, 4241, 4242, -1, -1, 4245, 4246, 4247, 4248, -1, -1, -1, -1, 4632, -1, -1, -1, 3938, 4354, 4247, 3941, -1, -1, -1, -1, -1, -1, 4124, -1, 4126, -1, 4128, -1, -1, -1, -1, 4364, 3909, -1, 5422, -1, 4124, 4533, 4126, -1, 4128, 4213, -1, -1, 4411, 5433, -1, 4155, -1, -1, -1, -1, -1, 4549, -1, 4551, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4749, -1, 4359, -1, 3952, 269, 4363, -1, -1, -1, -1, -1, -1, -1, -1, 4512, -1, -1, 282, -1, 284, 285, 286, 287, 288, -1, -1, -1, 4155, -1, -1, -1, -1, -1, -1, 4378, 4533, 4380, 4381, -1, -1, -1, -1, 4359, -1, 4533, -1, 4363, -1, -1, -1, -1, 4549, -1, 4551, 4371, -1, -1, -1, -1, 4647, 4549, 4378, 4551, 4380, 4381, -1, -1, -1, -1, 4386, 4387, -1, -1, 4390, -1, -1, -1, -1, -1, 4859, -1, -1, -1, 4863, -1, -1, -1, 4533, -1, -1, -1, -1, 4576, -1, -1, -1, 4876, -1, -1, -1, -1, -1, -1, 4549, -1, 4551, -1, -1, -1, -1, -1, -1, 4545, -1, -1, -1, 4360, -1, -1, -1, -1, -1, -1, 4367, -1, 4533, 4124, -1, 4126, -1, 4128, 4859, -1, -1, -1, 4863, -1, -1, -1, -1, -1, 4549, -1, 4551, -1, 4576, -1, -1, 4876, -1, -1, -1, -1, -1, 4814, -1, -1, -1, -1, 4884, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4859, -1, -1, -1, 4863, -1, 4859, -1, -1, -1, 4863, -1, -1, -1, 4859, -1, 4533, 4876, 4863, -1, -1, -1, 4512, 4876, -1, -1, -1, -1, -1, -1, -1, 4876, 4549, -1, 4551, 4525, 4526, 4527, -1, -1, 5012, 4531, 4532, 4533, -1, -1, -1, 4659, -1, 4539, 4540, -1, 4, 4543, -1, 7, -1, -1, -1, 4549, 4983, 4551, 4985, 4986, -1, -1, 18, -1, -1, 4992, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4576, -1, -1, -1, -1, -1, 4533, -1, 4511, -1, 48, -1, -1, 4589, -1, -1, -1, -1, 4594, -1, -1, -1, 4549, -1, 4551, -1, -1, -1, -1, -1, -1, -1, 4859, -1, -1, -1, 4863, -1, -1, 4576, -1, 4617, -1, -1, -1, 4, -1, -1, 7, 4876, -1, -1, -1, -1, -1, 4747, -1, 4, -1, 18, 7, -1, -1, -1, -1, 2066, -1, -1, -1, -1, -1, 18, -1, -1, 4650, 4651, -1, 4580, 4581, -1, 4744, 4745, 4153, 4930, -1, 4661, -1, -1, 4752, 48, 5074, -1, -1, 4669, 4670, -1, -1, -1, -1, -1, 4533, 48, 4859, -1, -1, 4932, 4863, -1, -1, 147, 2111, 4859, 555, -1, 4533, 4863, 4549, -1, 4551, 4876, 158, 4378, 160, 4380, 4381, -1, 4743, 165, 4876, -1, 4549, -1, 4551, 3660, -1, 3662, 5145, -1, -1, 3666, -1, 5096, -1, -1, -1, -1, 5194, -1, -1, -1, -1, -1, 4755, -1, 4859, -1, -1, -1, 4863, 5198, 4763, -1, 4765, 3690, 2165, -1, 204, 4743, -1, -1, -1, 4876, -1, -1, -1, -1, -1, 4385, 4893, 4755, -1, -1, -1, -1, -1, -1, -1, 4763, 147, 4765, -1, -1, 4859, 4769, -1, 233, 4863, -1, 4774, 4775, 147, -1, 4, 4779, -1, 7, 165, 4899, -1, 4876, -1, 5198, -1, -1, -1, -1, 18, -1, 165, -1, -1, -1, -1, -1, 262, 263, 264, 265, -1, 267, 268, 5078, -1, 4925, -1, -1, 4928, 4929, -1, -1, -1, -1, -1, 3204, -1, 204, 48, -1, -1, -1, -1, 5260, 5300, 5198, -1, -1, 4859, 204, -1, 5198, 4863, -1, -1, -1, -1, -1, -1, 5198, -1, 4772, 4773, -1, -1, 4876, 233, 4851, 4533, -1, -1, -1, 4856, 5108, -1, 4859, -1, -1, 233, 4863, 4864, -1, -1, -1, 4549, -1, 4551, 4871, -1, -1, -1, 4991, 4876, -1, -1, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 5337, -1, -1, -1, 4859, -1, -1, -1, 4863, -1, -1, 4915, -1, -1, -1, -1, -1, 147, -1, -1, 4924, 4876, 4926, -1, -1, -1, -1, -1, 4932, -1, -1, -1, -1, -1, -1, 165, -1, -1, 4942, -1, -1, -1, -1, 5198, -1, -1, -1, -1, -1, 4953, -1, -1, 4956, -1, 4958, -1, 4887, -1, -1, -1, -1, -1, 4993, -1, -1, -1, 4997, -1, -1, -1, -1, -1, 5003, -1, 204, -1, -1, -1, -1, -1, 4479, -1, -1, -1, -1, -1, -1, -1, -1, 4993, -1, -1, -1, 4997, 4998, -1, -1, -1, 4859, 5003, -1, -1, 4863, 233, -1, -1, -1, -1, 5012, -1, -1, -1, 4859, 5198, -1, 4876, 4863, -1, -1, -1, -1, -1, 5198, -1, 5144, -1, -1, -1, -1, 4876, -1, -1, 262, 263, 264, 265, 3425, 267, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4548, -1, 4550, -1, 924, -1, -1, -1, -1, -1, -1, -1, 932, -1, 5067, 5068, 5198, -1, 938, -1, -1, 4755, 4570, -1, -1, -1, -1, -1, -1, 4763, -1, 4765, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 5095, 25, 26, 5194, 28, 29, 30, -1, -1, 33, -1, 35, 5198, 5108, -1, -1, 40, 5112, 42, -1, -1, 5116, 5117, -1, -1, -1, 5121, -1, 5123, -1, 5125, -1, -1, -1, 5117, -1, 3516, 3517, -1, -1, 3520, -1, -1, -1, 3524, 3525, -1, -1, 5259, -1, -1, -1, -1, 4080, -1, 3535, -1, -1, 4576, -1, -1, 85, -1, -1, 3544, 4583, -1, -1, 1030, -1, -1, -1, -1, 1035, -1, -1, 5198, -1, 3558, -1, -1, -1, -1, 4859, 21, 22, -1, 4863, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, -1, 4876, 3581, -1, 5198, -1, -1, -1, -1, -1, 5300, -1, -1, 1074, 1075, 138, -1, -1, 1079, 1080, -1, 1082, -1, -1, 3603, 3604, 4, -1, -1, 7, -1, 5225, -1, -1, 1095, -1, -1, -1, -1, -1, 18, 5235, 5263, -1, -1, 1106, -1, -1, -1, 85, -1, -1, -1, 5198, 3633, -1, 3635, -1, -1, -1, -1, -1, -1, 3642, -1, -1, -1, 4893, 4, 5263, 48, 7, -1, 4762, -1, 4764, -1, -1, -1, -1, -1, 3660, 18, 3662, 4229, -1, 4231, 3666, 3667, -1, -1, -1, -1, -1, -1, -1, -1, 4242, -1, 5293, 4245, -1, 138, 4248, -1, -1, -1, -1, -1, -1, -1, 3690, 48, -1, -1, -1, -1, -1, 4993, -1, -1, -1, 4997, -1, -1, -1, -1, 5321, 5003, 5323, -1, 5325, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 5198, -1, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 5198, 285, 286, 287, 288, 5360, -1, -1, 147, -1, -1, -1, -1, 5368, -1, -1, -1, -1, -1, 5374, -1, -1, -1, 4873, 5379, 4875, 165, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 147, 40, 5407, 42, -1, -1, 5411, -1, 5413, 48, -1, 5416, 5417, -1, -1, 204, -1, -1, 165, -1, -1, -1, 269, -1, -1, -1, -1, 5432, 275, 276, 277, 278, 279, 280, 281, 282, 283, 3827, 285, 286, 287, 288, -1, -1, 233, 5082, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1328, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5403, -1, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 233, -1, -1, -1, 129, -1, -1, -1, 133, -1, -1, -1, -1, 138, 5000, -1, 5002, -1, 143, -1, -1, -1, -1, -1, -1, -1, 5198, 152, -1, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3927, -1, -1, -1, 24, 3932, -1, 27, -1, -1, -1, 3938, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, 1008, -1, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, 212, 213, -1, -1, 5263, -1, -1, -1, 220, 3972, -1, 4540, -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3998, -1, 4000, 1057, 1058, 1059, 4004, 254, -1, 4007, 4008, 4009, -1, 4011, 4012, 4013, 4014, 4015, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 136, 137, 294, -1, -1, -1, 298, 299, 300, 301, -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, 166, -1, -1, -1, -1, -1, -1, 4080, -1, -1, -1, -1, -1, -1, -1, -1, 182, -1, -1, 3603, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4669, 4670, -1, -1, -1, -1, -1, -1, -1, 205, 206, -1, -1, -1, 4117, -1, -1, -1, -1, -1, -1, 4124, -1, 4126, -1, 4128, -1, -1, 224, 225, 226, 227, 228, 229, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3660, -1, 3662, -1, -1, -1, 3666, 249, 21, 22, -1, 253, 25, 26, -1, 28, 29, 30, 260, -1, 33, -1, 35, -1, -1, -1, -1, -1, -1, 4178, 3690, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4200, -1, 4202, 4203, 4204, -1, 4206, -1, -1, -1, -1, -1, 4212, -1, -1, -1, 4216, -1, -1, -1, -1, 85, -1, 4223, -1, -1, -1, -1, 3268, 4229, -1, 4231, 3272, -1, -1, -1, -1, -1, 4238, 3279, -1, 4241, 4242, -1, -1, 4245, 4246, 4247, 4248, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, -1, -1, -1, -1, 40, 3309, 42, -1, 4272, -1, 138, 3315, -1, -1, 3318, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3350, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3367, -1, -1, 4330, 4331, 4332, -1, -1, 4335, 4336, -1, 4338, 4339, 4340, 4341, 4342, -1, -1, -1, -1, -1, -1, 3389, -1, -1, 3392, -1, 4354, 3395, 3396, 3397, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 4371, -1, -1, -1, -1, -1, -1, 4378, 3419, 4380, 4381, -1, -1, -1, -1, -1, 4953, 1870, -1, 4956, -1, 4958, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, -1, -1, -1, 4410, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 1909, -1, 1911, 4430, -1, -1, -1, -1, 4435, -1, -1, -1, -1, 0, -1, -1, 1925, -1, -1, -1, -1, -1, -1, 1932, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, 56, 269, 1980, -1, 60, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 79, 80, -1, -1, -1, -1, 4525, 4526, 4527, -1, 5095, -1, 4531, 4532, 4533, -1, -1, -1, 97, -1, 4539, 4540, -1, -1, 4543, -1, -1, -1, -1, -1, 4549, -1, 4551, -1, -1, -1, 5121, -1, 5123, -1, 5125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4576, -1, -1, -1, -1, -1, -1, 4583, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 174, 175, -1, 4617, -1, -1, -1, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4651, -1, -1, 4654, -1, -1, 217, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4669, 4670, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, 4200, -1, 4202, 4203, -1, -1, -1, -1, -1, 1008, -1, 1010, 4212, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, 4223, -1, -1, -1, -1, -1, 4229, -1, 4231, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, 4242, -1, -1, 4245, 4246, -1, 4248, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1057, 1058, 1059, -1, -1, -1, 313, -1, 4755, 139, 140, -1, -1, -1, -1, -1, 4763, 147, 4765, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3833, -1, -1, 3836, 180, 181, -1, 183, -1, -1, 3843, 4804, -1, 4806, -1, 191, 192, 193, 4811, -1, -1, 4814, -1, -1, -1, 201, -1, 203, -1, -1, -1, -1, -1, 3866, -1, 3868, -1, -1, 3871, -1, -1, 3874, -1, -1, 3877, 221, -1, 3880, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, 4851, 235, -1, -1, -1, 4856, -1, -1, 4859, 243, -1, 245, 4863, 4864, -1, 3906, -1, -1, -1, -1, 1927, 1928, 1929, 1930, 1931, 4876, 1933, 1934, 1935, 1936, 1937, 1938, -1, 267, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, -1, 1962, -1, 468, -1, -1, -1, -1, -1, -1, 4915, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 491, 4932, 493, 494, -1, 496, -1, -1, 499, -1, -1, -1, -1, 504, -1, -1, -1, -1, -1, -1, -1, -1, 4953, -1, -1, 4956, -1, 4958, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, 4978, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4993, -1, 555, -1, 4997, -1, -1, -1, -1, 1008, 5003, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, 4525, 4526, 5016, -1, -1, 579, 4531, 4532, -1, -1, -1, -1, 85, 587, 4539, 4540, -1, -1, 4543, -1, -1, -1, -1, -1, -1, -1, -1, 601, -1, 603, -1, 605, -1, 607, -1, -1, -1, 1057, 1058, 1059, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4118, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5093, -1, 5095, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4617, -1, 5108, -1, -1, -1, 672, 673, -1, -1, -1, 5117, -1, -1, -1, 5121, -1, 5123, -1, 5125, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, 700, 35, -1, 703, 704, 705, 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4669, 4670, -1, 220, -1, -1, 724, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 735, -1, -1, -1, -1, -1, 741, -1, -1, -1, -1, -1, -1, -1, 749, -1, 85, -1, -1, 5194, 755, 756, -1, 5198, -1, -1, -1, -1, -1, 764, 765, -1, -1, 768, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, 791, 291, 793, -1, 294, -1, -1, 798, -1, 299, -1, -1, -1, 138, -1, 806, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 836, 837, -1, -1, 840, 493, -1, -1, -1, -1, -1, 4327, -1, 849, -1, -1, -1, -1, -1, -1, -1, 857, -1, -1, 5300, -1, -1, -1, -1, 865, 866, 867, 868, 869, 870, -1, 872, 873, -1, -1, -1, -1, -1, -1, -1, 881, 882, 883, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, -1, -1, -1, 25, 26, 4851, 28, 29, 30, -1, 4856, 33, -1, 35, -1, -1, -1, -1, 4864, -1, -1, 4396, -1, -1, -1, -1, -1, -1, -1, 924, -1, -1, -1, 5368, -1, -1, -1, 932, -1, 934, 269, -1, -1, 938, 939, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, -1, 85, -1, -1, -1, -1, -1, 4915, -1, -1, 5407, 968, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, 4932, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4953, -1, -1, 4956, -1, 4958, 1008, -1, 1010, 138, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1028, -1, 1030, -1, -1, -1, 85, 1035, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1045, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1057, 1058, 1059, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1069, -1, -1, -1, -1, 1074, 1075, -1, -1, 129, 1079, 1080, -1, 1082, -1, -1, -1, -1, 138, -1, 741, -1, -1, -1, -1, -1, 1095, -1, 749, -1, -1, -1, 152, -1, 755, 756, -1, 1106, -1, -1, -1, -1, -1, 764, 765, 165, -1, -1, -1, 1008, -1, 1010, -1, 1012, 1013, 1124, 1015, -1, 1017, 1018, -1, -1, -1, -1, 1133, -1, -1, -1, -1, -1, 791, -1, 793, 269, -1, 5095, -1, -1, -1, -1, 276, 277, 278, 279, 280, 281, 282, 283, 5108, 285, 286, 287, 288, -1, -1, -1, -1, -1, 1057, 1058, 1059, 5121, -1, 5123, -1, 5125, -1, -1, 1927, 1928, 1929, 1930, 1931, -1, 1933, 1934, 1935, 1936, 1937, 1938, -1, -1, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, -1, 1962, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 1241, -1, 294, -1, -1, -1, 298, -1, -1, 1250, -1, -1, 1253, 1254, -1, -1, -1, -1, 4739, -1, -1, 1262, 1263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1291, -1, -1, 1294, -1, -1, -1, 1298, -1, -1, -1, -1, -1, -1, -1, 1306, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 1323, 28, 29, 30, 1327, 1328, 33, -1, 35, 36, -1, 1334, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1374, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, 1388, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1406, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 5368, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 138, -1, 1436, -1, -1, -1, -1, -1, -1, -1, -1, 1445, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, 5407, -1, -1, -1, -1, -1, 1462, -1, -1, -1, -1, -1, 1468, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, 1479, -1, 1927, 1928, 1929, 1930, 1931, -1, 1933, 1934, 1935, 1936, 1937, 1938, -1, -1, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 129, 1962, -1, 1518, -1, 1520, 1521, -1, 1523, 138, 1525, 1526, 1527, 1528, 1529, 1530, 1531, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, 1553, 1554, 1555, 1556, -1, -1, -1, -1, 1561, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 1579, 284, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, 1250, -1, -1, 1253, 1254, -1, -1, -1, -1, -1, -1, 1609, 1262, 1263, 1612, -1, 1614, 1615, 1616, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1638, -1, -1, -1, -1, -1, -1, -1, -1, 1647, -1, 1649, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, 3603, 1682, 1683, 1684, 1685, 1686, 1687, -1, 1689, 1690, 1691, 1692, 1693, 1694, -1, -1, -1, 1698, 1699, -1, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, -1, 1720, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3660, -1, 3662, -1, -1, -1, 3666, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1754, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3690, -1, -1, -1, -1, -1, 1774, -1, -1, -1, 1778, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1790, -1, 1792, 1445, 1794, -1, 1796, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1815, -1, -1, -1, 5299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1855, 1856, -1, -1, -1, -1, -1, -1, -1, 1864, 1865, 1518, -1, 1520, 1521, 1870, -1, -1, 1525, 1526, 1527, -1, 1529, 1530, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5369, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1553, 1554, 1555, 1556, -1, -1, -1, -1, 1909, -1, 1911, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1925, -1, 1927, 1928, 1929, 1930, 1931, -1, 1933, 1934, 1935, 1936, 1937, 1938, -1, -1, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, -1, 1962, -1, -1, 21, -1, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 1980, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 2000, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, 1927, 1928, 1929, 1930, 1931, -1, 1933, 1934, 1935, 1936, 1937, 1938, 85, -1, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, -1, 1962, -1, -1, -1, -1, -1, -1, -1, 2080, -1, 138, -1, -1, 2085, -1, -1, -1, -1, -1, -1, -1, -1, 2094, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, 2108, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2124, -1, 2126, 2127, -1, 2129, -1, 2131, 2132, 2133, 2134, 2135, 2136, 2137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, 2159, 2160, 2161, 2162, 2163, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, 29, -1, -1, -1, -1, 2181, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2204, 58, -1, -1, 61, 62, -1, 2211, 65, 269, -1, -1, -1, -1, 71, -1, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, 269, 87, -1, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, 106, 107, 108, -1, -1, 21, 22, -1, 114, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, -1, -1, 128, -1, 40, 4200, -1, 4202, 4203, -1, -1, -1, -1, 139, 140, -1, -1, 4212, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, 4223, -1, 156, -1, -1, -1, 4229, 161, 4231, 163, 164, -1, -1, -1, -1, -1, 170, -1, -1, 4242, -1, 85, 4245, 4246, -1, 4248, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, 5, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, 138, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, 21, -1, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, 289, 35, -1, -1, -1, 27, -1, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, 43, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2127, -1, -1, -1, -1, 2132, 2133, -1, 2135, 2136, -1, -1, 85, 74, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, 146, -1, 148, -1, -1, -1, 269, 2159, 2160, 2161, 2162, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, 136, 137, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 39, 40, 166, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 182, -1, -1, -1, -1, -1, -1, 4525, 4526, -1, -1, -1, -1, 4531, 4532, -1, -1, -1, -1, -1, -1, 4539, 4540, 205, 206, 4543, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 224, 225, 226, 227, 228, 229, -1, -1, -1, 293, 294, 295, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, -1, 253, 314, -1, -1, 269, -1, -1, 260, -1, -1, 138, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 288, 152, -1, -1, -1, 4617, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, 4669, 4670, 395, -1, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4272, -1, -1, 84, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 441, -1, 443, -1, -1, -1, 106, 107, 108, -1, -1, -1, -1, 269, 114, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 128, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, 139, 140, -1, 298, -1, -1, -1, -1, 147, -1, -1, 150, 151, 493, 494, -1, -1, 156, -1, 499, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, 555, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, 4851, 235, -1, -1, -1, 4856, -1, -1, -1, 243, -1, 245, 587, 4864, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, 637, -1, 4915, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 4932, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 672, 673, -1, -1, -1, 4953, -1, -1, 4956, -1, 4958, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 741, -1, -1, -1, -1, -1, -1, -1, 749, -1, -1, -1, -1, -1, 755, 756, -1, -1, 85, -1, -1, -1, -1, 764, 765, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 791, -1, 793, -1, -1, -1, -1, 798, 799, 800, -1, -1, 129, -1, -1, 806, 133, -1, -1, -1, -1, 138, -1, -1, -1, -1, 143, -1, 5095, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5108, -1, -1, -1, 836, 837, -1, 165, 840, 841, 842, -1, -1, 5121, -1, 5123, -1, 5125, 3204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 865, 866, 867, 868, 869, 870, -1, 872, 873, -1, -1, -1, -1, -1, -1, -1, 881, 882, 883, -1, -1, 212, 213, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, 902, 903, -1, 905, 906, -1, -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 924, -1, -1, -1, 254, -1, -1, -1, 932, -1, -1, -1, -1, -1, 938, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, 981, 982, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1008, -1, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1028, 1029, 1030, -1, -1, -1, -1, 1035, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1045, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1057, 1058, 1059, 1060, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1074, 1075, -1, -1, -1, 1079, 1080, -1, 1082, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5368, -1, -1, 1095, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1106, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1116, 1117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5407, -1, -1, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, 3516, 3517, -1, -1, 3520, -1, 4272, -1, 3524, 3525, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3535, -1, -1, -1, -1, -1, -1, -1, -1, 3544, -1, -1, -1, -1, -1, -1, -1, 85, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 3581, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1241, 129, -1, -1, -1, 133, -1, -1, 3603, 1250, 138, -1, 1253, 1254, -1, 143, -1, -1, -1, -1, -1, 1262, 1263, 85, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, 3633, -1, 3635, -1, -1, -1, -1, -1, -1, 3642, -1, -1, 1291, -1, -1, 1294, 1295, 1296, -1, 1298, -1, -1, -1, -1, -1, -1, -1, 3660, -1, 3662, -1, -1, -1, 3666, 3667, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, 212, 213, 1327, 1328, -1, -1, 1331, -1, 220, -1, -1, 3690, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 299, 300, 301, -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1445, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 1462, 284, 285, 286, 287, 288, 1468, -1, -1, -1, 4272, 3827, -1, -1, -1, 21, 22, 1479, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1510, -1, -1, -1, -1, -1, -1, -1, 1518, -1, 1520, 1521, -1, 1523, -1, 1525, 1526, 1527, 1528, 1529, 1530, 1531, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1553, 1554, 1555, 1556, -1, 3912, -1, -1, 1561, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 3927, 33, -1, 35, 36, -1, 1579, -1, 40, -1, 42, 3938, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, 1601, -1, -1, -1, -1, -1, -1, -1, 1609, -1, -1, 1612, -1, 1614, 1615, 1616, -1, 3972, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1638, -1, -1, -1, -1, -1, 3998, -1, 4000, -1, -1, -1, 4004, -1, -1, 4007, 4008, 4009, -1, 4011, 4012, 4013, 4014, 4015, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, -1, -1, -1, 1698, 1699, -1, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, -1, 1720, -1, -1, -1, -1, 269, 4080, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, 4117, -1, 309, 310, 311, 312, -1, 4124, -1, 4126, -1, 4128, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 4178, 284, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 4200, -1, 4202, 4203, 4204, -1, 4206, -1, -1, 1855, 1856, -1, 4212, -1, -1, -1, 4216, -1, 1864, 1865, -1, -1, -1, 4223, 1870, -1, -1, -1, -1, 4229, -1, 4231, -1, -1, -1, -1, -1, 1883, 4238, -1, -1, 4241, 4242, -1, 1890, 4245, 4246, -1, 4248, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1909, -1, 1911, -1, -1, -1, -1, -1, -1, 4272, -1, -1, -1, -1, -1, -1, 1925, -1, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, -1, -1, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, -1, 1962, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4330, 4331, 4332, -1, 1980, 4335, 4336, -1, 4338, 4339, 4340, 4341, 4342, -1, -1, -1, 3998, -1, 4000, -1, -1, -1, 4004, -1, 4354, 4007, 4008, 4009, -1, 4011, 4012, 4013, 4014, 4015, -1, 21, 22, -1, -1, 25, 26, 4371, 28, 29, 30, -1, -1, 33, 4378, 35, 4380, 4381, 4272, 269, 40, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, 85, 4430, -1, -1, -1, 2080, 4435, -1, -1, -1, 2085, -1, -1, -1, -1, -1, -1, -1, -1, 2094, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2108, -1, -1, -1, -1, -1, -1, -1, -1, 2117, -1, -1, -1, -1, -1, -1, 2124, -1, 2126, 2127, 138, 2129, -1, 2131, 2132, 2133, 2134, 2135, 2136, 2137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2159, 2160, 2161, 2162, 2163, -1, -1, -1, -1, -1, -1, -1, 4525, 4526, 4527, -1, -1, -1, 4531, 4532, 4533, -1, -1, -1, -1, -1, 4539, 4540, -1, -1, 4543, -1, -1, -1, -1, -1, 4549, -1, 4551, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4576, -1, -1, -1, -1, -1, -1, 4583, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, 269, -1, -1, -1, 4617, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 288, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, -1, 4651, 33, -1, 35, 36, -1, 58, -1, 40, 61, 42, -1, -1, 65, -1, -1, 48, -1, 4669, 4670, -1, -1, -1, -1, -1, -1, -1, 4330, 4331, 4332, -1, -1, 4335, 4336, -1, 4338, 4339, 4340, 4341, 4342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, 4755, -1, 138, -1, -1, -1, -1, 143, 4763, -1, 4765, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 4430, 180, 181, -1, 183, 4435, 165, -1, -1, -1, -1, 0, 191, 192, 193, -1, 5, -1, -1, -1, -1, -1, 201, -1, 203, -1, 4804, -1, 4806, -1, -1, -1, -1, 4811, -1, -1, 4814, -1, -1, 28, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, 49, 220, -1, -1, 243, -1, 245, 56, -1, -1, -1, 60, -1, 4851, -1, -1, -1, -1, 4856, -1, -1, 4859, -1, -1, -1, 4863, 4864, -1, 267, -1, 79, 80, -1, -1, -1, 254, -1, -1, 4876, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, 4915, -1, 298, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, 4932, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4953, -1, -1, 4956, -1, 4958, -1, -1, -1, -1, 174, 175, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 4978, 33, -1, 35, 36, 194, 195, -1, 40, -1, 42, -1, -1, -1, -1, 4993, -1, -1, -1, 4997, -1, -1, -1, -1, -1, 5003, -1, -1, 217, -1, -1, -1, -1, -1, 0, -1, -1, -1, 5016, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 49, 28, 29, 30, -1, -1, 33, 56, 35, 36, -1, 60, -1, 40, -1, 42, -1, -1, -1, 291, -1, -1, -1, 138, -1, 297, -1, -1, -1, -1, 79, 80, 5093, -1, 5095, -1, -1, 152, -1, -1, -1, 313, -1, -1, -1, -1, -1, 5108, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, 5121, -1, 5123, -1, 5125, -1, -1, -1, 340, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4804, -1, 4806, -1, -1, -1, -1, 4811, -1, -1, 4814, -1, -1, 153, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, -1, 174, 175, -1, -1, -1, -1, -1, -1, 5194, -1, -1, -1, 5198, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 200, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 217, 284, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 455, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 491, -1, -1, -1, -1, 496, -1, -1, -1, -1, -1, -1, 503, 504, 505, -1, -1, -1, -1, -1, 5300, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 313, 4978, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 551, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5016, -1, -1, -1, 5368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, 5407, 18, 19, -1, -1, 22, 23, 24, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, 637, 37, -1, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, 5093, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 700, -1, -1, 703, 704, 705, -1, 106, 107, 108, -1, -1, -1, -1, 491, 114, -1, -1, -1, 496, -1, -1, -1, -1, 724, -1, -1, 504, -1, 128, -1, -1, -1, -1, -1, 735, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, 156, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, 768, -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, 849, -1, 250, -1, -1, -1, -1, -1, 857, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299, -1, -1, -1, -1, 905, 906, -1, -1, -1, -1, -1, -1, -1, 313, 314, 916, -1, -1, -1, -1, -1, -1, 700, -1, -1, 703, 704, 705, -1, -1, -1, -1, -1, 934, -1, -1, -1, -1, 939, -1, -1, -1, 342, 343, -1, -1, 724, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 735, -1, -1, -1, -1, -1, -1, -1, -1, -1, 968, -1, -1, -1, -1, -1, 974, -1, -1, -1, -1, -1, -1, -1, 982, -1, -1, -1, -1, -1, -1, -1, -1, 768, -1, -1, -1, -1, 4, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1009, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1028, 1029, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1045, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 67, 1060, -1, -1, -1, -1, -1, -1, -1, -1, 1069, -1, -1, 849, -1, -1, -1, -1, -1, -1, -1, 857, 3516, 3517, -1, -1, 3520, -1, -1, -1, 3524, 3525, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, 21, 22, -1, 3544, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, -1, 1122, -1, 1124, 40, -1, 42, -1, -1, -1, 139, 140, 1133, 142, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 934, -1, -1, -1, -1, 939, -1, -1, -1, -1, -1, 3603, 3604, 85, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, -1, -1, -1, -1, -1, -1, 968, -1, 201, -1, 203, -1, -1, 3633, -1, 3635, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 138, 232, 3660, -1, 3662, -1, -1, -1, 3666, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, 1028, -1, -1, -1, 3690, -1, 18, 19, 267, -1, 22, 23, -1, -1, 26, -1, 28, 1045, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, 1069, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1323, -1, -1, -1, 1327, -1, -1, -1, 1331, -1, -1, 1334, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 1124, 1348, -1, -1, -1, -1, 114, 269, -1, 1133, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 288, 1374, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, 1388, 150, 151, -1, 3827, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, 5, 1436, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, 239, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, 3927, -1, -1, -1, -1, 3932, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, 1510, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, -1, -1, 3972, 299, -1, -1, -1, -1, -1, -1, -1, 1323, -1, -1, -1, 1327, -1, 313, 314, -1, -1, -1, 1334, -1, -1, -1, -1, -1, 3998, -1, 4000, -1, -1, -1, 4004, -1, 1348, 4007, 4008, 4009, -1, 4011, 4012, 4013, 4014, 4015, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1374, -1, -1, -1, 1601, -1, -1, 174, 175, -1, -1, -1, -1, -1, 1388, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 194, 195, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4080, -1, 1647, -1, 1649, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1436, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4117, -1, -1, -1, -1, -1, 1688, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 291, -1, -1, -1, -1, -1, 297, 1728, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1754, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4200, -1, 4202, 4203, 4204, 340, 4206, 342, 343, 1774, -1, -1, 4212, 1778, -1, -1, 4216, -1, -1, -1, -1, -1, -1, 4223, -1, -1, -1, -1, -1, 4229, -1, 4231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4242, 138, -1, 4245, 4246, 4247, 4248, -1, 1815, -1, -1, -1, -1, -1, -1, 152, -1, -1, 395, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1855, 1856, -1, -1, -1, -1, -1, -1, -1, -1, 1865, -1, 1867, -1, -1, 1647, -1, 1649, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 1883, -1, 33, -1, 35, 36, -1, 1890, -1, 40, -1, 42, 4330, 4331, 4332, -1, -1, 4335, 4336, -1, 4338, 4339, 4340, 4341, 4342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4354, -1, -1, -1, 493, 494, -1, -1, -1, -1, 499, -1, -1, 1932, 503, -1, -1, 4371, 85, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, 4410, -1, 1754, -1, -1, -1, 551, -1, -1, -1, 555, -1, -1, -1, -1, 138, -1, -1, -1, -1, 4430, -1, 1774, -1, -1, 4435, 1778, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 587, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, 1815, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2058, -1, -1, -1, -1, -1, -1, -1, -1, 637, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, 1855, 1856, -1, -1, -1, -1, -1, -1, -1, -1, 1865, 85, 4525, 4526, 4527, -1, -1, -1, 4531, 4532, -1, -1, -1, -1, 672, 673, 4539, 4540, 254, -1, 4543, -1, -1, -1, -1, -1, -1, -1, -1, 2117, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, 138, 291, -1, -1, 294, -1, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, 741, -1, -1, -1, -1, -1, -1, -1, 749, -1, 2181, 4617, -1, -1, 755, 756, -1, -1, -1, -1, -1, -1, -1, 764, 765, -1, -1, -1, -1, -1, -1, -1, -1, 2204, -1, -1, -1, -1, -1, -1, 2211, -1, -1, -1, -1, -1, -1, -1, 4654, -1, 791, -1, 793, -1, -1, -1, -1, 798, -1, -1, -1, -1, -1, 4669, 4670, 806, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 836, 837, -1, -1, 840, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 865, 866, 867, 868, 869, 870, -1, 872, 873, -1, -1, -1, -1, -1, -1, -1, 881, 882, 883, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 905, 906, -1, -1, -1, -1, -1, -1, -1, -1, -1, 916, -1, -1, -1, -1, -1, -1, -1, 924, -1, -1, -1, -1, -1, -1, -1, 932, -1, -1, -1, -1, -1, 938, 4804, -1, 4806, -1, -1, -1, -1, 4811, -1, -1, 4814, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 2181, 40, -1, 42, -1, -1, -1, -1, 982, 48, -1, -1, 4851, -1, -1, -1, -1, 4856, -1, -1, -1, -1, -1, 2204, -1, 4864, -1, -1, -1, -1, 2211, -1, -1, -1, 1008, -1, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, 85, -1, -1, -1, -1, -1, -1, -1, 1028, 1029, 1030, -1, -1, -1, -1, 1035, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1045, -1, -1, -1, -1, 4915, -1, -1, -1, -1, -1, -1, 1057, 1058, 1059, 1060, -1, -1, -1, -1, -1, -1, 4932, -1, -1, -1, -1, -1, 138, 1074, 1075, -1, -1, 143, 1079, 1080, -1, 1082, -1, -1, -1, -1, 152, 4953, -1, -1, 4956, -1, 4958, -1, 1095, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, 1106, -1, -1, -1, -1, -1, -1, 4978, -1, -1, -1, -1, -1, -1, -1, -1, 1122, -1, 1124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5016, -1, -1, -1, 220, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, 85, 291, -1, 5093, 294, 5095, -1, -1, 298, 299, -1, -1, -1, -1, -1, -1, 1241, -1, 5108, 309, 310, 311, 312, -1, -1, 1250, -1, 5117, 1253, 1254, -1, 5121, -1, 5123, -1, 5125, -1, 1262, 1263, -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, -1, -1, -1, -1, 138, -1, -1, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, 1291, 152, -1, 1294, -1, -1, -1, 1298, -1, -1, -1, -1, -1, -1, 165, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, 1327, 1328, 5194, -1, 1331, -1, -1, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 212, 213, -1, -1, 49, -1, -1, -1, 220, -1, -1, 56, -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, 79, 80, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, 5300, -1, -1, 298, 299, 300, 301, -1, -1, -1, 1445, -1, 307, 308, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, 153, -1, 1462, -1, -1, -1, -1, -1, 1468, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1479, -1, 174, 175, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, 5368, -1, 39, 40, 200, 42, -1, 1510, -1, -1, -1, -1, -1, -1, -1, 1518, -1, 1520, 1521, -1, 1523, 217, 1525, 1526, 1527, 1528, 1529, 1530, 1531, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5407, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, 1553, 1554, 1555, 1556, -1, -1, -1, -1, 1561, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, 1579, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1601, -1, -1, 138, -1, -1, -1, -1, 1609, -1, -1, 1612, -1, 1614, 1615, 1616, -1, 152, -1, 313, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1638, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, -1, -1, -1, 1698, 1699, -1, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, -1, 1720, -1, -1, -1, -1, -1, -1, -1, 1728, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, 21, 22, -1, 298, 25, 26, -1, 28, 29, 30, -1, -1, 33, 3204, 35, -1, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 491, -1, -1, -1, -1, 496, -1, -1, -1, -1, -1, -1, 269, 504, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 85, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1855, 1856, -1, -1, -1, -1, -1, -1, -1, 1864, 1865, -1, 1867, -1, -1, 1870, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 1883, -1, -1, -1, -1, -1, -1, 1890, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1909, -1, 1911, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1925, -1, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, -1, -1, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, -1, 1962, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1980, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3425, -1, 3204, -1, -1, -1, -1, -1, -1, -1, -1, -1, 700, -1, 269, 703, 704, 705, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 724, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 735, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, 2058, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 768, -1, -1, -1, -1, 2080, -1, -1, -1, -1, 2085, -1, 3517, -1, -1, 0, -1, -1, -1, 2094, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, 3535, -1, -1, 2108, -1, -1, -1, -1, -1, -1, -1, -1, 2117, 28, -1, -1, -1, -1, -1, 2124, -1, 2126, 2127, 3558, 2129, -1, 2131, 2132, 2133, 2134, 2135, 2136, 2137, -1, 49, -1, -1, -1, -1, 129, -1, 56, -1, 133, -1, 60, 3581, -1, 138, -1, -1, 849, -1, 143, 2159, 2160, 2161, 2162, 2163, 857, -1, -1, 152, -1, 79, 80, -1, -1, -1, 3604, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3633, -1, 3635, -1, -1, -1, -1, -1, -1, 3642, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 212, 213, -1, -1, -1, -1, -1, -1, 220, -1, 3667, -1, -1, -1, 934, -1, 153, -1, -1, 939, -1, -1, -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 174, 175, -1, -1, -1, 254, -1, -1, -1, -1, -1, 968, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 217, -1, 294, 3517, -1, -1, 298, 299, 300, 301, -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, 3535, -1, -1, -1, -1, -1, -1, 1028, -1, -1, -1, 4, -1, -1, 7, 3, 4, -1, -1, 7, -1, 9, 10, 11, 1045, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, 24, -1, 26, -1, 28, -1, -1, -1, -1, -1, 3581, -1, 1069, 37, -1, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, 58, -1, 65, 61, 62, 313, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3633, 87, 3635, -1, -1, 1124, -1, -1, -1, 3642, -1, -1, -1, -1, 1133, 106, 107, -1, -1, -1, 106, 107, 108, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, 3667, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, 139, 140, -1, 147, -1, -1, 150, 151, 147, -1, -1, 150, 151, -1, -1, -1, -1, 156, 3927, -1, -1, -1, 161, 3932, 163, 164, -1, -1, -1, 3938, -1, 170, -1, -1, -1, -1, 180, 181, -1, 183, -1, 180, 181, -1, 183, 184, -1, 191, 192, -1, -1, -1, 191, 192, 193, -1, -1, 201, -1, 203, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, 221, -1, -1, 219, -1, 221, -1, -1, -1, 230, -1, 232, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, 243, -1, 245, 491, -1, 243, -1, 245, 496, -1, -1, -1, 250, -1, -1, 7, 504, -1, -1, -1, -1, -1, -1, -1, 267, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, 1323, -1, -1, -1, 1327, -1, -1, -1, -1, 299, -1, 1334, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 313, 314, 1348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1374, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 4124, 1388, 4126, -1, 4128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, 3927, 33, -1, 35, 36, 139, 140, -1, 40, -1, 42, 3938, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 1436, -1, -1, -1, -1, 4178, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 85, 4204, -1, 4206, 191, 192, -1, -1, -1, -1, -1, -1, -1, 4216, 201, -1, 203, 700, -1, -1, 703, 704, 705, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, 4238, -1, -1, 4241, -1, -1, 724, -1, 230, 4247, 232, -1, -1, -1, -1, -1, -1, 735, 138, -1, -1, 243, -1, 245, 246, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, 768, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4124, -1, 4126, -1, 4128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 849, -1, 4371, -1, -1, -1, -1, -1, 857, 4378, -1, 4380, 4381, -1, -1, 1647, -1, 1649, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 4178, 284, 285, 286, 287, 288, -1, -1, 291, 4410, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4204, -1, 4206, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4216, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 934, -1, -1, -1, -1, 939, -1, 4238, -1, -1, 4241, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 968, -1, -1, 1754, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1774, -1, -1, -1, 1778, -1, -1, -1, -1, -1, -1, 3, 4, -1, -1, 7, 4527, 9, 10, 11, -1, -1, 4533, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, 1028, 4549, -1, 4551, 1815, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, 45, 1045, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4576, 58, -1, -1, 61, 62, -1, 4583, 65, -1, -1, -1, -1, 1069, 71, -1, 1855, 1856, 4371, -1, -1, -1, -1, -1, -1, 4378, 1865, 4380, 4381, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1124, -1, -1, 128, -1, -1, -1, 4651, -1, 1133, 4654, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, 156, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 4527, 232, -1, -1, 235, 4755, 4533, -1, -1, -1, -1, -1, 243, 4763, 245, 4765, -1, -1, -1, 250, -1, -1, 4549, -1, 4551, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, 4576, -1, -1, -1, -1, -1, -1, 4583, -1, 289, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1323, -1, -1, -1, 1327, -1, -1, -1, -1, -1, -1, 1334, 3425, -1, -1, -1, 4859, -1, 342, 343, 4863, -1, -1, -1, -1, 1348, -1, -1, -1, -1, -1, 4651, -1, 4876, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1374, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, -1, -1, 33, 1388, 35, 36, -1, -1, -1, 40, -1, 42, -1, 2181, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2204, -1, -1, -1, -1, 3516, 3517, 2211, -1, 3520, -1, -1, -1, 3524, 3525, 1436, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3544, -1, -1, -1, 4755, -1, -1, -1, -1, -1, -1, -1, 4763, -1, 4765, -1, -1, -1, -1, 4993, -1, -1, -1, 4997, -1, -1, -1, -1, -1, 5003, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 143, -1, -1, -1, -1, -1, 21, 22, -1, 152, 25, 26, -1, 28, 29, 30, 3603, 3604, 33, -1, 35, -1, 165, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3633, -1, 3635, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4859, -1, -1, -1, 4863, 85, -1, -1, 3660, -1, 3662, -1, 220, -1, 3666, -1, -1, 4876, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5117, -1, -1, 3690, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, 1647, 294, 1649, -1, -1, 298, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5198, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4993, -1, -1, -1, 4997, -1, -1, -1, -1, -1, 5003, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3827, -1, -1, -1, -1, -1, 5263, -1, -1, -1, -1, -1, -1, -1, 269, -1, -1, 1754, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 288, -1, -1, -1, 1774, -1, -1, -1, 1778, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1815, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, 3927, -1, -1, 18, 19, 3932, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, 1855, 1856, -1, -1, 37, -1, -1, 40, 41, 42, 1865, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, 3972, 61, 62, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 5198, -1, -1, -1, -1, 84, -1, 3998, -1, 4000, -1, -1, -1, 4004, -1, -1, 4007, 4008, 4009, -1, 4011, 4012, 4013, 4014, 4015, -1, -1, 106, 107, 108, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, 5263, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, 4080, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, 4117, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, 239, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, 7, 8, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4200, 289, 4202, 4203, 4204, -1, 4206, -1, -1, -1, -1, 299, 4212, -1, 38, -1, 4216, -1, -1, -1, -1, -1, -1, 4223, -1, 313, 314, -1, -1, 4229, -1, 4231, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, 4242, -1, -1, 4245, 4246, 4247, 4248, -1, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2181, 4272, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2204, -1, -1, -1, -1, -1, -1, 2211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, 4330, 4331, 4332, -1, -1, 4335, 4336, -1, 4338, 4339, 4340, 4341, 4342, -1, -1, -1, -1, -1, -1, 173, -1, -1, -1, -1, 4354, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, 193, -1, 4371, -1, -1, -1, -1, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, 4410, 235, -1, -1, 238, 239, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, 4430, -1, -1, 3, 4, 4435, -1, 7, -1, 9, 10, 11, -1, 267, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, -1, -1, 21, 22, -1, 71, 25, 26, -1, 28, 29, 30, -1, -1, 33, 3204, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 4525, 4526, 4527, -1, -1, -1, 4531, 4532, -1, -1, -1, 106, 107, 108, 4539, 4540, -1, -1, 4543, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, 4576, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, 138, -1, 4617, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, 152, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, 4654, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, 4669, 4670, -1, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, 342, 343, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, 4804, -1, 4806, -1, -1, -1, -1, 4811, -1, -1, 4814, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3517, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, 3535, -1, -1, -1, -1, -1, -1, -1, -1, 4851, -1, -1, -1, -1, 4856, -1, -1, -1, -1, -1, -1, -1, 4864, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, -1, 3581, -1, -1, 138, -1, -1, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4915, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4932, -1, -1, -1, -1, -1, -1, -1, 3633, -1, 3635, -1, -1, -1, -1, -1, -1, 3642, -1, -1, -1, 4953, -1, -1, 4956, -1, 4958, -1, -1, -1, -1, -1, -1, 212, 213, -1, -1, -1, -1, -1, -1, 220, 3667, -1, -1, -1, 4978, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, 5016, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 299, 300, 301, -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5093, -1, 5095, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5108, -1, -1, -1, -1, -1, -1, -1, -1, 5117, -1, -1, -1, 5121, -1, 5123, -1, 5125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, -1, -1, -1, 5194, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, 74, -1, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, 86, -1, 3927, -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, 3938, -1, -1, -1, -1, -1, 105, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, 134, -1, 136, 137, -1, 139, 140, -1, -1, -1, -1, 145, 146, 147, 3204, -1, 150, 151, -1, -1, 5300, -1, -1, 157, -1, -1, -1, -1, -1, -1, 164, -1, 166, -1, -1, 169, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, 182, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, 5368, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, -1, 239, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5407, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4124, -1, 4126, -1, 4128, -1, -1, -1, -1, 294, 295, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, 7, 3, 4, 313, 314, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, 4178, -1, -1, 342, 343, -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, 58, -1, -1, 61, 4204, 58, 4206, 65, 61, 62, -1, -1, 65, -1, -1, -1, 4216, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4238, -1, -1, 4241, -1, -1, 102, -1, -1, -1, 106, 107, -1, -1, -1, 106, 107, 108, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, 139, 140, -1, 147, -1, -1, 150, 151, 147, -1, -1, 150, 151, -1, 3517, -1, -1, -1, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, -1, 3535, -1, -1, -1, 180, 181, -1, 183, -1, 180, 181, -1, 183, 184, -1, 191, 192, -1, -1, -1, 191, 192, 193, -1, -1, 201, -1, 203, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, 221, 3581, -1, 219, -1, 221, -1, -1, 4371, 230, -1, 232, -1, -1, 230, 4378, 232, 4380, 4381, 235, -1, -1, 243, -1, 245, 246, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, 263, 264, 265, -1, 267, 268, 3633, 270, 3635, -1, 273, 274, 275, -1, -1, 3642, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299, -1, -1, -1, 3667, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 20, -1, 22, 23, 4527, -1, 26, -1, 28, -1, 4533, -1, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, -1, 4549, -1, 4551, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, 4576, 74, -1, 76, 77, -1, -1, 4583, 81, -1, -1, 84, -1, 86, -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, 134, -1, 136, 137, -1, 139, 140, -1, -1, -1, -1, 145, 146, 147, 4651, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, 164, -1, 166, -1, -1, 169, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, 182, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, 204, -1, -1, 3927, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, 3938, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, -1, 239, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, 4755, -1, -1, -1, -1, -1, -1, -1, 4763, -1, 4765, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4859, -1, -1, -1, 4863, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4876, -1, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, 4124, -1, 4126, -1, 4128, -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4178, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, 4204, 198, 4206, -1, -1, 114, 4993, -1, -1, -1, 4997, -1, 4216, -1, -1, -1, 5003, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, 4238, -1, -1, 4241, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 315, -1, -1, 230, -1, 232, -1, 4, 235, -1, 7, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, 41, -1, 273, 274, 275, 4371, -1, -1, -1, -1, -1, -1, 4378, -1, 4380, 4381, -1, 58, 289, -1, 61, -1, -1, -1, 65, -1, -1, -1, 299, -1, -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, -1, 313, 314, -1, -1, -1, -1, -1, 5198, -1, -1, -1, 412, 413, 414, 415, 416, 417, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, 5263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 485, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 497, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, -1, -1, -1, -1, -1, -1, -1, -1, 201, 4527, 203, 204, -1, -1, -1, 4533, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 219, -1, 221, -1, -1, 4549, -1, 4551, -1, -1, -1, 230, -1, 232, -1, -1, -1, -1, -1, -1, 239, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, 4576, -1, -1, -1, -1, -1, -1, 4583, -1, -1, 579, -1, -1, -1, -1, 266, 267, -1, -1, 270, -1, -1, -1, 592, 593, -1, -1, -1, -1, -1, -1, 600, 601, -1, 603, -1, 605, -1, 607, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 632, 633, 634, 635, 636, -1, 638, 639, 640, 641, 642, 643, 4651, -1, 646, -1, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 716, -1, -1, -1, -1, -1, -1, -1, -1, -1, 726, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, 739, 740, -1, 742, 743, 744, 745, 746, 747, 4755, -1, -1, -1, -1, -1, -1, -1, 4763, -1, 4765, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 770, 771, 772, -1, -1, 775, 776, -1, -1, -1, -1, 129, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, 804, 805, -1, 807, 808, 809, 810, 811, 812, -1, -1, -1, -1, 165, 818, 819, 820, -1, 822, 823, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 32, 33, -1, 35, 36, 4859, -1, -1, 40, 4863, 42, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, 4876, -1, 871, 220, -1, 874, 875, -1, 877, -1, -1, -1, -1, -1, -1, -1, 885, 886, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, 912, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 129, -1, 294, -1, 133, -1, -1, 299, -1, 138, -1, -1, -1, -1, 143, -1, -1, 309, 310, 311, 312, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 979, 165, -1, -1, -1, -1, -1, 4993, -1, -1, -1, 4997, -1, -1, -1, -1, -1, 5003, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1011, -1, -1, -1, -1, 1016, -1, -1, -1, 1020, -1, -1, -1, -1, -1, -1, 212, 213, -1, -1, -1, -1, 1033, -1, 220, -1, -1, -1, -1, -1, -1, 1042, -1, -1, -1, -1, 1047, -1, -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1063, 1064, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 299, 300, 301, -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, -1, -1, 4, -1, -1, 7, -1, 1161, -1, 1163, -1, -1, -1, -1, -1, -1, -1, 1171, 1172, -1, -1, -1, 1176, 1177, 1178, 1179, -1, 1181, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5198, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1203, 1204, -1, -1, 1207, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, 1226, -1, -1, -1, 1230, -1, -1, -1, -1, -1, -1, -1, -1, 1239, 1240, -1, 1242, 1243, -1, 1245, 1246, 1247, 1248, -1, -1, -1, -1, -1, -1, -1, 5263, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, 1267, 1268, 1269, -1, 1271, 1272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, 1306, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, -1, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 219, 85, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, 1406, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, 267, -1, -1, 270, -1, 1424, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1456, -1, -1, 1459, -1, -1, -1, 1463, 1464, -1, -1, 1467, -1, 1469, 1470, -1, -1, -1, 1474, -1, 1476, -1, -1, -1, -1, -1, -1, 1483, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1505, 1506, 1507, 1508, 1509, -1, 1511, -1, 1513, 1514, 1515, 1516, 1517, -1, -1, -1, -1, -1, -1, 1524, -1, -1, -1, -1, -1, -1, -1, -1, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, 1580, 294, -1, -1, 1584, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596, 1597, 1598, 1599, 1600, -1, 1602, -1, 1604, 1605, 1606, 1607, 1608, -1, -1, -1, -1, 1613, -1, -1, -1, -1, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, -1, 7, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, 1671, -1, -1, -1, 1675, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, 58, 1696, 65, 61, -1, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1719, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1764, 128, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, 139, 140, -1, 147, -1, -1, 150, 151, 147, -1, 1786, 150, 151, -1, 1790, -1, 1792, -1, 1794, -1, 1796, -1, -1, -1, -1, 164, 1802, -1, -1, -1, -1, 1807, 1808, -1, -1, -1, 180, 181, -1, 183, -1, 180, 181, -1, 183, -1, -1, 191, 192, -1, -1, -1, 191, 192, 193, 194, -1, 201, 1834, 203, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, 1847, -1, 1849, -1, -1, 215, 221, 1854, -1, 219, -1, 221, -1, -1, -1, 230, -1, 232, -1, -1, 230, -1, 232, 233, 1871, 235, -1, -1, 243, 1876, 245, -1, 1879, 243, 1881, 245, -1, 1884, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1894, -1, -1, -1, -1, 267, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, 285, 286, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1961, -1, -1, -1, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2000, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2016, -1, -1, -1, -1, -1, 2022, -1, 2024, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2040, -1, -1, -1, 2044, 2045, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2055, -1, 2057, -1, 2059, -1, 2061, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2076, -1, -1, -1, -1, 2081, -1, -1, 2084, -1, 2086, 2087, -1, -1, -1, 2091, -1, 2093, -1, -1, -1, -1, 2098, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2112, 2113, 2114, 2115, 2116, -1, 2118, 2119, 2120, 2121, 2122, 2123, -1, -1, -1, -1, -1, -1, 2130, -1, -1, -1, -1, -1, -1, -1, -1, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, 37, -1, 2197, 40, 41, 42, -1, 44, -1, -1, -1, -1, 49, 50, 51, 52, -1, 54, 55, 2214, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, 86, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, 139, 140, -1, -1, -1, 144, 145, 146, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, 169, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, -1, 239, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, 1, 299, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, 313, 314, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, 342, 343, -1, -1, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, 86, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, 169, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, -1, 239, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, 1, 299, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, 313, 314, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, 342, 343, -1, -1, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, 139, 140, -1, -1, -1, 144, 145, 146, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, 169, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, 4, -1, -1, 7, 8, -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, -1, 239, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, 7, 251, -1, -1, -1, -1, 38, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, 74, -1, 294, 295, -1, -1, -1, 299, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, 136, 137, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, 166, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, 180, 181, 182, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, -1, -1, -1, 221, -1, -1, -1, -1, 201, -1, 203, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, 239, -1, -1, -1, 243, -1, 245, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, -1, -1, 3232, -1, 3234, -1, -1, 267, 243, -1, 245, -1, -1, -1, 3244, 3245, 3246, 3247, 3248, 3249, 3250, 3251, 3252, 3253, 3254, 3255, -1, -1, 3258, 3259, -1, -1, 267, -1, -1, 3265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3284, 3285, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 3305, 25, 26, 3308, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, 3319, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362, -1, 3364, 3365, 85, -1, -1, -1, 3370, 3371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3390, 3391, -1, -1, -1, -1, -1, -1, 3398, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, -1, -1, -1, -1, 138, -1, -1, -1, -1, 143, -1, -1, 3427, 3428, 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438, 3439, 3440, -1, 3442, 3443, 3444, -1, 165, 3447, 3448, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3465, -1, 3467, -1, -1, -1, -1, 3472, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 212, 213, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, 3507, -1, -1, -1, 3511, -1, -1, -1, 3515, -1, 236, 237, 3519, -1, -1, -1, 3523, -1, -1, -1, -1, -1, 3529, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, -1, 299, 300, 301, -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3609, 3610, 3611, 3612, 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620, 3621, 3622, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3644, -1, -1, -1, 3648, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3665, -1, -1, -1, -1, -1, -1, -1, 3673, -1, -1, -1, -1, -1, -1, 3680, -1, -1, 3683, -1, -1, 3686, -1, -1, -1, -1, -1, -1, 3693, 3694, 3695, 3696, 3697, -1, 3699, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3717, 3718, -1, -1, -1, 3722, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3743, -1, -1, 3746, 3747, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3769, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3789, 3790, -1, -1, -1, -1, -1, 3796, -1, -1, 3799, 3800, 3801, -1, 3803, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3813, 3814, 3815, 3816, 3817, 3818, 3819, 3820, 3821, 3822, 3823, 3824, -1, 3826, -1, 3828, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3845, 3846, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3867, -1, -1, 3870, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3881, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, 3912, 3913, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3931, -1, -1, 3934, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3964, -1, -1, 3967, -1, -1, -1, 3971, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, -1, -1, 3997, -1, 138, -1, 4001, -1, -1, 143, -1, 4006, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, 4018, -1, -1, -1, -1, 4023, 4024, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4045, -1, 4047, -1, 4049, -1, -1, 4052, -1, -1, -1, 4056, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4072, 212, 213, -1, -1, 4077, -1, -1, -1, 220, -1, 4083, -1, -1, -1, -1, 4088, -1, 4090, -1, -1, -1, -1, -1, 4096, 236, 237, 4099, -1, -1, -1, 4103, -1, -1, -1, -1, -1, 4109, -1, -1, 4112, 4113, -1, 254, -1, -1, -1, -1, -1, -1, 4122, -1, -1, -1, 4, -1, -1, 7, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 299, 300, 301, -1, -1, 4165, 4166, -1, 307, 308, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, 58, -1, 4182, 61, 4184, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4199, -1, 4201, -1, -1, -1, -1, -1, -1, -1, -1, 4210, -1, -1, -1, -1, -1, -1, -1, 4218, -1, -1, -1, -1, -1, -1, 4225, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, 4264, 4265, -1, 4267, 146, 147, -1, -1, 150, 151, -1, 4275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4287, -1, -1, 4290, 169, 4292, 4293, 4294, -1, 4296, 4297, -1, -1, -1, -1, 180, 181, 4304, 183, -1, -1, -1, -1, 4310, 4311, -1, 191, 192, -1, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, -1, -1, -1, 4329, -1, -1, -1, -1, 4334, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, 4345, -1, -1, 4348, 4349, -1, -1, 230, -1, 232, -1, -1, 4357, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 4372, -1, -1, -1, -1, 4377, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4409, -1, -1, 4412, 4413, 4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421, 4422, -1, 4424, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, -1, 4480, -1, -1, 49, 50, 51, 52, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, 86, -1, -1, 4523, -1, -1, -1, -1, -1, 4529, -1, -1, -1, -1, -1, 4535, -1, -1, -1, -1, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, 4602, -1, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, 4628, -1, -1, 4631, 4632, 199, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, 4672, 239, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, 4690, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, -1, 299, -1, -1, -1, -1, 4, -1, 4740, 7, -1, -1, -1, -1, -1, 313, 314, -1, 4750, -1, -1, -1, -1, -1, -1, 4757, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, 342, 343, -1, -1, -1, 4781, -1, -1, -1, -1, 4786, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, 4800, -1, 4802, 4803, -1, -1, -1, 4807, -1, -1, -1, -1, 4812, -1, 106, 107, 4816, -1, 4818, 4819, -1, 4821, -1, -1, -1, -1, 4826, -1, 4828, 4829, 4830, -1, -1, -1, 4834, 4835, 102, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 139, 140, 4849, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, 158, 4867, 160, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, 4886, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, 4905, -1, 4907, -1, 201, 4910, 203, 4912, 4913, 180, 181, -1, 183, -1, 4919, -1, -1, -1, -1, -1, 191, 192, -1, -1, 221, -1, -1, -1, -1, -1, 201, -1, 203, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, 246, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 4969, -1, 4971, -1, 4973, 4974, 267, 4976, 243, -1, 245, 246, 4981, -1, -1, -1, -1, -1, -1, 4988, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, 425, -1, -1, -1, -1, -1, -1, -1, 5015, 434, -1, 5018, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5029, -1, -1, -1, -1, -1, 5035, -1, -1, -1, -1, 5040, -1, 5042, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5066, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, -1, 499, -1, -1, -1, -1, -1, 5087, -1, -1, -1, -1, -1, -1, -1, -1, 5096, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 527, 5110, 5111, -1, 5113, 5114, -1, -1, -1, -1, -1, 5120, -1, -1, -1, -1, -1, -1, 5127, -1, 5129, 5130, -1, 5132, -1, -1, -1, -1, 555, -1, -1, 5140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 584, -1, -1, 587, -1, -1, -1, -1, -1, -1, -1, 5177, -1, 5179, 5180, 5181, 5182, -1, -1, 5185, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5199, -1, -1, 5202, 5203, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5211, 5212, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5234, -1, -1, -1, -1, -1, 5240, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 672, 673, -1, 5257, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5267, -1, 5269, 5270, 5271, -1, 5273, 5274, 5275, -1, 5277, 5278, -1, 5280, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 709, -1, -1, 5294, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, 5315, 42, 5317, 5318, -1, 5320, -1, 48, 741, -1, -1, -1, -1, -1, -1, -1, 749, 5332, -1, 5334, 5335, -1, 755, 756, -1, -1, -1, -1, -1, -1, -1, 764, 765, -1, -1, -1, -1, -1, -1, 5354, -1, -1, -1, 5358, 85, -1, 5361, 780, -1, -1, -1, -1, -1, -1, 787, -1, -1, -1, 791, -1, 793, 5376, -1, -1, -1, 798, -1, -1, -1, -1, -1, -1, -1, 806, -1, -1, -1, -1, -1, -1, -1, -1, 5397, -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, -1, 827, -1, -1, 138, -1, 832, -1, -1, 143, 836, 837, -1, -1, 840, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5436, -1, -1, 165, 5440, -1, -1, -1, -1, -1, -1, 865, 866, 867, 868, 869, 870, -1, 872, 873, -1, -1, -1, -1, -1, -1, -1, 881, 882, 883, -1, -1, -1, -1, -1, -1, 890, -1, -1, -1, -1, -1, -1, -1, 898, -1, -1, -1, -1, -1, 212, 213, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 924, -1, -1, -1, 236, 237, -1, -1, 932, -1, -1, -1, -1, -1, 938, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 299, 300, 301, -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, -1, -1, -1, 1008, -1, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1030, -1, -1, -1, -1, 1035, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1057, 1058, 1059, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1072, -1, 1074, 1075, -1, -1, -1, 1079, 1080, -1, 1082, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1095, -1, -1, -1, -1, -1, 1101, -1, -1, -1, -1, 1106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, 49, 50, 51, 52, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, 1241, -1, -1, -1, -1, -1, -1, -1, 128, 1250, -1, -1, 1253, 1254, 134, -1, -1, -1, -1, 139, 140, 1262, 1263, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, 1276, -1, 157, -1, -1, -1, 1282, -1, -1, 164, -1, -1, -1, -1, -1, 1291, 171, -1, 1294, -1, -1, -1, 1298, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, 204, -1, -1, 1328, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, -1, 239, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, 1443, 1444, 1445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1462, 342, 343, -1, -1, -1, 1468, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1479, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1518, -1, 1520, 1521, -1, 1523, -1, 1525, 1526, 1527, 1528, 1529, 1530, 1531, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, 1553, 1554, 1555, 1556, -1, -1, -1, -1, 1561, -1, 1563, -1, -1, -1, -1, -1, 1569, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1579, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, 1609, -1, -1, 1612, -1, 1614, 1615, 1616, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1638, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1659, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1682, 1683, 1684, 1685, 1686, 1687, -1, 1689, 1690, 1691, 1692, 1693, 1694, -1, -1, -1, 1698, 1699, -1, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, -1, 1720, -1, -1, -1, -1, 493, 494, -1, -1, -1, -1, 499, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, 1755, 291, 292, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 555, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, 587, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1833, -1, -1, -1, -1, 1838, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, 1864, -1, -1, -1, -1, 637, 1870, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 672, 673, -1, -1, -1, 1909, 138, 1911, -1, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1925, -1, 1927, 1928, 1929, 1930, 1931, -1, 1933, 1934, 1935, 1936, 1937, 1938, -1, -1, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, -1, 1962, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 741, -1, -1, -1, -1, -1, -1, 1980, 749, -1, -1, -1, -1, -1, 755, 756, -1, -1, -1, 220, -1, -1, -1, 764, 765, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 791, -1, 793, 254, -1, -1, -1, 798, -1, -1, -1, -1, -1, -1, -1, 806, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, 2065, 294, -1, 836, 837, -1, 299, 840, -1, -1, -1, -1, -1, -1, -1, 2080, 309, 310, 311, 312, 2085, -1, 4, -1, -1, 7, 8, -1, -1, 2094, -1, -1, 865, 866, 867, 868, 869, 870, -1, 872, 873, -1, -1, 2108, -1, -1, -1, 29, 881, 882, 883, -1, -1, -1, -1, -1, -1, -1, -1, 2124, -1, 2126, 2127, -1, 2129, -1, 2131, 2132, 2133, 2134, 2135, 2136, 2137, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, 924, -1, -1, 2159, 2160, 2161, 2162, 2163, 932, -1, -1, -1, -1, 86, 938, -1, -1, -1, -1, -1, 2176, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, 141, 142, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 1008, -1, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1030, 180, 181, -1, 183, 1035, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, -1, -1, 1057, 1058, 1059, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, 1074, 1075, -1, -1, -1, 1079, 1080, 230, 1082, 232, -1, -1, 235, -1, -1, -1, 239, -1, -1, -1, 243, 1095, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, 86, -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, 1241, -1, -1, -1, -1, -1, -1, -1, 128, 1250, -1, -1, 1253, 1254, -1, -1, -1, -1, -1, 139, 140, 1262, 1263, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, 1291, 171, -1, 1294, -1, -1, -1, 1298, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, 1328, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, 234, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1462, 342, 343, -1, -1, -1, 1468, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 1479, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1510, -1, -1, -1, -1, -1, -1, -1, 1518, -1, 1520, 1521, -1, 1523, -1, 1525, 1526, 1527, 1528, 1529, 1530, 1531, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1553, 1554, 1555, 1556, -1, -1, 21, 22, 1561, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, 1579, 42, -1, -1, -1, -1, -1, 48, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1601, -1, -1, 152, -1, -1, -1, -1, 1609, -1, -1, 1612, -1, 1614, 1615, 1616, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1638, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 143, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, -1, -1, -1, 1698, 1699, -1, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, -1, 1720, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, 254, 42, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 85, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1864, -1, -1, -1, -1, -1, 1870, -1, -1, -1, -1, -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, -1, -1, -1, -1, 138, -1, -1, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, 1909, -1, 1911, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, 1925, -1, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, -1, -1, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, -1, 1962, 212, 213, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 1980, -1, -1, -1, -1, -1, -1, 236, 237, -1, -1, 3223, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 299, 300, 301, -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2080, -1, -1, -1, -1, 2085, -1, -1, -1, -1, -1, -1, -1, -1, 2094, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2108, -1, -1, -1, -1, -1, -1, -1, -1, 2117, -1, -1, -1, -1, -1, -1, 2124, -1, 2126, 2127, -1, 2129, -1, 2131, 2132, 2133, 2134, 2135, 2136, 2137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, 2159, 2160, 2161, 2162, 2163, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, 86, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, 3516, -1, 139, 140, 3520, -1, -1, 144, 3524, 3525, 147, -1, -1, 150, 151, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 164, 3544, 33, -1, 35, 36, -1, 171, -1, 40, -1, 42, -1, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, 3587, -1, -1, -1, -1, -1, -1, 215, -1, -1, 85, 219, -1, 221, -1, -1, 3603, -1, -1, -1, -1, -1, 230, -1, 232, 233, 234, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, 138, -1, 273, 274, 275, 143, -1, -1, -1, -1, 3660, -1, 3662, -1, -1, -1, 3666, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3690, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, 3827, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, 86, -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, 3972, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, 3993, -1, -1, -1, -1, 3998, -1, 4000, -1, -1, 164, 4004, -1, -1, 4007, 4008, 4009, 171, 4011, 4012, 4013, 4014, 4015, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, 234, 235, -1, -1, -1, -1, -1, 4080, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 4117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, 21, 22, -1, 299, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, 313, 314, 40, -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 4200, -1, 4202, 4203, -1, -1, -1, -1, -1, -1, -1, -1, 4212, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4223, -1, -1, -1, -1, -1, 4229, -1, 4231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4242, 129, -1, 4245, 4246, 133, 4248, -1, -1, -1, 138, -1, -1, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4272, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 212, 213, -1, -1, 4330, 4331, 4332, -1, 220, 4335, 4336, -1, 4338, 4339, 4340, 4341, 4342, -1, -1, -1, -1, -1, -1, -1, 236, 237, -1, -1, 4354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, -1, 299, 300, 301, -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, -1, -1, -1, 4430, -1, -1, -1, -1, 4435, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, 31, 32, -1, -1, -1, -1, 37, 3258, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, 4525, 4526, -1, 76, 77, -1, 4531, 4532, 81, -1, -1, 84, -1, 86, 4539, 4540, -1, -1, 4543, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, 3364, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, 4617, -1, -1, -1, -1, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, 4669, 4670, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, 234, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, 4, -1, -1, 7, 8, -1, -1, 4738, -1, -1, -1, -1, -1, -1, -1, 294, 295, 3516, -1, -1, 299, 3520, -1, -1, -1, 3524, 3525, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3544, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, 4804, -1, 4806, -1, -1, -1, -1, 4811, -1, -1, 4814, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 3603, 3604, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4851, -1, -1, -1, -1, 4856, -1, -1, -1, -1, -1, -1, -1, 4864, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3660, -1, 3662, -1, -1, -1, 3666, -1, -1, -1, -1, -1, -1, 3673, -1, 180, 181, -1, 183, -1, -1, -1, -1, 4915, -1, -1, 191, 192, 193, -1, 3690, -1, -1, -1, -1, -1, 201, -1, 203, -1, 4932, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, 4953, -1, -1, 4956, 230, 4958, 232, -1, -1, 235, -1, -1, -1, 239, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, 4978, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, 5016, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, 3826, 3827, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5093, -1, 5095, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, 5108, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, 5121, -1, 5123, -1, 5125, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, 194, 195, -1, -1, -1, -1, -1, 201, 5194, 203, 204, -1, -1, -1, -1, -1, -1, -1, 3972, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, -1, 235, -1, -1, 3998, -1, 4000, -1, -1, 243, 4004, 245, 4006, 4007, 4008, 4009, -1, 4011, 4012, 4013, 4014, 4015, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4047, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5300, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 4080, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, 5407, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, 4200, -1, 4202, 4203, -1, -1, 37, -1, -1, 40, 41, 42, 4212, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4223, -1, -1, -1, 58, -1, 4229, 61, 4231, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, 4242, -1, -1, 4245, 4246, -1, 4248, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4272, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, -1, 499, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4330, 4331, 4332, 164, 4334, 4335, 4336, -1, 4338, 4339, 4340, 4341, 4342, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, 4354, -1, -1, -1, -1, -1, 191, 192, 193, 555, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, 587, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 4410, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4424, -1, -1, -1, -1, -1, 4430, -1, 263, 264, 265, 4435, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 672, 673, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 342, 343, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, 4525, 4526, -1, 48, -1, -1, 4531, 4532, -1, -1, -1, -1, -1, -1, 4539, 4540, -1, -1, 4543, -1, -1, -1, -1, -1, 741, -1, -1, -1, -1, -1, -1, -1, 749, -1, -1, -1, -1, -1, 755, 756, 85, -1, -1, -1, -1, -1, -1, 764, 765, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 791, -1, 793, -1, -1, -1, -1, 798, -1, -1, -1, -1, -1, -1, -1, 806, -1, -1, 4617, 138, -1, -1, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, 4632, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 836, 837, -1, -1, 840, -1, -1, -1, -1, -1, 4654, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4669, 4670, -1, -1, 865, 866, 867, 868, 869, 870, -1, 872, 873, -1, -1, -1, -1, -1, -1, -1, 881, 882, 883, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 924, -1, 254, -1, -1, -1, -1, -1, 932, -1, -1, -1, -1, -1, 938, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4804, -1, 4806, -1, -1, -1, -1, 4811, -1, -1, 4814, -1, 1008, -1, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1028, -1, 1030, -1, -1, -1, -1, 1035, -1, -1, -1, -1, -1, -1, -1, 4851, -1, 1045, -1, -1, 4856, -1, -1, -1, -1, -1, -1, -1, 4864, 1057, 1058, 1059, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1074, 1075, -1, -1, -1, 1079, 1080, -1, 1082, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1095, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1106, 4915, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4932, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4953, -1, -1, 4956, -1, 4958, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4978, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5016, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, -1, 71, 1241, -1, -1, -1, -1, -1, -1, -1, -1, 1250, -1, -1, 1253, 1254, -1, 87, -1, -1, -1, -1, -1, 1262, 1263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, 5093, -1, 5095, 5096, -1, -1, 1291, -1, -1, 1294, -1, -1, -1, 1298, -1, 5108, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, 5121, -1, 5123, 147, 5125, -1, 150, 151, -1, -1, -1, -1, 156, -1, 1327, 1328, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, 5194, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, 1445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, 1462, -1, -1, -1, -1, -1, 1468, -1, -1, 302, -1, -1, -1, -1, -1, -1, -1, 1479, -1, -1, 313, 314, -1, -1, 21, 22, -1, -1, 25, 26, 5300, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, 1518, -1, 1520, 1521, -1, 1523, -1, 1525, 1526, 1527, 1528, 1529, 1530, 1531, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, 1553, 1554, 1555, 1556, -1, -1, -1, 5368, 1561, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1579, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5407, -1, -1, -1, 138, -1, -1, -1, -1, -1, 1609, -1, -1, 1612, -1, 1614, 1615, 1616, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1638, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1682, 1683, 1684, 1685, 1686, 1687, -1, 1689, 1690, 1691, 1692, 1693, 1694, -1, -1, -1, 1698, 1699, -1, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, -1, 1720, -1, -1, -1, -1, 493, 494, -1, -1, -1, -1, 499, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 555, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, 587, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1855, 1856, 85, -1, -1, -1, -1, -1, -1, 1864, 1865, -1, -1, -1, -1, 1870, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 672, 673, -1, -1, -1, 1909, 138, 1911, -1, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1925, -1, 1927, 1928, 1929, 1930, 1931, -1, 1933, 1934, 1935, 1936, 1937, 1938, -1, -1, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, -1, 1962, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 741, -1, -1, -1, -1, -1, -1, 1980, 749, -1, -1, -1, -1, -1, 755, 756, -1, -1, -1, 220, -1, -1, -1, 764, 765, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 791, -1, 793, 254, -1, -1, -1, 798, -1, -1, -1, -1, -1, -1, -1, 806, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, 836, 837, -1, 299, 840, -1, -1, -1, -1, -1, -1, -1, 2080, 309, 310, 311, 312, 2085, -1, 4, -1, -1, 7, 8, -1, -1, 2094, -1, -1, 865, 866, 867, 868, 869, 870, -1, 872, 873, -1, -1, 2108, -1, -1, -1, -1, 881, 882, 883, -1, -1, -1, -1, -1, -1, -1, -1, 2124, -1, 2126, 2127, -1, 2129, -1, 2131, 2132, 2133, 2134, 2135, 2136, 2137, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, 924, -1, -1, 2159, 2160, 2161, 2162, 2163, 932, -1, -1, -1, -1, -1, 938, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 1008, -1, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1030, 180, 181, -1, 183, 1035, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, -1, -1, 1057, 1058, 1059, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, 1074, 1075, -1, -1, -1, 1079, 1080, 230, 1082, 232, -1, -1, 235, -1, -1, -1, 239, -1, -1, -1, 243, 1095, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, 86, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, 1241, -1, -1, -1, -1, -1, -1, -1, 128, 1250, -1, -1, 1253, 1254, -1, -1, -1, -1, -1, 139, 140, 1262, 1263, -1, 144, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, 1291, 171, -1, 1294, -1, -1, -1, 1298, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, 1328, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, 234, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1462, 342, 343, -1, -1, -1, 1468, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 1479, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1518, -1, 1520, 1521, -1, 1523, -1, 1525, 1526, 1527, 1528, 1529, 1530, 1531, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1553, 1554, 1555, 1556, -1, -1, 21, 22, 1561, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, 1579, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1609, -1, -1, 1612, -1, 1614, 1615, 1616, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 1638, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 143, 1682, 1683, 1684, 1685, 1686, 1687, -1, 1689, 1690, 1691, 1692, 1693, 1694, -1, 85, -1, 1698, 1699, -1, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, -1, 1720, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 129, 285, 286, 287, 288, -1, -1, 291, -1, 138, 294, -1, -1, -1, 143, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, 220, 294, -1, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1864, 254, -1, -1, -1, -1, 1870, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 1909, 299, 1911, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, 1925, -1, 1927, 1928, 1929, 1930, 1931, -1, 1933, 1934, 1935, 1936, 1937, 1938, -1, -1, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, -1, 1962, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1980, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, 31, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, -1, -1, 2080, 81, -1, -1, 84, 2085, 86, -1, -1, -1, -1, -1, -1, -1, 2094, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 2108, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, 2124, -1, 2126, 2127, 128, 2129, -1, 2131, 2132, 2133, 2134, 2135, 2136, 2137, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, 2159, 2160, 2161, 2162, 2163, 164, -1, -1, -1, -1, -1, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, 234, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, 3516, 3517, -1, -1, 3520, -1, -1, -1, 3524, 3525, 294, 295, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3544, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, 3603, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, -1, 3633, -1, 3635, 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, 3660, -1, 3662, 76, 77, -1, 3666, -1, 81, -1, -1, 84, -1, 86, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3690, -1, -1, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, 234, 235, -1, -1, -1, -1, 3827, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3927, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3972, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3998, -1, 4000, -1, -1, -1, 4004, -1, -1, 4007, 4008, 4009, -1, 4011, 4012, 4013, 4014, 4015, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, 42, 43, 44, -1, 4080, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4117, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 128, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, 139, 140, 40, -1, 42, -1, -1, -1, 147, -1, 48, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, 4200, -1, 4202, 4203, 4204, -1, 4206, -1, -1, -1, -1, -1, 4212, -1, 180, 181, 4216, 183, -1, -1, 85, -1, -1, 4223, -1, 191, 192, 193, 194, 4229, -1, 4231, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, 4242, -1, -1, 4245, 4246, -1, 4248, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, -1, 235, -1, -1, 4272, 138, -1, -1, -1, 243, 143, 245, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, 165, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4330, 4331, 4332, -1, -1, 4335, 4336, -1, 4338, 4339, 4340, 4341, 4342, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 4354, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4371, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, 4430, -1, -1, 298, 299, 4435, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, 31, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, 4525, 4526, 4527, 76, 77, -1, 4531, 4532, 81, -1, -1, 84, -1, 86, 4539, 4540, -1, -1, 4543, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, 4617, -1, -1, -1, -1, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, 4669, 4670, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, 234, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, 3516, -1, -1, 299, 3520, -1, -1, -1, 3524, 3525, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3544, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, 4804, -1, 4806, -1, -1, -1, -1, 4811, -1, -1, 4814, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 3603, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4851, -1, -1, -1, -1, 4856, -1, -1, -1, -1, -1, -1, -1, 4864, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3660, -1, 3662, -1, -1, -1, 3666, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, 4915, -1, -1, 191, 192, 193, -1, 3690, -1, -1, -1, -1, -1, 201, -1, 203, -1, 4932, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, 4953, -1, -1, 4956, 230, 4958, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, 246, -1, -1, -1, -1, 4978, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, 5016, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, 42, -1, 44, 21, 22, -1, -1, 25, 26, 27, 28, 29, 30, -1, -1, 33, 58, 35, 36, 61, -1, 39, 40, 65, 42, 3827, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5093, -1, 5095, -1, -1, 106, 107, -1, 85, -1, -1, -1, -1, -1, -1, 5108, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, 5121, -1, 5123, -1, 5125, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, 194, 195, -1, -1, -1, -1, -1, 201, 5194, 203, 204, -1, -1, -1, -1, -1, -1, -1, 3972, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, -1, 235, -1, -1, 3998, -1, 4000, -1, -1, 243, 4004, 245, -1, 4007, 4008, 4009, -1, 4011, 4012, 4013, 4014, 4015, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 5300, 285, 286, 287, 288, 313, 314, 291, 292, 293, 294, -1, 4080, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, 4117, -1, -1, -1, 499, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5368, -1, -1, 106, 107, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, 41, 42, -1, -1, -1, -1, -1, -1, 139, 140, -1, 5407, -1, 555, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4200, -1, 4202, 4203, -1, -1, -1, -1, 85, 587, -1, -1, 4212, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, 4223, 191, 192, 193, -1, -1, 4229, -1, 4231, -1, -1, 201, -1, 203, -1, -1, -1, -1, -1, 4242, -1, -1, 4245, 4246, -1, 4248, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, 138, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, 4272, -1, -1, 152, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 672, 673, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4330, 4331, 4332, -1, -1, 4335, 4336, -1, 4338, 4339, 4340, 4341, 4342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4354, -1, -1, -1, -1, -1, -1, -1, -1, 741, -1, -1, -1, -1, -1, -1, -1, 749, -1, -1, -1, -1, -1, 755, 756, -1, -1, -1, -1, -1, -1, -1, 764, 765, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, 791, 291, 793, -1, 294, -1, -1, 798, 298, -1, -1, -1, -1, -1, -1, 806, -1, 4430, -1, -1, -1, -1, 4435, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 836, 837, -1, -1, 840, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 865, 866, 867, 868, 869, 870, -1, 872, 873, -1, -1, -1, -1, -1, -1, -1, 881, 882, 883, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4525, 4526, -1, -1, -1, -1, 4531, 4532, -1, -1, -1, -1, -1, -1, 4539, 4540, -1, -1, 4543, -1, -1, 924, -1, -1, -1, -1, -1, -1, -1, 932, -1, -1, -1, -1, -1, 938, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4617, 58, -1, -1, 61, 62, -1, -1, 65, -1, -1, -1, -1, 1008, 71, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1030, -1, -1, -1, -1, 1035, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, 4669, 4670, -1, -1, -1, 114, -1, -1, -1, -1, 1057, 1058, 1059, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, 1074, 1075, -1, 139, 140, 1079, 1080, -1, 1082, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 1095, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, 1106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, 4804, 245, 4806, -1, -1, -1, 250, 4811, -1, -1, 4814, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, 4, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, 4851, -1, -1, -1, -1, 4856, -1, -1, 299, -1, -1, -1, 1241, 4864, -1, -1, -1, -1, -1, -1, -1, 1250, 313, 314, 1253, 1254, 494, -1, -1, -1, -1, -1, -1, 1262, 1263, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1291, -1, 4915, 1294, -1, -1, -1, 1298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4932, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1328, -1, -1, 4953, -1, -1, 4956, -1, 4958, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, 4978, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 5016, -1, -1, -1, -1, -1, -1, 191, 192, -1, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, 672, 673, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 1445, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, 246, -1, -1, -1, -1, -1, 1462, -1, -1, -1, -1, -1, 1468, -1, -1, 5093, -1, 5095, -1, -1, -1, 267, -1, 1479, -1, -1, -1, -1, -1, -1, 5108, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5121, -1, 5123, -1, 5125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1518, -1, 1520, 1521, -1, 1523, -1, 1525, 1526, 1527, 1528, 1529, 1530, 1531, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1553, 1554, 1555, 1556, -1, 797, 798, -1, 1561, -1, -1, -1, -1, -1, 806, -1, -1, -1, -1, 5194, -1, -1, -1, -1, -1, -1, 1579, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 836, 837, -1, 839, 840, -1, -1, -1, -1, -1, -1, -1, 1609, -1, -1, 1612, -1, 1614, 1615, 1616, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 1638, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5300, -1, -1, -1, 1682, 1683, 1684, 1685, 1686, 1687, -1, 1689, 1690, 1691, 1692, 1693, 1694, -1, 85, -1, 1698, 1699, -1, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, -1, 1720, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5368, -1, -1, 138, -1, -1, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, 5407, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1864, 254, -1, -1, -1, -1, 1870, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 1909, 299, 1911, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, 1925, -1, 1927, 1928, 1929, 1930, 1931, -1, 1933, 1934, 1935, 1936, 1937, 1938, -1, -1, 1941, -1, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, -1, 1962, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1980, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1241, -1, -1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, 1291, -1, 1293, 1294, -1, -1, -1, 1298, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, 2080, -1, -1, -1, -1, 2085, -1, -1, -1, -1, -1, -1, -1, -1, 2094, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2108, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2124, -1, 2126, 2127, -1, 2129, -1, 2131, 2132, 2133, 2134, 2135, 2136, 2137, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, 2159, 2160, 2161, 2162, 2163, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, 1447, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, 1458, -1, -1, 219, 1462, 221, -1, 1465, 1466, -1, 1468, -1, -1, -1, 230, 1473, 232, 1475, -1, 235, -1, 1479, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1501, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, 1523, -1, -1, -1, -1, 1528, -1, -1, 1531, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 302, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, 1561, -1, -1, 1564, -1, -1, -1, -1, -1, 1570, -1, -1, -1, -1, -1, -1, -1, -1, 1579, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, 1593, 1594, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1609, -1, -1, 1612, -1, 1614, 1615, 1616, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, 1638, -1, 1640, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, 31, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, 234, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, 2066, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, 2078, -1, 2080, 81, 2082, 2083, 84, 2085, 86, -1, -1, -1, 2090, -1, 2092, -1, 2094, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 2108, 109, -1, 2111, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, 2124, -1, 2126, -1, 128, 2129, -1, 2131, -1, -1, 2134, -1, -1, 2137, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2163, 164, 2165, -1, -1, -1, -1, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, 234, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, 1, 299, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, 313, 314, 18, 19, 20, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, 342, 343, -1, -1, 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, 109, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, 171, -1, -1, -1, -1, -1, -1, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, 234, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, 246, 247, 248, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 295, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, 3516, -1, -1, -1, 3520, 114, -1, -1, 3524, 3525, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, 3544, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, 3603, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, 3660, -1, 3662, -1, -1, -1, 3666, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, 3690, 9, 10, 11, -1, -1, 289, -1, -1, -1, 18, 19, -1, -1, 22, 23, 299, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, 313, 314, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, 3827, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, 3972, -1, -1, -1, -1, -1, -1, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, -1, 3998, -1, 4000, -1, -1, -1, 4004, -1, -1, 4007, 4008, 4009, -1, 4011, 4012, 4013, 4014, 4015, -1, -1, -1, -1, -1, -1, -1, -1, 342, 343, -1, -1, -1, 3268, -1, -1, -1, 3272, -1, -1, -1, -1, -1, -1, 3279, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, 3304, -1, 3306, 3307, -1, 3309, -1, -1, 3312, 3313, 3314, 3315, 3316, 3317, 3318, 4080, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3340, 3341, 3342, 3343, -1, 85, -1, -1, -1, -1, 3350, -1, -1, -1, -1, -1, 4117, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 3367, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, 3389, -1, -1, 3392, -1, -1, 3395, 3396, 3397, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 3419, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4200, -1, 4202, 4203, -1, -1, 21, 22, -1, -1, 25, 26, 4212, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, 4223, -1, 40, -1, 42, -1, 4229, -1, 4231, -1, 48, -1, 138, -1, -1, -1, -1, 143, -1, 4242, -1, -1, 4245, 4246, -1, 4248, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, 85, -1, 4272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3525, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, -1, 220, -1, 298, -1, -1, -1, 138, -1, -1, -1, -1, 143, -1, 4330, 4331, 4332, -1, -1, 4335, 4336, 152, 4338, 4339, 4340, 4341, 4342, -1, -1, -1, -1, -1, -1, -1, 165, 254, -1, -1, 4354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 299, -1, -1, -1, -1, -1, 3641, -1, -1, 220, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4430, -1, -1, -1, -1, 4435, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4525, 4526, -1, -1, -1, -1, 4531, 4532, -1, -1, -1, -1, -1, -1, 4539, 4540, -1, -1, 4543, -1, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, 3827, 44, 45, -1, 47, -1, 3833, -1, -1, 3836, -1, -1, -1, -1, -1, 58, 3843, -1, 61, 62, -1, -1, 65, -1, -1, -1, -1, -1, 71, 4617, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3866, -1, 3868, 3869, -1, 3871, -1, -1, 3874, 3875, 3876, 3877, 3878, 3879, 3880, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, -1, -1, -1, -1, -1, 114, -1, -1, -1, 3902, 3903, 3904, 3905, 3906, -1, 4669, 4670, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, 3972, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, 4804, -1, 4806, -1, 263, 264, 265, 4811, 267, 268, 4814, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, 7, 8, -1, 299, -1, -1, -1, -1, -1, -1, 4851, -1, -1, -1, -1, 4856, -1, 313, 314, -1, -1, -1, -1, 4864, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4117, 4118, -1, -1, -1, -1, -1, -1, 52, 342, 343, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4915, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4932, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4953, -1, -1, 4956, -1, 4958, -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, 139, 140, -1, -1, -1, 4978, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, 21, 22, 157, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, 180, 181, 5016, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, 4327, -1, -1, -1, -1, 5093, -1, 5095, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, 138, -1, 5108, -1, -1, -1, -1, -1, -1, 4354, -1, -1, -1, -1, 152, 5121, -1, 5123, -1, 5125, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, 4396, -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 62, -1, 4427, 65, 4429, -1, -1, -1, 5194, 71, -1, -1, 4437, -1, 4439, 4440, 4441, 4442, 4443, 4444, 4445, 4446, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, -1, -1, -1, -1, 269, 114, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 128, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, 139, 140, -1, 298, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5300, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, 5368, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, 5407, -1, -1, 3, 4, -1, 289, 7, -1, 9, 10, 11, -1, -1, -1, -1, 299, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, 313, 314, -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 342, 343, 61, 62, -1, -1, 65, -1, -1, -1, -1, -1, 71, 4718, 4719, 4720, -1, 4722, 4723, 4724, 4725, 4726, 4727, 4728, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4739, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, 4805, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, 3, 4, -1, 299, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 313, 314, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5022, 5023, -1, 5025, -1, -1, 5028, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, 5137, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, 5194, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, 5221, -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, 3, 4, -1, 299, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, 313, 314, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, -1, 44, 45, -1, 47, -1, 342, 343, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, -1, 5299, 5300, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, 5369, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, 289, -1, -1, -1, 18, 19, -1, -1, 22, 23, 299, -1, 26, -1, 28, -1, -1, 31, -1, -1, -1, -1, -1, 37, 313, 314, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, 289, -1, -1, -1, 18, 19, -1, -1, 22, 23, 299, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, 313, 314, 40, 41, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 163, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, 184, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, 202, 203, 204, -1, -1, 207, 208, 209, 210, 211, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, 289, -1, -1, -1, 18, 19, -1, -1, 22, 23, 299, 25, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, -1, 40, 41, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, 170, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, 289, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, 255, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 84, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, -1, -1, 298, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, 194, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, 233, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, 7, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, 58, -1, 65, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, 114, -1, 121, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, 139, 140, -1, -1, -1, 139, 140, -1, 147, -1, -1, 150, 151, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, 180, 181, -1, 183, -1, -1, 191, 192, -1, -1, -1, 191, 192, 193, -1, -1, 201, -1, 203, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, 216, -1, 218, -1, 215, 221, -1, -1, 219, -1, 221, -1, -1, -1, 230, 231, 232, -1, -1, 230, -1, 232, -1, 239, 235, -1, -1, 243, -1, 245, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, 289, -1, -1, -1, 18, 19, -1, -1, 22, 23, 299, -1, 26, -1, 28, 29, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, 302, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, 41, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, 170, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, 289, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, 255, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, -1, -1, 298, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, 289, -1, -1, -1, 18, 19, -1, -1, 22, 23, 299, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, 138, -1, 230, -1, 232, 143, -1, 235, -1, -1, -1, -1, -1, -1, 152, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, 3, 4, 285, 286, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, 220, -1, -1, 313, 314, -1, -1, -1, -1, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 342, 343, 254, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, 106, 107, 298, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, 3, 4, 285, 286, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 342, 343, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, 138, -1, 230, -1, 232, 143, -1, 235, -1, -1, -1, -1, -1, -1, 152, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, 3, 4, 285, 286, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, 220, -1, -1, 313, 314, -1, -1, -1, -1, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 342, 343, 254, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, 106, 107, 298, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, 3, 4, 285, 286, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 342, 343, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, 138, -1, 230, -1, 232, 143, -1, 235, -1, -1, -1, -1, -1, -1, 152, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, 3, 4, 285, 286, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, 220, -1, -1, 313, 314, -1, -1, -1, -1, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 342, 343, 254, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, 106, 107, 298, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, 3, 4, 285, 286, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, 29, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, 342, 343, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 164, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, 85, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, 138, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, 302, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, 313, 314, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, 342, 343, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, 139, 140, -1, 298, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, 313, 314, -1, -1, 38, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, 342, 343, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, 138, -1, 230, -1, 232, 143, -1, 235, -1, -1, -1, -1, -1, -1, 152, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, 25, 26, -1, 28, -1, -1, -1, -1, -1, 220, -1, -1, 313, 314, 39, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, 342, 343, 254, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, -1, -1, 298, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, 24, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, 129, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, 29, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, 21, 22, 298, 24, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, 302, 28, 29, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, 21, 22, 298, 24, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, 158, -1, 160, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, 29, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, 21, 22, 298, 24, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, 302, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, 21, 22, 298, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, 313, 314, -1, -1, 38, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, 342, 343, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, -1, 106, 107, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, 21, 22, 298, 24, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, 138, -1, 230, -1, 232, 143, -1, 235, -1, -1, -1, -1, -1, -1, 152, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, 220, -1, -1, 313, 314, 39, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, 342, 343, 254, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, -1, -1, 298, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, 32, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, 255, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, 21, 22, 298, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, 21, 22, 298, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, 313, 314, -1, -1, 38, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, 342, 343, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, -1, 106, 107, 298, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, 138, -1, 230, -1, 232, 143, -1, 235, -1, -1, -1, -1, -1, -1, 152, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, 220, -1, -1, 313, 314, 39, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, 342, 343, 254, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, -1, -1, 298, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, 24, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 48, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, 138, -1, 230, -1, 232, 143, -1, 235, -1, -1, -1, -1, -1, -1, 152, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, 220, -1, -1, 313, 314, 39, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, 342, 343, 254, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, -1, -1, 298, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, 310, 311, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, 313, 314, -1, -1, 38, -1, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, 342, 343, 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, -1, 106, 107, 298, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, 24, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, 21, 22, 298, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, 129, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, 21, 22, 298, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, 34, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, -1, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, -1, 21, 22, 298, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, 34, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, 138, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, 152, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, 3, 4, -1, -1, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, 18, 19, -1, -1, 22, 23, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 314, 40, 41, 42, -1, 44, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, 58, 35, 36, 61, -1, 39, 40, 65, 42, 342, 343, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 106, 107, 294, 85, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 219, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, 270, -1, -1, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, 313, 314, 291, 292, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 342, 343, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, -1, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, -1, 99, 100, 101, 102, -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, -1, 99, 100, 101, 102, -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, 41, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, 31, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, 31, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 32, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 32, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, 31, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 31, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, 32, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 85, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 138, 85, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, 152, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, 138, 42, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, 138, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, 85, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 138, 85, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, 152, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, 138, 42, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, 138, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, 24, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, 24, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 85, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 152, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, 138, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 138, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 152, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 39, 40, -1, 42, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, 21, 22, 294, -1, 25, 26, 298, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, 85, 40, -1, 42, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, -1, 28, 29, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, -1, -1, 291, -1, -1, 294, -1, -1, 269, 298, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 288, 1, -1, 291, 4, -1, 294, 7, 8, -1, 298, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, -1, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, 74, -1, -1, 77, 78, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, 136, 137, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, -1, 154, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, 166, -1, -1, 169, -1, -1, 172, 173, -1, -1, -1, -1, -1, -1, 180, 181, 182, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, 196, 197, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, 214, -1, 216, -1, 218, -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, -1, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, 74, -1, -1, 77, 78, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, 136, 137, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, -1, 154, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, 166, -1, -1, 169, -1, -1, 172, 173, -1, -1, -1, -1, -1, -1, 180, 181, 182, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, 196, 197, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, 214, -1, 216, -1, 218, -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, -1, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, 74, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, 136, 137, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, 153, -1, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, 166, -1, -1, 169, -1, -1, 172, 173, -1, -1, -1, -1, -1, -1, 180, 181, 182, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, -1, -1, 216, -1, 218, -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, -1, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, 74, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, 136, 137, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, 153, -1, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, 166, -1, -1, 169, -1, -1, 172, 173, -1, -1, -1, -1, -1, -1, 180, 181, 182, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, -1, -1, 216, -1, 218, -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, 153, -1, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, -1, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, 214, -1, 216, -1, 218, -1, -1, 221, -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, 153, -1, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, -1, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, 214, -1, 216, -1, 218, -1, -1, 221, -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, 153, -1, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, -1, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, 214, -1, 216, -1, 218, -1, -1, 221, -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, 153, -1, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, -1, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, 214, -1, 216, -1, 218, -1, -1, 221, -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, 153, -1, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, -1, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, 214, -1, 216, -1, 218, -1, -1, 221, -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, 153, -1, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, -1, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, 214, -1, 216, -1, 218, -1, -1, 221, -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, 153, -1, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, -1, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, 214, -1, 216, -1, 218, -1, -1, 221, -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, 153, -1, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, -1, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, 214, -1, 216, -1, 218, -1, -1, 221, -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, 153, -1, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, -1, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, 214, -1, 216, -1, 218, -1, -1, 221, -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, 1, 245, -1, 4, -1, 249, 7, 8, -1, 253, -1, -1, -1, 14, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, 60, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, 153, -1, 155, -1, 157, -1, -1, -1, -1, 162, 163, -1, 165, -1, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, 214, -1, 216, -1, 218, -1, -1, 221, -1, -1, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, -1, 245, -1, 0, 1, 249, -1, -1, -1, 253, 7, 8, -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, 55, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, 66, 67, -1, -1, 70, 71, -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, -1, 154, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, 167, -1, 169, -1, -1, 172, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, 205, 206, -1, -1, -1, -1, -1, -1, -1, -1, -1, 216, -1, 218, -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, -1, 245, -1, 0, 1, 249, -1, -1, -1, 253, 7, 8, -1, -1, -1, -1, 260, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, 55, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, 66, 67, -1, -1, 70, 71, -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, -1, 154, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, 167, -1, 169, -1, -1, 172, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, 1, 205, 206, -1, -1, -1, 7, 8, -1, -1, -1, -1, 216, -1, 218, -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, -1, -1, 32, -1, -1, -1, 239, -1, 241, -1, 243, -1, 245, -1, -1, -1, 249, -1, -1, -1, 253, -1, 52, -1, -1, -1, -1, 260, 58, -1, -1, 61, -1, -1, 267, 65, -1, 67, -1, -1, 70, 71, -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, 139, 140, -1, 142, -1, -1, -1, 146, 147, 148, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 169, -1, -1, -1, -1, 174, 175, 176, 177, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, 1, -1, 191, 192, -1, -1, 7, 8, -1, 198, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 216, -1, 218, -1, 32, 221, 222, 223, -1, -1, -1, -1, -1, -1, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, 52, 241, 242, 243, -1, 245, 58, -1, -1, 61, -1, -1, -1, 65, -1, 67, -1, -1, 70, 71, -1, -1, -1, -1, -1, -1, 78, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, 139, 140, -1, 142, -1, -1, -1, 146, 147, 148, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 169, -1, -1, -1, -1, 174, 175, 176, 177, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, -1, -1, 4, -1, -1, 7, 8, -1, -1, -1, -1, 216, -1, 218, -1, -1, 221, 222, 223, -1, -1, -1, -1, -1, -1, 230, 231, 232, -1, -1, 32, -1, -1, -1, 239, -1, 241, 242, 243, -1, 245, -1, -1, -1, -1, -1, -1, 49, 50, 51, 52, -1, -1, 55, -1, -1, 58, -1, -1, 61, 62, -1, 267, 65, 66, 67, -1, 69, 70, 71, -1, -1, 74, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, 136, 137, -1, 139, 140, -1, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, 166, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, 180, 181, 182, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 216, -1, 218, -1, -1, 221, 222, 223, 4, -1, -1, 7, 8, -1, 230, 231, 232, -1, -1, -1, -1, -1, -1, 239, -1, 241, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, 264, 265, -1, 267, 268, 49, 50, 51, 52, -1, -1, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, 67, -1, 69, 70, 71, -1, -1, 74, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, 136, 137, -1, 139, 140, -1, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, 166, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, 180, 181, 182, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 216, -1, 218, -1, -1, 221, 222, 223, -1, -1, -1, -1, -1, -1, 230, 231, 232, 4, -1, -1, 7, 8, -1, 239, -1, 241, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, 32, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, 176, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, 176, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, 176, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, 176, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, 176, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, 176, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, 32, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, 176, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, 176, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, 176, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, 50, 51, 52, -1, -1, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, 176, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, 50, 51, 52, -1, -1, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, 176, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, 50, 51, 52, -1, 54, 55, -1, -1, 58, -1, -1, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, -1, -1, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, -1, 123, 124, 125, 126, -1, 128, -1, -1, -1, -1, -1, 134, 135, -1, -1, -1, 139, 140, -1, -1, -1, -1, 145, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, 176, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, 187, 7, 8, 190, 191, 192, -1, -1, -1, -1, -1, -1, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, 231, 232, 52, -1, -1, 55, -1, -1, 58, -1, -1, 61, 243, -1, 245, 65, 66, 67, -1, -1, 70, 71, -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, 263, 264, 265, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, 139, 140, -1, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 169, -1, -1, 172, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, 199, -1, 201, -1, 203, -1, -1, -1, -1, -1, -1, 7, 8, -1, -1, -1, -1, 216, -1, 218, -1, -1, 221, 222, 223, -1, -1, -1, -1, -1, -1, 230, 231, 232, -1, -1, 32, -1, -1, -1, 239, -1, 241, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, 55, -1, -1, 58, -1, -1, 61, 7, 8, 267, 65, 66, 67, -1, -1, 70, 71, -1, -1, -1, 20, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, 110, -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, 121, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, 139, 140, -1, 142, -1, -1, 145, 146, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, 157, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, 169, -1, -1, 172, 173, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, 139, 140, -1, -1, 198, 199, -1, 201, 147, 203, -1, 150, 151, -1, -1, -1, -1, 7, 8, -1, -1, -1, 216, -1, 218, -1, -1, 221, 222, 223, -1, -1, -1, -1, 7, 8, 230, 231, 232, -1, -1, 180, 181, -1, 183, 239, -1, 241, 38, 243, -1, 245, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 38, -1, -1, 58, -1, -1, 61, -1, 267, -1, 65, -1, -1, -1, -1, -1, -1, 221, -1, -1, 58, -1, -1, 61, -1, -1, 230, 65, 232, -1, -1, 235, -1, -1, -1, 239, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, 147, -1, -1, 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, 181, -1, 183, -1, -1, -1, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, 180, 181, -1, 183, 201, -1, 203, -1, -1, -1, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 201, -1, 203, 221, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, 232, -1, -1, 235, -1, -1, 221, 239, -1, -1, -1, 243, -1, 245, -1, 230, -1, 232, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 243, -1, 245, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { 0, 1, 7, 32, 52, 55, 58, 61, 65, 66, 71, 78, 106, 107, 110, 112, 121, 123, 134, 139, 140, 142, 145, 146, 147, 150, 151, 154, 157, 167, 169, 172, 173, 180, 181, 183, 190, 191, 192, 198, 199, 201, 203, 216, 218, 221, 222, 223, 230, 231, 232, 241, 243, 245, 267, 347, 348, 349, 350, 351, 352, 355, 356, 358, 362, 363, 364, 379, 380, 385, 389, 390, 409, 410, 411, 412, 414, 415, 416, 420, 421, 432, 433, 434, 439, 440, 445, 461, 468, 470, 472, 474, 475, 478, 490, 616, 619, 624, 646, 649, 735, 745, 746, 756, 757, 778, 779, 781, 782, 833, 834, 842, 843, 844, 856, 857, 880, 881, 859, 4, 204, 219, 266, 276, 277, 282, 283, 288, 313, 314, 334, 335, 336, 337, 338, 339, 340, 341, 492, 650, 703, 709, 712, 714, 716, 718, 852, 856, 857, 4, 7, 8, 704, 623, 624, 704, 193, 235, 432, 433, 435, 436, 462, 704, 7, 11, 25, 359, 360, 142, 172, 364, 380, 390, 623, 623, 11, 359, 67, 623, 704, 860, 623, 243, 245, 440, 857, 623, 32, 623, 704, 704, 168, 460, 623, 623, 10, 10, 23, 67, 106, 142, 203, 232, 440, 703, 215, 459, 142, 703, 858, 0, 349, 55, 142, 172, 353, 354, 355, 20, 134, 357, 358, 365, 367, 365, 365, 32, 32, 536, 537, 703, 537, 86, 113, 524, 525, 526, 703, 705, 141, 205, 206, 224, 225, 226, 227, 228, 229, 249, 253, 260, 419, 230, 435, 436, 440, 476, 230, 440, 476, 435, 436, 435, 34, 449, 450, 703, 705, 239, 439, 23, 747, 747, 758, 23, 780, 23, 37, 257, 303, 724, 812, 747, 835, 367, 67, 8, 853, 854, 855, 70, 304, 29, 29, 29, 14, 31, 48, 60, 155, 162, 163, 165, 261, 262, 493, 540, 545, 690, 703, 121, 123, 618, 29, 38, 714, 853, 854, 714, 439, 435, 435, 38, 529, 532, 41, 530, 532, 304, 647, 704, 304, 27, 32, 365, 365, 365, 158, 160, 246, 435, 436, 440, 626, 627, 628, 703, 849, 851, 852, 856, 626, 627, 75, 175, 648, 32, 623, 704, 304, 704, 142, 703, 704, 703, 704, 32, 386, 387, 388, 616, 619, 781, 842, 704, 435, 41, 625, 628, 852, 625, 32, 30, 32, 3, 9, 10, 11, 18, 19, 22, 23, 26, 28, 37, 40, 41, 42, 44, 71, 164, 193, 201, 204, 215, 219, 235, 263, 264, 265, 268, 270, 273, 274, 275, 313, 314, 342, 343, 432, 433, 434, 437, 438, 440, 557, 573, 600, 608, 610, 612, 653, 656, 664, 670, 685, 703, 718, 720, 849, 852, 856, 857, 704, 704, 67, 704, 704, 704, 32, 38, 531, 460, 703, 20, 366, 304, 99, 355, 23, 358, 367, 23, 371, 371, 371, 27, 38, 309, 454, 455, 456, 532, 27, 32, 455, 527, 435, 290, 692, 693, 529, 528, 529, 158, 160, 579, 27, 32, 454, 623, 748, 32, 32, 635, 636, 34, 635, 23, 703, 618, 23, 32, 32, 111, 845, 623, 366, 855, 38, 304, 532, 533, 534, 535, 849, 714, 204, 714, 716, 491, 492, 541, 543, 440, 718, 440, 652, 653, 530, 652, 653, 532, 463, 464, 704, 25, 361, 704, 216, 218, 615, 618, 34, 25, 360, 371, 371, 371, 628, 529, 628, 628, 23, 32, 629, 629, 29, 160, 703, 23, 32, 630, 630, 647, 704, 703, 366, 32, 257, 704, 32, 100, 388, 441, 629, 630, 10, 23, 642, 653, 653, 653, 664, 653, 653, 23, 25, 709, 653, 43, 285, 286, 652, 653, 672, 689, 653, 653, 703, 23, 642, 23, 642, 23, 642, 23, 642, 29, 43, 82, 215, 302, 438, 595, 596, 597, 598, 599, 652, 653, 653, 653, 653, 653, 653, 23, 269, 600, 256, 259, 21, 22, 25, 26, 28, 29, 30, 33, 35, 36, 40, 42, 85, 138, 152, 269, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 291, 294, 298, 313, 314, 600, 24, 23, 23, 703, 718, 8, 703, 718, 32, 32, 704, 32, 32, 454, 652, 29, 41, 366, 3, 9, 10, 23, 521, 848, 856, 29, 31, 721, 24, 368, 302, 372, 32, 32, 32, 536, 25, 39, 440, 652, 39, 527, 456, 525, 527, 34, 528, 17, 205, 206, 691, 189, 240, 417, 653, 23, 450, 527, 435, 440, 148, 749, 750, 751, 753, 3, 9, 10, 19, 22, 23, 26, 28, 40, 41, 42, 44, 45, 47, 62, 84, 108, 114, 128, 161, 163, 164, 184, 202, 204, 207, 208, 209, 210, 211, 215, 219, 239, 250, 273, 274, 275, 289, 299, 313, 314, 342, 343, 437, 440, 444, 477, 576, 600, 610, 659, 667, 685, 718, 720, 724, 754, 755, 763, 764, 765, 769, 771, 852, 857, 3, 9, 10, 19, 22, 23, 26, 28, 40, 41, 42, 44, 114, 164, 204, 215, 219, 273, 274, 275, 289, 313, 314, 342, 343, 437, 440, 575, 600, 610, 658, 666, 685, 718, 720, 724, 755, 761, 770, 771, 852, 857, 24, 74, 136, 137, 166, 182, 239, 422, 435, 436, 440, 637, 638, 639, 640, 641, 703, 653, 24, 3, 9, 10, 19, 22, 23, 26, 28, 40, 41, 42, 44, 87, 156, 164, 170, 204, 215, 219, 273, 274, 275, 289, 313, 314, 342, 343, 437, 440, 558, 559, 577, 600, 610, 655, 660, 668, 685, 718, 720, 852, 857, 704, 54, 89, 813, 814, 1, 32, 41, 79, 80, 703, 784, 785, 786, 787, 788, 790, 801, 849, 32, 47, 49, 50, 51, 62, 69, 77, 82, 113, 115, 124, 125, 126, 128, 135, 176, 187, 263, 264, 265, 268, 406, 468, 485, 486, 487, 495, 507, 509, 613, 619, 649, 703, 722, 723, 735, 736, 737, 741, 743, 744, 781, 833, 836, 837, 838, 839, 840, 850, 856, 132, 846, 704, 39, 535, 41, 870, 29, 27, 493, 692, 29, 704, 31, 39, 292, 293, 31, 27, 43, 38, 465, 704, 704, 32, 32, 32, 32, 628, 635, 1, 3, 9, 10, 19, 20, 22, 23, 26, 28, 32, 40, 41, 42, 44, 49, 50, 51, 54, 59, 71, 74, 76, 77, 81, 84, 86, 109, 115, 116, 117, 118, 119, 136, 137, 164, 166, 171, 178, 179, 182, 185, 186, 188, 204, 215, 219, 233, 234, 246, 247, 248, 251, 273, 274, 275, 294, 295, 299, 313, 314, 342, 343, 409, 410, 423, 429, 437, 440, 468, 520, 557, 560, 561, 562, 563, 564, 567, 568, 569, 570, 572, 574, 581, 600, 608, 609, 610, 611, 612, 631, 633, 634, 649, 654, 657, 663, 665, 685, 703, 718, 720, 734, 738, 739, 740, 741, 742, 744, 778, 816, 841, 852, 857, 94, 94, 703, 635, 615, 617, 618, 620, 366, 857, 32, 176, 177, 446, 447, 457, 458, 105, 32, 24, 670, 673, 24, 31, 34, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 25, 558, 438, 653, 672, 686, 686, 41, 255, 27, 43, 653, 673, 673, 673, 673, 703, 703, 27, 43, 27, 43, 31, 41, 345, 23, 870, 23, 653, 653, 653, 653, 653, 48, 165, 204, 233, 262, 610, 643, 645, 718, 857, 653, 653, 653, 653, 653, 653, 41, 41, 595, 653, 23, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 41, 84, 117, 128, 194, 233, 653, 876, 877, 653, 3, 9, 10, 19, 22, 23, 26, 28, 29, 40, 41, 42, 44, 45, 47, 108, 114, 161, 163, 164, 184, 202, 204, 207, 208, 209, 210, 211, 215, 219, 250, 273, 274, 275, 289, 313, 314, 342, 343, 437, 440, 559, 578, 600, 610, 661, 669, 675, 678, 680, 682, 684, 685, 718, 720, 724, 765, 768, 771, 852, 857, 675, 23, 32, 32, 39, 704, 442, 29, 553, 554, 703, 703, 158, 704, 230, 369, 370, 411, 412, 413, 440, 536, 24, 41, 373, 374, 375, 419, 422, 1, 46, 47, 62, 82, 83, 110, 115, 124, 128, 196, 197, 214, 350, 356, 363, 379, 389, 406, 423, 424, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 490, 494, 506, 508, 540, 613, 694, 697, 700, 703, 722, 736, 112, 153, 350, 379, 381, 382, 383, 384, 389, 396, 397, 424, 484, 494, 49, 51, 77, 350, 391, 392, 393, 394, 395, 424, 485, 486, 487, 488, 494, 506, 508, 613, 703, 743, 39, 39, 39, 34, 653, 24, 27, 418, 435, 436, 440, 444, 519, 520, 29, 653, 674, 677, 679, 681, 683, 34, 529, 422, 24, 27, 378, 703, 705, 752, 173, 190, 238, 239, 435, 440, 759, 760, 653, 653, 440, 667, 724, 765, 769, 653, 653, 653, 43, 652, 672, 653, 653, 23, 38, 769, 23, 129, 38, 23, 23, 38, 769, 769, 23, 23, 23, 23, 38, 38, 769, 38, 769, 703, 440, 476, 23, 653, 653, 653, 23, 9, 23, 38, 309, 312, 703, 653, 653, 23, 269, 600, 449, 313, 314, 600, 84, 765, 769, 101, 477, 763, 21, 22, 25, 26, 28, 29, 30, 32, 33, 35, 36, 40, 42, 48, 85, 129, 133, 138, 143, 152, 165, 212, 213, 220, 236, 237, 254, 269, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 291, 294, 298, 300, 301, 307, 308, 309, 310, 311, 312, 771, 774, 440, 770, 718, 718, 653, 653, 666, 770, 653, 653, 653, 43, 652, 672, 653, 653, 23, 703, 653, 653, 653, 23, 653, 653, 23, 269, 600, 313, 314, 600, 770, 770, 102, 21, 22, 25, 26, 28, 29, 30, 32, 33, 35, 36, 40, 42, 48, 85, 138, 143, 152, 165, 220, 254, 269, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 291, 294, 298, 771, 774, 770, 718, 718, 182, 440, 476, 529, 27, 641, 239, 435, 436, 440, 454, 32, 812, 655, 655, 558, 668, 655, 655, 655, 43, 652, 672, 655, 655, 653, 653, 653, 703, 655, 655, 655, 23, 653, 653, 23, 269, 600, 24, 27, 21, 22, 25, 26, 28, 29, 30, 33, 35, 36, 40, 42, 85, 129, 138, 152, 165, 269, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 291, 294, 298, 313, 314, 600, 718, 718, 23, 709, 713, 815, 815, 24, 165, 43, 56, 130, 131, 252, 703, 787, 791, 792, 794, 653, 704, 802, 804, 29, 31, 703, 96, 786, 32, 31, 703, 440, 560, 20, 113, 173, 692, 20, 113, 173, 23, 704, 20, 113, 173, 190, 69, 84, 560, 23, 54, 95, 499, 501, 503, 505, 703, 838, 407, 408, 703, 69, 23, 560, 468, 173, 23, 642, 23, 642, 23, 642, 23, 642, 31, 724, 91, 838, 23, 854, 847, 850, 32, 195, 871, 872, 876, 714, 492, 366, 703, 23, 652, 652, 652, 652, 464, 528, 9, 467, 34, 466, 32, 32, 24, 32, 574, 654, 657, 665, 23, 521, 654, 653, 664, 654, 654, 654, 43, 652, 672, 654, 654, 23, 653, 23, 31, 32, 182, 32, 23, 41, 270, 440, 685, 706, 709, 119, 713, 560, 23, 23, 653, 23, 560, 31, 82, 588, 594, 653, 23, 706, 23, 32, 653, 703, 269, 23, 119, 23, 23, 654, 654, 654, 713, 186, 518, 520, 557, 9, 23, 703, 653, 653, 23, 32, 32, 444, 476, 269, 600, 560, 560, 89, 565, 566, 567, 568, 144, 565, 560, 32, 32, 62, 63, 64, 128, 583, 256, 259, 32, 568, 634, 21, 22, 25, 26, 28, 29, 30, 33, 35, 36, 40, 42, 85, 138, 152, 269, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 284, 285, 286, 287, 288, 291, 294, 298, 34, 283, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 32, 313, 314, 600, 31, 703, 560, 718, 718, 721, 721, 24, 625, 32, 626, 32, 703, 43, 447, 246, 440, 443, 721, 24, 27, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 24, 24, 41, 43, 687, 43, 687, 672, 38, 689, 38, 24, 24, 24, 24, 595, 597, 653, 599, 595, 653, 653, 676, 653, 653, 653, 23, 259, 644, 703, 31, 38, 592, 653, 878, 879, 590, 591, 592, 653, 653, 875, 876, 194, 23, 23, 653, 41, 32, 653, 653, 669, 768, 653, 653, 704, 653, 43, 652, 672, 653, 653, 23, 38, 769, 38, 23, 38, 769, 769, 23, 23, 23, 23, 38, 38, 769, 38, 769, 703, 23, 653, 653, 653, 23, 653, 653, 23, 269, 600, 313, 314, 600, 24, 27, 27, 84, 768, 21, 22, 25, 26, 28, 29, 30, 33, 35, 36, 40, 42, 48, 85, 129, 133, 138, 143, 152, 165, 212, 213, 220, 236, 237, 254, 269, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 291, 294, 298, 300, 301, 307, 308, 771, 774, 770, 718, 718, 24, 675, 704, 446, 703, 24, 29, 302, 440, 555, 556, 653, 24, 27, 536, 373, 24, 27, 29, 141, 142, 378, 435, 444, 703, 419, 32, 706, 560, 23, 69, 84, 538, 539, 713, 23, 54, 95, 112, 384, 483, 498, 500, 502, 504, 703, 23, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 698, 699, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 99, 100, 101, 102, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 701, 702, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 695, 696, 376, 419, 32, 98, 481, 120, 617, 620, 398, 399, 401, 703, 97, 383, 32, 100, 393, 32, 31, 440, 557, 653, 671, 691, 529, 519, 704, 24, 27, 27, 158, 453, 579, 580, 653, 750, 454, 440, 476, 529, 34, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 84, 24, 27, 41, 43, 653, 652, 777, 653, 23, 652, 776, 770, 653, 653, 653, 770, 653, 653, 776, 777, 653, 653, 770, 653, 652, 777, 39, 345, 23, 32, 129, 721, 653, 653, 653, 653, 653, 204, 610, 643, 718, 653, 653, 653, 653, 653, 653, 769, 41, 769, 769, 41, 770, 595, 653, 769, 769, 769, 770, 769, 769, 770, 23, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 877, 653, 769, 769, 769, 769, 39, 652, 775, 777, 775, 775, 770, 34, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 24, 27, 41, 43, 770, 653, 653, 345, 23, 32, 721, 653, 653, 653, 653, 653, 204, 610, 643, 718, 653, 653, 653, 653, 653, 653, 770, 41, 41, 770, 595, 653, 770, 770, 770, 23, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 877, 653, 770, 638, 440, 476, 529, 527, 32, 24, 31, 34, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 41, 43, 129, 129, 129, 653, 653, 345, 23, 655, 655, 655, 655, 655, 655, 204, 610, 643, 718, 655, 655, 655, 655, 655, 655, 41, 653, 41, 215, 595, 655, 655, 23, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 877, 655, 635, 703, 849, 814, 794, 43, 792, 32, 703, 129, 789, 789, 27, 704, 79, 80, 31, 721, 79, 440, 703, 9, 23, 23, 519, 9, 23, 23, 653, 9, 23, 23, 23, 4, 703, 704, 129, 125, 510, 703, 31, 89, 503, 95, 501, 31, 27, 32, 527, 704, 653, 23, 673, 32, 673, 32, 673, 32, 673, 32, 741, 744, 32, 721, 674, 27, 1, 32, 52, 71, 112, 148, 174, 175, 199, 242, 350, 409, 410, 458, 469, 781, 842, 861, 862, 863, 864, 865, 866, 867, 868, 869, 881, 653, 664, 873, 874, 43, 872, 542, 544, 440, 651, 39, 39, 39, 39, 31, 39, 652, 32, 29, 522, 523, 653, 24, 31, 34, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 41, 43, 653, 34, 653, 704, 653, 706, 707, 706, 708, 270, 32, 270, 32, 32, 251, 84, 762, 769, 239, 440, 601, 602, 603, 706, 34, 204, 219, 266, 703, 710, 715, 717, 719, 852, 857, 704, 31, 560, 82, 90, 594, 27, 31, 24, 703, 32, 653, 32, 653, 23, 653, 32, 711, 713, 653, 32, 23, 713, 653, 345, 430, 431, 23, 721, 89, 567, 568, 721, 144, 23, 23, 23, 23, 584, 870, 23, 654, 654, 654, 654, 654, 204, 579, 609, 610, 643, 718, 654, 654, 654, 654, 654, 654, 41, 41, 215, 595, 654, 23, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 877, 654, 518, 579, 580, 518, 734, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 570, 703, 23, 32, 23, 23, 32, 533, 448, 670, 31, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 688, 689, 43, 43, 43, 653, 653, 31, 27, 43, 346, 24, 24, 674, 23, 653, 653, 305, 306, 27, 43, 27, 43, 24, 43, 876, 653, 710, 653, 32, 590, 34, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 24, 27, 23, 41, 43, 653, 777, 776, 770, 653, 653, 770, 653, 653, 776, 777, 653, 653, 770, 653, 345, 23, 680, 682, 684, 129, 653, 653, 653, 653, 653, 204, 610, 643, 718, 653, 653, 653, 653, 653, 653, 768, 41, 768, 769, 41, 770, 595, 653, 768, 769, 769, 770, 769, 769, 770, 23, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 877, 653, 769, 769, 769, 769, 770, 24, 32, 43, 704, 705, 27, 31, 370, 43, 374, 378, 435, 29, 704, 454, 455, 29, 378, 29, 704, 34, 489, 653, 704, 129, 27, 32, 34, 510, 31, 89, 502, 95, 500, 31, 653, 699, 103, 699, 32, 702, 696, 104, 696, 428, 435, 436, 444, 721, 617, 32, 32, 27, 32, 23, 721, 721, 31, 24, 519, 23, 679, 681, 683, 38, 34, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 129, 571, 573, 606, 610, 653, 656, 662, 664, 772, 773, 672, 38, 24, 31, 39, 24, 653, 31, 39, 24, 27, 24, 39, 24, 24, 24, 24, 39, 39, 39, 24, 24, 31, 24, 39, 653, 653, 23, 31, 878, 590, 653, 39, 39, 39, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 772, 672, 38, 24, 27, 24, 31, 653, 653, 31, 878, 590, 653, 34, 784, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 672, 38, 653, 653, 653, 24, 31, 653, 653, 31, 878, 590, 703, 653, 24, 703, 32, 38, 793, 23, 790, 32, 41, 805, 804, 34, 653, 802, 79, 653, 703, 31, 23, 653, 762, 516, 517, 706, 23, 653, 762, 24, 23, 653, 762, 84, 724, 770, 32, 653, 408, 32, 34, 704, 89, 54, 408, 24, 762, 24, 24, 24, 24, 82, 136, 137, 166, 725, 726, 727, 729, 735, 24, 850, 32, 175, 866, 881, 242, 881, 32, 32, 92, 863, 239, 358, 439, 471, 473, 478, 616, 619, 868, 70, 27, 53, 38, 549, 550, 551, 552, 703, 546, 547, 548, 703, 24, 27, 467, 631, 643, 31, 24, 27, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 672, 38, 24, 518, 24, 24, 27, 43, 27, 43, 708, 708, 23, 129, 24, 440, 704, 653, 27, 32, 34, 653, 29, 29, 29, 24, 29, 38, 715, 715, 560, 31, 560, 31, 653, 560, 246, 440, 632, 703, 817, 818, 819, 24, 24, 610, 653, 24, 24, 27, 24, 653, 32, 24, 653, 451, 452, 703, 451, 653, 721, 721, 653, 653, 653, 653, 138, 152, 586, 588, 653, 32, 32, 32, 31, 878, 590, 703, 653, 653, 32, 32, 653, 653, 553, 635, 635, 449, 653, 27, 43, 43, 31, 39, 292, 293, 31, 39, 292, 293, 595, 653, 653, 24, 24, 653, 31, 653, 653, 879, 591, 32, 24, 24, 43, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 772, 24, 768, 672, 38, 24, 39, 39, 24, 27, 39, 24, 24, 24, 24, 39, 39, 39, 24, 24, 31, 653, 653, 23, 31, 878, 590, 653, 533, 23, 556, 653, 23, 454, 455, 704, 454, 527, 29, 378, 378, 454, 704, 454, 706, 32, 34, 24, 32, 653, 539, 653, 32, 704, 89, 54, 24, 103, 104, 449, 529, 427, 425, 32, 399, 400, 653, 24, 653, 653, 614, 768, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 29, 34, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 24, 27, 43, 653, 769, 652, 769, 82, 90, 594, 766, 767, 24, 652, 769, 772, 769, 769, 769, 769, 769, 769, 769, 769, 653, 346, 24, 653, 653, 43, 43, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 43, 653, 772, 653, 346, 24, 653, 43, 43, 24, 653, 96, 31, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 43, 653, 653, 346, 24, 655, 43, 43, 24, 793, 39, 653, 783, 34, 653, 43, 619, 787, 794, 806, 807, 808, 809, 27, 653, 789, 789, 653, 789, 31, 79, 653, 24, 24, 27, 32, 34, 653, 24, 24, 82, 90, 513, 515, 594, 653, 24, 24, 129, 84, 24, 32, 34, 653, 652, 89, 503, 89, 503, 497, 499, 505, 24, 32, 32, 32, 32, 137, 166, 728, 87, 156, 170, 520, 732, 733, 732, 93, 727, 704, 730, 731, 617, 618, 620, 621, 622, 70, 70, 721, 623, 449, 704, 874, 873, 652, 27, 32, 553, 23, 552, 27, 32, 552, 32, 440, 39, 522, 523, 31, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 43, 653, 88, 569, 582, 653, 582, 569, 706, 706, 43, 43, 653, 23, 582, 704, 34, 32, 603, 653, 32, 715, 204, 715, 717, 569, 719, 652, 653, 560, 560, 703, 23, 102, 818, 31, 817, 560, 24, 29, 560, 582, 713, 560, 24, 346, 27, 32, 454, 32, 24, 24, 24, 24, 24, 82, 587, 589, 590, 585, 586, 90, 24, 654, 43, 43, 24, 32, 32, 24, 24, 24, 32, 24, 689, 38, 653, 653, 653, 653, 653, 653, 644, 24, 653, 877, 877, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 43, 653, 769, 769, 769, 772, 769, 769, 769, 769, 769, 769, 769, 653, 346, 24, 653, 653, 43, 43, 24, 24, 440, 768, 31, 377, 653, 29, 378, 704, 527, 34, 378, 454, 23, 527, 704, 527, 706, 82, 90, 512, 514, 594, 32, 653, 89, 502, 89, 502, 496, 498, 504, 426, 449, 449, 29, 69, 110, 134, 402, 403, 404, 422, 703, 31, 24, 39, 653, 643, 518, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 773, 43, 31, 39, 292, 293, 31, 769, 31, 27, 90, 764, 24, 88, 31, 24, 24, 43, 31, 39, 292, 293, 24, 31, 24, 721, 653, 43, 31, 39, 292, 293, 31, 24, 34, 39, 23, 41, 82, 796, 24, 704, 43, 807, 32, 803, 804, 790, 805, 789, 790, 79, 653, 24, 582, 582, 517, 653, 24, 582, 582, 31, 497, 90, 515, 31, 24, 582, 560, 23, 129, 569, 652, 32, 721, 89, 721, 89, 88, 32, 733, 733, 32, 520, 520, 520, 166, 721, 34, 27, 32, 627, 32, 704, 704, 435, 440, 32, 32, 870, 32, 31, 39, 550, 24, 23, 547, 31, 24, 27, 653, 43, 31, 39, 292, 293, 569, 88, 32, 24, 653, 34, 653, 604, 605, 606, 29, 31, 27, 39, 292, 293, 23, 635, 41, 62, 128, 176, 186, 703, 820, 821, 822, 824, 827, 828, 830, 102, 32, 610, 557, 24, 452, 527, 560, 31, 560, 90, 82, 590, 31, 90, 32, 653, 39, 39, 39, 39, 39, 39, 39, 88, 43, 31, 39, 292, 293, 24, 31, 24, 24, 24, 24, 31, 653, 24, 378, 454, 454, 652, 23, 527, 377, 34, 454, 31, 496, 90, 514, 31, 32, 721, 89, 721, 89, 88, 449, 704, 704, 405, 622, 703, 405, 24, 27, 404, 653, 23, 24, 653, 38, 653, 653, 653, 769, 769, 767, 769, 653, 765, 769, 38, 653, 653, 653, 653, 24, 38, 653, 653, 653, 653, 41, 796, 38, 593, 783, 795, 797, 798, 799, 590, 190, 789, 27, 789, 34, 32, 27, 790, 653, 789, 582, 582, 497, 497, 569, 653, 23, 313, 314, 511, 703, 721, 721, 497, 166, 732, 653, 731, 23, 32, 32, 32, 529, 652, 522, 523, 24, 38, 653, 653, 653, 569, 32, 24, 653, 24, 27, 715, 652, 607, 703, 652, 652, 635, 24, 43, 468, 569, 825, 826, 23, 23, 144, 23, 23, 32, 42, 305, 828, 24, 34, 88, 560, 31, 560, 31, 560, 31, 39, 292, 293, 877, 38, 653, 653, 653, 653, 769, 653, 527, 23, 527, 527, 377, 34, 24, 652, 527, 496, 496, 511, 721, 721, 496, 23, 403, 653, 653, 39, 39, 39, 32, 32, 24, 653, 39, 39, 39, 24, 653, 39, 39, 39, 24, 590, 789, 783, 27, 24, 296, 309, 310, 311, 43, 789, 23, 19, 23, 57, 259, 810, 804, 789, 790, 24, 653, 703, 703, 24, 34, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 733, 635, 39, 24, 653, 39, 39, 39, 769, 560, 606, 39, 27, 39, 39, 39, 24, 43, 826, 653, 653, 23, 830, 653, 674, 821, 9, 23, 709, 823, 32, 653, 560, 560, 560, 653, 653, 653, 653, 39, 39, 39, 24, 24, 31, 377, 34, 24, 652, 527, 24, 24, 653, 24, 31, 39, 292, 293, 31, 39, 292, 293, 31, 39, 292, 293, 43, 31, 593, 798, 783, 800, 800, 800, 256, 789, 797, 57, 259, 810, 23, 23, 271, 272, 789, 790, 770, 24, 497, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 24, 31, 39, 292, 293, 703, 24, 24, 653, 829, 830, 24, 24, 653, 824, 39, 39, 39, 31, 39, 292, 293, 653, 24, 652, 527, 496, 24, 653, 653, 653, 653, 653, 653, 653, 653, 653, 256, 789, 783, 31, 39, 39, 39, 41, 24, 23, 23, 24, 703, 811, 783, 810, 810, 24, 770, 32, 653, 653, 653, 82, 594, 831, 832, 830, 24, 830, 830, 24, 653, 653, 653, 24, 527, 39, 39, 39, 39, 39, 39, 39, 39, 39, 41, 39, 783, 783, 811, 783, 29, 24, 24, 569, 24, 39, 39, 39, 31, 830, 31, 90, 832, 88, 830, 39, 39, 39, 783, 24, 24, 24, 704, 143, 569, 830, 32, 830, 830, 829, 24, 789, 143, 41, 32, 32, 789, 41, 795, 795, 43, 43 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. However, YYFAIL appears to be in use. Nevertheless, it is formally deprecated in Bison 2.4.2's NEWS entry, where a plan to phase it out is discussed. */ #define YYFAIL goto yyerrlab #if defined YYFAIL /* This is here to suppress warnings from the GCC cpp's -Wunused-macros. Normally we don't worry about that warning, but some users do, and we want to make it easy for users to remove YYFAIL uses, which will produce warnings from Bison 2.5. */ #endif #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (YY_((char*)"syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (&yylval, YYLEX_PARAM) #else # define YYLEX yylex (&yylval) #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void yy_stack_print (yybottom, yytop) yytype_int16 *yybottom; yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = 0; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per "expected"). */ int yycount = 0; /* There are many possibilities here to consider: - Assume YYFAIL is not used. It's too flawed to consider. See for details. YYERROR is fine as it does not invoke this function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR && !yytable_value_is_error (yytable[yyx + yyn])) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } } } switch (yycount) { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ break YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ } yysize1 = yysize + yystrlen (yyformat); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return 1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyformat += 2; } else { yyp++; yyformat++; } } return 0; } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: `yyss': related to states. `yyvs': related to semantic values. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yytoken = 0; yyss = yyssa; yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_((char*)"memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: /* Line 1806 of yacc.c */ #line 590 "VParseBison.y" { } break; case 3: /* Line 1806 of yacc.c */ #line 593 "VParseBison.y" { } break; case 4: /* Line 1806 of yacc.c */ #line 600 "VParseBison.y" { } break; case 5: /* Line 1806 of yacc.c */ #line 602 "VParseBison.y" { } break; case 6: /* Line 1806 of yacc.c */ #line 606 "VParseBison.y" { } break; case 7: /* Line 1806 of yacc.c */ #line 607 "VParseBison.y" { } break; case 8: /* Line 1806 of yacc.c */ #line 611 "VParseBison.y" { } break; case 9: /* Line 1806 of yacc.c */ #line 613 "VParseBison.y" { } break; case 10: /* Line 1806 of yacc.c */ #line 614 "VParseBison.y" { } break; case 11: /* Line 1806 of yacc.c */ #line 615 "VParseBison.y" { } break; case 12: /* Line 1806 of yacc.c */ #line 616 "VParseBison.y" { } break; case 13: /* Line 1806 of yacc.c */ #line 617 "VParseBison.y" { } break; case 14: /* Line 1806 of yacc.c */ #line 619 "VParseBison.y" { } break; case 15: /* Line 1806 of yacc.c */ #line 623 "VParseBison.y" { } break; case 16: /* Line 1806 of yacc.c */ #line 624 "VParseBison.y" { NEED_S09((yyvsp[(1) - (5)].fl),"timeunit /"); } break; case 17: /* Line 1806 of yacc.c */ #line 625 "VParseBison.y" { } break; case 18: /* Line 1806 of yacc.c */ #line 633 "VParseBison.y" { PARSEP->endpackageCb((yyvsp[(3) - (4)].fl),(yyvsp[(3) - (4)].str)); PARSEP->symPopScope(VAstType::PACKAGE); } break; case 19: /* Line 1806 of yacc.c */ #line 640 "VParseBison.y" { PARSEP->symPushNew(VAstType::PACKAGE, (yyvsp[(3) - (4)].str)); PARSEP->packageCb((yyvsp[(1) - (4)].fl),(yyvsp[(1) - (4)].str), (yyvsp[(3) - (4)].str)); } break; case 20: /* Line 1806 of yacc.c */ #line 645 "VParseBison.y" { } break; case 21: /* Line 1806 of yacc.c */ #line 646 "VParseBison.y" { } break; case 22: /* Line 1806 of yacc.c */ #line 650 "VParseBison.y" { } break; case 23: /* Line 1806 of yacc.c */ #line 651 "VParseBison.y" { } break; case 24: /* Line 1806 of yacc.c */ #line 655 "VParseBison.y" { } break; case 25: /* Line 1806 of yacc.c */ #line 656 "VParseBison.y" { } break; case 26: /* Line 1806 of yacc.c */ #line 657 "VParseBison.y" { } break; case 27: /* Line 1806 of yacc.c */ #line 658 "VParseBison.y" { } break; case 28: /* Line 1806 of yacc.c */ #line 662 "VParseBison.y" { } break; case 29: /* Line 1806 of yacc.c */ #line 663 "VParseBison.y" { } break; case 30: /* Line 1806 of yacc.c */ #line 664 "VParseBison.y" { } break; case 31: /* Line 1806 of yacc.c */ #line 665 "VParseBison.y" { } break; case 32: /* Line 1806 of yacc.c */ #line 666 "VParseBison.y" { } break; case 33: /* Line 1806 of yacc.c */ #line 667 "VParseBison.y" { } break; case 34: /* Line 1806 of yacc.c */ #line 668 "VParseBison.y" { } break; case 35: /* Line 1806 of yacc.c */ #line 669 "VParseBison.y" { } break; case 36: /* Line 1806 of yacc.c */ #line 671 "VParseBison.y" { } break; case 37: /* Line 1806 of yacc.c */ #line 672 "VParseBison.y" { } break; case 38: /* Line 1806 of yacc.c */ #line 673 "VParseBison.y" { } break; case 39: /* Line 1806 of yacc.c */ #line 674 "VParseBison.y" { } break; case 40: /* Line 1806 of yacc.c */ #line 675 "VParseBison.y" { } break; case 41: /* Line 1806 of yacc.c */ #line 676 "VParseBison.y" { } break; case 42: /* Line 1806 of yacc.c */ #line 680 "VParseBison.y" { } break; case 43: /* Line 1806 of yacc.c */ #line 681 "VParseBison.y" { } break; case 44: /* Line 1806 of yacc.c */ #line 685 "VParseBison.y" { } break; case 45: /* Line 1806 of yacc.c */ #line 689 "VParseBison.y" { } break; case 46: /* Line 1806 of yacc.c */ #line 690 "VParseBison.y" { } break; case 47: /* Line 1806 of yacc.c */ #line 695 "VParseBison.y" { PARSEP->syms().import((yyvsp[(1) - (3)].fl),(yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str)); PARSEP->importCb((yyvsp[(1) - (3)].fl),(yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str)); } break; case 48: /* Line 1806 of yacc.c */ #line 700 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 49: /* Line 1806 of yacc.c */ #line 701 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 50: /* Line 1806 of yacc.c */ #line 705 "VParseBison.y" { } break; case 51: /* Line 1806 of yacc.c */ #line 706 "VParseBison.y" { } break; case 52: /* Line 1806 of yacc.c */ #line 717 "VParseBison.y" { PARSEP->endmoduleCb((yyvsp[(6) - (7)].fl),(yyvsp[(6) - (7)].str)); PARSEP->symPopScope(VAstType::MODULE); } break; case 53: /* Line 1806 of yacc.c */ #line 721 "VParseBison.y" { PARSEP->symPopScope(VAstType::MODULE); } break; case 54: /* Line 1806 of yacc.c */ #line 728 "VParseBison.y" { PARSEP->symPushNew(VAstType::MODULE, (yyvsp[(3) - (3)].str)); PARSEP->moduleCb((yyvsp[(1) - (3)].fl),(yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str),false,PARSEP->inCellDefine()); } break; case 55: /* Line 1806 of yacc.c */ #line 734 "VParseBison.y" { } break; case 56: /* Line 1806 of yacc.c */ #line 735 "VParseBison.y" { } break; case 57: /* Line 1806 of yacc.c */ #line 739 "VParseBison.y" { } break; case 58: /* Line 1806 of yacc.c */ #line 740 "VParseBison.y" { } break; case 59: /* Line 1806 of yacc.c */ #line 742 "VParseBison.y" { } break; case 60: /* Line 1806 of yacc.c */ #line 746 "VParseBison.y" { } break; case 61: /* Line 1806 of yacc.c */ #line 747 "VParseBison.y" { } break; case 62: /* Line 1806 of yacc.c */ #line 752 "VParseBison.y" {VARRESET_LIST("parameter");} break; case 63: /* Line 1806 of yacc.c */ #line 752 "VParseBison.y" { VARRESET_NONLIST(""); } break; case 64: /* Line 1806 of yacc.c */ #line 757 "VParseBison.y" { } break; case 65: /* Line 1806 of yacc.c */ #line 758 "VParseBison.y" { } break; case 66: /* Line 1806 of yacc.c */ #line 763 "VParseBison.y" { } break; case 67: /* Line 1806 of yacc.c */ #line 764 "VParseBison.y" { } break; case 68: /* Line 1806 of yacc.c */ #line 768 "VParseBison.y" { } break; case 69: /* Line 1806 of yacc.c */ #line 771 "VParseBison.y" { } break; case 70: /* Line 1806 of yacc.c */ #line 772 "VParseBison.y" {VARRESET_LIST("");} break; case 71: /* Line 1806 of yacc.c */ #line 772 "VParseBison.y" { VARRESET_NONLIST(""); } break; case 72: /* Line 1806 of yacc.c */ #line 776 "VParseBison.y" { } break; case 73: /* Line 1806 of yacc.c */ #line 777 "VParseBison.y" { } break; case 74: /* Line 1806 of yacc.c */ #line 787 "VParseBison.y" { } break; case 75: /* Line 1806 of yacc.c */ #line 789 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (5)].str)); VARIO("interface"); VARDONE((yyvsp[(2) - (5)].fl), (yyvsp[(3) - (5)].str), (yyvsp[(4) - (5)].str), ""); PINNUMINC(); PARSEP->instantCb((yyvsp[(2) - (5)].fl), (yyvsp[(2) - (5)].str), (yyvsp[(3) - (5)].str), (yyvsp[(4) - (5)].str)); PARSEP->endcellCb((yyvsp[(2) - (5)].fl),""); } break; case 76: /* Line 1806 of yacc.c */ #line 792 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (5)].str)); VARIO("interface"); VARDONE((yyvsp[(2) - (5)].fl), (yyvsp[(3) - (5)].str), (yyvsp[(4) - (5)].str), ""); PINNUMINC(); } break; case 77: /* Line 1806 of yacc.c */ #line 794 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (7)].str)+"."+(yyvsp[(4) - (7)].str)); VARIO("interface"); VARDONE((yyvsp[(2) - (7)].fl), (yyvsp[(5) - (7)].str), (yyvsp[(6) - (7)].str), ""); PINNUMINC(); PARSEP->instantCb((yyvsp[(2) - (7)].fl), (yyvsp[(2) - (7)].str), (yyvsp[(5) - (7)].str), (yyvsp[(6) - (7)].str)); PARSEP->endcellCb((yyvsp[(2) - (7)].fl),""); } break; case 78: /* Line 1806 of yacc.c */ #line 797 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (7)].str)+"."+(yyvsp[(4) - (7)].str)); VARIO("interface"); VARDONE((yyvsp[(2) - (7)].fl), (yyvsp[(5) - (7)].str), (yyvsp[(6) - (7)].str), ""); PINNUMINC(); } break; case 79: /* Line 1806 of yacc.c */ #line 827 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (8)].str)); VARDONE((yyvsp[(4) - (8)].fl), (yyvsp[(4) - (8)].str), "", ""); PINNUMINC(); } break; case 80: /* Line 1806 of yacc.c */ #line 829 "VParseBison.y" { VARDTYPE(SPACED((yyvsp[(2) - (9)].str),(yyvsp[(3) - (9)].str))); VARDONE((yyvsp[(5) - (9)].fl), (yyvsp[(5) - (9)].str), "", ""); PINNUMINC(); } break; case 81: /* Line 1806 of yacc.c */ #line 831 "VParseBison.y" { VARDTYPE(SPACED(SPACED((yyvsp[(2) - (10)].str),(yyvsp[(3) - (10)].str)),(yyvsp[(4) - (10)].str))); VARDONE((yyvsp[(6) - (10)].fl), (yyvsp[(6) - (10)].str), "", ""); PINNUMINC(); } break; case 82: /* Line 1806 of yacc.c */ #line 833 "VParseBison.y" { /*VARDTYPE-same*/ VARDONE((yyvsp[(3) - (7)].fl), (yyvsp[(3) - (7)].str), "", ""); PINNUMINC(); } break; case 83: /* Line 1806 of yacc.c */ #line 836 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (5)].str)); VARDONE((yyvsp[(3) - (5)].fl), (yyvsp[(3) - (5)].str), (yyvsp[(4) - (5)].str), ""); PINNUMINC(); } break; case 84: /* Line 1806 of yacc.c */ #line 838 "VParseBison.y" { VARDTYPE(SPACED((yyvsp[(2) - (6)].str),(yyvsp[(3) - (6)].str))); VARDONE((yyvsp[(4) - (6)].fl), (yyvsp[(4) - (6)].str), (yyvsp[(5) - (6)].str), ""); PINNUMINC(); } break; case 85: /* Line 1806 of yacc.c */ #line 840 "VParseBison.y" { VARDTYPE(SPACED(SPACED((yyvsp[(2) - (7)].str),(yyvsp[(3) - (7)].str)),(yyvsp[(4) - (7)].str))); VARDONE((yyvsp[(5) - (7)].fl), (yyvsp[(5) - (7)].str), (yyvsp[(6) - (7)].str), ""); PINNUMINC(); } break; case 86: /* Line 1806 of yacc.c */ #line 842 "VParseBison.y" { /*VARDTYPE-same*/ VARDONE((yyvsp[(2) - (4)].fl), (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), ""); PINNUMINC(); } break; case 87: /* Line 1806 of yacc.c */ #line 845 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (7)].str)); VARDONE((yyvsp[(3) - (7)].fl), (yyvsp[(3) - (7)].str), (yyvsp[(4) - (7)].str), (yyvsp[(7) - (7)].str)); PINNUMINC(); } break; case 88: /* Line 1806 of yacc.c */ #line 847 "VParseBison.y" { VARDTYPE(SPACED((yyvsp[(2) - (8)].str),(yyvsp[(3) - (8)].str))); VARDONE((yyvsp[(4) - (8)].fl), (yyvsp[(4) - (8)].str), (yyvsp[(5) - (8)].str), (yyvsp[(8) - (8)].str)); PINNUMINC(); } break; case 89: /* Line 1806 of yacc.c */ #line 849 "VParseBison.y" { VARDTYPE(SPACED(SPACED((yyvsp[(2) - (9)].str),(yyvsp[(3) - (9)].str)),(yyvsp[(4) - (9)].str))); VARDONE((yyvsp[(5) - (9)].fl), (yyvsp[(5) - (9)].str), (yyvsp[(6) - (9)].str), (yyvsp[(9) - (9)].str)); PINNUMINC(); } break; case 90: /* Line 1806 of yacc.c */ #line 851 "VParseBison.y" { /*VARDTYPE-same*/ VARDONE((yyvsp[(2) - (6)].fl), (yyvsp[(2) - (6)].str), (yyvsp[(3) - (6)].str), (yyvsp[(6) - (6)].str)); PINNUMINC(); } break; case 91: /* Line 1806 of yacc.c */ #line 853 "VParseBison.y" { } break; case 92: /* Line 1806 of yacc.c */ #line 857 "VParseBison.y" { } break; case 93: /* Line 1806 of yacc.c */ #line 860 "VParseBison.y" { VARDTYPE(""/*default_nettype*/); } break; case 94: /* Line 1806 of yacc.c */ #line 861 "VParseBison.y" { VARDTYPE(""/*default_nettype*/); } break; case 95: /* Line 1806 of yacc.c */ #line 862 "VParseBison.y" { } break; case 96: /* Line 1806 of yacc.c */ #line 866 "VParseBison.y" { } break; case 97: /* Line 1806 of yacc.c */ #line 867 "VParseBison.y" { } break; case 98: /* Line 1806 of yacc.c */ #line 871 "VParseBison.y" { } break; case 99: /* Line 1806 of yacc.c */ #line 872 "VParseBison.y" { } break; case 100: /* Line 1806 of yacc.c */ #line 876 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 101: /* Line 1806 of yacc.c */ #line 877 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 102: /* Line 1806 of yacc.c */ #line 887 "VParseBison.y" { PARSEP->endinterfaceCb((yyvsp[(6) - (7)].fl), (yyvsp[(6) - (7)].str)); PARSEP->symPopScope(VAstType::INTERFACE); } break; case 103: /* Line 1806 of yacc.c */ #line 889 "VParseBison.y" { } break; case 104: /* Line 1806 of yacc.c */ #line 894 "VParseBison.y" { PARSEP->symPushNew(VAstType::INTERFACE,(yyvsp[(3) - (3)].str)); PARSEP->interfaceCb((yyvsp[(1) - (3)].fl),(yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str)); } break; case 105: /* Line 1806 of yacc.c */ #line 899 "VParseBison.y" { } break; case 106: /* Line 1806 of yacc.c */ #line 900 "VParseBison.y" { } break; case 107: /* Line 1806 of yacc.c */ #line 904 "VParseBison.y" { } break; case 108: /* Line 1806 of yacc.c */ #line 905 "VParseBison.y" { } break; case 109: /* Line 1806 of yacc.c */ #line 909 "VParseBison.y" { } break; case 110: /* Line 1806 of yacc.c */ #line 911 "VParseBison.y" { } break; case 111: /* Line 1806 of yacc.c */ #line 912 "VParseBison.y" { } break; case 112: /* Line 1806 of yacc.c */ #line 913 "VParseBison.y" { } break; case 113: /* Line 1806 of yacc.c */ #line 914 "VParseBison.y" { } break; case 114: /* Line 1806 of yacc.c */ #line 915 "VParseBison.y" { } break; case 115: /* Line 1806 of yacc.c */ #line 917 "VParseBison.y" { } break; case 116: /* Line 1806 of yacc.c */ #line 923 "VParseBison.y" { } break; case 117: /* Line 1806 of yacc.c */ #line 924 "VParseBison.y" { } break; case 118: /* Line 1806 of yacc.c */ #line 932 "VParseBison.y" { } break; case 119: /* Line 1806 of yacc.c */ #line 936 "VParseBison.y" { } break; case 120: /* Line 1806 of yacc.c */ #line 937 "VParseBison.y" { } break; case 121: /* Line 1806 of yacc.c */ #line 941 "VParseBison.y" { } break; case 122: /* Line 1806 of yacc.c */ #line 942 "VParseBison.y" { } break; case 123: /* Line 1806 of yacc.c */ #line 946 "VParseBison.y" { } break; case 124: /* Line 1806 of yacc.c */ #line 947 "VParseBison.y" { } break; case 125: /* Line 1806 of yacc.c */ #line 948 "VParseBison.y" { } break; case 126: /* Line 1806 of yacc.c */ #line 949 "VParseBison.y" { } break; case 127: /* Line 1806 of yacc.c */ #line 951 "VParseBison.y" { } break; case 128: /* Line 1806 of yacc.c */ #line 958 "VParseBison.y" { PARSEP->endprogramCb((yyvsp[(6) - (7)].fl),(yyvsp[(6) - (7)].str)); PARSEP->symPopScope(VAstType::PROGRAM); } break; case 129: /* Line 1806 of yacc.c */ #line 961 "VParseBison.y" { PARSEP->symPopScope(VAstType::PROGRAM); } break; case 130: /* Line 1806 of yacc.c */ #line 966 "VParseBison.y" { PARSEP->symPushNew(VAstType::PROGRAM,(yyvsp[(3) - (3)].str)); PARSEP->programCb((yyvsp[(1) - (3)].fl),(yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); } break; case 131: /* Line 1806 of yacc.c */ #line 972 "VParseBison.y" { } break; case 132: /* Line 1806 of yacc.c */ #line 973 "VParseBison.y" { } break; case 133: /* Line 1806 of yacc.c */ #line 977 "VParseBison.y" { } break; case 134: /* Line 1806 of yacc.c */ #line 978 "VParseBison.y" { } break; case 135: /* Line 1806 of yacc.c */ #line 982 "VParseBison.y" { } break; case 136: /* Line 1806 of yacc.c */ #line 983 "VParseBison.y" { } break; case 137: /* Line 1806 of yacc.c */ #line 987 "VParseBison.y" { } break; case 138: /* Line 1806 of yacc.c */ #line 988 "VParseBison.y" { } break; case 139: /* Line 1806 of yacc.c */ #line 989 "VParseBison.y" { } break; case 140: /* Line 1806 of yacc.c */ #line 990 "VParseBison.y" { } break; case 141: /* Line 1806 of yacc.c */ #line 991 "VParseBison.y" { } break; case 142: /* Line 1806 of yacc.c */ #line 992 "VParseBison.y" { } break; case 143: /* Line 1806 of yacc.c */ #line 993 "VParseBison.y" { } break; case 144: /* Line 1806 of yacc.c */ #line 997 "VParseBison.y" { } break; case 145: /* Line 1806 of yacc.c */ #line 998 "VParseBison.y" { } break; case 146: /* Line 1806 of yacc.c */ #line 999 "VParseBison.y" { } break; case 147: /* Line 1806 of yacc.c */ #line 1000 "VParseBison.y" { } break; case 148: /* Line 1806 of yacc.c */ #line 1004 "VParseBison.y" { } break; case 149: /* Line 1806 of yacc.c */ #line 1005 "VParseBison.y" { } break; case 150: /* Line 1806 of yacc.c */ #line 1006 "VParseBison.y" { } break; case 151: /* Line 1806 of yacc.c */ #line 1010 "VParseBison.y" { } break; case 152: /* Line 1806 of yacc.c */ #line 1014 "VParseBison.y" { } break; case 153: /* Line 1806 of yacc.c */ #line 1015 "VParseBison.y" { } break; case 154: /* Line 1806 of yacc.c */ #line 1019 "VParseBison.y" {VARRESET_LIST("");} break; case 155: /* Line 1806 of yacc.c */ #line 1020 "VParseBison.y" { VARRESET_NONLIST(""); PARSEP->endmodportCb((yyvsp[(1) - (5)].fl), "endmodport"); PARSEP->symPopScope(VAstType::MODPORT); } break; case 156: /* Line 1806 of yacc.c */ #line 1027 "VParseBison.y" { PARSEP->symPushNew(VAstType::MODPORT,(yyvsp[(1) - (1)].str)); PARSEP->modportCb((yyvsp[(1) - (1)].fl),"modport",(yyvsp[(1) - (1)].str)); } break; case 157: /* Line 1806 of yacc.c */ #line 1032 "VParseBison.y" { } break; case 158: /* Line 1806 of yacc.c */ #line 1033 "VParseBison.y" { } break; case 159: /* Line 1806 of yacc.c */ #line 1042 "VParseBison.y" { } break; case 160: /* Line 1806 of yacc.c */ #line 1044 "VParseBison.y" { } break; case 161: /* Line 1806 of yacc.c */ #line 1045 "VParseBison.y" { } break; case 162: /* Line 1806 of yacc.c */ #line 1046 "VParseBison.y" { } break; case 163: /* Line 1806 of yacc.c */ #line 1049 "VParseBison.y" { } break; case 164: /* Line 1806 of yacc.c */ #line 1054 "VParseBison.y" { VARDONE((yyvsp[(1) - (1)].fl),(yyvsp[(1) - (1)].str),"",(yyvsp[(1) - (1)].str)); PINNUMINC(); } break; case 165: /* Line 1806 of yacc.c */ #line 1055 "VParseBison.y" { VARDONE((yyvsp[(1) - (4)].fl),(yyvsp[(2) - (4)].str),"",""); PINNUMINC(); } break; case 166: /* Line 1806 of yacc.c */ #line 1056 "VParseBison.y" { VARDONE((yyvsp[(1) - (5)].fl),(yyvsp[(2) - (5)].str),"",(yyvsp[(4) - (5)].str)); PINNUMINC(); } break; case 167: /* Line 1806 of yacc.c */ #line 1060 "VParseBison.y" { } break; case 168: /* Line 1806 of yacc.c */ #line 1061 "VParseBison.y" { } break; case 169: /* Line 1806 of yacc.c */ #line 1068 "VParseBison.y" { } break; case 170: /* Line 1806 of yacc.c */ #line 1072 "VParseBison.y" { } break; case 171: /* Line 1806 of yacc.c */ #line 1073 "VParseBison.y" { } break; case 172: /* Line 1806 of yacc.c */ #line 1077 "VParseBison.y" { VARRESET_NONLIST("genvar"); VARDONE((yyvsp[(1) - (2)].fl), (yyvsp[(1) - (2)].str), "", ""); } break; case 173: /* Line 1806 of yacc.c */ #line 1082 "VParseBison.y" { } break; case 174: /* Line 1806 of yacc.c */ #line 1090 "VParseBison.y" { } break; case 175: /* Line 1806 of yacc.c */ #line 1094 "VParseBison.y" { VARRESET(); VARDECL("localparam"); VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 176: /* Line 1806 of yacc.c */ #line 1095 "VParseBison.y" { VARRESET(); VARDECL("localparam"); VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 177: /* Line 1806 of yacc.c */ #line 1096 "VParseBison.y" { VARRESET(); VARDECL("localparam"); VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 178: /* Line 1806 of yacc.c */ #line 1100 "VParseBison.y" { VARRESET(); VARDECL("parameter"); VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 179: /* Line 1806 of yacc.c */ #line 1101 "VParseBison.y" { VARRESET(); VARDECL("parameter"); VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 180: /* Line 1806 of yacc.c */ #line 1102 "VParseBison.y" { VARRESET(); VARDECL("parameter"); VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 181: /* Line 1806 of yacc.c */ #line 1107 "VParseBison.y" { } break; case 182: /* Line 1806 of yacc.c */ #line 1108 "VParseBison.y" { /*NEED_S09(CURLINE(),"port localparams");*/ } break; case 183: /* Line 1806 of yacc.c */ #line 1110 "VParseBison.y" { VARDTYPE((yyvsp[(1) - (1)].str)); } break; case 184: /* Line 1806 of yacc.c */ #line 1111 "VParseBison.y" { VARDTYPE((yyvsp[(1) - (1)].str)); } break; case 185: /* Line 1806 of yacc.c */ #line 1115 "VParseBison.y" { } break; case 186: /* Line 1806 of yacc.c */ #line 1119 "VParseBison.y" { VARDTYPE(SPACED((yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str))); } break; case 187: /* Line 1806 of yacc.c */ #line 1120 "VParseBison.y" { VARNET((yyvsp[(2) - (4)].str)); VARDTYPE(SPACED((yyvsp[(3) - (4)].str),(yyvsp[(4) - (4)].str))); } break; case 188: /* Line 1806 of yacc.c */ #line 1124 "VParseBison.y" { VARRESET_NONLIST("net"); } break; case 189: /* Line 1806 of yacc.c */ #line 1128 "VParseBison.y" { (yyval.str)=""; } break; case 190: /* Line 1806 of yacc.c */ #line 1129 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 191: /* Line 1806 of yacc.c */ #line 1130 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 192: /* Line 1806 of yacc.c */ #line 1137 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 193: /* Line 1806 of yacc.c */ #line 1138 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=SPACED((yyvsp[(1) - (3)].str),(yyvsp[(2) - (3)].str)); } break; case 194: /* Line 1806 of yacc.c */ #line 1139 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str); } break; case 195: /* Line 1806 of yacc.c */ #line 1140 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=""; } break; case 196: /* Line 1806 of yacc.c */ #line 1144 "VParseBison.y" { VARNET((yyvsp[(1) - (1)].str)); } break; case 197: /* Line 1806 of yacc.c */ #line 1145 "VParseBison.y" { VARNET((yyvsp[(1) - (1)].str)); } break; case 198: /* Line 1806 of yacc.c */ #line 1146 "VParseBison.y" { VARNET((yyvsp[(1) - (1)].str)); } break; case 199: /* Line 1806 of yacc.c */ #line 1147 "VParseBison.y" { VARNET((yyvsp[(1) - (1)].str)); } break; case 200: /* Line 1806 of yacc.c */ #line 1148 "VParseBison.y" { VARNET((yyvsp[(1) - (1)].str)); } break; case 201: /* Line 1806 of yacc.c */ #line 1149 "VParseBison.y" { VARNET((yyvsp[(1) - (1)].str)); } break; case 202: /* Line 1806 of yacc.c */ #line 1150 "VParseBison.y" { VARNET((yyvsp[(1) - (1)].str)); } break; case 203: /* Line 1806 of yacc.c */ #line 1151 "VParseBison.y" { VARNET((yyvsp[(1) - (1)].str)); } break; case 204: /* Line 1806 of yacc.c */ #line 1152 "VParseBison.y" { VARNET((yyvsp[(1) - (1)].str)); } break; case 205: /* Line 1806 of yacc.c */ #line 1153 "VParseBison.y" { VARNET((yyvsp[(1) - (1)].str)); } break; case 206: /* Line 1806 of yacc.c */ #line 1154 "VParseBison.y" { VARNET((yyvsp[(1) - (1)].str)); } break; case 207: /* Line 1806 of yacc.c */ #line 1158 "VParseBison.y" { VARRESET_NONLIST((yyvsp[(1) - (1)].str)); } break; case 208: /* Line 1806 of yacc.c */ #line 1162 "VParseBison.y" { VARRESET_NONLIST((yyvsp[(1) - (1)].str)); } break; case 209: /* Line 1806 of yacc.c */ #line 1167 "VParseBison.y" { VARIO((yyvsp[(1) - (1)].str)); } break; case 210: /* Line 1806 of yacc.c */ #line 1168 "VParseBison.y" { VARIO((yyvsp[(1) - (1)].str)); } break; case 211: /* Line 1806 of yacc.c */ #line 1169 "VParseBison.y" { VARIO((yyvsp[(1) - (1)].str)); } break; case 212: /* Line 1806 of yacc.c */ #line 1170 "VParseBison.y" { VARIO((yyvsp[(1) - (1)].str)); } break; case 213: /* Line 1806 of yacc.c */ #line 1171 "VParseBison.y" { VARIO((yyvsp[(1) - (2)].str)); } break; case 214: /* Line 1806 of yacc.c */ #line 1176 "VParseBison.y" { VARRESET_NONLIST(""); VARIO((yyvsp[(1) - (1)].str)); } break; case 215: /* Line 1806 of yacc.c */ #line 1177 "VParseBison.y" { VARRESET_NONLIST(""); VARIO((yyvsp[(1) - (1)].str)); } break; case 216: /* Line 1806 of yacc.c */ #line 1178 "VParseBison.y" { VARRESET_NONLIST(""); VARIO((yyvsp[(1) - (1)].str)); } break; case 217: /* Line 1806 of yacc.c */ #line 1179 "VParseBison.y" { VARRESET_NONLIST(""); VARIO((yyvsp[(1) - (1)].str)); } break; case 218: /* Line 1806 of yacc.c */ #line 1180 "VParseBison.y" { VARRESET_NONLIST(""); VARIO((yyvsp[(1) - (2)].str)); } break; case 219: /* Line 1806 of yacc.c */ #line 1191 "VParseBison.y" { VARDTYPE((yyvsp[(3) - (3)].str)); } break; case 220: /* Line 1806 of yacc.c */ #line 1191 "VParseBison.y" { } break; case 221: /* Line 1806 of yacc.c */ #line 1192 "VParseBison.y" { VARDTYPE(SPACED((yyvsp[(3) - (4)].str),(yyvsp[(4) - (4)].str))); } break; case 222: /* Line 1806 of yacc.c */ #line 1192 "VParseBison.y" { } break; case 223: /* Line 1806 of yacc.c */ #line 1193 "VParseBison.y" { VARDTYPE((yyvsp[(3) - (3)].str)); } break; case 224: /* Line 1806 of yacc.c */ #line 1193 "VParseBison.y" { } break; case 225: /* Line 1806 of yacc.c */ #line 1194 "VParseBison.y" { VARDTYPE("");/*default_nettype*/} break; case 226: /* Line 1806 of yacc.c */ #line 1194 "VParseBison.y" { } break; case 227: /* Line 1806 of yacc.c */ #line 1204 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 228: /* Line 1806 of yacc.c */ #line 1204 "VParseBison.y" { } break; case 229: /* Line 1806 of yacc.c */ #line 1205 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 230: /* Line 1806 of yacc.c */ #line 1205 "VParseBison.y" { } break; case 231: /* Line 1806 of yacc.c */ #line 1209 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 232: /* Line 1806 of yacc.c */ #line 1210 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 233: /* Line 1806 of yacc.c */ #line 1211 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 234: /* Line 1806 of yacc.c */ #line 1212 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 235: /* Line 1806 of yacc.c */ #line 1213 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 236: /* Line 1806 of yacc.c */ #line 1214 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 237: /* Line 1806 of yacc.c */ #line 1218 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 238: /* Line 1806 of yacc.c */ #line 1219 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 239: /* Line 1806 of yacc.c */ #line 1220 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 240: /* Line 1806 of yacc.c */ #line 1224 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 241: /* Line 1806 of yacc.c */ #line 1225 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 242: /* Line 1806 of yacc.c */ #line 1226 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 243: /* Line 1806 of yacc.c */ #line 1230 "VParseBison.y" { (yyval.str)=""; } break; case 244: /* Line 1806 of yacc.c */ #line 1231 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 245: /* Line 1806 of yacc.c */ #line 1235 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 246: /* Line 1806 of yacc.c */ #line 1236 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 247: /* Line 1806 of yacc.c */ #line 1243 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 248: /* Line 1806 of yacc.c */ #line 1248 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 249: /* Line 1806 of yacc.c */ #line 1249 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 250: /* Line 1806 of yacc.c */ #line 1250 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 251: /* Line 1806 of yacc.c */ #line 1251 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 252: /* Line 1806 of yacc.c */ #line 1256 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 253: /* Line 1806 of yacc.c */ #line 1257 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 254: /* Line 1806 of yacc.c */ #line 1258 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 255: /* Line 1806 of yacc.c */ #line 1261 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 256: /* Line 1806 of yacc.c */ #line 1267 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 257: /* Line 1806 of yacc.c */ #line 1271 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str)=SPACED((yyvsp[(1) - (6)].str),SPACED((yyvsp[(2) - (6)].str),(yyvsp[(3) - (6)].str))); } break; case 258: /* Line 1806 of yacc.c */ #line 1273 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str)=SPACED((yyvsp[(1) - (5)].str),(yyvsp[(2) - (5)].str)); } break; case 259: /* Line 1806 of yacc.c */ #line 1277 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=SPACED((yyvsp[(1) - (3)].str),SPACED((yyvsp[(2) - (3)].str),(yyvsp[(3) - (3)].str))); } break; case 260: /* Line 1806 of yacc.c */ #line 1278 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=SPACED((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); } break; case 261: /* Line 1806 of yacc.c */ #line 1279 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 262: /* Line 1806 of yacc.c */ #line 1280 "VParseBison.y" { PARSEP->symPushNewAnon(VAstType::STRUCT); } break; case 263: /* Line 1806 of yacc.c */ #line 1282 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (7)].fl); (yyval.str)=(yyvsp[(1) - (7)].str); PARSEP->symPopScope(VAstType::STRUCT); } break; case 264: /* Line 1806 of yacc.c */ #line 1283 "VParseBison.y" { PARSEP->symPushNewAnon(VAstType::UNION); } break; case 265: /* Line 1806 of yacc.c */ #line 1285 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str)=(yyvsp[(1) - (8)].str); PARSEP->symPopScope(VAstType::UNION); } break; case 266: /* Line 1806 of yacc.c */ #line 1286 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 267: /* Line 1806 of yacc.c */ #line 1287 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 268: /* Line 1806 of yacc.c */ #line 1288 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 269: /* Line 1806 of yacc.c */ #line 1295 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)=SPACED((yyvsp[(1) - (4)].str),SPACED((yyvsp[(2) - (4)].str),(yyvsp[(3) - (4)].str))); } break; case 270: /* Line 1806 of yacc.c */ #line 1297 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=SPACED((yyvsp[(1) - (3)].str),(yyvsp[(2) - (3)].str)); } break; case 271: /* Line 1806 of yacc.c */ #line 1303 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 272: /* Line 1806 of yacc.c */ #line 1304 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 273: /* Line 1806 of yacc.c */ #line 1313 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 274: /* Line 1806 of yacc.c */ #line 1319 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 275: /* Line 1806 of yacc.c */ #line 1320 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 276: /* Line 1806 of yacc.c */ #line 1324 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 277: /* Line 1806 of yacc.c */ #line 1325 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str); } break; case 278: /* Line 1806 of yacc.c */ #line 1326 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str); } break; case 279: /* Line 1806 of yacc.c */ #line 1330 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)="type("+(yyvsp[(3) - (4)].str)+")"; } break; case 280: /* Line 1806 of yacc.c */ #line 1334 "VParseBison.y" { } break; case 281: /* Line 1806 of yacc.c */ #line 1335 "VParseBison.y" { } break; case 282: /* Line 1806 of yacc.c */ #line 1339 "VParseBison.y" { VARRESET_NONLIST("member"); VARDTYPE(SPACED((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str))); } break; case 283: /* Line 1806 of yacc.c */ #line 1340 "VParseBison.y" { } break; case 284: /* Line 1806 of yacc.c */ #line 1344 "VParseBison.y" { } break; case 285: /* Line 1806 of yacc.c */ #line 1345 "VParseBison.y" { } break; case 286: /* Line 1806 of yacc.c */ #line 1350 "VParseBison.y" { VARDONE((yyvsp[(1) - (3)].fl), (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), ""); } break; case 287: /* Line 1806 of yacc.c */ #line 1352 "VParseBison.y" { VARDONE((yyvsp[(1) - (5)].fl), (yyvsp[(1) - (5)].str), (yyvsp[(2) - (5)].str), (yyvsp[(5) - (5)].str)); } break; case 288: /* Line 1806 of yacc.c */ #line 1353 "VParseBison.y" { } break; case 289: /* Line 1806 of yacc.c */ #line 1363 "VParseBison.y" { } break; case 290: /* Line 1806 of yacc.c */ #line 1367 "VParseBison.y" { } break; case 291: /* Line 1806 of yacc.c */ #line 1368 "VParseBison.y" { } break; case 292: /* Line 1806 of yacc.c */ #line 1373 "VParseBison.y" { VARDONE((yyvsp[(1) - (3)].fl), (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), ""); } break; case 293: /* Line 1806 of yacc.c */ #line 1375 "VParseBison.y" { VARDONE((yyvsp[(1) - (5)].fl), (yyvsp[(1) - (5)].str), (yyvsp[(2) - (5)].str), (yyvsp[(5) - (5)].str)); } break; case 294: /* Line 1806 of yacc.c */ #line 1379 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 295: /* Line 1806 of yacc.c */ #line 1380 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 296: /* Line 1806 of yacc.c */ #line 1381 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 297: /* Line 1806 of yacc.c */ #line 1385 "VParseBison.y" { (yyval.str)=""; } break; case 298: /* Line 1806 of yacc.c */ #line 1386 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 299: /* Line 1806 of yacc.c */ #line 1390 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 300: /* Line 1806 of yacc.c */ #line 1391 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 301: /* Line 1806 of yacc.c */ #line 1396 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=""; } break; case 302: /* Line 1806 of yacc.c */ #line 1398 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 303: /* Line 1806 of yacc.c */ #line 1399 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)="["+(yyvsp[(2) - (3)].str)+"]"; } break; case 304: /* Line 1806 of yacc.c */ #line 1401 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)="["+(yyvsp[(2) - (3)].str)+"]"; } break; case 305: /* Line 1806 of yacc.c */ #line 1402 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)="[*]"; } break; case 306: /* Line 1806 of yacc.c */ #line 1403 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)="[*]"; } break; case 307: /* Line 1806 of yacc.c */ #line 1410 "VParseBison.y" { (yyval.str)=""; } break; case 308: /* Line 1806 of yacc.c */ #line 1411 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 309: /* Line 1806 of yacc.c */ #line 1415 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 310: /* Line 1806 of yacc.c */ #line 1416 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 311: /* Line 1806 of yacc.c */ #line 1420 "VParseBison.y" { } break; case 312: /* Line 1806 of yacc.c */ #line 1421 "VParseBison.y" { } break; case 313: /* Line 1806 of yacc.c */ #line 1425 "VParseBison.y" { } break; case 314: /* Line 1806 of yacc.c */ #line 1426 "VParseBison.y" { } break; case 315: /* Line 1806 of yacc.c */ #line 1434 "VParseBison.y" { (yyval.str)=(yyvsp[(2) - (6)].str); } break; case 316: /* Line 1806 of yacc.c */ #line 1438 "VParseBison.y" { (yyval.str)="enum"; } break; case 317: /* Line 1806 of yacc.c */ #line 1441 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 318: /* Line 1806 of yacc.c */ #line 1442 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 319: /* Line 1806 of yacc.c */ #line 1444 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str); } break; case 320: /* Line 1806 of yacc.c */ #line 1445 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str); } break; case 321: /* Line 1806 of yacc.c */ #line 1448 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str); } break; case 322: /* Line 1806 of yacc.c */ #line 1452 "VParseBison.y" { } break; case 323: /* Line 1806 of yacc.c */ #line 1453 "VParseBison.y" { } break; case 324: /* Line 1806 of yacc.c */ #line 1457 "VParseBison.y" { } break; case 325: /* Line 1806 of yacc.c */ #line 1461 "VParseBison.y" { } break; case 326: /* Line 1806 of yacc.c */ #line 1462 "VParseBison.y" { } break; case 327: /* Line 1806 of yacc.c */ #line 1463 "VParseBison.y" { } break; case 328: /* Line 1806 of yacc.c */ #line 1467 "VParseBison.y" { } break; case 329: /* Line 1806 of yacc.c */ #line 1468 "VParseBison.y" { } break; case 330: /* Line 1806 of yacc.c */ #line 1472 "VParseBison.y" { } break; case 331: /* Line 1806 of yacc.c */ #line 1480 "VParseBison.y" { } break; case 332: /* Line 1806 of yacc.c */ #line 1481 "VParseBison.y" { } break; case 333: /* Line 1806 of yacc.c */ #line 1482 "VParseBison.y" { } break; case 334: /* Line 1806 of yacc.c */ #line 1488 "VParseBison.y" { } break; case 335: /* Line 1806 of yacc.c */ #line 1492 "VParseBison.y" { } break; case 336: /* Line 1806 of yacc.c */ #line 1493 "VParseBison.y" { } break; case 337: /* Line 1806 of yacc.c */ #line 1494 "VParseBison.y" { } break; case 338: /* Line 1806 of yacc.c */ #line 1502 "VParseBison.y" { } break; case 339: /* Line 1806 of yacc.c */ #line 1507 "VParseBison.y" { } break; case 340: /* Line 1806 of yacc.c */ #line 1512 "VParseBison.y" { VARRESET(); VARDECL("var"); VARDTYPE(SPACED((yyvsp[(1) - (4)].str),(yyvsp[(4) - (4)].str))); } break; case 341: /* Line 1806 of yacc.c */ #line 1513 "VParseBison.y" { VARRESET(); VARDECL("var"); VARDTYPE((yyvsp[(1) - (3)].str)); } break; case 342: /* Line 1806 of yacc.c */ #line 1514 "VParseBison.y" { VARRESET(); VARDECL("var"); VARDTYPE(SPACED((yyvsp[(1) - (5)].str),SPACED((yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str)))); } break; case 343: /* Line 1806 of yacc.c */ #line 1517 "VParseBison.y" { VARRESET(); VARDECL("var"); VARDTYPE((yyvsp[(1) - (1)].str)); } break; case 344: /* Line 1806 of yacc.c */ #line 1518 "VParseBison.y" { VARRESET(); VARDECL("var"); VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 345: /* Line 1806 of yacc.c */ #line 1519 "VParseBison.y" { VARRESET(); VARDECL("var"); VARDTYPE(SPACED((yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str))); } break; case 346: /* Line 1806 of yacc.c */ #line 1530 "VParseBison.y" { VARDECL("var"); VARDTYPE(SPACED(GRAMMARP->m_varDType,(yyvsp[(3) - (3)].str))); } break; case 347: /* Line 1806 of yacc.c */ #line 1531 "VParseBison.y" { VARDECL("var"); VARDTYPE(GRAMMARP->m_varDType); } break; case 348: /* Line 1806 of yacc.c */ #line 1532 "VParseBison.y" { VARDECL("var"); VARDTYPE(SPACED(GRAMMARP->m_varDType,SPACED((yyvsp[(3) - (4)].str),(yyvsp[(4) - (4)].str)))); } break; case 349: /* Line 1806 of yacc.c */ #line 1535 "VParseBison.y" { VARDECL("var"); VARDTYPE(SPACED(GRAMMARP->m_varDType,(yyvsp[(1) - (1)].str))); } break; case 350: /* Line 1806 of yacc.c */ #line 1542 "VParseBison.y" { } break; case 351: /* Line 1806 of yacc.c */ #line 1544 "VParseBison.y" { } break; case 352: /* Line 1806 of yacc.c */ #line 1545 "VParseBison.y" { } break; case 353: /* Line 1806 of yacc.c */ #line 1549 "VParseBison.y" { (yyval.str) = ""; } break; case 354: /* Line 1806 of yacc.c */ #line 1550 "VParseBison.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 355: /* Line 1806 of yacc.c */ #line 1555 "VParseBison.y" { (yyval.str) = ""; } break; case 356: /* Line 1806 of yacc.c */ #line 1556 "VParseBison.y" { (yyval.str) = SPACED((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); } break; case 357: /* Line 1806 of yacc.c */ #line 1557 "VParseBison.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 358: /* Line 1806 of yacc.c */ #line 1562 "VParseBison.y" { } break; case 359: /* Line 1806 of yacc.c */ #line 1568 "VParseBison.y" { VARDONETYPEDEF((yyvsp[(1) - (5)].fl),(yyvsp[(3) - (5)].str),(yyvsp[(2) - (5)].str),(yyvsp[(4) - (5)].str)); } break; case 360: /* Line 1806 of yacc.c */ #line 1570 "VParseBison.y" { VARDONETYPEDEF((yyvsp[(1) - (7)].fl),(yyvsp[(6) - (7)].str),(yyvsp[(2) - (7)].str)+(yyvsp[(3) - (7)].str)+"."+(yyvsp[(5) - (7)].str),""); } break; case 361: /* Line 1806 of yacc.c */ #line 1572 "VParseBison.y" { VARDONETYPEDEF((yyvsp[(1) - (3)].fl),(yyvsp[(2) - (3)].str),"",""); } break; case 362: /* Line 1806 of yacc.c */ #line 1573 "VParseBison.y" { PARSEP->syms().replaceInsert(VAstType::ENUM, (yyvsp[(3) - (4)].str)); } break; case 363: /* Line 1806 of yacc.c */ #line 1574 "VParseBison.y" { PARSEP->syms().replaceInsert(VAstType::STRUCT, (yyvsp[(3) - (4)].str)); } break; case 364: /* Line 1806 of yacc.c */ #line 1575 "VParseBison.y" { PARSEP->syms().replaceInsert(VAstType::UNION, (yyvsp[(3) - (4)].str)); } break; case 365: /* Line 1806 of yacc.c */ #line 1576 "VParseBison.y" { PARSEP->syms().replaceInsert(VAstType::CLASS, (yyvsp[(3) - (4)].str)); } break; case 366: /* Line 1806 of yacc.c */ #line 1577 "VParseBison.y" { PARSEP->syms().replaceInsert(VAstType::CLASS, (yyvsp[(3) - (5)].str)); } break; case 367: /* Line 1806 of yacc.c */ #line 1584 "VParseBison.y" { } break; case 368: /* Line 1806 of yacc.c */ #line 1585 "VParseBison.y" { } break; case 369: /* Line 1806 of yacc.c */ #line 1589 "VParseBison.y" { } break; case 370: /* Line 1806 of yacc.c */ #line 1590 "VParseBison.y" { } break; case 371: /* Line 1806 of yacc.c */ #line 1594 "VParseBison.y" { } break; case 372: /* Line 1806 of yacc.c */ #line 1595 "VParseBison.y" { } break; case 373: /* Line 1806 of yacc.c */ #line 1599 "VParseBison.y" { } break; case 374: /* Line 1806 of yacc.c */ #line 1600 "VParseBison.y" { } break; case 375: /* Line 1806 of yacc.c */ #line 1601 "VParseBison.y" { } break; case 376: /* Line 1806 of yacc.c */ #line 1602 "VParseBison.y" { } break; case 377: /* Line 1806 of yacc.c */ #line 1603 "VParseBison.y" { } break; case 378: /* Line 1806 of yacc.c */ #line 1604 "VParseBison.y" { } break; case 379: /* Line 1806 of yacc.c */ #line 1605 "VParseBison.y" { } break; case 380: /* Line 1806 of yacc.c */ #line 1606 "VParseBison.y" { } break; case 381: /* Line 1806 of yacc.c */ #line 1611 "VParseBison.y" { } break; case 382: /* Line 1806 of yacc.c */ #line 1615 "VParseBison.y" { } break; case 383: /* Line 1806 of yacc.c */ #line 1617 "VParseBison.y" { } break; case 384: /* Line 1806 of yacc.c */ #line 1621 "VParseBison.y" { } break; case 385: /* Line 1806 of yacc.c */ #line 1625 "VParseBison.y" { } break; case 386: /* Line 1806 of yacc.c */ #line 1626 "VParseBison.y" { } break; case 387: /* Line 1806 of yacc.c */ #line 1627 "VParseBison.y" { } break; case 388: /* Line 1806 of yacc.c */ #line 1628 "VParseBison.y" { } break; case 389: /* Line 1806 of yacc.c */ #line 1630 "VParseBison.y" { } break; case 390: /* Line 1806 of yacc.c */ #line 1631 "VParseBison.y" { } break; case 391: /* Line 1806 of yacc.c */ #line 1632 "VParseBison.y" { } break; case 392: /* Line 1806 of yacc.c */ #line 1634 "VParseBison.y" { } break; case 393: /* Line 1806 of yacc.c */ #line 1635 "VParseBison.y" { } break; case 394: /* Line 1806 of yacc.c */ #line 1636 "VParseBison.y" { } break; case 395: /* Line 1806 of yacc.c */ #line 1637 "VParseBison.y" { } break; case 396: /* Line 1806 of yacc.c */ #line 1639 "VParseBison.y" { } break; case 397: /* Line 1806 of yacc.c */ #line 1643 "VParseBison.y" { } break; case 398: /* Line 1806 of yacc.c */ #line 1647 "VParseBison.y" { } break; case 399: /* Line 1806 of yacc.c */ #line 1651 "VParseBison.y" { } break; case 400: /* Line 1806 of yacc.c */ #line 1655 "VParseBison.y" { } break; case 401: /* Line 1806 of yacc.c */ #line 1656 "VParseBison.y" { } break; case 402: /* Line 1806 of yacc.c */ #line 1657 "VParseBison.y" { } break; case 403: /* Line 1806 of yacc.c */ #line 1658 "VParseBison.y" { } break; case 404: /* Line 1806 of yacc.c */ #line 1659 "VParseBison.y" { } break; case 405: /* Line 1806 of yacc.c */ #line 1663 "VParseBison.y" { } break; case 406: /* Line 1806 of yacc.c */ #line 1664 "VParseBison.y" { } break; case 407: /* Line 1806 of yacc.c */ #line 1670 "VParseBison.y" { } break; case 408: /* Line 1806 of yacc.c */ #line 1671 "VParseBison.y" { } break; case 409: /* Line 1806 of yacc.c */ #line 1675 "VParseBison.y" { } break; case 410: /* Line 1806 of yacc.c */ #line 1676 "VParseBison.y" { } break; case 411: /* Line 1806 of yacc.c */ #line 1680 "VParseBison.y" { } break; case 412: /* Line 1806 of yacc.c */ #line 1687 "VParseBison.y" { } break; case 413: /* Line 1806 of yacc.c */ #line 1699 "VParseBison.y" { } break; case 414: /* Line 1806 of yacc.c */ #line 1700 "VParseBison.y" { } break; case 415: /* Line 1806 of yacc.c */ #line 1704 "VParseBison.y" { } break; case 416: /* Line 1806 of yacc.c */ #line 1704 "VParseBison.y" { } break; case 417: /* Line 1806 of yacc.c */ #line 1709 "VParseBison.y" { } break; case 418: /* Line 1806 of yacc.c */ #line 1710 "VParseBison.y" { } break; case 419: /* Line 1806 of yacc.c */ #line 1714 "VParseBison.y" { } break; case 420: /* Line 1806 of yacc.c */ #line 1714 "VParseBison.y" { } break; case 421: /* Line 1806 of yacc.c */ #line 1718 "VParseBison.y" { } break; case 422: /* Line 1806 of yacc.c */ #line 1719 "VParseBison.y" { } break; case 423: /* Line 1806 of yacc.c */ #line 1720 "VParseBison.y" { } break; case 424: /* Line 1806 of yacc.c */ #line 1721 "VParseBison.y" { } break; case 425: /* Line 1806 of yacc.c */ #line 1722 "VParseBison.y" { } break; case 426: /* Line 1806 of yacc.c */ #line 1723 "VParseBison.y" { } break; case 427: /* Line 1806 of yacc.c */ #line 1727 "VParseBison.y" { } break; case 428: /* Line 1806 of yacc.c */ #line 1727 "VParseBison.y" { } break; case 429: /* Line 1806 of yacc.c */ #line 1727 "VParseBison.y" { } break; case 430: /* Line 1806 of yacc.c */ #line 1727 "VParseBison.y" { } break; case 431: /* Line 1806 of yacc.c */ #line 1727 "VParseBison.y" { } break; case 432: /* Line 1806 of yacc.c */ #line 1727 "VParseBison.y" { } break; case 433: /* Line 1806 of yacc.c */ #line 1731 "VParseBison.y" { } break; case 434: /* Line 1806 of yacc.c */ #line 1732 "VParseBison.y" { } break; case 435: /* Line 1806 of yacc.c */ #line 1736 "VParseBison.y" { } break; case 436: /* Line 1806 of yacc.c */ #line 1736 "VParseBison.y" { } break; case 437: /* Line 1806 of yacc.c */ #line 1740 "VParseBison.y" { } break; case 438: /* Line 1806 of yacc.c */ #line 1741 "VParseBison.y" { } break; case 439: /* Line 1806 of yacc.c */ #line 1745 "VParseBison.y" { } break; case 440: /* Line 1806 of yacc.c */ #line 1745 "VParseBison.y" { } break; case 441: /* Line 1806 of yacc.c */ #line 1750 "VParseBison.y" { } break; case 442: /* Line 1806 of yacc.c */ #line 1752 "VParseBison.y" { } break; case 443: /* Line 1806 of yacc.c */ #line 1759 "VParseBison.y" { } break; case 444: /* Line 1806 of yacc.c */ #line 1764 "VParseBison.y" { } break; case 445: /* Line 1806 of yacc.c */ #line 1765 "VParseBison.y" { } break; case 446: /* Line 1806 of yacc.c */ #line 1767 "VParseBison.y" { } break; case 447: /* Line 1806 of yacc.c */ #line 1768 "VParseBison.y" { } break; case 448: /* Line 1806 of yacc.c */ #line 1772 "VParseBison.y" { } break; case 449: /* Line 1806 of yacc.c */ #line 1772 "VParseBison.y" { } break; case 450: /* Line 1806 of yacc.c */ #line 1772 "VParseBison.y" { } break; case 451: /* Line 1806 of yacc.c */ #line 1772 "VParseBison.y" { } break; case 452: /* Line 1806 of yacc.c */ #line 1777 "VParseBison.y" { } break; case 453: /* Line 1806 of yacc.c */ #line 1781 "VParseBison.y" { } break; case 454: /* Line 1806 of yacc.c */ #line 1785 "VParseBison.y" { } break; case 455: /* Line 1806 of yacc.c */ #line 1786 "VParseBison.y" { } break; case 457: /* Line 1806 of yacc.c */ #line 1791 "VParseBison.y" { } break; case 458: /* Line 1806 of yacc.c */ #line 1792 "VParseBison.y" { } break; case 459: /* Line 1806 of yacc.c */ #line 1793 "VParseBison.y" { } break; case 460: /* Line 1806 of yacc.c */ #line 1794 "VParseBison.y" { } break; case 461: /* Line 1806 of yacc.c */ #line 1795 "VParseBison.y" { } break; case 462: /* Line 1806 of yacc.c */ #line 1796 "VParseBison.y" { } break; case 463: /* Line 1806 of yacc.c */ #line 1797 "VParseBison.y" { } break; case 464: /* Line 1806 of yacc.c */ #line 1798 "VParseBison.y" { } break; case 465: /* Line 1806 of yacc.c */ #line 1799 "VParseBison.y" { } break; case 466: /* Line 1806 of yacc.c */ #line 1800 "VParseBison.y" { } break; case 467: /* Line 1806 of yacc.c */ #line 1801 "VParseBison.y" { } break; case 468: /* Line 1806 of yacc.c */ #line 1802 "VParseBison.y" { } break; case 469: /* Line 1806 of yacc.c */ #line 1804 "VParseBison.y" { } break; case 470: /* Line 1806 of yacc.c */ #line 1805 "VParseBison.y" { } break; case 471: /* Line 1806 of yacc.c */ #line 1806 "VParseBison.y" { } break; case 472: /* Line 1806 of yacc.c */ #line 1807 "VParseBison.y" { } break; case 473: /* Line 1806 of yacc.c */ #line 1811 "VParseBison.y" { } break; case 474: /* Line 1806 of yacc.c */ #line 1812 "VParseBison.y" { } break; case 475: /* Line 1806 of yacc.c */ #line 1816 "VParseBison.y" { } break; case 476: /* Line 1806 of yacc.c */ #line 1816 "VParseBison.y" { } break; case 477: /* Line 1806 of yacc.c */ #line 1820 "VParseBison.y" { } break; case 478: /* Line 1806 of yacc.c */ #line 1821 "VParseBison.y" { } break; case 479: /* Line 1806 of yacc.c */ #line 1822 "VParseBison.y" { } break; case 480: /* Line 1806 of yacc.c */ #line 1826 "VParseBison.y" { } break; case 481: /* Line 1806 of yacc.c */ #line 1826 "VParseBison.y" { } break; case 482: /* Line 1806 of yacc.c */ #line 1826 "VParseBison.y" { } break; case 483: /* Line 1806 of yacc.c */ #line 1833 "VParseBison.y" { } break; case 484: /* Line 1806 of yacc.c */ #line 1834 "VParseBison.y" { } break; case 485: /* Line 1806 of yacc.c */ #line 1838 "VParseBison.y" { PARSEP->contassignCb((yyvsp[(2) - (3)].fl),"assign",(yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str)); } break; case 486: /* Line 1806 of yacc.c */ #line 1842 "VParseBison.y" { } break; case 487: /* Line 1806 of yacc.c */ #line 1843 "VParseBison.y" { } break; case 488: /* Line 1806 of yacc.c */ #line 1844 "VParseBison.y" { } break; case 489: /* Line 1806 of yacc.c */ #line 1845 "VParseBison.y" { } break; case 490: /* Line 1806 of yacc.c */ #line 1849 "VParseBison.y" { } break; case 491: /* Line 1806 of yacc.c */ #line 1850 "VParseBison.y" { } break; case 492: /* Line 1806 of yacc.c */ #line 1854 "VParseBison.y" { } break; case 493: /* Line 1806 of yacc.c */ #line 1855 "VParseBison.y" { } break; case 494: /* Line 1806 of yacc.c */ #line 1856 "VParseBison.y" { } break; case 495: /* Line 1806 of yacc.c */ #line 1857 "VParseBison.y" { } break; case 496: /* Line 1806 of yacc.c */ #line 1862 "VParseBison.y" { } break; case 497: /* Line 1806 of yacc.c */ #line 1863 "VParseBison.y" { } break; case 498: /* Line 1806 of yacc.c */ #line 1864 "VParseBison.y" { } break; case 499: /* Line 1806 of yacc.c */ #line 1865 "VParseBison.y" { } break; case 500: /* Line 1806 of yacc.c */ #line 1869 "VParseBison.y" { } break; case 501: /* Line 1806 of yacc.c */ #line 1873 "VParseBison.y" { } break; case 502: /* Line 1806 of yacc.c */ #line 1874 "VParseBison.y" { } break; case 503: /* Line 1806 of yacc.c */ #line 1878 "VParseBison.y" { } break; case 504: /* Line 1806 of yacc.c */ #line 1879 "VParseBison.y" { } break; case 505: /* Line 1806 of yacc.c */ #line 1883 "VParseBison.y" { VARDONE((yyvsp[(1) - (2)].fl), (yyvsp[(1) - (2)].str), "", ""); } break; case 506: /* Line 1806 of yacc.c */ #line 1884 "VParseBison.y" { VARDONE((yyvsp[(1) - (4)].fl), (yyvsp[(1) - (4)].str), "", (yyvsp[(4) - (4)].str)); } break; case 507: /* Line 1806 of yacc.c */ #line 1885 "VParseBison.y" { VARDONE((yyvsp[(1) - (3)].fl), (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), ""); } break; case 508: /* Line 1806 of yacc.c */ #line 1889 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 509: /* Line 1806 of yacc.c */ #line 1890 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 510: /* Line 1806 of yacc.c */ #line 1894 "VParseBison.y" { } break; case 511: /* Line 1806 of yacc.c */ #line 1898 "VParseBison.y" { (yyval.str)=""; } break; case 512: /* Line 1806 of yacc.c */ #line 1899 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 513: /* Line 1806 of yacc.c */ #line 1903 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 514: /* Line 1806 of yacc.c */ #line 1904 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 515: /* Line 1806 of yacc.c */ #line 1908 "VParseBison.y" { (yyval.str)=""; } break; case 516: /* Line 1806 of yacc.c */ #line 1909 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 517: /* Line 1806 of yacc.c */ #line 1913 "VParseBison.y" { (yyval.str) = ""; } break; case 518: /* Line 1806 of yacc.c */ #line 1914 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "["+(yyvsp[(2) - (3)].str)+"]"; } break; case 519: /* Line 1806 of yacc.c */ #line 1921 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "["+(yyvsp[(2) - (5)].str)+":"+(yyvsp[(4) - (5)].str)+"]"; } break; case 520: /* Line 1806 of yacc.c */ #line 1925 "VParseBison.y" { (yyval.str)=""; } break; case 521: /* Line 1806 of yacc.c */ #line 1926 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 522: /* Line 1806 of yacc.c */ #line 1930 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 523: /* Line 1806 of yacc.c */ #line 1931 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 524: /* Line 1806 of yacc.c */ #line 1935 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 525: /* Line 1806 of yacc.c */ #line 1936 "VParseBison.y" { (yyval.str)="[]"; } break; case 526: /* Line 1806 of yacc.c */ #line 1946 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); VARDONE((yyvsp[(1) - (5)].fl), (yyvsp[(1) - (5)].str), (yyvsp[(2) - (5)].str), (yyvsp[(5) - (5)].str)); } break; case 527: /* Line 1806 of yacc.c */ #line 1949 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); VARDONE((yyvsp[(1) - (3)].fl), (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), ""); NEED_S09((yyvsp[(1) - (3)].fl),"optional parameter defaults"); } break; case 528: /* Line 1806 of yacc.c */ #line 1953 "VParseBison.y" { } break; case 529: /* Line 1806 of yacc.c */ #line 1954 "VParseBison.y" { } break; case 530: /* Line 1806 of yacc.c */ #line 1958 "VParseBison.y" { } break; case 531: /* Line 1806 of yacc.c */ #line 1959 "VParseBison.y" { } break; case 532: /* Line 1806 of yacc.c */ #line 1963 "VParseBison.y" { PARSEP->defparamCb((yyvsp[(2) - (3)].fl),"defparam",(yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str)); } break; case 533: /* Line 1806 of yacc.c */ #line 1976 "VParseBison.y" {INSTPREP((yyvsp[(1) - (1)].str),1);} break; case 534: /* Line 1806 of yacc.c */ #line 1976 "VParseBison.y" {INSTPREP((yyvsp[(1) - (4)].str),0);} break; case 535: /* Line 1806 of yacc.c */ #line 1977 "VParseBison.y" { } break; case 536: /* Line 1806 of yacc.c */ #line 1979 "VParseBison.y" {INSTPREP((yyvsp[(1) - (1)].str),1);} break; case 537: /* Line 1806 of yacc.c */ #line 1979 "VParseBison.y" {INSTPREP((yyvsp[(1) - (4)].str),0);} break; case 538: /* Line 1806 of yacc.c */ #line 1979 "VParseBison.y" { } break; case 539: /* Line 1806 of yacc.c */ #line 1983 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 540: /* Line 1806 of yacc.c */ #line 1988 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 541: /* Line 1806 of yacc.c */ #line 1992 "VParseBison.y" { } break; case 542: /* Line 1806 of yacc.c */ #line 1993 "VParseBison.y" { } break; case 543: /* Line 1806 of yacc.c */ #line 1997 "VParseBison.y" { PARSEP->endcellCb((yyvsp[(1) - (1)].fl),""); } break; case 544: /* Line 1806 of yacc.c */ #line 2002 "VParseBison.y" { PARSEP->instantCb((yyvsp[(1) - (2)].fl), GRAMMARP->m_cellMod, (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)); PINPARAMS(); } break; case 545: /* Line 1806 of yacc.c */ #line 2006 "VParseBison.y" { } break; case 546: /* Line 1806 of yacc.c */ #line 2007 "VParseBison.y" { } break; case 547: /* Line 1806 of yacc.c */ #line 2011 "VParseBison.y" { PARSEP->endcellCb((yyvsp[(3) - (3)].fl),""); } break; case 548: /* Line 1806 of yacc.c */ #line 2019 "VParseBison.y" { PARSEP->instantCb((yyvsp[(1) - (3)].fl), GRAMMARP->m_cellMod, (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str)); PINPARAMS(); } break; case 549: /* Line 1806 of yacc.c */ #line 2020 "VParseBison.y" { PARSEP->instantCb((yyvsp[(2) - (2)].fl), GRAMMARP->m_cellMod, "", (yyvsp[(1) - (2)].str)); PINPARAMS(); } break; case 550: /* Line 1806 of yacc.c */ #line 2024 "VParseBison.y" { (yyval.str) = ""; } break; case 551: /* Line 1806 of yacc.c */ #line 2025 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "["+(yyvsp[(2) - (3)].str)+"]"; } break; case 552: /* Line 1806 of yacc.c */ #line 2026 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "["+(yyvsp[(2) - (5)].str)+":"+(yyvsp[(4) - (5)].str)+"]"; } break; case 553: /* Line 1806 of yacc.c */ #line 2030 "VParseBison.y" { VARRESET_LIST(""); } break; case 554: /* Line 1806 of yacc.c */ #line 2030 "VParseBison.y" { VARRESET_NONLIST(""); } break; case 555: /* Line 1806 of yacc.c */ #line 2034 "VParseBison.y" { } break; case 556: /* Line 1806 of yacc.c */ #line 2035 "VParseBison.y" { } break; case 557: /* Line 1806 of yacc.c */ #line 2039 "VParseBison.y" { PINNUMINC(); } break; case 558: /* Line 1806 of yacc.c */ #line 2040 "VParseBison.y" { PINDONE((yyvsp[(1) - (1)].fl),"*","*");PINNUMINC(); } break; case 559: /* Line 1806 of yacc.c */ #line 2041 "VParseBison.y" { PINDONE((yyvsp[(1) - (2)].fl),(yyvsp[(2) - (2)].str),(yyvsp[(2) - (2)].str)); PINNUMINC(); } break; case 560: /* Line 1806 of yacc.c */ #line 2042 "VParseBison.y" { PINDONE((yyvsp[(1) - (2)].fl),(yyvsp[(2) - (2)].str),(yyvsp[(2) - (2)].str)); PINNUMINC(); } break; case 561: /* Line 1806 of yacc.c */ #line 2043 "VParseBison.y" { PINDONE((yyvsp[(1) - (4)].fl),(yyvsp[(2) - (4)].str),""); PINNUMINC(); } break; case 562: /* Line 1806 of yacc.c */ #line 2046 "VParseBison.y" { PINDONE((yyvsp[(1) - (5)].fl),(yyvsp[(2) - (5)].str),(yyvsp[(4) - (5)].str)); PINNUMINC(); } break; case 563: /* Line 1806 of yacc.c */ #line 2047 "VParseBison.y" { PINDONE((yyvsp[(1) - (7)].fl),(yyvsp[(2) - (7)].str),(yyvsp[(4) - (7)].str)); PINNUMINC(); } break; case 564: /* Line 1806 of yacc.c */ #line 2048 "VParseBison.y" { PINDONE((yyvsp[(1) - (9)].fl),(yyvsp[(2) - (9)].str),(yyvsp[(4) - (9)].str)); PINNUMINC(); } break; case 565: /* Line 1806 of yacc.c */ #line 2050 "VParseBison.y" { PINDONE((yyvsp[(1) - (5)].fl),(yyvsp[(2) - (5)].str),(yyvsp[(4) - (5)].str)); PINNUMINC(); } break; case 566: /* Line 1806 of yacc.c */ #line 2052 "VParseBison.y" { PINDONE((yyvsp[(1) - (1)].fl),"",(yyvsp[(1) - (1)].str)); PINNUMINC(); } break; case 567: /* Line 1806 of yacc.c */ #line 2054 "VParseBison.y" { PINDONE((yyvsp[(1) - (1)].fl),"",(yyvsp[(1) - (1)].str)); PINNUMINC(); } break; case 568: /* Line 1806 of yacc.c */ #line 2055 "VParseBison.y" { PINDONE((yyvsp[(1) - (3)].fl),"",(yyvsp[(1) - (3)].str)); PINNUMINC(); } break; case 569: /* Line 1806 of yacc.c */ #line 2056 "VParseBison.y" { PINDONE((yyvsp[(1) - (5)].fl),"",(yyvsp[(1) - (5)].str)); PINNUMINC(); } break; case 570: /* Line 1806 of yacc.c */ #line 2063 "VParseBison.y" { } break; case 571: /* Line 1806 of yacc.c */ #line 2064 "VParseBison.y" { } break; case 572: /* Line 1806 of yacc.c */ #line 2065 "VParseBison.y" { } break; case 573: /* Line 1806 of yacc.c */ #line 2067 "VParseBison.y" { } break; case 574: /* Line 1806 of yacc.c */ #line 2080 "VParseBison.y" { } break; case 575: /* Line 1806 of yacc.c */ #line 2081 "VParseBison.y" { } break; case 576: /* Line 1806 of yacc.c */ #line 2086 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+" "+(yyvsp[(2) - (2)].str); } break; case 577: /* Line 1806 of yacc.c */ #line 2087 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)=(yyvsp[(1) - (4)].str)+" "+(yyvsp[(2) - (4)].str)+" iff "+(yyvsp[(4) - (4)].str); } break; case 578: /* Line 1806 of yacc.c */ #line 2088 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+" "+(yyvsp[(2) - (2)].str); } break; case 579: /* Line 1806 of yacc.c */ #line 2089 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)=(yyvsp[(1) - (4)].str)+" "+(yyvsp[(2) - (4)].str)+" iff "+(yyvsp[(4) - (4)].str); } break; case 580: /* Line 1806 of yacc.c */ #line 2090 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+" "+(yyvsp[(2) - (2)].str); NEED_S09((yyvsp[(1) - (2)].fl),"edge"); } break; case 581: /* Line 1806 of yacc.c */ #line 2091 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)=(yyvsp[(1) - (4)].str)+" "+(yyvsp[(2) - (4)].str)+" iff "+(yyvsp[(4) - (4)].str); NEED_S09((yyvsp[(1) - (4)].fl),"edge"); } break; case 582: /* Line 1806 of yacc.c */ #line 2098 "VParseBison.y" { } break; case 583: /* Line 1806 of yacc.c */ #line 2103 "VParseBison.y" { PARSEP->symPopScope(VAstType::BLOCK); } break; case 584: /* Line 1806 of yacc.c */ #line 2104 "VParseBison.y" { PARSEP->symPopScope(VAstType::BLOCK); } break; case 585: /* Line 1806 of yacc.c */ #line 2108 "VParseBison.y" { PARSEP->symPopScope(VAstType::FORK); } break; case 586: /* Line 1806 of yacc.c */ #line 2109 "VParseBison.y" { PARSEP->symPopScope(VAstType::FORK); } break; case 587: /* Line 1806 of yacc.c */ #line 2113 "VParseBison.y" { PARSEP->symPushNewAnon(VAstType::BLOCK); } break; case 588: /* Line 1806 of yacc.c */ #line 2114 "VParseBison.y" { PARSEP->symPushNew(VAstType::BLOCK,(yyvsp[(1) - (3)].str)); } break; case 589: /* Line 1806 of yacc.c */ #line 2118 "VParseBison.y" { PARSEP->symPushNewAnon(VAstType::FORK); } break; case 590: /* Line 1806 of yacc.c */ #line 2119 "VParseBison.y" { PARSEP->symPushNew(VAstType::FORK,(yyvsp[(1) - (3)].str)); } break; case 591: /* Line 1806 of yacc.c */ #line 2124 "VParseBison.y" { } break; case 592: /* Line 1806 of yacc.c */ #line 2125 "VParseBison.y" { } break; case 593: /* Line 1806 of yacc.c */ #line 2126 "VParseBison.y" { } break; case 594: /* Line 1806 of yacc.c */ #line 2130 "VParseBison.y" { } break; case 595: /* Line 1806 of yacc.c */ #line 2131 "VParseBison.y" { } break; case 596: /* Line 1806 of yacc.c */ #line 2135 "VParseBison.y" { } break; case 597: /* Line 1806 of yacc.c */ #line 2136 "VParseBison.y" { } break; case 598: /* Line 1806 of yacc.c */ #line 2137 "VParseBison.y" { } break; case 599: /* Line 1806 of yacc.c */ #line 2138 "VParseBison.y" { } break; case 600: /* Line 1806 of yacc.c */ #line 2139 "VParseBison.y" { } break; case 601: /* Line 1806 of yacc.c */ #line 2143 "VParseBison.y" { } break; case 602: /* Line 1806 of yacc.c */ #line 2144 "VParseBison.y" { } break; case 603: /* Line 1806 of yacc.c */ #line 2148 "VParseBison.y" { } break; case 604: /* Line 1806 of yacc.c */ #line 2149 "VParseBison.y" { } break; case 605: /* Line 1806 of yacc.c */ #line 2151 "VParseBison.y" { } break; case 606: /* Line 1806 of yacc.c */ #line 2156 "VParseBison.y" { } break; case 607: /* Line 1806 of yacc.c */ #line 2161 "VParseBison.y" { } break; case 608: /* Line 1806 of yacc.c */ #line 2162 "VParseBison.y" { } break; case 609: /* Line 1806 of yacc.c */ #line 2165 "VParseBison.y" { } break; case 610: /* Line 1806 of yacc.c */ #line 2168 "VParseBison.y" { } break; case 611: /* Line 1806 of yacc.c */ #line 2169 "VParseBison.y" { } break; case 612: /* Line 1806 of yacc.c */ #line 2170 "VParseBison.y" { } break; case 613: /* Line 1806 of yacc.c */ #line 2171 "VParseBison.y" { } break; case 614: /* Line 1806 of yacc.c */ #line 2174 "VParseBison.y" { } break; case 615: /* Line 1806 of yacc.c */ #line 2175 "VParseBison.y" { } break; case 616: /* Line 1806 of yacc.c */ #line 2176 "VParseBison.y" { } break; case 617: /* Line 1806 of yacc.c */ #line 2179 "VParseBison.y" { } break; case 618: /* Line 1806 of yacc.c */ #line 2180 "VParseBison.y" { } break; case 619: /* Line 1806 of yacc.c */ #line 2182 "VParseBison.y" { } break; case 620: /* Line 1806 of yacc.c */ #line 2187 "VParseBison.y" { } break; case 621: /* Line 1806 of yacc.c */ #line 2188 "VParseBison.y" { } break; case 622: /* Line 1806 of yacc.c */ #line 2191 "VParseBison.y" { } break; case 623: /* Line 1806 of yacc.c */ #line 2192 "VParseBison.y" { } break; case 624: /* Line 1806 of yacc.c */ #line 2193 "VParseBison.y" { } break; case 625: /* Line 1806 of yacc.c */ #line 2194 "VParseBison.y" { } break; case 626: /* Line 1806 of yacc.c */ #line 2199 "VParseBison.y" { } break; case 627: /* Line 1806 of yacc.c */ #line 2202 "VParseBison.y" { } break; case 628: /* Line 1806 of yacc.c */ #line 2203 "VParseBison.y" { } break; case 629: /* Line 1806 of yacc.c */ #line 2205 "VParseBison.y" { } break; case 630: /* Line 1806 of yacc.c */ #line 2206 "VParseBison.y" { } break; case 631: /* Line 1806 of yacc.c */ #line 2208 "VParseBison.y" { } break; case 632: /* Line 1806 of yacc.c */ #line 2209 "VParseBison.y" { } break; case 633: /* Line 1806 of yacc.c */ #line 2210 "VParseBison.y" { } break; case 634: /* Line 1806 of yacc.c */ #line 2213 "VParseBison.y" { } break; case 635: /* Line 1806 of yacc.c */ #line 2214 "VParseBison.y" { } break; case 636: /* Line 1806 of yacc.c */ #line 2216 "VParseBison.y" { } break; case 637: /* Line 1806 of yacc.c */ #line 2219 "VParseBison.y" { } break; case 638: /* Line 1806 of yacc.c */ #line 2220 "VParseBison.y" { } break; case 639: /* Line 1806 of yacc.c */ #line 2221 "VParseBison.y" { } break; case 640: /* Line 1806 of yacc.c */ #line 2222 "VParseBison.y" { } break; case 641: /* Line 1806 of yacc.c */ #line 2224 "VParseBison.y" { } break; case 642: /* Line 1806 of yacc.c */ #line 2226 "VParseBison.y" { } break; case 643: /* Line 1806 of yacc.c */ #line 2227 "VParseBison.y" { } break; case 644: /* Line 1806 of yacc.c */ #line 2228 "VParseBison.y" { } break; case 645: /* Line 1806 of yacc.c */ #line 2230 "VParseBison.y" { } break; case 646: /* Line 1806 of yacc.c */ #line 2233 "VParseBison.y" { } break; case 647: /* Line 1806 of yacc.c */ #line 2234 "VParseBison.y" { } break; case 648: /* Line 1806 of yacc.c */ #line 2235 "VParseBison.y" { } break; case 649: /* Line 1806 of yacc.c */ #line 2238 "VParseBison.y" { } break; case 650: /* Line 1806 of yacc.c */ #line 2243 "VParseBison.y" { } break; case 651: /* Line 1806 of yacc.c */ #line 2245 "VParseBison.y" { } break; case 652: /* Line 1806 of yacc.c */ #line 2248 "VParseBison.y" { } break; case 653: /* Line 1806 of yacc.c */ #line 2250 "VParseBison.y" { } break; case 654: /* Line 1806 of yacc.c */ #line 2252 "VParseBison.y" { } break; case 655: /* Line 1806 of yacc.c */ #line 2256 "VParseBison.y" { } break; case 656: /* Line 1806 of yacc.c */ #line 2257 "VParseBison.y" { } break; case 657: /* Line 1806 of yacc.c */ #line 2258 "VParseBison.y" { } break; case 658: /* Line 1806 of yacc.c */ #line 2259 "VParseBison.y" { } break; case 659: /* Line 1806 of yacc.c */ #line 2260 "VParseBison.y" { } break; case 660: /* Line 1806 of yacc.c */ #line 2261 "VParseBison.y" { } break; case 661: /* Line 1806 of yacc.c */ #line 2262 "VParseBison.y" { } break; case 662: /* Line 1806 of yacc.c */ #line 2263 "VParseBison.y" { } break; case 663: /* Line 1806 of yacc.c */ #line 2264 "VParseBison.y" { } break; case 664: /* Line 1806 of yacc.c */ #line 2265 "VParseBison.y" { } break; case 665: /* Line 1806 of yacc.c */ #line 2266 "VParseBison.y" { } break; case 666: /* Line 1806 of yacc.c */ #line 2267 "VParseBison.y" { } break; case 667: /* Line 1806 of yacc.c */ #line 2271 "VParseBison.y" { } break; case 668: /* Line 1806 of yacc.c */ #line 2271 "VParseBison.y" { } break; case 669: /* Line 1806 of yacc.c */ #line 2271 "VParseBison.y" { } break; case 670: /* Line 1806 of yacc.c */ #line 2271 "VParseBison.y" { } break; case 671: /* Line 1806 of yacc.c */ #line 2271 "VParseBison.y" { } break; case 672: /* Line 1806 of yacc.c */ #line 2271 "VParseBison.y" { } break; case 673: /* Line 1806 of yacc.c */ #line 2271 "VParseBison.y" { } break; case 674: /* Line 1806 of yacc.c */ #line 2271 "VParseBison.y" { } break; case 675: /* Line 1806 of yacc.c */ #line 2271 "VParseBison.y" { } break; case 676: /* Line 1806 of yacc.c */ #line 2271 "VParseBison.y" { } break; case 677: /* Line 1806 of yacc.c */ #line 2271 "VParseBison.y" { } break; case 678: /* Line 1806 of yacc.c */ #line 2271 "VParseBison.y" { } break; case 679: /* Line 1806 of yacc.c */ #line 2276 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 680: /* Line 1806 of yacc.c */ #line 2277 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 681: /* Line 1806 of yacc.c */ #line 2279 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 682: /* Line 1806 of yacc.c */ #line 2280 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 683: /* Line 1806 of yacc.c */ #line 2284 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 684: /* Line 1806 of yacc.c */ #line 2284 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 685: /* Line 1806 of yacc.c */ #line 2284 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 686: /* Line 1806 of yacc.c */ #line 2284 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 687: /* Line 1806 of yacc.c */ #line 2288 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 688: /* Line 1806 of yacc.c */ #line 2288 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 689: /* Line 1806 of yacc.c */ #line 2288 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 690: /* Line 1806 of yacc.c */ #line 2288 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 691: /* Line 1806 of yacc.c */ #line 2292 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 692: /* Line 1806 of yacc.c */ #line 2292 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 693: /* Line 1806 of yacc.c */ #line 2292 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 694: /* Line 1806 of yacc.c */ #line 2292 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 695: /* Line 1806 of yacc.c */ #line 2296 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 696: /* Line 1806 of yacc.c */ #line 2296 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 697: /* Line 1806 of yacc.c */ #line 2296 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 698: /* Line 1806 of yacc.c */ #line 2296 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 699: /* Line 1806 of yacc.c */ #line 2300 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 700: /* Line 1806 of yacc.c */ #line 2300 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 701: /* Line 1806 of yacc.c */ #line 2300 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 702: /* Line 1806 of yacc.c */ #line 2300 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 703: /* Line 1806 of yacc.c */ #line 2305 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 704: /* Line 1806 of yacc.c */ #line 2306 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+" "+(yyvsp[(2) - (2)].str); } break; case 705: /* Line 1806 of yacc.c */ #line 2308 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = (yyvsp[(1) - (4)].str)+"("+(yyvsp[(3) - (4)].str)+")"; } break; case 706: /* Line 1806 of yacc.c */ #line 2312 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)=(yyvsp[(1) - (4)].str)+"["+(yyvsp[(3) - (4)].str)+"]"; } break; case 707: /* Line 1806 of yacc.c */ #line 2313 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (7)].fl); (yyval.str)=(yyvsp[(1) - (7)].str)+"["+(yyvsp[(3) - (7)].str)+"]("+(yyvsp[(6) - (7)].str)+")"; } break; case 708: /* Line 1806 of yacc.c */ #line 2320 "VParseBison.y" { } break; case 709: /* Line 1806 of yacc.c */ #line 2321 "VParseBison.y" { } break; case 710: /* Line 1806 of yacc.c */ #line 2322 "VParseBison.y" { } break; case 711: /* Line 1806 of yacc.c */ #line 2323 "VParseBison.y" { NEED_S09((yyvsp[(1) - (1)].fl), "unique0"); } break; case 712: /* Line 1806 of yacc.c */ #line 2327 "VParseBison.y" { } break; case 713: /* Line 1806 of yacc.c */ #line 2328 "VParseBison.y" { } break; case 714: /* Line 1806 of yacc.c */ #line 2329 "VParseBison.y" { } break; case 715: /* Line 1806 of yacc.c */ #line 2333 "VParseBison.y" { } break; case 716: /* Line 1806 of yacc.c */ #line 2334 "VParseBison.y" { } break; case 717: /* Line 1806 of yacc.c */ #line 2335 "VParseBison.y" { } break; case 718: /* Line 1806 of yacc.c */ #line 2339 "VParseBison.y" { } break; case 719: /* Line 1806 of yacc.c */ #line 2344 "VParseBison.y" { } break; case 720: /* Line 1806 of yacc.c */ #line 2348 "VParseBison.y" { } break; case 721: /* Line 1806 of yacc.c */ #line 2349 "VParseBison.y" { } break; case 722: /* Line 1806 of yacc.c */ #line 2353 "VParseBison.y" { } break; case 723: /* Line 1806 of yacc.c */ #line 2354 "VParseBison.y" { } break; case 724: /* Line 1806 of yacc.c */ #line 2358 "VParseBison.y" { } break; case 725: /* Line 1806 of yacc.c */ #line 2359 "VParseBison.y" { } break; case 726: /* Line 1806 of yacc.c */ #line 2360 "VParseBison.y" { } break; case 727: /* Line 1806 of yacc.c */ #line 2361 "VParseBison.y" { } break; case 728: /* Line 1806 of yacc.c */ #line 2362 "VParseBison.y" { } break; case 729: /* Line 1806 of yacc.c */ #line 2363 "VParseBison.y" { } break; case 730: /* Line 1806 of yacc.c */ #line 2367 "VParseBison.y" { } break; case 731: /* Line 1806 of yacc.c */ #line 2368 "VParseBison.y" { } break; case 732: /* Line 1806 of yacc.c */ #line 2369 "VParseBison.y" { } break; case 733: /* Line 1806 of yacc.c */ #line 2370 "VParseBison.y" { } break; case 734: /* Line 1806 of yacc.c */ #line 2371 "VParseBison.y" { } break; case 735: /* Line 1806 of yacc.c */ #line 2372 "VParseBison.y" { } break; case 736: /* Line 1806 of yacc.c */ #line 2376 "VParseBison.y" { } break; case 737: /* Line 1806 of yacc.c */ #line 2377 "VParseBison.y" { } break; case 738: /* Line 1806 of yacc.c */ #line 2381 "VParseBison.y" { } break; case 739: /* Line 1806 of yacc.c */ #line 2385 "VParseBison.y" { } break; case 740: /* Line 1806 of yacc.c */ #line 2386 "VParseBison.y" { } break; case 741: /* Line 1806 of yacc.c */ #line 2390 "VParseBison.y" { } break; case 742: /* Line 1806 of yacc.c */ #line 2391 "VParseBison.y" { } break; case 743: /* Line 1806 of yacc.c */ #line 2395 "VParseBison.y" { } break; case 744: /* Line 1806 of yacc.c */ #line 2396 "VParseBison.y" { } break; case 745: /* Line 1806 of yacc.c */ #line 2400 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)="."+(yyvsp[(2) - (2)].str); } break; case 746: /* Line 1806 of yacc.c */ #line 2401 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=".*"; } break; case 747: /* Line 1806 of yacc.c */ #line 2404 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=" tagged "+(yyvsp[(2) - (3)].str)+" "+(yyvsp[(3) - (3)].str); } break; case 748: /* Line 1806 of yacc.c */ #line 2409 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 749: /* Line 1806 of yacc.c */ #line 2410 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 750: /* Line 1806 of yacc.c */ #line 2414 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 751: /* Line 1806 of yacc.c */ #line 2415 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)=(yyvsp[(1) - (4)].str); } break; case 752: /* Line 1806 of yacc.c */ #line 2416 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 753: /* Line 1806 of yacc.c */ #line 2420 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+" : "+(yyvsp[(2) - (3)].str); } break; case 754: /* Line 1806 of yacc.c */ #line 2421 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+" : "+(yyvsp[(2) - (3)].str); } break; case 755: /* Line 1806 of yacc.c */ #line 2422 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str)=(yyvsp[(1) - (5)].str)+","+(yyvsp[(3) - (5)].str)+":"+(yyvsp[(4) - (5)].str); } break; case 756: /* Line 1806 of yacc.c */ #line 2423 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str)=(yyvsp[(1) - (5)].str)+","+(yyvsp[(3) - (5)].str)+":"+(yyvsp[(4) - (5)].str); } break; case 757: /* Line 1806 of yacc.c */ #line 2429 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 758: /* Line 1806 of yacc.c */ #line 2431 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 759: /* Line 1806 of yacc.c */ #line 2432 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 760: /* Line 1806 of yacc.c */ #line 2443 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)="'{"+(yyvsp[(2) - (3)].str)+"}"; } break; case 761: /* Line 1806 of yacc.c */ #line 2447 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)="'{"+(yyvsp[(2) - (3)].str)+"}"; } break; case 762: /* Line 1806 of yacc.c */ #line 2449 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)="'{}"; } break; case 763: /* Line 1806 of yacc.c */ #line 2455 "VParseBison.y" { } break; case 764: /* Line 1806 of yacc.c */ #line 2459 "VParseBison.y" { } break; case 765: /* Line 1806 of yacc.c */ #line 2460 "VParseBison.y" { } break; case 766: /* Line 1806 of yacc.c */ #line 2465 "VParseBison.y" { VARDTYPE((yyvsp[(1) - (4)].str)); } break; case 767: /* Line 1806 of yacc.c */ #line 2467 "VParseBison.y" { VARDTYPE((yyvsp[(1) - (5)].str)); } break; case 768: /* Line 1806 of yacc.c */ #line 2469 "VParseBison.y" { } break; case 769: /* Line 1806 of yacc.c */ #line 2473 "VParseBison.y" { } break; case 770: /* Line 1806 of yacc.c */ #line 2474 "VParseBison.y" { } break; case 771: /* Line 1806 of yacc.c */ #line 2478 "VParseBison.y" { } break; case 772: /* Line 1806 of yacc.c */ #line 2479 "VParseBison.y" { } break; case 773: /* Line 1806 of yacc.c */ #line 2483 "VParseBison.y" { } break; case 774: /* Line 1806 of yacc.c */ #line 2485 "VParseBison.y" { } break; case 775: /* Line 1806 of yacc.c */ #line 2487 "VParseBison.y" { } break; case 776: /* Line 1806 of yacc.c */ #line 2489 "VParseBison.y" { } break; case 777: /* Line 1806 of yacc.c */ #line 2490 "VParseBison.y" { } break; case 778: /* Line 1806 of yacc.c */ #line 2494 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 779: /* Line 1806 of yacc.c */ #line 2495 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 780: /* Line 1806 of yacc.c */ #line 2511 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)=(yyvsp[(1) - (4)].str)+"("+(yyvsp[(3) - (4)].str)+")"; } break; case 781: /* Line 1806 of yacc.c */ #line 2512 "VParseBison.y" { (yyval.fl)=(yyvsp[(2) - (5)].fl); (yyval.str)=(yyvsp[(1) - (5)].str)+(yyvsp[(2) - (5)].str)+"("+(yyvsp[(4) - (5)].str)+")"; } break; case 782: /* Line 1806 of yacc.c */ #line 2513 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)=(yyvsp[(1) - (4)].str)+"("+(yyvsp[(3) - (4)].str)+")"; } break; case 783: /* Line 1806 of yacc.c */ #line 2518 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 784: /* Line 1806 of yacc.c */ #line 2519 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str)=(yyvsp[(1) - (5)].str)+" "+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+(yyvsp[(5) - (5)].str); } break; case 785: /* Line 1806 of yacc.c */ #line 2520 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 786: /* Line 1806 of yacc.c */ #line 2526 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+" with..."; } break; case 787: /* Line 1806 of yacc.c */ #line 2531 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 788: /* Line 1806 of yacc.c */ #line 2532 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str)=(yyvsp[(1) - (5)].str)+" "+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+(yyvsp[(5) - (5)].str); } break; case 789: /* Line 1806 of yacc.c */ #line 2533 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 790: /* Line 1806 of yacc.c */ #line 2539 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+" with..."; } break; case 791: /* Line 1806 of yacc.c */ #line 2543 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 792: /* Line 1806 of yacc.c */ #line 2547 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str); } break; case 793: /* Line 1806 of yacc.c */ #line 2549 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = (yyvsp[(1) - (4)].str)+"("+(yyvsp[(3) - (4)].str)+")"; } break; case 794: /* Line 1806 of yacc.c */ #line 2552 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str); } break; case 795: /* Line 1806 of yacc.c */ #line 2553 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = (yyvsp[(1) - (4)].str)+"("+(yyvsp[(3) - (4)].str)+")"; } break; case 796: /* Line 1806 of yacc.c */ #line 2554 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str); } break; case 797: /* Line 1806 of yacc.c */ #line 2555 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = (yyvsp[(1) - (4)].str)+"("+(yyvsp[(3) - (4)].str)+")"; } break; case 798: /* Line 1806 of yacc.c */ #line 2556 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str); } break; case 799: /* Line 1806 of yacc.c */ #line 2557 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = (yyvsp[(1) - (4)].str)+"("+(yyvsp[(3) - (4)].str)+")"; } break; case 800: /* Line 1806 of yacc.c */ #line 2558 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str); } break; case 801: /* Line 1806 of yacc.c */ #line 2559 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = (yyvsp[(1) - (4)].str)+"("+(yyvsp[(3) - (4)].str)+")"; } break; case 802: /* Line 1806 of yacc.c */ #line 2564 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str); NEED_S09((yyvsp[(1) - (3)].fl),"elaboration system tasks"); } break; case 803: /* Line 1806 of yacc.c */ #line 2565 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"("+(yyvsp[(3) - (5)].str)+")"; NEED_S09((yyvsp[(1) - (5)].fl),"elaboration system tasks"); } break; case 804: /* Line 1806 of yacc.c */ #line 2566 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str); NEED_S09((yyvsp[(1) - (3)].fl),"elaboration system tasks"); } break; case 805: /* Line 1806 of yacc.c */ #line 2567 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"("+(yyvsp[(3) - (5)].str)+")"; NEED_S09((yyvsp[(1) - (5)].fl),"elaboration system tasks"); } break; case 806: /* Line 1806 of yacc.c */ #line 2568 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str); NEED_S09((yyvsp[(1) - (3)].fl),"elaboration system tasks"); } break; case 807: /* Line 1806 of yacc.c */ #line 2569 "VParseBison.y" {(yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"("+(yyvsp[(3) - (5)].str)+")"; NEED_S09((yyvsp[(1) - (5)].fl),"elaboration system tasks"); } break; case 808: /* Line 1806 of yacc.c */ #line 2570 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str); NEED_S09((yyvsp[(1) - (3)].fl),"elaboration system tasks"); } break; case 809: /* Line 1806 of yacc.c */ #line 2571 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"("+(yyvsp[(3) - (5)].str)+")"; NEED_S09((yyvsp[(1) - (5)].fl),"elaboration system tasks"); } break; case 810: /* Line 1806 of yacc.c */ #line 2577 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 811: /* Line 1806 of yacc.c */ #line 2583 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); } break; case 812: /* Line 1806 of yacc.c */ #line 2584 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); } break; case 813: /* Line 1806 of yacc.c */ #line 2589 "VParseBison.y" { PARSEP->endtaskfuncCb((yyvsp[(5) - (6)].fl),(yyvsp[(5) - (6)].str)); PARSEP->symPopScope(VAstType::TASK); } break; case 814: /* Line 1806 of yacc.c */ #line 2592 "VParseBison.y" { PARSEP->endtaskfuncCb((yyvsp[(1) - (4)].fl),"endtask"); PARSEP->symPopScope(VAstType::TASK); } break; case 815: /* Line 1806 of yacc.c */ #line 2599 "VParseBison.y" { PARSEP->symPopScope(VAstType::TASK); PARSEP->endtaskfuncCb((yyvsp[(1) - (5)].fl),"endtask"); } break; case 816: /* Line 1806 of yacc.c */ #line 2600 "VParseBison.y" { PARSEP->symPopScope(VAstType::TASK); PARSEP->endtaskfuncCb((yyvsp[(1) - (2)].fl),"endtask"); } break; case 817: /* Line 1806 of yacc.c */ #line 2604 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); } break; case 818: /* Line 1806 of yacc.c */ #line 2605 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); } break; case 819: /* Line 1806 of yacc.c */ #line 2610 "VParseBison.y" { PARSEP->endtaskfuncCb((yyvsp[(5) - (6)].fl),(yyvsp[(5) - (6)].str)); PARSEP->symPopScope(VAstType::FUNCTION); } break; case 820: /* Line 1806 of yacc.c */ #line 2613 "VParseBison.y" { PARSEP->endtaskfuncCb((yyvsp[(5) - (6)].fl),(yyvsp[(5) - (6)].str)); PARSEP->symPopScope(VAstType::FUNCTION); } break; case 821: /* Line 1806 of yacc.c */ #line 2616 "VParseBison.y" { PARSEP->endtaskfuncCb((yyvsp[(1) - (4)].fl),"endfunction"); PARSEP->symPopScope(VAstType::FUNCTION); } break; case 822: /* Line 1806 of yacc.c */ #line 2619 "VParseBison.y" { PARSEP->endtaskfuncCb((yyvsp[(1) - (4)].fl),"endfunction"); PARSEP->symPopScope(VAstType::FUNCTION); } break; case 823: /* Line 1806 of yacc.c */ #line 2626 "VParseBison.y" { PARSEP->symPopScope(VAstType::FUNCTION); PARSEP->endtaskfuncCb((yyvsp[(1) - (5)].fl),"endfunction"); } break; case 824: /* Line 1806 of yacc.c */ #line 2627 "VParseBison.y" { PARSEP->symPopScope(VAstType::FUNCTION); PARSEP->endtaskfuncCb((yyvsp[(1) - (2)].fl),"endfunction"); } break; case 825: /* Line 1806 of yacc.c */ #line 2631 "VParseBison.y" { PARSEP->symPopScope(VAstType::FUNCTION); PARSEP->endtaskfuncCb((yyvsp[(1) - (6)].fl),"endfunction"); } break; case 826: /* Line 1806 of yacc.c */ #line 2632 "VParseBison.y" { PARSEP->symPopScope(VAstType::FUNCTION); PARSEP->endtaskfuncCb((yyvsp[(1) - (3)].fl),"endfunction"); } break; case 827: /* Line 1806 of yacc.c */ #line 2636 "VParseBison.y" { } break; case 828: /* Line 1806 of yacc.c */ #line 2637 "VParseBison.y" { } break; case 829: /* Line 1806 of yacc.c */ #line 2641 "VParseBison.y" { } break; case 830: /* Line 1806 of yacc.c */ #line 2642 "VParseBison.y" { } break; case 831: /* Line 1806 of yacc.c */ #line 2647 "VParseBison.y" { } break; case 832: /* Line 1806 of yacc.c */ #line 2648 "VParseBison.y" { } break; case 833: /* Line 1806 of yacc.c */ #line 2653 "VParseBison.y" { PARSEP->symPushNewUnder(VAstType::TASK, (yyvsp[(1) - (1)].str), (yyvsp[(1) - (1)].scp)); PARSEP->taskCb((yyvsp[(1) - (1)].fl),"task",(yyvsp[(1) - (1)].str)); } break; case 834: /* Line 1806 of yacc.c */ #line 2661 "VParseBison.y" { PARSEP->symPushNewUnder(VAstType::FUNCTION, (yyvsp[(1) - (1)].str), (yyvsp[(1) - (1)].scp)); PARSEP->functionCb((yyvsp[(1) - (1)].fl),"function",(yyvsp[(1) - (1)].str),""); } break; case 835: /* Line 1806 of yacc.c */ #line 2664 "VParseBison.y" { PARSEP->symPushNewUnder(VAstType::FUNCTION, (yyvsp[(3) - (3)].str), (yyvsp[(3) - (3)].scp)); PARSEP->functionCb((yyvsp[(3) - (3)].fl),"function",(yyvsp[(3) - (3)].str),SPACED((yyvsp[(1) - (3)].str),(yyvsp[(2) - (3)].str))); } break; case 836: /* Line 1806 of yacc.c */ #line 2667 "VParseBison.y" { PARSEP->symPushNewUnder(VAstType::FUNCTION, (yyvsp[(2) - (2)].str), (yyvsp[(2) - (2)].scp)); PARSEP->functionCb((yyvsp[(2) - (2)].fl),"function",(yyvsp[(2) - (2)].str),(yyvsp[(1) - (2)].str)); } break; case 837: /* Line 1806 of yacc.c */ #line 2670 "VParseBison.y" { PARSEP->symPushNewUnder(VAstType::FUNCTION, (yyvsp[(2) - (2)].str), (yyvsp[(2) - (2)].scp)); PARSEP->functionCb((yyvsp[(2) - (2)].fl),"function",(yyvsp[(2) - (2)].str),(yyvsp[(1) - (2)].str)); } break; case 838: /* Line 1806 of yacc.c */ #line 2673 "VParseBison.y" { PARSEP->symPushNewUnder(VAstType::FUNCTION, (yyvsp[(2) - (2)].str), (yyvsp[(2) - (2)].scp)); PARSEP->functionCb((yyvsp[(2) - (2)].fl),"function",(yyvsp[(2) - (2)].str),(yyvsp[(1) - (2)].str)); } break; case 839: /* Line 1806 of yacc.c */ #line 2679 "VParseBison.y" { PARSEP->symPushNewUnder(VAstType::FUNCTION, "new", NULL); PARSEP->functionCb((yyvsp[(1) - (1)].fl),"function","new",""); } break; case 840: /* Line 1806 of yacc.c */ #line 2682 "VParseBison.y" { PARSEP->symPushNewUnder(VAstType::FUNCTION, "new", NULL); PARSEP->functionCb((yyvsp[(1) - (1)].fl),"function","new",""); } break; case 841: /* Line 1806 of yacc.c */ #line 2685 "VParseBison.y" { PARSEP->symPushNewUnder(VAstType::FUNCTION, "new", (yyvsp[(1) - (2)].scp)); PARSEP->functionCb((yyvsp[(2) - (2)].fl),"function","new",""); } break; case 842: /* Line 1806 of yacc.c */ #line 2691 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.scp)=NULL; (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 843: /* Line 1806 of yacc.c */ #line 2692 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.scp)=NULL; (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(2) - (3)].str); } break; case 844: /* Line 1806 of yacc.c */ #line 2693 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.scp)=(yyvsp[(1) - (1)].scp); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 845: /* Line 1806 of yacc.c */ #line 2697 "VParseBison.y" { } break; case 846: /* Line 1806 of yacc.c */ #line 2698 "VParseBison.y" { } break; case 847: /* Line 1806 of yacc.c */ #line 2702 "VParseBison.y" { } break; case 848: /* Line 1806 of yacc.c */ #line 2703 "VParseBison.y" { } break; case 849: /* Line 1806 of yacc.c */ #line 2707 "VParseBison.y" { } break; case 850: /* Line 1806 of yacc.c */ #line 2708 "VParseBison.y" { } break; case 851: /* Line 1806 of yacc.c */ #line 2709 "VParseBison.y" { } break; case 852: /* Line 1806 of yacc.c */ #line 2710 "VParseBison.y" { } break; case 853: /* Line 1806 of yacc.c */ #line 2714 "VParseBison.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 854: /* Line 1806 of yacc.c */ #line 2715 "VParseBison.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 855: /* Line 1806 of yacc.c */ #line 2719 "VParseBison.y" { } break; case 856: /* Line 1806 of yacc.c */ #line 2720 "VParseBison.y" { } break; case 857: /* Line 1806 of yacc.c */ #line 2724 "VParseBison.y" { } break; case 858: /* Line 1806 of yacc.c */ #line 2725 "VParseBison.y" { } break; case 859: /* Line 1806 of yacc.c */ #line 2730 "VParseBison.y" { VARRESET_LIST(""); VARIO("input"); } break; case 860: /* Line 1806 of yacc.c */ #line 2731 "VParseBison.y" { VARRESET_NONLIST(""); } break; case 861: /* Line 1806 of yacc.c */ #line 2735 "VParseBison.y" { } break; case 862: /* Line 1806 of yacc.c */ #line 2736 "VParseBison.y" { } break; case 863: /* Line 1806 of yacc.c */ #line 2741 "VParseBison.y" { PINNUMINC(); } break; case 864: /* Line 1806 of yacc.c */ #line 2742 "VParseBison.y" { PINNUMINC(); } break; case 865: /* Line 1806 of yacc.c */ #line 2743 "VParseBison.y" { PINNUMINC(); } break; case 866: /* Line 1806 of yacc.c */ #line 2747 "VParseBison.y" { VARDTYPE((yyvsp[(1) - (1)].str)); } break; case 867: /* Line 1806 of yacc.c */ #line 2748 "VParseBison.y" { VARDTYPE(SPACED((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str))); } break; case 868: /* Line 1806 of yacc.c */ #line 2749 "VParseBison.y" { VARDTYPE((yyvsp[(1) - (1)].str)); } break; case 869: /* Line 1806 of yacc.c */ #line 2750 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 870: /* Line 1806 of yacc.c */ #line 2751 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 871: /* Line 1806 of yacc.c */ #line 2753 "VParseBison.y" { VARDTYPE(""); /*default_nettype-see spec*/ } break; case 872: /* Line 1806 of yacc.c */ #line 2754 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 873: /* Line 1806 of yacc.c */ #line 2755 "VParseBison.y" { VARDTYPE(SPACED((yyvsp[(2) - (3)].str),(yyvsp[(3) - (3)].str))); } break; case 874: /* Line 1806 of yacc.c */ #line 2756 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 875: /* Line 1806 of yacc.c */ #line 2757 "VParseBison.y" { VARDTYPE((yyvsp[(3) - (3)].str)); } break; case 876: /* Line 1806 of yacc.c */ #line 2758 "VParseBison.y" { VARDTYPE((yyvsp[(3) - (3)].str)); } break; case 877: /* Line 1806 of yacc.c */ #line 2762 "VParseBison.y" { } break; case 878: /* Line 1806 of yacc.c */ #line 2767 "VParseBison.y" { VARDONE((yyvsp[(1) - (3)].fl), (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), ""); } break; case 879: /* Line 1806 of yacc.c */ #line 2769 "VParseBison.y" { VARDONE((yyvsp[(1) - (5)].fl), (yyvsp[(1) - (5)].str), (yyvsp[(2) - (5)].str), (yyvsp[(5) - (5)].str)); } break; case 880: /* Line 1806 of yacc.c */ #line 2773 "VParseBison.y" { } break; case 881: /* Line 1806 of yacc.c */ #line 2774 "VParseBison.y" { } break; case 882: /* Line 1806 of yacc.c */ #line 2787 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 883: /* Line 1806 of yacc.c */ #line 2788 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str)=(yyvsp[(1) - (5)].str)+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+(yyvsp[(5) - (5)].str); } break; case 884: /* Line 1806 of yacc.c */ #line 2794 "VParseBison.y" { (yyval.str)=""; } break; case 885: /* Line 1806 of yacc.c */ #line 2795 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)=(yyvsp[(1) - (4)].str)+(yyvsp[(2) - (4)].str)+(yyvsp[(3) - (4)].str)+(yyvsp[(4) - (4)].str); } break; case 886: /* Line 1806 of yacc.c */ #line 2799 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 887: /* Line 1806 of yacc.c */ #line 2800 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 888: /* Line 1806 of yacc.c */ #line 2801 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 889: /* Line 1806 of yacc.c */ #line 2802 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 890: /* Line 1806 of yacc.c */ #line 2806 "VParseBison.y" { } break; case 891: /* Line 1806 of yacc.c */ #line 2807 "VParseBison.y" { } break; case 892: /* Line 1806 of yacc.c */ #line 2808 "VParseBison.y" { } break; case 893: /* Line 1806 of yacc.c */ #line 2809 "VParseBison.y" { } break; case 894: /* Line 1806 of yacc.c */ #line 2813 "VParseBison.y" { } break; case 895: /* Line 1806 of yacc.c */ #line 2814 "VParseBison.y" { } break; case 896: /* Line 1806 of yacc.c */ #line 2818 "VParseBison.y" { } break; case 897: /* Line 1806 of yacc.c */ #line 2819 "VParseBison.y" { } break; case 898: /* Line 1806 of yacc.c */ #line 2820 "VParseBison.y" { } break; case 899: /* Line 1806 of yacc.c */ #line 2825 "VParseBison.y" { } break; case 900: /* Line 1806 of yacc.c */ #line 2829 "VParseBison.y" { (yyval.str)="+"; } break; case 901: /* Line 1806 of yacc.c */ #line 2830 "VParseBison.y" { (yyval.str)="++"; } break; case 902: /* Line 1806 of yacc.c */ #line 2831 "VParseBison.y" { (yyval.str)="-"; } break; case 903: /* Line 1806 of yacc.c */ #line 2832 "VParseBison.y" { (yyval.str)="--"; } break; case 904: /* Line 1806 of yacc.c */ #line 2833 "VParseBison.y" { (yyval.str)="*"; } break; case 905: /* Line 1806 of yacc.c */ #line 2834 "VParseBison.y" { (yyval.str)="**"; } break; case 906: /* Line 1806 of yacc.c */ #line 2835 "VParseBison.y" { (yyval.str)="/"; } break; case 907: /* Line 1806 of yacc.c */ #line 2836 "VParseBison.y" { (yyval.str)="%"; } break; case 908: /* Line 1806 of yacc.c */ #line 2837 "VParseBison.y" { (yyval.str)="=="; } break; case 909: /* Line 1806 of yacc.c */ #line 2838 "VParseBison.y" { (yyval.str)="!="; } break; case 910: /* Line 1806 of yacc.c */ #line 2839 "VParseBison.y" { (yyval.str)="<"; } break; case 911: /* Line 1806 of yacc.c */ #line 2840 "VParseBison.y" { (yyval.str)="<="; } break; case 912: /* Line 1806 of yacc.c */ #line 2841 "VParseBison.y" { (yyval.str)=">"; } break; case 913: /* Line 1806 of yacc.c */ #line 2842 "VParseBison.y" { (yyval.str)=">="; } break; case 914: /* Line 1806 of yacc.c */ #line 2843 "VParseBison.y" { (yyval.str)="="; } break; case 915: /* Line 1806 of yacc.c */ #line 2847 "VParseBison.y" { } break; case 916: /* Line 1806 of yacc.c */ #line 2848 "VParseBison.y" { } break; case 917: /* Line 1806 of yacc.c */ #line 2863 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 918: /* Line 1806 of yacc.c */ #line 2870 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 919: /* Line 1806 of yacc.c */ #line 2871 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 920: /* Line 1806 of yacc.c */ #line 2872 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 921: /* Line 1806 of yacc.c */ #line 2873 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 922: /* Line 1806 of yacc.c */ #line 2874 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 923: /* Line 1806 of yacc.c */ #line 2875 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 924: /* Line 1806 of yacc.c */ #line 2876 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 925: /* Line 1806 of yacc.c */ #line 2877 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 926: /* Line 1806 of yacc.c */ #line 2878 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 927: /* Line 1806 of yacc.c */ #line 2879 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 928: /* Line 1806 of yacc.c */ #line 2882 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 929: /* Line 1806 of yacc.c */ #line 2886 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 930: /* Line 1806 of yacc.c */ #line 2887 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 931: /* Line 1806 of yacc.c */ #line 2888 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 932: /* Line 1806 of yacc.c */ #line 2889 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 933: /* Line 1806 of yacc.c */ #line 2890 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 934: /* Line 1806 of yacc.c */ #line 2891 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 935: /* Line 1806 of yacc.c */ #line 2892 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 936: /* Line 1806 of yacc.c */ #line 2893 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 937: /* Line 1806 of yacc.c */ #line 2894 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 938: /* Line 1806 of yacc.c */ #line 2895 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 939: /* Line 1806 of yacc.c */ #line 2896 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 940: /* Line 1806 of yacc.c */ #line 2897 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 941: /* Line 1806 of yacc.c */ #line 2900 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 942: /* Line 1806 of yacc.c */ #line 2901 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 943: /* Line 1806 of yacc.c */ #line 2902 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 944: /* Line 1806 of yacc.c */ #line 2903 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 945: /* Line 1806 of yacc.c */ #line 2904 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 946: /* Line 1806 of yacc.c */ #line 2905 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 947: /* Line 1806 of yacc.c */ #line 2906 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 948: /* Line 1806 of yacc.c */ #line 2907 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 949: /* Line 1806 of yacc.c */ #line 2908 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 950: /* Line 1806 of yacc.c */ #line 2909 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 951: /* Line 1806 of yacc.c */ #line 2910 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 952: /* Line 1806 of yacc.c */ #line 2911 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 953: /* Line 1806 of yacc.c */ #line 2912 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 954: /* Line 1806 of yacc.c */ #line 2913 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 955: /* Line 1806 of yacc.c */ #line 2914 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 956: /* Line 1806 of yacc.c */ #line 2915 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 957: /* Line 1806 of yacc.c */ #line 2916 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 958: /* Line 1806 of yacc.c */ #line 2917 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 959: /* Line 1806 of yacc.c */ #line 2918 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 960: /* Line 1806 of yacc.c */ #line 2919 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 961: /* Line 1806 of yacc.c */ #line 2920 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 962: /* Line 1806 of yacc.c */ #line 2921 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 963: /* Line 1806 of yacc.c */ #line 2922 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 964: /* Line 1806 of yacc.c */ #line 2923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 965: /* Line 1806 of yacc.c */ #line 2924 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 966: /* Line 1806 of yacc.c */ #line 2925 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 967: /* Line 1806 of yacc.c */ #line 2926 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 968: /* Line 1806 of yacc.c */ #line 2932 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 969: /* Line 1806 of yacc.c */ #line 2936 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 970: /* Line 1806 of yacc.c */ #line 2939 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"?"+(yyvsp[(3) - (5)].str)+":"+(yyvsp[(5) - (5)].str); } break; case 971: /* Line 1806 of yacc.c */ #line 2942 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+" inside {"+(yyvsp[(3) - (5)].str)+"}"; } break; case 972: /* Line 1806 of yacc.c */ #line 2945 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = " tagged "+(yyvsp[(1) - (2)].str); } break; case 973: /* Line 1806 of yacc.c */ #line 2946 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = " tagged "+(yyvsp[(1) - (3)].str)+" "+(yyvsp[(2) - (3)].str); } break; case 974: /* Line 1806 of yacc.c */ #line 2951 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 975: /* Line 1806 of yacc.c */ #line 2952 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 976: /* Line 1806 of yacc.c */ #line 2953 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 977: /* Line 1806 of yacc.c */ #line 2954 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 979: /* Line 1806 of yacc.c */ #line 2965 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "{"+(yyvsp[(2) - (6)].str)+"{"+(yyvsp[(4) - (6)].str)+"}}"; } break; case 980: /* Line 1806 of yacc.c */ #line 2968 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (9)].fl); (yyval.str) = "{"+(yyvsp[(2) - (9)].str)+"{"+(yyvsp[(4) - (9)].str)+"}}["+(yyvsp[(8) - (9)].str)+"]"; NEED_S09((yyvsp[(6) - (9)].fl),"{}[]"); } break; case 981: /* Line 1806 of yacc.c */ #line 2970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 982: /* Line 1806 of yacc.c */ #line 2972 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 983: /* Line 1806 of yacc.c */ #line 2974 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 984: /* Line 1806 of yacc.c */ #line 2976 "VParseBison.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 985: /* Line 1806 of yacc.c */ #line 2978 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 986: /* Line 1806 of yacc.c */ #line 2980 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 987: /* Line 1806 of yacc.c */ #line 2986 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "("+(yyvsp[(2) - (3)].str)+")"; } break; case 988: /* Line 1806 of yacc.c */ #line 2987 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (7)].fl); (yyval.str) = "("+(yyvsp[(2) - (7)].str)+":"+(yyvsp[(4) - (7)].str)+":"+(yyvsp[(5) - (7)].str)+")"; } break; case 989: /* Line 1806 of yacc.c */ #line 2989 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "_("+(yyvsp[(4) - (6)].str)+")"; } break; case 990: /* Line 1806 of yacc.c */ #line 2992 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"'("+(yyvsp[(4) - (5)].str)+")"; } break; case 991: /* Line 1806 of yacc.c */ #line 2995 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"'("+(yyvsp[(4) - (5)].str)+")"; } break; case 992: /* Line 1806 of yacc.c */ #line 3004 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = "$"; } break; case 993: /* Line 1806 of yacc.c */ #line 3005 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 994: /* Line 1806 of yacc.c */ #line 3012 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 995: /* Line 1806 of yacc.c */ #line 3018 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + "&&&" + (yyvsp[(3) - (3)].str); } break; case 996: /* Line 1806 of yacc.c */ #line 3023 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + " matches " + (yyvsp[(3) - (3)].str); } break; case 997: /* Line 1806 of yacc.c */ #line 3024 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + " matches " + (yyvsp[(3) - (3)].str); } break; case 998: /* Line 1806 of yacc.c */ #line 3028 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str) + " dist " + (yyvsp[(3) - (5)].str)+"..."+(yyvsp[(5) - (5)].str); } break; case 999: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1000: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1001: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1002: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1003: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1004: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1005: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1006: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1007: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1008: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1009: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1010: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1011: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1012: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1013: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1014: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1015: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1016: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1017: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1018: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1019: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1020: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1021: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1022: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1023: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1024: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1025: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1026: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1027: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1028: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1029: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1030: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1031: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1032: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1033: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1034: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1035: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1036: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1037: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1038: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1039: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1040: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1041: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1042: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1043: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1044: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1045: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1046: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1047: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1048: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1049: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1050: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1051: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"?"+(yyvsp[(3) - (5)].str)+":"+(yyvsp[(5) - (5)].str); } break; case 1052: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+" inside {"+(yyvsp[(3) - (5)].str)+"}"; } break; case 1053: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = " tagged "+(yyvsp[(1) - (2)].str); } break; case 1054: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = " tagged "+(yyvsp[(1) - (3)].str)+" "+(yyvsp[(2) - (3)].str); } break; case 1055: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1056: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1057: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1058: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1060: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "{"+(yyvsp[(2) - (6)].str)+"{"+(yyvsp[(4) - (6)].str)+"}}"; } break; case 1061: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (9)].fl); (yyval.str) = "{"+(yyvsp[(2) - (9)].str)+"{"+(yyvsp[(4) - (9)].str)+"}}["+(yyvsp[(8) - (9)].str)+"]"; NEED_S09((yyvsp[(6) - (9)].fl),"{}[]"); } break; case 1062: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 1063: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 1064: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 1065: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1066: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1067: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1068: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "("+(yyvsp[(2) - (3)].str)+")"; } break; case 1069: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (7)].fl); (yyval.str) = "("+(yyvsp[(2) - (7)].str)+":"+(yyvsp[(4) - (7)].str)+":"+(yyvsp[(5) - (7)].str)+")"; } break; case 1070: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "_("+(yyvsp[(4) - (6)].str)+")"; } break; case 1071: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"'("+(yyvsp[(4) - (5)].str)+")"; } break; case 1072: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"'("+(yyvsp[(4) - (5)].str)+")"; } break; case 1073: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = "$"; } break; case 1074: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1075: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1076: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + "&&&" + (yyvsp[(3) - (3)].str); } break; case 1077: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + " matches " + (yyvsp[(3) - (3)].str); } break; case 1078: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + " matches " + (yyvsp[(3) - (3)].str); } break; case 1079: /* Line 1806 of yacc.c */ #line 3032 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str) + " dist " + (yyvsp[(3) - (5)].str)+"..."+(yyvsp[(5) - (5)].str); } break; case 1080: /* Line 1806 of yacc.c */ #line 3040 "VParseBison.y" { } break; case 1081: /* Line 1806 of yacc.c */ #line 3041 "VParseBison.y" { } break; case 1082: /* Line 1806 of yacc.c */ #line 3047 "VParseBison.y" { } break; case 1083: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1084: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1085: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1086: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1087: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1088: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1089: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1090: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1091: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1092: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1093: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1094: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1095: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1096: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1097: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1098: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1099: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1100: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1101: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1102: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1103: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1104: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1105: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 1106: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1107: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1108: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1109: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1110: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1111: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1112: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1113: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1114: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1115: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1116: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1117: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1118: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1119: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1120: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1121: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1122: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1123: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1124: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1125: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1126: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1127: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1128: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1129: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1130: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1131: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1132: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1133: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1134: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 1135: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"?"+(yyvsp[(3) - (5)].str)+":"+(yyvsp[(5) - (5)].str); } break; case 1136: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+" inside {"+(yyvsp[(3) - (5)].str)+"}"; } break; case 1137: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = " tagged "+(yyvsp[(1) - (2)].str); } break; case 1138: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = " tagged "+(yyvsp[(1) - (3)].str)+" "+(yyvsp[(2) - (3)].str); } break; case 1139: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1140: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1141: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1142: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1144: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "{"+(yyvsp[(2) - (6)].str)+"{"+(yyvsp[(4) - (6)].str)+"}}"; } break; case 1145: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (9)].fl); (yyval.str) = "{"+(yyvsp[(2) - (9)].str)+"{"+(yyvsp[(4) - (9)].str)+"}}["+(yyvsp[(8) - (9)].str)+"]"; NEED_S09((yyvsp[(6) - (9)].fl),"{}[]"); } break; case 1146: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 1147: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 1148: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 1149: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1150: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1151: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1152: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = "("+(yyvsp[(2) - (4)].str)+")"; } break; case 1153: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "("+(yyvsp[(2) - (8)].str)+":"+(yyvsp[(4) - (8)].str)+":"+(yyvsp[(5) - (8)].str)+")"; } break; case 1154: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "_("+(yyvsp[(4) - (6)].str)+")"; } break; case 1155: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"'("+(yyvsp[(4) - (5)].str)+")"; } break; case 1156: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"'("+(yyvsp[(4) - (5)].str)+")"; } break; case 1157: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = "$"; } break; case 1158: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1159: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1160: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + "&&&" + (yyvsp[(3) - (3)].str); } break; case 1161: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + " matches " + (yyvsp[(3) - (3)].str); } break; case 1162: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + " matches " + (yyvsp[(3) - (3)].str); } break; case 1163: /* Line 1806 of yacc.c */ #line 3053 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str) + " dist " + (yyvsp[(3) - (5)].str)+"..."+(yyvsp[(5) - (5)].str); } break; case 1164: /* Line 1806 of yacc.c */ #line 3058 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "(...)"; } break; case 1165: /* Line 1806 of yacc.c */ #line 3061 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (7)].fl); (yyval.str) = "(...)"; } break; case 1166: /* Line 1806 of yacc.c */ #line 3068 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1167: /* Line 1806 of yacc.c */ #line 3070 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "{"+(yyvsp[(2) - (3)].str)+"}"; } break; case 1168: /* Line 1806 of yacc.c */ #line 3072 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "{"+(yyvsp[(2) - (6)].str)+"}["+(yyvsp[(5) - (6)].str)+"]"; NEED_S09((yyvsp[(4) - (6)].fl),"{}[]"); } break; case 1169: /* Line 1806 of yacc.c */ #line 3073 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1170: /* Line 1806 of yacc.c */ #line 3074 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1171: /* Line 1806 of yacc.c */ #line 3075 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1172: /* Line 1806 of yacc.c */ #line 3079 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1173: /* Line 1806 of yacc.c */ #line 3080 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1174: /* Line 1806 of yacc.c */ #line 3081 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1175: /* Line 1806 of yacc.c */ #line 3083 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1176: /* Line 1806 of yacc.c */ #line 3087 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1177: /* Line 1806 of yacc.c */ #line 3087 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "{"+(yyvsp[(2) - (3)].str)+"}"; } break; case 1178: /* Line 1806 of yacc.c */ #line 3087 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "{"+(yyvsp[(2) - (6)].str)+"}["+(yyvsp[(5) - (6)].str)+"]"; NEED_S09((yyvsp[(4) - (6)].fl),"{}[]"); } break; case 1179: /* Line 1806 of yacc.c */ #line 3087 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1180: /* Line 1806 of yacc.c */ #line 3087 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1181: /* Line 1806 of yacc.c */ #line 3087 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1182: /* Line 1806 of yacc.c */ #line 3087 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1183: /* Line 1806 of yacc.c */ #line 3087 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1184: /* Line 1806 of yacc.c */ #line 3087 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1185: /* Line 1806 of yacc.c */ #line 3087 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1186: /* Line 1806 of yacc.c */ #line 3091 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1187: /* Line 1806 of yacc.c */ #line 3091 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "{"+(yyvsp[(2) - (3)].str)+"}"; } break; case 1188: /* Line 1806 of yacc.c */ #line 3091 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "{"+(yyvsp[(2) - (6)].str)+"}["+(yyvsp[(5) - (6)].str)+"]"; NEED_S09((yyvsp[(4) - (6)].fl),"{}[]"); } break; case 1189: /* Line 1806 of yacc.c */ #line 3091 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1190: /* Line 1806 of yacc.c */ #line 3091 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1191: /* Line 1806 of yacc.c */ #line 3091 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1192: /* Line 1806 of yacc.c */ #line 3091 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1193: /* Line 1806 of yacc.c */ #line 3091 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1194: /* Line 1806 of yacc.c */ #line 3091 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1195: /* Line 1806 of yacc.c */ #line 3091 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1196: /* Line 1806 of yacc.c */ #line 3095 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1197: /* Line 1806 of yacc.c */ #line 3095 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "{"+(yyvsp[(2) - (3)].str)+"}"; } break; case 1198: /* Line 1806 of yacc.c */ #line 3095 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "{"+(yyvsp[(2) - (6)].str)+"}["+(yyvsp[(5) - (6)].str)+"]"; NEED_S09((yyvsp[(4) - (6)].fl),"{}[]"); } break; case 1199: /* Line 1806 of yacc.c */ #line 3095 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1200: /* Line 1806 of yacc.c */ #line 3095 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1201: /* Line 1806 of yacc.c */ #line 3095 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1202: /* Line 1806 of yacc.c */ #line 3095 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1203: /* Line 1806 of yacc.c */ #line 3095 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1204: /* Line 1806 of yacc.c */ #line 3095 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1205: /* Line 1806 of yacc.c */ #line 3095 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1206: /* Line 1806 of yacc.c */ #line 3099 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1207: /* Line 1806 of yacc.c */ #line 3099 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "{"+(yyvsp[(2) - (3)].str)+"}"; } break; case 1208: /* Line 1806 of yacc.c */ #line 3099 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "{"+(yyvsp[(2) - (6)].str)+"}["+(yyvsp[(5) - (6)].str)+"]"; NEED_S09((yyvsp[(4) - (6)].fl),"{}[]"); } break; case 1209: /* Line 1806 of yacc.c */ #line 3099 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1210: /* Line 1806 of yacc.c */ #line 3099 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1211: /* Line 1806 of yacc.c */ #line 3099 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1212: /* Line 1806 of yacc.c */ #line 3099 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1213: /* Line 1806 of yacc.c */ #line 3099 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1214: /* Line 1806 of yacc.c */ #line 3099 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1215: /* Line 1806 of yacc.c */ #line 3099 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1216: /* Line 1806 of yacc.c */ #line 3103 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1217: /* Line 1806 of yacc.c */ #line 3103 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "{"+(yyvsp[(2) - (3)].str)+"}"; } break; case 1218: /* Line 1806 of yacc.c */ #line 3103 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "{"+(yyvsp[(2) - (6)].str)+"}["+(yyvsp[(5) - (6)].str)+"]"; NEED_S09((yyvsp[(4) - (6)].fl),"{}[]"); } break; case 1219: /* Line 1806 of yacc.c */ #line 3103 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1220: /* Line 1806 of yacc.c */ #line 3103 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1221: /* Line 1806 of yacc.c */ #line 3103 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "{"+(yyvsp[(2) - (8)].str)+"}["+(yyvsp[(5) - (8)].str)+(yyvsp[(6) - (8)].str)+(yyvsp[(7) - (8)].str)+"]"; NEED_S09((yyvsp[(4) - (8)].fl),"{}[]"); } break; case 1222: /* Line 1806 of yacc.c */ #line 3103 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1223: /* Line 1806 of yacc.c */ #line 3103 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1224: /* Line 1806 of yacc.c */ #line 3103 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1225: /* Line 1806 of yacc.c */ #line 3103 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1226: /* Line 1806 of yacc.c */ #line 3107 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1227: /* Line 1806 of yacc.c */ #line 3111 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1228: /* Line 1806 of yacc.c */ #line 3122 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1229: /* Line 1806 of yacc.c */ #line 3123 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1230: /* Line 1806 of yacc.c */ #line 3124 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1231: /* Line 1806 of yacc.c */ #line 3125 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1232: /* Line 1806 of yacc.c */ #line 3126 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1233: /* Line 1806 of yacc.c */ #line 3128 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1234: /* Line 1806 of yacc.c */ #line 3130 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1235: /* Line 1806 of yacc.c */ #line 3134 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1236: /* Line 1806 of yacc.c */ #line 3134 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1237: /* Line 1806 of yacc.c */ #line 3134 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1238: /* Line 1806 of yacc.c */ #line 3134 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1239: /* Line 1806 of yacc.c */ #line 3134 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1240: /* Line 1806 of yacc.c */ #line 3134 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1241: /* Line 1806 of yacc.c */ #line 3134 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1242: /* Line 1806 of yacc.c */ #line 3138 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1243: /* Line 1806 of yacc.c */ #line 3138 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1244: /* Line 1806 of yacc.c */ #line 3138 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1245: /* Line 1806 of yacc.c */ #line 3138 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1246: /* Line 1806 of yacc.c */ #line 3138 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1247: /* Line 1806 of yacc.c */ #line 3138 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1248: /* Line 1806 of yacc.c */ #line 3138 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1249: /* Line 1806 of yacc.c */ #line 3142 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1250: /* Line 1806 of yacc.c */ #line 3142 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1251: /* Line 1806 of yacc.c */ #line 3142 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1252: /* Line 1806 of yacc.c */ #line 3142 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1253: /* Line 1806 of yacc.c */ #line 3142 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1254: /* Line 1806 of yacc.c */ #line 3142 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1255: /* Line 1806 of yacc.c */ #line 3142 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1256: /* Line 1806 of yacc.c */ #line 3146 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1257: /* Line 1806 of yacc.c */ #line 3146 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1258: /* Line 1806 of yacc.c */ #line 3146 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1259: /* Line 1806 of yacc.c */ #line 3146 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1260: /* Line 1806 of yacc.c */ #line 3146 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1261: /* Line 1806 of yacc.c */ #line 3146 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1262: /* Line 1806 of yacc.c */ #line 3146 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1263: /* Line 1806 of yacc.c */ #line 3150 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1264: /* Line 1806 of yacc.c */ #line 3150 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1265: /* Line 1806 of yacc.c */ #line 3150 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1266: /* Line 1806 of yacc.c */ #line 3150 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 1267: /* Line 1806 of yacc.c */ #line 3150 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1268: /* Line 1806 of yacc.c */ #line 3150 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 1269: /* Line 1806 of yacc.c */ #line 3150 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1270: /* Line 1806 of yacc.c */ #line 3155 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1271: /* Line 1806 of yacc.c */ #line 3157 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1272: /* Line 1806 of yacc.c */ #line 3159 "VParseBison.y" { (yyval.str) = "event_control"; } break; case 1273: /* Line 1806 of yacc.c */ #line 3163 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1274: /* Line 1806 of yacc.c */ #line 3164 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+(yyvsp[(5) - (5)].str); } break; case 1275: /* Line 1806 of yacc.c */ #line 3166 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1276: /* Line 1806 of yacc.c */ #line 3168 "VParseBison.y" { (yyval.str) = "event_control"; } break; case 1277: /* Line 1806 of yacc.c */ #line 3174 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1278: /* Line 1806 of yacc.c */ #line 3175 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 1279: /* Line 1806 of yacc.c */ #line 3179 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1280: /* Line 1806 of yacc.c */ #line 3180 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 1281: /* Line 1806 of yacc.c */ #line 3181 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+","; } break; case 1282: /* Line 1806 of yacc.c */ #line 3186 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1283: /* Line 1806 of yacc.c */ #line 3187 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1284: /* Line 1806 of yacc.c */ #line 3188 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 1285: /* Line 1806 of yacc.c */ #line 3193 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1286: /* Line 1806 of yacc.c */ #line 3194 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1287: /* Line 1806 of yacc.c */ #line 3195 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 1288: /* Line 1806 of yacc.c */ #line 3199 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1289: /* Line 1806 of yacc.c */ #line 3200 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 1290: /* Line 1806 of yacc.c */ #line 3204 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1291: /* Line 1806 of yacc.c */ #line 3205 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 1292: /* Line 1806 of yacc.c */ #line 3209 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1293: /* Line 1806 of yacc.c */ #line 3210 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 1294: /* Line 1806 of yacc.c */ #line 3214 "VParseBison.y" { (yyval.str) = ""; } break; case 1295: /* Line 1806 of yacc.c */ #line 3215 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1296: /* Line 1806 of yacc.c */ #line 3219 "VParseBison.y" { (yyval.str) = ""; } break; case 1297: /* Line 1806 of yacc.c */ #line 3220 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1298: /* Line 1806 of yacc.c */ #line 3224 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1299: /* Line 1806 of yacc.c */ #line 3225 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 1300: /* Line 1806 of yacc.c */ #line 3229 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1301: /* Line 1806 of yacc.c */ #line 3230 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 1302: /* Line 1806 of yacc.c */ #line 3234 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)=(yyvsp[(1) - (4)].str)+(yyvsp[(2) - (4)].str)+(yyvsp[(3) - (4)].str)+(yyvsp[(4) - (4)].str); } break; case 1303: /* Line 1806 of yacc.c */ #line 3235 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str)=(yyvsp[(1) - (5)].str)+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+(yyvsp[(5) - (5)].str); } break; case 1304: /* Line 1806 of yacc.c */ #line 3239 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)=(yyvsp[(1) - (4)].str)+(yyvsp[(2) - (4)].str)+(yyvsp[(3) - (4)].str)+(yyvsp[(4) - (4)].str); } break; case 1305: /* Line 1806 of yacc.c */ #line 3240 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str)=(yyvsp[(1) - (5)].str)+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+(yyvsp[(5) - (5)].str); } break; case 1306: /* Line 1806 of yacc.c */ #line 3251 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)="{<<"+(yyvsp[(3) - (4)].str)+"}"; } break; case 1307: /* Line 1806 of yacc.c */ #line 3252 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str)="{>>"+(yyvsp[(3) - (4)].str)+"}"; } break; case 1308: /* Line 1806 of yacc.c */ #line 3253 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str)="{<<"+(yyvsp[(3) - (5)].str)+" "+(yyvsp[(4) - (5)].str)+"}"; } break; case 1309: /* Line 1806 of yacc.c */ #line 3254 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str)="{>>"+(yyvsp[(3) - (5)].str)+" "+(yyvsp[(4) - (5)].str)+"}"; } break; case 1310: /* Line 1806 of yacc.c */ #line 3258 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1311: /* Line 1806 of yacc.c */ #line 3259 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1312: /* Line 1806 of yacc.c */ #line 3266 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)="{"+(yyvsp[(2) - (3)].str)+"}"; } break; case 1313: /* Line 1806 of yacc.c */ #line 3270 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1314: /* Line 1806 of yacc.c */ #line 3271 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 1315: /* Line 1806 of yacc.c */ #line 3276 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 1316: /* Line 1806 of yacc.c */ #line 3277 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str)=(yyvsp[(1) - (5)].str); } break; case 1317: /* Line 1806 of yacc.c */ #line 3278 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (7)].fl); (yyval.str)=(yyvsp[(1) - (7)].str); } break; case 1318: /* Line 1806 of yacc.c */ #line 3279 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (7)].fl); (yyval.str)=(yyvsp[(1) - (7)].str); } break; case 1319: /* Line 1806 of yacc.c */ #line 3280 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (7)].fl); (yyval.str)=(yyvsp[(1) - (7)].str); } break; case 1320: /* Line 1806 of yacc.c */ #line 3294 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); INSTPREP((yyvsp[(1) - (1)].str),0); } break; case 1321: /* Line 1806 of yacc.c */ #line 3295 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); INSTPREP((yyvsp[(1) - (1)].str),0); } break; case 1322: /* Line 1806 of yacc.c */ #line 3296 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); INSTPREP((yyvsp[(1) - (1)].str),0); } break; case 1323: /* Line 1806 of yacc.c */ #line 3297 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); INSTPREP((yyvsp[(1) - (1)].str),0); } break; case 1324: /* Line 1806 of yacc.c */ #line 3298 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); INSTPREP((yyvsp[(1) - (1)].str),0); } break; case 1325: /* Line 1806 of yacc.c */ #line 3299 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); INSTPREP((yyvsp[(1) - (1)].str),0); } break; case 1326: /* Line 1806 of yacc.c */ #line 3300 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); INSTPREP((yyvsp[(1) - (1)].str),0); } break; case 1327: /* Line 1806 of yacc.c */ #line 3301 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); INSTPREP((yyvsp[(1) - (1)].str),0); } break; case 1328: /* Line 1806 of yacc.c */ #line 3302 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); INSTPREP((yyvsp[(1) - (1)].str),0); } break; case 1329: /* Line 1806 of yacc.c */ #line 3307 "VParseBison.y" { } break; case 1330: /* Line 1806 of yacc.c */ #line 3308 "VParseBison.y" { } break; case 1331: /* Line 1806 of yacc.c */ #line 3309 "VParseBison.y" { } break; case 1332: /* Line 1806 of yacc.c */ #line 3313 "VParseBison.y" { } break; case 1333: /* Line 1806 of yacc.c */ #line 3314 "VParseBison.y" { } break; case 1334: /* Line 1806 of yacc.c */ #line 3318 "VParseBison.y" { } break; case 1335: /* Line 1806 of yacc.c */ #line 3319 "VParseBison.y" { } break; case 1336: /* Line 1806 of yacc.c */ #line 3326 "VParseBison.y" { } break; case 1337: /* Line 1806 of yacc.c */ #line 3330 "VParseBison.y" { } break; case 1338: /* Line 1806 of yacc.c */ #line 3331 "VParseBison.y" { } break; case 1339: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1340: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1341: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1342: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1343: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1344: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1345: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1346: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1347: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1348: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1349: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1350: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1351: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1352: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1353: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1354: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1355: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1356: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1357: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1358: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1359: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1360: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1361: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1362: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1363: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1364: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1365: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1366: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1367: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1368: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1369: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1370: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1371: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1372: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1373: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1374: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1375: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1376: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1377: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1378: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1379: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1380: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1381: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1382: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1383: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1384: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1385: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1386: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1387: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1388: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1389: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1390: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1391: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1392: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1393: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1394: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1395: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1396: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1397: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1398: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1399: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1400: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1401: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1402: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1403: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1404: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1405: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1406: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1407: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1408: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1409: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1410: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1411: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1412: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1413: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1414: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1415: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1416: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1417: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1418: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1419: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1420: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1421: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1422: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1423: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1424: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1425: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1426: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1427: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1428: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1429: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1430: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1431: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1432: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1433: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1434: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1435: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1436: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1437: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1438: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1439: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1440: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1441: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1442: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1443: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1444: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1445: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1446: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1447: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1448: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1449: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1450: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1451: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1452: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1453: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1454: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1455: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1456: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1457: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1458: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1459: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1460: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1461: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1462: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1463: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1464: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1465: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1466: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1467: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1468: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1469: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1470: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1471: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1472: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1473: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1474: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1475: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1476: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1477: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1478: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1479: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1480: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1481: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1482: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1483: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1484: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1485: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1486: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1487: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1488: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1489: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1490: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1491: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1492: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1493: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1494: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1495: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1496: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1497: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1498: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1499: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1500: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1501: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1502: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1503: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1504: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1505: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1506: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1507: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1508: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1509: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1510: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1511: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1512: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1513: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1514: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1515: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1516: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1517: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1518: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1519: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1520: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1521: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1522: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1523: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1524: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1525: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1526: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1527: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1528: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1529: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1530: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1531: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1532: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1533: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1534: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1535: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1536: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1537: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1538: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1539: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1540: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1541: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1542: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1543: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1544: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1545: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1546: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1547: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1548: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1549: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1550: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1551: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1552: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1553: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1554: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1555: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1556: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1557: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1558: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1559: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1560: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1561: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1562: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1563: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1564: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1565: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1566: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1567: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1568: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1569: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1570: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1571: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1572: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1573: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1574: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1575: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1576: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1577: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1578: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1579: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1580: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1581: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1582: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1583: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1584: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1585: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1586: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1587: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1588: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1589: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1590: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1591: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1592: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1593: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1594: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1595: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1596: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1597: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1598: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1599: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1600: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1601: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1602: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1603: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1604: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1605: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1606: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1607: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1608: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1609: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1610: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1611: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1612: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1613: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1614: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1615: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1616: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1617: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1618: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1619: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1620: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1621: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1622: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1623: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1624: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1625: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1626: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1627: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1628: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1629: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1630: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1631: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1632: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1633: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1634: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1635: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1636: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1637: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1638: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1639: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1640: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1641: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1642: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1643: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1644: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1645: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1646: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1647: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1648: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1649: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1650: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1651: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1652: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1653: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1654: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1655: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1656: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1657: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1658: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1659: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1660: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1661: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1662: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1663: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1664: /* Line 1806 of yacc.c */ #line 3335 "VParseBison.y" { } break; case 1665: /* Line 1806 of yacc.c */ #line 3336 "VParseBison.y" { } break; case 1666: /* Line 1806 of yacc.c */ #line 3337 "VParseBison.y" {} break; case 1667: /* Line 1806 of yacc.c */ #line 3344 "VParseBison.y" { } break; case 1668: /* Line 1806 of yacc.c */ #line 3345 "VParseBison.y" { } break; case 1669: /* Line 1806 of yacc.c */ #line 3349 "VParseBison.y" { } break; case 1670: /* Line 1806 of yacc.c */ #line 3350 "VParseBison.y" { } break; case 1671: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1672: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1673: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1674: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1675: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1676: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1677: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1678: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1679: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1680: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1681: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1682: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1683: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1684: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1685: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1686: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1687: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1688: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1689: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1690: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1691: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1692: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1693: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1694: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1695: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1696: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1697: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1698: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1699: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1700: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1701: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1702: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1703: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1704: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1705: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1706: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1707: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1708: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1709: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1710: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1711: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1712: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1713: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1714: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1715: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1716: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1717: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1718: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1719: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1720: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1721: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1722: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1723: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1724: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1725: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1726: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1727: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1728: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1729: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1730: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1731: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1732: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1733: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1734: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1735: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1736: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1737: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1738: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1739: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1740: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1741: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1742: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1743: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1744: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1745: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1746: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1747: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1748: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1749: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1750: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1751: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1752: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1753: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1754: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1755: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1756: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1757: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1758: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1759: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1760: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1761: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1762: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1763: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1764: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1765: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1766: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1767: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1768: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1769: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1770: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1771: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1772: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1773: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1774: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1775: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1776: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1777: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1778: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1779: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1780: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1781: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1782: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1783: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1784: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1785: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1786: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1787: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1788: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1789: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1790: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1791: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1792: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1793: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1794: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1795: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1796: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1797: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1798: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1799: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1800: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1801: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1802: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1803: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1804: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1805: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1806: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1807: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1808: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1809: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1810: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1811: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1812: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1813: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1814: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1815: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1816: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1817: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1818: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1819: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1820: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1821: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1822: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1823: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1824: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1825: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1826: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1827: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1828: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1829: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1830: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1831: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1832: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1833: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1834: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1835: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1836: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1837: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1838: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1839: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1840: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1841: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1842: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1843: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1844: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1845: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1846: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1847: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1848: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1849: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1850: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1851: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1852: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1853: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1854: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1855: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1856: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1857: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1858: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1859: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1860: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1861: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1862: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1863: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1864: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1865: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1866: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1867: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1868: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1869: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1870: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1871: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1872: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1873: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1874: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1875: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1876: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1877: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1878: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1879: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1880: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1881: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1882: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1883: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1884: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1885: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1886: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1887: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1888: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1889: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1890: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1891: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1892: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1893: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1894: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1895: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1896: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1897: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1898: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1899: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1900: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1901: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1902: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1903: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1904: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1905: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1906: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1907: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1908: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1909: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1910: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1911: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1912: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1913: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1914: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1915: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1916: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1917: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1918: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1919: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1920: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1921: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1922: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1923: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1924: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1925: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1926: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1927: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1928: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1929: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1930: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1931: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1932: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1933: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1934: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1935: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1936: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1937: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1938: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1939: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1940: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1941: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1942: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1943: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1944: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1945: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1946: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1947: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1948: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1949: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1950: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1951: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1952: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1953: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1954: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1955: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1956: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1957: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1958: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1959: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1960: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1961: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1962: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1963: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1964: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1965: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1966: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1967: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1968: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1969: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1970: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1971: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1972: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1973: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1974: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1975: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1976: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1977: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1978: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1979: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1980: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1981: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1982: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1983: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1984: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1985: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1986: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1987: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1988: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1989: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1990: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1991: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1992: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1993: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1994: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1995: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1996: /* Line 1806 of yacc.c */ #line 3354 "VParseBison.y" { } break; case 1997: /* Line 1806 of yacc.c */ #line 3355 "VParseBison.y" { } break; case 1998: /* Line 1806 of yacc.c */ #line 3356 "VParseBison.y" {} break; case 1999: /* Line 1806 of yacc.c */ #line 3360 "VParseBison.y" { } break; case 2000: /* Line 1806 of yacc.c */ #line 3364 "VParseBison.y" { } break; case 2001: /* Line 1806 of yacc.c */ #line 3365 "VParseBison.y" { } break; case 2002: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2003: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2004: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2005: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2006: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2007: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2008: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2009: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2010: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2011: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2012: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2013: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2014: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2015: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2016: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2017: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2018: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2019: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2020: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2021: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2022: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2023: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2024: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2025: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2026: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2027: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2028: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2029: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2030: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2031: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2032: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2033: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2034: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2035: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2036: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2037: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2038: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2039: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2040: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2041: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2042: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2043: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2044: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2045: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2046: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2047: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2048: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2049: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2050: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2051: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2052: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2053: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2054: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2055: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2056: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2057: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2058: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2059: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2060: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2061: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2062: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2063: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2064: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2065: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2066: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2067: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2068: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2069: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2070: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2071: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2072: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2073: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2074: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2075: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2076: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2077: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2078: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2079: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2080: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2081: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2082: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2083: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2084: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2085: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2086: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2087: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2088: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2089: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2090: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2091: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2092: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2093: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2094: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2095: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2096: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2097: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2098: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2099: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2100: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2101: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2102: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2103: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2104: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2105: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2106: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2107: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2108: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2109: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2110: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2111: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2112: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2113: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2114: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2115: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2116: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2117: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2118: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2119: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2120: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2121: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2122: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2123: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2124: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2125: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2126: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2127: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2128: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2129: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2130: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2131: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2132: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2133: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2134: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2135: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2136: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2137: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2138: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2139: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2140: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2141: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2142: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2143: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2144: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2145: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2146: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2147: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2148: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2149: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2150: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2151: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2152: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2153: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2154: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2155: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2156: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2157: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2158: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2159: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2160: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2161: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2162: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2163: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2164: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2165: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2166: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2167: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2168: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2169: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2170: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2171: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2172: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2173: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2174: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2175: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2176: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2177: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2178: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2179: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2180: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2181: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2182: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2183: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2184: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2185: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2186: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2187: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2188: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2189: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2190: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2191: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2192: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2193: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2194: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2195: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2196: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2197: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2198: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2199: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2200: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2201: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2202: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2203: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2204: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2205: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2206: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2207: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2208: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2209: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2210: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2211: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2212: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2213: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2214: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2215: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2216: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2217: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2218: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2219: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2220: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2221: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2222: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2223: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2224: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2225: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2226: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2227: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2228: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2229: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2230: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2231: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2232: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2233: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2234: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2235: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2236: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2237: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2238: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2239: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2240: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2241: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2242: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2243: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2244: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2245: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2246: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2247: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2248: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2249: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2250: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2251: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2252: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2253: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2254: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2255: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2256: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2257: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2258: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2259: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2260: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2261: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2262: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2263: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2264: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2265: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2266: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2267: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2268: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2269: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2270: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2271: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2272: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2273: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2274: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2275: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2276: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2277: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2278: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2279: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2280: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2281: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2282: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2283: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2284: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2285: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2286: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2287: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2288: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2289: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2290: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2291: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2292: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2293: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2294: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2295: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2296: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2297: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2298: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2299: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2300: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2301: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2302: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2303: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2304: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2305: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2306: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2307: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2308: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2309: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2310: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2311: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2312: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2313: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2314: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2315: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2316: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2317: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2318: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2319: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2320: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2321: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2322: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2323: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2324: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2325: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2326: /* Line 1806 of yacc.c */ #line 3369 "VParseBison.y" { } break; case 2327: /* Line 1806 of yacc.c */ #line 3370 "VParseBison.y" {} break; case 2328: /* Line 1806 of yacc.c */ #line 3377 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 2329: /* Line 1806 of yacc.c */ #line 3381 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 2330: /* Line 1806 of yacc.c */ #line 3382 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 2331: /* Line 1806 of yacc.c */ #line 3383 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 2332: /* Line 1806 of yacc.c */ #line 3388 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); ERRSVKWD((yyvsp[(1) - (1)].fl),(yyval.str)); } break; case 2333: /* Line 1806 of yacc.c */ #line 3389 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); ERRSVKWD((yyvsp[(1) - (1)].fl),(yyval.str)); } break; case 2334: /* Line 1806 of yacc.c */ #line 3394 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2335: /* Line 1806 of yacc.c */ #line 3395 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2336: /* Line 1806 of yacc.c */ #line 3398 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = (yyvsp[(1) - (4)].str)+" "+(yyvsp[(2) - (4)].str)+(yyvsp[(3) - (4)].str)+(yyvsp[(4) - (4)].str); } break; case 2337: /* Line 1806 of yacc.c */ #line 3399 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = (yyvsp[(1) - (4)].str)+" "+(yyvsp[(2) - (4)].str)+(yyvsp[(3) - (4)].str)+(yyvsp[(4) - (4)].str); } break; case 2338: /* Line 1806 of yacc.c */ #line 3400 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2339: /* Line 1806 of yacc.c */ #line 3401 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2340: /* Line 1806 of yacc.c */ #line 3405 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2341: /* Line 1806 of yacc.c */ #line 3406 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 2342: /* Line 1806 of yacc.c */ #line 3410 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2343: /* Line 1806 of yacc.c */ #line 3411 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+","+(yyvsp[(3) - (3)].str); } break; case 2344: /* Line 1806 of yacc.c */ #line 3415 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2345: /* Line 1806 of yacc.c */ #line 3417 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "this."+(yyvsp[(3) - (3)].str); } break; case 2346: /* Line 1806 of yacc.c */ #line 3418 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "super."+(yyvsp[(3) - (3)].str); } break; case 2347: /* Line 1806 of yacc.c */ #line 3419 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "this.super."+(yyvsp[(3) - (5)].str); } break; case 2348: /* Line 1806 of yacc.c */ #line 3421 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2349: /* Line 1806 of yacc.c */ #line 3422 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2350: /* Line 1806 of yacc.c */ #line 3428 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2351: /* Line 1806 of yacc.c */ #line 3430 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "this."+(yyvsp[(3) - (3)].str); } break; case 2352: /* Line 1806 of yacc.c */ #line 3431 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = "super."+(yyvsp[(3) - (3)].str); } break; case 2353: /* Line 1806 of yacc.c */ #line 3432 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "this.super."+(yyvsp[(3) - (5)].str); } break; case 2354: /* Line 1806 of yacc.c */ #line 3434 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2355: /* Line 1806 of yacc.c */ #line 3435 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2356: /* Line 1806 of yacc.c */ #line 3439 "VParseBison.y" { } break; case 2357: /* Line 1806 of yacc.c */ #line 3440 "VParseBison.y" { } break; case 2358: /* Line 1806 of yacc.c */ #line 3445 "VParseBison.y" { } break; case 2359: /* Line 1806 of yacc.c */ #line 3451 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2360: /* Line 1806 of yacc.c */ #line 3455 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 2361: /* Line 1806 of yacc.c */ #line 3456 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2362: /* Line 1806 of yacc.c */ #line 3460 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 2363: /* Line 1806 of yacc.c */ #line 3461 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2364: /* Line 1806 of yacc.c */ #line 3465 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2365: /* Line 1806 of yacc.c */ #line 3466 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 2366: /* Line 1806 of yacc.c */ #line 3470 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2367: /* Line 1806 of yacc.c */ #line 3471 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 2368: /* Line 1806 of yacc.c */ #line 3480 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2369: /* Line 1806 of yacc.c */ #line 3482 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = (yyvsp[(1) - (4)].str)+"["+(yyvsp[(3) - (4)].str)+"]"; } break; case 2370: /* Line 1806 of yacc.c */ #line 3483 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = (yyvsp[(1) - (6)].str)+"["+(yyvsp[(3) - (6)].str)+":"+(yyvsp[(5) - (6)].str)+"]"; } break; case 2371: /* Line 1806 of yacc.c */ #line 3485 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = (yyvsp[(1) - (6)].str)+"["+(yyvsp[(3) - (6)].str)+"+:"+(yyvsp[(5) - (6)].str)+"]"; } break; case 2372: /* Line 1806 of yacc.c */ #line 3486 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = (yyvsp[(1) - (6)].str)+"["+(yyvsp[(3) - (6)].str)+"-:"+(yyvsp[(5) - (6)].str)+"]"; } break; case 2373: /* Line 1806 of yacc.c */ #line 3491 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2374: /* Line 1806 of yacc.c */ #line 3493 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = (yyvsp[(1) - (4)].str)+"["+(yyvsp[(3) - (4)].str)+"]"; } break; case 2375: /* Line 1806 of yacc.c */ #line 3494 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = (yyvsp[(1) - (6)].str)+"["+(yyvsp[(3) - (6)].str)+":"+(yyvsp[(5) - (6)].str)+"]"; } break; case 2376: /* Line 1806 of yacc.c */ #line 3496 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = (yyvsp[(1) - (6)].str)+"["+(yyvsp[(3) - (6)].str)+"+:"+(yyvsp[(5) - (6)].str)+"]"; } break; case 2377: /* Line 1806 of yacc.c */ #line 3497 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = (yyvsp[(1) - (6)].str)+"["+(yyvsp[(3) - (6)].str)+"-:"+(yyvsp[(5) - (6)].str)+"]"; } break; case 2378: /* Line 1806 of yacc.c */ #line 3499 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = (yyvsp[(1) - (6)].str)+"["+(yyvsp[(3) - (6)].str)+","+(yyvsp[(5) - (6)].str)+"]"; } break; case 2379: /* Line 1806 of yacc.c */ #line 3503 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2380: /* Line 1806 of yacc.c */ #line 3507 "VParseBison.y" { } break; case 2381: /* Line 1806 of yacc.c */ #line 3508 "VParseBison.y" { } break; case 2382: /* Line 1806 of yacc.c */ #line 3509 "VParseBison.y" { } break; case 2383: /* Line 1806 of yacc.c */ #line 3517 "VParseBison.y" { PARSEP->symPopScope(VAstType::CLOCKING); } break; case 2384: /* Line 1806 of yacc.c */ #line 3522 "VParseBison.y" { PARSEP->symPushNewAnon(VAstType::CLOCKING); } break; case 2385: /* Line 1806 of yacc.c */ #line 3523 "VParseBison.y" { PARSEP->symPushNew(VAstType::CLOCKING,(yyvsp[(2) - (2)].str)); } break; case 2386: /* Line 1806 of yacc.c */ #line 3524 "VParseBison.y" { PARSEP->symPushNewAnon(VAstType::CLOCKING); } break; case 2387: /* Line 1806 of yacc.c */ #line 3525 "VParseBison.y" { PARSEP->symPushNew(VAstType::CLOCKING,(yyvsp[(3) - (3)].str)); } break; case 2388: /* Line 1806 of yacc.c */ #line 3526 "VParseBison.y" { PARSEP->symPushNewAnon(VAstType::CLOCKING); } break; case 2389: /* Line 1806 of yacc.c */ #line 3527 "VParseBison.y" { PARSEP->symPushNew(VAstType::CLOCKING,(yyvsp[(3) - (3)].str)); } break; case 2390: /* Line 1806 of yacc.c */ #line 3531 "VParseBison.y" { } break; case 2391: /* Line 1806 of yacc.c */ #line 3532 "VParseBison.y" { } break; case 2392: /* Line 1806 of yacc.c */ #line 3536 "VParseBison.y" { } break; case 2393: /* Line 1806 of yacc.c */ #line 3537 "VParseBison.y" { } break; case 2394: /* Line 1806 of yacc.c */ #line 3541 "VParseBison.y" { } break; case 2395: /* Line 1806 of yacc.c */ #line 3542 "VParseBison.y" { } break; case 2396: /* Line 1806 of yacc.c */ #line 3546 "VParseBison.y" { } break; case 2397: /* Line 1806 of yacc.c */ #line 3547 "VParseBison.y" { } break; case 2398: /* Line 1806 of yacc.c */ #line 3548 "VParseBison.y" { } break; case 2399: /* Line 1806 of yacc.c */ #line 3552 "VParseBison.y" { } break; case 2400: /* Line 1806 of yacc.c */ #line 3553 "VParseBison.y" { } break; case 2401: /* Line 1806 of yacc.c */ #line 3554 "VParseBison.y" { } break; case 2402: /* Line 1806 of yacc.c */ #line 3558 "VParseBison.y" { } break; case 2403: /* Line 1806 of yacc.c */ #line 3559 "VParseBison.y" { } break; case 2404: /* Line 1806 of yacc.c */ #line 3560 "VParseBison.y" { } break; case 2405: /* Line 1806 of yacc.c */ #line 3561 "VParseBison.y" { } break; case 2406: /* Line 1806 of yacc.c */ #line 3565 "VParseBison.y" { } break; case 2407: /* Line 1806 of yacc.c */ #line 3566 "VParseBison.y" { } break; case 2408: /* Line 1806 of yacc.c */ #line 3570 "VParseBison.y" { } break; case 2409: /* Line 1806 of yacc.c */ #line 3571 "VParseBison.y" { } break; case 2410: /* Line 1806 of yacc.c */ #line 3575 "VParseBison.y" { } break; case 2411: /* Line 1806 of yacc.c */ #line 3576 "VParseBison.y" { } break; case 2412: /* Line 1806 of yacc.c */ #line 3580 "VParseBison.y" { } break; case 2413: /* Line 1806 of yacc.c */ #line 3581 "VParseBison.y" { } break; case 2414: /* Line 1806 of yacc.c */ #line 3582 "VParseBison.y" { } break; case 2415: /* Line 1806 of yacc.c */ #line 3583 "VParseBison.y" { } break; case 2416: /* Line 1806 of yacc.c */ #line 3584 "VParseBison.y" { NEED_S09((yyvsp[(1) - (1)].fl),"edge"); } break; case 2417: /* Line 1806 of yacc.c */ #line 3585 "VParseBison.y" { NEED_S09((yyvsp[(1) - (2)].fl),"edge"); } break; case 2418: /* Line 1806 of yacc.c */ #line 3586 "VParseBison.y" { } break; case 2419: /* Line 1806 of yacc.c */ #line 3590 "VParseBison.y" { } break; case 2420: /* Line 1806 of yacc.c */ #line 3591 "VParseBison.y" { } break; case 2421: /* Line 1806 of yacc.c */ #line 3592 "VParseBison.y" { } break; case 2422: /* Line 1806 of yacc.c */ #line 3599 "VParseBison.y" { } break; case 2423: /* Line 1806 of yacc.c */ #line 3600 "VParseBison.y" { } break; case 2424: /* Line 1806 of yacc.c */ #line 3601 "VParseBison.y" { } break; case 2425: /* Line 1806 of yacc.c */ #line 3605 "VParseBison.y" { } break; case 2426: /* Line 1806 of yacc.c */ #line 3606 "VParseBison.y" { } break; case 2427: /* Line 1806 of yacc.c */ #line 3610 "VParseBison.y" { } break; case 2428: /* Line 1806 of yacc.c */ #line 3611 "VParseBison.y" { } break; case 2429: /* Line 1806 of yacc.c */ #line 3615 "VParseBison.y" { } break; case 2430: /* Line 1806 of yacc.c */ #line 3616 "VParseBison.y" { } break; case 2431: /* Line 1806 of yacc.c */ #line 3619 "VParseBison.y" { } break; case 2432: /* Line 1806 of yacc.c */ #line 3623 "VParseBison.y" { } break; case 2433: /* Line 1806 of yacc.c */ #line 3624 "VParseBison.y" { } break; case 2434: /* Line 1806 of yacc.c */ #line 3629 "VParseBison.y" { } break; case 2435: /* Line 1806 of yacc.c */ #line 3631 "VParseBison.y" { } break; case 2436: /* Line 1806 of yacc.c */ #line 3633 "VParseBison.y" { } break; case 2437: /* Line 1806 of yacc.c */ #line 3638 "VParseBison.y" { } break; case 2438: /* Line 1806 of yacc.c */ #line 3640 "VParseBison.y" { } break; case 2439: /* Line 1806 of yacc.c */ #line 3642 "VParseBison.y" { } break; case 2440: /* Line 1806 of yacc.c */ #line 3644 "VParseBison.y" { } break; case 2441: /* Line 1806 of yacc.c */ #line 3646 "VParseBison.y" { } break; case 2442: /* Line 1806 of yacc.c */ #line 3648 "VParseBison.y" { } break; case 2443: /* Line 1806 of yacc.c */ #line 3652 "VParseBison.y" { } break; case 2444: /* Line 1806 of yacc.c */ #line 3656 "VParseBison.y" { } break; case 2445: /* Line 1806 of yacc.c */ #line 3657 "VParseBison.y" { } break; case 2446: /* Line 1806 of yacc.c */ #line 3664 "VParseBison.y" { } break; case 2447: /* Line 1806 of yacc.c */ #line 3666 "VParseBison.y" { } break; case 2448: /* Line 1806 of yacc.c */ #line 3668 "VParseBison.y" { } break; case 2449: /* Line 1806 of yacc.c */ #line 3670 "VParseBison.y" { } break; case 2450: /* Line 1806 of yacc.c */ #line 3673 "VParseBison.y" { } break; case 2451: /* Line 1806 of yacc.c */ #line 3674 "VParseBison.y" { } break; case 2452: /* Line 1806 of yacc.c */ #line 3676 "VParseBison.y" { } break; case 2453: /* Line 1806 of yacc.c */ #line 3682 "VParseBison.y" { PARSEP->symPopScope(VAstType::PROPERTY); } break; case 2454: /* Line 1806 of yacc.c */ #line 3687 "VParseBison.y" { PARSEP->symPushNew(VAstType::PROPERTY,(yyvsp[(2) - (2)].str)); } break; case 2455: /* Line 1806 of yacc.c */ #line 3691 "VParseBison.y" { } break; case 2456: /* Line 1806 of yacc.c */ #line 3692 "VParseBison.y" {VARRESET_LIST(""); VARIO("input"); } break; case 2457: /* Line 1806 of yacc.c */ #line 3693 "VParseBison.y" { VARRESET_NONLIST(""); } break; case 2458: /* Line 1806 of yacc.c */ #line 3697 "VParseBison.y" { } break; case 2459: /* Line 1806 of yacc.c */ #line 3698 "VParseBison.y" { } break; case 2460: /* Line 1806 of yacc.c */ #line 3708 "VParseBison.y" { } break; case 2461: /* Line 1806 of yacc.c */ #line 3713 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 2462: /* Line 1806 of yacc.c */ #line 3715 "VParseBison.y" { VARDTYPE((yyvsp[(2) - (2)].str)); } break; case 2463: /* Line 1806 of yacc.c */ #line 3716 "VParseBison.y" { VARDTYPE((yyvsp[(3) - (3)].str)); } break; case 2464: /* Line 1806 of yacc.c */ #line 3717 "VParseBison.y" { VARDTYPE((yyvsp[(3) - (3)].str)); } break; case 2465: /* Line 1806 of yacc.c */ #line 3718 "VParseBison.y" { VARDTYPE(SPACED((yyvsp[(2) - (3)].str),(yyvsp[(3) - (3)].str))); } break; case 2466: /* Line 1806 of yacc.c */ #line 3719 "VParseBison.y" { /*VARDTYPE-same*/ } break; case 2467: /* Line 1806 of yacc.c */ #line 3723 "VParseBison.y" { VARDONE((yyvsp[(1) - (2)].fl), (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str), ""); PINNUMINC(); } break; case 2468: /* Line 1806 of yacc.c */ #line 3725 "VParseBison.y" { VARDONE((yyvsp[(1) - (4)].fl), (yyvsp[(1) - (4)].str), (yyvsp[(2) - (4)].str), (yyvsp[(4) - (4)].str)); PINNUMINC(); } break; case 2469: /* Line 1806 of yacc.c */ #line 3729 "VParseBison.y" { } break; case 2470: /* Line 1806 of yacc.c */ #line 3730 "VParseBison.y" { } break; case 2471: /* Line 1806 of yacc.c */ #line 3731 "VParseBison.y" { } break; case 2472: /* Line 1806 of yacc.c */ #line 3735 "VParseBison.y" { } break; case 2473: /* Line 1806 of yacc.c */ #line 3738 "VParseBison.y" { } break; case 2474: /* Line 1806 of yacc.c */ #line 3742 "VParseBison.y" { } break; case 2475: /* Line 1806 of yacc.c */ #line 3743 "VParseBison.y" { } break; case 2476: /* Line 1806 of yacc.c */ #line 3749 "VParseBison.y" { PARSEP->symPopScope(VAstType::SEQUENCE); } break; case 2477: /* Line 1806 of yacc.c */ #line 3754 "VParseBison.y" { PARSEP->symPushNew(VAstType::SEQUENCE,(yyvsp[(2) - (2)].str)); } break; case 2478: /* Line 1806 of yacc.c */ #line 3764 "VParseBison.y" { } break; case 2479: /* Line 1806 of yacc.c */ #line 3768 "VParseBison.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2480: /* Line 1806 of yacc.c */ #line 3769 "VParseBison.y" { (yyval.str) = "property"; } break; case 2481: /* Line 1806 of yacc.c */ #line 3775 "VParseBison.y" { (yyval.str) = "sequence"; } break; case 2482: /* Line 1806 of yacc.c */ #line 3778 "VParseBison.y" { (yyval.str) = "untyped"; } break; case 2483: /* Line 1806 of yacc.c */ #line 3783 "VParseBison.y" { } break; case 2484: /* Line 1806 of yacc.c */ #line 3784 "VParseBison.y" { } break; case 2485: /* Line 1806 of yacc.c */ #line 3785 "VParseBison.y" { } break; case 2486: /* Line 1806 of yacc.c */ #line 3786 "VParseBison.y" { } break; case 2487: /* Line 1806 of yacc.c */ #line 3792 "VParseBison.y" { } break; case 2488: /* Line 1806 of yacc.c */ #line 3793 "VParseBison.y" { } break; case 2489: /* Line 1806 of yacc.c */ #line 3798 "VParseBison.y" { } break; case 2490: /* Line 1806 of yacc.c */ #line 3799 "VParseBison.y" { } break; case 2491: /* Line 1806 of yacc.c */ #line 3804 "VParseBison.y" { } break; case 2492: /* Line 1806 of yacc.c */ #line 3805 "VParseBison.y" { } break; case 2493: /* Line 1806 of yacc.c */ #line 3810 "VParseBison.y" { } break; case 2494: /* Line 1806 of yacc.c */ #line 3813 "VParseBison.y" { } break; case 2495: /* Line 1806 of yacc.c */ #line 3817 "VParseBison.y" { } break; case 2496: /* Line 1806 of yacc.c */ #line 3818 "VParseBison.y" { } break; case 2497: /* Line 1806 of yacc.c */ #line 3819 "VParseBison.y" { } break; case 2498: /* Line 1806 of yacc.c */ #line 3820 "VParseBison.y" { } break; case 2499: /* Line 1806 of yacc.c */ #line 3824 "VParseBison.y" { } break; case 2500: /* Line 1806 of yacc.c */ #line 3825 "VParseBison.y" { } break; case 2501: /* Line 1806 of yacc.c */ #line 3831 "VParseBison.y" { } break; case 2502: /* Line 1806 of yacc.c */ #line 3832 "VParseBison.y" { } break; case 2503: /* Line 1806 of yacc.c */ #line 3833 "VParseBison.y" { } break; case 2504: /* Line 1806 of yacc.c */ #line 3834 "VParseBison.y" { } break; case 2505: /* Line 1806 of yacc.c */ #line 3851 "VParseBison.y" { (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 2506: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2507: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2508: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2509: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2510: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2511: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2512: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2513: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2514: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2515: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2516: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2517: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2518: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2519: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2520: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2521: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2522: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2523: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2524: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2525: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2526: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2527: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2528: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2529: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2530: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2531: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2532: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2533: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2534: /* Line 1806 of yacc.c */ #line 3854 "VParseBison.y" { } break; case 2535: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { } break; case 2536: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { } break; case 2537: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { } break; case 2538: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2539: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { } break; case 2540: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2541: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2542: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2543: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { } break; case 2544: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { } break; case 2545: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { } break; case 2546: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2547: /* Line 1806 of yacc.c */ #line 3857 "VParseBison.y" { } break; case 2548: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2549: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2550: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2551: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2552: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2553: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2554: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2555: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2556: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2557: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2558: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2559: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2560: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2561: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2562: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2563: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2564: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2565: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2566: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2567: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2568: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2569: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2570: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2571: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2572: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2573: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2574: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2575: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2576: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2577: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2578: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2579: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2580: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2581: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2582: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2583: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2584: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2585: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2586: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2587: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2588: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2589: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2590: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2591: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2592: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2593: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2594: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2595: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2596: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2597: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2598: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2599: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2600: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"?"+(yyvsp[(3) - (5)].str)+":"+(yyvsp[(5) - (5)].str); } break; case 2601: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+" inside {"+(yyvsp[(3) - (5)].str)+"}"; } break; case 2602: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = " tagged "+(yyvsp[(1) - (2)].str); } break; case 2603: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = " tagged "+(yyvsp[(1) - (3)].str)+" "+(yyvsp[(2) - (3)].str); } break; case 2604: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2605: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2606: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2607: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2609: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "{"+(yyvsp[(2) - (6)].str)+"{"+(yyvsp[(4) - (6)].str)+"}}"; } break; case 2610: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (9)].fl); (yyval.str) = "{"+(yyvsp[(2) - (9)].str)+"{"+(yyvsp[(4) - (9)].str)+"}}["+(yyvsp[(8) - (9)].str)+"]"; NEED_S09((yyvsp[(6) - (9)].fl),"{}[]"); } break; case 2611: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 2612: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 2613: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 2614: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2615: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 2616: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 2617: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = "("+(yyvsp[(2) - (4)].str)+")"; } break; case 2618: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "("+(yyvsp[(2) - (8)].str)+":"+(yyvsp[(4) - (8)].str)+":"+(yyvsp[(5) - (8)].str)+")"; } break; case 2619: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "_("+(yyvsp[(4) - (6)].str)+")"; } break; case 2620: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"'("+(yyvsp[(4) - (5)].str)+")"; } break; case 2621: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"'("+(yyvsp[(4) - (5)].str)+")"; } break; case 2622: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = "$"; } break; case 2623: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2624: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2625: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + "&&&" + (yyvsp[(3) - (3)].str); } break; case 2626: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + " matches " + (yyvsp[(3) - (3)].str); } break; case 2627: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + " matches " + (yyvsp[(3) - (3)].str); } break; case 2628: /* Line 1806 of yacc.c */ #line 3860 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str) + " dist " + (yyvsp[(3) - (5)].str)+"..."+(yyvsp[(5) - (5)].str); } break; case 2629: /* Line 1806 of yacc.c */ #line 3871 "VParseBison.y" { } break; case 2630: /* Line 1806 of yacc.c */ #line 3872 "VParseBison.y" { } break; case 2631: /* Line 1806 of yacc.c */ #line 3873 "VParseBison.y" { } break; case 2632: /* Line 1806 of yacc.c */ #line 3880 "VParseBison.y" { } break; case 2633: /* Line 1806 of yacc.c */ #line 3881 "VParseBison.y" { } break; case 2634: /* Line 1806 of yacc.c */ #line 3885 "VParseBison.y" { } break; case 2635: /* Line 1806 of yacc.c */ #line 3887 "VParseBison.y" { } break; case 2636: /* Line 1806 of yacc.c */ #line 3888 "VParseBison.y" { } break; case 2637: /* Line 1806 of yacc.c */ #line 3889 "VParseBison.y" { } break; case 2638: /* Line 1806 of yacc.c */ #line 3890 "VParseBison.y" { } break; case 2639: /* Line 1806 of yacc.c */ #line 3891 "VParseBison.y" { } break; case 2640: /* Line 1806 of yacc.c */ #line 3892 "VParseBison.y" { } break; case 2641: /* Line 1806 of yacc.c */ #line 3893 "VParseBison.y" { } break; case 2642: /* Line 1806 of yacc.c */ #line 3894 "VParseBison.y" { } break; case 2643: /* Line 1806 of yacc.c */ #line 3895 "VParseBison.y" { } break; case 2644: /* Line 1806 of yacc.c */ #line 3896 "VParseBison.y" { } break; case 2645: /* Line 1806 of yacc.c */ #line 3897 "VParseBison.y" { } break; case 2646: /* Line 1806 of yacc.c */ #line 3898 "VParseBison.y" { } break; case 2647: /* Line 1806 of yacc.c */ #line 3899 "VParseBison.y" { } break; case 2648: /* Line 1806 of yacc.c */ #line 3900 "VParseBison.y" { } break; case 2649: /* Line 1806 of yacc.c */ #line 3901 "VParseBison.y" { } break; case 2650: /* Line 1806 of yacc.c */ #line 3902 "VParseBison.y" { } break; case 2651: /* Line 1806 of yacc.c */ #line 3903 "VParseBison.y" { } break; case 2652: /* Line 1806 of yacc.c */ #line 3905 "VParseBison.y" { } break; case 2653: /* Line 1806 of yacc.c */ #line 3906 "VParseBison.y" { } break; case 2654: /* Line 1806 of yacc.c */ #line 3907 "VParseBison.y" { } break; case 2655: /* Line 1806 of yacc.c */ #line 3908 "VParseBison.y" { } break; case 2656: /* Line 1806 of yacc.c */ #line 3909 "VParseBison.y" { } break; case 2657: /* Line 1806 of yacc.c */ #line 3917 "VParseBison.y" { } break; case 2658: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { } break; case 2659: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { } break; case 2660: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { } break; case 2661: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2662: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { } break; case 2663: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2664: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2665: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2666: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { } break; case 2667: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { } break; case 2668: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { } break; case 2669: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2670: /* Line 1806 of yacc.c */ #line 3920 "VParseBison.y" { } break; case 2671: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2672: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2673: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2674: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2675: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2676: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2677: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2678: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2679: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2680: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2681: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2682: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2683: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2684: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2685: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2686: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2687: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2688: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2689: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2690: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2691: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2692: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2693: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2694: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2695: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2696: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2697: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2698: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2699: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2700: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2701: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2702: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2703: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2704: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2705: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2706: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2707: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2708: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2709: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2710: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2711: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2712: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2713: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2714: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2715: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2716: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2717: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2718: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2719: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2720: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2721: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2722: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2723: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"?"+(yyvsp[(3) - (5)].str)+":"+(yyvsp[(5) - (5)].str); } break; case 2724: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+" inside {"+(yyvsp[(3) - (5)].str)+"}"; } break; case 2725: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = " tagged "+(yyvsp[(1) - (2)].str); } break; case 2726: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = " tagged "+(yyvsp[(1) - (3)].str)+" "+(yyvsp[(2) - (3)].str); } break; case 2727: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2728: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2729: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2730: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2732: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "{"+(yyvsp[(2) - (6)].str)+"{"+(yyvsp[(4) - (6)].str)+"}}"; } break; case 2733: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (9)].fl); (yyval.str) = "{"+(yyvsp[(2) - (9)].str)+"{"+(yyvsp[(4) - (9)].str)+"}}["+(yyvsp[(8) - (9)].str)+"]"; NEED_S09((yyvsp[(6) - (9)].fl),"{}[]"); } break; case 2734: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 2735: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 2736: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 2737: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2738: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 2739: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 2740: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = "("+(yyvsp[(2) - (4)].str)+")"; } break; case 2741: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "("+(yyvsp[(2) - (8)].str)+":"+(yyvsp[(4) - (8)].str)+":"+(yyvsp[(5) - (8)].str)+")"; } break; case 2742: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "_("+(yyvsp[(4) - (6)].str)+")"; } break; case 2743: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"'("+(yyvsp[(4) - (5)].str)+")"; } break; case 2744: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"'("+(yyvsp[(4) - (5)].str)+")"; } break; case 2745: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = "$"; } break; case 2746: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2747: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2748: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + "&&&" + (yyvsp[(3) - (3)].str); } break; case 2749: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + " matches " + (yyvsp[(3) - (3)].str); } break; case 2750: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + " matches " + (yyvsp[(3) - (3)].str); } break; case 2751: /* Line 1806 of yacc.c */ #line 3923 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str) + " dist " + (yyvsp[(3) - (5)].str)+"..."+(yyvsp[(5) - (5)].str); } break; case 2752: /* Line 1806 of yacc.c */ #line 3934 "VParseBison.y" { } break; case 2753: /* Line 1806 of yacc.c */ #line 3935 "VParseBison.y" { } break; case 2754: /* Line 1806 of yacc.c */ #line 3940 "VParseBison.y" { } break; case 2755: /* Line 1806 of yacc.c */ #line 3951 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2756: /* Line 1806 of yacc.c */ #line 3952 "VParseBison.y" { } break; case 2757: /* Line 1806 of yacc.c */ #line 3955 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2758: /* Line 1806 of yacc.c */ #line 3956 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2759: /* Line 1806 of yacc.c */ #line 3958 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2760: /* Line 1806 of yacc.c */ #line 3960 "VParseBison.y" { } break; case 2761: /* Line 1806 of yacc.c */ #line 3961 "VParseBison.y" { } break; case 2762: /* Line 1806 of yacc.c */ #line 3962 "VParseBison.y" { } break; case 2763: /* Line 1806 of yacc.c */ #line 3965 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2764: /* Line 1806 of yacc.c */ #line 3967 "VParseBison.y" { } break; case 2765: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2766: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2767: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2768: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2769: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2770: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2771: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2772: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2773: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2774: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = (yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 2775: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2776: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2777: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2778: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2779: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2780: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2781: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2782: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2783: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2784: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2785: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2786: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2787: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = "("+(yyvsp[(2) - (5)].str)+(yyvsp[(3) - (5)].str)+(yyvsp[(4) - (5)].str)+")"; } break; case 2788: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2789: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2790: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2791: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2792: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2793: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2794: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2795: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2796: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2797: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2798: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2799: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2800: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2801: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2802: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2803: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2804: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2805: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2806: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2807: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2808: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2809: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2810: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2811: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2812: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2813: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2814: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2815: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2816: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 2817: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"?"+(yyvsp[(3) - (5)].str)+":"+(yyvsp[(5) - (5)].str); } break; case 2818: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+" inside {"+(yyvsp[(3) - (5)].str)+"}"; } break; case 2819: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str) = " tagged "+(yyvsp[(1) - (2)].str); } break; case 2820: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = " tagged "+(yyvsp[(1) - (3)].str)+" "+(yyvsp[(2) - (3)].str); } break; case 2821: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2822: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2823: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2824: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2826: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "{"+(yyvsp[(2) - (6)].str)+"{"+(yyvsp[(4) - (6)].str)+"}}"; } break; case 2827: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (9)].fl); (yyval.str) = "{"+(yyvsp[(2) - (9)].str)+"{"+(yyvsp[(4) - (9)].str)+"}}["+(yyvsp[(8) - (9)].str)+"]"; NEED_S09((yyvsp[(6) - (9)].fl),"{}[]"); } break; case 2828: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 2829: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 2830: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (11)].fl); (yyval.str) = "{"+(yyvsp[(2) - (11)].str)+"{"+(yyvsp[(4) - (11)].str)+"}}["+(yyvsp[(8) - (11)].str)+(yyvsp[(9) - (11)].str)+(yyvsp[(10) - (11)].str)+"]"; NEED_S09((yyvsp[(6) - (11)].fl),"{}[]"); } break; case 2831: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2832: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 2833: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str)+"."+(yyvsp[(3) - (3)].str); } break; case 2834: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (4)].fl); (yyval.str) = "("+(yyvsp[(2) - (4)].str)+")"; } break; case 2835: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (8)].fl); (yyval.str) = "("+(yyvsp[(2) - (8)].str)+":"+(yyvsp[(4) - (8)].str)+":"+(yyvsp[(5) - (8)].str)+")"; } break; case 2836: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (6)].fl); (yyval.str) = "_("+(yyvsp[(4) - (6)].str)+")"; } break; case 2837: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"'("+(yyvsp[(4) - (5)].str)+")"; } break; case 2838: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str)+"'("+(yyvsp[(4) - (5)].str)+")"; } break; case 2839: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = "$"; } break; case 2840: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2841: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2842: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + "&&&" + (yyvsp[(3) - (3)].str); } break; case 2843: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + " matches " + (yyvsp[(3) - (3)].str); } break; case 2844: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str) = (yyvsp[(1) - (3)].str) + " matches " + (yyvsp[(3) - (3)].str); } break; case 2845: /* Line 1806 of yacc.c */ #line 3970 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (5)].fl); (yyval.str) = (yyvsp[(1) - (5)].str) + " dist " + (yyvsp[(3) - (5)].str)+"..."+(yyvsp[(5) - (5)].str); } break; case 2846: /* Line 1806 of yacc.c */ #line 3975 "VParseBison.y" { } break; case 2847: /* Line 1806 of yacc.c */ #line 3976 "VParseBison.y" { } break; case 2848: /* Line 1806 of yacc.c */ #line 3977 "VParseBison.y" { } break; case 2849: /* Line 1806 of yacc.c */ #line 3983 "VParseBison.y" { } break; case 2850: /* Line 1806 of yacc.c */ #line 3984 "VParseBison.y" { } break; case 2851: /* Line 1806 of yacc.c */ #line 3985 "VParseBison.y" { } break; case 2852: /* Line 1806 of yacc.c */ #line 3989 "VParseBison.y" { } break; case 2853: /* Line 1806 of yacc.c */ #line 3990 "VParseBison.y" { } break; case 2854: /* Line 1806 of yacc.c */ #line 3998 "VParseBison.y" { } break; case 2855: /* Line 1806 of yacc.c */ #line 4003 "VParseBison.y" { } break; case 2856: /* Line 1806 of yacc.c */ #line 4004 "VParseBison.y" { } break; case 2857: /* Line 1806 of yacc.c */ #line 4005 "VParseBison.y" { } break; case 2858: /* Line 1806 of yacc.c */ #line 4007 "VParseBison.y" { } break; case 2859: /* Line 1806 of yacc.c */ #line 4009 "VParseBison.y" { } break; case 2860: /* Line 1806 of yacc.c */ #line 4013 "VParseBison.y" { } break; case 2861: /* Line 1806 of yacc.c */ #line 4014 "VParseBison.y" { } break; case 2862: /* Line 1806 of yacc.c */ #line 4019 "VParseBison.y" { } break; case 2863: /* Line 1806 of yacc.c */ #line 4024 "VParseBison.y" { } break; case 2864: /* Line 1806 of yacc.c */ #line 4032 "VParseBison.y" { PARSEP->symPopScope(VAstType::LET); } break; case 2865: /* Line 1806 of yacc.c */ #line 4037 "VParseBison.y" { PARSEP->symPushNew(VAstType::LET,(yyvsp[(2) - (2)].str)); } break; case 2867: /* Line 1806 of yacc.c */ #line 4045 "VParseBison.y" { VARRESET_NONLIST(""); } break; case 2868: /* Line 1806 of yacc.c */ #line 4054 "VParseBison.y" { PARSEP->endgroupCb((yyvsp[(5) - (6)].fl),(yyvsp[(5) - (6)].str)); PARSEP->symPopScope(VAstType::COVERGROUP); } break; case 2869: /* Line 1806 of yacc.c */ #line 4058 "VParseBison.y" { PARSEP->endgroupCb((yyvsp[(8) - (9)].fl),(yyvsp[(8) - (9)].str)); PARSEP->symPopScope(VAstType::COVERGROUP); } break; case 2870: /* Line 1806 of yacc.c */ #line 4064 "VParseBison.y" { PARSEP->symPushNew(VAstType::COVERGROUP,(yyvsp[(2) - (2)].str)); PARSEP->covergroupCb((yyvsp[(1) - (2)].fl),(yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); } break; case 2871: /* Line 1806 of yacc.c */ #line 4069 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2872: /* Line 1806 of yacc.c */ #line 4073 "VParseBison.y" { } break; case 2873: /* Line 1806 of yacc.c */ #line 4074 "VParseBison.y" { } break; case 2874: /* Line 1806 of yacc.c */ #line 4078 "VParseBison.y" { } break; case 2875: /* Line 1806 of yacc.c */ #line 4079 "VParseBison.y" { } break; case 2876: /* Line 1806 of yacc.c */ #line 4084 "VParseBison.y" { } break; case 2877: /* Line 1806 of yacc.c */ #line 4085 "VParseBison.y" { } break; case 2878: /* Line 1806 of yacc.c */ #line 4086 "VParseBison.y" { } break; case 2879: /* Line 1806 of yacc.c */ #line 4087 "VParseBison.y" { } break; case 2880: /* Line 1806 of yacc.c */ #line 4092 "VParseBison.y" { } break; case 2881: /* Line 1806 of yacc.c */ #line 4096 "VParseBison.y" { } break; case 2882: /* Line 1806 of yacc.c */ #line 4098 "VParseBison.y" { } break; case 2883: /* Line 1806 of yacc.c */ #line 4099 "VParseBison.y" { } break; case 2884: /* Line 1806 of yacc.c */ #line 4100 "VParseBison.y" { } break; case 2885: /* Line 1806 of yacc.c */ #line 4101 "VParseBison.y" { } break; case 2886: /* Line 1806 of yacc.c */ #line 4102 "VParseBison.y" { } break; case 2887: /* Line 1806 of yacc.c */ #line 4104 "VParseBison.y" { } break; case 2888: /* Line 1806 of yacc.c */ #line 4108 "VParseBison.y" { } break; case 2889: /* Line 1806 of yacc.c */ #line 4109 "VParseBison.y" { } break; case 2890: /* Line 1806 of yacc.c */ #line 4113 "VParseBison.y" { } break; case 2891: /* Line 1806 of yacc.c */ #line 4114 "VParseBison.y" { } break; case 2892: /* Line 1806 of yacc.c */ #line 4115 "VParseBison.y" { } break; case 2893: /* Line 1806 of yacc.c */ #line 4119 "VParseBison.y" { } break; case 2894: /* Line 1806 of yacc.c */ #line 4120 "VParseBison.y" { } break; case 2895: /* Line 1806 of yacc.c */ #line 4125 "VParseBison.y" { } break; case 2896: /* Line 1806 of yacc.c */ #line 4127 "VParseBison.y" { } break; case 2897: /* Line 1806 of yacc.c */ #line 4128 "VParseBison.y" { } break; case 2898: /* Line 1806 of yacc.c */ #line 4129 "VParseBison.y" { } break; case 2899: /* Line 1806 of yacc.c */ #line 4130 "VParseBison.y" { } break; case 2900: /* Line 1806 of yacc.c */ #line 4134 "VParseBison.y" { } break; case 2901: /* Line 1806 of yacc.c */ #line 4135 "VParseBison.y" { } break; case 2902: /* Line 1806 of yacc.c */ #line 4137 "VParseBison.y" { } break; case 2903: /* Line 1806 of yacc.c */ #line 4139 "VParseBison.y" { } break; case 2904: /* Line 1806 of yacc.c */ #line 4143 "VParseBison.y" { } break; case 2905: /* Line 1806 of yacc.c */ #line 4144 "VParseBison.y" { } break; case 2906: /* Line 1806 of yacc.c */ #line 4145 "VParseBison.y" { } break; case 2907: /* Line 1806 of yacc.c */ #line 4149 "VParseBison.y" { } break; case 2908: /* Line 1806 of yacc.c */ #line 4150 "VParseBison.y" { } break; case 2909: /* Line 1806 of yacc.c */ #line 4151 "VParseBison.y" { } break; case 2910: /* Line 1806 of yacc.c */ #line 4155 "VParseBison.y" { } break; case 2911: /* Line 1806 of yacc.c */ #line 4156 "VParseBison.y" { } break; case 2912: /* Line 1806 of yacc.c */ #line 4160 "VParseBison.y" { } break; case 2913: /* Line 1806 of yacc.c */ #line 4161 "VParseBison.y" { } break; case 2914: /* Line 1806 of yacc.c */ #line 4165 "VParseBison.y" { } break; case 2915: /* Line 1806 of yacc.c */ #line 4167 "VParseBison.y" { } break; case 2916: /* Line 1806 of yacc.c */ #line 4171 "VParseBison.y" { } break; case 2917: /* Line 1806 of yacc.c */ #line 4172 "VParseBison.y" { } break; case 2918: /* Line 1806 of yacc.c */ #line 4173 "VParseBison.y" { } break; case 2919: /* Line 1806 of yacc.c */ #line 4174 "VParseBison.y" { } break; case 2920: /* Line 1806 of yacc.c */ #line 4178 "VParseBison.y" { } break; case 2921: /* Line 1806 of yacc.c */ #line 4182 "VParseBison.y" { } break; case 2922: /* Line 1806 of yacc.c */ #line 4183 "VParseBison.y" { } break; case 2923: /* Line 1806 of yacc.c */ #line 4187 "VParseBison.y" { } break; case 2924: /* Line 1806 of yacc.c */ #line 4188 "VParseBison.y" { } break; case 2925: /* Line 1806 of yacc.c */ #line 4192 "VParseBison.y" { } break; case 2926: /* Line 1806 of yacc.c */ #line 4193 "VParseBison.y" { } break; case 2928: /* Line 1806 of yacc.c */ #line 4198 "VParseBison.y" { } break; case 2929: /* Line 1806 of yacc.c */ #line 4202 "VParseBison.y" { } break; case 2930: /* Line 1806 of yacc.c */ #line 4206 "VParseBison.y" { } break; case 2931: /* Line 1806 of yacc.c */ #line 4208 "VParseBison.y" { } break; case 2932: /* Line 1806 of yacc.c */ #line 4209 "VParseBison.y" { } break; case 2933: /* Line 1806 of yacc.c */ #line 4213 "VParseBison.y" { } break; case 2934: /* Line 1806 of yacc.c */ #line 4214 "VParseBison.y" { } break; case 2935: /* Line 1806 of yacc.c */ #line 4219 "VParseBison.y" { } break; case 2936: /* Line 1806 of yacc.c */ #line 4220 "VParseBison.y" { } break; case 2937: /* Line 1806 of yacc.c */ #line 4224 "VParseBison.y" { } break; case 2938: /* Line 1806 of yacc.c */ #line 4225 "VParseBison.y" { } break; case 2939: /* Line 1806 of yacc.c */ #line 4229 "VParseBison.y" { } break; case 2940: /* Line 1806 of yacc.c */ #line 4234 "VParseBison.y" { } break; case 2941: /* Line 1806 of yacc.c */ #line 4235 "VParseBison.y" { } break; case 2942: /* Line 1806 of yacc.c */ #line 4236 "VParseBison.y" { } break; case 2943: /* Line 1806 of yacc.c */ #line 4239 "VParseBison.y" { } break; case 2944: /* Line 1806 of yacc.c */ #line 4240 "VParseBison.y" { } break; case 2945: /* Line 1806 of yacc.c */ #line 4241 "VParseBison.y" { } break; case 2946: /* Line 1806 of yacc.c */ #line 4244 "VParseBison.y" { } break; case 2947: /* Line 1806 of yacc.c */ #line 4245 "VParseBison.y" { } break; case 2948: /* Line 1806 of yacc.c */ #line 4246 "VParseBison.y" { } break; case 2949: /* Line 1806 of yacc.c */ #line 4255 "VParseBison.y" { } break; case 2950: /* Line 1806 of yacc.c */ #line 4256 "VParseBison.y" { } break; case 2951: /* Line 1806 of yacc.c */ #line 4260 "VParseBison.y" { } break; case 2952: /* Line 1806 of yacc.c */ #line 4261 "VParseBison.y" { } break; case 2953: /* Line 1806 of yacc.c */ #line 4262 "VParseBison.y" { } break; case 2954: /* Line 1806 of yacc.c */ #line 4263 "VParseBison.y" { } break; case 2955: /* Line 1806 of yacc.c */ #line 4267 "VParseBison.y" { } break; case 2956: /* Line 1806 of yacc.c */ #line 4268 "VParseBison.y" { } break; case 2957: /* Line 1806 of yacc.c */ #line 4272 "VParseBison.y" { } break; case 2958: /* Line 1806 of yacc.c */ #line 4273 "VParseBison.y" { } break; case 2959: /* Line 1806 of yacc.c */ #line 4278 "VParseBison.y" { } break; case 2960: /* Line 1806 of yacc.c */ #line 4280 "VParseBison.y" { } break; case 2961: /* Line 1806 of yacc.c */ #line 4281 "VParseBison.y" { } break; case 2962: /* Line 1806 of yacc.c */ #line 4288 "VParseBison.y" { } break; case 2963: /* Line 1806 of yacc.c */ #line 4289 "VParseBison.y" { } break; case 2964: /* Line 1806 of yacc.c */ #line 4293 "VParseBison.y" { } break; case 2965: /* Line 1806 of yacc.c */ #line 4294 "VParseBison.y" { } break; case 2966: /* Line 1806 of yacc.c */ #line 4298 "VParseBison.y" { } break; case 2967: /* Line 1806 of yacc.c */ #line 4302 "VParseBison.y" { } break; case 2968: /* Line 1806 of yacc.c */ #line 4303 "VParseBison.y" { } break; case 2969: /* Line 1806 of yacc.c */ #line 4304 "VParseBison.y" { } break; case 2970: /* Line 1806 of yacc.c */ #line 4305 "VParseBison.y" { } break; case 2971: /* Line 1806 of yacc.c */ #line 4309 "VParseBison.y" { } break; case 2972: /* Line 1806 of yacc.c */ #line 4310 "VParseBison.y" { } break; case 2973: /* Line 1806 of yacc.c */ #line 4314 "VParseBison.y" { } break; case 2974: /* Line 1806 of yacc.c */ #line 4315 "VParseBison.y" { } break; case 2975: /* Line 1806 of yacc.c */ #line 4316 "VParseBison.y" { } break; case 2976: /* Line 1806 of yacc.c */ #line 4320 "VParseBison.y" { } break; case 2977: /* Line 1806 of yacc.c */ #line 4321 "VParseBison.y" { } break; case 2978: /* Line 1806 of yacc.c */ #line 4322 "VParseBison.y" { } break; case 2979: /* Line 1806 of yacc.c */ #line 4326 "VParseBison.y" { } break; case 2980: /* Line 1806 of yacc.c */ #line 4327 "VParseBison.y" { } break; case 2981: /* Line 1806 of yacc.c */ #line 4328 "VParseBison.y" { } break; case 2982: /* Line 1806 of yacc.c */ #line 4332 "VParseBison.y" { } break; case 2983: /* Line 1806 of yacc.c */ #line 4333 "VParseBison.y" { } break; case 2984: /* Line 1806 of yacc.c */ #line 4337 "VParseBison.y" { } break; case 2985: /* Line 1806 of yacc.c */ #line 4338 "VParseBison.y" { } break; case 2986: /* Line 1806 of yacc.c */ #line 4342 "VParseBison.y" { } break; case 2987: /* Line 1806 of yacc.c */ #line 4343 "VParseBison.y" { } break; case 2988: /* Line 1806 of yacc.c */ #line 4347 "VParseBison.y" { } break; case 2989: /* Line 1806 of yacc.c */ #line 4348 "VParseBison.y" { } break; case 2990: /* Line 1806 of yacc.c */ #line 4352 "VParseBison.y" { } break; case 2991: /* Line 1806 of yacc.c */ #line 4353 "VParseBison.y" { } break; case 2992: /* Line 1806 of yacc.c */ #line 4355 "VParseBison.y" { } break; case 2993: /* Line 1806 of yacc.c */ #line 4356 "VParseBison.y" { } break; case 2994: /* Line 1806 of yacc.c */ #line 4358 "VParseBison.y" { } break; case 2995: /* Line 1806 of yacc.c */ #line 4360 "VParseBison.y" { } break; case 2996: /* Line 1806 of yacc.c */ #line 4364 "VParseBison.y" { } break; case 2997: /* Line 1806 of yacc.c */ #line 4365 "VParseBison.y" { } break; case 2998: /* Line 1806 of yacc.c */ #line 4369 "VParseBison.y" { } break; case 2999: /* Line 1806 of yacc.c */ #line 4370 "VParseBison.y" { } break; case 3000: /* Line 1806 of yacc.c */ #line 4374 "VParseBison.y" { } break; case 3001: /* Line 1806 of yacc.c */ #line 4375 "VParseBison.y" { } break; case 3002: /* Line 1806 of yacc.c */ #line 4379 "VParseBison.y" { } break; case 3003: /* Line 1806 of yacc.c */ #line 4380 "VParseBison.y" { } break; case 3004: /* Line 1806 of yacc.c */ #line 4381 "VParseBison.y" { } break; case 3005: /* Line 1806 of yacc.c */ #line 4390 "VParseBison.y" { PARSEP->symPopScope(VAstType::CHECKER); } break; case 3006: /* Line 1806 of yacc.c */ #line 4395 "VParseBison.y" { PARSEP->symPushNew(VAstType::CHECKER, (yyvsp[(2) - (2)].str)); } break; case 3007: /* Line 1806 of yacc.c */ #line 4401 "VParseBison.y" { } break; case 3008: /* Line 1806 of yacc.c */ #line 4405 "VParseBison.y" { } break; case 3009: /* Line 1806 of yacc.c */ #line 4406 "VParseBison.y" { } break; case 3010: /* Line 1806 of yacc.c */ #line 4410 "VParseBison.y" { } break; case 3011: /* Line 1806 of yacc.c */ #line 4411 "VParseBison.y" { } break; case 3012: /* Line 1806 of yacc.c */ #line 4415 "VParseBison.y" { } break; case 3013: /* Line 1806 of yacc.c */ #line 4416 "VParseBison.y" { } break; case 3014: /* Line 1806 of yacc.c */ #line 4418 "VParseBison.y" { } break; case 3015: /* Line 1806 of yacc.c */ #line 4419 "VParseBison.y" { } break; case 3016: /* Line 1806 of yacc.c */ #line 4420 "VParseBison.y" { } break; case 3017: /* Line 1806 of yacc.c */ #line 4421 "VParseBison.y" { } break; case 3018: /* Line 1806 of yacc.c */ #line 4422 "VParseBison.y" { } break; case 3019: /* Line 1806 of yacc.c */ #line 4426 "VParseBison.y" { } break; case 3020: /* Line 1806 of yacc.c */ #line 4427 "VParseBison.y" { } break; case 3021: /* Line 1806 of yacc.c */ #line 4428 "VParseBison.y" { } break; case 3022: /* Line 1806 of yacc.c */ #line 4429 "VParseBison.y" { } break; case 3023: /* Line 1806 of yacc.c */ #line 4430 "VParseBison.y" { } break; case 3024: /* Line 1806 of yacc.c */ #line 4431 "VParseBison.y" { } break; case 3025: /* Line 1806 of yacc.c */ #line 4432 "VParseBison.y" { } break; case 3026: /* Line 1806 of yacc.c */ #line 4433 "VParseBison.y" { } break; case 3027: /* Line 1806 of yacc.c */ #line 4434 "VParseBison.y" { } break; case 3028: /* Line 1806 of yacc.c */ #line 4435 "VParseBison.y" { } break; case 3029: /* Line 1806 of yacc.c */ #line 4436 "VParseBison.y" { } break; case 3030: /* Line 1806 of yacc.c */ #line 4437 "VParseBison.y" { } break; case 3031: /* Line 1806 of yacc.c */ #line 4442 "VParseBison.y" { } break; case 3032: /* Line 1806 of yacc.c */ #line 4443 "VParseBison.y" { } break; case 3033: /* Line 1806 of yacc.c */ #line 4444 "VParseBison.y" { } break; case 3034: /* Line 1806 of yacc.c */ #line 4446 "VParseBison.y" { } break; case 3035: /* Line 1806 of yacc.c */ #line 4453 "VParseBison.y" { } break; case 3036: /* Line 1806 of yacc.c */ #line 4465 "VParseBison.y" { PARSEP->endclassCb((yyvsp[(7) - (8)].fl),(yyvsp[(7) - (8)].str)); PARSEP->symPopScope(VAstType::CLASS); } break; case 3037: /* Line 1806 of yacc.c */ #line 4471 "VParseBison.y" { PARSEP->symPushNew(VAstType::CLASS, (yyvsp[(4) - (4)].str)); PARSEP->classCb((yyvsp[(1) - (4)].fl),(yyvsp[(2) - (4)].str),(yyvsp[(4) - (4)].str),(yyvsp[(1) - (4)].str)); } break; case 3038: /* Line 1806 of yacc.c */ #line 4475 "VParseBison.y" { PARSEP->symPushNew(VAstType::CLASS, (yyvsp[(4) - (4)].str)); PARSEP->classCb((yyvsp[(1) - (4)].fl),(yyvsp[(2) - (4)].str),(yyvsp[(4) - (4)].str),(yyvsp[(1) - (4)].str)); } break; case 3039: /* Line 1806 of yacc.c */ #line 4480 "VParseBison.y" { (yyval.str)=""; } break; case 3040: /* Line 1806 of yacc.c */ #line 4481 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3041: /* Line 1806 of yacc.c */ #line 4487 "VParseBison.y" { } break; case 3042: /* Line 1806 of yacc.c */ #line 4488 "VParseBison.y" { PARSEP->syms().import((yyvsp[(1) - (2)].fl),(yyvsp[(2) - (2)].str),(yyvsp[(2) - (2)].scp),"*"); } break; case 3043: /* Line 1806 of yacc.c */ #line 4489 "VParseBison.y" { PARSEP->syms().import((yyvsp[(1) - (5)].fl),(yyvsp[(2) - (5)].str),(yyvsp[(2) - (5)].scp),"*"); } break; case 3044: /* Line 1806 of yacc.c */ #line 4494 "VParseBison.y" { } break; case 3045: /* Line 1806 of yacc.c */ #line 4495 "VParseBison.y" { PARSEP->syms().import((yyvsp[(1) - (2)].fl),(yyvsp[(2) - (2)].str),(yyvsp[(2) - (2)].scp),"*"); } break; case 3046: /* Line 1806 of yacc.c */ #line 4500 "VParseBison.y" { } break; case 3047: /* Line 1806 of yacc.c */ #line 4501 "VParseBison.y" { } break; case 3048: /* Line 1806 of yacc.c */ #line 4510 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 3049: /* Line 1806 of yacc.c */ #line 4514 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.scp)=(yyvsp[(1) - (2)].scp); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 3050: /* Line 1806 of yacc.c */ #line 4521 "VParseBison.y" { (yyval.fl)=(yyvsp[(2) - (2)].fl); (yyval.scp)=(yyvsp[(2) - (2)].scp); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 3051: /* Line 1806 of yacc.c */ #line 4526 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.scp)=(yyvsp[(1) - (1)].scp); (yyval.str)=(yyvsp[(1) - (1)].str); PARSEP->symTableNextId(NULL); } break; case 3052: /* Line 1806 of yacc.c */ #line 4533 "VParseBison.y" { (yyval.fl)=(yyvsp[(2) - (2)].fl); (yyval.scp)=(yyvsp[(2) - (2)].scp); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 3053: /* Line 1806 of yacc.c */ #line 4537 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.scp)=(yyvsp[(1) - (2)].scp); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); PARSEP->symTableNextId((yyvsp[(1) - (2)].scp)); } break; case 3054: /* Line 1806 of yacc.c */ #line 4543 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.scp)=(yyvsp[(1) - (1)].scp); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3055: /* Line 1806 of yacc.c */ #line 4544 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.scp)=(yyvsp[(2) - (2)].scp); (yyval.str)=(yyvsp[(1) - (2)].str)+(yyvsp[(2) - (2)].str); } break; case 3056: /* Line 1806 of yacc.c */ #line 4551 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.scp)=(yyvsp[(1) - (2)].scp); (yyval.str)=(yyvsp[(1) - (2)].str); } break; case 3057: /* Line 1806 of yacc.c */ #line 4556 "VParseBison.y" { (yyval.str)=""; } break; case 3058: /* Line 1806 of yacc.c */ #line 4557 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3059: /* Line 1806 of yacc.c */ #line 4564 "VParseBison.y" { PARSEP->symTableNextId(PARSEP->syms().netlistSymp()); } break; case 3060: /* Line 1806 of yacc.c */ #line 4565 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 3061: /* Line 1806 of yacc.c */ #line 4566 "VParseBison.y" { PARSEP->symTableNextId((yyvsp[(1) - (1)].scp)); } break; case 3062: /* Line 1806 of yacc.c */ #line 4567 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 3063: /* Line 1806 of yacc.c */ #line 4568 "VParseBison.y" { PARSEP->symTableNextId((yyvsp[(1) - (1)].scp)); } break; case 3064: /* Line 1806 of yacc.c */ #line 4569 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (3)].fl); (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 3065: /* Line 1806 of yacc.c */ #line 4575 "VParseBison.y" { } break; case 3066: /* Line 1806 of yacc.c */ #line 4576 "VParseBison.y" { } break; case 3067: /* Line 1806 of yacc.c */ #line 4580 "VParseBison.y" { } break; case 3068: /* Line 1806 of yacc.c */ #line 4581 "VParseBison.y" { } break; case 3069: /* Line 1806 of yacc.c */ #line 4585 "VParseBison.y" { } break; case 3070: /* Line 1806 of yacc.c */ #line 4586 "VParseBison.y" { } break; case 3071: /* Line 1806 of yacc.c */ #line 4587 "VParseBison.y" { } break; case 3072: /* Line 1806 of yacc.c */ #line 4589 "VParseBison.y" { } break; case 3073: /* Line 1806 of yacc.c */ #line 4590 "VParseBison.y" { } break; case 3074: /* Line 1806 of yacc.c */ #line 4591 "VParseBison.y" { } break; case 3075: /* Line 1806 of yacc.c */ #line 4592 "VParseBison.y" { } break; case 3076: /* Line 1806 of yacc.c */ #line 4593 "VParseBison.y" { } break; case 3077: /* Line 1806 of yacc.c */ #line 4594 "VParseBison.y" { } break; case 3078: /* Line 1806 of yacc.c */ #line 4596 "VParseBison.y" { } break; case 3079: /* Line 1806 of yacc.c */ #line 4600 "VParseBison.y" { } break; case 3080: /* Line 1806 of yacc.c */ #line 4601 "VParseBison.y" { } break; case 3081: /* Line 1806 of yacc.c */ #line 4603 "VParseBison.y" { } break; case 3082: /* Line 1806 of yacc.c */ #line 4606 "VParseBison.y" { } break; case 3083: /* Line 1806 of yacc.c */ #line 4614 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3084: /* Line 1806 of yacc.c */ #line 4615 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3085: /* Line 1806 of yacc.c */ #line 4616 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3086: /* Line 1806 of yacc.c */ #line 4622 "VParseBison.y" { VARRESET(); VARDTYPE(""); } break; case 3087: /* Line 1806 of yacc.c */ #line 4623 "VParseBison.y" { VARRESET(); VARDTYPE((yyvsp[(1) - (1)].str)); } break; case 3088: /* Line 1806 of yacc.c */ #line 4627 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3089: /* Line 1806 of yacc.c */ #line 4628 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=SPACED((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); } break; case 3090: /* Line 1806 of yacc.c */ #line 4633 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3091: /* Line 1806 of yacc.c */ #line 4635 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3092: /* Line 1806 of yacc.c */ #line 4637 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (2)].fl); (yyval.str)=(yyvsp[(1) - (2)].str)+" "+(yyvsp[(2) - (2)].str); } break; case 3093: /* Line 1806 of yacc.c */ #line 4639 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3094: /* Line 1806 of yacc.c */ #line 4641 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3095: /* Line 1806 of yacc.c */ #line 4643 "VParseBison.y" { (yyval.fl)=(yyvsp[(1) - (1)].fl); (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3096: /* Line 1806 of yacc.c */ #line 4651 "VParseBison.y" { } break; case 3097: /* Line 1806 of yacc.c */ #line 4653 "VParseBison.y" { } break; case 3098: /* Line 1806 of yacc.c */ #line 4654 "VParseBison.y" { } break; case 3099: /* Line 1806 of yacc.c */ #line 4655 "VParseBison.y" { } break; case 3100: /* Line 1806 of yacc.c */ #line 4659 "VParseBison.y" { } break; case 3101: /* Line 1806 of yacc.c */ #line 4663 "VParseBison.y" { } break; case 3102: /* Line 1806 of yacc.c */ #line 4664 "VParseBison.y" { } break; case 3103: /* Line 1806 of yacc.c */ #line 4668 "VParseBison.y" { } break; case 3104: /* Line 1806 of yacc.c */ #line 4669 "VParseBison.y" { } break; case 3105: /* Line 1806 of yacc.c */ #line 4673 "VParseBison.y" { } break; case 3106: /* Line 1806 of yacc.c */ #line 4674 "VParseBison.y" { } break; case 3107: /* Line 1806 of yacc.c */ #line 4679 "VParseBison.y" { } break; case 3108: /* Line 1806 of yacc.c */ #line 4683 "VParseBison.y" { (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3109: /* Line 1806 of yacc.c */ #line 4684 "VParseBison.y" { (yyval.str)=(yyvsp[(1) - (2)].str)+" "+(yyvsp[(2) - (2)].str); } break; case 3110: /* Line 1806 of yacc.c */ #line 4688 "VParseBison.y" { (yyval.str)=(yyvsp[(1) - (2)].str); } break; case 3111: /* Line 1806 of yacc.c */ #line 4690 "VParseBison.y" { (yyval.str)="soft "+(yyvsp[(1) - (3)].str); } break; case 3112: /* Line 1806 of yacc.c */ #line 4693 "VParseBison.y" { (yyval.str)="unique {...}"; } break; case 3113: /* Line 1806 of yacc.c */ #line 4697 "VParseBison.y" { (yyval.str)=(yyvsp[(1) - (5)].str); } break; case 3114: /* Line 1806 of yacc.c */ #line 4698 "VParseBison.y" { (yyval.str)=(yyvsp[(1) - (7)].str);} break; case 3115: /* Line 1806 of yacc.c */ #line 4700 "VParseBison.y" { (yyval.str)=(yyvsp[(1) - (5)].str); } break; case 3116: /* Line 1806 of yacc.c */ #line 4702 "VParseBison.y" { (yyval.str)="disable soft "+(yyvsp[(1) - (4)].str); } break; case 3117: /* Line 1806 of yacc.c */ #line 4706 "VParseBison.y" { (yyval.str)=(yyvsp[(1) - (1)].str); } break; case 3118: /* Line 1806 of yacc.c */ #line 4707 "VParseBison.y" { (yyval.str)=(yyvsp[(1) - (3)].str)+(yyvsp[(2) - (3)].str)+(yyvsp[(3) - (3)].str); } break; case 3119: /* Line 1806 of yacc.c */ #line 4711 "VParseBison.y" { } break; case 3120: /* Line 1806 of yacc.c */ #line 4712 "VParseBison.y" { } break; case 3121: /* Line 1806 of yacc.c */ #line 4716 "VParseBison.y" { } break; case 3122: /* Line 1806 of yacc.c */ #line 4717 "VParseBison.y" { } break; case 3123: /* Line 1806 of yacc.c */ #line 4718 "VParseBison.y" { } break; case 3124: /* Line 1806 of yacc.c */ #line 4722 "VParseBison.y" { } break; case 3125: /* Line 1806 of yacc.c */ #line 4726 "VParseBison.y" { } break; case 3126: /* Line 1806 of yacc.c */ #line 4727 "VParseBison.y" { } break; /* Line 1806 of yacc.c */ #line 43755 "VParseBison.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_((char*)"syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) { char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = YYSYNTAX_ERROR; if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == 1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = 2; } else { yysyntax_error_status = YYSYNTAX_ERROR; yymsgp = yymsg; } } yyerror (yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } # undef YYSYNTAX_ERROR #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_((char*)"memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } /* Line 2067 of yacc.c */ #line 4731 "VParseBison.y" int VParseGrammar::parse() { s_grammarp = this; return VParseBisonparse(); } void VParseGrammar::debug(int level) { VParseBisondebug = level; } const char* VParseGrammar::tokenName(int token) { #if YYDEBUG || YYERROR_VERBOSE if (token >= 255) { switch (token) { /*BISONPRE_TOKEN_NAMES*/ case 258: return "yaFLOATNUM"; case 259: return "yaID__ETC"; case 260: return "yaID__LEX"; case 261: return "yaID__aCLASS"; case 262: return "yaID__aPACKAGE"; case 263: return "yaID__aTYPE"; case 264: return "yaINTNUM"; case 265: return "yaTIMENUM"; case 266: return "yaSTRING"; case 267: return "yaSTRING__IGNORE"; case 268: return "yaTIMINGSPEC"; case 269: return "ygenGATE"; case 270: return "ygenCONFIGKEYWORD"; case 271: return "ygenOPERATOR"; case 272: return "ygenSTRENGTH"; case 273: return "ygenSYSCALL"; case 274: return "yACCEPT_ON"; case 275: return "yALIAS"; case 276: return "yALWAYS"; case 277: return "yAND"; case 278: return "yASSERT"; case 279: return "yASSIGN"; case 280: return "yASSUME"; case 281: return "yAUTOMATIC"; case 282: return "yBEFORE"; case 283: return "yBEGIN"; case 284: return "yBIND"; case 285: return "yBINS"; case 286: return "yBINSOF"; case 287: return "yBIT"; case 288: return "yBREAK"; case 289: return "yBUF"; case 290: return "yBYTE"; case 291: return "yCASE"; case 292: return "yCASEX"; case 293: return "yCASEZ"; case 294: return "yCHANDLE"; case 295: return "yCHECKER"; case 296: return "yCLASS"; case 297: return "yCLOCK"; case 298: return "yCLOCKING"; case 299: return "yCONSTRAINT"; case 300: return "yCONST__ETC"; case 301: return "yCONST__LEX"; case 302: return "yCONST__LOCAL"; case 303: return "yCONST__REF"; case 304: return "yCONTEXT"; case 305: return "yCONTINUE"; case 306: return "yCOVER"; case 307: return "yCOVERGROUP"; case 308: return "yCOVERPOINT"; case 309: return "yCROSS"; case 310: return "yDEASSIGN"; case 311: return "yDEFAULT"; case 312: return "yDEFPARAM"; case 313: return "yDISABLE"; case 314: return "yDIST"; case 315: return "yDO"; case 316: return "yEDGE"; case 317: return "yELSE"; case 318: return "yEND"; case 319: return "yENDCASE"; case 320: return "yENDCHECKER"; case 321: return "yENDCLASS"; case 322: return "yENDCLOCKING"; case 323: return "yENDFUNCTION"; case 324: return "yENDGENERATE"; case 325: return "yENDGROUP"; case 326: return "yENDINTERFACE"; case 327: return "yENDMODULE"; case 328: return "yENDPACKAGE"; case 329: return "yENDPROGRAM"; case 330: return "yENDPROPERTY"; case 331: return "yENDSEQUENCE"; case 332: return "yENDSPECIFY"; case 333: return "yENDTABLE"; case 334: return "yENDTASK"; case 335: return "yENUM"; case 336: return "yEVENT"; case 337: return "yEVENTUALLY"; case 338: return "yEXPECT"; case 339: return "yEXPORT"; case 340: return "yEXTENDS"; case 341: return "yEXTERN"; case 342: return "yFINAL"; case 343: return "yFIRST_MATCH"; case 344: return "yFOR"; case 345: return "yFORCE"; case 346: return "yFOREACH"; case 347: return "yFOREVER"; case 348: return "yFORK"; case 349: return "yFORKJOIN"; case 350: return "yFUNCTION__ETC"; case 351: return "yFUNCTION__LEX"; case 352: return "yFUNCTION__aPUREV"; case 353: return "yGENERATE"; case 354: return "yGENVAR"; case 355: return "yGLOBAL__CLOCKING"; case 356: return "yGLOBAL__LEX"; case 357: return "yIF"; case 358: return "yIFF"; case 359: return "yIGNORE_BINS"; case 360: return "yILLEGAL_BINS"; case 361: return "yIMPLEMENTS"; case 362: return "yIMPLIES"; case 363: return "yIMPORT"; case 364: return "yINITIAL"; case 365: return "yINOUT"; case 366: return "yINPUT"; case 367: return "yINSIDE"; case 368: return "yINT"; case 369: return "yINTEGER"; case 370: return "yINTERCONNECT"; case 371: return "yINTERFACE"; case 372: return "yINTERSECT"; case 373: return "yJOIN"; case 374: return "yLET"; case 375: return "yLOCALPARAM"; case 376: return "yLOCAL__COLONCOLON"; case 377: return "yLOCAL__ETC"; case 378: return "yLOCAL__LEX"; case 379: return "yLOGIC"; case 380: return "yLONGINT"; case 381: return "yMATCHES"; case 382: return "yMODPORT"; case 383: return "yMODULE"; case 384: return "yNAND"; case 385: return "yNEGEDGE"; case 386: return "yNETTYPE"; case 387: return "yNEW__ETC"; case 388: return "yNEW__LEX"; case 389: return "yNEW__PAREN"; case 390: return "yNEXTTIME"; case 391: return "yNOR"; case 392: return "yNOT"; case 393: return "yNULL"; case 394: return "yOR"; case 395: return "yOUTPUT"; case 396: return "yPACKAGE"; case 397: return "yPACKED"; case 398: return "yPARAMETER"; case 399: return "yPOSEDGE"; case 400: return "yPRIORITY"; case 401: return "yPROGRAM"; case 402: return "yPROPERTY"; case 403: return "yPROTECTED"; case 404: return "yPURE"; case 405: return "yRAND"; case 406: return "yRANDC"; case 407: return "yRANDCASE"; case 408: return "yRANDSEQUENCE"; case 409: return "yREAL"; case 410: return "yREALTIME"; case 411: return "yREF"; case 412: return "yREG"; case 413: return "yREJECT_ON"; case 414: return "yRELEASE"; case 415: return "yREPEAT"; case 416: return "yRESTRICT"; case 417: return "yRETURN"; case 418: return "ySCALARED"; case 419: return "ySEQUENCE"; case 420: return "ySHORTINT"; case 421: return "ySHORTREAL"; case 422: return "ySIGNED"; case 423: return "ySOFT"; case 424: return "ySOLVE"; case 425: return "ySPECIFY"; case 426: return "ySPECPARAM"; case 427: return "ySTATIC__CONSTRAINT"; case 428: return "ySTATIC__ETC"; case 429: return "ySTATIC__LEX"; case 430: return "ySTRING"; case 431: return "ySTRONG"; case 432: return "ySTRUCT"; case 433: return "ySUPER"; case 434: return "ySUPPLY0"; case 435: return "ySUPPLY1"; case 436: return "ySYNC_ACCEPT_ON"; case 437: return "ySYNC_REJECT_ON"; case 438: return "yS_ALWAYS"; case 439: return "yS_EVENTUALLY"; case 440: return "yS_NEXTTIME"; case 441: return "yS_UNTIL"; case 442: return "yS_UNTIL_WITH"; case 443: return "yTABLE"; case 444: return "yTAGGED"; case 445: return "yTASK__ETC"; case 446: return "yTASK__LEX"; case 447: return "yTASK__aPUREV"; case 448: return "yTHIS"; case 449: return "yTHROUGHOUT"; case 450: return "yTIME"; case 451: return "yTIMEPRECISION"; case 452: return "yTIMEUNIT"; case 453: return "yTRI"; case 454: return "yTRI0"; case 455: return "yTRI1"; case 456: return "yTRIAND"; case 457: return "yTRIOR"; case 458: return "yTRIREG"; case 459: return "yTYPE"; case 460: return "yTYPEDEF"; case 461: return "yUNION"; case 462: return "yUNIQUE"; case 463: return "yUNIQUE0"; case 464: return "yUNSIGNED"; case 465: return "yUNTIL"; case 466: return "yUNTIL_WITH"; case 467: return "yUNTYPED"; case 468: return "yVAR"; case 469: return "yVECTORED"; case 470: return "yVIRTUAL__CLASS"; case 471: return "yVIRTUAL__ETC"; case 472: return "yVIRTUAL__INTERFACE"; case 473: return "yVIRTUAL__LEX"; case 474: return "yVIRTUAL__anyID"; case 475: return "yVOID"; case 476: return "yWAIT"; case 477: return "yWAIT_ORDER"; case 478: return "yWAND"; case 479: return "yWEAK"; case 480: return "yWHILE"; case 481: return "yWILDCARD"; case 482: return "yWIRE"; case 483: return "yWITHIN"; case 484: return "yWITH__BRA"; case 485: return "yWITH__CUR"; case 486: return "yWITH__ETC"; case 487: return "yWITH__LEX"; case 488: return "yWITH__PAREN"; case 489: return "yWOR"; case 490: return "yXNOR"; case 491: return "yXOR"; case 492: return "yD_ERROR"; case 493: return "yD_FATAL"; case 494: return "yD_INFO"; case 495: return "yD_ROOT"; case 496: return "yD_UNIT"; case 497: return "yD_WARNING"; case 498: return "yP_TICK"; case 499: return "yP_TICKBRA"; case 500: return "yP_OROR"; case 501: return "yP_ANDAND"; case 502: return "yP_NOR"; case 503: return "yP_XNOR"; case 504: return "yP_NAND"; case 505: return "yP_EQUAL"; case 506: return "yP_NOTEQUAL"; case 507: return "yP_CASEEQUAL"; case 508: return "yP_CASENOTEQUAL"; case 509: return "yP_WILDEQUAL"; case 510: return "yP_WILDNOTEQUAL"; case 511: return "yP_GTE"; case 512: return "yP_LTE"; case 513: return "yP_LTE__IGNORE"; case 514: return "yP_SLEFT"; case 515: return "yP_SRIGHT"; case 516: return "yP_SSRIGHT"; case 517: return "yP_POW"; case 518: return "yP_PAR__IGNORE"; case 519: return "yP_PAR__STRENGTH"; case 520: return "yP_LTMINUSGT"; case 521: return "yP_PLUSCOLON"; case 522: return "yP_MINUSCOLON"; case 523: return "yP_MINUSGT"; case 524: return "yP_MINUSGTGT"; case 525: return "yP_EQGT"; case 526: return "yP_ASTGT"; case 527: return "yP_ANDANDAND"; case 528: return "yP_POUNDPOUND"; case 529: return "yP_POUNDMINUSPD"; case 530: return "yP_POUNDEQPD"; case 531: return "yP_DOTSTAR"; case 532: return "yP_ATAT"; case 533: return "yP_COLONCOLON"; case 534: return "yP_COLONEQ"; case 535: return "yP_COLONDIV"; case 536: return "yP_ORMINUSGT"; case 537: return "yP_OREQGT"; case 538: return "yP_BRASTAR"; case 539: return "yP_BRAEQ"; case 540: return "yP_BRAMINUSGT"; case 541: return "yP_BRAPLUSKET"; case 542: return "yP_PLUSPLUS"; case 543: return "yP_MINUSMINUS"; case 544: return "yP_PLUSEQ"; case 545: return "yP_MINUSEQ"; case 546: return "yP_TIMESEQ"; case 547: return "yP_DIVEQ"; case 548: return "yP_MODEQ"; case 549: return "yP_ANDEQ"; case 550: return "yP_OREQ"; case 551: return "yP_XOREQ"; case 552: return "yP_SLEFTEQ"; case 553: return "yP_SRIGHTEQ"; case 554: return "yP_SSRIGHTEQ"; case 555: return "prUNARYARITH"; case 556: return "prREDUCTION"; case 557: return "prNEGATION"; case 558: return "prEVENTBEGIN"; case 559: return "prTAGGED"; case 560: return "prSEQ_CLOCKING"; case 561: return "prPOUNDPOUND_MULTI"; case 562: return "prLOWER_THAN_ELSE"; default: return yytname[token-255]; } } else { static char ch[2]; ch[0]=token; ch[1]='\0'; return ch; } #else return ""; #endif } //YACC = /kits/sources/bison-2.4.1/src/bison --report=lookahead // --report=lookahead // --report=itemset // --graph // // Local Variables: // compile-command: "cd .. ; make -j 8 && make test" // End: Verilog-Perl-3.418/Parser/.gitignore0000644000177100017500000000030712407545434017247 0ustar wsnyderwsnyder*.bs *.c *.d *.def *.dll *.exp *.o *.old *.output *.xsc *.pre.* *_pretmp.* *_callbackgen.* *_cleaned.* Makefile VParseLex*.cpp VParseBison.c VParseBison.cpp VParseBison.h blib gen example pm_to_blib Verilog-Perl-3.418/Parser/VParse.cpp0000644000177100017500000001051612654236555017173 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2000-2016 by Wilson Snyder. This program is free software; // you can redistribute it and/or modify it under the terms of either the GNU // Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // //************************************************************************* /// \file /// \brief Verilog::Parse: Internal implementation of default preprocessor /// /// Authors: Wilson Snyder /// /// Code available from: http://www.veripool.org/verilog-perl /// //************************************************************************* #include #include #include #include #include #include #include #include #include "VParse.h" #include "VParseLex.h" #include "VParseGrammar.h" #include "VSymTable.h" VParseGrammar* VParseGrammar::s_grammarp = NULL; //************************************************************************* VParse::VParse(VFileLine* filelinep, av* symsp, bool sigParser, bool useUnreadbackFlag, bool useProtected) : m_syms(filelinep, symsp) { m_inFilelinep = filelinep; m_sigParser = sigParser; m_useUnreadback = useUnreadbackFlag; m_useProtected = useProtected; m_debug = 0; m_lexp = new VParseLex(this); m_grammarp = new VParseGrammar(this); m_eof = false; m_anonNum = 0; m_symTableNextId = NULL; m_callbackMasterEna = true; } VParse::~VParse() { if (m_lexp) { delete m_lexp; m_lexp = NULL; } if (m_grammarp) { delete m_grammarp; m_grammarp = NULL; } } void VParse::debug(int level) { m_debug = level; if (level>5) m_grammarp->debug(level); if (level>5) m_lexp->debug(level); } VFileLine* VParse::inFilelinep() const { return m_inFilelinep; } bool VParse::inCellDefine() const { return m_lexp->m_inCellDefine; } void VParse::language(const char* valuep) { m_lexp->language(valuep); } void VParse::parse(const string& text) { if (debug()>=10) { cout<<"VParse::parse: '"< max_chunk) chunk = max_chunk; m_buffers.push_back(string(text.data()+pos, chunk)); pos += chunk; } } void VParse::setEof() { m_eof = true; if (debug()) { cout<<"VParse::setEof: for "<<(void*)(this)<restart(); if (sigParser()) { // Use the bison parser m_grammarp->parse(); } else { fakeBison(); } // End of parsing callback endparseCb(inFilelinep(),""); if (debug()) { cout<<"VParse::setEof: DONE\n"; } } void VParse::fakeBison() { // Verilog::Parser and we don't care about the syntax, so just Lex. VParseBisonYYSType yylval; while (int tok = lexToBison(&yylval)) { if (tok) {} // Prevent unused on some GCCs } } int VParse::lexToBison(VParseBisonYYSType* yylvalp) { return m_lexp->lexToBison(yylvalp); } size_t VParse::inputToLex(char* buf, size_t max_size) { size_t got = 0; while (got < max_size // Haven't got enough && !m_buffers.empty()) { // And something buffered string front = m_buffers.front(); m_buffers.pop_front(); size_t len = front.length(); if (len > (max_size-got)) { // Front string too big string remainder = front.substr(max_size-got); front = front.substr(0, max_size-got); m_buffers.push_front(remainder); // Put back remainder for next time len = (max_size-got); } strncpy(buf+got, front.c_str(), len); got += len; } if (debug()>=9) { string out = string(buf,got); cout<<" inputToLex got="<{_cthis} O_CTHIS // SELF->{_cthis} = THIS if( sv_isobject(SELF) && (SvTYPE(SvRV(SELF)) == SVt_PVHV) ) { SV **svp = hv_fetch ((HV*)SvRV(SELF), \"_cthis\", 6, 1); sv_setiv(*svp, PTR2IV( $var )); XSRETURN_UNDEF; } else { warn( \"${Package}::$func_name() -- $var is not a Verilog::Parser object\" ); XSRETURN_UNDEF; } INPUT O_CTHIS $var = NULL; if( sv_isobject($arg) && (SvTYPE(SvRV( $arg )) == SVt_PVHV) ) { SV **svp = hv_fetch ((HV*)SvRV(( $arg )), \"_cthis\", 6, 0); $var = NULL; if (svp) { $var = INT2PTR($type,SvIV( *svp )); } } if (!$var || !dynamic_cast($var)) { warn( \"${Package}::$func_name() -- $var is not a Verilog::Parser object\" ); XSRETURN_UNDEF; } Verilog-Perl-3.418/Parser/bisonpre0000755000177100017500000004041712654236555017041 0ustar wsnyderwsnyder#!/usr/bin/perl -w # See copyright, etc in below POD section. ###################################################################### require 5.006_001; use Getopt::Long; use IO::File; use Pod::Usage; use strict; use vars qw ($Debug $VERSION); $VERSION = '3.418'; our $Self; #====================================================================== # main our $Opt_Debug; our $Opt_Definitions; our $Opt_File_Prefix; our $Opt_Name_Prefix; our $Opt_Output; our $Opt_Token_Table; our $Opt_Verbose; our $Opt_Yacc = "bison"; our $Opt_Input; autoflush STDOUT 1; autoflush STDERR 1; Getopt::Long::config ("no_auto_abbrev"); if (! GetOptions ( # Local options "help" => \&usage, "version" => sub { print "Version $VERSION\n"; exit(0); }, "yacc=s" => \$Opt_Yacc, # Passed to Bison "t|debug" => sub { $Opt_Debug = 1; }, "b|file-prefix=s" => \$Opt_File_Prefix, "d" => \$Opt_Definitions, "k|token-table" => \$Opt_Token_Table, "o=s" => \$Opt_Output, "p|name-prefix=s" => \$Opt_Name_Prefix, "v|verbose" => \$Opt_Verbose, "<>" => \¶meter, )) { die "%Error: Bad usage, try 'bisonpre --help'\n"; } $Opt_Input or die "bisonpre: %Error: input file not specified\n"; $Opt_Output or die "bisonpre: %Error: --o option is required\n"; process(); #---------------------------------------------------------------------- sub usage { print "Version $VERSION\n"; pod2usage(-verbose=>2, -exitval=>2, -output=>\*STDOUT, -noperldoc=>1); exit (1); } sub parameter { my $param = shift; if (!defined $Opt_Input) { $Opt_Input = $param; } else { die "bisonpre: %Error: Unknown parameter: $param\n"; } } ####################################################################### sub process { remove_outputs(); $Self->{bison_version} = bison_version_check(); my $supports_report = ($Self->{bison_version} >= 2.3); clean_input($Opt_Input, tmp_prefix().".y"); # Run bison my $command = ($Opt_Yacc .($Opt_Debug?" -t":"") .($Opt_Definitions?" -d":"") .($Opt_Token_Table?" -k":"") .($Opt_Verbose?" -v":"") .(($Opt_Verbose && $supports_report)?" --report=itemset --report=lookahead":"") # -p required for GLR parsers; they write to -p basename, not -o .($Opt_Name_Prefix?" -p $Opt_Name_Prefix":"") ." -b ".tmp_prefix() ." -o ".tmp_prefix().".c" ." ".tmp_prefix().".y" ); print " $command\n"; system $command; my $status = $?; if ($status != 0) { remove_outputs(); my $v = bison_version_check(); die "bisonpre: %Error: $Opt_Yacc version $v run failed due to errors\n"; } clean_output(tmp_prefix().".output",output_prefix().".output", 1,0); warning_check(output_prefix().".output"); clean_output(tmp_prefix().".c", output_prefix().".c", 0,1); clean_output(tmp_prefix().".h", output_prefix().".h", 0,1); remove_tmp(); } sub tmp_prefix { return output_prefix()."_pretmp"; } sub output_prefix { my $o; if ($Opt_Output) { (my $o = $Opt_Output) =~ s!\.[^.]*$!!; return $o; } else { return $Opt_File_Prefix.".tab"; } } sub remove_tmp { unlink(tmp_prefix().".c"); # Ok if errors unlink(tmp_prefix().".h"); # Ok if errors unlink(tmp_prefix().".output"); # Ok if errors } sub remove_outputs { remove_tmp(); unlink(output_prefix().".c"); # Ok if errors unlink(output_prefix().".h"); # Ok if errors # We don't remove .output file, as it's useful for debugging errors } sub bison_version_check { my $v = `$Opt_Yacc --version`; if ($v && $v =~ /([0-9]+\.[0-9]+)/) { my $v = $1; ($v >= 1.875) or die "bisonpre: %Error: '$Opt_Yacc' is version $v; version 1.875 or newer is required\n"; return $v; } else { die "bisonpre: %Error: '$Opt_Yacc' is not installed, or not working\n"; } } sub clean_output { my $filename = shift; my $outname = shift || $filename; my $is_output = shift; my $is_c = shift; print " edit $filename $outname\n"; my $fh = IO::File->new("<$filename") or die "%Error: $! $filename\n"; my @lines = $fh->getlines; $fh->close; (my $basename = tmp_prefix().".") =~ s!.*/!!; $basename = quotemeta($basename); (my $newbase = $Opt_Input) =~ s!.*/!!; $newbase =~ s/\.y/./; if ($is_output) { my %state_line; my $l=0; foreach my $line (@lines) { $l++; # We add a colon so it's easy to search for the definition $state_line{$1} = $l if $line =~ s/^state (\d+)\s*$/state $1:/; } my @out; foreach my $line (@lines) { if ($line =~ /^State (\d+) (conflicts)/) { chomp $line; $line .= " // line $state_line{$1}" if $state_line{$1}; $line .= "\n"; } push @out, $line; } @lines = @out; @out = (); } if ($is_c) { my %token_values; my $in_en=0; foreach my $line (@lines) { $in_en=1 if $line =~ /enum\s+yytokentype/; $in_en=0 if $line =~ /;/; $token_values{$2} = $1 if $in_en && $line =~ /\b(\S+) = (\d+)/; } my @out; foreach my $line (@lines) { if ($line =~ /BISONPRE_TOKEN_NAMES/) { push @out, $line; foreach my $tv (sort keys %token_values) { push @out, sprintf("\tcase %d: return \"%s\";\n", $tv, $token_values{$tv}); } next; } push @out, $line; } @lines = @out; @out = (); } $fh = IO::File->new(">$outname") or die "%Error: $! writing $outname\n"; foreach my $line (@lines) { # Fix filename refs $line =~ s!$basename!$newbase!g; # Fix bison 2.3 and GCC 4.2.1 $line =~ s!\(YY_\("!(YY_((char*)"!g; # Fix bison 2.3 glr-parser warning about yyerrorloc.YYTYPE::yydummy uninit $line =~ s!(YYLTYPE yyerrloc;)!$1 yyerrloc.yydummy=0;/*bisonpre*/!g; $fh->write($line); } $fh->close; } sub warning_check { my $filename = shift; my $fh = IO::File->new("<$filename") or die "%Error: $! $filename\n"; while (defined(my $line = $fh->getline)) { if ($line =~ /(conflicts|warning:|^useless)/i) { die "%Error: $filename:$.: $line\n"; } } $fh->close; } ####################################################################### sub clean_input { my $filename = shift; my $outname = shift || $filename; # Can == filename if desired print " edit $filename $outname\n"; $Self->{filename} = $filename; my $fh = IO::File->new("<$filename") or die "%Error: $! $filename\n"; my @lines = $fh->getlines; $fh->close; # Find "%tokens:" # Find "rule:" and replace with just "rule:" my %types; my %rules; $Self->{rules} = \%rules; my %tokens; my $last_rule; my $section = 1; { my @linesin = @lines; @lines=(); my $l=0; foreach my $line (@linesin) { $l++; # ^/ to prevent comments from matching $line =~ m!^[a-zA-Z0-9_<>]+:[^/]*[a-zA-Z]! and die "%Error: $filename:$l: Move text on rule line to next line: $line\n"; if ($line =~ /^%%/) { $section++; if ($section==2) { $last_rule = undef; } } elsif ($line =~ s/^([a-zA-Z0-9_]+)<(\S*)>:/$1:/) { !$rules{$1}{name} or die "%Error: $filename:$l: Redeclaring '$1': $line\n"; $types{$2}{$1} = 1; $rules{$1}{name} = $1; $rules{$1}{type} = $2; !$last_rule or die "%Error: $filename:$l: Unterminated previous rule\n"; $last_rule = $1; } elsif ($line =~ /^([a-zA-Z0-9_]+):/) { !$rules{$1}{name} or die "%Error: $filename:$l: Redeclaring '$1': $line\n"; $rules{$1}{name} = $1; $rules{$1}{type} = ""; !$last_rule or die "%Error: $filename:$l: Unterminated previous rule\n"; $last_rule = $1; } push @lines, $line; # Now clean the line and extract some more info (my $cline = $line) =~ s/\/\/.*$/\n/; (my $rline = $line) =~ s/\/\/.*$/\n/; if ($cline =~ /^\s*;/) { $last_rule or die "%Error: $filename:$l: Stray semicolon\n"; $last_rule = undef; } elsif ($last_rule) { $rules{$last_rule}{rules_and_productions} .= $cline; } if ($cline =~ /^%token\s*<(\S+)>\s*(\S+)/) { !$tokens{$2} or die "%Error: $filename:$l: Redeclaring '$2': $line\n"; $tokens{$2} = $1; } foreach my $tok (split /[^a-zA-Z0-9_]+/, $cline) { if ($last_rule && $tok=~/^[a-zA-Z]/) { #print "TT $last_rule $tok\n"; $rules{$last_rule}{subrules}{$tok} = 1; $rules{$tok}{parentrules}{$last_rule} = 1; } } } } #use Data::Dumper; print Dumper(\%rules); # Replace BISONPRE_VERSION(ver,,...) with expanded list { my @linesin = @lines; @lines=(); my $l=0; foreach my $line (@linesin) { $l++; if ($line =~ /BISONPRE_VERSION/) { # 1 3 4 ($line =~ /BISONPRE_VERSION\((\S+)\s*,\s*((\S+)\s*,)?\s*([^\),]+)\)\s*$/) or die "%Error: $filename:$l: Bad form of BISONPRE_VERSION: $line\n"; my $ver=$1; my $ver_max=$3; my $cmd=$4; if ($Self->{bison_version} >= $1 && (!$ver_max || $Self->{bison_version} <= $ver_max)) { $line = $cmd."\n"; } else { $line = "//NOP: $line"; } } push @lines, $line; } } # Replace BISONPRE_NOT(type,...) with expanded list { my @linesin = @lines; @lines=(); my $l=0; foreach my $line (@linesin) { $l++; if ($line =~ /BISONPRE_NOT/) { ($line =~ s/BISONPRE_NOT\((\S+)\)\s*({[^}]+})\s*$//) or die "%Error: $filename:$l: Bad form of BISONPRE_NOT: $line\n"; my $endtok = $1; my $action = $2; my @endtoks = split (/,/, $endtok); map { $tokens{$_} or die "%Error: $filename:$l: Can't find definition for token: $_\n" } @endtoks; # Push it all onto one line to avoid error messages changing my $bar = ""; tok: foreach my $tok (sort keys %tokens) { foreach (@endtoks) { next tok if $tok eq $_; } if ($endtok ne $tok) { $line .= "\t$bar $tok $action"; $bar = "|"; } } $line .= "\n"; } push @lines, $line; } } # Replace BISONPRE_COPY(type,{code}) { my @linesin = @lines; @lines=(); my $l=0; foreach my $line (@linesin) { $l++; if ($line =~ /BISONPRE_COPY/) { $line = _bisonpre_copy($line,$l,0); } push @lines, $line; } } # Replace ~[x]~ - must be after BISONPRE_COPY expansion { my @linesin = @lines; @lines=(); my $l=0; foreach my $line (@linesin) { $l++; $line =~ s/~[a-zA-Z0-9_]+~//g; push @lines, $line; } } # Find "BISONPRE_TYPES" { my @linesin = @lines; @lines=(); my $l=0; my $needmore = 0; foreach my $line (@linesin) { $l++; if ($line =~ m!//BISONPRE_TYPES!) { push @lines, $line; foreach my $type (sort keys %types) { next if !$type; my $line = "%type<$type>\t"; foreach my $rule (sort keys %{$types{$type}}) { $line.=" ".$rule; } $line .= "\n"; push @lines, $line; $needmore++ } } elsif ($needmore) { # Bison doesn't have a #line directive, so we need somewhere to insert into $line =~ s!^\s*//.*$!!; ($line =~ m/^\s*$/) or die "%Error: $filename:$l: Need $needmore more blank lines to insure line numbers are constant\n"; $needmore--; } else { push @lines, $line; } } } $fh = IO::File->new(">$outname") or die "%Error: $! writing $outname\n"; foreach my $line (@lines) { $fh->write($line); } $fh->close; } sub _bisonpre_copy { my $text = shift; my $l = shift; my $depth = shift; while ($text =~ /BISONPRE_COPY/) { ($text =~ s/BISONPRE_COPY(_ONCE)?\((\S+)\s*,\s*{([^}]*)}\s*\)/{HERE}/) or die "%Error: $Self->{filename}:$l: Bad form of BISONPRE_NOT: $text\n"; my $once = $1; my $rule = $2; my $code = $3; $Self->{rules}{$rule} or die "%Error: $Self->{filename}:$l: Can't find definition for rule: $rule\n"; if ($depth > 0 && $once) { # _ONCE means don't inherit $text =~ s/\|[ \t]+{HERE}//; # Don't OR in nothing $text =~ s/{HERE}//; } else { # Push it all onto one line to avoid error messages changing my $insert = $Self->{rules}{$rule}{rules_and_productions}; $insert =~ s/^\S+://g; # Strip rule name # Recurse so BISONPRE under B #print "COPY $l code $code\n"; #print "COPY $l in $insert\n"; $_=$insert; eval("$code; \$_;"); $insert = $_; #print "COPY $l out $insert\n"; while ($insert =~ s/[ \t\n]+\n/\n/go) {} while ($insert =~ s/\n/ /go) {} # Optional - preserve line numbering $text =~ s/{HERE}/$insert/; } $depth++; } return $text; } ####################################################################### __END__ =pod =head1 NAME bisonpre - Bison wrapper with pre and post processing =head1 SYNOPSIS bisonpre --yacc bison --debug --verbose --defines X.h -k $< -pX -o X.c =head1 DESCRIPTION Bisonpre is a wrapper for the Bison YACC replacement. Input to Bison is preprocessed with substitution as described below under EXTENSIONS. Output from Bison is checked for additional errors, and corrected to work around various compile warnings. =head1 EXTENSIONS =over 4 =item //BISONPRE_TYPES This is expanded into %type declarations. =item ~[a-z]+~ Any text matching ~[a-z]+~ is removed. This allows optional text to be used only when the rule containing the ~~ is used in a BISONPRE_COPY. =item rule_label: This allows the label declaring a rule to also specify the type of the rule. The type will be inserted where /*BISONPRE_TYPES*/ is encountered. =item BISONPRE_COPY(rule, {code}) Copy the rules and productions from the specified rule, filter through the Perl code provided in the {} and insert here into the output file. =item BISONPRE_COPY_ONCE(rule, {code}) As with BISONPRE_COPY, but if called from underneath another BISONPRE_COPY rule, ignore it. =item BISONPRE_NOT(token[, token...]) Create a rule that matches every token except for those specified. =item BISONPRE_VERSION(ver, cmd) If the bison version is >= the specified version, include the given command. =back =head1 ARGUMENTS =over 4 =item -b file-prefix =item --file-prefix=file-prefix Passed to bison. Specify a prefix to use for all bison output file names. The names are chosen as if the input file were named file-prefix.c. =item -d Passed to bison. Write an extra output file containing macro definitions for the token type names defined in the grammar and the semantic value type YYSTYPE, as well as a few extern variable declarations. If the parser output file is named name.c then this file is named name.h. This output file is essential if you wish to put the definition of yylex in a separate source file, because yylex needs to be able to refer to token type codes and the variable yylval. =item --help Displays this message and program version and exits. =item -k =item --token-table Passed to bison. This switch causes the name.tab.c output to include a list of token names in order by their token numbers; this is defined in the array yytname. Also generated are #defines for YYNTOKENS, YYNNTS, YYNRULES, and YYNSTATES. =item -t =item --debug Passed to bison. In the parser file, define the macro YYDEBUG to 1 if it is not already defined, so that the debugging facilities are compiled. =item -v =item --verbose Passed to bison. Write an extra output file containing verbose descriptions of the parser states and what is done for each type of look-ahead token in that state. This file also describes all the conflicts, both those resolved by operator precedence and the unresolved ones. The file's name is made by removing .tab.c or .c from the parser output file name, and adding .output instead. Therefore, if the input file is foo.y, then the parser file is called foo.tab.c by default. As a consequence, the verbose output file is called foo.output. =item --version Print the version number and exit. =item --yacc Specify the name of the bison executable, defaults to "bison." =back =head1 DISTRIBUTION This is part of the L free Verilog EDA software tool suite. The latest version is available from CPAN and from L. Copyright 2008-2016 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. =head1 AUTHORS Wilson Snyder =head1 SEE ALSO C =cut ###################################################################### ### Local Variables: ### compile-command: "./bisonpre " ### End: Verilog-Perl-3.418/Parser/VSymTable.cpp0000644000177100017500000001312212654236555017635 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2009-2016 by Wilson Snyder. This program is free software; // you can redistribute it and/or modify it under the terms of either the // GNU Lesser General Public License Version 3 or the Perl Artistic License // Version 2.0. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // //************************************************************************* /// \file /// \brief Verilog::Parse: Symbol table accessing /// /// Authors: Wilson Snyder /// /// Code available from: http://www.veripool.org/verilog-perl /// //************************************************************************* // // Verilog Name spaces: // Namespace Under Holds // (*attributes*) objects Not implemented // `textmacros comp-unit Preproc handles // .ports/inout module/cell ports // packages Global package // definitions comp-unit Non-nested (macro)module, primitive, program, interface // comp-unit comp-unit Func, task, param, events, nets, vars, types // module (macro)module,primitive,program,interface,package // module, intf, program, // blocks, func, task, inst, param, events, // vars, nets, types // block blocks(begin/fork), specify, func, task // blocks, specify, func, task, inst*, param, events, // vars, nets*, types // (*IEEE doesn't list but can be under generate blocks) // // Testcase: "generate if (1) begin wire b; ..." proves b is local. // // Turning this on its head: // // Object Namespace Under // ports/inouts .ports module/cell // // package packages comp-unit // // module, program, interface definitions comp-unit // [primitive(defs)] OR module module,primitive,program,interface,package // // func, task, param, events, comp-unit comp-unit // vars, nets, types, [blocks] module module,primitive,program,interface,package // [inst], [[specify]] OR block blocks(begin/fork), specify, func, task // // [...] indicates can only be under one of the lower name spaces, but won't // matter if the others are searched since the grammar won't create the // conflicting case. // // Since packages can't be declared under modules, and modules under // blocks. we can just have one hierarchical namespace that combines // comp-unit, module and block. //************************************************************************* #include "VSymTable.h" #include #include /* Perl */ extern "C" { # include "EXTERN.h" # include "perl.h" # include "XSUB.h" } //###################################################################### // VAstEnt // // A symtable is simply a hash(HV) by name of the object // Under each hash entry (HE) is an array (AV) // Under each array (AV) is an [SV with type, SV with HV of lower symtab] #if 0 # define DBG_UINFO(z,msg) {printf("%s:%d: ", __FILE__,__LINE__); cout << msg; } #else # define DBG_UINFO(z,msg) #endif //###################################################################### // VSymStack VSymStack::VSymStack(VFileLine* fl, struct av* symp) { assert(symp); ((VAstEnt*)(symp))->initNetlist(fl); pushScope((VAstEnt*)(symp)); } //###################################################################### // Self test class VFileLineTest : public VFileLine { public: VFileLineTest(int called_only_for_default) : VFileLine(called_only_for_default) {} virtual ~VFileLineTest() { } virtual VFileLine* create(const string& filename, int lineno) { return new VFileLineTest(true); } virtual void error(const string& msg) { cout << msg; } }; void VSymStack::selftest() { // GCC 3.3.5 requires this temporary string, so can't be a one liner { string max = VAstType(VAstType::_MAX).ascii(); assert(max == "_MAX"); } // Else probably missing word in ascii() // VFileLineTest flt(1); // GCC 3.3.5 requires temporary VFileLine* fl = flt.create(__FILE__,__LINE__); AV* topavp = newAV(); VSymStack stack (fl, topavp); // DBG_UINFO(9,"=============\n"); assert(stack.objofUpward() == "netlist"); assert(stack.findTypeUpward("missing") == VAstType::NOT_FOUND); DBG_UINFO(9,"=============\n"); stack.pushScope(stack.findInsert(VAstType::PACKAGE, "top")); { assert(stack.objofUpward() == "package"); assert(stack.findTypeUpward("top") == VAstType::PACKAGE); stack.findInsert(VAstType::TYPE, "a"); DBG_UINFO(9,"=============\n"); stack.pushScope(stack.findInsert(VAstType::MODULE, "lower")); { assert(stack.findTypeUpward("lower") == VAstType::MODULE); // IE ../lower exists. DBG_UINFO(9,"=============\n"); stack.pushScope(stack.findInsert(VAstType::FORK, "fork")); { assert(stack.findTypeUpward("lower") == VAstType::MODULE); // Ignores the fork } stack.popScope(fl); DBG_UINFO(9,"=============\n"); stack.pushScope(stack.findInsert(VAstType::CLASS, "a")); // Hides upper a { assert(stack.objofUpward() == "class"); assert(stack.findTypeUpward("a") == VAstType::CLASS); assert(stack.findTypeUpward("top") == VAstType::PACKAGE); } stack.popScope(fl); DBG_UINFO(9,"=============\n"); assert(stack.objofUpward() == "module"); assert(stack.findTypeUpward("a") == VAstType::CLASS); assert(stack.findTypeUpward("top") == VAstType::PACKAGE); } stack.popScope(fl); DBG_UINFO(9,"=============\n"); assert(stack.findTypeUpward("a") == VAstType::TYPE); } // av_undef(topavp); topavp=NULL; }; #undef DBG_UINFO Verilog-Perl-3.418/Parser/Makefile.PL0000644000177100017500000001160712654236555017243 0ustar wsnyderwsnyder# DESCRIPTION: Perl ExtUtils: Type 'perl Makefile.PL' to create a Makefile for this package # # Copyright 2000-2016 by Wilson Snyder. This program is free software; # you can redistribute it and/or modify it under the terms of either the GNU # Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. use ExtUtils::MakeMaker; use Config; sub MY::postamble { my $out; #print Config::myconfig(); if ($Config{osname} !~ /cygwin/i && $Config{archname} !~ /cygwin/i && $Config{osname} !~ /darwin/i && $Config{archname} !~ /darwin/i) { # Cygwin: Don't change LD, it breaks # Sun: Requires g++ LD # Linux: Either way $out .= "LD = g++\n"; } # Note OPTIMIZE is passed from upper makefile, so this code needed there too. my $optimize = $Config{optimize}; $optimize =~ s/(^| )-O2( |$)/\1-O\2/g; # pass hardening flags $optimize .= " $ENV{CFLAGS} $ENV{CPPFLAGS}"; $out .= "OPTIMIZE = $optimize\n"; if ($Config{osname} =~ /cygwin/i || $Config{archname} =~ /cygwin/i) { # Cygwin ExtUtils::MakeMaker ignores our LIBS declaration and says # "No library found for -lstdc++". Force it. $out .= "LDLOADLIBS += -lstdc++\n"; # Cygwin: High optimization causes g++ "out of memory" $out .= "OPTIMIZE += -O\n"; } if ($Config{osname} =~ /darwin/i || $Config{archname} =~ /darwin/i) { # MakeMaker wants to create bundles on MacOSX rather than dylibs. We override DLEXT and LDDLFLAGS generated by MakeMaker in this case $out .= "DLEXT = dylib\n"; if ($^V eq '5.12.4') { $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.12/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname}); } elsif ($^V eq '5.18.2') { $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.18/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname}); } else { $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/%vd/%s/CORE -lperl -lgcc_eh -L/usr/local/lib\n",$^V,$Config{archname}); } } # The ../Makefile.PL will override these if make is called from there! $out .= "CCFLAGS += -Wall -Wno-unused -Werror\n" if $ENV{VERILATOR_AUTHOR_SITE}; $out .= "CCFLAGS += $ENV{VERILOGPERL_CCFLAGS}\n" if defined $ENV{VERILOGPERL_CCFLAGS}; $out .= "OPTIMIZE += -Wno-unused\n" if $ENV{VERILATOR_AUTHOR_SITE}; # Makefile has another -Wall $out .= "OPTIMIZE += $ENV{VERILOGPERL_CCFLAGS}\n" if defined $ENV{VERILOGPERL_CCFLAGS}; $out .= "CCFLAGS += -I\$(PPSRC)\n"; my $cmt = $ENV{VERILOGPERL_FLEX_DEBUG} ? "" : "#"; $out .= "${cmt}CFLAGS += -DFLEX_DEBUG\n"; $out .= "LEXFLAGS += -d\n"; $out .= ' CC = $(OBJCACHE) g++ LEX = flex YACC = bison PPSRC = ../Preproc FLEXFIX = $(PPSRC)/flexfix TOOLHASH = $(PPSRC)/toolhash XSUBPPFIX = $(PPSRC)/xsubppfix VPATH += . $(PPSRC) VHEADERS = VParseLex.h VParseGrammar.h VParse.h VFileLine.h VParseBison.h \ VSymTable.h VAst.h Parser_callbackgen.cpp VParseLex.o: VParseLex.cpp $(VHEADERS) VParseGrammar.o: VParseGrammar.cpp $(VHEADERS) VParseBison.o: VParseBison.cpp $(VHEADERS) VParse.o: VParse.cpp $(VHEADERS) VFileLine.o: VFileLine.cpp $(VHEADERS) VAst.o: VAst.cpp $(VHEADERS) VSymTable.o: VSymTable.cpp $(VHEADERS) VFileLine.o: $(PPSRC)/VFileLine.cpp $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $< VParseLex_pretmp.cpp: VParseLex.l -$(LEX) --version $(PERL) $(TOOLHASH) --verbose --in $< --out $@ --cmd $(LEX) $(LEXFLAGS) -o$@ $< VParseLex.cpp: $(FLEXFIX) VParseLex_pretmp.cpp $(PERL) $(FLEXFIX) VParseLex < VParseLex_pretmp.cpp > $@ VParseBison.h: VParseBison.cpp VParseBison.cpp: VParseBison.y bisonpre -$(RM_RF) VParseBison.c VParseBison.cpp -${YACC} --version | head -1 @echo "Note: toolhash ignores VParseBison.output; remove gen/ if you want to debug the grammar" @echo "Note: If the next command fails, you probably need to install Bison 1.875 or newer" $(PERL) $(TOOLHASH) --verbose --name bisonpre --vercmd bison --skip-cmd 1 \ --in VParseBison.y bisonpre \ --out VParseBison.c VParseBison.h \ --cmd $(PERL) bisonpre --yacc ${YACC} --debug --verbose --d -p VParseBison -k VParseBison.y -o VParseBison.c mv VParseBison.c VParseBison.cpp Parser_callbackgen.cpp: callbackgen $(PERL) callbackgen Parser_cleaned.cpp: Parser.c $(VHEADERS) $(PERL) $(XSUBPPFIX) < Parser.c > Parser_cleaned.cpp clean:: -$(RM_RF) test *.d *.o *.output *.pre.* *_pretmp.* -$(RM_RF) VParseLex*.cpp VParseBison.h VParseBison.cpp Parser_cleaned.* -$(RM_RF) Parser_callbackgen.cpp '; return $out; } # Grr; some flags cause warnings in g++ (my $ccflags = $Config{ccflags}) =~ s/ *-Wdeclaration-after-statement//; WriteMakefile( NAME => "Verilog::Parser", LIBS => '-lstdc++', VERSION_FROM => 'Parser.pm', XSOPT => '-C++', CCFLAGS => $ccflags, OBJECT => 'VFileLine.o VParseLex.o VParse.o VParseBison.o VSymTable.o VAst.o ', MYEXTLIB => 'Parser_cleaned.o', ); Verilog-Perl-3.418/Parser/VParseLex.l0000644000177100017500000012326212654236555017320 0ustar wsnyderwsnyder%option align interactive %option stack %option noc++ %option prefix="VParseLex" %{ /************************************************************************** * DESCRIPTION: Verilog Parser Lexer * * This file is part of Verilog-Perl. * * Author: Wilson Snyder * * Code available from: http://www.veripool.org/systemperl * ************************************************************************** * * Copyright 2000-2016 by Wilson Snyder. This program is free software; * you can redistribute it and/or modify it under the terms of either the * GNU Lesser General Public License Version 3 or the Perl Artistic License * Version 2.0. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * ************************************************************************** * Do not use Flex in C++ mode. It has bugs with yyunput() which result in * lost characters. *************************************************************************/ #include "VParseLex.h" #include #include #include #include #include "VParseGrammar.h" #include "VParseBison.h" #define YY_SKIP_YYWRAP #define STATE_VERILOG_RECENT S12 // State name for most recent Verilog Version // Flex 2.5.35 has compile warning in ECHO, so we'll default our own rule #define ECHO yyerrorf("Missing VParseLex.l rule: ECHO rule invoked in state %d: %s", YY_START, yytext); VParseLex* VParseLex::s_currentLexp = NULL; // Current lexing point VParseBisonYYSType* VParseLex::s_yylvalp = NULL; // LValue for current bison object #define LEXP (VParseLex::s_currentLexp) #define LPARSEP (LEXP->m_parsep) #define NEXTLINE() { LPARSEP->inFilelineInc(); } #define LINECHECKS(textp,len) { const char* cp=textp; for (int n=len; n; --n) if (cp[n]=='\n') NEXTLINE(); } #define LINECHECK() LINECHECKS(yytext,yyleng) #define FL { VParseLex::s_yylvalp->fl = LPARSEP->inFilelinep(); } // lval.fileline not used yet; here for Verilator parser compatibility #define VALTEXTS(strg) VParseLex::s_yylvalp->str = strg #define VALTEXT VALTEXTS(string(yytext,yyleng)) #define CALLBACKS(whichCb,strg) {LPARSEP->whichCb(VParseLex::s_yylvalp->fl, strg); } #define CALLBACK(whichCb) CALLBACKS(whichCb,string(yytext,yyleng)) #define YY_INPUT(buf,result,max_size) \ result = LPARSEP->inputToLex(buf,max_size); int yywrap() { return LPARSEP->eofToLex(); } #define StashPrefix LPARSEP->unreadbackCat(yytext,yyleng) void yyerror(char* errmsg) { LPARSEP->inFilelinep()->error(errmsg); } void yyerrorf(const char* format, ...) { char msg[1024]; va_list ap; va_start(ap,format); vsprintf(msg,format,ap); va_end(ap); yyerror(msg); } /**********************************************************************/ %} %s V95 V01 V05 S05 S09 S12 %s STRING ATTRMODE %s CMTMODE PROTMODE %s DUMMY_TO_AVOID_WARNING space [ ] ws [ \t\f\r]+ crnl [\r]*[\n] /* identifier */ id [a-zA-Z_][a-zA-Z0-9_$]* /* escaped identifier */ escid \\[^ \t\f\r\n]+ word [a-zA-Z0-9_]+ /* verilog numbers, constructed to not match the ' that begins a '( or '{ */ vnum1 [0-9]*?['']s?[bcodhBCODH][ \t\n]*[A-Fa-f0-9xXzZ_?]* vnum2 [0-9]*?['']s?[01xXzZ] vnum3 [0-9][_0-9]*[ \t\n]*['']s?[bcodhBCODH]?[ \t]*[A-Fa-f0-9xXzZ_?]+ vnum4 [0-9][_0-9]*[ \t\n]*['']s?[bcodhBCODH] vnum5 [0-9][_0-9]*[ \t\n]*['']s vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} %% .|\n {BEGIN STATE_VERILOG_RECENT; yyless(0); } /* Verilog 1995 */ { {ws} { StashPrefix; } /* otherwise ignore white-space */ {crnl} { StashPrefix; NEXTLINE(); } /* Count line numbers */ /* Keywords */ "always" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } "and" { FL; VALTEXT; CALLBACK(keywordCb); return yAND; } "assign" { FL; VALTEXT; CALLBACK(keywordCb); return yASSIGN; } "begin" { FL; VALTEXT; CALLBACK(keywordCb); return yBEGIN; } "buf" { FL; VALTEXT; CALLBACK(keywordCb); return yBUF; } "case" { FL; VALTEXT; CALLBACK(keywordCb); return yCASE; } "casex" { FL; VALTEXT; CALLBACK(keywordCb); return yCASEX; } "casez" { FL; VALTEXT; CALLBACK(keywordCb); return yCASEZ; } "deassign" { FL; VALTEXT; CALLBACK(keywordCb); return yDEASSIGN; } "default" { FL; VALTEXT; CALLBACK(keywordCb); return yDEFAULT; } "defparam" { FL; VALTEXT; CALLBACK(keywordCb); return yDEFPARAM; } "disable" { FL; VALTEXT; CALLBACK(keywordCb); return yDISABLE; } "edge" { FL; VALTEXT; CALLBACK(keywordCb); return yEDGE; } "else" { FL; VALTEXT; CALLBACK(keywordCb); return yELSE; } "end" { FL; VALTEXT; CALLBACK(keywordCb); return yEND; } "endcase" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCASE; } "endfunction" { FL; VALTEXT; CALLBACK(keywordCb); return yENDFUNCTION; } "endmodule" { FL; VALTEXT; CALLBACK(keywordCb); return yENDMODULE; } "endprimitive" { FL; VALTEXT; CALLBACK(keywordCb); return yENDMODULE; } "endspecify" { FL; VALTEXT; CALLBACK(keywordCb); return yENDSPECIFY; } "endtable" { FL; VALTEXT; CALLBACK(keywordCb); return yENDTABLE; } "endtask" { FL; VALTEXT; CALLBACK(keywordCb); return yENDTASK; } "event" { FL; VALTEXT; CALLBACK(keywordCb); return yEVENT; } "for" { FL; VALTEXT; CALLBACK(keywordCb); return yFOR; } "force" { FL; VALTEXT; CALLBACK(keywordCb); return yFORCE; } "forever" { FL; VALTEXT; CALLBACK(keywordCb); return yFOREVER; } "fork" { FL; VALTEXT; CALLBACK(keywordCb); return yFORK; } "function" { FL; VALTEXT; CALLBACK(keywordCb); return yFUNCTION__LEX; } "if" { FL; VALTEXT; CALLBACK(keywordCb); return yIF; } "initial" { FL; VALTEXT; CALLBACK(keywordCb); return yINITIAL; } "inout" { FL; VALTEXT; CALLBACK(keywordCb); return yINOUT; } "input" { FL; VALTEXT; CALLBACK(keywordCb); return yINPUT; } "integer" { FL; VALTEXT; CALLBACK(keywordCb); return yINTEGER; } "join" { FL; VALTEXT; CALLBACK(keywordCb); return yJOIN; } "macromodule" { FL; VALTEXT; CALLBACK(keywordCb); return yMODULE; } "module" { FL; VALTEXT; CALLBACK(keywordCb); return yMODULE; } "nand" { FL; VALTEXT; CALLBACK(keywordCb); return yNAND; } "negedge" { FL; VALTEXT; CALLBACK(keywordCb); return yNEGEDGE; } "nor" { FL; VALTEXT; CALLBACK(keywordCb); return yNOR; } "not" { FL; VALTEXT; CALLBACK(keywordCb); return yNOT; } "or" { FL; VALTEXT; CALLBACK(keywordCb); return yOR; } "output" { FL; VALTEXT; CALLBACK(keywordCb); return yOUTPUT; } "parameter" { FL; VALTEXT; CALLBACK(keywordCb); return yPARAMETER; } "posedge" { FL; VALTEXT; CALLBACK(keywordCb); return yPOSEDGE; } "primitive" { FL; VALTEXT; CALLBACK(keywordCb); return yMODULE; } "real" { FL; VALTEXT; CALLBACK(keywordCb); return yREAL; } "realtime" { FL; VALTEXT; CALLBACK(keywordCb); return yREALTIME; } "reg" { FL; VALTEXT; CALLBACK(keywordCb); return yREG; } "release" { FL; VALTEXT; CALLBACK(keywordCb); return yRELEASE; } "repeat" { FL; VALTEXT; CALLBACK(keywordCb); return yREPEAT; } "scalared" { FL; VALTEXT; CALLBACK(keywordCb); return ySCALARED; } "specify" { FL; VALTEXT; CALLBACK(keywordCb); return ySPECIFY; } "specparam" { FL; VALTEXT; CALLBACK(keywordCb); return ySPECPARAM; } "supply0" { FL; VALTEXT; CALLBACK(keywordCb); return ySUPPLY0; } "supply1" { FL; VALTEXT; CALLBACK(keywordCb); return ySUPPLY1; } "table" { FL; VALTEXT; CALLBACK(keywordCb); return yTABLE; } "task" { FL; VALTEXT; CALLBACK(keywordCb); return yTASK__LEX; } "time" { FL; VALTEXT; CALLBACK(keywordCb); return yTIME; } "tri" { FL; VALTEXT; CALLBACK(keywordCb); return yTRI; } "tri0" { FL; VALTEXT; CALLBACK(keywordCb); return yTRI0; } "tri1" { FL; VALTEXT; CALLBACK(keywordCb); return yTRI1; } "triand" { FL; VALTEXT; CALLBACK(keywordCb); return yTRIAND; } "trior" { FL; VALTEXT; CALLBACK(keywordCb); return yTRIOR; } "trireg" { FL; VALTEXT; CALLBACK(keywordCb); return yTRIREG; } "vectored" { FL; VALTEXT; CALLBACK(keywordCb); return yVECTORED; } "wait" { FL; VALTEXT; CALLBACK(keywordCb); return yWAIT; } "wand" { FL; VALTEXT; CALLBACK(keywordCb); return yWAND; } "while" { FL; VALTEXT; CALLBACK(keywordCb); return yWHILE; } "wire" { FL; VALTEXT; CALLBACK(keywordCb); return yWIRE; } "wor" { FL; VALTEXT; CALLBACK(keywordCb); return yWOR; } "xnor" { FL; VALTEXT; CALLBACK(keywordCb); return yXNOR; } "xor" { FL; VALTEXT; CALLBACK(keywordCb); return yXOR; } /* Types Verilator doesn't support but we do generically here */ "bufif0" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "bufif1" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "cmos" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "highz0" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } "highz1" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } "large" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } "medium" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } "nmos" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "notif0" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "notif1" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "pmos" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "pull0" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } "pull1" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } "pulldown" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "pullup" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "rcmos" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "rnmos" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "rpmos" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "rtran" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "rtranif0" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "rtranif1" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "small" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } "strong0" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } "strong1" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } "tran" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "tranif0" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "tranif1" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } "weak0" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } "weak1" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } /* Generic unsupported warnings */ } /* Verilog 2001 */ { /* Keywords*/ "automatic" { FL; VALTEXT; CALLBACK(keywordCb); return yAUTOMATIC; } "endgenerate" { FL; VALTEXT; CALLBACK(keywordCb); return yENDGENERATE; } "generate" { FL; VALTEXT; CALLBACK(keywordCb); return yGENERATE; } "genvar" { FL; VALTEXT; CALLBACK(keywordCb); return yGENVAR; } "ifnone" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } "localparam" { FL; VALTEXT; CALLBACK(keywordCb); return yLOCALPARAM; } "noshowcancelled" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } "pulsestyle_ondetect" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } "pulsestyle_onevent" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } "showcancelled" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } "signed" { FL; VALTEXT; CALLBACK(keywordCb); return ySIGNED; } "unsigned" { FL; VALTEXT; CALLBACK(keywordCb); return yUNSIGNED; } /* Generic unsupported keywords */ "cell" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } "config" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } "design" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } "endconfig" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } "incdir" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } "include" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } "instance" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } "liblist" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } "library" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } "use" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } } /* Verilog 2005 */ { /* Keywords */ "uwire" { FL; VALTEXT; CALLBACK(keywordCb); return yWIRE; } } /* System Verilog 2005 */ { /* System Tasks */ "$error" { FL; VALTEXT; CALLBACK(keywordCb); return yD_ERROR; } "$fatal" { FL; VALTEXT; CALLBACK(keywordCb); return yD_FATAL; } "$info" { FL; VALTEXT; CALLBACK(keywordCb); return yD_INFO; } "$root" { FL; VALTEXT; CALLBACK(keywordCb); return yD_ROOT; } "$unit" { FL; VALTEXT; CALLBACK(keywordCb); return yD_UNIT; } "$warning" { FL; VALTEXT; CALLBACK(keywordCb); return yD_WARNING; } /* Keywords */ "alias" { FL; VALTEXT; CALLBACK(keywordCb); return yALIAS; } "always_comb" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } "always_ff" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } "always_latch" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } "assert" { FL; VALTEXT; CALLBACK(keywordCb); return yASSERT; } "assume" { FL; VALTEXT; CALLBACK(keywordCb); return yASSUME; } "before" { FL; VALTEXT; CALLBACK(keywordCb); return yBEFORE; } "bind" { FL; VALTEXT; CALLBACK(keywordCb); return yBIND; } "bins" { FL; VALTEXT; CALLBACK(keywordCb); return yBINS; } "binsof" { FL; VALTEXT; CALLBACK(keywordCb); return yBINSOF; } "bit" { FL; VALTEXT; CALLBACK(keywordCb); return yBIT; } "break" { FL; VALTEXT; CALLBACK(keywordCb); return yBREAK; } "byte" { FL; VALTEXT; CALLBACK(keywordCb); return yBYTE; } "chandle" { FL; VALTEXT; CALLBACK(keywordCb); return yCHANDLE; } "class" { FL; VALTEXT; CALLBACK(keywordCb); return yCLASS; } "clocking" { FL; VALTEXT; CALLBACK(keywordCb); return yCLOCKING; } "const" { FL; VALTEXT; CALLBACK(keywordCb); return yCONST__LEX; } "constraint" { FL; VALTEXT; CALLBACK(keywordCb); return yCONSTRAINT; } "context" { FL; VALTEXT; CALLBACK(keywordCb); return yCONTEXT; } "continue" { FL; VALTEXT; CALLBACK(keywordCb); return yCONTINUE; } "cover" { FL; VALTEXT; CALLBACK(keywordCb); return yCOVER; } "covergroup" { FL; VALTEXT; CALLBACK(keywordCb); return yCOVERGROUP; } "coverpoint" { FL; VALTEXT; CALLBACK(keywordCb); return yCOVERPOINT; } "cross" { FL; VALTEXT; CALLBACK(keywordCb); return yCROSS; } "dist" { FL; VALTEXT; CALLBACK(keywordCb); return yDIST; } "do" { FL; VALTEXT; CALLBACK(keywordCb); return yDO; } "endclass" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCLASS; } "endclocking" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCLOCKING; } "endgroup" { FL; VALTEXT; CALLBACK(keywordCb); return yENDGROUP; } "endinterface" { FL; VALTEXT; CALLBACK(keywordCb); return yENDINTERFACE; } "endpackage" { FL; VALTEXT; CALLBACK(keywordCb); return yENDPACKAGE; } "endprogram" { FL; VALTEXT; CALLBACK(keywordCb); return yENDPROGRAM; } "endproperty" { FL; VALTEXT; CALLBACK(keywordCb); return yENDPROPERTY; } "endsequence" { FL; VALTEXT; CALLBACK(keywordCb); return yENDSEQUENCE; } "enum" { FL; VALTEXT; CALLBACK(keywordCb); return yENUM; } "expect" { FL; VALTEXT; CALLBACK(keywordCb); return yEXPECT; } "export" { FL; VALTEXT; CALLBACK(keywordCb); return yEXPORT; } "extends" { FL; VALTEXT; CALLBACK(keywordCb); return yEXTENDS; } "extern" { FL; VALTEXT; CALLBACK(keywordCb); return yEXTERN; } "final" { FL; VALTEXT; CALLBACK(keywordCb); return yFINAL; } "first_match" { FL; VALTEXT; CALLBACK(keywordCb); return yFIRST_MATCH; } "foreach" { FL; VALTEXT; CALLBACK(keywordCb); return yFOREACH; } "forkjoin" { FL; VALTEXT; CALLBACK(keywordCb); return yFORKJOIN; } "iff" { FL; VALTEXT; CALLBACK(keywordCb); return yIFF; } "ignore_bins" { FL; VALTEXT; CALLBACK(keywordCb); return yIGNORE_BINS; } "illegal_bins" { FL; VALTEXT; CALLBACK(keywordCb); return yILLEGAL_BINS; } "import" { FL; VALTEXT; CALLBACK(keywordCb); return yIMPORT; } "inside" { FL; VALTEXT; CALLBACK(keywordCb); return yINSIDE; } "int" { FL; VALTEXT; CALLBACK(keywordCb); return yINT; } "interface" { FL; VALTEXT; CALLBACK(keywordCb); return yINTERFACE; } "intersect" { FL; VALTEXT; CALLBACK(keywordCb); return yINTERSECT; } "join_any" { FL; VALTEXT; CALLBACK(keywordCb); return yJOIN; } "join_none" { FL; VALTEXT; CALLBACK(keywordCb); return yJOIN; } "local" { FL; VALTEXT; CALLBACK(keywordCb); return yLOCAL__LEX; } "logic" { FL; VALTEXT; CALLBACK(keywordCb); return yLOGIC; } "longint" { FL; VALTEXT; CALLBACK(keywordCb); return yLONGINT; } "matches" { FL; VALTEXT; CALLBACK(keywordCb); return yMATCHES; } "modport" { FL; VALTEXT; CALLBACK(keywordCb); return yMODPORT; } "new" { FL; VALTEXT; CALLBACK(keywordCb); return yNEW__LEX; } "null" { FL; VALTEXT; CALLBACK(keywordCb); return yNULL; } "package" { FL; VALTEXT; CALLBACK(keywordCb); return yPACKAGE; } "packed" { FL; VALTEXT; CALLBACK(keywordCb); return yPACKED; } "priority" { FL; VALTEXT; CALLBACK(keywordCb); return yPRIORITY; } "program" { FL; VALTEXT; CALLBACK(keywordCb); return yPROGRAM; } "property" { FL; VALTEXT; CALLBACK(keywordCb); return yPROPERTY; } "protected" { FL; VALTEXT; CALLBACK(keywordCb); return yPROTECTED; } "pure" { FL; VALTEXT; CALLBACK(keywordCb); return yPURE; } "rand" { FL; VALTEXT; CALLBACK(keywordCb); return yRAND; } "randc" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDC; } "randcase" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDCASE; } "randsequence" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDSEQUENCE; } "ref" { FL; VALTEXT; CALLBACK(keywordCb); return yREF; } "return" { FL; VALTEXT; CALLBACK(keywordCb); return yRETURN; } "sequence" { FL; VALTEXT; CALLBACK(keywordCb); return ySEQUENCE; } "shortint" { FL; VALTEXT; CALLBACK(keywordCb); return ySHORTINT; } "shortreal" { FL; VALTEXT; CALLBACK(keywordCb); return ySHORTREAL; } "solve" { FL; VALTEXT; CALLBACK(keywordCb); return ySOLVE; } "static" { FL; VALTEXT; CALLBACK(keywordCb); return ySTATIC__LEX; } "string" { FL; VALTEXT; CALLBACK(keywordCb); return ySTRING; } "struct" { FL; VALTEXT; CALLBACK(keywordCb); return ySTRUCT; } "super" { FL; VALTEXT; CALLBACK(keywordCb); return ySUPER; } "tagged" { FL; VALTEXT; CALLBACK(keywordCb); return yTAGGED; } "this" { FL; VALTEXT; CALLBACK(keywordCb); return yTHIS; } "throughout" { FL; VALTEXT; CALLBACK(keywordCb); return yTHROUGHOUT; } "timeprecision" { FL; VALTEXT; CALLBACK(keywordCb); return yTIMEPRECISION; } "timeunit" { FL; VALTEXT; CALLBACK(keywordCb); return yTIMEUNIT; } "type" { FL; VALTEXT; CALLBACK(keywordCb); return yTYPE; } "typedef" { FL; VALTEXT; CALLBACK(keywordCb); return yTYPEDEF; } "union" { FL; VALTEXT; CALLBACK(keywordCb); return yUNION; } "unique" { FL; VALTEXT; CALLBACK(keywordCb); return yUNIQUE; } "var" { FL; VALTEXT; CALLBACK(keywordCb); return yVAR; } "virtual" { FL; VALTEXT; CALLBACK(keywordCb); return yVIRTUAL__LEX; } "void" { FL; VALTEXT; CALLBACK(keywordCb); return yVOID; } "wait_order" { FL; VALTEXT; CALLBACK(keywordCb); return yWAIT_ORDER; } "wildcard" { FL; VALTEXT; CALLBACK(keywordCb); return yWILDCARD; } "with" { FL; VALTEXT; CALLBACK(keywordCb); return yWITH__LEX; } "within" { FL; VALTEXT; CALLBACK(keywordCb); return yWITHIN; } } /* System Verilog 2009 */ { /* Keywords */ "accept_on" { FL; VALTEXT; CALLBACK(keywordCb); return yACCEPT_ON; } "checker" { FL; VALTEXT; CALLBACK(keywordCb); return yCHECKER; } "endchecker" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCHECKER; } "eventually" { FL; VALTEXT; CALLBACK(keywordCb); return yEVENTUALLY; } "global" { FL; VALTEXT; CALLBACK(keywordCb); return yGLOBAL__LEX; } "implies" { FL; VALTEXT; CALLBACK(keywordCb); return yIMPLIES; } "let" { FL; VALTEXT; CALLBACK(keywordCb); return yLET; } "nexttime" { FL; VALTEXT; CALLBACK(keywordCb); return yNEXTTIME; } "reject_on" { FL; VALTEXT; CALLBACK(keywordCb); return yREJECT_ON; } "restrict" { FL; VALTEXT; CALLBACK(keywordCb); return yRESTRICT; } "s_always" { FL; VALTEXT; CALLBACK(keywordCb); return yS_ALWAYS; } "s_eventually" { FL; VALTEXT; CALLBACK(keywordCb); return yS_EVENTUALLY; } "s_nexttime" { FL; VALTEXT; CALLBACK(keywordCb); return yS_NEXTTIME; } "s_until" { FL; VALTEXT; CALLBACK(keywordCb); return yS_UNTIL; } "s_until_with" { FL; VALTEXT; CALLBACK(keywordCb); return yS_UNTIL_WITH; } "strong" { FL; VALTEXT; CALLBACK(keywordCb); return ySTRONG; } "sync_accept_on" { FL; VALTEXT; CALLBACK(keywordCb); return ySYNC_ACCEPT_ON; } "sync_reject_on" { FL; VALTEXT; CALLBACK(keywordCb); return ySYNC_REJECT_ON; } "unique0" { FL; VALTEXT; CALLBACK(keywordCb); return yUNIQUE0; } "until" { FL; VALTEXT; CALLBACK(keywordCb); return yUNTIL; } "until_with" { FL; VALTEXT; CALLBACK(keywordCb); return yUNTIL_WITH; } "untyped" { FL; VALTEXT; CALLBACK(keywordCb); return yUNTYPED; } "weak" { FL; VALTEXT; CALLBACK(keywordCb); return yWEAK; } } /* System Verilog 2012 */ { /* Keywords */ "implements" { FL; VALTEXT; CALLBACK(keywordCb); return yIMPLEMENTS; } "interconnect" { FL; VALTEXT; CALLBACK(keywordCb); return yINTERCONNECT; } "nettype" { FL; VALTEXT; CALLBACK(keywordCb); return yNETTYPE; } "soft" { FL; VALTEXT; CALLBACK(keywordCb); return ySOFT; } } /* Default PLI rule */ { "$"[a-zA-Z_$][a-zA-Z0-9_$]* { FL; VALTEXT; CALLBACK(sysfuncCb); return ygenSYSCALL; } } /************************************************************************/ /* Single character operator thingies */ { "{" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "}" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } } { "!" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "#" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "$" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "%" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "&" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "(" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } ")" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "*" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "+" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "," { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "-" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "." { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "/" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } ":" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } ";" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "<" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "=" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } ">" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "?" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "@" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "[" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "]" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "^" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "|" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "~" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } } /************************************************************************/ /* Operators and multi-character symbols */ /* Verilog 1995 Operators */ { "&&" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ANDAND; } "||" { FL; VALTEXT; CALLBACK(operatorCb); return yP_OROR; } "<=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_LTE; } ">=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_GTE; } "<<" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFT; } ">>" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SRIGHT; } "==" { FL; VALTEXT; CALLBACK(operatorCb); return yP_EQUAL; } "!=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_NOTEQUAL; } "===" { FL; VALTEXT; CALLBACK(operatorCb); return yP_CASEEQUAL; } "!==" { FL; VALTEXT; CALLBACK(operatorCb); return yP_CASENOTEQUAL; } "^~" { FL; VALTEXT; CALLBACK(operatorCb); return yP_XNOR; } "~^" { FL; VALTEXT; CALLBACK(operatorCb); return yP_XNOR; } "~&" { FL; VALTEXT; CALLBACK(operatorCb); return yP_NAND; } "~|" { FL; VALTEXT; CALLBACK(operatorCb); return yP_NOR; } "->" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSGT; } "=>" { FL; VALTEXT; CALLBACK(operatorCb); return yP_EQGT; } "*>" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ASTGT; } "&&&" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ANDANDAND; } } /* Verilog 2001 Operators */ { "<<<" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFT; } ">>>" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SSRIGHT; } "**" { FL; VALTEXT; CALLBACK(operatorCb); return yP_POW; } "+:" { FL; VALTEXT; CALLBACK(operatorCb); return yP_PLUSCOLON; } "-:" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSCOLON; } ".*" { FL; VALTEXT; CALLBACK(operatorCb); return yP_DOTSTAR; } } /* SystemVerilog 2005 Operators */ { "'" { FL; VALTEXT; CALLBACK(operatorCb); return yP_TICK; } "'{" { FL; VALTEXT; CALLBACK(operatorCb); return yP_TICKBRA; } "==?" { FL; VALTEXT; CALLBACK(operatorCb); return yP_WILDEQUAL; } "!=?" { FL; VALTEXT; CALLBACK(operatorCb); return yP_WILDNOTEQUAL; } "++" { FL; VALTEXT; CALLBACK(operatorCb); return yP_PLUSPLUS; } "--" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSMINUS; } "+=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_PLUSEQ; } "-=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSEQ; } "*=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_TIMESEQ; } "/=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_DIVEQ; } "%=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MODEQ; } "&=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ANDEQ; } "|=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_OREQ; } "^=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_XOREQ; } "<<=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFTEQ; } ">>=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SRIGHTEQ; } "<<<=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFTEQ; } ">>>=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SSRIGHTEQ; } "->>" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSGTGT; } "##" { FL; VALTEXT; CALLBACK(operatorCb); return yP_POUNDPOUND; } "@@" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ATAT; } "::" { FL; VALTEXT; CALLBACK(operatorCb); return yP_COLONCOLON; } ":=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_COLONEQ; } ":/"[^\/\*] { FL; VALTEXT; CALLBACK(operatorCb); return yP_COLONDIV; } /* : then comment is not ":/" */ "|->" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ORMINUSGT; } "|=>" { FL; VALTEXT; CALLBACK(operatorCb); return yP_OREQGT; } /* Some simulators allow whitespace here. Grr */ "["{ws}*"*" { FL; VALTEXT; CALLBACK(operatorCb); return yP_BRASTAR; } "["{ws}*"=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_BRAEQ; } "["{ws}*"->" { FL; VALTEXT; CALLBACK(operatorCb); return yP_BRAMINUSGT; } "["{ws}*"+"{ws}*"]" { FL; VALTEXT; CALLBACK(operatorCb); return yP_BRAPLUSKET; } } /* SystemVerilog 2009 Operators */ { "#-#" { FL; VALTEXT; CALLBACK(operatorCb); return yP_POUNDMINUSPD; } "#=#" { FL; VALTEXT; CALLBACK(operatorCb); return yP_POUNDEQPD; } "<->" { FL; VALTEXT; CALLBACK(operatorCb); return yP_LTMINUSGT; } } /* Identifiers and numbers */ { /* Consume a following space, as we're going to add one to the symbol, we'd like to avoid inserting an extra */ {escid}{space} { if (VParseLex::symEscapeless(yytext+1,yyleng-1-1)) { string sym = string(yytext+1,yyleng-1-1); FL; CALLBACKS(symbolCb, sym); VALTEXTS(sym); unput(' '); } else { string sym = string(yytext,yyleng-1) + ' '; FL; CALLBACKS(symbolCb, sym); VALTEXTS(sym); } return yaID__LEX; } {escid} { if (VParseLex::symEscapeless(yytext+1,yyleng-1)) { string sym = string(yytext+1,yyleng-1); FL; CALLBACKS(symbolCb, sym); VALTEXTS(sym); } else { string sym = string(yytext,yyleng) + ' '; FL; CALLBACKS(symbolCb, sym); VALTEXTS(sym); } return yaID__LEX; } {id} { FL; VALTEXT; CALLBACK(symbolCb); return yaID__LEX; } \"[^\"\\]*\" { FL; VALTEXT; CALLBACK(stringCb); return yaSTRING; } \" { yy_push_state(STRING); yymore(); } {vnum} { /* "# 1'b0" is a delay value so must lex as "#" "1" "'b0" */ if (LEXP->prevLexToken()=='#') { int shortlen = 0; while (isdigit(yytext[shortlen])) shortlen++; if (shortlen) { // Return is stuff before ' VALTEXTS(string(yytext,shortlen)); // Push rest for later parse LEXP->unputString(yytext+shortlen, yyleng-shortlen); FL; LINECHECKS(yytext,shortlen); CALLBACKS(numberCb,string(yytext,shortlen)); return yaINTNUM; } } FL; VALTEXT; LINECHECK(); CALLBACK(numberCb); return yaINTNUM; } [0-9][_0-9]* { FL; VALTEXT; CALLBACK(numberCb); return yaINTNUM; } [0-9][_0-9]*(\.[_0-9]+)([eE][-+]?[_0-9]+)? { FL; VALTEXT; CALLBACK(numberCb); return yaFLOATNUM; } [0-9][_0-9]*(\.[_0-9]+)?([eE][-+]?[_0-9]+) { FL; VALTEXT; CALLBACK(numberCb); return yaFLOATNUM; } [0-9][_0-9]*(\.[_0-9]+)?(fs|ps|ns|us|ms|s|step) { FL; VALTEXT; CALLBACK(numberCb); return yaTIMENUM; } } /************************************************************************/ /* STRINGS */ <> { yyerrorf("EOF in unterminated string"); yyleng = 0; yy_pop_state(); } {crnl} { yyerrorf("Unterminated string"); NEXTLINE(); } \\{crnl} { yymore(); NEXTLINE(); } \\. { yymore(); } \" { yy_pop_state(); FL; VALTEXT; CALLBACK(stringCb); return yaSTRING; } {word} { yymore(); } . { yymore(); } /************************************************************************/ /* Multi-line COMMENTS */ "*"+[^*/\n]* { yymore(); } \n { yymore(); NEXTLINE(); } "*"+"/" { VALTEXT; CALLBACK(commentCb); yy_pop_state(); } // No FL; it's at comment begin {word} { yymore(); } . { yymore(); } <> { yyerrorf("EOF in '/* ... */' block comment"); yyleng = 0; yy_pop_state(); } /************************************************************************/ /* Protected */ \n { if (LPARSEP->useProtected()) yymore(); NEXTLINE(); } "`endprotected" { FL; VALTEXT; CALLBACK(preprocCb); yy_pop_state(); } . { if (LPARSEP->useProtected()) yymore(); } {word} { if (LPARSEP->useProtected()) yymore(); } <> { yyerrorf("EOF in `protected"); yyleng = 0; yy_pop_state(); } /************************************************************************/ /* Attributes */ {crnl} { yymore(); NEXTLINE(); } "*)" { FL; VALTEXT; CALLBACK(attributeCb); yy_pop_state(); } {word} { yymore(); } . { yymore(); } <> { yyerrorf("EOF in (*"); yyleng = 0; yy_pop_state(); } /************************************************************************/ /* Attributes */ /* Note simulators vary in support for "(* /_*something*_/ foo*)" where _ doesn't exist */ { "(*"({ws}|{crnl})*({id}|{escid}) { yymore(); yy_push_state(ATTRMODE); } // Doesn't match (*), but (* attr_spec } /************************************************************************/ /* Preprocessor */ { "`accelerate" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`autoexpand_vectornets" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`celldefine" { FL; VALTEXT; CALLBACK(preprocCb); LEXP->m_inCellDefine=true; } "`default_decay_time"{ws}+[^\n\r]* { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only "`default_nettype"{ws}+[a-zA-Z0-9]* { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog 2001 "`default_trireg_strength"{ws}+[^\n\r]* { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog 2009 "`delay_mode_distributed" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only "`delay_mode_path" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only "`delay_mode_unit" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only "`delay_mode_zero" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only "`disable_portfaults" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`enable_portfaults" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`endcelldefine" { FL; VALTEXT; CALLBACK(preprocCb); LEXP->m_inCellDefine=false; } "`endprotect" { FL; VALTEXT; CALLBACK(preprocCb); } "`expand_vectornets" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`inline" { FL; VALTEXT; CALLBACK(preprocCb); } "`line"{ws}+[^\n\r]*{crnl} { LPARSEP->inLineDirective(yytext); FL; VALTEXT; CALLBACK(preprocCb); } "`noaccelerate" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`noexpand_vectornets" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`noremove_gatenames" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`noremove_netnames" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`nosuppress_faults" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`nounconnected_drive" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`portcoerce" { FL; VALTEXT; CALLBACK(preprocCb); } "`pragma"{ws}+[^\n\r]* { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog 2005 "`protect" { FL; VALTEXT; CALLBACK(preprocCb); } "`protected" { FL; VALTEXT; CALLBACK(preprocCb); yy_push_state(PROTMODE); } "`remove_gatenames" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`remove_netnames" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`resetall" { FL; VALTEXT; CALLBACK(preprocCb); } "`suppress_faults" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility "`timescale"{ws}+[^\n\r]* { FL; VALTEXT; CALLBACK(preprocCb); } /* See also setLanguage below */ "`begin_keywords"[ \t]*\"1364-1995\" { yy_push_state(V95); CALLBACK(preprocCb); } "`begin_keywords"[ \t]*\"1364-2001\" { yy_push_state(V01); CALLBACK(preprocCb); } "`begin_keywords"[ \t]*\"1364-2001-noconfig\" { yy_push_state(V01); CALLBACK(preprocCb); } "`begin_keywords"[ \t]*\"1364-2005\" { yy_push_state(V05); CALLBACK(preprocCb); } "`begin_keywords"[ \t]*\"1800-2005\" { yy_push_state(S05); CALLBACK(preprocCb); } "`begin_keywords"[ \t]*\"1800-2009\" { yy_push_state(S09); CALLBACK(preprocCb); } "`begin_keywords"[ \t]*\"1800-2012\" { yy_push_state(S12); CALLBACK(preprocCb); } "`end_keywords" { yy_pop_state(); CALLBACK(preprocCb); } } /************************************************************************/ /* Default rules - leave last */ { "`"[a-zA-Z_0-9]+ { FL; VALTEXT; if (LPARSEP->sigParser()) { yyerrorf("Define or directive not defined: %s",yytext); } else { CALLBACK(preprocCb); } } "//"[^\n]* { FL; VALTEXT; CALLBACK(commentCb); } /* throw away single line comments */ "/*" { FL; yy_push_state(CMTMODE); yymore(); } // FL; marks start for COMMENT callback . { FL; VALTEXT; CALLBACK(operatorCb); return ygenOPERATOR; } /* return single char ops. */ } /* Catch all - absolutely last */ <*>.|\n { yyerrorf("Missing VParseLex.l rule: Default rule invoked in state %d: %s", YY_START, yytext); } %% void VParseLex::unputString(const char* textp) { s_currentLexp = this; // Add characters to input stream in back-to-front order const char* cp; for (cp = textp; *cp; cp++); for (cp--; cp >= textp; cp--) { unput(*cp); } } void VParseLex::unputString(const char* textp, size_t length) { s_currentLexp = this; // Add characters to input stream in back-to-front order const char* cp = textp; for (cp += length - 1; length--; cp--) { unput(*cp); } } void VParseLex::unused() { if (0) { // Prevent unused warnings yy_top_state(); } } int VParseLex::yylexReadTok() { // Call yylex() remembering last non-whitespace token int token = yylex(); m_prevLexToken = token; // Save so can find '#' to parse following number return token; } int VParseLex::lexToken(VParseBisonYYSType* yylvalp) { // Fetch next token from prefetch or real lexer s_currentLexp = this; int token; if (m_ahead) { // We prefetched an extra token, give it back m_ahead = false; token = m_aheadToken; *yylvalp = m_aheadVal; } else { // Parse new token s_yylvalp = yylvalp; // Read by yylex() token = yylexReadTok(); } // If a paren, read another if (token == '(' || token == yCONST__LEX || token == yGLOBAL__LEX || token == yLOCAL__LEX || token == yNEW__LEX || token == ySTATIC__LEX || token == yVIRTUAL__LEX || token == yWITH__LEX // Never put yID_* here; below symbol table resolution would break ) { #ifdef FLEX_DEBUG if (yy_flex_debug) { cout<<" lexToken: reading ahead to find possible strength"<str = "global"; } // Avoid 2009 "global" conflicting with old code when we can } else if (token == yLOCAL__LEX) { if (nexttok == yP_COLONCOLON) token = yLOCAL__COLONCOLON; else token = yLOCAL__ETC; } else if (token == yNEW__LEX) { if (nexttok == '(') token = yNEW__PAREN; else token = yNEW__ETC; } else if (token == ySTATIC__LEX) { if (nexttok == yCONSTRAINT) token = ySTATIC__CONSTRAINT; else token = ySTATIC__ETC; } else if (token == yVIRTUAL__LEX) { if (nexttok == yCLASS) token = yVIRTUAL__CLASS; else if (nexttok == yINTERFACE) token = yVIRTUAL__INTERFACE; else if (nexttok == yaID__ETC || nexttok == yaID__LEX) // || nexttok == yaID__aINTERFACE // but we may not know interfaces yet. token = yVIRTUAL__anyID; else token = yVIRTUAL__ETC; } else if (token == yWITH__LEX) { if (nexttok == '(') token = yWITH__PAREN; else if (nexttok == '[') token = yWITH__BRA; else if (nexttok == '{') token = yWITH__CUR; else token = yWITH__ETC; } // If add to above "else if", also add to "if (token" further above } // Non-lookahead conversions // If a function/task convert token based on earlier detection of yPURE yVIRTUAL switch (token) { case yPURE: m_pvstate = 1; // found pure break; case yVIRTUAL__ETC: if (m_pvstate == 1) m_pvstate = 2; // found pure virtual else m_pvstate = 0; break; case yFUNCTION__LEX: token = (m_pvstate==2) ? yFUNCTION__aPUREV : yFUNCTION__ETC; m_pvstate = 0; break; case yTASK__LEX: token = (m_pvstate==2) ? yTASK__aPUREV : yTASK__ETC; m_pvstate = 0; break; case ';': // Just to be safe m_pvstate = 0; break; default: if (m_pvstate == 1) m_pvstate = 0; break; } // If an id, change the type based on symbol table // Note above sometimes converts yGLOBAL to a yaID__LEX s_yylvalp->scp = NULL; if (token == yaID__LEX) { VAstEnt* scp; if (VAstEnt* look_underp = LPARSEP->symTableNextId()) { if (yy_flex_debug) { cout<<" lexToken: next id lookup forced under "<str<<"\""<findSym(s_yylvalp->str); // "consume" it. Must set again if want another token under temp scope LPARSEP->symTableNextId(NULL); } else { scp = LPARSEP->syms().findEntUpward(s_yylvalp->str); } if (scp) { s_yylvalp->scp = scp; switch (scp->type()) { case VAstType::PACKAGE: token = yaID__aPACKAGE; break; case VAstType::CLASS: token = yaID__aTYPE; break; case VAstType::COVERGROUP: token = yaID__aTYPE; break; case VAstType::TYPE: token = yaID__aTYPE; break; default: token = yaID__ETC; break; } } else { // Not found token = yaID__ETC; } } return token; } int VParseLex::lexToBison(VParseBisonYYSType* yylvalp) { int tok = lexToken(yylvalp); if (yy_flex_debug || LPARSEP->debug()>=6) { // When debugging flex OR bison string shortstr = yylvalp->str; if (shortstr.length()>20) shortstr = string(shortstr,20)+"..."; cout<<" lexToBison TOKEN="<scp) cout<<" scp="<scp->ascii(); cout<0, symbol_table=>[], # .xs will init further for us use_vars => 1, use_unreadback => 1, # Backward compatibility use_protected => 1, # Backward compatibility use_std => undef, # Undef = silent #use_cb_{callback-name} => 0/1 # #_debug # Don't set, use debug() accessor to change level @_}; bless $self, $class; # Sets $self->{_cthis} $self->_new($self, # Options go here $self->{symbol_table}, $self->{_sigparser}, $self->{use_unreadback}, $self->{use_protected}, ); $self->{use_cb_contassign} = $self->{use_vars} if !exists $self->{use_cb_contassign}; $self->{use_cb_defparam} = $self->{use_vars} if !exists $self->{use_cb_defparam}; $self->{use_cb_pin} = $self->{use_vars} if !exists $self->{use_cb_pin}; $self->{use_cb_port} = $self->{use_vars} if !exists $self->{use_cb_port}; $self->{use_cb_var} = $self->{use_vars} if !exists $self->{use_cb_var}; foreach my $key (keys %{$self}) { if ($key =~ /^use_cb_(.*)/) { $self->_use_cb($1, $self->{$key}); } } $self->language(Verilog::Language::language_standard()); $self->debug($Debug) if $Debug; return $self; } sub DESTROY { my $self = shift; $self->_DESTROY; } ###################################################################### #### Accessors sub callback_names { my @out = sort @_Callback_Names; return @out; } sub debug { my $self = shift; my $level = shift; if (defined $level) { $self->{_debug} = $level; $self->_debug($level); } return $self->{_debug}; } sub fileline { my $self = shift; return ($self->filename||"").":".($self->lineno||""); } sub line { return lineno(@_); } # Old, now undocumented ####################################################################### #### Methods sub reset { my $self = shift; $self->std; } sub std { my $self = shift; my $quiet = !defined $self->{use_std} && $self->{_sigparser}; if (!$self->{symbol_table}[2]->{std} # Not in the symbol table yet && ($self->{use_std} || $quiet) ) { print "Including std::\n" if $self->{_debug}; my $olddbg = $self->debug; if ($quiet) { print "Disabling debug during std:: loading\n" if $self->{_debug}; $self->debug(0); $self->_callback_master_enable(0); # //verilog-perl callbacks off } $self->eof; #Flush user code before callback disable $self->parse(Verilog::Std::std); $self->eof; if ($quiet) { $self->_callback_master_enable(1); # //verilog-perl callbacks on $self->debug($olddbg); } } } sub parse_file { # Read a file and parse @_ == 2 or croak 'usage: $parser->parse_file($filename)'; my $self = shift; my $filename = shift; my $fh = new IO::File; $fh->open($filename) or croak "%Error: $! $filename"; $self->reset(); $self->filename($filename); $self->lineno(1); while (defined(my $line = $fh->getline())) { $self->parse ($line); } $self->eof; $fh->close; return $self; } sub parse_preproc_file { # Read a preprocess file and parse @_ == 2 or croak 'usage: $parser->parse_file(Verilog::Preproc_object_ref)'; my $self = shift; my $pp = shift; ref($pp) or croak "%Error: not passed a Verilog::Preproc object"; $self->reset(); # Chunk size of ~32K determined experimentally with t/49_largeish.t while (defined(my $text = $pp->getall(31*1024))) { $self->parse ($text); } $self->eof; return $self; } ###################################################################### #### Called by the parser sub error { my ($self,$text,$token)=@_; my $fileline = $self->filename.":".$self->lineno; croak ("%Error: $fileline: $text\n" ."Stopped"); } sub attribute { # Default Internal callback my $self = shift; # Parser invoked my $token = shift; # What token was parsed $self->unreadbackCat($token); } sub comment { # Default Internal callback my $self = shift; # Parser invoked my $token = shift; # What token was parsed $self->unreadbackCat($token); } sub string { # Default Internal callback my $self = shift; # Parser invoked my $token = shift; # What token was parsed $self->unreadbackCat($token); } sub keyword { # Default Internal callback my $self = shift; # Parser invoked my $token = shift; # What token was parsed $self->unreadbackCat($token); } sub symbol { # Default Internal callback my $self = shift; # Parser invoked my $token = shift; # What token was parsed $self->unreadbackCat($token); } sub operator { # Default Internal callback my $self = shift; # Parser invoked my $token = shift; # What token was parsed $self->unreadbackCat($token); } sub preproc { # Default Internal callback my $self = shift; # Parser invoked my $token = shift; # What token was parsed if (Verilog::Language::is_keyword($token)) { $self->keyword($token); # Do this for backward compatibility with Version 2.* } else { $self->symbol($token); # Do this for backward compatibility with Version 2.* } } sub number { # Default Internal callback my $self = shift; # Parser invoked my $token = shift; # What token was parsed $self->unreadbackCat($token); } sub sysfunc { # Default Internal callback - note the default action my $self = shift; # Parser invoked my $token = shift; # What token was parsed $self->symbol($token); # Do this for backward compatibility with Version 2.* } sub endparse { # Default Internal callback my $self = shift; # Parser invoked my $token = shift; # What token was parsed $self->unreadbackCat($token); } ###################################################################### #### Package return 1; __END__ =pod =head1 NAME Verilog::Parser - Parse Verilog language files =head1 SYNOPSIS use Verilog::Parser; my $parser = new Verilog::Parser; $string = $parser->unreadback (); $line = $parser->lineno (); $parser->parse ($text) $parser->parse_file ($filename) =head1 DESCRIPTION Verilog::Parser will tokenize a Verilog file when the parse() method is called and invoke various callback methods. This is useful for extracting information and editing files while retaining all context. For netlist like extractions, see L. See the "Which Package" section of L if you are unsure which parsing package to use for a new application. Note the parser allows some constructs that are syntax errors according to the specification (for example "foo.bar(1)++".) This is done when the parser can't easily detect these cases. It's up to the consumer of the parser to filter out such errors if it cares. =head1 METHODS =over 4 =item $parser = Verilog::Parser->new (args...) Create a new Parser. Adding "symbol_table => []" will use the specified symbol table for this parse, and modify the array reference to include those symbols detected by this parse. As the SystemVerilog language requires packages and typedefs to exist before they are referenced, you must pass the same symbol_table to subsequent parses that are for the same compilation scope. The internals of this symbol_table should be considered opaque, as it will change between package versions, and must not be modified by user code. Adding "use_cb_{callback-name} => 0" will disable the specified callback. By default, all callbacks will be called; disabling callbacks can greatly speed up the parser as a large percentage of time is spent calling between C and Perl to invoke the callbacks. When using this feature, use_unreadback=>0 should be used too, as since whole tokens are skipped, skipping whitespace shouldn't matter either. Adding "use_protected => 0" will disable callbacks on `protected regions, which may improve performance. Adding "use_std => 1" will add parsing of the SystemVerilog built-in std:: package, or "use_std => 0" will disable it. If unspecified it is silently included (no callbacks will be involed) when suspected to be necessary. Adding "use_unreadback => 0" will disable later use of the unreadback method, which may improve performance. Adding "use_vars => 0" will disable contassign, defparam, pin, var and port callbacks to Verilog::SigParser. This can greatly speed parsing when variable and interconnect information is not required. =item $parser->callback_names () Return an array of callback function names. This may be used to automatically create callbacks for all functions, or to test for different callback functionality between versions of Verilog-Perl. =item $parser->eof () Indicate the end of the input stream. All incomplete tokens will be parsed and all remaining callbacks completed. =item $parser->filename ($set) Return (if $set is undefined) or set current filename. =item $parser->lineno ($set) Return (if $set is undefined) or set current line number. =item $parser->parse ($string) Parse the $string as verilog text. Can be called multiple times. Note not all callbacks may be invoked until the eof method is called. =item $parser->parse_file ($filename); This method can be called to parse text from a file. The argument can be a filename or an already opened file handle. The return value from parse_file() is a reference to the parser object. =item $parser->parse_preproc_file ($preproc); This method can be called to parse preprocessed text from a predeclared Verilog::Preproc object. =item $parser->unreadback ($string) Return any input string from the file that has not been sent to the callback. This will include whitespace and tokens which did not have a callback. (For example comments, if there is no comment callback.) This is useful for recording the entire contents of the input, for preprocessors, pretty-printers, and such. With the optional argument, set the text to be returned with the next unreadback call. See also unreadbackCat, which is much faster. To use this option, "use_unreadback => 1" must have been passed to the constructor. =item $parser->unreadbackCat ($text) Add text to be returned with the next unreadback call. This is much faster than using "$parser->unreadback($parser->unreadback . $text)". =back =head1 CALLBACKS In order to make the parser do anything interesting, you must make a subclass where you override one or more of the following callback methods as appropriate. =over 4 =item $self->attribute ( $token ) This method is called when any text in (* *) are recognized. The first argument, $token, is the contents of the attribute including the delimiters. =item $self->comment ( $token ) This method is called when any text in // or /**/ comments are recognized. The first argument, $token, is the contents of the comment including the comment delimiters. =item $self->endparse ( $token ) This method is called when the file has been completely parsed, at the End-Of-File of the parsed file. It is useful for writing clean up routines. =item $self->keyword ( $token ) This method is called when any Verilog keyword is recognized. The first argument, $token, is the keyword. =item $self->number ( $token ) This method is called when any number is recognized. The first argument, $token, is the number. The Verilog::Language::number_value function may be useful for converting a Verilog value to a Perl integer. =item $self->operator ( $token ) This method is called when any symbolic operator (+, -, etc) is recognized. The first argument, $token, is the operator. =item $self->preproc ( $token ) This method is called when any Verilog preprocessor `command is recognized. Most of these are handled by the preprocessor, however any unrecognized `defines are passed through. For backward compatibility, if not defined this function will call the symbol callback. =item $self->string ( $token ) This method is called when any text in double quotes are recognized, or on the text of protected regions. The first argument, $token, is the contents of the string including the quotes. =item $self->symbol ( $token ) This method is called when any Verilog symbol is recognized. A symbol is considered a non-keyword bare-word. The first argument, $token, is the symbol. =item $self->sysfunc ( $token ) This method is called when any Verilog $syscall is recognized. The first argument, $token, is the symbol. For backward compatibility, if not defined this function will call the symbol callback. =back =head1 EXAMPLE Here's a simple example which will print every symbol in a verilog file. package MyParser; use Verilog::Parser; @ISA = qw(Verilog::Parser); # parse, parse_file, etc are inherited from Verilog::Parser sub new { my $class = shift; #print "Class $class\n"; my $self = $class->SUPER::new(); bless $self, $class; return $self; } sub symbol { my $self = shift; my $token = shift; $self->{symbols}{$token}++; } sub report { my $self = shift; foreach my $sym (sort keys %{$self->{symbols}}) { printf "Symbol %-30s occurs %4d times\n", $sym, $self->{symbols}{$sym}; } } package main; my $parser = MyParser->new(); $parser->parse_file (shift); $parser->report(); =head1 BUGS This is being distributed as a baseline for future contributions. Don't expect a lot, the Parser is still naive, and there are many awkward cases that aren't covered. The parser currently assumes the string it is passed ends on a newline boundary. It should be changed to allow arbitrary chunks. Cell instantiations without any arguments are not supported, an empty set of parenthesis are required. (Use "cell cell();", not "cell cell;".) =head1 DISTRIBUTION Verilog-Perl is part of the L free Verilog EDA software tool suite. The latest version is available from CPAN and from L. Copyright 2000-2016 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. =head1 AUTHORS Wilson Snyder =head1 SEE ALSO L, L, L, L, L, L, L, L L =cut Verilog-Perl-3.418/Parser/VAst.h0000644000177100017500000001120612654236555016312 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2009-2016 by Wilson Snyder. This program is free software; // you can redistribute it and/or modify it under the terms of either the // GNU Lesser General Public License Version 3 or the Perl Artistic License // Version 2.0. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // //************************************************************************* /// \file /// \brief Verilog::Parse: Symbol table accessing /// /// Authors: Wilson Snyder /// /// Code available from: http://www.veripool.org/verilog-perl /// //************************************************************************* #ifndef _VAST_H_ #define _VAST_H_ 1 #include #include #include using namespace std; // We don't include perl.h as it gets upset when merged with bison // code. So just grab a minimal set. struct av; struct hv; //###################################################################### // Enumeration that indicates what type of symbol is in the symbol tree. // We may later change to use a different object for each type class VAstType { public: enum en { NOT_FOUND = 0, NETLIST = 1, // Top of structure, created by Parser.pm:sub new{} AN_ERROR = 2, // Consistency error in internal tables (ERROR alone is a #define on some systems) UNKNOWN = 3, // Things that need scope, but don't know type yet // BLOCK, CHECKER, CLASS, // For yaID__CLASS CLOCKING, COVERGROUP, // For yaID__COVERGROUP ENUM, FORK, FUNCTION, INTERFACE, LET, MODPORT, MODULE, PACKAGE, // For yaID__PACKAGE PROGRAM, PROPERTY, SEQUENCE, STRUCT, TASK, TYPE, // For yaID__TYPE UNION, _MAX }; enum en m_e; inline VAstType () {}; inline VAstType (en _e) : m_e(_e) {}; explicit inline VAstType (int _e) : m_e(static_cast(_e)) {}; operator en () const { return m_e; }; const char* ascii() const { static const char* names[] = { "NOT_FOUND", "netlist", "error", "unknown", "block", "checker", "class", "clocking", "covergroup", "enum", "fork", "function", "interface", "let", "modport", "module", "package", "program", "property", "sequence", "struct", "task", "type", "union", "_MAX" }; return names[m_e]; } }; inline bool operator== (VAstType lhs, VAstType rhs) { return (lhs.m_e == rhs.m_e); } inline bool operator== (VAstType lhs, VAstType::en rhs) { return (lhs.m_e == rhs); } inline bool operator== (VAstType::en lhs, VAstType rhs) { return (lhs == rhs.m_e); } //###################################################################### // Single symbol table class VAstEnt { private: // MEMBERS // NOT ALLOWED - this class really has this==AV* // STATIC MEMBERS static int s_debug; public: static void debug(int flag) { s_debug=flag; } static int debug() { return s_debug; } private: // CREATORS VAstEnt() { assert(0); } // Not made by users, it's an AV* ~VAstEnt() { assert(0); } // Not made by users, it's an AV* av* newAVEnt (VAstType type); static void initAVEnt (struct av* avp, VAstType type, struct av* parentp); // ACCESSORS inline struct av* castAVp() { return (struct av*)(this); } inline VAstEnt* avToSymEnt(struct av* avp) { return (VAstEnt*)(avp); } /// $self->[2]: For current entry, the hash of symbols under it struct hv* subhash(); /// Insert into current table void replaceInsert(VAstEnt* newentp, const string& name); public: // ACCESSORS /// $self->[0]: For current entry, the node type VAstType type(); /// $self->[1]: For current entry, what node it is under or NULL if netlist VAstEnt* parentp(); /// type() indicates we shouldn't report this as a containing object bool typeIgnoreObjof() { VAstType t=type(); return t==VAstType::BLOCK || t==VAstType::FORK; } /// Info on current node, for debug string ascii(const string& name=""); // METHODS /// Return internal pointer for given name or null VAstEnt* findSym (const string& name); /// Find or create a symbol under current entry VAstEnt* findInsert (VAstType type, const string& name); /// Replace or create a symbol entry under current entry VAstEnt* replaceInsert (VAstType type, const string& name); /// Insert into current table from another imported package's table void import(VAstEnt* fromEntp, const string& id_or_star); protected: friend class VSymStack; void initNetlist(VFileLine* fl); }; #endif // guard Verilog-Perl-3.418/Parser/VSymTable.h0000644000177100017500000001023612654236555017305 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2009-2016 by Wilson Snyder. This program is free software; // you can redistribute it and/or modify it under the terms of either the // GNU Lesser General Public License Version 3 or the Perl Artistic License // Version 2.0. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // //************************************************************************* /// \file /// \brief Verilog::Parse: Symbol table accessing /// /// Authors: Wilson Snyder /// /// Code available from: http://www.veripool.org/verilog-perl /// //************************************************************************* #ifndef _VSYMTABLE_H_ #define _VSYMTABLE_H_ 1 #include "VFileLine.h" #include "VAst.h" #include #include using namespace std; //###################################################################### // List of symbol tables class VSymStack { typedef vector SymStack; SymStack m_sympStack; // Stack of symbol tables VAstEnt* m_currentSymp; // Current symbol table public: // CONSTRUCTORS VSymStack(VFileLine* fl, struct av* symp); // Pass in top-level symbol table array ~VSymStack() {} // ACCESSORS VAstEnt* currentSymp() const { return m_currentSymp; } VAstEnt* netlistSymp() const { return m_sympStack.front(); } // METHODS /// Insert a new entry, and return the new entry VAstEnt* replaceInsert(VAstType type, const string& name) { return m_currentSymp->replaceInsert(type,name); } /// Insert an entry if it doesn't exist VAstEnt* findInsert(VAstType type, const string& name) { return m_currentSymp->findInsert(type,name); } /// Return type of current lookup VAstType curType() { return m_currentSymp->type(); } void showUpward () { cout<<"SymTable Stack:\n"; for (SymStack::reverse_iterator it=m_sympStack.rbegin(); it!=m_sympStack.rend(); ++it) { VAstEnt* symp = *it; cout<<"\t"<ascii()<parentp()) { cout<<"\t"<ascii()<findSym VAstEnt* findEntUpward (const string& name) { for (VAstEnt* symp=currentSymp(); symp; symp=symp->parentp()) { if (VAstEnt* subp = symp->findSym(name)) { return subp; } } return NULL; } VAstType findTypeUpward (const string& name) { if (VAstEnt* subp = findEntUpward(name)) { return subp->type(); } else { return VAstType::NOT_FOUND; } } /// Return what this object is a member of, ignoring blocks string objofUpward() { for (VAstEnt* symp=currentSymp(); symp; symp=symp->parentp()) { if (!symp->typeIgnoreObjof()) { return symp->type().ascii(); } } assert(0); // Should have been a NETLIST if nothing else return ""; // Asserts maybe NOPed } /// Push current scope down to a new scope void pushScope(VAstEnt* symp) { m_sympStack.push_back(symp); m_currentSymp = symp; } /// Pop current scope up to a previous scope void popScope(VFileLine* fl) { m_sympStack.pop_back(); // Must always have one remaining - it's globals. Thus this is after the pop. if (m_sympStack.empty()) { fl->error("symbol stack underflow"); return; } m_currentSymp = m_sympStack.back(); } /// Import from package::id_or_star to this void import(VFileLine* fl, const string& pkg, const string& id_or_star) { import (fl, pkg, findEntUpward(pkg), id_or_star); } void import(VFileLine* fl, const string& pkg, VAstEnt* entp, const string& id_or_star) { if (!entp) { // Internal problem, because we earlier found pkg to label it an ID__aPACKAGE fl->error("Internal: Import package not found: "+pkg); return; } m_currentSymp->import(entp, id_or_star); } static void selftest(); }; #endif // guard Verilog-Perl-3.418/Parser/SigParser.pm0000644000177100017500000003261512654236555017530 0ustar wsnyderwsnyder# Verilog::SigParser.pm -- Verilog signal parsing # See copyright, etc in below POD section. ###################################################################### package Verilog::SigParser; require 5.000; use strict; use vars qw($VERSION $Debug); use Carp; use Verilog::Parser; use base qw(Verilog::Parser); ###################################################################### #### Configuration Section $VERSION = '3.418'; our @_Callback_Names = qw( attribute class contassign covergroup defparam endcell endclass endgroup endinterface endmodport endmodule endpackage endprogram endtaskfunc function import instant interface modport module package parampin pin port program task var ); ####################################################################### # parse, parse_file, etc are inherited from Verilog::Parser sub new { my $class = shift; my $self = $class->SUPER::new(_sigparser => 1, use_unreadback => 0, use_protected => 0, @_); bless $self, $class; $self->debug($Debug) if $Debug; $self->{metacomment} = {} unless defined $self->{metacomment}; return $self; } sub metacomment { my $self = shift; return $self->{metacomment}; } ####################################################################### # Accessors sub callback_names { my @out = sort @_Callback_Names; return @out; } ####################################################################### # Parser callbacks - backward compatibility sub comment { my $self = shift; my $text = shift; # Includes comment delimiters if ($text =~ m!^(/.)\s* ([\$A-Za-z]\w*)\s+ (\w+) !x) { my ($delim, $category, $name) = ($1, $2, $3); if ($self->{metacomment}->{$category}) { print "GotaMeta $category $name\n" if ($Debug); if ($delim eq "/*") { $text =~ s!\s*\*/$!!; } else { $text =~ s!\s+$!!; } $text =~ s!^/.\s*!!; $self->attribute( $text ); } } $self->SUPER::comment($text); } ####################################################################### # Null callbacks # The my's aren't needed since we do nothing, but are useful if the # user copies them from here to their program. sub contassign { my $self = shift; my $lhs = shift; my $rhs = shift; } sub class { my $self = shift; my $keyword = shift; my $name = shift; my $virtual = shift; } sub covergroup { my $self = shift; my $keyword = shift; my $name = shift; } sub defparam { my $self = shift; my $lhs = shift; my $rhs = shift; } sub endclass { my $self = shift; } sub endcell { my $self = shift; } sub endgroup { my $self = shift; } sub endinterface { my $self = shift; } sub endmodport { my $self = shift; } sub endtaskfunc { my $self = shift; } sub endmodule { my $self = shift; } sub endpackage { my $self = shift; } sub endprogram { my $self = shift; } sub function { my $self = shift; my $keyword = shift; my $name = shift; my $data_type = shift; } sub import { my $self = shift; my $module = shift; my $name = shift; } sub instant { my $self = shift; my $module = shift; my $cell = shift; my $range = shift; } sub interface { my $self = shift; my $keyword = shift; my $name = shift; } sub modport { my $self = shift; my $keyword = shift; my $name = shift; } sub module { my $self = shift; my $keyword = shift; my $name = shift; shift; # Ignored my $in_celldefine = shift; } sub pin { my $self = shift; my $name = shift; my $conn = shift; my $number = shift; } sub package { my $self = shift; my $kwd = shift; my $name = shift; } sub parampin { my $self = shift; my $name = shift; my $conn = shift; my $number = shift; } sub port { my $self = shift; my $name = shift; my $objof = shift; my $direction = shift; my $data_type = shift; my $array = shift; my $pinnum = shift; } sub ppdefine { my $self = shift; my $defvar = shift; my $definition = shift; } sub program { my $self = shift; my $kwd = shift; my $name = shift; } sub task { my $self = shift; my $keyword = shift; my $name = shift; } sub var { my $self = shift; my $keyword = shift; my $name = shift; my $objof = shift; my $net_type = shift; my $data_type = shift; my $array = shift; my $value = shift; } ###################################################################### ### Package return 1; __END__ =pod =head1 NAME Verilog::SigParser - Signal Parsing for Verilog language files =head1 SYNOPSIS use Verilog::Preproc; use Verilog::SigParser; my $pp = Verilog::Preproc->new(keep_comments=>0,); my $parser = new Verilog::SigParser; $parser->parse_preproc_file ($pp); # The below described callbacks are then invoked =head1 DESCRIPTION Verilog::SigParser builds upon the Verilog::Parser module to provide callbacks for when a signal is declared, a module instantiated, or a module defined. See the "Which Package" section of L if you are unsure which parsing package to use for a new application. For a higher level interface to this package, see L. =head1 METHODS The method interface to Verilog::SigParser is described in the Verilog::Parser module which this package inherits. You will probably want to use the preprocessing option of Verilog::Parser with this package. =head1 CALLBACKS In order to make the parser do anything interesting, you must make a subclass where you override one or more of the following methods as appropriate. Note Verilog::Parser callbacks also are invoked when SigParser is parsing. =over 4 =item $self->attribute ( $text ) Scanned an attribute or meta-comment. The parser inspects the first word of each comment line (C to end of line) or comment block (Cattribute( meta_text )> if the first word has a true value in hash C<$self->metacomment>. =item $self->class ( $token, $name, $virtual ) This method is called at a class. =item $self->covergroup ( $token, $name ) This method is called at a covergroup. =item $self->contassign ( $token, $lhs, $rhs ) This method is called at a continuous "assign" keyword, with the left and right hand part of the assignment. Note that "wire" initializations are not considered assignments; those are received via the var callback's value parameter. =item $self->defparam ( $token, $lhs, $rhs ) This method is called at a "defparam" keyword, with the left and right hand part of the assignment. =item $self->endcell ( $token ) This method is called at the end of defining a cell. It is useful for writing clean up routines. =item $self->endgroup ( $token ) This method is called at the end of defining a covergroup. It is useful for writing clean up routines. =item $self->endinterface ( $token ) This method is called at a endinterface keyword. It is useful for writing clean up routines. =item $self->endclass ( $token ) This method is called at a endclass keyword. It is useful for writing clean up routines. =item $self->endtaskfunc ( $token ) This method is called at a endfunction or endtask keyword. It is useful for writing clean up routines. =item $self->endmodport ( $token ) This method is called at a endmodport keyword. It is useful for writing clean up routines. =item $self->endmodule ( $token ) This method is called at a endmodule keyword. It is useful for writing clean up routines. =item $self->endpackage ( $token ) This method is called at a endpackage keyword. It is useful for writing clean up routines. =item $self->endprogram ( $token ) This method is called at a endprogram keyword. It is useful for writing clean up routines. =item $self->function ( $keyword, $name, $data-type ) This method is called when a function is defined. Type is the output size or typename, plus "signed", for example "", "[3:0]", "integer", or "signed [2:0]". =item $self->import ( $package, $id ) This method is called when an import is defined. =item $self->instant ( $module, $cell, $range ) This method is called when a instantiation is defined. The first parameter is the name of the module being instantiated. The second parameter is the name of the cell, which may be "" for primitives. The third is the range if the cell was arrayed. Prior to version 3.000, the name of the parameters were also included in this callback. This has been replaced with the parampin callback. =item $self->interface ( $keyword, $name ) This method is called when an interface is defined. =item $self->modport ( $keyword, $name ) This method is called when an interface modport is defined. =item $self->module ( $keyword, $name, ignored, $in_celldefine ) This method is called when a module is defined. =item $self->package ( $keyword, $name ) This method is called when a package is defined. =item $self->parampin ( $name, $connection, $index ) This method is called when a parameter is connected to an instantiation, IE the "#(...)" syntax. It is also used for UDP delays (Three calls for "#(delay0,delay1,delay2)"), as the parser does not know if the instantiation is for an UDP versus a module. =item $self->pin ( $name, $connection, $index ) This method is called when a pin on a instant is defined. If a pin name was not provided and the connection is by position, name will be '' or undef. If you do not need the pin nor var nor port callbacks, consider the "$self->new (... use_vars=>0 ...)" option to accelerate parsing. =item $self->port ( $name, $objof, $direction, $data_type, $array, $pinnum ) This method is called when a module port is defined. It may be called twice on a port if the 1995 style is used; the first call is made at the port header, the second call at the input/output declaration. The first argument $name, is the name of the port. $objof is what the port is an object of ('module', 'function', etc). $direction is the port direction ('input', 'output', 'inout', 'ref', 'const ref', or 'interface'). $data_type is the data type ('reg', 'user_type_t', 'signed [31:0]', etc, or for interfaces the "{interface_id}.{modport_name}"). $array is the arraying of the port ('[1:0][2:0]', '', etc). $pinnum is set to the pin number for ANSI style declarations, and 0 for Verilog 1995 declarations made outside the port list. If you do not need the pin nor var nor port callbacks, consider the "$self->new (... use_vars=>0 ...)" option to accelerate parsing. =item $self->ppdefine ( $defvar, $definition ) This method is called when a preprocessor definition is encountered. =item $self->program ( $keyword, $name ) This method is called when a program is defined. =item $self->signal_decl ( $keyword, $signame, $vector, $mem, $signed, $value ) This method is no longer used, see $self->var. =item $self->task ( $keyword, $name ) This method is called when a task is defined. =item $self->var ( $kwd, $name, $objof, $nettype, $data_type, $array, $value ) This method is called when a variable or net is defined. The first argument $kwd is how it was declared ('port', 'var', 'genvar', 'parameter', 'localparam', 'typedef') or if applicable a net type ('supply0', 'wire', etc). $name is the name of the variable. $objof is what the variable is an object of ('module', 'function', etc). $nettype is the net type if any was defined ('', 'supply0', 'wire', 'tri', etc). $data_type is the data type ('user_type_t', '[31:0] signed', etc). $array is the arraying of the variable which is the text AFTER the variable name ('[1:0][2:0]', '', etc). $value is what the variable was assigned to ('', or expression). Note typedefs are included here, because "parameter type" is both a variable and a type declaration. If you do not need the pin nor var nor port callbacks, consider the "$self->new (... use_vars=>0 ...)" option to accelerate parsing. Below are some example declarations and the callbacks: reg [4:0] vect = 5'b10100; # VAR 'var' 'vect' 'module' '' 'reg [4:0]' '' '5'b10100' wire (weak0, weak1) value = pullval; # VAR 'net' 'value' 'module' 'wire' '' '' 'pullval' reg [1:0] mem [12:2]; # VAR 'var' 'mem' 'module' '' 'reg [1:0]' '[12:2]' '' int n[1:2][1:3] = '{'{0,1,2}, '{3{4}}}; # verilog/parser_sv.v:121: VAR 'var' 'n' 'module' '' 'int' '[1:2][1:3]' ''{'{0,1,2},'{3}}' module ( output logic [SZ-1:0] o_sized ); # VAR 'port' 'o_sized' 'module' '' 'logic [SZ-1:0]' '' '' struct packed signed { bit [7:0] m_b; }; # VAR 'member' 'm_b' 'struct' '' 'bit [7:0]' '' '' =back =head1 BUGS This is being distributed as a baseline for future contributions. Don't expect a lot, the Parser is still naive, and there are many awkward cases that aren't covered. Note the SigParser is focused on extracting signal information. It does NOT extract enough information to derive general interconnect; for example the contents of 'assign' statements are not parsed. =head1 DISTRIBUTION Verilog-Perl is part of the L free Verilog EDA software tool suite. The latest version is available from CPAN and from L. Copyright 2000-2016 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. =head1 AUTHORS Wilson Snyder =head1 SEE ALSO L, L, L, L, L =cut Verilog-Perl-3.418/Parser/callbackgen0000755000177100017500000003021312654236555017437 0ustar wsnyderwsnyder#!/usr/bin/perl -w # See copyright, etc in below POD section. ###################################################################### require 5.006_001; use Getopt::Long; use IO::File; use Pod::Usage; use strict; use vars qw ($Debug $VERSION); # We need keywords, but haven't completely built yet, so can't use the blib # Thus we pull in Language.pm directly require "../Language.pm"; package main; $VERSION = '3.418'; # xs_manual=>1, -> The .xs file makes the handler itself my %Cbs = (attribute => {which=>'Parser', args => [text=>'string']}, comment => {which=>'Parser', args => [text=>'string']}, endparse => {which=>'Parser', args => [text=>'string']}, keyword => {which=>'Parser', args => [text=>'string']}, number => {which=>'Parser', args => [text=>'string']}, operator => {which=>'Parser', args => [text=>'string']}, preproc => {which=>'Parser', args => [text=>'string']}, string => {which=>'Parser', args => [text=>'string']}, symbol => {which=>'Parser', args => [text=>'string']}, sysfunc => {which=>'Parser', args => [text=>'string']}, # class => {which=>'SigParser', args => [kwd=>'string', name=>'string', virt=>'string']}, contassign => {which=>'SigParser', args => [kwd=>'string', lhs=>'string', rhs=>'string']}, covergroup => {which=>'SigParser', args => [kwd=>'string', name=>'string']}, defparam => {which=>'SigParser', args => [kwd=>'string', lhs=>'string', rhs=>'string']}, endcell => {which=>'SigParser', args => [kwd=>'string']}, endclass => {which=>'SigParser', args => [kwd=>'string']}, endgroup => {which=>'SigParser', args => [kwd=>'string']}, endinterface=>{which=>'SigParser', args => [kwd=>'string']}, endmodport => {which=>'SigParser', args => [kwd=>'string']}, endmodule => {which=>'SigParser', args => [kwd=>'string']}, endpackage => {which=>'SigParser', args => [kwd=>'string']}, endprogram => {which=>'SigParser', args => [kwd=>'string']}, endtaskfunc=> {which=>'SigParser', args => [kwd=>'string']}, function => {which=>'SigParser', args => [kwd=>'string', name=>'string', data_type=>'string']}, import => {which=>'SigParser', args => [package=>'string', id=>'string']}, instant => {which=>'SigParser', args => [mod=>'string', cell=>'string', range=>'string']}, interface => {which=>'SigParser', args => [kwd=>'string', name=>'string']}, modport => {which=>'SigParser', args => [kwd=>'string', name=>'string']}, module => {which=>'SigParser', args => [kwd=>'string', name=>'string', ignore3=>'undef', celldefine=>'bool'],}, package => {which=>'SigParser', args => [kwd=>'string', name=>'string']}, parampin => {which=>'SigParser', args => [name=>'string', conn=>'string', index=>'int']}, pin => {which=>'SigParser', args => [name=>'string', conn=>'string', index=>'int']}, port => {which=>'SigParser', args => [name=>'string', objof=>'string', direction=>'string', data_type=>'string', array=>'string', index=>'int']}, program => {which=>'SigParser', args => [kwd=>'string', name=>'string'],}, var => {which=>'SigParser', args => [kwd=>'string', name=>'string', objof=>'string', net=>'string', data_type=>'string', array=>'string', value=>'string'],}, task => {which=>'SigParser', args => [kwd=>'string', name=>'string']}, ); #====================================================================== # main our $Opt_Debug; autoflush STDOUT 1; autoflush STDERR 1; Getopt::Long::config ("no_auto_abbrev"); if (! GetOptions ( # Local options "help" => \&usage, "version" => sub { print "Version $VERSION\n"; exit(0); }, "<>" => sub { die "%Error: Unknown parameter: $_[0]\n"; }, )) { die "%Error: Bad usage, try 'callbackgen --help'\n"; } process(); #---------------------------------------------------------------------- sub usage { print "Version $VERSION\n"; pod2usage(-verbose=>2, -exitval=>2, -output=>\*STDOUT, -noperldoc=>1); exit (1); } ####################################################################### sub process { filter("Parser.xs",0); filter("VParse.h",0); filter("Parser_callbackgen.cpp",1); } sub filter { my $filename = shift; my $make_xs = shift; my $fh = IO::File->new("<$filename"); my @lines; if (!$fh) { if ($make_xs) { @lines = ("// CALLBACKGEN_XS\n"); } else { die "%Error: $! $filename\n"; } } else { @lines = $fh->getlines; $fh->close; } my @orig = @lines; my $strip; my @out; foreach my $line (@lines) { if ($line =~ /CALLBACKGEN_GENERATED_BEGIN/) { $strip = 1; } else { if (!$strip) { push @out, $line; } if ($line =~ /CALLBACKGEN_GENERATED_END/) { $strip = 0; } elsif ($line =~ /CALLBACKGEN_H_MEMBERS/) { push @out, " // CALLBACKGEN_GENERATED_BEGIN - GENERATED AUTOMATICALLY by callbackgen\n"; push @out, _h_use_cb(); push @out, " // CALLBACKGEN_GENERATED_END - GENERATED AUTOMATICALLY by callbackgen\n"; } elsif ($line =~ /CALLBACKGEN_CB_USE/) { push @out, " // CALLBACKGEN_GENERATED_BEGIN - GENERATED AUTOMATICALLY by callbackgen\n"; push @out, _c_use_cb(); push @out, " // CALLBACKGEN_GENERATED_END - GENERATED AUTOMATICALLY by callbackgen\n"; } elsif ($line =~ /CALLBACKGEN_H_VIRTUAL(_0)?/) { my $zero = (($1||"") eq "_0") ? " = 0":""; push @out, " // CALLBACKGEN_GENERATED_BEGIN - GENERATED AUTOMATICALLY by callbackgen\n"; my $last_which = ""; foreach my $cb (sort {$Cbs{$a}{which} cmp $Cbs{$b}{which} || $a cmp $b} keys %Cbs) { my $which = $Cbs{$cb}{which}; if ($last_which ne $which) { push @out, " // Verilog::$which Callback methods\n"; $last_which = $which; } push @out, " virtual void "._func($cb)."("._arglist($cb).")".$zero.";\n"; } push @out, " // CALLBACKGEN_GENERATED_END - GENERATED AUTOMATICALLY by callbackgen\n"; } elsif ($line =~ /CALLBACKGEN_XS/) { push @out, "// CALLBACKGEN_GENERATED_BEGIN - GENERATED AUTOMATICALLY by callbackgen\n"; foreach my $cb (sort {$Cbs{$a}{which} cmp $Cbs{$b}{which} || $a cmp $b} keys %Cbs) { next if $Cbs{$cb}{xs_manual}; push @out, _xs($cb); } push @out, _xs_use_cb(); push @out, "// CALLBACKGEN_GENERATED_END - GENERATED AUTOMATICALLY by callbackgen\n"; } elsif ($line =~ /CALLBACKGEN_KEYWORDS/) { push @out, " // CALLBACKGEN_GENERATED_BEGIN - GENERATED AUTOMATICALLY by callbackgen\n"; push @out, _h_keywords(); push @out, " // CALLBACKGEN_GENERATED_END - GENERATED AUTOMATICALLY by callbackgen\n"; } elsif ($line =~ /CALLBACKGEN/) { die "%Error: callbackgen: Unknown pragma: $line"; } } } @lines = @out; if (join('',@lines) ne join('',@orig) || $make_xs) { # Generated file, so touch to apppease make print "callbackgen edited $filename\n"; $fh = IO::File->new(">$filename") or die "%Error: $! writing $filename\n"; $fh->write(join('',@lines)); $fh->close; } } sub _func { my $cb = shift; return $cb."Cb"; } sub _arglist { my $cb = shift; my $args = "VFileLine* fl"; my $n=0; for (my $i=0; $i<=$#{$Cbs{$cb}{args}}; $i+=2) { my ($arg,$type) = ($Cbs{$cb}{args}[$i],$Cbs{$cb}{args}[$i+1]); $args .= "\n\t" if (($n++%5)==4); if ($type eq 'string') { $args .= ", const string\& $arg"; } elsif ($type eq 'bool' || $type eq 'int') { $args .= ", $type $arg"; } elsif ($type eq 'undef') { $args .= ", bool"; } else { die "%Error: callbackgen: Unknown type: $arg=>$type\n"; } } return $args; } sub _xs { my $cb = shift; my @out; push @out, "// GENERATED AUTOMATICALLY by callbackgen\n"; push @out, "void VParserXs::"._func($cb)."("._arglist($cb).") {\n"; my $enable = "callbackMasterEna()"; $enable .= " && m_useCb_${cb}"; $enable .= " && $Cbs{$cb}{enable}" if $Cbs{$cb}{enable}; push @out, " if ($enable) {\n"; push @out, " cbFileline(fl);\n"; my $callargs=""; my $n=1; for (my $i=0; $i<=$#{$Cbs{$cb}{args}}; $i+=2) { my ($arg,$type) = ($Cbs{$cb}{args}[$i],$Cbs{$cb}{args}[$i+1]); if ($type eq 'string') { push @out, " static string hold${n}; hold${n} = $arg;\n"; $callargs .= ", hold${n}.c_str()"; } elsif ($type eq 'bool') { push @out, " static string hold${n}; hold${n} = $arg ? \"1\":\"0\";\n"; $callargs .= ", hold${n}.c_str()"; } elsif ($type eq 'int') { push @out, " static string hold${n}; static char num".$n."[30]; sprintf(num${n},\"%d\",$arg); hold${n}=num${n};\n"; $callargs .= ", hold${n}.c_str()"; } elsif ($type eq 'undef') { $callargs .= ", NULL"; } else { die "%Error: callbackgen: Unknown type: $arg=>$type\n"; } $n++; } my $narg = $n-1; push @out, " call(NULL, $narg, \"$cb\"$callargs);\n"; push @out, " }\n"; push @out, "}\n"; return @out; } ####################################################################### sub _h_use_cb { my @out; push @out, " struct { // Bit packed to help the cache\n"; foreach my $cb (sort {$a cmp $b} keys %Cbs) { push @out, " bool m_useCb_${cb}:1;\n"; } push @out, " };\n"; return @out; } sub _c_use_cb { my @out; push @out, " void set_cb_use() {\n"; foreach my $cb (sort {$a cmp $b} keys %Cbs) { push @out, " m_useCb_${cb} = true;\n"; } push @out, " }\n"; return @out; } sub _xs_use_cb { my @out; push @out, "// GENERATED AUTOMATICALLY by callbackgen\n"; # Trailing Ena so it doesn't look like it is a callback itself push @out, "void VParserXs::useCbEna(const char* name, bool flag) {\n"; push @out, " if (0) ;\n"; foreach my $cb (sort {$a cmp $b} keys %Cbs) { push @out, " else if (0==strcmp(name,\"${cb}\")) m_useCb_${cb} = flag;\n"; } push @out, "}\n"; return @out; } sub _h_keywords { my @out; (keys %Verilog::Language::Keyword) or die "%Error: Keyword loading failed,"; push @out, " static bool isKeyword(const char* kwd, int leng) {\n"; # If this gets slow, we can use a perfect hashing function and a table to compare push @out, "\tstatic set s_map;\n"; push @out, "\tif (s_map.empty()) {\n"; my $i=0; push @out, "\t const char* kwds[] = {"; foreach my $kwd (sort keys %Verilog::Language::Keyword) { next if $kwd !~ /^[a-zA-Z_]/; push @out, "\n\t\t" if ($i++%7)==0; push @out, "\"$kwd\","; } push @out, "\"\"};\n"; push @out, "\t for (const char** k=kwds; **k; k++) s_map.insert(*k);\n"; push @out, "\t}\n"; push @out, "\tstring str(kwd,leng);\n"; push @out, "\treturn s_map.end() != s_map.find(str);\n"; push @out, " }\n"; return @out; } ####################################################################### __END__ =pod =head1 NAME callbackgen - Create callback functions for Verilog-Perl internals =head1 SYNOPSIS make This will invoke callbackgen =head1 DESCRIPTION Callbackgen is an internal utility used in building Verilog::Parser. =head1 EXTENSIONS =over 4 =item //CALLBACKGEN_H_VIRTUAL Creates "virtual callbackCb(...);" =item //CALLBACKGEN_H_VIRTUAL_0 Creates "virtual callbackCb(...) = 0;" =item //CALLBACKGEN_XS Creates XS code for accepting the callback. =back =head1 ARGUMENTS =over 4 =item --help Displays this message and program version and exits. =item --debug Enable debug. =item --version Print the version number and exit. =back =head1 DISTRIBUTION This is part of the L free Verilog EDA software tool suite. The latest version is available from CPAN and from L. Copyright 2008-2016 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. =head1 AUTHORS Wilson Snyder =head1 SEE ALSO =cut ###################################################################### ### Local Variables: ### compile-command: "./callbackgen " ### End: Verilog-Perl-3.418/Parser/VAst.cpp0000644000177100017500000001533212654236555016651 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2009-2016 by Wilson Snyder. This program is free software; // you can redistribute it and/or modify it under the terms of either the // GNU Lesser General Public License Version 3 or the Perl Artistic License // Version 2.0. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // //************************************************************************* /// \file /// \brief Verilog::Parse: Symbol table accessing /// /// Authors: Wilson Snyder /// /// Code available from: http://www.veripool.org/verilog-perl /// //************************************************************************* #include "VSymTable.h" #include "VAst.h" #include #include /* Perl */ extern "C" { # include "EXTERN.h" # include "perl.h" # include "XSUB.h" } //###################################################################### // VAstEnt // // A symtable is simply a hash(HV) by name of the object // Under each hash entry (HE) is an array (AV) // Under each array (AV) is an [SV with type, SV with HV of lower symtab] #if 0 # define DBG_SV_DUMP(SVp) {printf("%s:%d:\n",__FILE__,__LINE__); Perl_sv_dump(aTHX_ (SV*)(SVp)); } # define DBG_UINFO(z,msg) {printf("%s:%d: ", __FILE__,__LINE__); cout << msg; } #else # define DBG_SV_DUMP(SVp) # define DBG_UINFO(z,msg) #endif int VAstEnt::s_debug = 0; // ACCESSORS VAstType VAstEnt::type() { assert(this); AV* avp = castAVp(); if (!avp || SvTYPE(avp) != SVt_PVAV || av_len(avp)<1) return VAstType::AN_ERROR; // $type_svpp = $this->[0] SV** type_svpp = av_fetch(avp, 0, 0); if (!type_svpp) return VAstType::AN_ERROR; VAstType type = (VAstType)(SvIV(*type_svpp)); return type; } HV* VAstEnt::subhash() { assert(this); AV* avp = castAVp(); if (!avp || SvTYPE(avp) != SVt_PVAV) return NULL; /*Error*/ // $type_svpp = $this->[2] SV** hash_svpp = av_fetch(avp, 2, 0); if (!hash_svpp || !SvROK(*hash_svpp) || SvTYPE(SvRV(*hash_svpp)) != SVt_PVHV) return NULL; /*Error*/ // $hash_hvp = %{$this->[2]} HV* hash_hvp = (HV*)(SvRV(*hash_svpp)); return hash_hvp; } VAstEnt* VAstEnt::parentp() { assert(this); AV* avp = castAVp(); if (!avp || SvTYPE(avp) != SVt_PVAV) return NULL; /*Error*/ // $parent_svpp = $this->[1] SV** parent_svpp = av_fetch(avp, 1, 0); if (!parent_svpp || !SvROK(*parent_svpp) || SvTYPE(SvRV(*parent_svpp)) != SVt_PVAV) return NULL; /*Error*/ // $parent_svp = @{$this->[1]} AV* parent_avp = (AV*)(SvRV(*parent_svpp)); return avToSymEnt(parent_avp); } // METHODS void VAstEnt::initNetlist(VFileLine* fl) { // Called on initial creation to check if this is a netlist, and/or create it assert(this); AV* avp = castAVp(); if (!avp || SvTYPE(avp) != SVt_PVAV) { fl->error("Parser->symbol_table isn't an array reference"); } if (type() == VAstType::AN_ERROR) { // Need init initAVEnt(avp, VAstType::NETLIST, NULL); } else if (type() == VAstType::NETLIST) { // Already inited } else { fl->error("Parser->symbol_table isn't a netlist object (not created by the parser?)"); } } AV* VAstEnt::newAVEnt(VAstType type) { AV* avp = newAV(); initAVEnt(avp, type, this->castAVp()); return avp; } void VAstEnt::initAVEnt(AV* avp, VAstType type, AV* parentp) { // $avp = [type, parent, {}] av_push(avp, newSViv(type)); if (parentp) { SV* parentsv = newRV((SV*)parentp); #ifdef SvWEAKREF // Newer perls // We're making a circular reference, so to garbage collect properly we need to break it // On older Perl's we'll just leak. sv_rvweaken(parentsv); #endif av_push(avp, parentsv ); } else { // netlist top av_push(avp, &PL_sv_undef); } av_push(avp, newRV_noinc((SV*)newHV()) ); } void VAstEnt::replaceInsert(VAstEnt* newentp, const string& name) { if (debug()) cout<<"VAstEnt::replaceInsert under="<ascii(name)<<"\"\n"; HV* hvp = subhash(); assert(hvp); // $svpp = $table{$name} SV** svpp = hv_fetch(hvp, name.c_str(), name.length(), 1/*create*/); if (svpp) {} // unused // $avp = $newentp (premade avp) hv_store(hvp, name.c_str(), name.length(), newRV((SV*)newentp), 0); } VAstEnt* VAstEnt::replaceInsert(VAstType type, const string& name) { if (debug()) cout<<"VAstEnt::replaceInsert under="<ascii(name)<<"\n"; return entp; } VAstEnt* VAstEnt::findInsert (VAstType type, const string& name) { if (debug()) cout<<"VAstEnt::findInsert under="<findSym(id_or_star)) { // We can just add a second reference to the same AstEnt object if (debug()) cout<<"VAstEnt::import under="<ascii()<<"\n"; replaceInsert(idEntp, id_or_star); } } else { // Walk old sym table HV* hvp = pkgEntp->subhash(); assert(hvp); hv_iterinit(hvp); while (HE* hep = hv_iternext(hvp)) { I32 retlen; const char* namep = hv_iterkey(hep, &retlen); string name = string(namep,retlen); SV* svp = hv_iterval(hvp, hep); VAstEnt* idEntp = avToSymEnt((AV*)(SvRV(svp))); if (debug()) cout<<"VAstEnt::import under="<ascii(name)<<"\n"; replaceInsert(idEntp, name); } } } string VAstEnt::ascii(const string& name) { string out = cvtToStr((void*)this)+"-"+type().ascii(); if (name!="") out += "-\""+name+"\""; return out; } #undef DBG_SV_DUMP #undef DBG_UINFO Verilog-Perl-3.418/Parser/Parser.xs0000644000177100017500000003641412654236555017104 0ustar wsnyderwsnyder#/* Verilog.xs -- Verilog Booter -*- C++ -*- #********************************************************************* #* #* DESCRIPTION: Verilog::Parser Perl XS interface #* #* Author: Wilson Snyder #* #* Code available from: http://www.veripool.org/ #* #********************************************************************* #* #* Copyright 2000-2016 by Wilson Snyder. This program is free software; #* you can redistribute it and/or modify it under the terms of either the GNU #* Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. #* #* This program is distributed in the hope that it will be useful, #* but WITHOUT ANY WARRANTY; without even the implied warranty of #* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #* GNU General Public License for more details. #* #* You should have received a copy of the Perl Artistic License #* along with this module; see the file COPYING. If not, see #* www.cpan.org #* #*********************************************************************** #* Note with C++ XS libraries, the CLASS parameter is implied... #***********************************************************************/ /* Mine: */ #include "VParse.h" #include "VSymTable.h" #include "VAst.h" #include #include /* Perl */ extern "C" { # include "EXTERN.h" # include "perl.h" # include "XSUB.h" } #ifdef open # undef open /* Perl 64 bit on solaris has a nasty hack that redefines open */ #endif class VFileLineParseXs; #//********************************************************************** #// Parseressor derived classes, so we can override the callbacks to call perl. class VParserXs : public VParse { public: SV* m_self; // Class called from (the hash, not SV pointing to the hash) VFileLine* m_cbFilelinep; ///< Last callback's starting point deque m_filelineps; // CALLBACKGEN_H_MEMBERS // CALLBACKGEN_GENERATED_BEGIN - GENERATED AUTOMATICALLY by callbackgen struct { // Bit packed to help the cache bool m_useCb_attribute:1; bool m_useCb_class:1; bool m_useCb_comment:1; bool m_useCb_contassign:1; bool m_useCb_covergroup:1; bool m_useCb_defparam:1; bool m_useCb_endcell:1; bool m_useCb_endclass:1; bool m_useCb_endgroup:1; bool m_useCb_endinterface:1; bool m_useCb_endmodport:1; bool m_useCb_endmodule:1; bool m_useCb_endpackage:1; bool m_useCb_endparse:1; bool m_useCb_endprogram:1; bool m_useCb_endtaskfunc:1; bool m_useCb_function:1; bool m_useCb_import:1; bool m_useCb_instant:1; bool m_useCb_interface:1; bool m_useCb_keyword:1; bool m_useCb_modport:1; bool m_useCb_module:1; bool m_useCb_number:1; bool m_useCb_operator:1; bool m_useCb_package:1; bool m_useCb_parampin:1; bool m_useCb_pin:1; bool m_useCb_port:1; bool m_useCb_preproc:1; bool m_useCb_program:1; bool m_useCb_string:1; bool m_useCb_symbol:1; bool m_useCb_sysfunc:1; bool m_useCb_task:1; bool m_useCb_var:1; }; // CALLBACKGEN_GENERATED_END - GENERATED AUTOMATICALLY by callbackgen VFileLine* cbFilelinep() const { return m_cbFilelinep; } void cbFileline(VFileLine* filelinep) { m_cbFilelinep = filelinep; } VParserXs(VFileLine* filelinep, av* symsp, bool sigparser, bool useUnreadback, bool useProtected) : VParse(filelinep, symsp, sigparser, useUnreadback, useProtected) , m_cbFilelinep(filelinep) { set_cb_use(); } virtual ~VParserXs(); // CALLBACKGEN_CB_USE // CALLBACKGEN_GENERATED_BEGIN - GENERATED AUTOMATICALLY by callbackgen void set_cb_use() { m_useCb_attribute = true; m_useCb_class = true; m_useCb_comment = true; m_useCb_contassign = true; m_useCb_covergroup = true; m_useCb_defparam = true; m_useCb_endcell = true; m_useCb_endclass = true; m_useCb_endgroup = true; m_useCb_endinterface = true; m_useCb_endmodport = true; m_useCb_endmodule = true; m_useCb_endpackage = true; m_useCb_endparse = true; m_useCb_endprogram = true; m_useCb_endtaskfunc = true; m_useCb_function = true; m_useCb_import = true; m_useCb_instant = true; m_useCb_interface = true; m_useCb_keyword = true; m_useCb_modport = true; m_useCb_module = true; m_useCb_number = true; m_useCb_operator = true; m_useCb_package = true; m_useCb_parampin = true; m_useCb_pin = true; m_useCb_port = true; m_useCb_preproc = true; m_useCb_program = true; m_useCb_string = true; m_useCb_symbol = true; m_useCb_sysfunc = true; m_useCb_task = true; m_useCb_var = true; } // CALLBACKGEN_GENERATED_END - GENERATED AUTOMATICALLY by callbackgen // CALLBACKGEN_H_VIRTUAL // CALLBACKGEN_GENERATED_BEGIN - GENERATED AUTOMATICALLY by callbackgen // Verilog::Parser Callback methods virtual void attributeCb(VFileLine* fl, const string& text); virtual void commentCb(VFileLine* fl, const string& text); virtual void endparseCb(VFileLine* fl, const string& text); virtual void keywordCb(VFileLine* fl, const string& text); virtual void numberCb(VFileLine* fl, const string& text); virtual void operatorCb(VFileLine* fl, const string& text); virtual void preprocCb(VFileLine* fl, const string& text); virtual void stringCb(VFileLine* fl, const string& text); virtual void symbolCb(VFileLine* fl, const string& text); virtual void sysfuncCb(VFileLine* fl, const string& text); // Verilog::SigParser Callback methods virtual void classCb(VFileLine* fl, const string& kwd, const string& name, const string& virt); virtual void contassignCb(VFileLine* fl, const string& kwd, const string& lhs, const string& rhs); virtual void covergroupCb(VFileLine* fl, const string& kwd, const string& name); virtual void defparamCb(VFileLine* fl, const string& kwd, const string& lhs, const string& rhs); virtual void endcellCb(VFileLine* fl, const string& kwd); virtual void endclassCb(VFileLine* fl, const string& kwd); virtual void endgroupCb(VFileLine* fl, const string& kwd); virtual void endinterfaceCb(VFileLine* fl, const string& kwd); virtual void endmodportCb(VFileLine* fl, const string& kwd); virtual void endmoduleCb(VFileLine* fl, const string& kwd); virtual void endpackageCb(VFileLine* fl, const string& kwd); virtual void endprogramCb(VFileLine* fl, const string& kwd); virtual void endtaskfuncCb(VFileLine* fl, const string& kwd); virtual void functionCb(VFileLine* fl, const string& kwd, const string& name, const string& data_type); virtual void importCb(VFileLine* fl, const string& package, const string& id); virtual void instantCb(VFileLine* fl, const string& mod, const string& cell, const string& range); virtual void interfaceCb(VFileLine* fl, const string& kwd, const string& name); virtual void modportCb(VFileLine* fl, const string& kwd, const string& name); virtual void moduleCb(VFileLine* fl, const string& kwd, const string& name, bool, bool celldefine); virtual void packageCb(VFileLine* fl, const string& kwd, const string& name); virtual void parampinCb(VFileLine* fl, const string& name, const string& conn, int index); virtual void pinCb(VFileLine* fl, const string& name, const string& conn, int index); virtual void portCb(VFileLine* fl, const string& name, const string& objof, const string& direction, const string& data_type , const string& array, int index); virtual void programCb(VFileLine* fl, const string& kwd, const string& name); virtual void taskCb(VFileLine* fl, const string& kwd, const string& name); virtual void varCb(VFileLine* fl, const string& kwd, const string& name, const string& objof, const string& net , const string& data_type, const string& array, const string& value); // CALLBACKGEN_GENERATED_END - GENERATED AUTOMATICALLY by callbackgen void useCbEna(const char* name, bool flag); void call(string* rtnStrp, int params, const char* method, ...); }; class VFileLineParseXs : public VFileLine { VParserXs* m_vParserp; // Parser handling the errors public: VFileLineParseXs(VParserXs* pp) : VFileLine(true), m_vParserp(pp) { if (pp) pushFl(); } virtual ~VFileLineParseXs() { } virtual VFileLine* create(const string& filename, int lineno) { VFileLineParseXs* filelp = new VFileLineParseXs(m_vParserp); filelp->init(filename, lineno); return filelp; } virtual void error(const string& msg); // Report a error at given location void setParser(VParserXs* pp) { m_vParserp=pp; pushFl(); // The very first construction used pp=NULL, as pp wasn't created yet so make it now } // Record the structure so we can delete it later void pushFl() { m_vParserp->m_filelineps.push_back(this); } }; #//********************************************************************** #// Overrides error handling virtual functions to invoke callbacks void VFileLineParseXs::error(const string& msg) { static string holdmsg; holdmsg = msg; m_vParserp->cbFileline(this); // Call always, not just if callbacks enabled m_vParserp->call(NULL, 1,"error",holdmsg.c_str()); } #//********************************************************************** #// Overrides of virtual functions to invoke callbacks #include "Parser_callbackgen.cpp" #//********************************************************************** #// VParserXs functions VParserXs::~VParserXs() { for (deque::iterator it=m_filelineps.begin(); it!=m_filelineps.end(); ++it) { delete *it; } } #//********************************************************************** #// General callback invoker void VParserXs::call ( string* rtnStrp, /* If non-null, load return value here */ int params, /* Number of parameters */ const char* method, /* Name of method to call */ ...) /* Arguments to pass to method's @_ */ { // Call $perlself->method (passedparam1, parsedparam2) if (debug()) cout << "CALLBACK "< */ XPUSHs(sv_2mortal(selfsv)); while (params--) { char* text = va_arg(ap, char *); SV* sv; if (text) { sv = sv_2mortal(newSVpv (text, 0)); } else { sv = &PL_sv_undef; } XPUSHs(sv); /* token */ } PUTBACK; /* make local stack pointer global */ if (rtnStrp) { int rtnCount = perl_call_method ((char*)method, G_SCALAR); SPAGAIN; /* refresh stack pointer */ if (rtnCount > 0) { SV* sv = POPs; //printf("RTN %ld %d %s\n", SvTYPE(sv),SvTRUE(sv),SvPV_nolen(sv)); #ifdef SvPV_nolen // Perl 5.6 and later *rtnStrp = SvPV_nolen(sv); #else *rtnStrp = SvPV(sv,PL_na); #endif } PUTBACK; } else { perl_call_method ((char*)method, G_DISCARD | G_VOID); } FREETMPS; /* free that return value */ LEAVE; /* ...and the XPUSHed "mortal" args.*/ } va_end(ap); } #//********************************************************************** MODULE = Verilog::Parser PACKAGE = Verilog::Parser #//********************************************************************** #// self->_new (class, sigparser) static VParserXs * VParserXs::_new (SV* SELF, AV* symsp, bool sigparser, bool useUnreadback, bool useProtected) PROTOTYPE: $$$$ CODE: { if (CLASS) {} /* Prevent unused warning */ if (!SvROK(SELF)) { warn("${Package}::$func_name() -- SELF is not a hash reference"); } VFileLineParseXs* filelinep = new VFileLineParseXs(NULL/*ok,for initial*/); VParserXs* parserp = new VParserXs(filelinep, symsp, sigparser, useUnreadback, useProtected); filelinep->setParser(parserp); parserp->m_self = SvRV(SELF); RETVAL = parserp; } OUTPUT: RETVAL #//********************************************************************** #// self->_DESTROY() void VParserXs::_DESTROY() PROTOTYPE: $ CODE: { delete THIS; } #//********************************************************************** #// self->debug(level) void VParserXs::_debug (level) int level PROTOTYPE: $$ CODE: { THIS->debug(level); VAstEnt::debug(level); } #//********************************************************************** #// self->_callback_master_enable(flag) #// Turn off callbacks during std:: parsing void VParserXs::_callback_master_enable (flag) bool flag PROTOTYPE: $$ CODE: { THIS->callbackMasterEna(flag); } #//********************************************************************** #// self->_use_cb(name,flag) #// Turn off specified callback void VParserXs::_use_cb(const char* name, bool flag) PROTOTYPE: $$$ CODE: { THIS->useCbEna(name,flag); } #//********************************************************************** #// self->eof() void VParserXs::eof () PROTOTYPE: $ CODE: { THIS->setEof(); } #//********************************************************************** #// self->filename([setit]) SV* VParserXs::filename (const char* flagp="") PROTOTYPE: $;$ CODE: { if (!THIS) XSRETURN_UNDEF; if (items > 1) { THIS->inFileline(flagp, THIS->inFilelinep()->lineno()); THIS->cbFileline(THIS->inFilelinep()); } string ret = THIS->cbFilelinep()->filename(); RETVAL = newSVpv(ret.c_str(), ret.length()); } OUTPUT: RETVAL #//********************************************************************** #// self->language() void VParserXs::language (valuep) const char* valuep PROTOTYPE: $$ CODE: { if (items > 1) { THIS->language(valuep); } } #//********************************************************************** #// self->lineno([setit]) int VParserXs::lineno (int flag=0) PROTOTYPE: $;$ CODE: { if (!THIS) XSRETURN_UNDEF; if (items > 1) { THIS->inFileline(THIS->inFilelinep()->filename(), flag); THIS->cbFileline(THIS->inFilelinep()); } RETVAL = (THIS->cbFilelinep()->lineno()); } OUTPUT: RETVAL #//********************************************************************** #// self->parse() void VParserXs::parse (const char* textp) PROTOTYPE: $$ CODE: { THIS->parse(textp); } #//********************************************************************** #// self->selftest() void VParserXs::selftest () PROTOTYPE: $ CODE: { VSymStack::selftest(); assert(VParse::isKeyword("wire",strlen("wire"))); assert(!VParse::isKeyword("wire99",strlen("wide99"))); } #//********************************************************************** #// self->unreadback() SV* VParserXs::unreadback (const char* flagp="") PROTOTYPE: $;$ CODE: { if (!THIS) XSRETURN_UNDEF; // Set RETVAL to a SV before we replace with the new value, and c_str may change string ret = THIS->unreadback(); RETVAL = newSVpv(ret.c_str(), ret.length()); if (items > 1) { THIS->unreadback(flagp); } } OUTPUT: RETVAL #//********************************************************************** #// self->unreadbackCat() void VParserXs::unreadbackCat (SV* textsvp) PROTOTYPE: $$ CODE: { if (!THIS) XSRETURN_UNDEF; STRLEN textlen; const char* textp = SvPV(textsvp, textlen); THIS->unreadbackCat(textp, textlen); } Verilog-Perl-3.418/Parser/VParseBison.y0000644000177100017500000052467012654236555017667 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // DESCRIPTION: Verilog-Perl bison parser // // This file is part of Verilog-Perl. // // Author: Wilson Snyder // // Code available from: http://www.veripool.org/systemperl // //************************************************************************* // // Copyright 2001-2016 by Wilson Snyder. This program is free software; // you can redistribute it and/or modify it under the terms of either the GNU // Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // //************************************************************************* %{ #include #include #include #include #include #include #include #include "VParse.h" #include "VParseGrammar.h" #define YYERROR_VERBOSE 1 #define YYINITDEPTH 5000 // Large as the stack won't grow, since YYSTYPE_IS_TRIVIAL isn't defined #define YYMAXDEPTH 5000 // See VParseGrammar.h for the C++ interface to this parser // Include that instead of VParseBison.h //************************************************************************* #define GRAMMARP VParseGrammar::staticGrammarp() #define PARSEP VParseGrammar::staticParsep() #define NEWSTRING(text) (string((text))) #define SPACED(a,b) ((a)+(((a)=="" || (b)=="")?"":" ")+(b)) #define VARRESET_LIST(decl) { GRAMMARP->pinNum(1); VARRESET(); VARDECL(decl); } // Start of pinlist #define VARRESET_NONLIST(decl) { GRAMMARP->pinNum(0); VARRESET(); VARDECL(decl); } // Not in a pinlist #define VARRESET() { VARDECL(""); VARIO(""); VARNET(""); VARDTYPE(""); } // Start of one variable decl // VARDECL("") indicates inside a port list or IO list and we shouldn't declare the variable #define VARDECL(type) { GRAMMARP->m_varDecl = (type); } // genvar, parameter, localparam #define VARIO(type) { GRAMMARP->m_varIO = (type); } // input, output, inout, ref, const ref #define VARNET(type) { GRAMMARP->m_varNet = (type); } // supply*,wire,tri #define VARDTYPE(type) { GRAMMARP->m_varDType = (type); } // "signed", "int", etc #define PINNUMINC() { GRAMMARP->pinNumInc(); } #define INSTPREP(cellmod,cellparam) { GRAMMARP->pinNum(1); GRAMMARP->m_cellMod=(cellmod); GRAMMARP->m_cellParam=(cellparam); } static void VARDONE(VFileLine* fl, const string& name, const string& array, const string& value) { if (GRAMMARP->m_varIO!="" && GRAMMARP->m_varDecl=="") GRAMMARP->m_varDecl="port"; if (GRAMMARP->m_varDecl!="") { PARSEP->varCb(fl, GRAMMARP->m_varDecl, name, PARSEP->symObjofUpward(), GRAMMARP->m_varNet, GRAMMARP->m_varDType, array, value); } if (GRAMMARP->m_varIO!="" || GRAMMARP->pinNum()) { PARSEP->portCb(fl, name, PARSEP->symObjofUpward(), GRAMMARP->m_varIO, GRAMMARP->m_varDType, array, GRAMMARP->pinNum()); } if (GRAMMARP->m_varDType == "type") { PARSEP->syms().replaceInsert(VAstType::TYPE,name); } } static void VARDONETYPEDEF(VFileLine* fl, const string& name, const string& type, const string& array) { VARRESET(); VARDECL("typedef"); VARDTYPE(type); VARDONE(fl,name,array,""); // TYPE shouldn't override a more specific node type, as often is forward reference PARSEP->syms().replaceInsert(VAstType::TYPE,name); } static void PINDONE(VFileLine* fl, const string& name, const string& expr) { if (GRAMMARP->m_cellParam) { // Stack them until we create the instance itself GRAMMARP->m_pinStack.push_back(VParseGPin(fl, name, expr, GRAMMARP->pinNum())); } else { PARSEP->pinCb(fl, name, expr, GRAMMARP->pinNum()); } } static void PINPARAMS() { // Throw out all the pins we found before we could do instanceCb while (!GRAMMARP->m_pinStack.empty()) { VParseGPin& pinr = GRAMMARP->m_pinStack.front(); PARSEP->parampinCb(pinr.m_fl, pinr.m_name, pinr.m_conn, pinr.m_number); GRAMMARP->m_pinStack.pop_front(); } } /* Yacc */ static int VParseBisonlex(VParseBisonYYSType* yylvalp) { return PARSEP->lexToBison(yylvalp); } static void VParseBisonerror(const char *s) { VParseGrammar::bisonError(s); } static void ERRSVKWD(VFileLine* fileline, const string& tokname) { static int toldonce = 0; fileline->error((string)"Unexpected \""+tokname+"\": \""+tokname+"\" is a SystemVerilog keyword misused as an identifier."); if (!toldonce++) fileline->error("Modify the Verilog-2001 code to avoid SV keywords, or use `begin_keywords or --language."); } static void NEED_S09(VFileLine*, const string&) { //Let lint tools worry about it //fileline->error((string)"Advanced feature: \""+tokname+"\" is a 1800-2009 construct, but used under --lanugage 1800-2005 or earlier."); } %} BISONPRE_VERSION(0.0, 2.999, %pure_parser) BISONPRE_VERSION(3.0, %pure-parser) BISONPRE_VERSION(0.0, 2.999, %token_table) BISONPRE_VERSION(3.0, %token-table) BISONPRE_VERSION(2.4, 2.999, %define lr.keep_unreachable_states) BISONPRE_VERSION(3.0, %define lr.keep-unreachable-state) // When writing Bison patterns we use yTOKEN instead of "token", // so Bison will error out on unknown "token"s. // Generic lexer tokens, for example a number // IEEE: real_number %token yaFLOATNUM "FLOATING-POINT NUMBER" // IEEE: identifier, class_identifier, class_variable_identifier, // covergroup_variable_identifier, dynamic_array_variable_identifier, // enum_identifier, interface_identifier, interface_instance_identifier, // package_identifier, type_identifier, variable_identifier, %token yaID__ETC "IDENTIFIER" %token yaID__LEX "IDENTIFIER-in-lex" %token yaID__aCLASS "CLASS-IDENTIFIER" %token yaID__aPACKAGE "PACKAGE-IDENTIFIER" %token yaID__aTYPE "TYPE-IDENTIFIER" // aCOVERGROUP is same as aTYPE // Can't predecode aFUNCTION, can declare after use // Can't predecode aINTERFACE, can declare after use // Can't predecode aTASK, can declare after use // IEEE: integral_number %token yaINTNUM "INTEGER NUMBER" // IEEE: time_literal + time_unit %token yaTIMENUM "TIME NUMBER" // IEEE: string_literal %token yaSTRING "STRING" %token yaSTRING__IGNORE "STRING-ignored" // Used when expr:string not allowed %token yaTIMINGSPEC "TIMING SPEC ELEMENT" %token ygenGATE "GATE keyword" %token ygenCONFIGKEYWORD "CONFIG keyword (cell/use/design/etc)" %token ygenOPERATOR "OPERATOR" %token ygenSTRENGTH "STRENGTH keyword (strong1/etc)" %token ygenSYSCALL "SYSCALL" %token '!' %token '#' %token '%' %token '&' %token '(' %token ')' %token '*' %token '+' %token ',' %token '-' %token '.' %token '/' %token ':' %token ';' %token '<' %token '=' %token '>' %token '?' %token '@' %token '[' %token ']' %token '^' %token '{' %token '|' %token '}' %token '~' // Specific keywords // yKEYWORD means match "keyword" // Other cases are yXX_KEYWORD where XX makes it unique, // for example yP_ for punctuation based operators. // Double underscores "yX__Y" means token X followed by Y, // and "yX__ETC" means X folled by everything but Y(s). %token yACCEPT_ON "accept_on" %token yALIAS "alias" %token yALWAYS "always" %token yAND "and" %token yASSERT "assert" %token yASSIGN "assign" %token yASSUME "assume" %token yAUTOMATIC "automatic" %token yBEFORE "before" %token yBEGIN "begin" %token yBIND "bind" %token yBINS "bins" %token yBINSOF "binsof" %token yBIT "bit" %token yBREAK "break" %token yBUF "buf" %token yBYTE "byte" %token yCASE "case" %token yCASEX "casex" %token yCASEZ "casez" %token yCHANDLE "chandle" %token yCHECKER "checker" %token yCLASS "class" %token yCLOCK "clock" %token yCLOCKING "clocking" %token yCONSTRAINT "constraint" %token yCONST__ETC "const" %token yCONST__LEX "const-in-lex" %token yCONST__LOCAL "const-then-local" %token yCONST__REF "const-then-ref" %token yCONTEXT "context" %token yCONTINUE "continue" %token yCOVER "cover" %token yCOVERGROUP "covergroup" %token yCOVERPOINT "coverpoint" %token yCROSS "cross" %token yDEASSIGN "deassign" %token yDEFAULT "default" %token yDEFPARAM "defparam" %token yDISABLE "disable" %token yDIST "dist" %token yDO "do" %token yEDGE "edge" %token yELSE "else" %token yEND "end" %token yENDCASE "endcase" %token yENDCHECKER "endchecker" %token yENDCLASS "endclass" %token yENDCLOCKING "endclocking" %token yENDFUNCTION "endfunction" %token yENDGENERATE "endgenerate" %token yENDGROUP "endgroup" %token yENDINTERFACE "endinterface" %token yENDMODULE "endmodule" %token yENDPACKAGE "endpackage" %token yENDPROGRAM "endprogram" %token yENDPROPERTY "endproperty" %token yENDSEQUENCE "endsequence" %token yENDSPECIFY "endspecify" %token yENDTABLE "endtable" %token yENDTASK "endtask" %token yENUM "enum" %token yEVENT "event" %token yEVENTUALLY "eventually" %token yEXPECT "expect" %token yEXPORT "export" %token yEXTENDS "extends" %token yEXTERN "extern" %token yFINAL "final" %token yFIRST_MATCH "first_match" %token yFOR "for" %token yFORCE "force" %token yFOREACH "foreach" %token yFOREVER "forever" %token yFORK "fork" %token yFORKJOIN "forkjoin" %token yFUNCTION__ETC "function" %token yFUNCTION__LEX "function-in-lex" %token yFUNCTION__aPUREV "function-is-pure-virtual" %token yGENERATE "generate" %token yGENVAR "genvar" %token yGLOBAL__CLOCKING "global-then-clocking" %token yGLOBAL__LEX "global-in-lex" %token yIF "if" %token yIFF "iff" %token yIGNORE_BINS "ignore_bins" %token yILLEGAL_BINS "illegal_bins" %token yIMPLEMENTS "implements" %token yIMPLIES "implies" %token yIMPORT "import" %token yINITIAL "initial" %token yINOUT "inout" %token yINPUT "input" %token yINSIDE "inside" %token yINT "int" %token yINTEGER "integer" %token yINTERCONNECT "interconnect" %token yINTERFACE "interface" %token yINTERSECT "intersect" %token yJOIN "join" %token yLET "let" %token yLOCALPARAM "localparam" %token yLOCAL__COLONCOLON "local-then-::" %token yLOCAL__ETC "local" %token yLOCAL__LEX "local-in-lex" %token yLOGIC "logic" %token yLONGINT "longint" %token yMATCHES "matches" %token yMODPORT "modport" %token yMODULE "module" %token yNAND "nand" %token yNEGEDGE "negedge" %token yNETTYPE "nettype" %token yNEW__ETC "new" %token yNEW__LEX "new-in-lex" %token yNEW__PAREN "new-then-paren" %token yNEXTTIME "nexttime" %token yNOR "nor" %token yNOT "not" %token yNULL "null" %token yOR "or" %token yOUTPUT "output" %token yPACKAGE "package" %token yPACKED "packed" %token yPARAMETER "parameter" %token yPOSEDGE "posedge" %token yPRIORITY "priority" %token yPROGRAM "program" %token yPROPERTY "property" %token yPROTECTED "protected" %token yPURE "pure" %token yRAND "rand" %token yRANDC "randc" %token yRANDCASE "randcase" %token yRANDSEQUENCE "randsequence" %token yREAL "real" %token yREALTIME "realtime" %token yREF "ref" %token yREG "reg" %token yREJECT_ON "reject_on" %token yRELEASE "release" %token yREPEAT "repeat" %token yRESTRICT "restrict" %token yRETURN "return" %token ySCALARED "scalared" %token ySEQUENCE "sequence" %token ySHORTINT "shortint" %token ySHORTREAL "shortreal" %token ySIGNED "signed" %token ySOFT "soft" %token ySOLVE "solve" %token ySPECIFY "specify" %token ySPECPARAM "specparam" %token ySTATIC__CONSTRAINT "static-then-constraint" %token ySTATIC__ETC "static" %token ySTATIC__LEX "static-in-lex" %token ySTRING "string" %token ySTRONG "strong" %token ySTRUCT "struct" %token ySUPER "super" %token ySUPPLY0 "supply0" %token ySUPPLY1 "supply1" %token ySYNC_ACCEPT_ON "sync_accept_on" %token ySYNC_REJECT_ON "sync_reject_on" %token yS_ALWAYS "s_always" %token yS_EVENTUALLY "s_eventually" %token yS_NEXTTIME "s_nexttime" %token yS_UNTIL "s_until" %token yS_UNTIL_WITH "s_until_with" %token yTABLE "table" %token yTAGGED "tagged" %token yTASK__ETC "task" %token yTASK__LEX "task-in-lex" %token yTASK__aPUREV "task-is-pure-virtual" %token yTHIS "this" %token yTHROUGHOUT "throughout" %token yTIME "time" %token yTIMEPRECISION "timeprecision" %token yTIMEUNIT "timeunit" %token yTRI "tri" %token yTRI0 "tri0" %token yTRI1 "tri1" %token yTRIAND "triand" %token yTRIOR "trior" %token yTRIREG "trireg" %token yTYPE "type" %token yTYPEDEF "typedef" %token yUNION "union" %token yUNIQUE "unique" %token yUNIQUE0 "unique0" %token yUNSIGNED "unsigned" %token yUNTIL "until" %token yUNTIL_WITH "until_with" %token yUNTYPED "untyped" %token yVAR "var" %token yVECTORED "vectored" %token yVIRTUAL__CLASS "virtual-then-class" %token yVIRTUAL__ETC "virtual" %token yVIRTUAL__INTERFACE "virtual-then-interface" %token yVIRTUAL__LEX "virtual-in-lex" %token yVIRTUAL__anyID "virtual-then-identifier" %token yVOID "void" %token yWAIT "wait" %token yWAIT_ORDER "wait_order" %token yWAND "wand" %token yWEAK "weak" %token yWHILE "while" %token yWILDCARD "wildcard" %token yWIRE "wire" %token yWITHIN "within" %token yWITH__BRA "with-then-[" %token yWITH__CUR "with-then-{" %token yWITH__ETC "with" %token yWITH__LEX "with-in-lex" %token yWITH__PAREN "with-then-(" %token yWOR "wor" %token yXNOR "xnor" %token yXOR "xor" %token yD_ERROR "$error" %token yD_FATAL "$fatal" %token yD_INFO "$info" %token yD_ROOT "$root" %token yD_UNIT "$unit" %token yD_WARNING "$warning" %token yP_TICK "'" %token yP_TICKBRA "'{" %token yP_OROR "||" %token yP_ANDAND "&&" %token yP_NOR "~|" %token yP_XNOR "^~" %token yP_NAND "~&" %token yP_EQUAL "==" %token yP_NOTEQUAL "!=" %token yP_CASEEQUAL "===" %token yP_CASENOTEQUAL "!==" %token yP_WILDEQUAL "==?" %token yP_WILDNOTEQUAL "!=?" %token yP_GTE ">=" %token yP_LTE "<=" %token yP_LTE__IGNORE "<=-ignored" // Used when expr:<= means assignment %token yP_SLEFT "<<" %token yP_SRIGHT ">>" %token yP_SSRIGHT ">>>" %token yP_POW "**" %token yP_PAR__IGNORE "(-ignored" // Used when sequence_expr:expr:( is ignored %token yP_PAR__STRENGTH "(-for-strength" %token yP_LTMINUSGT "<->" %token yP_PLUSCOLON "+:" %token yP_MINUSCOLON "-:" %token yP_MINUSGT "->" %token yP_MINUSGTGT "->>" %token yP_EQGT "=>" %token yP_ASTGT "*>" %token yP_ANDANDAND "&&&" %token yP_POUNDPOUND "##" %token yP_POUNDMINUSPD "#-#" %token yP_POUNDEQPD "#=#" %token yP_DOTSTAR ".*" %token yP_ATAT "@@" %token yP_COLONCOLON "::" %token yP_COLONEQ ":=" %token yP_COLONDIV ":/" %token yP_ORMINUSGT "|->" %token yP_OREQGT "|=>" %token yP_BRASTAR "[*" %token yP_BRAEQ "[=" %token yP_BRAMINUSGT "[->" %token yP_BRAPLUSKET "[+]" %token yP_PLUSPLUS "++" %token yP_MINUSMINUS "--" %token yP_PLUSEQ "+=" %token yP_MINUSEQ "-=" %token yP_TIMESEQ "*=" %token yP_DIVEQ "/=" %token yP_MODEQ "%=" %token yP_ANDEQ "&=" %token yP_OREQ "|=" %token yP_XOREQ "^=" %token yP_SLEFTEQ "<<=" %token yP_SRIGHTEQ ">>=" %token yP_SSRIGHTEQ ">>>=" // '( is not a operator, as "' (" is legal //******************** // Verilog op precedence %token prUNARYARITH %token prREDUCTION %token prNEGATION %token prEVENTBEGIN %token prTAGGED // These prevent other conflicts %left yP_ANDANDAND %left yMATCHES %left prTAGGED %left prSEQ_CLOCKING // Lowest precedence // These are in IEEE 17.7.1 %nonassoc yALWAYS yS_ALWAYS yEVENTUALLY yS_EVENTUALLY yACCEPT_ON yREJECT_ON ySYNC_ACCEPT_ON ySYNC_REJECT_ON %right yP_ORMINUSGT yP_OREQGT yP_POUNDMINUSPD yP_POUNDEQPD %right yUNTIL yS_UNTIL yUNTIL_WITH yS_UNTIL_WITH yIMPLIES %right yIFF %left yOR %left yAND %nonassoc yNOT yNEXTTIME yS_NEXTTIME %left yINTERSECT %left yWITHIN %right yTHROUGHOUT %left prPOUNDPOUND_MULTI %left yP_POUNDPOUND %left yP_BRASTAR yP_BRAEQ yP_BRAMINUSGT yP_BRAPLUSKET // Not specified, but needed higher than yOR, lower than normal non-pexpr expressions %left yPOSEDGE yNEGEDGE yEDGE %left '{' '}' //%nonassoc '=' yP_PLUSEQ yP_MINUSEQ yP_TIMESEQ yP_DIVEQ yP_MODEQ yP_ANDEQ yP_OREQ yP_XOREQ yP_SLEFTEQ yP_SRIGHTEQ yP_SSRIGHTEQ yP_COLONEQ yP_COLONDIV yP_LTE %right yP_MINUSGT yP_LTMINUSGT %right '?' ':' %left yP_OROR %left yP_ANDAND %left '|' yP_NOR %left '^' yP_XNOR %left '&' yP_NAND %left yP_EQUAL yP_NOTEQUAL yP_CASEEQUAL yP_CASENOTEQUAL yP_WILDEQUAL yP_WILDNOTEQUAL %left '>' '<' yP_GTE yP_LTE yP_LTE__IGNORE yINSIDE yDIST %left yP_SLEFT yP_SRIGHT yP_SSRIGHT %left '+' '-' %left '*' '/' '%' %left yP_POW %left prUNARYARITH yP_MINUSMINUS yP_PLUSPLUS prREDUCTION prNEGATION %left '.' // Not in IEEE, but need to avoid conflicts; TICK should bind tightly just lower than COLONCOLON %left yP_TICK //%left '(' ')' '[' ']' yP_COLONCOLON '.' %nonassoc prLOWER_THAN_ELSE %nonassoc yELSE //BISONPRE_TYPES // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion // Blank lines for type insertion %start source_text %% //********************************************************************** // Feedback to the Lexer // Note we read a parenthesis ahead, so this may not change the lexer at the right point. statePushVlg: // For PSL lexing, escape current state into Verilog state /* empty */ { } ; statePop: // Return to previous lexing state /* empty */ { } ; //********************************************************************** // Files source_text: // ==IEEE: source_text /* empty */ { } // // timeunits_declaration moved into description:package_item | descriptionList { } ; descriptionList: // IEEE: part of source_text description { } | descriptionList description { } ; description: // ==IEEE: description module_declaration { } // // udp_declaration moved into module_declaration | interface_declaration { } | program_declaration { } | package_declaration { } | package_item { } | bind_directive { } // unsupported // IEEE: config_declaration | error { } ; timeunits_declaration: // ==IEEE: timeunits_declaration yTIMEUNIT yaTIMENUM ';' { } | yTIMEUNIT yaTIMENUM '/' yaTIMENUM ';' { NEED_S09($1,"timeunit /"); } | yTIMEPRECISION yaTIMENUM ';' { } ; //********************************************************************** // Packages package_declaration: // ==IEEE: package_declaration packageFront package_itemListE yENDPACKAGE endLabelE { PARSEP->endpackageCb($3,$3); PARSEP->symPopScope(VAstType::PACKAGE); } ; packageFront: // // Lifetime is 1800-2009 yPACKAGE lifetimeE idAny ';' { PARSEP->symPushNew(VAstType::PACKAGE, $3); PARSEP->packageCb($1,$1, $3); } ; package_itemListE: // IEEE: [{ package_item }] /* empty */ { } | package_itemList { } ; package_itemList: // IEEE: { package_item } package_item { } | package_itemList package_item { } ; package_item: // ==IEEE: package_item package_or_generate_item_declaration { } | anonymous_program { } | package_export_declaration { } | timeunits_declaration { } ; package_or_generate_item_declaration: // ==IEEE: package_or_generate_item_declaration net_declaration { } | data_declaration { } | task_declaration { } | function_declaration { } | checker_declaration { } | dpi_import_export { } | extern_constraint_declaration { } | class_declaration { } // // class_constructor_declaration is part of function_declaration | local_parameter_declaration ';' { } | parameter_declaration ';' { } | covergroup_declaration { } | overload_declaration { } | assertion_item_declaration { } | ';' { } ; package_import_declarationList: package_import_declaration { } | package_import_declarationList package_import_declaration { } ; package_import_declaration: // ==IEEE: package_import_declaration yIMPORT package_import_itemList ';' { } ; package_import_itemList: package_import_item { } | package_import_itemList ',' package_import_item { } ; package_import_item: // ==IEEE: package_import_item yaID__aPACKAGE yP_COLONCOLON package_import_itemObj { PARSEP->syms().import($1,$1,$3); PARSEP->importCb($1,$1,$3); } ; package_import_itemObj: // IEEE: part of package_import_item idAny { $$=$1; $$=$1; } | '*' { $$=$1; $$=$1; } ; package_export_declaration: // IEEE: package_export_declaration yEXPORT '*' yP_COLONCOLON '*' ';' { } | yEXPORT package_import_itemList ';' { } ; //********************************************************************** // Module headers module_declaration: // ==IEEE: module_declaration // // timeunits_declaration instead in module_item // // IEEE: module_nonansi_header + module_ansi_header modFront importsAndParametersE portsStarE ';' module_itemListE yENDMODULE endLabelE { PARSEP->endmoduleCb($6,$6); PARSEP->symPopScope(VAstType::MODULE); } // | yEXTERN modFront importsAndParametersE portsStarE ';' { PARSEP->symPopScope(VAstType::MODULE); } ; modFront: // // General note: all *Front functions must call symPushNew before // // any formal arguments, as the arguments must land in the new scope. yMODULE lifetimeE idAny { PARSEP->symPushNew(VAstType::MODULE, $3); PARSEP->moduleCb($1,$1,$3,false,PARSEP->inCellDefine()); } ; importsAndParametersE: // IEEE: common part of module_declaration, interface_declaration, program_declaration // // { package_import_declaration } [ parameter_port_list ] parameter_port_listE { } | package_import_declarationList parameter_port_listE { } ; parameter_value_assignmentE: // IEEE: [ parameter_value_assignment ] /* empty */ { } | '#' '(' cellpinList ')' { } // // Side effect of combining *_instantiations | '#' delay_value { } ; parameter_port_listE: // IEEE: parameter_port_list + empty == parameter_value_assignment /* empty */ { } | '#' '(' ')' { } // // IEEE: '#' '(' list_of_param_assignments { ',' parameter_port_declaration } ')' // // IEEE: '#' '(' parameter_port_declaration { ',' parameter_port_declaration } ')' // // Can't just do that as "," conflicts with between vars and between stmts, so // // split into pre-comma and post-comma parts | '#' '(' {VARRESET_LIST("parameter");} paramPortDeclOrArgList ')' { VARRESET_NONLIST(""); } // // Note legal to start with "a=b" with no parameter statement ; paramPortDeclOrArgList: // IEEE: list_of_param_assignments + { parameter_port_declaration } paramPortDeclOrArg { } | paramPortDeclOrArgList ',' paramPortDeclOrArg { } ; paramPortDeclOrArg: // IEEE: param_assignment + parameter_port_declaration // // We combine the two as we can't tell which follows a comma param_assignment { } | parameter_port_declarationFront param_assignment { } ; portsStarE: // IEEE: .* + list_of_ports + list_of_port_declarations + empty /* empty */ { } // // .* expanded from module_declaration // // '(' ')' handled by list_of_ports:portE | '(' yP_DOTSTAR ')' { } | '(' {VARRESET_LIST("");} list_of_portsE ')' { VARRESET_NONLIST(""); } ; list_of_portsE: // IEEE: list_of_ports + list_of_port_declarations portE { } | list_of_portsE ',' portE { } ; portE: // ==IEEE: [ port ] // // Though not type for interfaces, we factor out the port direction and type // // so we can simply handle it in one place // // // IEEE: interface_port_header port_identifier { unpacked_dimension } // // Expanded interface_port_header // // We use instantCb here because the non-port form looks just like a module instantiation /* empty */ { } | portDirNetE id/*interface*/ idAny/*port*/ variable_dimensionListE sigAttrListE { VARDTYPE($2); VARIO("interface"); VARDONE($2, $3, $4, ""); PINNUMINC(); PARSEP->instantCb($2, $2, $3, $4); PARSEP->endcellCb($2,""); } | portDirNetE yINTERFACE idAny/*port*/ variable_dimensionListE sigAttrListE { VARDTYPE($2); VARIO("interface"); VARDONE($2, $3, $4, ""); PINNUMINC(); } | portDirNetE id/*interface*/ '.' idAny/*modport*/ idAny/*port*/ variable_dimensionListE sigAttrListE { VARDTYPE($2+"."+$4); VARIO("interface"); VARDONE($2, $5, $6, ""); PINNUMINC(); PARSEP->instantCb($2, $2, $5, $6); PARSEP->endcellCb($2,""); } | portDirNetE yINTERFACE '.' idAny/*modport*/ idAny/*port*/ variable_dimensionListE sigAttrListE { VARDTYPE($2+"."+$4); VARIO("interface"); VARDONE($2, $5, $6, ""); PINNUMINC(); } // // // IEEE: ansi_port_declaration, with [port_direction] removed // // IEEE: [ net_port_header | interface_port_header ] port_identifier { unpacked_dimension } [ '=' constant_expression ] // // IEEE: [ net_port_header | variable_port_header ] '.' port_identifier '(' [ expression ] ')' // // IEEE: [ variable_port_header ] port_identifier { variable_dimension } [ '=' constant_expression ] // // Substitute net_port_header = [ port_direction ] net_port_type // // Substitute variable_port_header = [ port_direction ] variable_port_type // // Substitute net_port_type = [ net_type ] data_type_or_implicit // // Substitute variable_port_type = var_data_type // // [ [ port_direction ] net_port_type | interface_port_header ] port_identifier { unpacked_dimension } // // [ [ port_direction ] var_data_type ] port_identifier variable_dimensionListE [ '=' constant_expression ] // // [ [ port_direction ] net_port_type | [ port_direction ] var_data_type ] '.' port_identifier '(' [ expression ] ')' // // // Remove optional '[...] id' is in portAssignment // // Remove optional '[port_direction]' is in port // // net_port_type | interface_port_header port_identifier { unpacked_dimension } // // net_port_type | interface_port_header port_identifier { unpacked_dimension } // // var_data_type port_identifier variable_dimensionListE [ '=' constExpr ] // // net_port_type | [ port_direction ] var_data_type '.' port_identifier '(' [ expr ] ')' // // Expand implicit_type // // // IEEE-2012: Since a net_type_identifier is a data_type, it falls into // // the rules here without change. // // // variable_dimensionListE instead of rangeListE to avoid conflicts // // // Note implicit rules looks just line declaring additional followon port // // No VARDECL("port") for implicit, as we don't want to declare variables for them | portDirNetE var_data_type '.' portSig '(' portAssignExprE ')' sigAttrListE { VARDTYPE($2); VARDONE($4, $4, "", ""); PINNUMINC(); } | portDirNetE signingE variable_dimensionList '.' portSig '(' portAssignExprE ')' sigAttrListE { VARDTYPE(SPACED($2,$3)); VARDONE($5, $5, "", ""); PINNUMINC(); } | portDirNetE yINTERCONNECT signingE variable_dimensionListE '.' portSig '(' portAssignExprE ')' sigAttrListE { VARDTYPE(SPACED(SPACED($2,$3),$4)); VARDONE($6, $6, "", ""); PINNUMINC(); } | portDirNetE /*implicit*/ '.' portSig '(' portAssignExprE ')' sigAttrListE { /*VARDTYPE-same*/ VARDONE($3, $3, "", ""); PINNUMINC(); } // | portDirNetE var_data_type portSig variable_dimensionListE sigAttrListE { VARDTYPE($2); VARDONE($3, $3, $4, ""); PINNUMINC(); } | portDirNetE signingE variable_dimensionList portSig variable_dimensionListE sigAttrListE { VARDTYPE(SPACED($2,$3)); VARDONE($4, $4, $5, ""); PINNUMINC(); } | portDirNetE yINTERCONNECT signingE variable_dimensionList portSig variable_dimensionListE sigAttrListE { VARDTYPE(SPACED(SPACED($2,$3),$4)); VARDONE($5, $5, $6, ""); PINNUMINC(); } | portDirNetE /*implicit*/ portSig variable_dimensionListE sigAttrListE { /*VARDTYPE-same*/ VARDONE($2, $2, $3, ""); PINNUMINC(); } // | portDirNetE var_data_type portSig variable_dimensionListE sigAttrListE '=' constExpr { VARDTYPE($2); VARDONE($3, $3, $4, $7); PINNUMINC(); } | portDirNetE signingE variable_dimensionList portSig variable_dimensionListE sigAttrListE '=' constExpr { VARDTYPE(SPACED($2,$3)); VARDONE($4, $4, $5, $8); PINNUMINC(); } | portDirNetE yINTERCONNECT signingE variable_dimensionList portSig variable_dimensionListE sigAttrListE '=' constExpr { VARDTYPE(SPACED(SPACED($2,$3),$4)); VARDONE($5, $5, $6, $9); PINNUMINC(); } | portDirNetE /*implicit*/ portSig variable_dimensionListE sigAttrListE '=' constExpr { /*VARDTYPE-same*/ VARDONE($2, $2, $3, $6); PINNUMINC(); } // | '{' list_of_portsE '}' { } ; portDirNetE: // IEEE: part of port, optional net type and/or direction /* empty */ { } // // Per spec, if direction given default the nettype. // // The higher level rule may override this VARDTYPE with one later in the parse. | port_direction { VARDTYPE(""/*default_nettype*/); } | port_direction net_type { VARDTYPE(""/*default_nettype*/); } // net_type calls VARNET | net_type { } // net_type calls VARNET ; port_declNetE: // IEEE: part of port_declaration, optional net type /* empty */ { } | net_type { } // net_type calls VARNET ; portAssignExprE: // IEEE: part of port, optional expression /* empty */ { } | expr { } ; portSig: id/*port*/ { $$=$1; $$=$1; } | idSVKwd { $$=$1; $$=$1; } ; //********************************************************************** // Interface headers interface_declaration: // IEEE: interface_declaration + interface_nonansi_header + interface_ansi_header: // // timeunits_delcarationE is instead in interface_item intFront importsAndParametersE portsStarE ';' interface_itemListE yENDINTERFACE endLabelE { PARSEP->endinterfaceCb($6, $6); PARSEP->symPopScope(VAstType::INTERFACE); } | yEXTERN intFront importsAndParametersE portsStarE ';' { } ; intFront: yINTERFACE lifetimeE idAny/*new_interface*/ { PARSEP->symPushNew(VAstType::INTERFACE,$3); PARSEP->interfaceCb($1,$1,$3); } ; interface_itemListE: /* empty */ { } | interface_itemList { } ; interface_itemList: interface_item { } | interface_itemList interface_item { } ; interface_item: // IEEE: interface_item + non_port_interface_item port_declaration ';' { } // // IEEE: non_port_interface_item | generate_region { } | interface_or_generate_item { } | program_declaration { } | interface_declaration { } | timeunits_declaration { } // // See note in interface_or_generate item | module_common_item { } ; interface_or_generate_item: // ==IEEE: interface_or_generate_item // // module_common_item in interface_item, as otherwise duplicated // // with module_or_generate_item:module_common_item modport_declaration { } | extern_tf_declaration { } ; //********************************************************************** // Program headers anonymous_program: // ==IEEE: anonymous_program // // See the spec - this doesn't change the scope, items still go up "top" yPROGRAM ';' anonymous_program_itemListE yENDPROGRAM { } ; anonymous_program_itemListE: // IEEE: { anonymous_program_item } /* empty */ { } | anonymous_program_itemList { } ; anonymous_program_itemList: // IEEE: { anonymous_program_item } anonymous_program_item { } | anonymous_program_itemList anonymous_program_item { } ; anonymous_program_item: // ==IEEE: anonymous_program_item task_declaration { } | function_declaration { } | class_declaration { } | covergroup_declaration { } // // class_constructor_declaration is part of function_declaration | ';' { } ; program_declaration: // IEEE: program_declaration + program_nonansi_header + program_ansi_header: // // timeunits_delcarationE is instead in program_item pgmFront importsAndParametersE portsStarE ';' program_itemListE yENDPROGRAM endLabelE { PARSEP->endprogramCb($6,$6); PARSEP->symPopScope(VAstType::PROGRAM); } | yEXTERN pgmFront importsAndParametersE portsStarE ';' { PARSEP->symPopScope(VAstType::PROGRAM); } ; pgmFront: yPROGRAM lifetimeE idAny/*new_program*/ { PARSEP->symPushNew(VAstType::PROGRAM,$3); PARSEP->programCb($1,$1, $3); } ; program_itemListE: // ==IEEE: [{ program_item }] /* empty */ { } | program_itemList { } ; program_itemList: // ==IEEE: { program_item } program_item { } | program_itemList program_item { } ; program_item: // ==IEEE: program_item port_declaration ';' { } | non_port_program_item { } ; non_port_program_item: // ==IEEE: non_port_program_item continuous_assign { } | module_or_generate_item_declaration { } | initial_construct { } | final_construct { } | concurrent_assertion_item { } | timeunits_declaration { } | program_generate_item { } ; program_generate_item: // ==IEEE: program_generate_item loop_generate_construct { } | conditional_generate_construct { } | generate_region { } | elaboration_system_task { } ; extern_tf_declaration: // ==IEEE: extern_tf_declaration yEXTERN task_prototype ';' { } | yEXTERN function_prototype ';' { } | yEXTERN yFORKJOIN task_prototype ';' { } ; modport_declaration: // ==IEEE: modport_declaration yMODPORT modport_itemList ';' { } ; modport_itemList: // IEEE: part of modport_declaration modport_item { } | modport_itemList ',' modport_item { } ; modport_item: // ==IEEE: modport_item modport_idFront '(' {VARRESET_LIST("");} modportPortsDeclList ')' { VARRESET_NONLIST(""); PARSEP->endmodportCb($1, "endmodport"); PARSEP->symPopScope(VAstType::MODPORT); } ; modport_idFront: id/*new-modport*/ { PARSEP->symPushNew(VAstType::MODPORT,$1); PARSEP->modportCb($1,"modport",$1); } ; modportPortsDeclList: modportPortsDecl { } | modportPortsDeclList ',' modportPortsDecl { } ; // IEEE: modport_ports_declaration + modport_simple_ports_declaration // + (modport_tf_ports_declaration+import_export) + modport_clocking_declaration // We've expanded the lists each take to instead just have standalone ID ports. // We track the type as with the V2k series of defines, then create as each ID is seen. modportPortsDecl: // // IEEE: modport_simple_ports_declaration port_direction modportSimplePort { } // // IEEE: modport_clocking_declaration | yCLOCKING idAny/*clocking_identifier*/ { } | yIMPORT modport_tf_port { } | yEXPORT modport_tf_port { } // Continuations of above after a comma. // // IEEE: modport_simple_ports_declaration | modportSimplePort { } ; modportSimplePort: // IEEE: modport_simple_port or modport_tf_port, depending what keyword was earlier // // Note 'init' field is used to say what to connect to id { VARDONE($1,$1,"",$1); PINNUMINC(); } | '.' idAny '(' ')' { VARDONE($1,$2,"",""); PINNUMINC(); } | '.' idAny '(' expr ')' { VARDONE($1,$2,"",$4); PINNUMINC(); } ; modport_tf_port: // ==IEEE: modport_tf_port id/*tf_identifier*/ { } | method_prototype { } ; //************************************************ // Variable Declarations genvar_declaration: // ==IEEE: genvar_declaration yGENVAR list_of_genvar_identifiers ';' { } ; list_of_genvar_identifiers: // IEEE: list_of_genvar_identifiers (for declaration) genvar_identifierDecl { } | list_of_genvar_identifiers ',' genvar_identifierDecl { } ; genvar_identifierDecl: // IEEE: genvar_identifier (for declaration) id/*new-genvar_identifier*/ sigAttrListE { VARRESET_NONLIST("genvar"); VARDONE($1, $1, "", ""); } ; local_parameter_declaration: // IEEE: local_parameter_declaration // // See notes in parameter_declaration local_parameter_declarationFront list_of_param_assignments { } ; parameter_declaration: // IEEE: parameter_declaration // // IEEE: yPARAMETER yTYPE list_of_type_assignments ';' // // Instead of list_of_type_assignments // // we use list_of_param_assignments because for port handling // // it already must accept types, so simpler to have code only one place parameter_declarationFront list_of_param_assignments { } ; local_parameter_declarationFront: // IEEE: local_parameter_declaration w/o assignment varLParamReset implicit_typeE { VARRESET(); VARDECL("localparam"); VARDTYPE($2); } | varLParamReset data_type { VARRESET(); VARDECL("localparam"); VARDTYPE($2); } | varLParamReset yTYPE { VARRESET(); VARDECL("localparam"); VARDTYPE($2); } ; parameter_declarationFront: // IEEE: parameter_declaration w/o assignment varGParamReset implicit_typeE { VARRESET(); VARDECL("parameter"); VARDTYPE($2); } | varGParamReset data_type { VARRESET(); VARDECL("parameter"); VARDTYPE($2); } | varGParamReset yTYPE { VARRESET(); VARDECL("parameter"); VARDTYPE($2); } ; parameter_port_declarationFront: // IEEE: parameter_port_declaration w/o assignment // // IEEE: parameter_declaration (minus assignment) parameter_declarationFront { } | local_parameter_declarationFront { /*NEED_S09(CURLINE(),"port localparams");*/ } // | data_type { VARDTYPE($1); } | yTYPE { VARDTYPE($1); } ; net_declaration: // IEEE: net_declaration - excluding implict net_declarationFront netSigList ';' { } ; net_declarationFront: // IEEE: beginning of net_declaration net_declRESET net_type strengthSpecE net_scalaredE net_dataType { VARDTYPE(SPACED($4,$5)); } | net_declRESET yINTERCONNECT signingE rangeListE { VARNET($2); VARDTYPE(SPACED($3,$4)); } ; net_declRESET: /* empty */ { VARRESET_NONLIST("net"); } ; net_scalaredE: /* empty */ { $$=""; } | ySCALARED { $$=$1; $$=$1; } | yVECTORED { $$=$1; $$=$1; } ; net_dataType: // // If there's a SV data type there shouldn't be a delay on this wire // // Otherwise #(...) can't be determined to be a delay or parameters // // Submit this as a footnote to the committee var_data_type { $$=$1; $$=$1; } | signingE rangeList delayE { $$=$1; $$=SPACED($1,$2); } | signing delayE { $$=$1; $$=$1; } | /*implicit*/ delayE { $$=$1; $$=""; } ; net_type: // ==IEEE: net_type ySUPPLY0 { VARNET($1); } | ySUPPLY1 { VARNET($1); } | yTRI { VARNET($1); } | yTRI0 { VARNET($1); } | yTRI1 { VARNET($1); } | yTRIAND { VARNET($1); } | yTRIOR { VARNET($1); } | yTRIREG { VARNET($1); } | yWAND { VARNET($1); } | yWIRE { VARNET($1); } | yWOR { VARNET($1); } ; varGParamReset: yPARAMETER { VARRESET_NONLIST($1); } ; varLParamReset: yLOCALPARAM { VARRESET_NONLIST($1); } ; port_direction: // ==IEEE: port_direction + tf_port_direction // // IEEE 19.8 just "input" FIRST forces type to wire - we'll ignore that here yINPUT { VARIO($1); } | yOUTPUT { VARIO($1); } | yINOUT { VARIO($1); } | yREF { VARIO($1); } | yCONST__REF yREF { VARIO($1); } ; port_directionReset: // IEEE: port_direction that starts a port_declaraiton // // Used only for declarations outside the port list yINPUT { VARRESET_NONLIST(""); VARIO($1); } | yOUTPUT { VARRESET_NONLIST(""); VARIO($1); } | yINOUT { VARRESET_NONLIST(""); VARIO($1); } | yREF { VARRESET_NONLIST(""); VARIO($1); } | yCONST__REF yREF { VARRESET_NONLIST(""); VARIO($1); } ; port_declaration: // ==IEEE: port_declaration // // Used inside block; followed by ';' // // SIMILAR to tf_port_declaration // // // IEEE: inout_declaration // // IEEE: input_declaration // // IEEE: output_declaration // // IEEE: ref_declaration port_directionReset port_declNetE var_data_type { VARDTYPE($3); } list_of_variable_decl_assignments { } | port_directionReset port_declNetE signingE rangeList { VARDTYPE(SPACED($3,$4)); } list_of_variable_decl_assignments { } | port_directionReset port_declNetE signing { VARDTYPE($3); } list_of_variable_decl_assignments { } | port_directionReset port_declNetE /*implicit*/ { VARDTYPE("");/*default_nettype*/} list_of_variable_decl_assignments { } // // IEEE: interface_declaration // // Looks just like variable declaration unless has a period // // See etcInst ; tf_port_declaration: // ==IEEE: tf_port_declaration // // Used inside function; followed by ';' // // SIMILAR to port_declaration // port_directionReset var_data_type { VARDTYPE($2); } list_of_tf_variable_identifiers ';' { } | port_directionReset implicit_typeE { VARDTYPE($2); } list_of_tf_variable_identifiers ';' { } ; integer_atom_type: // ==IEEE: integer_atom_type yBYTE { $$=$1; $$=$1; } | ySHORTINT { $$=$1; $$=$1; } | yINT { $$=$1; $$=$1; } | yLONGINT { $$=$1; $$=$1; } | yINTEGER { $$=$1; $$=$1; } | yTIME { $$=$1; $$=$1; } ; integer_vector_type: // ==IEEE: integer_atom_type yBIT { $$=$1; $$=$1; } | yLOGIC { $$=$1; $$=$1; } | yREG { $$=$1; $$=$1; } ; non_integer_type: // ==IEEE: non_integer_type ySHORTREAL { $$=$1; $$=$1; } | yREAL { $$=$1; $$=$1; } | yREALTIME { $$=$1; $$=$1; } ; signingE: // IEEE: signing - plus empty /*empty*/ { $$=""; } | signing { $$=$1; $$=$1; } ; signing: // ==IEEE: signing ySIGNED { $$=$1; $$=$1; } | yUNSIGNED { $$=$1; $$=$1; } ; //************************************************ // Data Types casting_type: // IEEE: casting_type simple_type { $$=$1; $$=$1; } // // IEEE: constant_primary // // In expr:cast this is expanded to just "expr" // // // IEEE: signing | ySIGNED { $$=$1; $$=$1; } | yUNSIGNED { $$=$1; $$=$1; } | ySTRING { $$=$1; $$=$1; } | yCONST__ETC/*then `*/ { $$=$1; $$=$1; } ; simple_type: // ==IEEE: simple_type // // IEEE: integer_type integer_atom_type { $$=$1; $$=$1; } | integer_vector_type { $$=$1; $$=$1; } | non_integer_type { $$=$1; $$=$1; } // // IEEE: ps_type_identifier // // IEEE: ps_parameter_identifier (presumably a PARAMETER TYPE) | package_scopeIdFollowsE yaID__aTYPE { $$=$1; $$=$1+$2; } // // { generate_block_identifer ... } '.' // // Need to determine if generate_block_identifier can be lex-detected ; data_typeVar: // IEEE: data_type + virtual_interface_declaration data_type { $$=$1; $$=$1; } // // IEEE-2009: virtual_interface_declaration // // IEEE-2012: part of data_type | yVIRTUAL__INTERFACE yINTERFACE id/*interface*/ parameter_value_assignmentE '.' id/*modport*/ { $$=$1; $$=SPACED($1,SPACED($2,$3)); } | yVIRTUAL__anyID id/*interface*/ parameter_value_assignmentE '.' id/*modport*/ { $$=$1; $$=SPACED($1,$2); } ; data_type: // ==IEEE: data_type, excluding class_type etc references integer_vector_type signingE rangeListE { $$=$1; $$=SPACED($1,SPACED($2,$3)); } | integer_atom_type signingE { $$=$1; $$=SPACED($1,$2); } | non_integer_type { $$=$1; $$=$1; } | ySTRUCT packedSigningE '{' { PARSEP->symPushNewAnon(VAstType::STRUCT); } /*cont*/ struct_union_memberList '}' packed_dimensionListE { $$=$1; $$=$1; PARSEP->symPopScope(VAstType::STRUCT); } | yUNION taggedE packedSigningE '{' { PARSEP->symPushNewAnon(VAstType::UNION); } /*cont*/ struct_union_memberList '}' packed_dimensionListE { $$=$1; $$=$1; PARSEP->symPopScope(VAstType::UNION); } | enumDecl { $$=$1; $$=$1; } | ySTRING { $$=$1; $$=$1; } | yCHANDLE { $$=$1; $$=$1; } // // Rules overlap virtual_interface_declaration // // Parameters here are SV2009 // // IEEE has ['.' modport] but that will conflict with port // // declarations which decode '.' modport themselves, so // // instead see data_typeVar | yVIRTUAL__INTERFACE yINTERFACE id/*interface*/ parameter_value_assignmentE { $$=$1; $$=SPACED($1,SPACED($2,$3)); } | yVIRTUAL__anyID id/*interface*/ parameter_value_assignmentE { $$=$1; $$=SPACED($1,$2); } // // // IEEE: [ class_scope | package_scope ] type_identifier { packed_dimension } // // See data_type // // IEEE: class_type // // See data_type | yEVENT { $$=$1; $$=$1; } | type_reference { $$=$1; $$=$1; } // //---------------------- // // REFERENCES // // // IEEE: [ class_scope | package_scope ] type_identifier { packed_dimension } // // IEEE: class_type // // IEEE: ps_covergroup_identifier // // Don't distinguish between types and classes so all these combined | package_scopeIdFollowsE class_typeOneList packed_dimensionListE { $$=$1; $$=$1+$2+$3; } ; // IEEE: struct_union - not needed, expanded in data_type data_type_or_void: // ==IEEE: data_type_or_void data_type { $$=$1; $$=$1; } | yVOID { $$=$1; $$=$1; } ; var_data_type: // ==IEEE: var_data_type data_type { $$=$1; $$=$1; } | yVAR data_type { $$=$1; $$=$1; } | yVAR implicit_typeE { $$=$1; $$=$1; } ; type_reference: // ==IEEE: type_reference yTYPE '(' exprOrDataType ')' { $$=$1; $$="type("+$3+")"; } ; struct_union_memberList: // IEEE: { struct_union_member } struct_union_member { } | struct_union_memberList struct_union_member { } ; struct_union_member: // ==IEEE: struct_union_member random_qualifierE data_type_or_void { VARRESET_NONLIST("member"); VARDTYPE(SPACED($1,$2)); } /*cont*/ list_of_variable_decl_assignments ';' { } ; list_of_variable_decl_assignments: // ==IEEE: list_of_variable_decl_assignments variable_decl_assignment { } | list_of_variable_decl_assignments ',' variable_decl_assignment { } ; variable_decl_assignment: // ==IEEE: variable_decl_assignment id variable_dimensionListE sigAttrListE { VARDONE($1, $1, $2, ""); } | id variable_dimensionListE sigAttrListE '=' variable_declExpr { VARDONE($1, $1, $2, $5); } | idSVKwd { } // // // IEEE: "dynamic_array_variable_identifier '[' ']' [ '=' dynamic_array_new ]" // // Matches above with variable_dimensionE = "[]" // // IEEE: "class_variable_identifier [ '=' class_new ]" // // variable_dimensionE must be empty // // Pushed into variable_declExpr:dynamic_array_new // // // IEEE: "[ covergroup_variable_identifier ] '=' class_new // // Pushed into variable_declExpr:class_new | '=' class_new { } ; list_of_tf_variable_identifiers: // ==IEEE: list_of_tf_variable_identifiers tf_variable_identifier { } | list_of_tf_variable_identifiers ',' tf_variable_identifier { } ; tf_variable_identifier: // IEEE: part of list_of_tf_variable_identifiers id variable_dimensionListE sigAttrListE { VARDONE($1, $1, $2, ""); } | id variable_dimensionListE sigAttrListE '=' expr { VARDONE($1, $1, $2, $5); } ; variable_declExpr: // IEEE: part of variable_decl_assignment - rhs of expr expr { $$=$1; $$=$1; } | dynamic_array_new { $$=$1; $$=$1; } | class_new { $$=$1; $$=$1; } ; variable_dimensionListE: // IEEE: variable_dimension + empty /*empty*/ { $$=""; } | variable_dimensionList { $$=$1; $$=$1; } ; variable_dimensionList: // IEEE: variable_dimension + empty variable_dimension { $$=$1; $$=$1; } | variable_dimensionList variable_dimension { $$=$1; $$=$1+$2; } ; variable_dimension: // ==IEEE: variable_dimension // // IEEE: unsized_dimension '[' ']' { $$=$1; $$=""; } // // IEEE: unpacked_dimension | anyrange { $$=$1; $$=$1; } | '[' constExpr ']' { $$=$1; $$="["+$2+"]"; } // // IEEE: associative_dimension | '[' data_type ']' { $$=$1; $$="["+$2+"]"; } | yP_BRASTAR ']' { $$=$1; $$="[*]"; } | '[' '*' ']' { $$=$1; $$="[*]"; } // // IEEE: queue_dimension // // '[' '$' ']' -- $ is part of expr // // '[' '$' ':' expr ']' -- anyrange:expr:$ ; random_qualifierE: // IEEE: random_qualifier + empty /*empty*/ { $$=""; } | random_qualifier { $$=$1; $$=$1; } ; random_qualifier: // ==IEEE: random_qualifier yRAND { $$=$1; $$=$1; } | yRANDC { $$=$1; $$=$1; } ; taggedE: /*empty*/ { } | yTAGGED { } ; packedSigningE: /*empty*/ { } | yPACKED signingE { } ; //************************************************ // enum // IEEE: part of data_type enumDecl: yENUM enum_base_typeE '{' enum_nameList '}' rangeListE { $$=$2; } ; enum_base_typeE: // IEEE: enum_base_type /* empty */ { $$="enum"; } // // Not in spec, but obviously "enum [1:0]" should work // // implicit_type expanded, without empty | signingE rangeList { $$=$1; $$=$1+$2; } | signing { $$=$1; $$=$1; } // | integer_atom_type signingE { $$=$1; $$=$1; } | integer_vector_type signingE regrangeE { $$=$1; $$=$1; } // // below can be idAny or yaID__aTYPE // // IEEE requires a type, though no shift conflict if idAny | idAny regrangeE { $$=$1; $$=$1; } ; enum_nameList: enum_name_declaration { } | enum_nameList ',' enum_name_declaration { } ; enum_name_declaration: // ==IEEE: enum_name_declaration idAny/*enum_identifier*/ enumNameRangeE enumNameStartE { } ; enumNameRangeE: // IEEE: second part of enum_name_declaration /* empty */ { } | '[' intnumAsConst ']' { } | '[' intnumAsConst ':' intnumAsConst ']' { } ; enumNameStartE: // IEEE: third part of enum_name_declaration /* empty */ { } | '=' constExpr { } ; intnumAsConst: yaINTNUM { } ; //************************************************ // Typedef data_declaration: // ==IEEE: data_declaration // // VARRESET can't be called here - conflicts data_declarationVar { } | type_declaration { } | package_import_declaration { } // // IEEE 2005: virtual_interface_declaration // // IEEE 2009 removed this // // "yVIRTUAL yID yID" looks just like a data_declaration // // Therefore the virtual_interface_declaration term isn't used // // 1800-2009: | net_type_declaration { } ; class_property: // ==IEEE: class_property, which is {property_qualifier} data_declaration memberQualResetListE data_declarationVarClass { } | memberQualResetListE type_declaration { } | memberQualResetListE package_import_declaration { } // // IEEE: virtual_interface_declaration // // "yVIRTUAL yID yID" looks just like a data_declaration // // Therefore the virtual_interface_declaration term isn't used ; data_declarationVar: // IEEE: part of data_declaration // // The first declaration has complications between assuming what's the type vs ID declaring data_declarationVarFront list_of_variable_decl_assignments ';' { } ; data_declarationVarClass: // IEEE: part of data_declaration (for class_property) // // The first declaration has complications between assuming what's the type vs ID declaring data_declarationVarFrontClass list_of_variable_decl_assignments ';' { } ; data_declarationVarFront: // IEEE: part of data_declaration // // implicit_type expanded into /*empty*/ or "signingE rangeList" constE yVAR lifetimeE data_type { VARRESET(); VARDECL("var"); VARDTYPE(SPACED($1,$4)); } | constE yVAR lifetimeE { VARRESET(); VARDECL("var"); VARDTYPE($1); } | constE yVAR lifetimeE signingE rangeList { VARRESET(); VARDECL("var"); VARDTYPE(SPACED($1,SPACED($4,$5))); } // // // Expanded: "constE lifetimeE data_type" | /**/ data_typeVar { VARRESET(); VARDECL("var"); VARDTYPE($1); } | /**/ lifetime data_typeVar { VARRESET(); VARDECL("var"); VARDTYPE($2); } | yCONST__ETC lifetimeE data_typeVar { VARRESET(); VARDECL("var"); VARDTYPE(SPACED($1,$3)); } // // = class_new is in variable_decl_assignment // // // IEEE: virtual_interface_declaration // // data_type includes VIRTUAL_INTERFACE, so added to data_typeVar ; data_declarationVarFrontClass: // IEEE: part of data_declaration (for class_property) // // VARRESET called before this rule // // yCONST is removed, added to memberQual rules // // implicit_type expanded into /*empty*/ or "signingE rangeList" yVAR lifetimeE data_type { VARDECL("var"); VARDTYPE(SPACED(GRAMMARP->m_varDType,$3)); } | yVAR lifetimeE { VARDECL("var"); VARDTYPE(GRAMMARP->m_varDType); } | yVAR lifetimeE signingE rangeList { VARDECL("var"); VARDTYPE(SPACED(GRAMMARP->m_varDType,SPACED($3,$4))); } // // // Expanded: "constE lifetimeE data_type" | /**/ data_typeVar { VARDECL("var"); VARDTYPE(SPACED(GRAMMARP->m_varDType,$1)); } // // lifetime is removed, added to memberQual rules to avoid conflict // // yCONST is removed, added to memberQual rules to avoid conflict // // = class_new is in variable_decl_assignment ; net_type_declaration: // IEEE: net_type_declaration yNETTYPE data_type idAny/*net_type_identifier*/ ';' { } // // package_scope part of data_type | yNETTYPE data_type idAny yWITH__ETC package_scopeIdFollows id/*tf_identifier*/ ';' { } | yNETTYPE package_scopeIdFollows id/*net_type_identifier*/ idAny/*net_type_identifier*/ ';' { } ; constE: // IEEE: part of data_declaration /* empty */ { $$ = ""; } | yCONST__ETC { $$ = $1; } ; implicit_typeE: // IEEE: part of *data_type_or_implicit // // Also expanded in data_declaration /* empty */ { $$ = ""; } | signingE rangeList { $$ = SPACED($1,$2); } | signing { $$ = $1; } ; assertion_variable_declaration: // IEEE: assertion_variable_declaration // // IEEE: var_data_type expanded var_data_type list_of_variable_decl_assignments ';' { } ; type_declaration: // ==IEEE: type_declaration // // Use idAny, as we can redeclare a typedef on an existing typedef yTYPEDEF data_type idAny variable_dimensionListE ';' { VARDONETYPEDEF($1,$3,$2,$4); } | yTYPEDEF id/*interface*/ bit_selectE '.' idAny/*type*/ idAny/*type*/ ';' { VARDONETYPEDEF($1,$6,$2+$3+"."+$5,""); } // // Combines into above "data_type id" rule | yTYPEDEF id ';' { VARDONETYPEDEF($1,$2,"",""); } | yTYPEDEF yENUM idAny ';' { PARSEP->syms().replaceInsert(VAstType::ENUM, $3); } | yTYPEDEF ySTRUCT idAny ';' { PARSEP->syms().replaceInsert(VAstType::STRUCT, $3); } | yTYPEDEF yUNION idAny ';' { PARSEP->syms().replaceInsert(VAstType::UNION, $3); } | yTYPEDEF yCLASS idAny ';' { PARSEP->syms().replaceInsert(VAstType::CLASS, $3); } | yTYPEDEF yINTERFACE yCLASS idAny ';' { PARSEP->syms().replaceInsert(VAstType::CLASS, $3); } ; //************************************************ // Module Items module_itemListE: // IEEE: Part of module_declaration /* empty */ { } | module_itemList { } ; module_itemList: // IEEE: Part of module_declaration module_item { } | module_itemList module_item { } ; module_item: // ==IEEE: module_item port_declaration ';' { } | non_port_module_item { } ; non_port_module_item: // ==IEEE: non_port_module_item generate_region { } | module_or_generate_item { } | specify_block { } | specparam_declaration { } | program_declaration { } | module_declaration { } | interface_declaration { } | timeunits_declaration { } ; module_or_generate_item: // ==IEEE: module_or_generate_item // // IEEE: parameter_override yDEFPARAM list_of_defparam_assignments ';' { } // // IEEE: gate_instantiation + udp_instantiation + module_instantiation // // not here, see etcInst in module_common_item // // We joined udp & module definitions, so this goes here | combinational_body { } // // This module_common_item shared with interface_or_generate_item:module_common_item | module_common_item { } ; module_common_item: // ==IEEE: module_common_item module_or_generate_item_declaration { } // // IEEE: interface_instantiation // // + IEEE: program_instantiation // // + module_instantiation from module_or_generate_item | etcInst { } | assertion_item { } | bind_directive { } | continuous_assign { } // // IEEE: net_alias | yALIAS variable_lvalue aliasEqList ';' { } | initial_construct { } | final_construct { } // // IEEE: always_construct | yALWAYS stmtBlock { } | loop_generate_construct { } | conditional_generate_construct { } | elaboration_system_task { } // | error ';' { } ; continuous_assign: // IEEE: continuous_assign yASSIGN strengthSpecE delayE assignList ';' { } ; initial_construct: // IEEE: initial_construct yINITIAL stmtBlock { } ; final_construct: // IEEE: final_construct yFINAL stmtBlock { } ; module_or_generate_item_declaration: // ==IEEE: module_or_generate_item_declaration package_or_generate_item_declaration { } | genvar_declaration { } | clocking_declaration { } | yDEFAULT yCLOCKING idAny/*new-clocking_identifier*/ ';' { } | yDEFAULT yDISABLE yIFF expr/*expression_or_dist*/ ';' { } ; aliasEqList: // IEEE: part of net_alias '=' variable_lvalue { } | aliasEqList '=' variable_lvalue { } ; bind_directive: // ==IEEE: bind_directive + bind_target_scope // // ';' - Note IEEE grammar is wrong, includes extra ';' - it's already in module_instantiation // // We merged the rules - id may be a bind_target_instance or module_identifier or interface_identifier yBIND bind_target_instance bind_instantiation { } | yBIND bind_target_instance ':' bind_target_instance_list bind_instantiation { } ; bind_target_instance_list: // ==IEEE: bind_target_instance_list bind_target_instance { } | bind_target_instance_list ',' bind_target_instance { } ; bind_target_instance: // ==IEEE: bind_target_instance hierarchical_identifierBit { } ; bind_instantiation: // ==IEEE: bind_instantiation // // IEEE: program_instantiation // // IEEE: + module_instantiation // // IEEE: + interface_instantiation etcInst { } ; //************************************************ // Generates // // Way down in generate_item is speced a difference between module, // interface and checker generates. modules and interfaces are almost // identical (minus DEFPARAMs) so we overlap them. Checkers are too // different, so we copy all rules for checkers. generate_region: // ==IEEE: generate_region yGENERATE ~c~genItemList yENDGENERATE { } | yGENERATE yENDGENERATE { } ; c_generate_region: // IEEE: generate_region (for checkers) BISONPRE_COPY(generate_region,{s/~c~/c_/g}) // {copied} ; generate_block: // IEEE: generate_block // // Either a single item, or a begin-end block ~c~generate_item { } | ~c~genItemBegin { } ; c_generate_block: // IEEE: generate_block (for checkers) BISONPRE_COPY(generate_block,{s/~c~/c_/g}) // {copied} ; genItemBegin: // IEEE: part of generate_block yBEGIN ~c~genItemList yEND { } | yBEGIN yEND { } | id ':' yBEGIN ~c~genItemList yEND endLabelE { } | id ':' yBEGIN yEND endLabelE { } | yBEGIN ':' idAny ~c~genItemList yEND endLabelE { } | yBEGIN ':' idAny yEND endLabelE { } ; c_genItemBegin: // IEEE: part of generate_block (for checkers) BISONPRE_COPY(genItemBegin,{s/~c~/c_/g}) // {copied} ; genItemOrBegin: // Not in IEEE, but our begin isn't under generate_item ~c~generate_item { } | ~c~genItemBegin { } ; c_genItemOrBegin: // (for checkers) BISONPRE_COPY(genItemOrBegin,{s/~c~/c_/g}) // {copied} ; genItemList: ~c~genItemOrBegin { } | ~c~genItemList ~c~genItemOrBegin { } ; c_genItemList: // (for checkers) BISONPRE_COPY(genItemList,{s/~c~/c_/g}) // {copied} ; generate_item: // IEEE: module_or_interface_or_generate_item // // Only legal when in a generate under a module (or interface under a module) module_or_generate_item { } // // Only legal when in a generate under an interface | interface_or_generate_item { } // // IEEE: checker_or_generate_item // // Only legal when in a generate under a checker // // so below in c_generate_item ; c_generate_item: // IEEE: generate_item (for checkers) checker_or_generate_item { } ; conditional_generate_construct: // ==IEEE: conditional_generate_construct // // IEEE: case_generate_construct yCASE '(' expr ')' yENDCASE { } | yCASE '(' expr ')' ~c~case_generate_itemList yENDCASE { } // // IEEE: if_generate_construct | yIF '(' expr ')' ~c~generate_block %prec prLOWER_THAN_ELSE { } | yIF '(' expr ')' ~c~generate_block yELSE ~c~generate_block { } ; c_conditional_generate_construct: // IEEE: conditional_generate_construct (for checkers) BISONPRE_COPY(conditional_generate_construct,{s/~c~/c_/g}) // {copied} ; loop_generate_construct: // ==IEEE: loop_generate_construct yFOR '(' genvar_initialization ';' expr ';' genvar_iteration ')' ~c~generate_block { } ; c_loop_generate_construct: // IEEE: loop_generate_construct (for checkers) BISONPRE_COPY(loop_generate_construct,{s/~c~/c_/g}) // {copied} ; genvar_initialization: // ==IEEE: genvar_initalization id '=' constExpr { } | yGENVAR genvar_identifierDecl '=' constExpr { } ; genvar_iteration: // ==IEEE: genvar_iteration // // IEEE: assignment_operator plus IDs | id '=' expr { } | id yP_PLUSEQ expr { } | id yP_MINUSEQ expr { } | id yP_TIMESEQ expr { } | id yP_DIVEQ expr { } | id yP_MODEQ expr { } | id yP_ANDEQ expr { } | id yP_OREQ expr { } | id yP_XOREQ expr { } | id yP_SLEFTEQ expr { } | id yP_SRIGHTEQ expr { } | id yP_SSRIGHTEQ expr { } // // inc_or_dec_operator | yP_PLUSPLUS id { } | yP_MINUSMINUS id { } | id yP_PLUSPLUS { } | id yP_MINUSMINUS { } ; case_generate_itemList: // IEEE: { case_generate_item } ~c~case_generate_item { } | ~c~case_generate_itemList ~c~case_generate_item { } ; c_case_generate_itemList: // IEEE: { case_generate_item } (for checkers) BISONPRE_COPY(case_generate_itemList,{s/~c~/c_/g}) // {copied} ; case_generate_item: // ==IEEE: case_generate_item caseCondList ':' ~c~generate_block { } | yDEFAULT ':' ~c~generate_block { } | yDEFAULT ~c~generate_block { } ; c_case_generate_item: // IEEE: case_generate_item (for checkers) BISONPRE_COPY(case_generate_item,{s/~c~/c_/g}) // {copied} ; //************************************************ // Assignments and register declarations assignList: assignOne { } | assignList ',' assignOne { } ; assignOne: variable_lvalue '=' expr { PARSEP->contassignCb($2,"assign",$1,$3); } ; delay_or_event_controlE: // IEEE: delay_or_event_control plus empty /* empty */ { } | delay_control { } /* ignored */ | event_control { } /* ignored */ | yREPEAT '(' expr ')' event_control { } /* ignored */ ; delayE: /* empty */ { } | delay_control { } /* ignored */ ; delay_control: // ==IEEE: delay_control '#' delay_value { } /* ignored */ | '#' '(' minTypMax ')' { } /* ignored */ | '#' '(' minTypMax ',' minTypMax ')' { } /* ignored */ | '#' '(' minTypMax ',' minTypMax ',' minTypMax ')' { } /* ignored */ ; delay_value: // ==IEEE:delay_value // // IEEE: ps_identifier ps_id_etc { } | yaINTNUM { } | yaFLOATNUM { } | yaTIMENUM { } ; delayExpr: expr { } ; minTypMax: // IEEE: mintypmax_expression and constant_mintypmax_expression delayExpr { } | delayExpr ':' delayExpr ':' delayExpr { } ; netSigList: // IEEE: list_of_port_identifiers netSig { } | netSigList ',' netSig { } ; netSig: // IEEE: net_decl_assignment - one element from list_of_port_identifiers netId sigAttrListE { VARDONE($1, $1, "", ""); } | netId sigAttrListE '=' expr { VARDONE($1, $1, "", $4); } | netId variable_dimensionList sigAttrListE { VARDONE($1, $1, $2, ""); } ; netId: id/*new-net*/ { $$=$1; $$=$1; } | idSVKwd { $$=$1; $$=$1; } ; sigAttrListE: /* empty */ { } ; rangeListE: // IEEE: [{packed_dimension}] /* empty */ { $$=""; } | rangeList { $$=$1; $$ = $1; } ; rangeList: // IEEE: {packed_dimension} anyrange { $$=$1; $$ = $1; } | rangeList anyrange { $$=$1; $$ = $1+$2; } ; regrangeE: /* empty */ { $$=""; } | anyrange { $$=$1; $$=$1; } ; bit_selectE: // IEEE: constant_bit_select (IEEE included empty) /* empty */ { $$ = ""; } | '[' constExpr ']' { $$=$1; $$ = "["+$2+"]"; } ; // IEEE: select // Merged into more general idArray anyrange: '[' constExpr ':' constExpr ']' { $$=$1; $$ = "["+$2+":"+$4+"]"; } ; packed_dimensionListE: // IEEE: [{ packed_dimension }] /* empty */ { $$=""; } | packed_dimensionList { $$=$1; $$=$1; } ; packed_dimensionList: // IEEE: { packed_dimension } packed_dimension { $$=$1; $$=$1; } | packed_dimensionList packed_dimension { $$=$1; $$=$1+$2; } ; packed_dimension: // ==IEEE: packed_dimension anyrange { $$=$1; $$=$1; } | '[' ']' { $$="[]"; } ; //************************************************ // Parameters param_assignment: // ==IEEE: param_assignment // // IEEE: constant_param_expression // // param_expression: '$' is in expr id/*new-parameter*/ variable_dimensionListE sigAttrListE '=' exprOrDataTypeOrMinTypMax { $$=$1; VARDONE($1, $1, $2, $5); } // // only legal in port list; throws error if not set | id/*new-parameter*/ variable_dimensionListE sigAttrListE { $$=$1; VARDONE($1, $1, $2, ""); NEED_S09($1,"optional parameter defaults"); } ; list_of_param_assignments: // ==IEEE: list_of_param_assignments param_assignment { } | list_of_param_assignments ',' param_assignment { } ; list_of_defparam_assignments: // ==IEEE: list_of_defparam_assignments defparam_assignment { } | list_of_defparam_assignments ',' defparam_assignment { } ; defparam_assignment: // ==IEEE: defparam_assignment hierarchical_identifier/*parameter*/ '=' expr { PARSEP->defparamCb($2,"defparam",$1,$3); } ; //************************************************ // Instances // We don't know identifier types, so this matches all module,udp,etc instantiation // module_id [#(params)] name (pins) [, name ...] ; // module_instantiation // gate (strong0) [#(delay)] [name] (pins) [, (pins)...] ; // gate_instantiation // program_id [#(params}] name ; // program_instantiation // interface_id [#(params}] name ; // interface_instantiation // checker_id name (pins) ; // checker_instantiation etcInst: // IEEE: module_instantiation + gate_instantiation + udp_instantiation instName {INSTPREP($1,1);} strengthSpecE parameter_value_assignmentE {INSTPREP($1,0);} instnameList ';' { } // // IEEE: interface_identifier' .' modport_identifier list_of_interface_identifiers | instName {INSTPREP($1,1);} '.' id {INSTPREP($1,0);} mpInstnameList ';' { } ; instName: gateKwd { $$=$1; $$=$1; } // // id is-a: interface_identifier // // or program_identifier // // or udp_identifier // // or module_identifier | id { $$=$1; $$=$1; } ; mpInstnameList: // Similar to instnameList, but for modport instantiations which have no parenthesis mpInstnameParen { } | mpInstnameList ',' mpInstnameParen { } ; mpInstnameParen: // Similar to instnameParen, but for modport instantiations which have no parenthesis mpInstname { PARSEP->endcellCb($1,""); } ; mpInstname: // Similar to instname, but for modport instantiations which have no parenthesis // // id is-a: interface_port_identifier (interface.modport) id instRangeE { PARSEP->instantCb($1, GRAMMARP->m_cellMod, $1, $2); PINPARAMS(); } ; instnameList: instnameParen { } | instnameList ',' instnameParen { } ; instnameParen: instname cellpinList ')' { PARSEP->endcellCb($3,""); } ; instname: // // id is-a: hierarchical_instance (interface) // // or instance_identifier (module) // // or instance_identifier (program) // // or udp_instance (udp) id instRangeE '(' { PARSEP->instantCb($1, GRAMMARP->m_cellMod, $1, $2); PINPARAMS(); } | instRangeE '(' { PARSEP->instantCb($2, GRAMMARP->m_cellMod, "", $1); PINPARAMS(); } // UDP ; instRangeE: /* empty */ { $$ = ""; } | '[' constExpr ']' { $$=$1; $$ = "["+$2+"]"; } | '[' constExpr ':' constExpr ']' { $$=$1; $$ = "["+$2+":"+$4+"]"; } ; cellpinList: { VARRESET_LIST(""); } cellpinItList { VARRESET_NONLIST(""); } ; cellpinItList: // IEEE: list_of_port_connections + list_of_parameter_assignmente cellpinItemE { } | cellpinItList ',' cellpinItemE { } ; cellpinItemE: // IEEE: named_port_connection + named_parameter_assignment + empty /* empty: ',,' is legal */ { PINNUMINC(); } /*PINDONE(yylval.fl,"",""); <- No, as then () implies a pin*/ | yP_DOTSTAR { PINDONE($1,"*","*");PINNUMINC(); } | '.' idSVKwd { PINDONE($1,$2,$2); PINNUMINC(); } | '.' idAny { PINDONE($1,$2,$2); PINNUMINC(); } | '.' idAny '(' ')' { PINDONE($1,$2,""); PINNUMINC(); } // // mintypmax is expanded here, as it might be a UDP or gate primitive // // For checkers, this needs to not just expr, but include events + properties | '.' idAny '(' pev_expr ')' { PINDONE($1,$2,$4); PINNUMINC(); } | '.' idAny '(' pev_expr ':' expr ')' { PINDONE($1,$2,$4); PINNUMINC(); } | '.' idAny '(' pev_expr ':' expr ':' expr ')' { PINDONE($1,$2,$4); PINNUMINC(); } // // For parameters | '.' idAny '(' data_type ')' { PINDONE($1,$2,$4); PINNUMINC(); } // // For parameters | data_type { PINDONE($1,"",$1); PINNUMINC(); } // | expr { PINDONE($1,"",$1); PINNUMINC(); } | expr ':' expr { PINDONE($1,"",$1); PINNUMINC(); } | expr ':' expr ':' expr { PINDONE($1,"",$1); PINNUMINC(); } ; //************************************************ // EventControl lists event_control: // ==IEEE: event_control '@' '(' event_expression ')' { } | '@' '*' { } | '@' '(' '*' ')' { } // // IEEE: hierarchical_event_identifier | '@' idClassSel/*event_id or ps_or_hierarchical_sequence_identifier*/ { } // // IEEE: ps_or_hierarchical_sequence_identifier // // sequence_instance without parens matches idClassSel above. // // Ambiguity: "'@' sequence (-for-sequence" versus expr:delay_or_event_controlE "'@' id (-for-expr // // For now we avoid this, as it's very unlikely someone would mix // // 1995 delay with a sequence with parameters. // // Alternatively split this out of event_control, and delay_or_event_controlE // // and anywhere delay_or_event_controlE is called allow two expressions ; event_expression: // IEEE: event_expression - split over several // // ',' rules aren't valid in port lists - ev_expr is there. // // Also eliminates left recursion to appease conflicts ev_expr { } | event_expression ',' ev_expr %prec yOR { } /* Verilog 2001 */ ; senitemEdge: // IEEE: part of event_expression // // Also called by pev_expr yPOSEDGE expr { $$=$1; $$=$1+" "+$2; } | yPOSEDGE expr yIFF expr { $$=$1; $$=$1+" "+$2+" iff "+$4; } | yNEGEDGE expr { $$=$1; $$=$1+" "+$2; } | yNEGEDGE expr yIFF expr { $$=$1; $$=$1+" "+$2+" iff "+$4; } | yEDGE expr { $$=$1; $$=$1+" "+$2; NEED_S09($1,"edge"); } | yEDGE expr yIFF expr { $$=$1; $$=$1+" "+$2+" iff "+$4; NEED_S09($1,"edge"); } ; //************************************************ // Statements stmtBlock: // IEEE: statement + seq_block + par_block stmt { } ; seq_block: // ==IEEE: seq_block // // IEEE doesn't allow declarations in unnamed blocks, but several simulators do. seq_blockFront blockDeclStmtList yEND endLabelE { PARSEP->symPopScope(VAstType::BLOCK); } | seq_blockFront /**/ yEND endLabelE { PARSEP->symPopScope(VAstType::BLOCK); } ; par_block: // ==IEEE: par_block par_blockFront blockDeclStmtList yJOIN endLabelE { PARSEP->symPopScope(VAstType::FORK); } | par_blockFront /**/ yJOIN endLabelE { PARSEP->symPopScope(VAstType::FORK); } ; seq_blockFront: // IEEE: part of seq_block yBEGIN { PARSEP->symPushNewAnon(VAstType::BLOCK); } | yBEGIN ':' idAny/*new-block_identifier*/ { PARSEP->symPushNew(VAstType::BLOCK,$1); } ; par_blockFront: // IEEE: part of par_block yFORK { PARSEP->symPushNewAnon(VAstType::FORK); } | yFORK ':' idAny/*new-block_identifier*/ { PARSEP->symPushNew(VAstType::FORK,$1); } ; blockDeclStmtList: // IEEE: { block_item_declaration } { statement or null } // // The spec seems to suggest a empty declaration isn't ok, but most simulators take it block_item_declarationList { } | block_item_declarationList stmtList { } | stmtList { } ; block_item_declarationList: // IEEE: [ block_item_declaration ] block_item_declaration { } | block_item_declarationList block_item_declaration { } ; block_item_declaration: // ==IEEE: block_item_declaration data_declaration { } | local_parameter_declaration ';' { } | parameter_declaration ';' { } | overload_declaration { } | let_declaration { } ; stmtList: stmtBlock { } | stmtList stmtBlock { } ; stmt: // IEEE: statement_or_null == function_statement_or_null statement_item { } | id/*block_identifier*/ ':' statement_item { } /*S05 block creation rule*/ // // from _or_null | ';' { } ; statement_item: // IEEE: statement_item // // IEEE: operator_assignment foperator_assignment ';' { } // // // IEEE: blocking_assignment // // 1800-2009 restricts LHS of assignment to new to not have a range // // This is ignored to avoid conflicts | fexprLvalue '=' class_new ';' { } | fexprLvalue '=' dynamic_array_new ';' { } // // // IEEE: nonblocking_assignment | fexprLvalue yP_LTE delay_or_event_controlE expr ';' { } // // // IEEE: procedural_continuous_assignment | yASSIGN expr '=' delay_or_event_controlE expr ';' { } | yDEASSIGN variable_lvalue ';' { } | yFORCE expr '=' expr ';' { } | yRELEASE variable_lvalue ';' { } // // // IEEE: case_statement | unique_priorityE caseStart caseAttrE case_itemListE yENDCASE { } | unique_priorityE caseStart caseAttrE yMATCHES case_patternListE yENDCASE { } | unique_priorityE caseStart caseAttrE yINSIDE case_insideListE yENDCASE { } // // // IEEE: conditional_statement | unique_priorityE yIF '(' expr ')' stmtBlock %prec prLOWER_THAN_ELSE { } | unique_priorityE yIF '(' expr ')' stmtBlock yELSE stmtBlock { } // | finc_or_dec_expression ';' { } // // IEEE: inc_or_dec_expression // // Below under expr // // // IEEE: subroutine_call_statement | yVOID yP_TICK '(' function_subroutine_callNoMethod ')' ';' { } | yVOID yP_TICK '(' expr '.' function_subroutine_callNoMethod ')' ';' { } // // Expr included here to resolve our not knowing what is a method call // // Expr here must result in a subroutine_call | task_subroutine_callNoMethod ';' { } | fexpr '.' array_methodNoRoot ';' { } | fexpr '.' task_subroutine_callNoMethod ';' { } | fexprScope ';' { } // // Not here in IEEE; from class_constructor_declaration // // Because we've joined class_constructor_declaration into generic functions // // Way over-permissive; // // IEEE: [ ySUPER '.' yNEW [ '(' list_of_arguments ')' ] ';' ] | fexpr '.' class_new ';' { } // // // IEEE: disable_statement | yDISABLE hierarchical_identifier/*task_or_block*/ ';' { } | yDISABLE yFORK ';' { } // // IEEE: event_trigger | yP_MINUSGT hierarchical_identifier/*event*/ ';' { } | yP_MINUSGTGT delay_or_event_controlE hierarchical_identifier/*event*/ ';' { } // // IEEE: loop_statement | yFOREVER stmtBlock { } | yREPEAT '(' expr ')' stmtBlock { } | yWHILE '(' expr ')' stmtBlock { } // // for's first ';' is in for_initalization | yFOR '(' for_initialization expr ';' for_stepE ')' stmtBlock { } | yDO stmtBlock yWHILE '(' expr ')' ';' { } // // IEEE says array_identifier here, but dotted accepted in VMM and 1800-2009 | yFOREACH '(' idClassForeach/*array_id[loop_variables]*/ ')' stmt { } // // // IEEE: jump_statement | yRETURN ';' { } | yRETURN expr ';' { } | yBREAK ';' { } | yCONTINUE ';' { } // | par_block { } // // IEEE: procedural_timing_control_statement + procedural_timing_control | delay_control stmtBlock { } | event_control stmtBlock { } | cycle_delay stmtBlock { } // | seq_block { } // // // IEEE: wait_statement | yWAIT '(' expr ')' stmtBlock { } | yWAIT yFORK ';' { } | yWAIT_ORDER '(' hierarchical_identifierList ')' action_block { } // // // IEEE: procedural_assertion_statement | procedural_assertion_statement { } // // // IEEE: clocking_drive ';' // // clockvar_expression made to fexprLvalue to prevent reduce conflict // // Note LTE in this context is highest precedence, so first on left wins | fexprLvalue yP_LTE cycle_delay expr ';' { } // | randsequence_statement { } // // // IEEE: randcase_statement | yRANDCASE case_itemList yENDCASE { } // | expect_property_statement { } // | error ';' { } ; operator_assignment: // IEEE: operator_assignment ~f~exprLvalue '=' delay_or_event_controlE expr { } | ~f~exprLvalue yP_PLUSEQ expr { } | ~f~exprLvalue yP_MINUSEQ expr { } | ~f~exprLvalue yP_TIMESEQ expr { } | ~f~exprLvalue yP_DIVEQ expr { } | ~f~exprLvalue yP_MODEQ expr { } | ~f~exprLvalue yP_ANDEQ expr { } | ~f~exprLvalue yP_OREQ expr { } | ~f~exprLvalue yP_XOREQ expr { } | ~f~exprLvalue yP_SLEFTEQ expr { } | ~f~exprLvalue yP_SRIGHTEQ expr { } | ~f~exprLvalue yP_SSRIGHTEQ expr { } ; foperator_assignment: // IEEE: operator_assignment (for first part of expression) BISONPRE_COPY(operator_assignment,{s/~f~/f/g}) // {copied} ; inc_or_dec_expression: // ==IEEE: inc_or_dec_expression // // Need fexprScope instead of variable_lvalue to prevent conflict ~l~exprScope yP_PLUSPLUS { $$=$1; $$ = $1+$2; } | ~l~exprScope yP_MINUSMINUS { $$=$1; $$ = $1+$2; } // // Need expr instead of variable_lvalue to prevent conflict | yP_PLUSPLUS expr { $$=$1; $$ = $1+$2; } | yP_MINUSMINUS expr { $$=$1; $$ = $1+$2; } ; finc_or_dec_expression: // IEEE: inc_or_dec_expression (for first part of expression) BISONPRE_COPY(inc_or_dec_expression,{s/~l~/f/g}) // {copied} ; sinc_or_dec_expression: // IEEE: inc_or_dec_expression (for sequence_expression) BISONPRE_COPY(inc_or_dec_expression,{s/~l~/s/g}) // {copied} ; pinc_or_dec_expression: // IEEE: inc_or_dec_expression (for property_expression) BISONPRE_COPY(inc_or_dec_expression,{s/~l~/p/g}) // {copied} ; ev_inc_or_dec_expression: // IEEE: inc_or_dec_expression (for ev_expr) BISONPRE_COPY(inc_or_dec_expression,{s/~l~/ev_/g}) // {copied} ; pev_inc_or_dec_expression: // IEEE: inc_or_dec_expression (for pev_expr) BISONPRE_COPY(inc_or_dec_expression,{s/~l~/pev_/g}) // {copied} ; class_new: // ==IEEE: class_new // // Special precence so (...) doesn't match expr yNEW__ETC { $$=$1; $$ = $1; } | yNEW__ETC expr { $$=$1; $$ = $1+" "+$2; } // // Grammer abiguity; we assume "new (x)" the () are a argument, not expr | yNEW__PAREN '(' list_of_argumentsE ')' { $$=$1; $$ = $1+"("+$3+")"; } ; dynamic_array_new: // ==IEEE: dynamic_array_new yNEW__ETC '[' expr ']' { $$=$1; $$=$1+"["+$3+"]"; } | yNEW__ETC '[' expr ']' '(' expr ')' { $$=$1; $$=$1+"["+$3+"]("+$6+")"; } ; //************************************************ // Case/If unique_priorityE: // IEEE: unique_priority + empty /*empty*/ { } | yPRIORITY { } | yUNIQUE { } | yUNIQUE0 { NEED_S09($1, "unique0"); } ; action_block: // ==IEEE: action_block stmt %prec prLOWER_THAN_ELSE { } | stmt yELSE stmt { } | yELSE stmt { } ; caseStart: // IEEE: part of case_statement yCASE '(' expr ')' { } | yCASEX '(' expr ')' { } | yCASEZ '(' expr ')' { } ; caseAttrE: /*empty*/ { } ; case_patternListE: // IEEE: case_pattern_item // &&& is part of expr so aliases to case_itemList case_itemListE { } ; case_itemListE: // IEEE: [ { case_item } ] /* empty */ { } | case_itemList { } ; case_insideListE: // IEEE: [ { case_inside_item } ] /* empty */ { } | case_inside_itemList { } ; case_itemList: // IEEE: { case_item + ... } caseCondList ':' stmtBlock { } | yDEFAULT ':' stmtBlock { } | yDEFAULT stmtBlock { } | case_itemList caseCondList ':' stmtBlock { } | case_itemList yDEFAULT stmtBlock { } | case_itemList yDEFAULT ':' stmtBlock { } ; case_inside_itemList: // IEEE: { case_inside_item + open_range_list ... } open_range_list ':' stmtBlock { } | yDEFAULT ':' stmtBlock { } | yDEFAULT stmtBlock { } | case_inside_itemList open_range_list ':' stmtBlock { } | case_inside_itemList yDEFAULT stmtBlock { } | case_inside_itemList yDEFAULT ':' stmtBlock { } ; open_range_list: // ==IEEE: open_range_list + open_value_range open_value_range { } | open_range_list ',' open_value_range { } ; open_value_range: // ==IEEE: open_value_range value_range { } ; value_range: // ==IEEE: value_range expr { } | '[' expr ':' expr ']' { } ; covergroup_value_range: // ==IEEE-2012: covergroup_value_range cgexpr { } | '[' cgexpr ':' cgexpr ']' { } ; caseCondList: // IEEE: part of case_item expr { } | caseCondList ',' expr { } ; patternNoExpr: // IEEE: pattern **Excluding Expr* '.' id/*variable*/ { $$=$1; $$="."+$2; } | yP_DOTSTAR { $$=$1; $$=".*"; } // // IEEE: "expr" excluded; expand in callers // // "yTAGGED id [expr]" Already part of expr | yTAGGED id/*member_identifier*/ patternNoExpr { $$=$1; $$=" tagged "+$2+" "+$3; } // // "yP_TICKBRA patternList '}'" part of expr under assignment_pattern ; patternList: // IEEE: part of pattern patternOne { $$=$1; $$=$1; } | patternList ',' patternOne { $$=$1; $$=$1+","+$3; } ; patternOne: // IEEE: part of pattern expr { $$=$1; $$=$1; } | expr '{' argsExprList '}' { $$=$1; $$=$1; } | patternNoExpr { $$=$1; $$=$1; } ; patternMemberList: // IEEE: part of pattern and assignment_pattern patternKey ':' expr { $$=$1; $$=$1+" : "+$2; } | patternKey ':' patternNoExpr { $$=$1; $$=$1+" : "+$2; } | patternMemberList ',' patternKey ':' expr { $$=$1; $$=$1+","+$3+":"+$4; } | patternMemberList ',' patternKey ':' patternNoExpr { $$=$1; $$=$1+","+$3+":"+$4; } ; patternKey: // IEEE: merge structure_pattern_key, array_pattern_key, assignment_pattern_key // // IEEE: structure_pattern_key // // id/*member*/ is part of constExpr below constExpr { $$=$1; $$=$1; } // // IEEE: assignment_pattern_key | yDEFAULT { $$=$1; $$=$1; } | simple_type { $$=$1; $$=$1; } // // simple_type reference looks like constExpr ; assignment_pattern: // ==IEEE: assignment_pattern // This doesn't match the text of the spec. I think a : is missing, or example code needed // yP_TICKBRA constExpr exprList '}' { $$="'{"+$2+" "+$3"}"; } // // "'{ const_expression }" is same as patternList with one entry // // From patternNoExpr // // also IEEE: "''{' expression { ',' expression } '}'" // // matches since patternList includes expr yP_TICKBRA patternList '}' { $$=$1; $$="'{"+$2+"}"; } // // From patternNoExpr // // also IEEE "''{' structure_pattern_key ':' ... // // also IEEE "''{' array_pattern_key ':' ... | yP_TICKBRA patternMemberList '}' { $$=$1; $$="'{"+$2+"}"; } // // IEEE: Not in grammar, but in VMM | yP_TICKBRA '}' { $$=$1; $$="'{}"; } ; // "datatype id = x {, id = x }" | "yaId = x {, id=x}" is legal for_initialization: // ==IEEE: for_initialization + for_variable_declaration + extra terminating ";" // // IEEE: for_variable_declaration for_initializationItemList ';' { } ; for_initializationItemList: // IEEE: [for_variable_declaration...] for_initializationItem { } | for_initializationItemList ',' for_initializationItem { } ; for_initializationItem: // IEEE: variable_assignment + for_variable_declaration // // IEEE: for_variable_declaration data_type idAny/*new*/ '=' expr { VARDTYPE($1); } // // IEEE-2012: | yVAR data_type idAny/*new*/ '=' expr { VARDTYPE($1); } // // IEEE: variable_assignment | variable_lvalue '=' expr { } ; for_stepE: // IEEE: for_step + empty /* empty */ { } | for_step { } ; for_step: // IEEE: for_step for_step_assignment { } | for_step ',' for_step_assignment { } ; for_step_assignment: // ==IEEE: for_step_assignment operator_assignment { } // | inc_or_dec_expression { } // // IEEE: subroutine_call | function_subroutine_callNoMethod { } // // method_call:array_method requires a '.' | expr '.' array_methodNoRoot { } | exprScope { } ; loop_variables: // ==IEEE: loop_variables id { $$=$1; $$=$1; } | loop_variables ',' id { $$=$1; $$=$1+","+$3; } ; //************************************************ // Functions/tasks funcRef: // IEEE: part of tf_call // // package_scope/hierarchical_... is part of expr, so just need ID // // making-a id-is-a // // ----------------- ------------------ // // tf_call tf_identifier expr (list_of_arguments) // // method_call(post .) function_identifier expr (list_of_arguments) // // property_instance property_identifier property_actual_arg // // sequence_instance sequence_identifier sequence_actual_arg // // let_expression let_identifier let_actual_arg // id '(' pev_list_of_argumentsE ')' { $$=$1; $$=$1+"("+$3+")"; } | package_scopeIdFollows id '(' pev_list_of_argumentsE ')' { $$=$2; $$=$1+$2+"("+$4+")"; } | class_scope_id '(' pev_list_of_argumentsE ')' { $$=$1; $$=$1+"("+$3+")"; } ; task_subroutine_callNoMethod: // function_subroutine_callNoMethod (as task) // // IEEE: tf_call funcRef { $$=$1; $$=$1; } | funcRef yWITH__PAREN '(' expr ')' { $$=$1; $$=$1+" "+$2+$3+$4+$5; } | system_t_call { $$=$1; $$=$1; } // // IEEE: method_call requires a "." so is in expr // // IEEE: ['std::'] not needed, as normal std package resolution will find it // // IEEE: randomize_call // // We implement randomize as a normal funcRef, since randomize isn't a keyword // // Note yNULL is already part of expressions, so they come for free | funcRef yWITH__CUR constraint_block { $$=$1; $$=$1+" with..."; } ; function_subroutine_callNoMethod: // IEEE: function_subroutine_call (as function) // // IEEE: tf_call funcRef { $$=$1; $$=$1; } | funcRef yWITH__PAREN '(' expr ')' { $$=$1; $$=$1+" "+$2+$3+$4+$5; } | system_f_call { $$=$1; $$=$1; } // // IEEE: method_call requires a "." so is in expr // // IEEE: ['std::'] not needed, as normal std package resolution will find it // // IEEE: randomize_call // // We implement randomize as a normal funcRef, since randomize isn't a keyword // // Note yNULL is already part of expressions, so they come for free | funcRef yWITH__CUR constraint_block { $$=$1; $$=$1+" with..."; } ; system_t_call: // IEEE: system_tf_call (as task) system_f_call { $$=$1; $$ = $1; } ; system_f_call: // IEEE: system_tf_call (as func) ygenSYSCALL parenE { $$=$1; $$ = $1; } // // Allow list of data_type to support "x,,,y" | ygenSYSCALL '(' exprOrDataTypeList ')' { $$=$1; $$ = $1+"("+$3+")"; } // // Standard doesn't explicity list system calls // // But these match elaboration calls in 1800-2009 | yD_FATAL parenE { $$=$1; $$ = $1; } | yD_FATAL '(' exprOrDataTypeList ')' { $$=$1; $$ = $1+"("+$3+")"; } | yD_ERROR parenE { $$=$1; $$ = $1; } | yD_ERROR '(' exprOrDataTypeList ')' { $$=$1; $$ = $1+"("+$3+")"; } | yD_WARNING parenE { $$=$1; $$ = $1; } | yD_WARNING '(' exprOrDataTypeList ')' { $$=$1; $$ = $1+"("+$3+")"; } | yD_INFO parenE { $$=$1; $$ = $1; } | yD_INFO '(' exprOrDataTypeList ')' { $$=$1; $$ = $1+"("+$3+")"; } ; elaboration_system_task: // IEEE: elaboration_system_task (1800-2009) // // $fatal first argument is exit number, must be constant yD_FATAL parenE ';' { $$=$1; $$ = $1; NEED_S09($1,"elaboration system tasks"); } | yD_FATAL '(' exprOrDataTypeList ')' ';' { $$=$1; $$ = $1+"("+$3+")"; NEED_S09($1,"elaboration system tasks"); } | yD_ERROR parenE ';' { $$=$1; $$ = $1; NEED_S09($1,"elaboration system tasks"); } | yD_ERROR '(' exprOrDataTypeList ')' ';' { $$=$1; $$ = $1+"("+$3+")"; NEED_S09($1,"elaboration system tasks"); } | yD_WARNING parenE ';' { $$=$1; $$ = $1; NEED_S09($1,"elaboration system tasks"); } | yD_WARNING '(' exprOrDataTypeList ')' ';' {$$=$1; $$ = $1+"("+$3+")"; NEED_S09($1,"elaboration system tasks"); } | yD_INFO parenE ';' { $$=$1; $$ = $1; NEED_S09($1,"elaboration system tasks"); } | yD_INFO '(' exprOrDataTypeList ')' ';' { $$=$1; $$ = $1+"("+$3+")"; NEED_S09($1,"elaboration system tasks"); } ; property_actual_arg: // ==IEEE: property_actual_arg // // IEEE: property_expr // // IEEE: sequence_actual_arg pev_expr { $$=$1; $$=$1; } // // IEEE: sequence_expr // // property_expr already includes sequence_expr ; task: yTASK__ETC { $$=$1; } | yTASK__aPUREV { $$=$1; } ; task_declaration: // IEEE: task_declaration yTASK__ETC lifetimeE taskId tfGuts yENDTASK endLabelE { PARSEP->endtaskfuncCb($5,$5); PARSEP->symPopScope(VAstType::TASK); } | yTASK__aPUREV lifetimeE taskId tfGutsPureV { PARSEP->endtaskfuncCb($1,"endtask"); PARSEP->symPopScope(VAstType::TASK); } ; task_prototype: // ==IEEE: task_prototype // // IEEE: has '(' tf_port_list ')' // // However the () should be optional for OVA task taskId '(' tf_port_listE ')' { PARSEP->symPopScope(VAstType::TASK); PARSEP->endtaskfuncCb($1,"endtask"); } | task taskId { PARSEP->symPopScope(VAstType::TASK); PARSEP->endtaskfuncCb($1,"endtask"); } ; function: yFUNCTION__ETC { $$=$1; } | yFUNCTION__aPUREV { $$=$1; } ; function_declaration: // IEEE: function_declaration + function_body_declaration yFUNCTION__ETC lifetimeE funcId tfGuts yENDFUNCTION endLabelE { PARSEP->endtaskfuncCb($5,$5); PARSEP->symPopScope(VAstType::FUNCTION); } | yFUNCTION__ETC lifetimeE funcIdNew tfGuts yENDFUNCTION endLabelE { PARSEP->endtaskfuncCb($5,$5); PARSEP->symPopScope(VAstType::FUNCTION); } | yFUNCTION__aPUREV lifetimeE funcId tfGutsPureV { PARSEP->endtaskfuncCb($1,"endfunction"); PARSEP->symPopScope(VAstType::FUNCTION); } | yFUNCTION__aPUREV lifetimeE funcIdNew tfGutsPureV { PARSEP->endtaskfuncCb($1,"endfunction"); PARSEP->symPopScope(VAstType::FUNCTION); } ; function_prototype: // IEEE: function_prototype // // IEEE: has '(' tf_port_list ')' // // However the () should be optional for OVA function funcId '(' tf_port_listE ')' { PARSEP->symPopScope(VAstType::FUNCTION); PARSEP->endtaskfuncCb($1,"endfunction"); } | function funcId { PARSEP->symPopScope(VAstType::FUNCTION); PARSEP->endtaskfuncCb($1,"endfunction"); } ; class_constructor_prototype: // ==IEEE: class_constructor_prototype function funcIdNew '(' tf_port_listE ')' ';' { PARSEP->symPopScope(VAstType::FUNCTION); PARSEP->endtaskfuncCb($1,"endfunction"); } | function funcIdNew ';' { PARSEP->symPopScope(VAstType::FUNCTION); PARSEP->endtaskfuncCb($1,"endfunction"); } ; method_prototype: task_prototype { } | function_prototype { } ; lifetimeE: // IEEE: [lifetime] /* empty */ { } | lifetime { } ; lifetime: // ==IEEE: lifetime // // Note lifetime used by members is instead under memberQual ySTATIC__ETC { } | yAUTOMATIC { } ; taskId: tfIdScoped { PARSEP->symPushNewUnder(VAstType::TASK, $1, $1); PARSEP->taskCb($1,"task",$1); } ; funcId: // IEEE: function_data_type_or_implicit + part of function_body_declaration // // IEEE: function_data_type_or_implicit must be expanded here to prevent conflict // // function_data_type expanded here to prevent conflicts with implicit_type:empty vs data_type:ID /**/ tfIdScoped { PARSEP->symPushNewUnder(VAstType::FUNCTION, $1, $1); PARSEP->functionCb($1,"function",$1,""); } | signingE rangeList tfIdScoped { PARSEP->symPushNewUnder(VAstType::FUNCTION, $3, $3); PARSEP->functionCb($3,"function",$3,SPACED($1,$2)); } | signing tfIdScoped { PARSEP->symPushNewUnder(VAstType::FUNCTION, $2, $2); PARSEP->functionCb($2,"function",$2,$1); } | yVOID tfIdScoped { PARSEP->symPushNewUnder(VAstType::FUNCTION, $2, $2); PARSEP->functionCb($2,"function",$2,$1); } | data_type tfIdScoped { PARSEP->symPushNewUnder(VAstType::FUNCTION, $2, $2); PARSEP->functionCb($2,"function",$2,$1); } ; funcIdNew: // IEEE: from class_constructor_declaration yNEW__ETC { PARSEP->symPushNewUnder(VAstType::FUNCTION, "new", NULL); PARSEP->functionCb($1,"function","new",""); } | yNEW__PAREN { PARSEP->symPushNewUnder(VAstType::FUNCTION, "new", NULL); PARSEP->functionCb($1,"function","new",""); } | class_scopeWithoutId yNEW__PAREN { PARSEP->symPushNewUnder(VAstType::FUNCTION, "new", $1); PARSEP->functionCb($2,"function","new",""); } ; tfIdScoped: // IEEE: part of function_body_declaration/task_body_declaration // // IEEE: [ interface_identifier '.' | class_scope ] function_identifier id { $$=$1; $$=NULL; $$ = $1; } | id/*interface_identifier*/ '.' id { $$=$1; $$=NULL; $$ = $1+"."+$2; } | class_scope_id { $$=$1; $$=$1; $$ = $1; } ; tfGuts: '(' tf_port_listE ')' ';' tfBodyE { } | ';' tfBodyE { } ; tfGutsPureV: '(' tf_port_listE ')' ';' { } | ';' { } ; tfBodyE: // IEEE: part of function_body_declaration/task_body_declaration /* empty */ { } | tf_item_declarationList { } | tf_item_declarationList stmtList { } | stmtList { } ; function_data_type: // IEEE: function_data_type yVOID { $$ = $1; } | data_type { $$ = $1; } ; tf_item_declarationList: tf_item_declaration { } | tf_item_declarationList tf_item_declaration { } ; tf_item_declaration: // ==IEEE: tf_item_declaration block_item_declaration { } | tf_port_declaration { } ; tf_port_listE: // IEEE: tf_port_list + empty // // Empty covered by tf_port_item { VARRESET_LIST(""); VARIO("input"); } tf_port_listList { VARRESET_NONLIST(""); } ; tf_port_listList: // IEEE: part of tf_port_list tf_port_item { } | tf_port_listList ',' tf_port_item { } ; tf_port_item: // ==IEEE: tf_port_item // // We split tf_port_item into the type and assignment as don't know what follows a comma /* empty */ { PINNUMINC(); } // For example a ",," port | tf_port_itemFront tf_port_itemAssignment { PINNUMINC(); } | tf_port_itemAssignment { PINNUMINC(); } ; tf_port_itemFront: // IEEE: part of tf_port_item, which has the data type data_type { VARDTYPE($1); } | signingE rangeList { VARDTYPE(SPACED($1,$2)); } | signing { VARDTYPE($1); } | yVAR data_type { VARDTYPE($2); } | yVAR implicit_typeE { VARDTYPE($2); } // | tf_port_itemDir /*implicit*/ { VARDTYPE(""); /*default_nettype-see spec*/ } | tf_port_itemDir data_type { VARDTYPE($2); } | tf_port_itemDir signingE rangeList { VARDTYPE(SPACED($2,$3)); } | tf_port_itemDir signing { VARDTYPE($2); } | tf_port_itemDir yVAR data_type { VARDTYPE($3); } | tf_port_itemDir yVAR implicit_typeE { VARDTYPE($3); } ; tf_port_itemDir: // IEEE: part of tf_port_item, direction port_direction { } // port_direction sets VARIO ; tf_port_itemAssignment: // IEEE: part of tf_port_item, which has assignment id variable_dimensionListE sigAttrListE { VARDONE($1, $1, $2, ""); } | id variable_dimensionListE sigAttrListE '=' expr { VARDONE($1, $1, $2, $5); } ; parenE: /* empty */ { } | '(' ')' { } ; // method_call: // ==IEEE: method_call + method_call_body // // IEEE: method_call_root '.' method_identifier [ '(' list_of_arguments ')' ] // // "method_call_root '.' method_identifier" looks just like "expr '.' id" // // "method_call_root '.' method_identifier (...)" looks just like "expr '.' tf_call" // // IEEE: built_in_method_call // // method_call_root not needed, part of expr resolution // // What's left is below array_methodNoRoot array_methodNoRoot: // ==IEEE: built_in_method_call without root // // method_call_root not needed, part of expr resolution array_method_nameNoId method_callWithE { $$=$1; $$=$1+$2; } | array_method_nameNoId '(' list_of_argumentsE ')' method_callWithE { $$=$1; $$=$1+$2+$3+$4+$5; } // // "method_call_root '.' randomize_call" matches function_subroutine_call:randomize_call ; method_callWithE: // // Code duplicated elsewhere /* empty */ { $$=""; } | yWITH__PAREN '(' expr ')' { $$=$1; $$=$1+$2+$3+$4; } ; array_method_nameNoId: // IEEE: array_method_name minus method_identifier yUNIQUE { $$=$1; $$=$1; } | yAND { $$=$1; $$=$1; } | yOR { $$=$1; $$=$1; } | yXOR { $$=$1; $$=$1; } ; dpi_import_export: // ==IEEE: dpi_import_export yIMPORT yaSTRING dpi_tf_import_propertyE dpi_importLabelE function_prototype ';' { } | yIMPORT yaSTRING dpi_tf_import_propertyE dpi_importLabelE task_prototype ';' { } | yEXPORT yaSTRING dpi_importLabelE function idAny ';' { } | yEXPORT yaSTRING dpi_importLabelE task idAny ';' { } ; dpi_importLabelE: // IEEE: part of dpi_import_export /* empty */ { } | idAny/*c_identifier*/ '=' { } ; dpi_tf_import_propertyE: // IEEE: [ dpi_function_import_property + dpi_task_import_property ] /* empty */ { } | yCONTEXT { } | yPURE { } ; overload_declaration: // ==IEEE: overload_declaration yBIND overload_operator function data_type idAny/*new-function_identifier*/ '(' overload_proto_formals ')' ';' { } ; overload_operator: // ==IEEE: overload_operator "+" { $$="+"; } | yP_PLUSPLUS { $$="++"; } | "-" { $$="-"; } | yP_MINUSMINUS { $$="--"; } | "*" { $$="*"; } | yP_POW { $$="**"; } | "/" { $$="/"; } | "%" { $$="%"; } | yP_EQUAL { $$="=="; } | yP_NOTEQUAL { $$="!="; } | "<" { $$="<"; } | yP_LTE { $$="<="; } | ">" { $$=">"; } | yP_GTE { $$=">="; } | "=" { $$="="; } ; overload_proto_formals: // ==IEEE: overload_proto_formals data_type { } | overload_proto_formals ',' data_type { } ; //************************************************ // Expressions // // ~l~ means this is the (l)eft hand side of any operator // it will get replaced by "", "f" or "s"equence // ~r~ means this is a (r)ight hand later expansion in the same statement, // not under parenthesis for <= disambiguation // it will get replaced by "", or "f" // ~p~ means this is a (p)arenthetized expression // it will get replaced by "", or "s"equence constExpr: expr { $$=$1; $$ = $1; } ; expr: // IEEE: part of expression/constant_expression/primary // *SEE BELOW* // IEEE: primary/constant_primary // // // IEEE: unary_operator primary '+' ~r~expr %prec prUNARYARITH { $$=$1; $$ = $1+$2; } | '-' ~r~expr %prec prUNARYARITH { $$=$1; $$ = $1+$2; } | '!' ~r~expr %prec prNEGATION { $$=$1; $$ = $1+$2; } | '&' ~r~expr %prec prREDUCTION { $$=$1; $$ = $1+$2; } | '~' ~r~expr %prec prNEGATION { $$=$1; $$ = $1+$2; } | '|' ~r~expr %prec prREDUCTION { $$=$1; $$ = $1+$2; } | '^' ~r~expr %prec prREDUCTION { $$=$1; $$ = $1+$2; } | yP_NAND ~r~expr %prec prREDUCTION { $$=$1; $$ = $1+$2; } | yP_NOR ~r~expr %prec prREDUCTION { $$=$1; $$ = $1+$2; } | yP_XNOR ~r~expr %prec prREDUCTION { $$=$1; $$ = $1+$2; } // // // IEEE: inc_or_dec_expression | ~l~inc_or_dec_expression { $$=$1; $$ = $1; } // // // IEEE: '(' operator_assignment ')' // // Need exprScope of variable_lvalue to prevent conflict | '(' ~p~exprScope '=' expr ')' { $$=$1; $$ = "("+$2+$3+$4+")"; } | '(' ~p~exprScope yP_PLUSEQ expr ')' { $$=$1; $$ = "("+$2+$3+$4+")"; } | '(' ~p~exprScope yP_MINUSEQ expr ')' { $$=$1; $$ = "("+$2+$3+$4+")"; } | '(' ~p~exprScope yP_TIMESEQ expr ')' { $$=$1; $$ = "("+$2+$3+$4+")"; } | '(' ~p~exprScope yP_DIVEQ expr ')' { $$=$1; $$ = "("+$2+$3+$4+")"; } | '(' ~p~exprScope yP_MODEQ expr ')' { $$=$1; $$ = "("+$2+$3+$4+")"; } | '(' ~p~exprScope yP_ANDEQ expr ')' { $$=$1; $$ = "("+$2+$3+$4+")"; } | '(' ~p~exprScope yP_OREQ expr ')' { $$=$1; $$ = "("+$2+$3+$4+")"; } | '(' ~p~exprScope yP_XOREQ expr ')' { $$=$1; $$ = "("+$2+$3+$4+")"; } | '(' ~p~exprScope yP_SLEFTEQ expr ')' { $$=$1; $$ = "("+$2+$3+$4+")"; } | '(' ~p~exprScope yP_SRIGHTEQ expr ')' { $$=$1; $$ = "("+$2+$3+$4+")"; } | '(' ~p~exprScope yP_SSRIGHTEQ expr ')' { $$=$1; $$ = "("+$2+$3+$4+")"; } // // // IEEE: expression binary_operator expression | ~l~expr '+' ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr '-' ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr '*' ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr '/' ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr '%' ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_EQUAL ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_NOTEQUAL ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_CASEEQUAL ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_CASENOTEQUAL ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_WILDEQUAL ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_WILDNOTEQUAL ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_ANDAND ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_OROR ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_POW ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr '<' ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr '>' ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_GTE ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr '&' ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr '|' ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr '^' ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_XNOR ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_NOR ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_NAND ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_SLEFT ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_SRIGHT ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_SSRIGHT ~r~expr { $$=$1; $$ = $1+$2+$3; } | ~l~expr yP_LTMINUSGT ~r~expr { $$=$1; $$ = $1+$2+$3; } // // // IEEE: expr yP_MINUSGT expr (1800-2009) // // Conflicts with constraint_expression:"expr yP_MINUSGT constraint_set" // // To duplicating expr for constraints, just allow the more general form // // Later Ast processing must ignore constraint terms where inappropriate | ~l~expr yP_MINUSGT constraint_set { $$=$1; $$ = $1+$2+$3; } // // // <= is special, as we need to disambiguate it with <= assignment // // We copy all of expr to fexpr and rename this token to a fake one. | ~l~expr yP_LTE~f__IGNORE~ ~r~expr { $$=$1; $$ = $1+$2+$3; } // // // IEEE: conditional_expression | ~l~expr '?' ~r~expr ':' ~r~expr { $$=$1; $$ = $1+"?"+$3+":"+$5; } // // // IEEE: inside_expression | ~l~expr yINSIDE '{' open_range_list '}' { $$=$1; $$ = $1+" inside {"+$3+"}"; } // // // IEEE: tagged_union_expression | yTAGGED id/*member*/ %prec prTAGGED { $$=$1; $$ = " tagged "+$1; } | yTAGGED id/*member*/ %prec prTAGGED expr { $$=$1; $$ = " tagged "+$1+" "+$2; } // //======================// IEEE: primary/constant_primary // // // IEEE: primary_literal (minus string, which is handled specially) | yaINTNUM { $$=$1; $$ = $1; } | yaFLOATNUM { $$=$1; $$ = $1; } | yaTIMENUM { $$=$1; $$ = $1; } | strAsInt~noStr__IGNORE~ { $$=$1; $$ = $1; } // // // IEEE: "... hierarchical_identifier select" see below // // // IEEE: empty_queue | '{' '}' // // // IEEE: concatenation/constant_concatenation // // Part of exprOkLvalue below // // // IEEE: multiple_concatenation/constant_multiple_concatenation | '{' constExpr '{' cateList '}' '}' { $$=$1; $$ = "{"+$2+"{"+$4+"}}"; } // // IEEE: multiple_concatenation/constant_multiple_concatenation+ range_expression (1800-2009) | '{' constExpr '{' cateList '}' '}' '[' expr ']' { $$=$1; $$ = "{"+$2+"{"+$4+"}}["+$8+"]"; NEED_S09($6,"{}[]"); } | '{' constExpr '{' cateList '}' '}' '[' expr ':' expr ']' { $$=$1; $$ = "{"+$2+"{"+$4+"}}["+$8+$9+$10+"]"; NEED_S09($6,"{}[]"); } | '{' constExpr '{' cateList '}' '}' '[' expr yP_PLUSCOLON expr ']' { $$=$1; $$ = "{"+$2+"{"+$4+"}}["+$8+$9+$10+"]"; NEED_S09($6,"{}[]"); } | '{' constExpr '{' cateList '}' '}' '[' expr yP_MINUSCOLON expr ']' { $$=$1; $$ = "{"+$2+"{"+$4+"}}["+$8+$9+$10+"]"; NEED_S09($6,"{}[]"); } // | function_subroutine_callNoMethod { $$ = $1; } // // method_call | ~l~expr '.' function_subroutine_callNoMethod { $$=$1; $$=$1+"."+$3; } // // method_call:array_method requires a '.' | ~l~expr '.' array_methodNoRoot { $$=$1; $$ = $1+"."+$3; } // // // IEEE: let_expression // // see funcRef // // // IEEE: '(' mintypmax_expression ')' | ~noPar__IGNORE~'(' expr ')' { $$=$1; $$ = "("+$2+")"; } | ~noPar__IGNORE~'(' expr ':' expr ':' expr ')' { $$=$1; $$ = "("+$2+":"+$4+":"+$5+")"; } // // PSL rule | '_' '(' statePushVlg expr statePop ')' { $$=$1; $$ = "_("+$4+")"; } // Arbitrary Verilog inside PSL // // // IEEE: cast/constant_cast | casting_type yP_TICK '(' expr ')' { $$=$1; $$ = $1+"'("+$4+")"; } // // Spec only allows primary with addition of a type reference // // We'll be more general, and later assert LHS was a type. | ~l~expr yP_TICK '(' expr ')' { $$=$1; $$ = $1+"'("+$4+")"; } // // // IEEE: assignment_pattern_expression // // IEEE: streaming_concatenation // // See exprOkLvalue // // // IEEE: sequence_method_call // // Indistinguishable from function_subroutine_call:method_call // | '$' { $$=$1; $$ = "$"; } | yNULL { $$=$1; $$ = $1; } // // IEEE: yTHIS // // See exprScope // //---------------------- // // // Part of expr that may also be used as lvalue | ~l~exprOkLvalue { $$=$1; $$ = $1; } // //---------------------- // // // IEEE: cond_predicate - here to avoid reduce problems // // Note expr includes cond_pattern | ~l~expr yP_ANDANDAND ~r~expr { $$=$1; $$ = $1 + "&&&" + $3; } // // // IEEE: cond_pattern - here to avoid reduce problems // // "expr yMATCHES pattern" // // IEEE: pattern - expanded here to avoid conflicts | ~l~expr yMATCHES patternNoExpr { $$=$1; $$ = $1 + " matches " + $3; } | ~l~expr yMATCHES ~r~expr { $$=$1; $$ = $1 + " matches " + $3; } // // // IEEE: expression_or_dist - here to avoid reduce problems // // "expr yDIST '{' dist_list '}'" | ~l~expr yDIST '{' dist_list '}' { $$=$1; $$ = $1 + " dist " + $3+"..."+$5; } ; fexpr: // For use as first part of statement (disambiguates <=) BISONPRE_COPY(expr,{s/~l~/f/g; s/~r~/f/g; s/~f__IGNORE~/__IGNORE/g;}) // {copied} ; ev_expr: // IEEE: event_expression // // for yOR/, see event_expression // // // IEEE: [ edge_identifier ] expression [ yIFF expression ] // // expr alone see below senitemEdge { } | ev_expr yIFF expr { } // // // IEEE: sequence_instance [ yIFF expression ] // // seq_inst is in expr, so matches senitem rule above // // // IEEE: event_expression yOR event_expression | ev_expr yOR ev_expr { } // // IEEE: event_expression ',' event_expression // // See real event_expression rule // //--------------------- // // IEEE: expr | BISONPRE_COPY(expr,{s/~l~/ev_/g; s/~r~/ev_/g; s/~p~/ev_/g; s/~noPar__IGNORE~/yP_PAR__IGNORE /g;}) // {copied} // // // IEEE: '(' event_expression ')' // // expr:'(' x ')' conflicts with event_expression:'(' event_expression ')' // // so we use a special expression class | '(' event_expression ')' { $$=$1; $$ = "(...)"; } // // IEEE: From normal expr: '(' expr ':' expr ':' expr ')' // // But must avoid conflict | '(' event_expression ':' expr ':' expr ')' { $$=$1; $$ = "(...)"; } ; //sexpr: See elsewhere //pexpr: See elsewhere exprOkLvalue: // expression that's also OK to use as a variable_lvalue ~l~exprScope { $$=$1; $$ = $1; } // // IEEE: concatenation/constant_concatenation | '{' cateList '}' { $$=$1; $$ = "{"+$2+"}"; } // // IEEE: concatenation/constant_concatenation+ constant_range_expression (1800-2009) | '{' cateList '}' '[' expr ']' { $$=$1; $$ = "{"+$2+"}["+$5+"]"; NEED_S09($4,"{}[]"); } | '{' cateList '}' '[' expr ':' expr ']' { $$=$1; $$ = "{"+$2+"}["+$5+$6+$7+"]"; NEED_S09($4,"{}[]"); } | '{' cateList '}' '[' expr yP_PLUSCOLON expr ']' { $$=$1; $$ = "{"+$2+"}["+$5+$6+$7+"]"; NEED_S09($4,"{}[]"); } | '{' cateList '}' '[' expr yP_MINUSCOLON expr ']' { $$=$1; $$ = "{"+$2+"}["+$5+$6+$7+"]"; NEED_S09($4,"{}[]"); } // // IEEE: assignment_pattern_expression // // IEEE: [ assignment_pattern_expression_type ] == [ ps_type_id /ps_paremeter_id/data_type] // // We allow more here than the spec requires | ~l~exprScope assignment_pattern { $$=$1; $$=$1+$2; } | data_type assignment_pattern { $$=$1; $$=$1+$2; } | assignment_pattern { $$=$1; $$=$1; } // | streaming_concatenation { $$=$1; $$ = $1; } ; fexprOkLvalue: // exprOkLValue, For use as first part of statement (disambiguates <=) BISONPRE_COPY(exprOkLvalue,{s/~l~/f/g}) // {copied} ; sexprOkLvalue: // exprOkLValue, For use by sequence_expr BISONPRE_COPY(exprOkLvalue,{s/~l~/s/g}) // {copied} ; pexprOkLvalue: // exprOkLValue, For use by property_expr BISONPRE_COPY(exprOkLvalue,{s/~l~/p/g}) // {copied} ; ev_exprOkLvalue: // exprOkLValue, For use by ev_expr BISONPRE_COPY(exprOkLvalue,{s/~l~/ev_/g}) // {copied} ; pev_exprOkLvalue: // exprOkLValue, For use by ev_expr BISONPRE_COPY(exprOkLvalue,{s/~l~/pev_/g}) // {copied} ; exprLvalue: // expression that should be a variable_lvalue ~f~exprOkLvalue { $$=$1; $$ = $1; } ; fexprLvalue: // For use as first part of statement (disambiguates <=) BISONPRE_COPY(exprLvalue,{s/~f~/f/g}) // {copied} ; exprScope: // scope and variable for use to inside an expression // // Here we've split method_call_root | implicit_class_handle | class_scope | package_scope // // from the object being called and let expr's "." deal with resolving it. // // (note method_call_root was simplified to require a primary in 1800-2009) // // // IEEE: [ implicit_class_handle . | class_scope | package_scope ] hierarchical_identifier select // // Or method_call_body without parenthesis // // See also varRefClassBit, which is the non-expr version of most of this yTHIS { $$=$1; $$ = $1; } | idArrayed { $$=$1; $$ = $1; } | package_scopeIdFollows idArrayed { $$=$1; $$ = $1+$2; } | class_scopeIdFollows idArrayed { $$=$1; $$ = $1+$2; } | ~l~expr '.' idArrayed { $$=$1; $$ = $1+"."+$3; } // // expr below must be a "yTHIS" | ~l~expr '.' ySUPER { $$=$1; $$ = $1+"."+$3; } // // Part of implicit_class_handle | ySUPER { $$=$1; $$ = $1; } ; fexprScope: // exprScope, For use as first part of statement (disambiguates <=) BISONPRE_COPY(exprScope,{s/~l~/f/g}) // {copied} ; sexprScope: // exprScope, For use by sequence_expr BISONPRE_COPY(exprScope,{s/~l~/s/g}) // {copied} ; pexprScope: // exprScope, For use by property_expr BISONPRE_COPY(exprScope,{s/~l~/p/g}) // {copied} ; ev_exprScope: // exprScope, For use by ev_expr BISONPRE_COPY(exprScope,{s/~l~/ev_/g}) // {copied} ; pev_exprScope: // exprScope, For use by ev_expr BISONPRE_COPY(exprScope,{s/~l~/pev_/g}) // {copied} ; // Generic expressions exprOrDataType: // expr | data_type: combined to prevent conflicts expr { $$=$1; $$ = $1; } // // data_type includes id that overlaps expr, so special flavor | data_type { $$=$1; $$ = $1; } // // not in spec, but needed for $past(sig,1,,@(posedge clk)) | event_control { $$ = "event_control"; } ; exprOrDataTypeOrMinTypMax: // exprOrDataType or mintypmax_expression expr { $$=$1; $$ = $1; } | expr ':' expr ':' expr { $$=$1; $$ = $1+$2+$3+$4+$5; } // // data_type includes id that overlaps expr, so special flavor | data_type { $$=$1; $$ = $1; } // // not in spec, but needed for $past(sig,1,,@(posedge clk)) | event_control { $$ = "event_control"; } ; cateList: // // Not just 'expr' to prevent conflict via stream_concOrExprOrType stream_expression { $$=$1; $$ = $1; } | cateList ',' stream_expression { $$=$1; $$ = $1+","+$3; } ; exprOrDataTypeList: exprOrDataType { $$=$1; $$ = $1; } | exprOrDataTypeList ',' exprOrDataType { $$=$1; $$ = $1+","+$3; } | exprOrDataTypeList ',' { $$=$1; $$ = $1+","; } // Verilog::Parser only: ,, is ok ; list_of_argumentsE: // IEEE: [list_of_arguments] // // See comments under funcRef argsDottedList { $$=$1; $$=$1; } | argsExprListE { $$=$1; $$=$1; } | argsExprListE ',' argsDottedList { $$=$1; $$=$1+","+$3; } ; pev_list_of_argumentsE: // IEEE: [list_of_arguments] - pev_expr at bottom // // See comments under funcRef pev_argsDottedList { $$=$1; $$=$1; } | pev_argsExprListE { $$=$1; $$=$1; } | pev_argsExprListE ',' pev_argsDottedList { $$=$1; $$=$1+","+$3; } ; argsExprList: // IEEE: part of list_of_arguments (used where ,, isn't legal) expr { $$=$1; $$ = $1; } | argsExprList ',' expr { $$=$1; $$ = $1+","+$3; } ; argsExprListE: // IEEE: part of list_of_arguments argsExprOneE { $$=$1; $$ = $1; } | argsExprListE ',' argsExprOneE { $$=$1; $$ = $1+","+$3; } ; pev_argsExprListE: // IEEE: part of list_of_arguments - pev_expr at bottom pev_argsExprOneE { $$=$1; $$ = $1; } | pev_argsExprListE ',' pev_argsExprOneE { $$=$1; $$ = $1+","+$3; } ; argsExprOneE: // IEEE: part of list_of_arguments /*empty*/ { $$ = ""; } // ,, is legal in list_of_arguments | expr { $$=$1; $$ = $1; } ; pev_argsExprOneE: // IEEE: part of list_of_arguments - pev_expr at bottom /*empty*/ { $$ = ""; } // ,, is legal in list_of_arguments | pev_expr { $$=$1; $$ = $1; } ; argsDottedList: // IEEE: part of list_of_arguments argsDotted { $$=$1; $$=$1; } | argsDottedList ',' argsDotted { $$=$1; $$=$1+","+$3; } ; pev_argsDottedList: // IEEE: part of list_of_arguments - pev_expr at bottom pev_argsDotted { $$=$1; $$=$1; } | pev_argsDottedList ',' pev_argsDotted { $$=$1; $$=$1+","+$3; } ; argsDotted: // IEEE: part of list_of_arguments '.' idAny '(' ')' { $$=$1; $$=$1+$2+$3+$4; } | '.' idAny '(' expr ')' { $$=$1; $$=$1+$2+$3+$4+$5; } ; pev_argsDotted: // IEEE: part of list_of_arguments - pev_expr at bottom '.' idAny '(' ')' { $$=$1; $$=$1+$2+$3+$4; } | '.' idAny '(' pev_expr ')' { $$=$1; $$=$1+$2+$3+$4+$5; } ; streaming_concatenation: // ==IEEE: streaming_concatenation // // Need to disambiguate {<< expr-{ ... expr-} stream_concat } // // From {<< stream-{ ... stream-} } // // Likewise simple_type's idScoped from constExpr's idScope // // Thus we allow always any two operations. Sorry // // IEEE: "'{' yP_SL/R stream_concatenation '}'" // // IEEE: "'{' yP_SL/R simple_type stream_concatenation '}'" // // IEEE: "'{' yP_SL/R constExpr stream_concatenation '}'" '{' yP_SLEFT stream_concOrExprOrType '}' { $$=$1; $$="{<<"+$3+"}"; } | '{' yP_SRIGHT stream_concOrExprOrType '}' { $$=$1; $$="{>>"+$3+"}"; } | '{' yP_SLEFT stream_concOrExprOrType stream_concatenation '}' { $$=$1; $$="{<<"+$3+" "+$4+"}"; } | '{' yP_SRIGHT stream_concOrExprOrType stream_concatenation '}' { $$=$1; $$="{>>"+$3+" "+$4+"}"; } ; stream_concOrExprOrType: // IEEE: stream_concatenation | slice_size:simple_type | slice_size:constExpr cateList { $$=$1; $$=$1; } | simple_type { $$=$1; $$=$1; } // // stream_concatenation found via cateList:stream_expr:'{-normal-concat' // // simple_typeRef found via cateList:stream_expr:expr:id // // constant_expression found via cateList:stream_expr:expr ; stream_concatenation: // ==IEEE: stream_concatenation '{' stream_expressionList '}' { $$=$1; $$="{"+$2+"}"; } ; stream_expressionList: // IEEE: part of stream_concatenation stream_expression { $$=$1; $$=$1; } | stream_expressionList ',' stream_expression { $$=$1; $$=$1+","+$3; } ; stream_expression: // ==IEEE: stream_expression // // IEEE: array_range_expression expanded below expr { $$=$1; $$=$1; } | expr yWITH__BRA '[' expr ']' { $$=$1; $$=$1; } | expr yWITH__BRA '[' expr ':' expr ']' { $$=$1; $$=$1; } | expr yWITH__BRA '[' expr yP_PLUSCOLON expr ']' { $$=$1; $$=$1; } | expr yWITH__BRA '[' expr yP_MINUSCOLON expr ']' { $$=$1; $$=$1; } ; //************************************************ // Gate declarations // We can't tell between UDPs and modules as they aren't declared yet. // For simplicity, assume everything is a module, perhaps nameless, // and deal with it later. // IEEE: cmos_switchtype + enable_gatetype + mos_switchtype // + n_input_gatetype + n_output_gatetype + pass_en_switchtype // + pass_switchtype gateKwd: ygenGATE { $$=$1; INSTPREP($1,0); } | yAND { $$=$1; INSTPREP($1,0); } | yBUF { $$=$1; INSTPREP($1,0); } | yNAND { $$=$1; INSTPREP($1,0); } | yNOR { $$=$1; INSTPREP($1,0); } | yNOT { $$=$1; INSTPREP($1,0); } | yOR { $$=$1; INSTPREP($1,0); } | yXNOR { $$=$1; INSTPREP($1,0); } | yXOR { $$=$1; INSTPREP($1,0); } ; // This list is also hardcoded in VParseLex.l strength: // IEEE: strength0+strength1 - plus HIGHZ/SMALL/MEDIUM/LARGE ygenSTRENGTH { } | ySUPPLY0 { } | ySUPPLY1 { } ; strengthSpecE: // IEEE: drive_strength + pullup_strength + pulldown_strength + charge_strength - plus empty /* empty */ { } | strengthSpec { } ; strengthSpec: // IEEE: drive_strength + pullup_strength + pulldown_strength + charge_strength - plus empty yP_PAR__STRENGTH strength ')' { } | yP_PAR__STRENGTH strength ',' strength ')' { } ; //************************************************ // Tables combinational_body: // IEEE: combinational_body + sequential_body yTABLE tableJunkList yENDTABLE { } ; tableJunkList: tableJunk { } /* ignored */ | tableJunkList tableJunk { } /* ignored */ ; tableJunk: BISONPRE_NOT(yTABLE,yENDTABLE) { } | yTABLE tableJunk yENDTABLE { } | error {} ; //************************************************ // Specify specify_block: // ==IEEE: specify_block ySPECIFY specifyJunkList yENDSPECIFY { } | ySPECIFY yENDSPECIFY { } ; specifyJunkList: specifyJunk { } /* ignored */ | specifyJunkList specifyJunk { } /* ignored */ ; specifyJunk: BISONPRE_NOT(ySPECIFY,yENDSPECIFY) { } | ySPECIFY specifyJunk yENDSPECIFY { } | error {} ; specparam_declaration: // ==IEEE: specparam_declaration ySPECPARAM junkToSemiList ';' { } ; junkToSemiList: junkToSemi { } /* ignored */ | junkToSemiList junkToSemi { } /* ignored */ ; junkToSemi: BISONPRE_NOT(';',yENDSPECIFY,yENDMODULE) { } | error {} ; //************************************************ // IDs id: yaID__ETC { $$=$1; $$=$1; } ; idAny: // Any kind of identifier yaID__aPACKAGE { $$=$1; $$=$1; } | yaID__aTYPE { $$=$1; $$=$1; } | yaID__ETC { $$=$1; $$=$1; } ; idSVKwd: // Warn about non-forward compatible Verilog 2001 code // // yBIT, yBYTE won't work here as causes conflicts yDO { $$=$1; $$=$1; ERRSVKWD($1,$$); } | yFINAL { $$=$1; $$=$1; ERRSVKWD($1,$$); } ; variable_lvalue: // IEEE: variable_lvalue or net_lvalue // // Note many variable_lvalue's must use exprOkLvalue when arbitrary expressions may also exist idClassSel { $$=$1; $$ = $1; } | '{' variable_lvalueConcList '}' { $$=$1; $$ = $1+$2+$3; } // // IEEE: [ assignment_pattern_expression_type ] assignment_pattern_variable_lvalue // // We allow more assignment_pattern_expression_types then strictly required | data_type yP_TICKBRA variable_lvalueList '}' { $$=$1; $$ = $1+" "+$2+$3+$4; } | idClassSel yP_TICKBRA variable_lvalueList '}' { $$=$1; $$ = $1+" "+$2+$3+$4; } | /**/ yP_TICKBRA variable_lvalueList '}' { $$=$1; $$ = $1+$2+$3; } | streaming_concatenation { $$=$1; $$ = $1; } ; variable_lvalueConcList: // IEEE: part of variable_lvalue: '{' variable_lvalue { ',' variable_lvalue } '}' variable_lvalue { $$=$1; $$ = $1; } | variable_lvalueConcList ',' variable_lvalue { $$=$1; $$ = $1+","+$3; } ; variable_lvalueList: // IEEE: part of variable_lvalue: variable_lvalue { ',' variable_lvalue } variable_lvalue { $$=$1; $$ = $1; } | variable_lvalueList ',' variable_lvalue { $$=$1; $$ = $1+","+$3; } ; idClassSel: // Misc Ref to dotted, and/or arrayed, and/or bit-ranged variable idDotted { $$=$1; $$ = $1; } // // IEEE: [ implicit_class_handle . | package_scope ] hierarchical_variable_identifier select | yTHIS '.' idDotted { $$=$1; $$ = "this."+$3; } | ySUPER '.' idDotted { $$=$1; $$ = "super."+$3; } | yTHIS '.' ySUPER '.' idDotted { $$=$1; $$ = "this.super."+$3; } // // Expanded: package_scope idDotted | class_scopeIdFollows idDotted { $$=$1; $$ = $1+$2; } | package_scopeIdFollows idDotted { $$=$1; $$ = $1+$2; } ; idClassForeach: // Misc Ref to dotted, and/or arrayed, no bit range for foreach statement // // We can't just use the more general idClassSel // // because ,'s are allowed in the []'s idDottedForeach { $$=$1; $$ = $1; } // // IEEE: [ implicit_class_handle . | package_scope ] hierarchical_variable_identifier select | yTHIS '.' idDottedForeach { $$=$1; $$ = "this."+$3; } | ySUPER '.' idDottedForeach { $$=$1; $$ = "super."+$3; } | yTHIS '.' ySUPER '.' idDottedForeach { $$=$1; $$ = "this.super."+$3; } // // Expanded: package_scope idDotted | class_scopeIdFollows idDottedForeach { $$=$1; $$ = $1+$2; } | package_scopeIdFollows idDottedForeach { $$=$1; $$ = $1+$2; } ; hierarchical_identifierList: // IEEE: part of wait_statement hierarchical_identifier { } | hierarchical_identifierList ',' hierarchical_identifier { } ; hierarchical_identifierBit: // IEEE: "hierarchical_identifier bit_select" // // Not in grammar but "this." believed legal here idClassSel { } ; hierarchical_identifier: // IEEE: hierarchical_identifier, including extra bit_select // // +hierarchical_parameter_identifier // // Not in grammar but "this." believed legal here idClassSel { $$=$1; $$ = $1; } ; idDotted: yD_ROOT '.' idDottedMore { $$=$1; $$ = $1+"."+$3; } | idDottedMore { $$=$1; $$ = $1; } ; idDottedForeach: yD_ROOT '.' idDottedForeachMore { $$=$1; $$ = $1+"."+$3; } | idDottedForeachMore { $$=$1; $$ = $1; } ; idDottedMore: idArrayed { $$=$1; $$ = $1; } | idDottedMore '.' idArrayed { $$=$1; $$ = $1+"."+$3; } ; idDottedForeachMore: idForeach { $$=$1; $$ = $1; } | idDottedForeachMore '.' idForeach { $$=$1; $$ = $1+"."+$3; } ; // Single component of dotted path, maybe [#]. // Due to lookahead constraints, we can't know if [:] or [+:] are valid (last dotted part), // we'll assume so and cleanup later. // id below includes: // enum_identifier idArrayed: // IEEE: id + select id { $$=$1; $$ = $1; } // // IEEE: part_select_range/constant_part_select_range | idArrayed '[' expr ']' { $$=$1; $$ = $1+"["+$3+"]"; } | idArrayed '[' constExpr ':' constExpr ']' { $$=$1; $$ = $1+"["+$3+":"+$5+"]"; } // // IEEE: indexed_range/constant_indexed_range | idArrayed '[' expr yP_PLUSCOLON constExpr ']' { $$=$1; $$ = $1+"["+$3+"+:"+$5+"]"; } | idArrayed '[' expr yP_MINUSCOLON constExpr ']' { $$=$1; $$ = $1+"["+$3+"-:"+$5+"]"; } ; idForeach: // IEEE: id + select + [loop_variables] // // Merge of foreach and idArrayed to prevent conflict id { $$=$1; $$ = $1; } // // IEEE: part_select_range/constant_part_select_range | idForeach '[' expr ']' { $$=$1; $$ = $1+"["+$3+"]"; } | idForeach '[' constExpr ':' constExpr ']' { $$=$1; $$ = $1+"["+$3+":"+$5+"]"; } // // IEEE: indexed_range/constant_indexed_range | idForeach '[' expr yP_PLUSCOLON constExpr ']' { $$=$1; $$ = $1+"["+$3+"+:"+$5+"]"; } | idForeach '[' expr yP_MINUSCOLON constExpr ']' { $$=$1; $$ = $1+"["+$3+"-:"+$5+"]"; } // // IEEE: part of foreach: [ loop_variables ] | idForeach '[' expr ',' loop_variables ']' { $$=$1; $$ = $1+"["+$3+","+$5+"]"; } ; strAsInt: yaSTRING { $$=$1; $$ = $1; } ; endLabelE: /* empty */ { } | ':' idAny { } | ':' yNEW__ETC { } ; //************************************************ // Clocking clocking_declaration: // IEEE: clocking_declaration clockingFront clocking_event ';' clocking_itemListE yENDCLOCKING endLabelE { PARSEP->symPopScope(VAstType::CLOCKING); } // // global clocking below - we allow item list, though not in grammar ; clockingFront: // IEEE: part of class_declaration yCLOCKING { PARSEP->symPushNewAnon(VAstType::CLOCKING); } | yCLOCKING idAny/*clocking_identifier*/ { PARSEP->symPushNew(VAstType::CLOCKING,$2); } | yDEFAULT yCLOCKING { PARSEP->symPushNewAnon(VAstType::CLOCKING); } | yDEFAULT yCLOCKING idAny/*clocking_identifier*/ { PARSEP->symPushNew(VAstType::CLOCKING,$3); } | yGLOBAL__CLOCKING yCLOCKING { PARSEP->symPushNewAnon(VAstType::CLOCKING); } | yGLOBAL__CLOCKING yCLOCKING idAny/*clocking_identifier*/ { PARSEP->symPushNew(VAstType::CLOCKING,$3); } ; clocking_event: // ==IEEE: clocking_event '@' id { } | '@' '(' event_expression ')' { } ; clocking_itemListE: /* empty */ { } | clocking_itemList { } ; clocking_itemList: // IEEE: [ clocking_item ] clocking_item { } | clocking_itemList clocking_item { } ; clocking_item: // ==IEEE: clocking_item yDEFAULT default_skew ';' { } | clocking_direction list_of_clocking_decl_assign ';' { } | assertion_item_declaration { } ; default_skew: // ==IEEE: default_skew yINPUT clocking_skew { } | yOUTPUT clocking_skew { } | yINPUT clocking_skew yOUTPUT clocking_skew { } ; clocking_direction: // ==IEEE: clocking_direction yINPUT clocking_skewE { } | yOUTPUT clocking_skewE { } | yINPUT clocking_skewE yOUTPUT clocking_skewE { } | yINOUT { } ; list_of_clocking_decl_assign: // ==IEEE: list_of_clocking_decl_assign clocking_decl_assign { } | list_of_clocking_decl_assign ',' clocking_decl_assign { } ; clocking_decl_assign: // ==IEEE: clocking_decl_assign idAny/*new-signal_identifier*/ { } | idAny/*new-signal_identifier*/ '=' expr { } ; clocking_skewE: // IEEE: [clocking_skew] /* empty */ { } | clocking_skew { } ; clocking_skew: // ==IEEE: clocking_skew yPOSEDGE { } | yPOSEDGE delay_control { } | yNEGEDGE { } | yNEGEDGE delay_control { } | yEDGE { NEED_S09($1,"edge"); } | yEDGE delay_control { NEED_S09($1,"edge"); } | delay_control { } ; cycle_delay: // ==IEEE: cycle_delay yP_POUNDPOUND yaINTNUM { } | yP_POUNDPOUND id { } | yP_POUNDPOUND '(' expr ')' { } ; //************************************************ // Asserts assertion_item_declaration: // ==IEEE: assertion_item_declaration property_declaration { } | sequence_declaration { } | let_declaration { } ; assertion_item: // ==IEEE: assertion_item concurrent_assertion_item { } | deferred_immediate_assertion_item { } ; deferred_immediate_assertion_item: // ==IEEE: deferred_immediate_assertion_item deferred_immediate_assertion_statement { } | id/*block_identifier*/ ':' deferred_immediate_assertion_statement { } ; procedural_assertion_statement: // ==IEEE: procedural_assertion_statement concurrent_assertion_statement { } | immediate_assertion_statement { } // // IEEE: checker_instantiation // // Unlike modules, checkers are the only "id id (...)" form in statements. | checker_instantiation { } ; immediate_assertion_statement: // ==IEEE: immediate_assertion_statement simple_immediate_assertion_statement { } | deferred_immediate_assertion_statement { } ; simple_immediate_assertion_statement: // ==IEEE: simple_immediate_assertion_statement // // IEEE: simple_immediate_assert_statement yASSERT '(' expr ')' action_block { } // // IEEE: simple_immediate_assume_statement | yASSUME '(' expr ')' action_block { } // // IEEE: simple_immediate_cover_statement | yCOVER '(' expr ')' stmt { } ; deferred_immediate_assertion_statement: // ==IEEE: deferred_immediate_assertion_statement // // IEEE: deferred_immediate_assert_statement yASSERT '#' yaINTNUM '(' expr ')' action_block { } // yaINTNUM is always a '0' // // 1800-2012: | yASSERT yFINAL '(' expr ')' action_block { } // // IEEE: deferred_immediate_assume_statement | yASSUME '#' yaINTNUM '(' expr ')' action_block { } // yaINTNUM is always a '0' // // 1800-2012: | yASSUME yFINAL '(' expr ')' action_block { } // // IEEE: deferred_immediate_cover_statement | yCOVER '#' yaINTNUM '(' expr ')' stmt { } // yaINTNUM is always a '0' // // 1800-2012: | yCOVER yFINAL '(' expr ')' action_block { } ; expect_property_statement: // ==IEEE: expect_property_statement yEXPECT '(' property_spec ')' action_block { } ; concurrent_assertion_item: // IEEE: concurrent_assertion_item concurrent_assertion_statement { } | id/*block_identifier*/ ':' concurrent_assertion_statement { } // // IEEE: checker_instantiation // // identical to module_instantiation; see etcInst ; concurrent_assertion_statement: // ==IEEE: concurrent_assertion_statement // // IEEE: assert_property_statement yASSERT yPROPERTY '(' property_spec ')' action_block { } // // IEEE: assume_property_statement | yASSUME yPROPERTY '(' property_spec ')' action_block { } // // IEEE: cover_property_statement | yCOVER yPROPERTY '(' property_spec ')' stmtBlock { } // // IEEE: cover_sequence_statement | yCOVER ySEQUENCE '(' sexpr ')' stmt { } // // IEEE: yCOVER ySEQUENCE '(' clocking_event sexpr ')' stmt // // sexpr already includes "clocking_event sexpr" | yCOVER ySEQUENCE '(' clocking_event yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' sexpr ')' stmt { } | yCOVER ySEQUENCE '(' yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' sexpr ')' stmt { } // // IEEE: restrict_property_statement | yRESTRICT yPROPERTY '(' property_spec ')' ';' { } ; property_declaration: // ==IEEE: property_declaration property_declarationFront property_port_listE ';' property_declarationBody yENDPROPERTY endLabelE { PARSEP->symPopScope(VAstType::PROPERTY); } ; property_declarationFront: // IEEE: part of property_declaration yPROPERTY idAny/*property_identifier*/ { PARSEP->symPushNew(VAstType::PROPERTY,$2); } ; property_port_listE: // IEEE: [ ( [ property_port_list ] ) ] /* empty */ { } | '(' {VARRESET_LIST(""); VARIO("input"); } property_port_list ')' { VARRESET_NONLIST(""); } ; property_port_list: // ==IEEE: property_port_list property_port_item { } | property_port_list ',' property_port_item { } ; property_port_item: // IEEE: property_port_item/sequence_port_item // // Merged in sequence_port_item // // IEEE: property_lvar_port_direction ::= yINPUT // // prop IEEE: [ yLOCAL [ yINPUT ] ] property_formal_type // // id {variable_dimension} [ '=' property_actual_arg ] // // seq IEEE: [ yLOCAL [ sequence_lvar_port_direction ] ] sequence_formal_type // // id {variable_dimension} [ '=' sequence_actual_arg ] property_port_itemFront property_port_itemAssignment { } ; property_port_itemFront: // IEEE: part of property_port_item/sequence_port_item // property_port_itemDirE property_formal_typeNoDt { VARDTYPE($2); } // // data_type_or_implicit | property_port_itemDirE data_type { VARDTYPE($2); } | property_port_itemDirE yVAR data_type { VARDTYPE($3); } | property_port_itemDirE yVAR implicit_typeE { VARDTYPE($3); } | property_port_itemDirE signingE rangeList { VARDTYPE(SPACED($2,$3)); } | property_port_itemDirE /*implicit*/ { /*VARDTYPE-same*/ } ; property_port_itemAssignment: // IEEE: part of property_port_item/sequence_port_item/checker_port_direction portSig variable_dimensionListE { VARDONE($1, $1, $2, ""); PINNUMINC(); } | portSig variable_dimensionListE '=' property_actual_arg { VARDONE($1, $1, $2, $4); PINNUMINC(); } ; property_port_itemDirE: /* empty */ { } | yLOCAL__ETC { } | yLOCAL__ETC port_direction { } ; property_declarationBody: // IEEE: part of property_declaration assertion_variable_declarationList property_statement_spec { } //UNSUP // IEEE-2012: Has yCOVER ySEQUENCE then property_spec here. // // Must really be optional. Get clarification. | property_statement_spec { } ; assertion_variable_declarationList: // IEEE: part of assertion_variable_declaration assertion_variable_declaration { } | assertion_variable_declarationList assertion_variable_declaration { } ; sequence_declaration: // ==IEEE: sequence_declaration sequence_declarationFront sequence_port_listE ';' sequence_declarationBody yENDSEQUENCE endLabelE { PARSEP->symPopScope(VAstType::SEQUENCE); } ; sequence_declarationFront: // IEEE: part of sequence_declaration ySEQUENCE idAny/*new_sequence*/ { PARSEP->symPushNew(VAstType::SEQUENCE,$2); } ; sequence_port_listE: // IEEE: [ ( [ sequence_port_list ] ) ] // // IEEE: sequence_lvar_port_direction ::= yINPUT | yINOUT | yOUTPUT // // IEEE: [ yLOCAL [ sequence_lvar_port_direction ] ] sequence_formal_type // // id {variable_dimension} [ '=' sequence_actual_arg ] // // All this is almost identically the same as a property. // // Difference is only yINOUT/yOUTPUT (which might be added to 1800-2012) // // and yPROPERTY. So save some work. property_port_listE { } ; property_formal_typeNoDt: // IEEE: property_formal_type (w/o implicit) sequence_formal_typeNoDt { $$ = $1; } | yPROPERTY { $$ = "property"; } ; sequence_formal_typeNoDt: // ==IEEE: sequence_formal_type (w/o data_type_or_implicit) // // IEEE: data_type_or_implicit // // implicit expanded where used ySEQUENCE { $$ = "sequence"; } // // IEEE-2009: yEVENT // // already part of data_type. Removed in 1800-2012. | yUNTYPED { $$ = "untyped"; } ; sequence_declarationBody: // IEEE: part of sequence_declaration // // 1800-2012 makes ';' optional assertion_variable_declarationList sexpr { } | assertion_variable_declarationList sexpr ';' { } | sexpr { } | sexpr ';' { } ; property_spec: // IEEE: property_spec // // IEEE: [clocking_event ] [ yDISABLE yIFF '(' expression_or_dist ')' ] property_expr // // matches property_spec: "clocking_event property_expr" so we put it there yDISABLE yIFF '(' expr ')' pexpr { } | pexpr { } ; property_statement_spec: // ==IEEE: property_statement_spec // // IEEE: [ clocking_event ] [ yDISABLE yIFF '(' expression_or_dist ')' ] property_statement property_statement { } | yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' property_statement { } // // IEEE: clocking_event property_statement // // IEEE: clocking_event yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' property_statement // // Both overlap pexpr:"clocking_event pexpr" the difference is // // property_statement:property_statementCaseIf so replicate it | clocking_event property_statementCaseIf { } | clocking_event yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' property_statementCaseIf { } ; property_statement: // ==IEEE: property_statement // // Doesn't make sense to have "pexpr ;" in pexpr rule itself, so we split out case/if pexpr ';' { } // // Note this term replicated in property_statement_spec // // If committee adds terms, they may need to be there too. | property_statementCaseIf { } ; property_statementCaseIf: // IEEE: property_statement - minus pexpr yCASE '(' expr/*expression_or_dist*/ ')' property_case_itemList yENDCASE { } | yCASE '(' expr/*expression_or_dist*/ ')' yENDCASE { } | yIF '(' expr/*expression_or_dist*/ ')' pexpr %prec prLOWER_THAN_ELSE { } | yIF '(' expr/*expression_or_dist*/ ')' pexpr yELSE pexpr { } ; property_case_itemList: // IEEE: {property_case_item} property_case_item { } | property_case_itemList ',' property_case_item { } ; property_case_item: // ==IEEE: property_case_item // // IEEE: expression_or_dist { ',' expression_or_dist } ':' property_statement // // 1800-2012 changed from property_statement to property_expr caseCondList ':' pexpr { } | caseCondList ':' pexpr ';' { } | yDEFAULT pexpr { } | yDEFAULT ':' pexpr ';' { } ; pev_expr: // IEEE: property_actual_arg | expr // // which expands to pexpr | event_expression // // Used in port and function calls, when we can't know yet if something // // is a function/sequence/property or instance/checker pin. // // // '(' pev_expr ')' // // Already in pexpr // // IEEE: event_expression ',' event_expression // // ','s are legal in event_expressions, but parens required to avoid conflict with port-sep-, // // IEEE: event_expression yOR event_expression // // Already in pexpr - needs removal there // // IEEE: event_expression yIFF expr // // Already in pexpr - needs removal there // senitemEdge { $$=$1; } // //============= pexpr rules copied for pev_expr | BISONPRE_COPY_ONCE(pexpr,{s/~o~p/pev_/g; }) // {copied} // //============= sexpr rules copied for pev_expr | BISONPRE_COPY_ONCE(sexpr,{s/~p~s/pev_/g; }) // {copied} // //============= expr rules copied for pev_expr | BISONPRE_COPY_ONCE(expr,{s/~l~/pev_/g; s/~p~/pev_/g; s/~noPar__IGNORE~/yP_PAR__IGNORE /g; }) // {copied} ; pexpr: // IEEE: property_expr (The name pexpr is important as regexps just add an "p" to expr.) // // // IEEE: sequence_expr // // Expanded below // // // IEEE: '(' pexpr ')' // // Expanded below // yNOT pexpr %prec prNEGATION { } | ySTRONG '(' sexpr ')' { } | yWEAK '(' sexpr ')' { } // // IEEE: pexpr yOR pexpr // // IEEE: pexpr yAND pexpr // // Under ~p~sexpr and/or ~p~sexpr // // // IEEE: "sequence_expr yP_ORMINUSGT pexpr" // // Instead we use pexpr to prevent conflicts | ~o~pexpr yP_ORMINUSGT pexpr { } | ~o~pexpr yP_OREQGT pexpr { } // // // IEEE-2009: property_statement // // IEEE-2012: yIF and yCASE | property_statementCaseIf { } // | ~o~pexpr/*sexpr*/ yP_POUNDMINUSPD pexpr { } | ~o~pexpr/*sexpr*/ yP_POUNDEQPD pexpr { } | yNEXTTIME pexpr { } | yS_NEXTTIME pexpr { } | yNEXTTIME '[' expr/*const*/ ']' pexpr %prec yNEXTTIME { } | yS_NEXTTIME '[' expr/*const*/ ']' pexpr %prec yS_NEXTTIME { } | yALWAYS pexpr { } | yALWAYS '[' cycle_delay_const_range_expression ']' pexpr %prec yALWAYS { } | yS_ALWAYS '[' constant_range ']' pexpr %prec yS_ALWAYS { } | yS_EVENTUALLY pexpr { } | yEVENTUALLY '[' constant_range ']' pexpr %prec yEVENTUALLY { } | yS_EVENTUALLY '[' cycle_delay_const_range_expression ']' pexpr %prec yS_EVENTUALLY { } | ~o~pexpr yUNTIL pexpr { } | ~o~pexpr yS_UNTIL pexpr { } | ~o~pexpr yUNTIL_WITH pexpr { } | ~o~pexpr yS_UNTIL_WITH pexpr { } | ~o~pexpr yIMPLIES pexpr { } // // yIFF also used by event_expression | ~o~pexpr yIFF ~o~pexpr { } | yACCEPT_ON '(' expr/*expression_or_dist*/ ')' pexpr %prec yACCEPT_ON { } | yREJECT_ON '(' expr/*expression_or_dist*/ ')' pexpr %prec yREJECT_ON { } | ySYNC_ACCEPT_ON '(' expr/*expression_or_dist*/ ')' pexpr %prec ySYNC_ACCEPT_ON { } | ySYNC_REJECT_ON '(' expr/*expression_or_dist*/ ')' pexpr %prec ySYNC_REJECT_ON { } // // // IEEE: "property_instance" // // Looks just like a function/method call // // // Note "clocking_event pexpr" overlaps property_statement_spec: clocking_event property_statement // // // Include property_specDisable to match property_spec rule | clocking_event yDISABLE yIFF '(' expr ')' pexpr %prec prSEQ_CLOCKING { } // //============= sexpr rules copied for property_expr | BISONPRE_COPY_ONCE(sexpr,{s/~p~s/p/g; }) // {copied} // //============= expr rules copied for property_expr | BISONPRE_COPY_ONCE(expr,{s/~l~/p/g; s/~p~/p/g; s/~noPar__IGNORE~/yP_PAR__IGNORE /g; }) // {copied} ; sexpr: // ==IEEE: sequence_expr (The name sexpr is important as regexps just add an "s" to expr.) // // ********* RULES COPIED IN sequence_exprProp // // For precedence, see IEEE 17.7.1 // // // IEEE: "cycle_delay_range sequence_expr { cycle_delay_range sequence_expr }" // // IEEE: "sequence_expr cycle_delay_range sequence_expr { cycle_delay_range sequence_expr }" // // Both rules basically mean we can repeat sequences, so make it simpler: cycle_delay_range sexpr %prec yP_POUNDPOUND { } | ~p~sexpr cycle_delay_range sexpr %prec prPOUNDPOUND_MULTI { } // // // IEEE: expression_or_dist [ boolean_abbrev ] // // Note expression_or_dist includes "expr"! // // sexpr/*sexpression_or_dist*/ --- Hardcoded below | ~p~sexpr/*sexpression_or_dist*/ boolean_abbrev { } // // // IEEE: "sequence_instance [ sequence_abbrev ]" // // version without sequence_abbrev looks just like normal function call // // version w/sequence_abbrev matches above; expression_or_dist:expr:func boolean_abbrev:sequence_abbrev // // // IEEE: '(' expression_or_dist {',' sequence_match_item } ')' [ boolean_abbrev ] // // IEEE: '(' sexpr {',' sequence_match_item } ')' [ sequence_abbrev ] // // As sequence_expr includes expression_or_dist, and boolean_abbrev includes sequence_abbrev: // // '(' sequence_expr {',' sequence_match_item } ')' [ boolean_abbrev ] // // "'(' sexpr ')' boolean_abbrev" matches "[sexpr:'(' expr ')'] boolean_abbrev" so we can simply drop it | '(' ~p~sexpr ')' { $$=$1; $$=$1+$2+$3; } | '(' ~p~sexpr ',' sequence_match_itemList ')' { } // // // AND/OR are between pexprs OR sexprs | ~p~sexpr yAND ~p~sexpr { $$=$1; $$=$1+$2+$3; } | ~p~sexpr yOR ~p~sexpr { $$=$1; $$=$1+$2+$3; } // // Intersect always has an sexpr rhs | ~p~sexpr yINTERSECT sexpr { $$=$1; $$=$1+$2+$3; } // | yFIRST_MATCH '(' sexpr ')' { } | yFIRST_MATCH '(' sexpr ',' sequence_match_itemList ')' { } | ~p~sexpr/*sexpression_or_dist*/ yTHROUGHOUT sexpr { } // // Below pexpr's are really sequence_expr, but avoid conflict // // IEEE: sexpr yWITHIN sexpr | ~p~sexpr yWITHIN sexpr { $$=$1; $$=$1+$2+$3; } // // Note concurrent_assertion had duplicate rule for below | clocking_event ~p~sexpr %prec prSEQ_CLOCKING { } // //============= expr rules copied for sequence_expr | BISONPRE_COPY_ONCE(expr,{s/~l~/s/g; s/~p~/s/g; s/~noPar__IGNORE~/yP_PAR__IGNORE /g; }) // {copied} ; cycle_delay_range: // IEEE: ==cycle_delay_range // // These three terms in 1800-2005 ONLY yP_POUNDPOUND yaINTNUM { } | yP_POUNDPOUND id { } | yP_POUNDPOUND '(' constExpr ')' { } // // In 1800-2009 ONLY: // // IEEE: yP_POUNDPOUND constant_primary // // UNSUP: This causes a big grammer ambiguity // // as ()'s mismatch between primary and the following statement // // the sv-ac committee has been asked to clarify (Mantis 1901) | yP_POUNDPOUND '[' cycle_delay_const_range_expression ']' { } | yP_POUNDPOUND yP_BRASTAR ']' { } | yP_POUNDPOUND yP_BRAPLUSKET { } ; sequence_match_itemList: // IEEE: [sequence_match_item] part of sequence_expr sequence_match_item { } | sequence_match_itemList ',' sequence_match_item { } ; sequence_match_item: // ==IEEE: sequence_match_item // // IEEE says: operator_assignment // // IEEE says: inc_or_dec_expression // // IEEE says: subroutine_call // // This is the same list as... for_step_assignment { } ; boolean_abbrev: // ==IEEE: boolean_abbrev // // IEEE: consecutive_repetition yP_BRASTAR const_or_range_expression ']' { } | yP_BRASTAR ']' { } | yP_BRAPLUSKET { } // // IEEE: non_consecutive_repetition | yP_BRAEQ const_or_range_expression ']' { } // // IEEE: goto_repetition | yP_BRAMINUSGT const_or_range_expression ']' { } ; const_or_range_expression: // ==IEEE: const_or_range_expression constExpr { } | cycle_delay_const_range_expression { } ; constant_range: // ==IEEE: constant_range constExpr ':' constExpr { } ; cycle_delay_const_range_expression: // ==IEEE: cycle_delay_const_range_expression // // Note '$' is part of constExpr constExpr ':' constExpr { } ; //************************************************ // Let let_declaration: // ==IEEE: let_declaration let_declarationFront let_port_listE '=' expr ';' { PARSEP->symPopScope(VAstType::LET); } ; let_declarationFront: // IEEE: part of let_declaration yLET idAny/*let_identifier*/ { PARSEP->symPushNew(VAstType::LET,$2); } ; let_port_listE: // ==IEEE: let_port_list /* empty */ // // IEEE: let_port_list // // No significant difference from task ports | '(' tf_port_listE ')' { VARRESET_NONLIST(""); } ; //************************************************ // Covergroup covergroup_declaration: // ==IEEE: covergroup_declaration covergroup_declarationFront coverage_eventE ';' coverage_spec_or_optionListE yENDGROUP endLabelE { PARSEP->endgroupCb($5,$5); PARSEP->symPopScope(VAstType::COVERGROUP); } | covergroup_declarationFront '(' tf_port_listE ')' coverage_eventE ';' coverage_spec_or_optionListE yENDGROUP endLabelE { PARSEP->endgroupCb($8,$8); PARSEP->symPopScope(VAstType::COVERGROUP); } ; covergroup_declarationFront: // IEEE: part of covergroup_declaration yCOVERGROUP idAny { PARSEP->symPushNew(VAstType::COVERGROUP,$2); PARSEP->covergroupCb($1,$1,$2); } ; cgexpr: // IEEE-2012: covergroup_expression, before that just expression expr { $$=$1; $$ = $1; } ; coverage_spec_or_optionListE: // IEEE: [{coverage_spec_or_option}] /* empty */ { } | coverage_spec_or_optionList { } ; coverage_spec_or_optionList: // IEEE: {coverage_spec_or_option} coverage_spec_or_option { } | coverage_spec_or_optionList coverage_spec_or_option { } ; coverage_spec_or_option: // ==IEEE: coverage_spec_or_option // // IEEE: coverage_spec cover_point { } | cover_cross { } | coverage_option ';' { } | error { } ; coverage_option: // ==IEEE: coverage_option // // option/type_option aren't really keywords id/*yOPTION | yTYPE_OPTION*/ '.' idAny/*member_identifier*/ '=' expr { } ; cover_point: // ==IEEE: cover_point /**/ yCOVERPOINT expr iffE bins_or_empty { } // // IEEE-2012: class_scope before an ID | /**/ /**/ /**/ id ':' yCOVERPOINT expr iffE bins_or_empty { } | class_scope_id ':' yCOVERPOINT expr iffE bins_or_empty { } | class_scope_id id data_type id ':' yCOVERPOINT expr iffE bins_or_empty { } | class_scope_id id /**/ id ':' yCOVERPOINT expr iffE bins_or_empty { } | /**/ id /**/ id ':' yCOVERPOINT expr iffE bins_or_empty { } // // IEEE-2012: | bins_or_empty { } ; iffE: // IEEE: part of cover_point, others /* empty */ { } | yIFF '(' expr ')' { } ; bins_or_empty: // ==IEEE: bins_or_empty '{' bins_or_optionsList '}' { } | '{' '}' { } | ';' { } ; bins_or_optionsList: // IEEE: { bins_or_options ';' } bins_or_options ';' { } | bins_or_optionsList bins_or_options ';' { } ; bins_or_options: // ==IEEE: bins_or_options // // Superset of IEEE - we allow []'s in more places coverage_option { } // // Can't use wildcardE as results in conflicts | /**/ bins_keyword id/*bin_identifier*/ bins_orBraE '=' '{' open_range_list '}' iffE { } | yWILDCARD bins_keyword id/*bin_identifier*/ bins_orBraE '=' '{' open_range_list '}' iffE { } | /**/ bins_keyword id/*bin_identifier*/ bins_orBraE '=' '{' open_range_list '}' yWITH__CUR '{' cgexpr ')' iffE { } | yWILDCARD bins_keyword id/*bin_identifier*/ bins_orBraE '=' '{' open_range_list '}' yWITH__CUR '{' cgexpr ')' iffE { } // // // cgexpr part of trans_list // | /**/ bins_keyword id/*bin_identifier*/ bins_orBraE '=' trans_list iffE { } | yWILDCARD bins_keyword id/*bin_identifier*/ bins_orBraE '=' trans_list iffE { } // | bins_keyword id/*bin_identifier*/ bins_orBraE '=' yDEFAULT iffE { } // | bins_keyword id/*bin_identifier*/ bins_orBraE '=' yDEFAULT ySEQUENCE iffE { } ; bins_orBraE: // IEEE: part of bins_or_options: /* empty */ { } | '[' ']' { } | '[' cgexpr ']' { } ; bins_keyword: // ==IEEE: bins_keyword yBINS { } | yILLEGAL_BINS { } | yIGNORE_BINS { } ; covergroup_range_list: // ==IEEE: covergroup_range_list covergroup_value_range { } | covergroup_range_list ',' covergroup_value_range { } ; trans_list: // ==IEEE: trans_list '(' trans_set ')' { } | trans_list ',' '(' trans_set ')' { } ; trans_set: // ==IEEE: trans_set trans_range_list { } // // Note the { => } in the grammer, this is really a list | trans_set yP_EQGT trans_range_list { } ; trans_range_list: // ==IEEE: trans_range_list trans_item { } | trans_item yP_BRASTAR repeat_range ']' { } | trans_item yP_BRAMINUSGT repeat_range ']' { } | trans_item yP_BRAEQ repeat_range ']' { } ; trans_item: // ==IEEE: range_list covergroup_range_list { } ; repeat_range: // ==IEEE: repeat_range cgexpr { } | cgexpr ':' cgexpr { } ; cover_cross: // ==IEEE: cover_cross id/*cover_point_identifier*/ ':' yCROSS list_of_cross_items iffE cross_body { } | /**/ yCROSS list_of_cross_items iffE cross_body { } ; list_of_cross_items: // ==IEEE: list_of_cross_items cross_item ',' cross_item { } | cross_item ',' cross_item ',' cross_itemList { } ; cross_itemList: // IEEE: part of list_of_cross_items cross_item | cross_itemList ',' cross_item { } ; cross_item: // ==IEEE: cross_item idAny/*cover_point_identifier or variable_identifier*/ { } ; cross_body: // ==IEEE: cross_body '{' '}' { } // // IEEE-2012: No semicolon here, mistake in spec | '{' cross_body_itemSemiList '}' { } | ';' { } ; cross_body_itemSemiList: // IEEE: part of cross_body cross_body_item ';' { } | cross_body_itemSemiList cross_body_item ';' { } ; cross_body_item: // ==IEEE: cross_body_item // // IEEE: our semicolon is in the list bins_selection_or_option { } | function_declaration { } ; bins_selection_or_option: // ==IEEE: bins_selection_or_option coverage_option { } | bins_selection { } ; bins_selection: // ==IEEE: bins_selection bins_keyword idAny/*new-bin_identifier*/ '=' select_expression iffE { } ; select_expression: // ==IEEE: select_expression // // IEEE: select_condition expanded here yBINSOF '(' bins_expression ')' { } | yBINSOF '(' bins_expression ')' yINTERSECT '{' covergroup_range_list '}' { } | yWITH__PAREN '(' cgexpr ')' { } // // IEEE-2012: Need clarification as to precedence //UNSUP yWITH__PAREN '(' cgexpr ')' yMATCHES cgexpr { } | '!' yBINSOF '(' bins_expression ')' { } | '!' yBINSOF '(' bins_expression ')' yINTERSECT '{' covergroup_range_list '}' { } | '!' yWITH__PAREN '(' cgexpr ')' { } // // IEEE-2012: Need clarification as to precedence //UNSUP '!' yWITH__PAREN '(' cgexpr ')' yMATCHES cgexpr { } | select_expression yP_ANDAND select_expression { } | select_expression yP_OROR select_expression { } | '(' select_expression ')' { } // // IEEE-2012: cross_identifier // // Part of covergroup_expression - generic identifier // // IEEE-2012: Need clarification as to precedence //UNSUP covergroup_expression [ yMATCHES covergroup_expression ] ; bins_expression: // ==IEEE: bins_expression // // "cover_point_identifier" and "variable_identifier" look identical id/*variable_identifier or cover_point_identifier*/ { } | id/*cover_point_identifier*/ '.' idAny/*bins_identifier*/ { } ; coverage_eventE: // IEEE: [ coverage_event ] /* empty */ { } | clocking_event { } | yWITH__ETC function idAny/*"sample"*/ '(' tf_port_listE ')' { } | yP_ATAT '(' block_event_expression ')' { } ; block_event_expression: // ==IEEE: block_event_expression block_event_expressionTerm { } | block_event_expression yOR block_event_expressionTerm { } ; block_event_expressionTerm: // IEEE: part of block_event_expression yBEGIN hierarchical_btf_identifier { } | yEND hierarchical_btf_identifier { } ; hierarchical_btf_identifier: // ==IEEE: hierarchical_btf_identifier // // hierarchical_tf_identifier + hierarchical_block_identifier hierarchical_identifier/*tf_or_block*/ { } // // method_identifier | hierarchical_identifier class_scope_id { } | hierarchical_identifier id { } ; //********************************************************************** // Randsequence randsequence_statement: // ==IEEE: randsequence_statement yRANDSEQUENCE '(' ')' productionList yENDSEQUENCE { } | yRANDSEQUENCE '(' id/*production_identifier*/ ')' productionList yENDSEQUENCE { } ; productionList: // IEEE: production+ production { } | productionList production { } ; production: // ==IEEE: production productionFront ':' rs_ruleList ';' { } ; productionFront: // IEEE: part of production function_data_type id/*production_identifier*/ { } | /**/ id/*production_identifier*/ { } | function_data_type id/*production_identifier*/ '(' tf_port_listE ')' { } | /**/ id/*production_identifier*/ '(' tf_port_listE ')' { } ; rs_ruleList: // IEEE: rs_rule+ part of production rs_rule { } | rs_ruleList '|' rs_rule { } ; rs_rule: // ==IEEE: rs_rule rs_production_list { } | rs_production_list yP_COLONEQ weight_specification { } | rs_production_list yP_COLONEQ weight_specification rs_code_block { } ; rs_production_list: // ==IEEE: rs_production_list rs_prodList { } | yRAND yJOIN /**/ production_item production_itemList { } | yRAND yJOIN '(' expr ')' production_item production_itemList { } ; weight_specification: // ==IEEE: weight_specification yaINTNUM { } | idClassSel/*ps_identifier*/ { } | '(' expr ')' { } ; rs_code_block: // ==IEEE: rs_code_block '{' '}' { } | '{' rs_code_blockItemList '}' { } ; rs_code_blockItemList: // IEEE: part of rs_code_block rs_code_blockItem { } | rs_code_blockItemList rs_code_blockItem { } ; rs_code_blockItem: // IEEE: part of rs_code_block data_declaration { } | stmt { } ; rs_prodList: // IEEE: rs_prod+ rs_prod { } | rs_prodList rs_prod { } ; rs_prod: // ==IEEE: rs_prod production_item { } | rs_code_block { } // // IEEE: rs_if_else | yIF '(' expr ')' production_item %prec prLOWER_THAN_ELSE { } | yIF '(' expr ')' production_item yELSE production_item { } // // IEEE: rs_repeat | yREPEAT '(' expr ')' production_item { } // // IEEE: rs_case | yCASE '(' expr ')' rs_case_itemList yENDCASE { } ; production_itemList: // IEEE: production_item+ production_item { } | production_itemList production_item { } ; production_item: // ==IEEE: production_item id/*production_identifier*/ { } | id/*production_identifier*/ '(' list_of_argumentsE ')' { } ; rs_case_itemList: // IEEE: rs_case_item+ rs_case_item { } | rs_case_itemList rs_case_item { } ; rs_case_item: // ==IEEE: rs_case_item caseCondList ':' production_item ';' { } | yDEFAULT production_item ';' { } | yDEFAULT ':' production_item ';' { } ; //********************************************************************** // Checker checker_declaration: // ==IEEE: part of checker_declaration checkerFront checker_port_listE ';' checker_or_generate_itemListE yENDCHECKER endLabelE { PARSEP->symPopScope(VAstType::CHECKER); } ; checkerFront: // IEEE: part of checker_declaration yCHECKER idAny/*checker_identifier*/ { PARSEP->symPushNew(VAstType::CHECKER, $2); } ; checker_port_listE: // IEEE: [ ( [ checker_port_list ] ) ] // // checker_port_item is basically the same as property_port_item, minus yLOCAL:: // // Want to bet 1800-2012 adds local to checkers? property_port_listE { } ; checker_or_generate_itemListE: // IEEE: [{ checker_or_generate_itemList }] /* empty */ { } | checker_or_generate_itemList { } ; checker_or_generate_itemList: // IEEE: { checker_or_generate_itemList } checker_or_generate_item { } | checker_or_generate_itemList checker_or_generate_item { } ; checker_or_generate_item: // ==IEEE: checker_or_generate_item checker_or_generate_item_declaration { } | initial_construct { } // // IEEE: checker_construct | yALWAYS stmtBlock { } | final_construct { } | assertion_item { } | continuous_assign { } | checker_generate_item { } ; checker_or_generate_item_declaration: // ==IEEE: checker_or_generate_item_declaration data_declaration { } | yRAND data_declaration { } | function_declaration { } | checker_declaration { } | assertion_item_declaration { } | covergroup_declaration { } | overload_declaration { } | genvar_declaration { } | clocking_declaration { } | yDEFAULT yCLOCKING id/*clocking_identifier*/ ';' { } | yDEFAULT yDISABLE yIFF expr/*expression_or_dist*/ ';' { } | ';' { } ; checker_generate_item: // ==IEEE: checker_generate_item // // Specialized for checker so need "c_" prefixes here c_loop_generate_construct { } | c_conditional_generate_construct { } | c_generate_region { } // | elaboration_system_task { } ; checker_instantiation: // // Only used for procedural_assertion_item's // // Version in concurrent_assertion_item looks like etcInst // // Thus instead of *_checker_port_connection we can use etcInst's cellpinList id/*checker_identifier*/ id '(' cellpinList ')' ';' { } ; //********************************************************************** // Class class_declaration: // ==IEEE: part of class_declaration // // IEEE-2012: using this also for interface_class_declaration // // The classExtendsE rule relys on classFront having the // // new class scope correct via classFront classFront parameter_port_listE classExtendsE classImplementsE ';' class_itemListE yENDCLASS endLabelE { PARSEP->endclassCb($7,$7); PARSEP->symPopScope(VAstType::CLASS); } ; classFront: // IEEE: part of class_declaration classVirtualE yCLASS lifetimeE idAny/*class_identifier*/ { PARSEP->symPushNew(VAstType::CLASS, $4); PARSEP->classCb($1,$2,$4,$1); } // // IEEE: part of interface_class_declaration | yINTERFACE yCLASS lifetimeE idAny/*class_identifier*/ { PARSEP->symPushNew(VAstType::CLASS, $4); PARSEP->classCb($1,$2,$4,$1); } ; classVirtualE: /* empty */ { $$=""; } | yVIRTUAL__CLASS { $$=$1; $$=$1; } ; classExtendsE: // IEEE: part of class_declaration // // The classExtendsE rule relys on classFront having the // // new class scope correct via classFront /* empty */ { } | yEXTENDS class_typeWithoutId { PARSEP->syms().import($1,$2,$2,"*"); } | yEXTENDS class_typeWithoutId '(' list_of_argumentsE ')' { PARSEP->syms().import($1,$2,$2,"*"); } ; classImplementsE: // IEEE: part of class_declaration // // All 1800-2012 /* empty */ { } | yIMPLEMENTS classImplementsList { PARSEP->syms().import($1,$2,$2,"*"); } ; classImplementsList: // IEEE: part of class_declaration // // All 1800-2012 class_typeWithoutId { } | classImplementsList ',' class_typeWithoutId { } ; //========= // Package scoping - to traverse the symbol table properly, the final identifer // must be included in the rules below. // Each of these must end with {symsPackageDone | symsClassDone} ps_id_etc: // package_scope + general id package_scopeIdFollowsE id { $$=$1; $$=$1+$2; } ; class_scope_id: // class_scope + id etc class_scopeIdFollows id { $$=$1; $$=$1; $$=$1+$2; } ; //=== Below rules assume special scoping per above class_typeWithoutId: // as with class_typeWithoutId but allow yaID__aTYPE // // and we thus don't need to resolve it in specified package package_scopeIdFollowsE class_typeOneList { $$=$2; $$=$2; $$=$1+$2; } ; class_scopeWithoutId: // class_type standalone without following id // // and we thus don't need to resolve it in specified package class_scopeIdFollows { $$=$1; $$=$1; $$=$1; PARSEP->symTableNextId(NULL); } ; class_scopeIdFollows: // IEEE: class_scope + type // // IEEE: "class_type yP_COLONCOLON" // // IMPORTANT: The lexer will parse the following ID to be in the found package // // But class_type:'::' conflicts with class_scope:'::' so expand here package_scopeIdFollowsE class_typeOneListColonIdFollows { $$=$2; $$=$2; $$=$1+$2; } ; class_typeOneListColonIdFollows: // IEEE: class_type :: but allow yaID__aTYPE class_typeOneList yP_COLONCOLON { $$=$1; $$=$1; $$=$1+$2; PARSEP->symTableNextId($1); } ; class_typeOneList: // IEEE: class_type: "id [ parameter_value_assignment ]" but allow yaID__aTYPE // // If you follow the rules down, class_type is really a list via ps_class_identifier // // Must propagate scp up for next id class_typeOne { $$=$1; $$=$1; $$=$1; } | class_typeOneListColonIdFollows class_typeOne { $$=$1; $$=$2; $$=$1+$2; } ; class_typeOne: // IEEE: class_type: "id [ parameter_value_assignment ]" but allow yaID__aTYPE // // If you follow the rules down, class_type is really a list via ps_class_identifier // // Not listed in IEEE, but see bug627 any parameter type maybe a class yaID__aTYPE parameter_value_assignmentE { $$=$1; $$=$1; $$=$1; } ; package_scopeIdFollowsE: // IEEE: [package_scope] // // IMPORTANT: The lexer will parse the following ID to be in the found package /* empty */ { $$=""; } | package_scopeIdFollows { $$=$1; $$=$1; } ; package_scopeIdFollows: // IEEE: package_scope // // IMPORTANT: The lexer will parse the following ID to be in the found package // // class_qualifier := [ yLOCAL '::' ] [ implicit_class_handle '.' | class_scope ] // //vv mid rule action needed otherwise we might not have NextId in time to parse the id token yD_UNIT { PARSEP->symTableNextId(PARSEP->syms().netlistSymp()); } /*cont*/ yP_COLONCOLON { $$=$1; $$=$1+$3; } | yaID__aPACKAGE { PARSEP->symTableNextId($1); } /*cont*/ yP_COLONCOLON { $$=$1; $$=$1+$3; } | yLOCAL__COLONCOLON { PARSEP->symTableNextId($1); } /*cont*/ yP_COLONCOLON { $$=$1; $$=$1+$3; } ; //^^^========= class_itemListE: /* empty */ { } | class_itemList { } ; class_itemList: class_item { } | class_itemList class_item { } ; class_item: // ==IEEE: class_item class_property { } | class_method { } | class_constraint { } // | class_declaration { } | timeunits_declaration { } | covergroup_declaration { } | local_parameter_declaration ';' { } // 1800-2009 | parameter_declaration ';' { } // 1800-2009 | ';' { } // | error ';' { } ; class_method: // ==IEEE: class_method memberQualResetListE task_declaration { } | memberQualResetListE function_declaration { } // // 1800-2009 adds yPURE yVIRTUAL, already in memberQualResetListE | yEXTERN memberQualResetListE method_prototype ';' { } // // IEEE: "method_qualifierE class_constructor_declaration" // // part of function_declaration | yEXTERN memberQualResetListE class_constructor_prototype { } ; // IEEE: class_constructor_prototype // See function_declaration class_item_qualifier: // IEEE: class_item_qualifier minus ySTATIC // // IMPORTANT: yPROTECTED | yLOCAL is in a lex rule yPROTECTED { $$=$1; $$=$1; } | yLOCAL__ETC { $$=$1; $$=$1; } | ySTATIC__ETC { $$=$1; $$=$1; } ; memberQualResetListE: // Called from class_property for all qualifiers before yVAR // // Also before method declarations, to prevent grammar conflict // // Thus both types of qualifiers (method/property) are here /*empty*/ { VARRESET(); VARDTYPE(""); } | memberQualList { VARRESET(); VARDTYPE($1); } ; memberQualList: memberQualOne { $$=$1; $$=$1; } | memberQualList memberQualOne { $$=$1; $$=SPACED($1,$2); } ; memberQualOne: // IEEE: property_qualifier + method_qualifier // // Part of method_qualifier and property_qualifier class_item_qualifier { $$=$1; $$=$1; } // // Part of method_qualifier only | yVIRTUAL__ETC { $$=$1; $$=$1; } // // IMPORTANT: lexer looks for yPURE yVIRTUAL | yPURE yVIRTUAL__ETC { $$=$1; $$=$1+" "+$2; } // // Part of property_qualifier only | random_qualifier { $$=$1; $$=$1; } // // Part of lifetime, but here as ySTATIC can be in different positions | yAUTOMATIC { $$=$1; $$=$1; } // // Part of data_declaration, but not in data_declarationVarFrontClass | yCONST__ETC { $$=$1; $$=$1; } ; //********************************************************************** // Constraints class_constraint: // ==IEEE: class_constraint // // IEEE: constraint_declaration constraintStaticE yCONSTRAINT idAny constraint_block { } // // IEEE: constraint_prototype + constraint_prototype_qualifier | constraintStaticE yCONSTRAINT idAny ';' { } | yEXTERN constraintStaticE yCONSTRAINT idAny ';' { } | yPURE constraintStaticE yCONSTRAINT idAny ';' { } ; constraint_block: // ==IEEE: constraint_block '{' constraint_block_itemList '}' { } ; constraint_block_itemList: // IEEE: { constraint_block_item } constraint_block_item { } | constraint_block_itemList constraint_block_item { } ; constraint_block_item: // ==IEEE: constraint_block_item ySOLVE solve_before_list yBEFORE solve_before_list ';' { } | constraint_expression { } ; solve_before_list: // ==IEEE: solve_before_list constraint_primary { } | solve_before_list ',' constraint_primary { } ; constraint_primary: // ==IEEE: constraint_primary // // exprScope more general than: [ implicit_class_handle '.' | class_scope ] hierarchical_identifier select exprScope { } ; constraint_expressionList: // ==IEEE: { constraint_expression } constraint_expression { $$=$1; } | constraint_expressionList constraint_expression { $$=$1+" "+$2; } ; constraint_expression: // ==IEEE: constraint_expression expr/*expression_or_dist*/ ';' { $$=$1; } // // 1800-2012: | ySOFT expr/*expression_or_dist*/ ';' { $$="soft "+$1; } // // 1800-2012: // // IEEE: uniqueness_constraint ';' | yUNIQUE '{' open_range_list '}' { $$="unique {...}"; } // // IEEE: expr yP_MINUSGT constraint_set // // Conflicts with expr:"expr yP_MINUSGT expr"; rule moved there // | yIF '(' expr ')' constraint_set %prec prLOWER_THAN_ELSE { $$=$1; } | yIF '(' expr ')' constraint_set yELSE constraint_set { $$=$1;} // // IEEE says array_identifier here, but dotted accepted in VMM + 1800-2009 | yFOREACH '(' idClassForeach/*array_id[loop_variables]*/ ')' constraint_set { $$=$1; } // // soft is 1800-2012 | yDISABLE ySOFT expr/*constraint_primary*/ ';' { $$="disable soft "+$1; } ; constraint_set: // ==IEEE: constraint_set constraint_expression { $$=$1; } | '{' constraint_expressionList '}' { $$=$1+$2+$3; } ; dist_list: // ==IEEE: dist_list dist_item { } | dist_list ',' dist_item { } ; dist_item: // ==IEEE: dist_item + dist_weight value_range { } | value_range yP_COLONEQ expr { } | value_range yP_COLONDIV expr { } ; extern_constraint_declaration: // ==IEEE: extern_constraint_declaration constraintStaticE yCONSTRAINT class_scope_id constraint_block { } ; constraintStaticE: // IEEE: part of extern_constraint_declaration /* empty */ { } | ySTATIC__CONSTRAINT { } ; //********************************************************************** %% int VParseGrammar::parse() { s_grammarp = this; return VParseBisonparse(); } void VParseGrammar::debug(int level) { VParseBisondebug = level; } const char* VParseGrammar::tokenName(int token) { #if YYDEBUG || YYERROR_VERBOSE if (token >= 255) { switch (token) { /*BISONPRE_TOKEN_NAMES*/ default: return yytname[token-255]; } } else { static char ch[2]; ch[0]=token; ch[1]='\0'; return ch; } #else return ""; #endif } //YACC = /kits/sources/bison-2.4.1/src/bison --report=lookahead // --report=lookahead // --report=itemset // --graph // // Local Variables: // compile-command: "cd .. ; make -j 8 && make test" // End: Verilog-Perl-3.418/Parser/VParse.h0000644000177100017500000002771412654236555016650 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2000-2016 by Wilson Snyder. This program is free software; // you can redistribute it and/or modify it under the terms of either the GNU // Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // //************************************************************************* /// \file /// \brief Verilog::Parse: Parses verilog code /// /// Authors: Wilson Snyder /// /// Code available from: http://www.veripool.org/verilog-perl /// //************************************************************************* #ifndef _VPREPROC_H_ #define _VPREPROC_H_ 1 #include #include #include #include #include using namespace std; #include "VFileLine.h" #include "VSymTable.h" class VParseLex; // Be sure not to include it, or the Bison class will get upset class VParseGrammar; // Be sure not to include it, or the Lex class will get upset struct VParseBisonYYSType; struct av; //********************************************************************** // VParse class VParse { private: // MEMBERS // Mode bool m_sigParser; ///< SigParser not simple Verilog::Parser // State VFileLine* m_inFilelinep; ///< Next token's starting point int m_debug; ///< Debugging level VParseLex* m_lexp; ///< Current lexer state (NULL = closed) VParseGrammar* m_grammarp; ///< Current bison state (NULL = closed) bool m_eof; ///< At end of file bool m_callbackMasterEna; ///< Callbacks are enabled bool m_useUnreadback;///< Need m_unreadback tracking bool m_useProtected; ///< Need `protected tracking string m_unreadback; ///< Otherwise unprocessed whitespace before current token deque m_buffers; ///< Buffer of characters to process int m_anonNum; ///< Number of next anonymous object VSymStack m_syms; ///< Symbol stack VAstEnt* m_symTableNextId; ///< Symbol table for next lexer lookup public: // But for internalish use only // METHODS int lexToBison(VParseBisonYYSType* yylvalp); bool eofToLex() const { return m_eof && m_buffers.empty(); } bool inCellDefine() const; size_t inputToLex(char* buf, size_t max_size); // Symbol table VSymStack& syms() { return m_syms; } VAstEnt* symTableNextId() const { return m_symTableNextId; } void symTableNextId(VAstEnt* entp) { if (debug()) { if (entp) cout <<"symTableNextId under "<type().ascii()<replaceInsert(type,name)); } void symPushNewAnon(VAstType type) { string name = "__anon"; name += type.ascii() + cvtToStr(++m_anonNum); symPushNew(type,name); } void symPopScope(VAstType type) { if (m_syms.curType() != type) { string msg = (string)("Symbols suggest ending a '")+m_syms.curType().ascii()+"' but parser thinks ending a '"+type.ascii()+"'"; this->error(msg); return; } m_syms.popScope(inFilelinep()); } private: void fakeBison(); public: // CONSTRUCTORS VParse(VFileLine* filelinep, av* symsp, bool sigParser, bool useUnreadbackFlag, bool useProtected); virtual ~VParse(); // ACCESSORS /// Insert given file into this point in input stream int debug() const { return m_debug; } ///< Set debugging level void debug(int level); ///< Set debugging level void parse(const string& text); ///< Add given text to void setEof(); ///< Got a end of file bool sigParser() const { return m_sigParser; } void language(const char* valuep); void callbackMasterEna(bool flag) { m_callbackMasterEna=flag; } bool callbackMasterEna() const { return m_callbackMasterEna; } bool useProtected() const { return m_useProtected; } VFileLine* inFilelinep() const; ///< File/Line number for last callback void inFileline(const string& filename, int lineno) { m_inFilelinep = m_inFilelinep->create(filename, lineno); } void inFilelineInc() { m_inFilelinep = inFilelinep()->create(inFilelinep()->lineno()+1); } void inLineDirective(const char* text) { int ign; m_inFilelinep = inFilelinep()->lineDirective(text, ign/*ref*/); } string unreadback() const { return (m_useUnreadback ? m_unreadback : "new(...,use_unreadback=>0) was used"); } void unreadback(const string& text) { if (m_useUnreadback && callbackMasterEna()) m_unreadback = text; } void unreadbackCat(const string& text) { if (m_useUnreadback && callbackMasterEna()) m_unreadback += text; } void unreadbackCat(const char* textp, size_t len) { unreadbackCat(string(textp,len)); } // The default behavior is to pass all unknown `defines right through. // This lets the user determine how to report the errors. It also nicely // allows `celldefine and such to remain in the output stream. // CONTROL METHODS // These options control how the parsing proceeds // CALLBACK METHODS // This probably will want to be overridden for given child users of this class. // CALLBACKGEN_H_VIRTUAL_0 // CALLBACKGEN_GENERATED_BEGIN - GENERATED AUTOMATICALLY by callbackgen // Verilog::Parser Callback methods virtual void attributeCb(VFileLine* fl, const string& text) = 0; virtual void commentCb(VFileLine* fl, const string& text) = 0; virtual void endparseCb(VFileLine* fl, const string& text) = 0; virtual void keywordCb(VFileLine* fl, const string& text) = 0; virtual void numberCb(VFileLine* fl, const string& text) = 0; virtual void operatorCb(VFileLine* fl, const string& text) = 0; virtual void preprocCb(VFileLine* fl, const string& text) = 0; virtual void stringCb(VFileLine* fl, const string& text) = 0; virtual void symbolCb(VFileLine* fl, const string& text) = 0; virtual void sysfuncCb(VFileLine* fl, const string& text) = 0; // Verilog::SigParser Callback methods virtual void classCb(VFileLine* fl, const string& kwd, const string& name, const string& virt) = 0; virtual void contassignCb(VFileLine* fl, const string& kwd, const string& lhs, const string& rhs) = 0; virtual void covergroupCb(VFileLine* fl, const string& kwd, const string& name) = 0; virtual void defparamCb(VFileLine* fl, const string& kwd, const string& lhs, const string& rhs) = 0; virtual void endcellCb(VFileLine* fl, const string& kwd) = 0; virtual void endclassCb(VFileLine* fl, const string& kwd) = 0; virtual void endgroupCb(VFileLine* fl, const string& kwd) = 0; virtual void endinterfaceCb(VFileLine* fl, const string& kwd) = 0; virtual void endmodportCb(VFileLine* fl, const string& kwd) = 0; virtual void endmoduleCb(VFileLine* fl, const string& kwd) = 0; virtual void endpackageCb(VFileLine* fl, const string& kwd) = 0; virtual void endprogramCb(VFileLine* fl, const string& kwd) = 0; virtual void endtaskfuncCb(VFileLine* fl, const string& kwd) = 0; virtual void functionCb(VFileLine* fl, const string& kwd, const string& name, const string& data_type) = 0; virtual void importCb(VFileLine* fl, const string& package, const string& id) = 0; virtual void instantCb(VFileLine* fl, const string& mod, const string& cell, const string& range) = 0; virtual void interfaceCb(VFileLine* fl, const string& kwd, const string& name) = 0; virtual void modportCb(VFileLine* fl, const string& kwd, const string& name) = 0; virtual void moduleCb(VFileLine* fl, const string& kwd, const string& name, bool, bool celldefine) = 0; virtual void packageCb(VFileLine* fl, const string& kwd, const string& name) = 0; virtual void parampinCb(VFileLine* fl, const string& name, const string& conn, int index) = 0; virtual void pinCb(VFileLine* fl, const string& name, const string& conn, int index) = 0; virtual void portCb(VFileLine* fl, const string& name, const string& objof, const string& direction, const string& data_type , const string& array, int index) = 0; virtual void programCb(VFileLine* fl, const string& kwd, const string& name) = 0; virtual void taskCb(VFileLine* fl, const string& kwd, const string& name) = 0; virtual void varCb(VFileLine* fl, const string& kwd, const string& name, const string& objof, const string& net , const string& data_type, const string& array, const string& value) = 0; // CALLBACKGEN_GENERATED_END - GENERATED AUTOMATICALLY by callbackgen // CALLBACKGEN_KEYWORDS // CALLBACKGEN_GENERATED_BEGIN - GENERATED AUTOMATICALLY by callbackgen static bool isKeyword(const char* kwd, int leng) { static set s_map; if (s_map.empty()) { const char* kwds[] = { "accept_on","alias","always","always_comb","always_ff","always_latch","and", "assert","assign","assume","automatic","before","begin","bind", "bins","binsof","bit","break","buf","bufif0","bufif1", "byte","case","casex","casez","cell","chandle","checker", "class","clocking","cmos","config","const","constraint","context", "continue","cover","covergroup","coverpoint","cross","deassign","default", "defparam","design","disable","dist","do","edge","else", "end","endcase","endchecker","endclass","endclocking","endconfig","endfunction", "endgenerate","endgroup","endinterface","endmodule","endpackage","endprimitive","endprogram", "endproperty","endsequence","endspecify","endtable","endtask","enum","event", "eventually","expect","export","extends","extern","final","first_match", "for","force","foreach","forever","fork","forkjoin","function", "generate","genvar","global","highz0","highz1","if","iff", "ifnone","ignore_bins","illegal_bins","implements","implies","import","incdir", "include","initial","inout","input","inside","instance","int", "integer","interconnect","interface","intersect","join","join_any","join_none", "large","let","liblist","library","local","localparam","logic", "longint","macromodule","matches","medium","modport","module","nand", "negedge","nettype","new","nexttime","nmos","nor","noshowcancelled", "not","notif0","notif1","null","or","output","package", "packed","parameter","pmos","posedge","primitive","priority","program", "property","protected","pull0","pull1","pulldown","pullup","pulsestyle_ondetect", "pulsestyle_onevent","pure","rand","randc","randcase","randsequence","rcmos", "real","realtime","ref","reg","reject_on","release","repeat", "restrict","return","rnmos","rpmos","rtran","rtranif0","rtranif1", "s_always","s_eventually","s_nexttime","s_until","s_until_with","scalared","sequence", "shortint","shortreal","showcancelled","signed","small","soft","solve", "specify","specparam","static","strength","string","strong","strong0", "strong1","struct","super","supply0","supply1","sync_accept_on","sync_reject_on", "table","tagged","task","this","throughout","time","timeprecision", "timeunit","tran","tranif0","tranif1","tri","tri0","tri1", "triand","trior","trireg","type","typedef","union","unique", "unique0","unsigned","until","until_with","untyped","use","uwire", "var","vectored","virtual","void","wait","wait_order","wand", "weak","weak0","weak1","while","wildcard","wire","with", "within","wor","xnor","xor",""}; for (const char** k=kwds; **k; k++) s_map.insert(*k); } string str(kwd,leng); return s_map.end() != s_map.find(str); } // CALLBACKGEN_GENERATED_END - GENERATED AUTOMATICALLY by callbackgen // UTILITIES void error(const string& msg) { inFilelinep()->error(msg); } ///< Report a error void fatal(const string& msg) { inFilelinep()->fatal(msg); } ///< Report a fatal error }; #endif // Guard Verilog-Perl-3.418/Parser/VParseLex.h0000644000177100017500000001073612654236555017315 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2000-2016 by Wilson Snyder. This program is free software; // you can redistribute it and/or modify it under the terms of either the GNU // Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // //************************************************************************* /// \file /// \brief Verilog::Parse: Internal header for lex interfacing /// /// Authors: Wilson Snyder /// /// Code available from: http://www.veripool.org/verilog-perl /// /// This header provides the interface between the lex proper VParseLex.l/.cpp /// and the class implementation file VParse.cpp /// It is not intended for user applications. /// //************************************************************************* #ifndef _VPARSELEX_H_ // Guard #define _VPARSELEX_H_ 1 #include "VFileLine.h" #include "VParseGrammar.h" //====================================================================== // Externs created by flex // We add a prefix so that other lexers/flexers in the same program won't collide. #ifndef yy_create_buffer # define yy_create_buffer VParseLex_create_buffer # define yy_delete_buffer VParseLex_delete_buffer # define yy_scan_buffer VParseLex_scan_buffer # define yy_scan_string VParseLex_scan_string # define yy_scan_bytes VParseLex_scan_bytes # define yy_flex_debug VParseLex_flex_debug # define yy_init_buffer VParseLex_init_buffer # define yy_flush_buffer VParseLex_flush_buffer # define yy_load_buffer_state VParseLex_load_buffer_state # define yy_switch_to_buffer VParseLex_switch_to_buffer # define yyin VParseLexin # define yyleng VParseLexleng # define yylex VParseLexlex # define yyout VParseLexout # define yyrestart VParseLexrestart # define yytext VParseLextext #endif #ifndef YY_BUFFER_STATE struct yy_buffer_state; typedef struct yy_buffer_state *YY_BUFFER_STATE; # define YY_BUF_SIZE 16384 #endif extern int yylex(); extern void yyrestart(FILE*); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); YY_BUFFER_STATE yy_scan_bytes(const char *bytes, int len); void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ); void yy_delete_buffer( YY_BUFFER_STATE b ); class VParse; //====================================================================== /// Class entry for each lexer state class VParseLex { public: // Used only by VParseLex.cpp and VParse.cpp VParse* m_parsep; ///< Current parser bool m_inCellDefine; ///< In a `celldefine int m_prevLexToken; ///< previous parsed token (for lexer) bool m_ahead; ///< aheadToken is valid int m_aheadToken; ///< Token we read ahead VParseBisonYYSType m_aheadVal; ///< aheadToken's value int m_pvstate; ///< "pure virtual" detection // Parse state YY_BUFFER_STATE m_yyState; ///< flex input state // State to lexer static VParseLex* s_currentLexp; ///< Current lexing point static VParseBisonYYSType* s_yylvalp; int prevLexToken() { return m_prevLexToken; } // Parser -> lexer communication // CONSTRUCTORS VParseLex(VParse* parsep) { m_parsep = parsep; m_inCellDefine = false; m_prevLexToken = 0; m_ahead = false; m_pvstate = 0; m_yyState = yy_create_buffer(NULL, YY_BUF_SIZE); s_currentLexp = this; yyrestart(NULL); debug(0); } ~VParseLex() { yy_delete_buffer(m_yyState); s_currentLexp = NULL; } void restart() { yyrestart(NULL); } // Internal Utilities static bool symEscapeless(const char* textp, size_t leng) { // Are \ escapes needed to print this symbol? if (leng<1) return false; // Probably not a valid identifier, but better than a core dump... if (!isalpha(textp[0]) && textp[0] != '_') return false; const char* cp = textp; for (size_t tleng=leng; tleng; tleng--, cp++) { if (!isalnum(*cp) && *cp != '_') return false; } if (VParse::isKeyword(textp, leng)) return false; return true; } /// Called by VParse.cpp to inform lexer void unputString(const char* textp); void unputString(const char* textp, size_t length); void debug(int level); void language(const char* value); int lexToBison(VParseBisonYYSType* yylvalp); private: void unused(); int yylexReadTok(); int lexToken(VParseBisonYYSType* yylvalp); }; #endif // Guard Verilog-Perl-3.418/Parser/VParseGrammar.h0000644000177100017500000000611612654236555020150 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2000-2016 by Wilson Snyder. This program is free software; // you can redistribute it and/or modify it under the terms of either the GNU // Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // //************************************************************************* /// \file /// \brief Verilog::Parse: Parseess verilog code /// /// Authors: Wilson Snyder /// /// Code available from: http://www.veripool.org/verilog-perl /// //************************************************************************* #ifndef _VPARSEGRAMMAR_H_ #define _VPARSEGRAMMAR_H_ 1 #include #include #include #include using namespace std; #include "VFileLine.h" #include "VParse.h" #include "VAst.h" //============================================================================ // Container of things to put out later struct VParseGPin { VFileLine* m_fl; string m_name; string m_conn; int m_number; VParseGPin(VFileLine* fl, const string& name, const string& conn, int number) : m_fl(fl), m_name(name), m_conn(conn), m_number(number) {} }; //============================================================================ // We can't use bison's %union as the string type doesn't fit in a union. // It's fine to use a struct though! struct VParseBisonYYSType { string str; VFileLine* fl; VAstEnt* scp; // Symbol table scope for future lookups }; #define YYSTYPE VParseBisonYYSType //============================================================================ class VParseGrammar { static VParseGrammar* s_grammarp; ///< Current THIS, bison() isn't class based VParse* m_parsep; //int debug() { return 9; } public: // Only for VParseBison int m_pinNum; ///< Pin number being parsed string m_varDecl; string m_varNet; string m_varIO; string m_varDType; string m_varRange; string m_cellMod; bool m_cellParam; deque m_pinStack; public: // But for internal use only static VParseGrammar* staticGrammarp() { return s_grammarp; } static VParse* staticParsep() { return staticGrammarp()->m_parsep; } static void bisonError(const char* text) { staticParsep()->error(text); } //static VFileLine* fileline() { return s_grammarp->m_fileline; } public: // CREATORS VParseGrammar(VParse* parsep) : m_parsep(parsep) { s_grammarp = this; m_pinNum = 0; m_cellParam = false; } ~VParseGrammar() { s_grammarp = NULL; } // ACCESSORS void debug(int level); int pinNum() const { return m_pinNum; } void pinNum(int flag) { m_pinNum = flag; } void pinNumInc() { m_pinNum++; } // METHODS int parse(); // See VParseBison.y static const char* tokenName(int token); }; #endif // Guard Verilog-Perl-3.418/vrename0000755000177100017500000004465712654236555015433 0ustar wsnyderwsnyder#!/usr/bin/perl -w # See copyright, etc in below POD section. ###################################################################### package main; use FindBin qw($RealBin); use lib "$RealBin/blib/arch"; use lib "$RealBin/blib/lib"; use lib "$RealBin"; use Getopt::Long; use IO::Dir; use IO::File; use Pod::Usage; use Verilog::Language; use Verilog::Getopt; use Verilog::Parser; use strict; use vars qw ($VERSION %Vrename_Dont_Crypt %Vrename_Left_Edge_Define %Signal_Locs %Signal_Newname %Encrypt $Debug $Opt_Xref $Opt_Crypt $Opt_Crypt_All $Opt_Write $Opt_Keywords @Files); $VERSION = '3.418'; ###################################################################### # List of signals to never crypt # (Just put temporaries into signals.vrename) foreach ( 'unused_ok', '__FILE__', # Verilator, proposed for Verilog 2005 '__LINE__', # Verilator, proposed for Verilog 2005 'verilator', 'ms','us','ns','ps','fs', # Time precision arguments used in `timescale 'a'..'z', 'A'..'Z', # Single character names (cryptic enough!) ) { $Vrename_Dont_Crypt{$_} = ""; } # These defines contain a preprocessor directive # Thus when crypting we have to keep them at left edge %Vrename_Left_Edge_Define = ('`time_scale' => "", '`timescale' => "", ); ###################################################################### # main # capitalized are globals $Debug = 0; my $opt_change = 0; my $opt_list = 0; $Opt_Xref = 0; $Opt_Crypt = 0; # Global scope, used in sub-package $Opt_Crypt_All = 0; # Global scope, used in sub-package $Opt_Write = 1; $Opt_Keywords = 0; my $opt_read = 0; my $opt_change_filename = "signals.vrename"; my $opt_change_lang; my $output_dir = ""; @Files = (); if (! GetOptions ( "help" => \&usage, "debug" => \&debug, "version" => sub { print "Version $VERSION\n"; exit(0); }, "change!" => \$opt_change, "changefile=s"=> \$opt_change_filename, "changelang!" => \$opt_change_lang, "crypt!" => \$Opt_Crypt, "cryptall!" => \$Opt_Crypt_All, "keywords!" => \$Opt_Keywords, "language=s" => sub { shift; Verilog::Language::language_standard(shift); }, "list!" => \$opt_list, "o=s" => \$output_dir, "read!" => \$opt_read, "write!" => \$Opt_Write, "xref!" => \$Opt_Xref, "<>" => \¶meter, )) { die "%Error: Bad usage, try 'vrename --help'\n"; } $Opt_Crypt = 1 if $Opt_Crypt_All; if ($output_dir ne "" && $output_dir !~ /[\/\\]$/) { $output_dir .= "/"; } if (!@Files) { &usage(); } if ($output_dir eq "" && $Opt_Crypt && $opt_change) { print STDERR "You must use -o with -crypt or your uncrypted files will be overwritten.\n"; exit (10); } if ($opt_read || $opt_change) { changes_read ($opt_change_filename); } if ($opt_change) { foreach my $file_or_dir (@Files) { verilog_change_sig ($file_or_dir); } } if ($opt_list) { foreach my $file_or_dir (@Files) { parse_file($file_or_dir); } if ($Opt_Crypt) { changes_crypt(); } changes_from_loc (); if ($opt_change_lang) { changes_lang(); } changes_write ($opt_change_filename); } exit (0); ###################################################################### sub nop{} sub usage { print "Version: $VERSION\n"; pod2usage(-verbose=>2, -exitval=>2, -output=>\*STDOUT, -noperldoc=>1); exit (1); } sub debug { $Debug = 1; $Verilog::Parser::Debug = $Debug; $Verilog::Vrename::Reader::Debug = $Debug; } sub parameter { my $param = shift; push @Files, "$param"; # Must quote to convert Getopt to string, bug298 (-r $param) or die "%Error: Can't open $param"; } ###################################################################### sub changes_from_loc { # If a signal was found, but doesn't have change information, make it # default to have a change record with replacement same as basename. foreach my $sig (sort (keys %Signal_Locs)) { if (! defined $Signal_Newname{$sig}) { $Signal_Newname{$sig} = $sig; } } } ###################################################################### sub changes_crypt { # Make random names for signals my %used_rand = (); foreach my $sig (sort keys %Signal_Locs) { if (! defined $Signal_Newname{$sig} && $sig !~ /\$/ && (! defined $Vrename_Dont_Crypt{$sig}) && !Verilog::Language::is_compdirect("`".$sig) ) { my $has_encry = 0; my $has_uncry = 0; $has_uncry ||= $main::Dont_Decrypt{$sig}; if ($Opt_Crypt_All) { $has_encry = 1; } else { foreach my $loc (@{$Signal_Locs{$sig}}) { $has_encry ||= defined $Encrypt{$loc}; $has_uncry ||= ! (defined $Encrypt{$loc}); } } if ($has_encry && !$has_uncry) { my $rand = random_string(); while (defined $used_rand{$rand}) { $rand = random_string(); } $used_rand{$rand} = 1; $Signal_Newname{$sig} = $rand; } } } } sub random_string { while (1) { my $sig = sprintf ("%c%c%c%c%c%c", (rand (26)) + ord('a'), (rand (26)) + ord('a'), (rand (26)) + ord('a'), (rand (26)) + ord('a'), (rand (26)) + ord('a'), (rand (26)) + ord('a')); return $sig if !Verilog::Language::is_keyword($sig); } } ###################################################################### sub changes_write { # Read in the list of signal names to change my $filename = shift; my $fh = IO::File->new(">$filename") or die "%Error: $! $filename.\n"; my $sigcnt=0; print $fh "# Generated by vrename on ", scalar(localtime), "\n"; print $fh "#\n"; print $fh "# Files read for this analysis:\n"; foreach my $file (@Files) { print $fh "vfile\t\"$file\""; if ($Encrypt{$file}) { print $fh "\t-crypt"; } print $fh "\n"; } print $fh "#\n"; print $fh "#\tOriginal Signal Name\t\tName to change to\n"; print $fh "#\t--------------------\t\t-----------------\n"; print $fh "#\n"; foreach my $sig (sort (keys %Signal_Newname)) { $sigcnt++; print $fh "sigren\t\"$sig\""; my $len = 8 + 2 + length $sig; while ($len < 32) { print $fh "\t"; $len += 8; } print $fh "\t\"$Signal_Newname{$sig}\""; if ($Opt_Xref) { my $len = 40 + 2 + length $sig; while ($len < 64) { print $fh "\t"; $len += 8; } print $fh "\t#"; foreach my $loc (@{$Signal_Locs{$sig}}) { print $fh "$loc "; } } print $fh "\n"; } print $fh "#\n"; print $fh "# Use M-x compile in emacs to automatically perform the changes:\n"; print $fh "## Local Variables: ***\n"; print $fh "## compile-command: \"$0 -change "; foreach my $file (@Files) { print $fh $file, " "; } print $fh "\" ***\n"; print $fh "## End: ***\n"; $fh->close(); print "Wrote $filename (Changes list, $sigcnt signals)\n"; } sub changes_read { # Write out the list of signals in a format for easy editing my $filename = shift; print "Read $filename\n"; my $fh = IO::File->new("<$filename") or die "%Error: $! $filename.\n"; while (my $line = $fh->getline()) { chomp $line; $line =~ s/#.*$//; $line =~ s/^[ \t]+//; if ($line =~ /^$/ ) { # comment } elsif ($line =~ /^sigren\s+\"([^\"]+)\"\s+\"([^\"]+)\"/ ) { print "Rename got $1 $2\n" if ($Debug); $Signal_Newname {$1} = $2; } elsif ($line =~ /^vfile/ ) { # ignore } else { die "%Error: $filename $.: Can't parse \"$line\"\n"; } } $fh->close(); } sub changes_lang { # Grab keywords from most recent spec, not current --language my %kwds = Verilog::Language::language_keywords(Verilog::Language::language_maximum()); foreach my $kwd (sort keys %kwds) { next if Verilog::Language::is_keyword($kwd); # Already a keyword in sources next if !$Signal_Newname{$kwd}; # Not needed for the current file $Signal_Newname{$kwd} = '\\'.$kwd.' '; } } ###################################################################### sub crypt_string { my $filestrg = shift; my $magicb = "@@@@@!~SAVEVLB~!@@@@@"; my $magice = "@@@@@!~SAVEVLE~!@@@@@"; $filestrg =~ s/(\/[*\/]\s*)[Vv]erilint\s*([0-9]+)\s*off/$magicb Verilint $2 off $magice$1/g; $filestrg =~ s/(\/[*\/]\s*)([Ss]ynopsys\s*\S+)/$magicb $2 $magice$1/g; $filestrg =~ s/\/\*[\000-\377]*?\*\///g; # block comments $filestrg =~ s/^\s*\/\/.*\n//g; # lines beginning with '//' $filestrg =~ s/\/\/[^\"\n]*\n//g; # inline comments with no '"' chars, saves '"////stuf"' $filestrg =~ s/\/\/[^\"\n]*\"[^\"\n]*\".*\n//g; # inline comments with 2 '"' chars, kills '// "stuff"' $filestrg =~ s/[ \t]+/ /g; $filestrg =~ s/^[ \t]+//g; $filestrg =~ s/[ \t]+$//g; my $oldstrg = $filestrg; $filestrg = "/*ENCRYPTED:VRENAME*/"; my $pos = 0; my $oldpos; my $literal = 0; my $define = 0; for ($oldpos = 0; $oldpos < length $oldstrg; $oldpos++) { my $char = substr $oldstrg, $oldpos, 1; if ($char eq "\n") { if ($define || $literal) { $filestrg .= $char; $pos = 0; $define = 0; } else { $filestrg .= " "; $pos++; } } elsif ($char eq "`" && !$literal) { my $defkwd = (substr $oldstrg, $oldpos); $defkwd =~ /^(\`[a-z0-9_]*)/; $defkwd = $1; if (Verilog::Language::is_keyword ($defkwd) || (defined $Vrename_Left_Edge_Define {$defkwd})) { $filestrg .= "\n"; $pos = 0; $filestrg .= $char; $pos++; $define = 1; } else { $filestrg .= $char; $pos++; } } elsif ($char eq '"') { $filestrg .= $char; $pos++; $literal = ! $literal; } elsif ($char eq " " && !$literal && !$define) { if ($pos > 80) { $filestrg .= "\n"; $pos = 0; } elsif ($pos != 0) { $filestrg .= $char; $pos++; } } else { $filestrg .= $char; $pos++; } } $filestrg =~ s/[ \t]+/ /g; while ($filestrg =~ /$magicb([\000-\377]*?)$magice/) { my $rep = $1; $rep =~ s/[\n]/ /g; $filestrg =~ s/$magicb([\000-\377]*?)$magice/\n\/\*$rep\*\/\n/; } $filestrg .= "\n"; return $filestrg; } ###################################################################### sub _recurse_dir { my $dir = shift; my $callback = shift; my $dh = new IO::Dir($dir) or warn "%Warning: $! $dir\n"; while (defined (my $basefile = $dh->read)) { next if Verilog::Getopt->file_skip_special($basefile); &$callback("$dir/$basefile"); } $dh->close(); return; } sub parse_file { my $filename = shift; print "parse file $filename\n"; if (-d $filename) { _recurse_dir($filename, \&parse_file); return; } my $parser = Verilog::Vrename::Reader->new(); $parser->parse_file ($filename); } sub verilog_change_sig { # Rename signals in this filename my $filename = shift; if (-d $filename) { _recurse_dir($filename, \&verilog_change_sig); return; } # Read in the whole file in a swath my $fh = IO::File->new ("<$filename") or die "%Error: $! $filename"; my $filestrg = join('',$fh->getlines()); $fh->close(); if ($Opt_Crypt) { if ($filestrg =~ /ENCRYPT_ME/) { $Encrypt{$filename} = 1; } } # If crypting, strip comments if ($Encrypt{$filename}) { $filestrg = crypt_string ($filestrg); } # Replace any changed signals my $hadrepl = 0; my %signal_magic = (); # pass1: replace with magic replacement string # (two steps so renaming a->b and b->a at the same time doesn't screw up) foreach my $sig (sort keys %Signal_Newname) { my $new = $Signal_Newname{$sig}; if ($new ne $sig) { my $magic = "@@@@@!~${hadrepl}~!@@@@@"; my $sig_quoted = quotemeta $sig; if ($filestrg =~ s/([^a-zA-Z0-9_\$\%\'\\])$sig_quoted(?=[^a-zA-Z0-9_])/$1$magic/g) { print "match s$sig n$new m$magic\n" if $Debug; $hadrepl ++; $signal_magic{$sig} = $magic; } } } # pass2: magic->new foreach my $sig (sort keys %Signal_Newname) { if (defined $signal_magic{$sig}) { my $magic = $signal_magic{$sig}; my $new = $Signal_Newname{$sig}; if ($filestrg =~ s/$magic/$new/g) { print "match s$sig n$new m$magic\n" if $Debug; } } } # Save it if ($hadrepl || $Opt_Crypt) { if (!$Opt_Write) { print "$filename ($hadrepl signals matched) (-n: Not written)\n"; } else { my $fh = IO::File->new(">$output_dir$filename") or die "%Error: $! $output_dir$filename.\n"; $fh->print($filestrg); $fh->close; if ($Encrypt{$filename}) {print "Encrypted ";} else {print "Wrote ";} print "$filename ($hadrepl signals matched)\n"; } } } ###################################################################### package Verilog::Vrename::Reader; use Carp; use Verilog::Parser; use base qw(Verilog::Parser); use vars qw($Debug); use strict; sub new { my $class = shift; my $self = $class->SUPER::new (_last_keyword=>'', _file_sigs=>{}, @_); bless $self, $class; return $self; } sub _track_signal { my $self = shift; my $sig = shift; $sig =~ s/\`//g; # Remove `s from define usages else won't match define declaration if (!$self->{_file_sigs}{$sig}) { push @{$main::Signal_Locs{$sig}}, $self->filename; } $self->{_file_sigs}{$sig} = 1; if ($main::Opt_Crypt && ($self->{_last_keyword} eq "module" || $self->{_last_keyword} eq "function" || $self->{_last_keyword} eq "task")) { $main::Dont_Decrypt{$sig} = 1; $self->{_last_keyword} = ""; } } sub keyword { # Callback from parser when a keyword occurs my $self = shift; # Parser invoked my $token = shift; # What token was parsed $self->{_last_keyword} = $token; if ($main::Opt_Keywords) { $self->_track_signal($token); } } sub symbol { # Callback from parser when a symbol occurs my $self = shift; # Parser invoked my $sig = shift; # What token was parsed #print "Signal callback $self $token\n" if ($Debug); $self->_track_signal($sig); } sub parse_file { # Read all signals in this filename @_ == 2 or croak 'usage: $parser->parse_file($filename)'; my $self = shift; my $filename = shift; $self->{_file_sigs} = {}; # Signals already found in module $self->{_last_keyword} = ""; $self->SUPER::parse_file($filename); if ($main::Opt_Crypt) { my $fh = IO::File->new("<$filename") or die "%Error: $! $filename\n"; local $/ = undef; my $filestrg = <$fh>; # Same test below if ($filestrg =~ /ENCRYPT_ME/) { $main::Encrypt{$filename} = 1; } $fh->close; } } ###################################################################### ###################################################################### __END__ =pod =head1 NAME vrename - change signal names across many Verilog files =head1 SYNOPSIS vrename ... =head1 DESCRIPTION Vrename will allow a signal to be changed across all levels of the design hierarchy, or to create a cross reference of signal names. (It actually includes module names, macros, and other definitions, so those can be changed too.) Vpm uses a three step process. First, use vrename --list [...] [....] This reads the specified files, or all files below the specified directory, and creates a signals.vrename file. Now, edit the signals.vrename file manually to specify the new signal names. Then, use vrename --change [...] [....] =head1 ARGUMENTS vrename takes the following arguments: =over 4 =item --help Displays this message and program version and exits. =item --version Displays program version and exits. =item --change Take the signals file signals.vrename in the current directory and change the signals in the design as specified by the signals file. Either --list or --change must be specified. =item --changefile {file} Use the given filename instead of "signals.vrename". =item --changelang Include in the signals.vrename file the template needed to change the language standard for the file. For the first run, use "--list --changelang" and --language to specify the file's original language, then rerun with the "--change" option. The files will get escaped identifiers for the most recent Verilog standard. For example with --language 1364-2005, "do" will become "\do ". =item --crypt With --list, randomize the signal renames. With --change, compress spaces and comments and apply those renames listed in the file (presumably created with vrename --list --crypt). The comment /*ENCRYPT_ME*/ must be included in all files that need to be encrypted, or use the --cryptall flag. If a signal should not be encrypted, it can simply be set in the signals.vrename list to be changed to itself. After encrypting, you may want to save the signals.vrename file so you have a key for decoding, and also so that it may be used for the next encryption run. When used in this way for the next encryption run, only new signals will get new encryptions, all other encryptions will be encrypted the same. =item --cryptall As with --crypt, but put cryptic names into signals.vrename even if the file does not include ENCRYPT_ME. Generally you will then need to edit the signals.vrename file manually to exclude any top level signals that should be preserved. =item --keywords Include keywords in the renaming list. Default is to ignore keywords, as changing a keyword will probably result in unrunnable code, however, occasionally it may be necessary to rename signals which happen to match the name of keywords recently added to the language (such as 'bit'). =item --language <1364-1995|1364-2001|1364-2005|1800-2005|1800-2009|1800-2012> Set the language standard for the files. This determines which tokens are signals versus keywords, such as the ever-common "do" (data-out signal, versus a do-while loop keyword). =item --list Create a list of signals in the design and write to signals.vrename. Either --list or --change must be specified. =item --nowrite Don't write the actual changes, just report the files that would be changed. =item --o {dir} Use the given directory for output instead of the current directory. =item --read Read the changes list, allows --list to append to the changes already read. =item --xref Include a cross reference of where the signals are used. --list must also be specified. =back =head1 DISTRIBUTION Verilog-Perl is part of the L free Verilog EDA software tool suite. The latest version is available from CPAN and from L. Copyright 2000-2016 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. =head1 AUTHORS Wilson Snyder =head1 SEE ALSO L, L =cut Verilog-Perl-3.418/verilog/0000755000177100017500000000000012654236646015500 5ustar wsnyderwsnyderVerilog-Perl-3.418/verilog/v_hier_sub.v0000644000177100017500000000163012113776231020001 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. module v_hier_sub (/*AUTOARG*/ input clk, input [3:0] avec, // Comment for v_hier_sub, avec output [3:0] qvec /* Comment for v_hier_sub, qvec */ ); parameter FROM_DEFPARAM = 1; supply1 a1; v_hier_subsub #( .IGNORED('sh20) ) \subsub0 ( // Outputs .q (qvec[0]), // Inputs .a (a1)); // Comment for subsub cell generate genvar K, K_UNUSED; for (K=0; K<1; K=K+1) begin : genloop // By pin position, inside generate v_hier_subsub subsub2 (qvec[2], 1'b0); end endgenerate function foo; (* attribute *) /* synopsys metacommenttest */ input not_part_of_pinlist; foo = not_part_of_pinlist; endfunction endmodule Verilog-Perl-3.418/verilog/example.v0000644000177100017500000000710012474756172017321 0ustar wsnyderwsnyder// DESCRIPTION: Example top verilog file for vpassert program // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. `timescale 1ns/1ns module example; pli pli (); // Put on highest level of your design integer i; `define ten 10 reg \escaped[10] ; initial begin $uinfo (0, "Welcome to a VPASSERTed file\n"); // $uinfo (1, "Printed only at debug level %0d\n",1); $uinfo (9, "Printed only at debug level %0d\n",9); // \escaped[10] = 1'b1; $uassert (\escaped[10] , "Escaped not 1\n"); $uassert_info (\escaped[10] , "Escaped not 1\n"); // i=0; $uassert (1==1, "Why doesn't 1==1??\n"); $uassert (10==`ten, "Why doesn't 10==10??\n"); $uassert (/*comm ent*/1==1, //comment /*com ent*/"Why doesn't 1==1??\n"/*com ent*/ ); // i=3'b100; $uassert_amone(\i [2:0], "amone ok\n"); i=3'b010; $uassert_amone(i[2:0], "amone ok\n"); i=3'b001; $uassert_amone(i[2:0], "amone ok\n"); i=3'b000; $uassert_amone(i[2:0], "amone ok\n"); //i=3'b011; $uassert_amone(i[2:0], "amone error expected\n"); //i=3'b110; $uassert_amone(i[2:0], "amone error expected\n"); // i=2'b10; $uassert_onehot(i[1:0], "onehot ok\n"); i=2'b01; $uassert_onehot(i[1:0], "onehot ok\n"); i=2'b10; $uassert_onehot(i[1],i[0], "onehot ok\n"); i=2'b10; $uassert_onehot({i[1],i[0]}, "onehot ok\n"); //i=2'b11; $uassert_onehot(i[2:0], "onehot error expected\n"); //i=2'b00; $uassert_onehot(i[2:0], "onehot error expected\n"); end // Test assertions within case statements initial begin i=3'b100; casez (i) 3'b100: ; 3'b000: $stop; 3'b010: $uerror("Why?\n"); default: $stop; endcase if ($time > 1000) $stop; end // Example of request/grant handshake reg clk; reg bus_req; // Request a transaction, single cycle pulse reg bus_ack; // Acknowledged transaction, single cycle pulse reg [31:0] bus_data; initial begin // Reset signals bus_req = 1'b0; bus_ack = 1'b0; bus_data = 1'b0; // Assert a request @ (posedge clk) ; bus_req = 1'b1; bus_data = 32'hfeed; // Wait for ack @ (posedge clk) ; bus_req = 1'b0; // Send ack @ (posedge clk) ; bus_ack = 1'b1; // Next request could be here @ (posedge clk) ; bus_ack = 1'b0; end always @ (posedge clk) begin $uassert_req_ack (bus_req, bus_ack /*COMMENT*/, bus_data); end // Overall control loop initial clk = 1'b0; initial forever begin #1; i = i + 1; clk = !clk; if (i==20) $uwarn (0, "Don't know what to do next!\n"); if (i==22) $uerror (0, "Guess I'll error out!\n"); end // Moved clock asserts always @* begin if (i==19) $uwarn_clk (clk,"Called at next edge (1 of 2)\n"); if (i==18) $ucover_clk (clk,"example_cover_label"); $ucover_foreach_clk(clk, "foreach_label", "27:3,1,0", (i[$ui])); end // Meta coverage disables initial begin // vp_coverage_off if (0) begin end // cover off'ed // vp_coverage_on end // Ifdef based disables initial begin `ifndef NEVER `ifdef SYNTHESIS if (1) begin end // cover on `elsif SYNTHESIS if (1) begin end // cover on `else if (1) begin end // cover off'ed `endif `ifndef SYNTHESIS if (1) begin end // cover off'ed `else if (1) begin end // cover on `endif `endif end endmodule Verilog-Perl-3.418/verilog/parser_sv09.v0000644000177100017500000000162412500653041020025 0ustar wsnyderwsnyder// 1800-2009 mantis1769 module mantis1769 #(N=1); if (N < 1) $error("Bad N value %d", N); endmodule // 1800-2009 mantis1134 module mantis1134_decoder #(BITS = 3, localparam OUT_BITS = 1 << BITS) (input [BITS-1:0] A, output reg [OUT_BITS-1:0] Y); assign Y = 1 << A; endmodule // 1800-2009 mantis907 module mantis907_default_parameter #(REQUIRED); endmodule module mantis1619_default_input (input integer deflt = 10); endmodule module global_anal; // Don't be anal about "global" in old code integer global = 1; global clocking z @(posedge clk); // But still get it right endclocking endmodule module bug400; assert property ( @(posedge clk) disable iff (rst || $past (rst,1,,@(posedge clk)) || $isunknown(rst)) "assert 0"); endmodule // dobbie package pkga; endpackage package pkgb; endpackage module impbegin import pkga::*; import pkgb::*; (input foobar); endmodule Verilog-Perl-3.418/verilog/v_comments.v0000644000177100017500000000145512543003112020017 0ustar wsnyderwsnyder`define ThirtyTwo 32 module v_comments ( a, // Pragma for a b, // pragma for b c, d, d1, d2, d3 ); input a; // comment for a inout [10:0] b; output [0:10] c; // comment for c output [ ((2*`ThirtyTwo) - 1) : 0 ] d; output [ `ThirtyTwo : 0 ] d1; output [ ( MATH - 1 ): 0 ] d2; output [ `ThirtyTwo - 1: 0 ] d3; reg d; reg [11:0] e; // Comment for e endmodule // 'Third' below must attach to 'b' becase there's no ) or , after b. module v_bug917 // modcmt (input wire a, // a-First output wire m // m-Second , output wire b // b-Third ); // Third endmodule module v_bug917p (input wire a, // a-First output wire b); // b-Secondparen // Third endmodule Verilog-Perl-3.418/verilog/v_hier_noport.v0000644000177100017500000000034612113776231020534 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. module v_hier_noport; reg internal; endmodule Verilog-Perl-3.418/verilog/inc_ifdef.v0000644000177100017500000000134312113776231017563 0ustar wsnyderwsnyder// DESCRIPTION: Verilog::Preproc: Example source code // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. `define EMPTY_TRUE `ifndef EMPTY_TRUE `error "Empty is still true" `endif `define A `ifdef A $display("1A"); `ifdef C $display("%Error: 2C"); `elsif A $display("2A"); `ifdef C $display("%Error: 3C"); `elsif B $display("%Error: 3B"); `else $display("3AELSE"); `endif `else $display("%Error: 2ELSE"); `endif `elsif B $display("%Error: 1B"); `ifdef A $display("%Error: noC"); `elsif A $display("%Error: noB"); `else $display("%Error: noELSE"); `endif `elsif C $display("%Error: 1C"); `else $display("%Error: 1ELSE"); `endif Verilog-Perl-3.418/verilog/parser_sv.v0000644000177100017500000002252312603600765017666 0ustar wsnyderwsnyderpackage mypackage; bit [7:0] pkg_addr; bit [7:0] pkg_data; endpackage module times (); time x; initial x = 33ns; // Note no space endmodule : times interface itf #(parameter num_of_cli = 0); logic blabla; logic [7:0] addr, data[9]; modport Master(input data, date_delayed, output addr); endinterface : itf module test ( itf whole_int, itf.test modported_int, input logic clk, rst, input logic d_in, output logic d_out ); import mypackage::*; logic d_int; logic [7:0] data_, bork[2]; assign d_int = d_in + pkg_data; assign modported_int.data = data_; always_ff @(posedge clk or negedge rst) begin if (~rst) d_out <= '0; else d_out <= d_int; end property p1; @(posedge clk) disable iff(!rst) $rose(d_int) |-> ##1 d_int; endproperty //a1: assert property(p1) else $warning("\nProperty violated\n"); c1: cover property(p1) $display("\np1_cover\n"); endmodule : test // Different ways of declaring pins/vars module line49_diff_pins1 ( input in_nw, // Input, no type input [1:0] in_vec[2:0], // Input, implicit input in_nvec, // Isn't vectorized output logic out_logic, // Output and var output out_also_logic // "logic" sticks ); endmodule module line49_diff_pins2 (in2_nw, in2_vec, out2reg); input in2_nw; input [1:0] in2_vec [2:0]; output reg out2_reg; input signed in2_signed; var var1_imp; var [1:0] var1_imp_vec [2:0]; var reg var1_imp_reg; var logic var1_imp_logic; endmodule program automatic first_prog; int i; endprogram // Importing package imp_test_pkg; typedef logic [7:0] byte_t; typedef logic [15:0] word_t; function afunc(integer w); afunc=0; endfunction endpackage module imp_test_mod; import imp_test_pkg::byte_t; byte_t some_byte; endmodule module imp_test_mod2; import imp_test_pkg::*; word_t some_word; endmodule module imp_test_mod3 ( input imp_test_pkg::word_t wordin ); localparam FROM_FUNC = imp_test_pkg::afunc(1); endmodule module var_unnamed_block; initial begin integer var_in_unnamed; end endmodule module cell_with_typeparam; addr #(.PARAMTYPE(integer)) acell (); endmodule module arrayed_wire; wire [3:0][7:0] n2; endmodule task empty_task; // sv design book endtask task empty_task2; // sv design book integer i; endtask task check_casts; typedef integer integer_t; sum = a + integer '(3); sum = a + integer_t '(3); sum = a + 10'(3); endtask module comma_assign; int n[1:2][1:3] = '{'{0,1,2}, '{3{4}}}; endmodule task typed_pattern; typedef int triple [1:3]; $mydisplay(triple'{0,1,2}); endtask virtual class VclassWCopy; extern function new(); virtual function VclassWCopy copy(input VclassWCopy src=null); endfunction endclass : VclassWCopy function VclassWCopy::new(); endfunction : new typedef class FwdClass; function bit [3:0] FwdClass::ffunc (bit [3:0] in); ffunc = in; endfunction : ffunc function VclassWCopy VclassWCopy::copy (input VclassWCopy to); dst = new(); endfunction : copy task foreach_memref; bit [0:52] [7:0] mem; // It's *not* legal according to the grammar to have dotted/package ids here foreach (mem[i]) $write("i=%x ", mem[i]); $display; endtask typedef class PreTypedefedClass; class PreTypedefedClass; extern function new(); endclass typedef class PreTypedefedClass; class NewInNew; function new; s_self = new; endfunction : new endclass // std package class TryStd; semaphore s1; std::semaphore s2; mailbox #(integer) m1; std::mailbox m2; process p1; std::process p2; endclass module cg_test1; covergroup counter1 @ (posedge cyc); cyc_bined : coverpoint cyc { bins zero = {0}; bins low = {1,5}; bins mid = {[5:$]}; } value_and_toggle: cross cyc_value, toggle; endgroup endmodule task randomize_dotted(); int vbl; assert(vbl.randomize()); endtask module prop_parens; LABEL: cover property (@(posedge clk) ((foo[3:0] == 4'h0) & bar)); endmodule class this_dot_tests; task ass; this.super.foo = this.bar; endtask endclass module sized_out #( parameter SZ = 4 ) ( output logic [SZ-1:0] o_sized ); endmodule class solve_size; rand byte arrayed[]; rand bit b; // The dot below doesn't seem legal according to grammar, but // the intent makes sense, and it appears in the VMM constraint solve_a_b { solve arrayed.size before b; } endclass class vmm_stuff; task examples; void'(this.a.funccall(x)); this.a.taskcall(); super.new(name2); endtask extern static local function bit foo1(); extern virtual protected function void foo2(); protected static string foo3; extern function bit foo4(); static local bit foo5[string]; endclass class vmm_cl_func_colon; typedef enum int unsigned {FIRM} restart_e; function void do_all(vmm_cl_func_colon::restart_e kind = vmm_cl_func_colon::FIRM); endfunction extern function int uses_class_type(); endclass class vmm_cl_subenv; extern protected virtual task do_reset(vmm_cl_func_colon::restart_e kind = vmm_cl_func_colon::FIRM); endclass task empty_comma; extracomma1(,); extracomma2("a",); extracomma3("a",,"c"); extracomma4(,"b"); endtask task vmm_more; file_is_a_string(`__FILE__,`__LINE__); foreach(this.text[i]) begin $display("%s\n", this.text[i]); end // Not part of 1800-2005 grammar, but likely in 1800-2009 queue = '{}; -> this.item_taken; endtask // Extern Functions/tasks when defined must scope to the class they're in to get appropriate types function int vmm_cl_func_colon::uses_class_type(restart_e note_uses_class_type); var restart_e also_uses_class_type; endfunction module hidden_checks; typedef int T; sub (.T(123)); // Different T task hidden; typedef bit T; // Different T endtask endmodule typedef struct packed signed { rand int m_a; bit [7:0] m_b; } t_bug91; t_bug91 v_bug91; module bug98(interfacex x_if); h inst_h(.push(x_if.pop)); endmodule module bugas; initial begin ASSERT_CHK: assert (0) else $error("%m -- not allowed %d", 0); end endmodule typedef enum [2:0] { ENUM_RANGED_VALUE } enum_ranged_t; typedef struct packed { logic val; } t_bug202_struct; typedef union packed { logic val; } t_bug202_union; class ln288; extern virtual function string extvirtstr; extern virtual task extvirttask; endclass class cl_to_init; extern function new(); extern static function cl_to_init init(); endclass function cl_to_init cl_to_init::init(); endfunction function cl_to_init::new(); endfunction cl_to_init cl_inited = cl_to_init::init(); // pure virtual functions have no endfunction. virtual class pure_virt_func_class; pure virtual function string pure_virt_func(); pure virtual task pure_virt_task(); endclass class extend_base; typedef enum { EN_A, EN_B } base_enum; virtual function extend_base create(); return null; endfunction endclass class extended extends extend_base; typedef base_enum be_t; // type must come from base class virtual function int create (); // Must override base's create be_t mye; endfunction endclass task rand_with_ln320(); if (!randomize(v) with { v > 0 && v < maxval; }) begin end if (randomize(null)) begin end endtask task apply_request(data_req, input bit randomize = 1); if (randomize == 1) begin data_req.randomize(); // Generic method, not std::randomize end endtask task foreach_class_scope_ln330; foreach (extended::some_array[i,j]) begin end endtask module clkif_334; always @(posedge top.clk iff !top.clken_l) begin end endmodule module gen_ln338; generate case (P) 32'b0: initial begin end default: initial begin end endcase endgenerate endmodule module par_packed; parameter logic [31:0] P1 [3:0] = '{ 1, 2, 3, 4 } ; // unpacked array wire struct packed { logic ecc; logic [7:0] data; } memsig; endmodule module not_a_bug315; typedef int supply_net_t; input int i; input imp_test_pkg::byte_t i; input supply_net_t bug316; endmodule module bins_bracket; parameter N = 2; covergroup cg_debitor @(posedge eclk); count: coverpoint count iff (erst_n) { // 'std' overrides std:: package, which confuses VP //bins std[] = { [0:N] }; } endgroup endmodule virtual class ovm_void; endclass virtual class ovm_port_base #(type IF=ovm_void) extends ovm_void; endclass virtual class uvm_build_phase #(type BASE=ovm_void) extends BASE; static const string type_name = "uvm_build_phase"; endclass class bug627sub; endclass class bug627 #(type TYPE=bug627sub); typedef TYPE types_t[$]; static function types_t f(); $display("%s", { TYPE::type_name }); return types; endfunction endclass interface if_bug777; wire a; modport master (input a); modport slave (output a); endinterface module bug777 (clk, ifport); input clk; if_bug777 ifport (); if_bug777.mp ifportmp; //if_bug777.mp ifportmp (); // Not legal // Currently unsupported, parens required so VP knows is instance //if_bug777 ifport; endmodule module bug778 (); virtual if_bug777.master bar; endmodule class cls778; virtual if_bug777.master bar; endclass : cls778; module bug810 #( /*parameter*/ int unsigned DW = 32); endmodule interface test_if (input clk); endinterface module bug815 ( test_if bad[2]); endmodule module bug868 (ifmp); if_bug777.master ifmp; endmodule Verilog-Perl-3.418/verilog/inc_nonl.v0000644000177100017500000000011612113776231017451 0ustar wsnyderwsnyder// The lack of a newline on the next line is intentional blah-no-newline-here>Verilog-Perl-3.418/verilog/v_hier_subsub.v0000644000177100017500000000053112113776231020512 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. module v_hier_subsub (/*AUTOARG*/ // Outputs q, // Inputs a ); parameter IGNORED = 0; input signed a; output q; wire q = a; endmodule Verilog-Perl-3.418/verilog/v_recursive.v0000644000177100017500000000025312564742461020220 0ustar wsnyderwsnydermodule v_recursive (); parameter DEPTH = 1; generate if (DEPTH > 1) begin : rec v_recursive #(.DEPTH(DEPTH-1)) recurse (); end endgenerate endmodule Verilog-Perl-3.418/verilog/v_sv_pgm.v0000644000177100017500000000034112564742372017503 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2009-2012 by Wilson Snyder. program v_sv_pgm; int in_pgm; endprogram Verilog-Perl-3.418/verilog/t_86_vhier_tick_sub.v0000644000177100017500000000031712113776231021515 0ustar wsnyderwsnyder// DESCRIPTION: Verilog::Preproc: Example source code // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. module t_86_vhier_tick_sub; endmodule Verilog-Perl-3.418/verilog/v_hier_top.v0000644000177100017500000000173412502141706020012 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. `define hsub v_hier_sub module v_hier_top (/*AUTOARG*/ // Inputs clk ); input clk; /* pragma jsc_clk */ defparam sub.FROM_DEFPARAM = 2; `hsub sub (/*AUTOINST*/ // Outputs .qvec (qvec[3:0]), // Inputs .clk (1'b0), .avec ({avec[3],avec[2:0]})); missing missing (); v_recursive #(.DEPTH(3)) recursive (); // Width checks, bug65 wire WC_w1; wire [0:0] WC_w1b; wire [2:0] WC_w3; wire [-1:2] WC_w4; localparam WC_p32=0; localparam [0:0] WC_p1=0; localparam [2:0] WC_p3=0; localparam [-1:2] WC_p4=0; localparam integer WC_pint=0; // Assignments wire asn_clk; assign asn_clk = clk; endmodule localparam GLOBAL_PARAM = 1; // Local Variables: // eval:(verilog-read-defines) // End: Verilog-Perl-3.418/verilog/t_80_foo.v0000644000177100017500000000047312113776231017275 0ustar wsnyderwsnyder// DESCRIPTION: Verilog::Preproc: Example source code // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2012-2012 by Wilson Snyder. // // Test -F option in vppreproc. // This is the top level module. module foo(output wire y, input wire x); bar i_bar(y, x); endmodule // foo Verilog-Perl-3.418/verilog/v_hier_top2.v0000644000177100017500000000070512113776231020076 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. module v_hier_top2 (/*AUTOARG*/ // Inputs clk ); input clk; v_hier_noport noport (); inout [2:0] iosig/* synthesis useioff = 1 //*synthesis fpga_attr = "BLAH=ON"//* synthesis fpga_pin = "A22"*/;/* synthesis aftersemi*/ // NetListName=F12_IO endmodule Verilog-Perl-3.418/verilog/v_hier_subprim.v0000644000177100017500000000106512474756752020713 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. // surefire lint_off UDPUNS primitive v_hier_prim (/*AUTOARG*/ // Outputs q, // Inputs a ); output q; input a; table 0 : 1; 1 : 0; endtable endprimitive `celldefine module bug27070(); `define W 4 parameter TAP = `W'b1001; endmodule `endcelldefine `celldefine module bug893(); reg r; initial r <=#1 '0; endmodule `endcelldefine Verilog-Perl-3.418/verilog/v_sv_intf.v0000644000177100017500000000062712113776231017656 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2009-2012 by Wilson Snyder. `include "v_sv_pkg.v" interface v_sv_intf; v_sv_pkg::byte_t byte_port; v_sv_intf2 subintf(.*); endinterface interface v_sv_intf2; v_sv_pkg::byte_t byte_port; modport Master(input data, output addr); endinterface Verilog-Perl-3.418/verilog/test.v0000644000177100017500000000074112113776231016635 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. // ENCRYPT_ME module example (/*AUTOARG*/ // Outputs z, // Inputs a, b ); // See http://www.veripool.org // for what AUTOARG and friends can do for you! /*Comment // test*/ // input a; input b; output z; wire result = a|b; wire z = result; endmodule Verilog-Perl-3.418/verilog/inc_def09.v0000644000177100017500000000341412113776231017416 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Verilog Test module // // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2009 by Wilson Snyder. `undefineall // Definitions as speced // Note there are trailing spaces, which spec doesn't show properly `define D(x,y) initial $display("start", x , y, "end"); '`D( "msg1" , "msg2" )' 'initial $display("start", "msg1" , "msg2" , "end");' '`D( " msg1", )' 'initial $display("start", " msg1" , , "end");' '`D(, "msg2 ")' 'initial $display("start", , "msg2 ", "end");' '`D(,)' 'initial $display("start", , , "end");' '`D( , )' 'initial $display("start", , , "end");' //`D("msg1") // ILLEGAL: only one argument //`D() // ILLEGAL: only one empty argument //`D(,,) // ILLEGAL: more actual than formal arguments // Defaults: `define MACRO1(a=5,b="B",c) $display(a,,b,,c); '`MACRO1 ( , 2, 3 )' '$display(5,,2,,3);' '`MACRO1 ( 1 , , 3 )' '$display(1 ,,"B",,3 );' '`MACRO1 ( , 2, )' '$display(5,,2,,);' //`MACRO1 ( 1 ) // ILLEGAL: b and c omitted, no default for c `define MACRO2(a=5, b, c="C") $display(a,,b,,c); '`MACRO2 (1, , 3)' '$display(5,,,,"C");' '`MACRO2 (, 2, )' '$display(5,,2,,"C");' '`MACRO2 (, 2)' '$display(5,,2,,"C");' `define MACRO3(a=5, b=0, c="C") $display(a,,b,,c); '`MACRO3 ( 1 )' '$display(1 ,,0,,"C");' '`MACRO3 ( )' '$display(5,,0,,"C");' //`MACRO3 // ILLEGAL: parentheses required `define DTOP(a,b) a + b '`DTOP( `DTOP(b,1), `DTOP(42,a) )' 'b + 1 + 42 + a' // Local tests `define MACROQUOTE(a="==)",b="((((",c=() ) 'a b c' `MACROQUOTE(); '"==)" "((((" () '; // Also check our line counting doesn't go bad `define MACROPAREN(a=(6), b=(eq=al), c) 'a b c' `MACROPAREN( ,, ZOT) HERE-`__LINE__ - Line71 //====================================================================== Verilog-Perl-3.418/verilog/test.vrename0000644000177100017500000000066012654236555020037 0ustar wsnyderwsnyder# DESCRIPTION: vrename: For test.pl testing of vrename # # Copyright 2000-2016 by Wilson Snyder. This program is free software; # you can redistribute it and/or modify it under the terms of either the GNU # Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. ###################################################################### sigren "a" "or_term_1" sigren "b" "or_term_2" sigren "z" "ored_output" Verilog-Perl-3.418/verilog/v_sv_mod.v0000644000177100017500000000072712113776231017476 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2009-2012 by Wilson Snyder. `include "v_sv_pkg" interface sv_if_ported (input clk); endinterface module v_sv_mod (v_sv_intf intf, input clk); // Import types import v_sv_pkg::*; // Internal interface (unconnected) sv_if_ported if_ported(.clk(clk)); // Grab a program v_sv_pgm pgm(); endmodule Verilog-Perl-3.418/verilog/v_sv_pkg.v0000644000177100017500000000045312113776231017474 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2009-2012 by Wilson Snyder. `ifndef _V_SV_PKG_ `define _V_SV_PKG_ package v_sv_pkg; typedef logic [7:0] byte_t; endpackage `endif // guard Verilog-Perl-3.418/verilog/v_v2k.v0000644000177100017500000000070212113776231016702 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2006-2012 by Wilson Snyder. module v_v2k #(parameter WIDTH = 16) ( input clk, input rst, input [WIDTH:0] sig1, output reg [WIDTH:0] sig2 ); always @(clk) begin if (rst) begin sig2 <= #1 0; end else begin sig2 <= #1 sig1; end end endmodule Verilog-Perl-3.418/verilog/t_80_foo.f0000644000177100017500000000005512113776231017251 0ustar wsnyderwsnyderverilog/t_80_foo.v -F verilog/t_80_bar/bar.f Verilog-Perl-3.418/verilog/t_preproc_inc3.vh0000644000177100017500000000070212113776231020734 0ustar wsnyderwsnyder`line 2 "inc3_a_filename_from_line_directive" 0 // DESCRIPTION: Verilog::Preproc: Example source code // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. `ifndef _EXAMPLE_INC2_V_ `define _EXAMPLE_INC2_V_ 1 `define _EMPTY // FOO At file `__FILE__ line `__LINE__ `else `error "INC2 File already included once" `endif // guard `ifdef not_defined `include "NotToBeInced.v" `endif Verilog-Perl-3.418/verilog/pli.v0000644000177100017500000000207312113776231016442 0ustar wsnyderwsnyder// DESCRIPTION: Example pli file for vpassert program // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. `timescale 1ns/1ns module pli; // A module called PLI is required, to contain the error counts // This is required with the vpassert --nostop option, which this example uses // By default (--stop), this file isn't needed at all integer errors; initial errors = 0; integer warnings; initial warnings = 0; // Normally this would be 0 at startup, then become 1 after reset deasserts // This prevents false assertion checks during reset integer message_on; initial message_on = 1; always @ (errors or warnings) begin `ifdef OPTIONAL_EXIT_ON_WARNING if (errors!=0 || warnings!=0) begin $uinfo (0, "Errors/warnings found, exiting!\n"); $finish; end `else if (errors!=0) begin $uinfo (0, "Errors found, exiting!\n"); $finish; end else if (warnings!=0) begin $uinfo (0, {"Warnings found, ","consider stopping!\n"}); end `endif end endmodule Verilog-Perl-3.418/verilog/inc2.v0000644000177100017500000000035112113776231016506 0ustar wsnyderwsnyder// DESCRIPTION: Verilog::Preproc: Example source code // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. At file `__FILE__ line `__LINE__ `include Verilog-Perl-3.418/verilog/inc1.v0000644000177100017500000003724212523006671016515 0ustar wsnyderwsnyder// DESCRIPTION: Verilog::Preproc: Example source code // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. text. //=========================================================================== // Includes //=========================================================================== // Defines `define DEF_A3 `define DEF_A1 // DEF_A0 set by command line wire [3:0] q = { `ifdef DEF_A3 1'b1 `else 1'b0 `endif , `ifdef DEF_A2 1'b1 `else 1'b0 `endif , `ifdef DEF_A1 1'b1 `else 1'b0 `endif , `ifdef DEF_A0 1'b1 `else 1'b0 `endif }; text. `define FOOBAR foo /*this */ bar /* this too */ `define FOOBAR2 foobar2 // but not `FOOBAR `FOOBAR2 `define MULTILINE first part \ second part \ third part `define MOREMULTILINE {\ a,\ b,\ c} /*******COMMENT*****/ `MULTILINE `MOREMULTILINE Line_Preproc_Check `__LINE__ //=========================================================================== `define syn_negedge_reset_l or negedge reset_l `define DEEP deep `define DEEPER `DEEP `DEEP `DEEPER `define nosubst NOT_SUBSTITUTED `define WITHTICK "`nosubst" "Inside: `nosubst" `WITHTICK `define withparam(a, b) a b LLZZ a b `withparam(x,y) `withparam(`withparam(p,q),`withparam ( r , s )) `withparam(firstline , comma","line) `define withquote(a, bar) a bar LLZZ "a" bar `withquote( x , y) // Simulators disagree here; some substitute "a" others do not `define noparam (a,b) `noparam(a,b) `define msg(x,y) `"x: `\`"y`\`"`" $display(`msg(left side, right side)) `define foo(f) f``_suffix `foo(bar) more `define zap(which) \ $c("Zap(\"",which,"\");"); `zap(bug1); `zap("bug2"); /* Define inside comment: `DEEPER and `WITHTICK */ // More commentary: `zap(bug1); `zap("bug2"); //====================================================================== // display passthru `define ls left_side `define rs right_side `define noarg na `define thru(x) x `define thruthru `ls `rs // Doesn't expand `define msg(x,y) `"x: `\`"y`\`"`" initial begin //$display(`msg( \`, \`)); // Illegal $display(`msg(pre `thru(thrupre `thru(thrumid) thrupost) post,right side)); $display(`msg(left side,right side)); $display(`msg( left side , right side )); $display(`msg( `ls , `rs )); $display(`msg( `noarg , `rs )); $display(`msg( prep ( midp1 `ls midp2 ( outp ) ) , `rs )); $display(`msg(`noarg,`noarg`noarg)); $display(`msg( `thruthru , `thruthru )); // Results vary between simulators $display(`msg(`thru(),)); // Empty $display(`msg(`thru(left side),`thru(right side))); $display(`msg( `thru( left side ) , `thru( right side ) )); $display(`"standalone`"); // Unspecified when the stringification has multiple lines `define twoline first \ second $display(`msg(twoline, `twoline)); //$display(`msg(left side, \ right side \ )); // Not sure \{space} is legal. $write("*-* All Finished *-*\n"); $finish; end endmodule //====================================================================== // rt.cpan.org bug34429 `define ADD_UP(a,c) \ wire tmp_``a = a; \ wire tmp_``c = tmp_``a + 1; \ assign c = tmp_``c ; module add1 ( input wire d1, output wire o1); `ADD_UP(d1,o1) // expansion is OK endmodule module add2 ( input wire d2, output wire o2); `ADD_UP( d2 , o2 ) // expansion is bad endmodule `define check(mod, width, flopname, gate, path) \ generate for (i=0; i<(width); i=i+1) begin \ psl cover { path.d[i] & ~path.q[i] & !path.cond & (gate)} report `"fondNoRise: mod.flopname`"; \ psl cover { ~path.d[i] & path.q[i] & !path.cond & (gate)} report `"fondNoFall: mod.flopname`"; \ end endgenerate // parameterized macro with arguments that are macros `define MK m5k.f `define MF `MK .ctl `define CK_fr (`MF.alive & `MF.alive_m1) `check(m5kc_fcl, 3, _ctl_mvldx_m1, `CK_fr, `MF._ctl_mvldx_m1) // ignorecmt //====================================================================== // Quotes are legal in protected blocks. Grr. module prot(); `protected I!#r#e6<_Q{{E2+]I3<[3s)1@D|'E''i!O?]jD>Jo_![Cl) #nj1]p,3^1~,="E@QZB\T)eU\pC#C|7=\$J$##A[@-@{Qk] `endprotected endmodule //" //====================================================================== // macro call with define that has comma `define REG_H 6 `define REG_L 7 `define _H regs[`REG_H] `define _L regs[`REG_L] `define _HL {`_H, `_L} `define EX_WRITE(ad, da) begin addr <= (ad); wdata <= (da); wr <= 1; end `define EX_READ(ad) begin addr <= (ad); rd <= 1; end `EX_READ((`_HL + 1)) and `EX_WRITE((`_HL), rdata) `EX_READ(`_HL + 1) `EX_WRITE(`_HL, rdata) more //====================================================================== // include of parameterized file `define INCNAME "t_preproc_inc4.vh" `include `INCNAME `ifndef T_PREPROC_INC4 `error "No Inc4" `endif `undef T_PREPROC_INC4 `ifdef NOT_DEFINED_INC `include NOT_DEFINED_INC `endif //====================================================================== // macro call with , in {} `define xxerror(logfile, msg) $blah(logfile,msg) `xxerror("ab,cd","e,f"); `xxerror(this.logfile, vec); `xxerror(this.logfile, vec[1,2,3]); `xxerror(this.logfile, {blah.name(), " is not foo"}); //====================================================================== // pragma/default net type `pragma foo = 1 `default_nettype none `default_nettype uwire //====================================================================== // Ifdef `define EMPTY_TRUE `ifndef EMPTY_TRUE `error "Empty is still true" `endif Line_Preproc_Check `__LINE__ //====================================================================== // bug84 `define ARGPAR(a, // Hello, comments MIGHT not be legal /*more,,)cmts*/ b // But newlines ARE legal... who speced THAT? ) (a,b) `ARGPAR(p,q) `ARGPAR( //Here x, y //Too ) Line_Preproc_Check `__LINE__ //====================================================================== // defines split arguments `define BEGIN begin `define END end `define BEGINEND `BEGIN`END `define quoteit(x) `"x`" `BEGIN`END // 2001 spec doesn't require two tokens, so "beginend" ok `BEGINEND // 2001 spec doesn't require two tokens, so "beginend" ok `quoteit(`BEGIN`END) // No space "beginend" //====================================================================== // bug106 `define \esc`def got_escaped `ifdef \esc`def `\esc`def `endif Not a \`define //====================================================================== // misparsed comma in submacro `define sb bee `define appease_emacs_paren_matcher ( `define sa(l) x,y) `define sfoo(q,r) q--r `sfoo(`sa(el),`sb) submacro has comma paren //====================================================================== // bug191 `define bug191(bits) $display("bits %d %d", $bits(foo), bits); `bug191(10) //====================================================================== // 1800-2009 `define UDALL `ifndef PREDEF_COMMAND_LINE `error "Test setup error, PREDEF_COMMAND_LINE pre-missing" `endif `undefineall `ifdef UDALL `error "undefineall failed" `endif `ifndef PREDEF_COMMAND_LINE `error "Deleted too much, no PREDEF_COMMAND_LINE" `endif //====================================================================== // bug202 `define FC_INV3(out, in) \ `ifdef DC \ cell \inv_``out <$typeof(out)> (.a(), .o()); \ /* multi-line comment \ multi-line comment */ \ `else \ `ifdef MACRO_ATTRIBUTE \ (* macro_attribute = `"INV (out``,in``)`" *) \ `endif \ assign out = ~in ; \ `endif `FC_INV3(a3,b3) `define /* multi \ line1*/ \ bug202( i /*multi \ line2*/ \ ) \ /* multi \ line 3*/ \ def i \ `bug202(foo) //====================================================================== `define CMT1 // verilator NOT IN DEFINE `define CMT2 /* verilator PART OF DEFINE */ `define CMT3 /* verilator NOT PART OF DEFINE */ `define CMT4 /* verilator PART \ OF DEFINE */ `define CMT5 // CMT NOT \ also in // BUT TEXT IS \ also3 // CMT NOT 1 `CMT1 (nodef) 2 `CMT2 (hasdef) 3 `CMT3 (nodef) 4 `CMT4 (nodef) 5 `CMT5 (nodef) `define NL HAS a NEW \ LINE `NL //====================================================================== `define msg_fatal(log, msg) \ do \ /* synopsys translate_off */ \ `ifdef NEVER \ `error "WTF" \ `else \ if (start(`__FILE__, `__LINE__)) begin \ `endif \ message(msg); \ end \ /* synopsys translate_on */ \ while(0) `define msg_scen_(cl) cl``_scen `define MSG_MACRO_TO_STRING(x) `"x`" EXP: clxx_scen `msg_scen_(clxx) EXP: clxx_scen `MSG_MACRO_TO_STRING(`msg_scen_(clxx)) `define mf(clx) `msg_fatal(this.log, {"Blah-", `MSG_MACRO_TO_STRING(`msg_scen_(clx)), " end"}); EXP: do if (start("verilog/inc1.v", 25)) begin message({"Blah-", "clx_scen", " end"}); end while(0); `mf(clx) //====================================================================== `define makedefine(name) \ `define def_``name This is name \ `define def_``name``_2 This is name``_2 \ `makedefine(fooed) `ifndef def_fooed `error "No def_fooed" `endif //`ifndef def_fooed_2 `error "No def_fooed_2" `endif EXP: This is fooed `def_fooed EXP: This is fooed_2 `def_fooed_2 //====================================================================== `define NOPARAM() np `NOPARAM() `NOPARAM( ) //====================================================================== // It's unclear if the spec allows this; is text_macro_idenitfier before or after substitution? `define NODS_DEFINED `define NODS_INDIRECT(x) x `ifndef `NODS_INDIRECT(NODS_DEFINED) `error "Indirect failed" `endif `ifdef `NODS_INDIRECT(NODS_UNDEFINED) `error "Indirect2 failed" `endif //====================================================================== // Metaprogramming `define REPEAT_0(d) `define REPEAT_1(d) d `define REPEAT_2(d) `REPEAT_1(d)d `define REPEAT_3(d) `REPEAT_2(d)d `define REPEAT_4(d) `REPEAT_3(d)d `define CONCAT(a, b) a``b `define REPEATC(n, d) `CONCAT(`REPEAT_, n)(d) `define REPEATT(n, d) `REPEAT_``n(d) `REPEATC(3, hello3 ) `REPEATT(4, hello4 ) //====================================================================== // Include from stringification `undef T_PREPROC_INC4 `define NODS_CONC_VH(m) `"m.vh`" `include `NODS_CONC_VH(t_preproc_inc4) `ifndef T_PREPROC_INC4 `error_here `endif //====================================================================== // Defines doing defines // Note the newline on the end - required to form the end of a define `define DEFINEIT(d) d \ `define _DEFIF_Z_0 1 `define DEFIF_NZ(d,n) `undef d `ifndef _DEFIF_Z_``n `DEFINEIT(`define d 1) `endif `DEFIF_NZ(TEMP,1) `ifndef TEMP `error "bad1" `endif `DEFIF_NZ(TEMP,0) `ifdef TEMP `error "bad0" `endif Line_Preproc_Check `__LINE__ //====================================================================== // Quoted multiline - track line numbers, and insure \\n gets propagated `define MULQUOTE "FOO \ BAR " `define MULQUOTE2(mq) `MULQUOTE mq `MULQUOTE Line_Preproc_Check `__LINE__ `MULQUOTE2("arg_line1 \ arg_line2") Line_Preproc_Check `__LINE__ //====================================================================== // bug283 `define A a `define B b `define C c // EXP: abc `define C5 `A``b```C `C5 `undef A `undef B `undef C `define XTYPE sonet `define XJOIN(__arg1, __arg2) __arg1``__arg2 `define XACTION `XJOIN(`XTYPE, _frame) EXP: sonet_frame `XACTION // `define XFRAME frame `define XACTION2 `XJOIN(sonet_, `XFRAME) EXP: sonet_frame `XACTION2 // This result varies between simulators `define sonet_frame other_frame `define XACTION3 `XTYPE``_frame EXP: sonet_frame `XACTION3 // The existance of non-existance of a base define can make a difference `define QA_b zzz `define Q1 `QA``_b EXP: module zzz ; endmodule module `Q1 ; endmodule module `Q1 ; endmodule `define QA a EXP: module a_b ; endmodule module `Q1 ; endmodule module `Q1 ; endmodule //====================================================================== // bug311 integer/*NEED_SPACE*/foo; //====================================================================== synth_test: // synopsys translate_off synthesis_turned_off // synthesis translate_on EXP: on //====================================================================== // bug441 module t; //----- // case provided // note this does NOT escape as suggested in the mail `define LEX_CAT(lexem1, lexem2) lexem1``lexem2 `define LEX_ESC(name) \name \ initial begin : `LEX_ESC( `LEX_CAT(a[0],_assignment) ) $write("GOT%%m='%m' EXP='%s'\n", "t.\\`LEX_CAT(a[0],_assignment) "); end //----- // SHOULD(simulator-dependant): Backslash doesn't prevent arguments from // substituting and the \ staying in the expansion // Note space after name is important so when substitute it has ending whitespace `define ESC_CAT(name,name2) \name``_assignment_``name2 \ initial begin : `ESC_CAT( a[0],a[1] ) $write("GOT%%m='%m' EXP='%s'\n", "t.\\a[0]_assignment_a[1] "); end `undef ESC_CAT //----- `define CAT(a,b) a``b `define ESC(name) \`CAT(name,suffix) // RULE: Ignoring backslash does NOT allow an additional expansion level // (Because ESC gets expanded then the \ has it's normal escape meaning) initial begin : `ESC(pp) $write("GOT%%m='%m' EXP='%s'\n", "t.\\`CAT(pp,suffix) "); end `undef CAT `undef ESC //----- `define CAT(a,b) a``b `define ESC(name) \name \ // Similar to above; \ does not allow expansion after substitution initial begin : `ESC( `CAT(ff,bb) ) $write("GOT%%m='%m' EXP='%s'\n", "t.\\`CAT(ff,bb) "); end `undef CAT `undef ESC //----- `define ESC(name) \name \ // MUST: Unknown macro with backslash escape stays as escaped symbol name initial begin : `ESC( `zzz ) $write("GOT%%m='%m' EXP='%s'\n", "t.\\`zzz "); end `undef ESC //----- `define FOO bar `define ESC(name) \name \ // SHOULD(simulator-dependant): Known macro with backslash escape expands initial begin : `ESC( `FOO ) $write("GOT%%m='%m' OTHER_EXP='%s'\n OUR_EXP='%s'", "t.bar ","t.\\`FOO "); end // SHOULD(simulator-dependant): Prefix breaks the above initial begin : `ESC( xx`FOO ) $write("GOT%%m='%m' EXP='%s'\n", "t.\\xx`FOO "); end `undef FOO `undef ESC //----- // MUST: Unknown macro not under call with backslash escape doesn't expand `undef UNKNOWN initial begin : \`UNKNOWN $write("GOT%%m='%m' EXP='%s'\n", "t.\\`UNKNOWN "); end //----- // MUST: Unknown macro not under call doesn't expand `define DEF_NO_EXPAND error_dont_expand initial begin : \`DEF_NO_EXPAND $write("GOT%%m='%m' EXP='%s'\n", "t.\\`DEF_NO_EXPAND "); end `undef DEF_NO_EXPAND //----- // bug441 derivative // SHOULD(simulator-dependant): Quotes doesn't prevent arguments from expanding (like backslashes above) `define STR(name) "foo name baz" initial $write("GOT='%s' EXP='%s'\n", `STR(bar), "foo bar baz"); `undef STR //----- // RULE: Because there are quotes after substituting STR, the `A does NOT expand `define STR(name) "foo name baz" `define A(name) boo name hiss initial $write("GOT='%s' EXP='%s'\n", `STR(`A(bar)), "foo `A(bar) baz"); `undef A `undef STR //---- // bug845 `define SLASHED "1//2.3" initial $write("Slashed=`%s'\n", `SLASHED); //---- // bug915 `define BUG915(a,b,c) \ $display("%s%s",a,`"b``c``\n`") initial `BUG915("a1",b2,c3); endmodule //====================================================================== // IEEE mandated predefines `undefineall // undefineall should have no effect on these predef `SV_COV_START 0 predef `SV_COV_STOP 1 predef `SV_COV_RESET 2 predef `SV_COV_CHECK 3 predef `SV_COV_MODULE 10 predef `SV_COV_HIER 11 predef `SV_COV_ASSERTION 20 predef `SV_COV_FSM_STATE 21 predef `SV_COV_STATEMENT 22 predef `SV_COV_TOGGLE 23 predef `SV_COV_OVERFLOW -2 predef `SV_COV_ERROR -1 predef `SV_COV_NOCOV 0 predef `SV_COV_OK 1 predef `SV_COV_PARTIAL 2 Verilog-Perl-3.418/verilog/t_80_bar/0000755000177100017500000000000012654236646017076 5ustar wsnyderwsnyderVerilog-Perl-3.418/verilog/t_80_bar/bar.v0000644000177100017500000000042712113776231020021 0ustar wsnyderwsnyder// DESCRIPTION: Verilog::Preproc: Example source code // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2012-2012 by Wilson Snyder. // // Test -F option in vppreproc. module bar(output wire y, input wire x); assign y = x; endmodule // bar Verilog-Perl-3.418/verilog/t_80_bar/bar.f0000644000177100017500000000000612113776231017772 0ustar wsnyderwsnyderbar.v Verilog-Perl-3.418/verilog/t_86_vhier_tick.v0000644000177100017500000000043412113776231020644 0ustar wsnyderwsnyder// DESCRIPTION: Verilog::Preproc: Example source code // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. module t_86_vhier_tick; `define t_86_vhier_tick_sub FOOBAR_NOT_FOUND t_86_vhier_tick_sub sub (); endmodule Verilog-Perl-3.418/verilog/v_gate.v0000644000177100017500000000023012074262445017117 0ustar wsnyderwsnydermodule buffer ( output Z, input A); buf u_buf(Z, A); endmodule module gate ( output Z, input A); buffer u_buf(Z, A); endmodule Verilog-Perl-3.418/verilog/t_preproc_inc4.vh0000644000177100017500000000030012113776231020727 0ustar wsnyderwsnyder// DESCRIPTION: Verilog::Preproc: Example source code // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2000-2012 by Wilson Snyder. `define T_PREPROC_INC4 Verilog-Perl-3.418/verilog/pinorder.v0000644000177100017500000000165512113776231017505 0ustar wsnyderwsnyder// DESCRIPTION: Verilog-Perl: Example Verilog for testing package // // This file ONLY is placed into the Public Domain, for any use, // without warranty, 2003 by Wilson Snyder. module pinorder4(); wire b_i; wire d_o; wire [7:0] a_i; wire [31:0] IPCD_const = 32'h1; assign a_i = 0; assign b_i = 0; foo foo1( .y(b_i), .x(a_i), .abcconst(3'h0), .noconnect(), .def(IPCD_const)); foo foo3( b_i, a_i, 3'h0, , IPCD_const); foo2 foo2( b_i, a_i[0], d_o); endmodule module foo2(/*AUTOARG*/ // Outputs x, // Inputs z, y ); input z; input y; output x; reg x; always @(z or y) x = z & y; endmodule module foo (/*AUTOARG*/ // Inputs y, x, abcconst, noconnect, def ); input y; input x; input [2:0] abcconst; input signed [3:0] noconnect; input [31:0] def; endmodule module bug278 ( output wire ow, inout wire iow, input wire iw); endmodule Verilog-Perl-3.418/verilog/parser_bugs.v0000644000177100017500000002537512564742461020214 0ustar wsnyderwsnyder// Not legal: // end : ADDRESS_TEST_BLOCK // See 9.8.1 // `define at EOF with no newline module bug26141 (); wire [0:3] b; wire a = b[2]; endmodule module bug26940 (); (* attribute *) assign q = {1'b0,a} +{1'b0,b}; adder u_add (.q(q),.a(d),.b(d)); initial begin # 1; q=0; if (q!=0) $stop; end endmodule module bug26968 (); reg [4:0] vect = 5'b10100; wire [4:0] tmp = { vect[0], vect[1], vect[2], vect[3], vect[4] }; initial begin #1 $display("vect=%b, tmp=%b", vect, tmp); end endmodule module bug26969 (input [31:0] ad, output [15:0] regff, input [31:0] read); bufif0 ad_drv [31:0] (ad, {16'b0, regff}, read); endmodule module bug26970; parameter A = 2'b1, B = 3'b0; parameter x = {B,B,B,A,A,B}; endmodule module bug26997; MUX_REG_8x8 PAGE_REG_B3 ( .CLK (CLK), /* .IN (DATA_RES[31:24]), .OUT (PAGE[31:24]), .EN_IN (EN_B3), .EN_OUT (PAGE_SEL), */ .TC (), .TD (), .TQ ()); endmodule module bug27013; submod u1(0); submod u2(1); endmodule module bug27036; reg [2:0] a_fifo_cam_indices[3:0], lt_fifo_cam_indices[5:0]; wire [2:0] db0_a_fifo_cam_indices = a_fifo_cam_indices[0]; endmodule module bug27037; reg mem[12:2]; reg [7:0] i; endmodule module bug27039; integer i; endmodule module bug27045( input clk, input reset, input [7:0] d, output reg [7:0] q ); parameter REG_DELAY = 0; always @(posedge clk or posedge reset) q <= #(REG_DELAY*2) d; endmodule module bug27062 (input D, output Q); p(Q, D); endmodule `timescale 1ns/1ns module bug27066; integer i; time t; realtime rt; function integer toint; input integer y; input [15:0] x; toint = x|y; endfunction endmodule module bug27067; initial $monitor( "%T %b %b %b", $time, clk1, clko1, clko2 ); initial forever @( negedge clk1 ) dclk1ff <= #50 ~ dclk1ff; endmodule module bug27072( output reg sum, input wire ci); endmodule `resetall module spec; specify specparam Tac = 0.1, Tcs = 0.2; if ( !B & !M ) ( posedge CLK => ( Q[0] : 1'bx )) = ( Tac, Tcs ); $width (negedge CLK &&& EN, Tac, 0, notif_clk); ( in1 => q ) = (3, 4); ( in1 +=> q ) = Tac; ( a, b, c *> q1, q2) = 10; ( s +*> q ) = Tcs; endspecify endmodule module bugevent; event e; initial ->e; always @ (e && e) $write("Legal\n"); endmodule module bugio (input [31:0] a, a2, output [15:0] o, o2, input ibit); endmodule module buglocal; always #(cyclehalf) begin clk <= ~clk; end always @(*) begin end initial force flag = 0; initial #(delta+0.5) CLRN <= 1; assign (weak0,weak1) VDD=1'b0; assign (weak0,weak1) VSS=1'b1; wire [71:0] #1 xxout = xxin; initial #1000_000 $finish; initial $display($time,,"Double commas are stupid"); initial for (counter[3:0] = 4'h0; counter[3:0] < limit[3:0]; counter[3:0] = counter[3:0] + 4'h1) $write(); always @(posedge(clk && !xclk) or negedge(clk && xclk) or reset) $write(); nmos # (PullTime, PullTime, 0) (PT,PU,1'b1); pulldown (strong0) pullinst (r); defparam x.y.z.PAR = 1; cdrv #5.0 clk(clk); initial PI = 3.1415926535_8979323846; always val = @ eventid 1'h1; always dly = # (2:3:4) 5'h6 ; wire \33escapeneeded = 1'b1; wire \33escapenewlineend = 1'b1; wire \noescapenewlineend = 1'b1; wire \noescapespaceend = 1'b1; endmodule module v2kparam #(parameter WIDTH = 1, parameter LENGTH = 1, LENGTH2 = 1) (output [WIDTH-1:0] myout, input [LENGTH-1:0] myin, myinb ); assign myout = myin ^ myinb ^ $callemptyparens(); endmodule module foreqn (in); input [1:0] in; reg a,b; reg [1:0] c; always for ({a,c[0]} = in; a < 1'b1; {b,c[1]} = in) begin end always for ({a,c[in]} = 0; a < 1'b1; {b,c[in]} = 2'b10) begin end endmodule module colonslash; always @* case (cond&4'b1110) 'h0://Error t = 7; 'h2:/*Another comment*/ t = 6; 'h4: t = 5; endcase endmodule module enums; enum {red, yellow, green} light; enum integer {IDLE, XX='x, S1='b01, S2='b10} state, next; enum {bronze=3, silver, gold} medal; enum { add=10, sub[5], jmp[6:8] } E1; typedef enum {NOPE, YUP} boolean; enum logic [1:0] {IDLE, DIR} STATE, NSTATE; endmodule module invec ( output logic novec, output logic [7:0] range, output logic [1:0] [7:0] arrayAndRange, output logic [2:0] [1:0] [7:0] arrayAndArrayAndRange, output reg signed novec2 ); endmodule module bug34575; wire a,b,c,d; assign #(0,0) a = 1; assign #(0:1:2) b = 1; assign #(0:1:2,0:1:2) c = 1; assign #(0:1:2,0) d = 1; endmodule module bug34649 (name); output reg name = 0; endmodule module bug34649b ( output reg name = 0 ); endmodule module bug10; initial begin x += 1; x -= 1; x /= 1; x *= 1; x |= 1; x ^= 1; x <<= 1; x >>= 1; x <<<= 1; x >>>= 1; y = x++; // Part of expression y = ++x; y = x--; y = --x; x++; // Statement ++x; x--; --x; end endmodule module bug33; integer i; initial begin unique case (i) endcase priority case (i) endcase if (i) begin end else begin end end endmodule module bug16; timeunit 0.1ns; timeprecision 1ns; endmodule parameter bug39 = 0; `default_nettype none `pragma foo = bar `default_nettype wire module bug64; parameter integer a=1,b=2; parameter real c=3.0; parameter realtime d=4.0; parameter time e=5.0; endmodule module bug166; assign {{o1,o2},o3,o4,{o5,o6}} = {{i1,i2},i3,i4,{i5,i6}}; endmodule module coverage20090318; task atask; begin end endtask endmodule module svsig; function int count (input logic [3:0] d); automatic int count = d[0]+d[1]+d[2]+d[3]; for (int i=0; i<4; i++) begin if (d[i]) count++; end return (count); endfunction task automatic autoconst; const int CONS = 8; $display("CONS=%x\n", CONS); $display("Another stmt\n"); endtask endmodule module bug_empty_func_param; //function int intfunc(int a=0, b=1); // return a+b; //endfunction always_comb begin foo = funccall(); foo = intfunc(a, b); foo = intfunc(a, .b(b)); foo = intfunc(.b(b), .a(a)); end endmodule module dotted_funcs; initial ram.dotTask(addr[31:0],ramdata); // Call task initial zz = ram.a.dotFunc(foo); // Call function endmodule module var_only_in_block; initial begin : named integer only_a_var_in_blk; end endmodule module v2k_vec_no_vec ( input [2:0] VEC, VEC2, // No direction, no port, no data type; inherits input NOVEC, // No direction, no data type; use `default_nettype input ARY [1:0], NOARY2, // Array doesn't inherit logic STILL_IN, // No direction, data type; inherits direction input logic TYPED // Logic type ); task t (input [2:0] FVEC, FVEC2, input NOVEC); begin end endtask endmodule module bugfor; initial for (a=0;a;) begin end endmodule module bug85 #(parameter type T_DATA = byte) (data); input T_DATA data; sub #(.T_DATA( T_DATA )) sub (.data(data)); endmodule module bugmodportcomma (,a,); input a; endmodule module bug168; initial $display("\nWarning! This is a\ string with a line\ continuation\ at time %0d PS", $time); endmodule module bug183 #(parameter NUM = 9 , WIDTH = 8 ) ( input logic [NUM-1:0][WIDTH-1:0] a , output logic [WIDTH-1:0] sum ); localparam NLOG = (NUM <= 2) ? 1 : (NUM <= 1024) ? 10 : 0; typedef logic [WIDTH-1:0] val_t; val_t [NLOG:0][NUM-1:0] tree; endmodule module bug192; covergroup cg192 @(posedge cclk); count_tag_busy: coverpoint countones_tag_busy { bins count[] = {[0:DEPTH]}; } endgroup: cg192 cg192 cover_ts = new(); // also bug361 endmodule function bit func_implied_in (bit i); g_bit = ~i; endfunction module sparam; specparam delay = 10; endmodule // bug221 sequence stable_before_s(sig, clks_before, clk, rst=1'b0); @(clk) !rst throughout(##1 $stable(sig)[*clks_before-1]); endsequence : stable_before_s property stable_window(sample, sig, clks_before, clks_after, clk=$default_clk ,rst=1'b0); @(clk) disable iff(rst) ## clks_before sample |-> stable_before_s(sig, clks_before, clk, rst).ended ##1 ($stable(sig)[*clks_after]); endproperty : stable_window property never(prop, clk=$default_clk , rst=1'b0); @(clk) disable iff(rst) not(prop); endproperty : never property recur_triggers(trig, n, cond, clk=$default_clk , rst=1'b0); @(clk) disable iff (rst) not ( !cond throughout (trig ##1 trig[->(n-1)]) ); endproperty : recur_triggers property data_transfer( start_ev, start_data, end_ev, end_data, clk=$default_clk ,rst=1'b0); logic [$bits(start_data)-1:0] local_data; @(clk) disable iff (rst) (start_ev, local_data = start_data) ##0 (end_ev or (!end_ev ##1 (!start_ev throughout end_ev[->1]))) |-> (local_data == end_data); endproperty : data_transfer module bug228; wire net1, net2, net3; nmos #(0:1:10, 0:1:10, 0:1:10) u (net1, net2, net3); endmodule module bug262 ( Y, {A1, A2} , B ); output Y; input A1, A2, B; endmodule wire \wire = bug282_must_keep_escape; module bug403_bug404; // Simulators vary as to if "(* /* */ )" is legal or not (* attr *) wire foo; always @ (*) begin end always @ (* ) begin end endmodule /* multi line bug459*/ module bug422; generate endgenerate endmodule module bug461; generate genvar g; // bug461 begin : topgen genvar g2; genvar g1; for (g=0; g<100; g++) begin end for (g=0; g<100; g++) begin end end for (g=0; g<100; g++) begin end endgenerate endmodule module bug507; integer x = 32'd 6; endmodule // bug_msg_887; bind path.to.example_mod example_mod_fcov uexample_mod_fcov (.*); package bug586_pkg; parameter B = 10; endpackage module non_bug586; // Verilator only input logic [bug586_pkg::B : 0] bvar; endmodule // bug_641 import "DPI-C" function bit mydpi_bug641(input a_dpi_input); // .f() in function call module fbug; initial a = f(, 1); initial a = f(.s(1), .j(2)); initial a = f(.s(), .j()); initial a = f(2); initial a = f(); endmodule parameter bug671 = 5 : 10 : 20 ; module bug256; always @(posedge clk) begin myreg1 <= # 100 7'd0; myreg1 <= # 100 'b0; myreg1 <= # 100'b0; // [#] [100] ['b0] myreg1 <= 100'b0; end endmodule module msg1491(A,B); output A; trireg (small) A; output trireg B; endmodule Verilog-Perl-3.418/vhier0000755000177100017500000003545612654236555015110 0ustar wsnyderwsnyder#!/usr/bin/perl -w # See copyright, etc in below POD section. ###################################################################### require 5.005; use FindBin qw($RealBin); use lib "$RealBin/blib/arch"; use lib "$RealBin/blib/lib"; use lib "$RealBin"; use Getopt::Long; use IO::File; use Pod::Usage; use Verilog::Netlist; use Verilog::Getopt; use strict; use vars qw ($Debug $VERSION); $VERSION = '3.418'; ###################################################################### # main $Debug = 0; my $opt_output_filename = undef; my @opt_files; autoflush STDOUT 1; autoflush STDERR 1; # Option parsing my $Opt = new Verilog::Getopt(filename_expansion=>1); my $Opt_Cells; my $Opt_Modules; my $Opt_ModFiles; my $Opt_InFiles; my $Opt_Missing = 1; my $Opt_Missing_Modules; my $Opt_TopModule; my $Opt_ResolveFiles; my $Opt_Synthesis; my $Opt_Instance; my $Opt_Forest; my $Opt_Xml; Getopt::Long::config ("no_auto_abbrev","pass_through"); GetOptions ("debug" => \&debug); # Snarf --debug ASAP, before parse -f files @ARGV = $Opt->parameter(@ARGV); Getopt::Long::config ("no_auto_abbrev","no_pass_through"); if (! GetOptions ( "help" => \&usage, "debug" => \&debug, "o=s" => \$opt_output_filename, "cells!" => \$Opt_Cells, "module-files!" => \$Opt_ModFiles, "modules!" => \$Opt_Modules, "input-files!" => \$Opt_InFiles, "resolve-files!" => \$Opt_ResolveFiles, "sv!" => sub { shift; Verilog::Language::language_standard("1800-2012"); }, "language=s" => sub { shift; Verilog::Language::language_standard(shift); }, "missing!" => \$Opt_Missing, "missing-modules!" => \$Opt_Missing_Modules, "synthesis!" => \$Opt_Synthesis, "top-module=s" => \$Opt_TopModule, "version" => sub { print "Version $VERSION\n"; exit(0); }, "forest" => \$Opt_Forest, "instance" => \$Opt_Instance, "xml!" => \$Opt_Xml, "<>" => \¶meter, )) { die "%Error: Bad usage, try 'vhier --help'\n"; } if (!@opt_files) { die "%Error: vhier: No input filenames specified.\n"; } my $fh = IO::File->new; if ($opt_output_filename) { $fh->open(">$opt_output_filename") or die "%Error: $! $opt_output_filename\n"; } else { $fh->open(">-") or die; } vhier($fh, @opt_files); exit (0); ###################################################################### sub usage { print "Version $VERSION\n"; pod2usage(-verbose=>2, -exitval=>2, -output=>\*STDOUT, -noperldoc=>1); exit (1); } sub debug { $Debug = 1; } sub parameter { my $param = shift; if ($param =~ /^--?/) { die "%Error: vhier: Unknown parameter: $param\n"; } else { push @opt_files, "$param"; # Must quote to convert Getopt to string, bug298 } } ###################################################################### #### Creation sub vhier { my $fh = shift; my @files = @_; my $nl = new Verilog::Netlist (options => $Opt, keep_comments => 0, use_vars => 0, link_read_nonfatal => !$Opt_Missing, synthesis => $Opt_Synthesis, ); $fh->print("\n") if $Opt_Xml; if ($Opt_ResolveFiles) { $nl->read_libraries(); $fh->print(" \n") if $Opt_Xml; foreach my $file (@files) { if (my $resolved = $nl->resolve_filename ($file, "all")) { $fh->print( "$resolved\n") if !$Opt_Xml; $fh->print( " $resolved\n") if $Opt_Xml; } } $fh->print(" \n") if $Opt_Xml; return; } foreach my $file (@files) { print " Reading $file\n" if $Debug; $nl->read_file (filename=>$file); } # Read in any sub-modules $nl->link(); $nl->lint(); # Simplified as use_vars => 0 $nl->exit_if_error(); if ($Opt_TopModule) { my $topmod = $nl->find_module($Opt_TopModule) or die "%Error: --top-module '$Opt_TopModule' was not found.\n"; $topmod->is_top(1); # We could just pass this to all of the following routines, # but each would need a different edit. Instead, just edit the netlist # to contain only the specified tree. my %marked_modules; _mod_mark_recurse($nl, $topmod, \%marked_modules); foreach my $mod ($nl->modules_sorted) { if (!$marked_modules{$mod->name}) { $mod->delete; } } } if ($Opt_Cells || $Opt_Forest) { $fh->print(" \n") if $Opt_Xml; foreach my $mod ($nl->modules_sorted) { if ($mod->is_top) { my %recursing; show_hier ($fh, \%recursing, $mod, undef, " ", $mod->name); } } $fh->print(" \n") if $Opt_Xml; } if ($Opt_Modules) { show_module_names($nl, $fh); } if ($Opt_ModFiles) { show_mod_files($nl, $fh); } if ($Opt_InFiles) { $fh->print(" \n") if $Opt_Xml; foreach my $filename ($Opt->depend_files) { $fh->print(" $filename\n") if !$Opt_Xml; $fh->print(" $filename\n") if $Opt_Xml; } $fh->print(" \n") if $Opt_Xml; } if ($Opt_Missing_Modules) { show_missing_module_names($nl,$fh); } $fh->print("\n") if $Opt_Xml; } sub show_module_names { my $nl = shift; my $fh = shift; $fh->print(" \n") if $Opt_Xml; foreach my $mod ($nl->modules_sorted) { $fh->printf(" %s\n", $mod->name) if !$Opt_Xml; $fh->printf(" \n", $mod->name) if $Opt_Xml; } $fh->print(" \n") if $Opt_Xml; } sub show_missing_module_names { my $nl = shift; my $fh = shift; my %miss_names; foreach my $mod ($nl->modules) { foreach my $cell ($mod->cells_sorted) { if (!$cell->submod && !$cell->gateprim) { $miss_names{$cell->submodname} = 1; } } } $fh->print(" \n") if $Opt_Xml; foreach my $key (sort (keys %miss_names)) { $fh->printf(" %s\n",$key) if !$Opt_Xml; $fh->printf(" \n",$key) if $Opt_Xml; } $fh->print(" \n") if $Opt_Xml; } sub show_mod_files { my $nl = shift; my $fh = shift; # We'll attach a level attribute to each module indicating its maximum depth foreach my $mod ($nl->modules, $nl->interfaces) { $mod->attributes("_vhier_level", 0); } # Recurse the tree and determine level foreach my $mod ($nl->modules, $nl->interfaces) { if ($mod->is_top) { my %recursing; _mod_files_recurse($mod, 1, \%recursing); } } # Make sort key based on numeric level my %keys; foreach my $mod ($nl->modules) { # No interfaces, it's --module-files implying modules only my $key = sprintf("%03d_%s", $mod->attributes("_vhier_level"), $mod->name); $keys{$key} = $mod; } my @files; my %files; # Uniquify the array foreach my $key (sort {$b cmp $a} (keys %keys)) { my $mod = $keys{$key}; my $filename = $mod->filename; if (!$files{$filename}) { $files{$filename} = 1; push @files, [" "x($mod->attributes("_vhier_level")), $filename]; } } $fh->print(" \n") if $Opt_Xml; foreach my $filespace (reverse @files) { $fh->printf(" %s%s\n",$filespace->[0],$filespace->[1]) if !$Opt_Xml; $fh->printf(" %s%s\n",$filespace->[0],$filespace->[1]) if $Opt_Xml; } $fh->print(" \n") if $Opt_Xml; } sub _mod_mark_recurse { my $nl = shift; my $mod = shift; my $marked = shift; return if $marked->{$mod->name}++; foreach my $cell ($mod->cells_sorted) { if ($cell->submod) { _mod_mark_recurse ($nl, $cell->submod, $marked); } } } sub _mod_files_recurse { my $mod = shift; my $level = shift; my $recursing = shift; my $name = $mod->name; return if $recursing->{$name}; ++$recursing->{$name}; if (($mod->attributes("_vhier_level")||0) < $level) { $mod->attributes("_vhier_level", $level); } foreach my $cell ($mod->cells_sorted) { if ($cell->submod) { _mod_files_recurse ($cell->submod, $level+1, $recursing); } } --$recursing->{$name}; } sub show_hier { my $fh = shift; my $recursing = shift; my $mod = shift; my $parcell = shift; my $indent = shift; my $hier = shift; my $submodname = shift; # print the design hierarchy starting at mod (recursive) my $name = $mod->name; return if $recursing->{$name}; ++$recursing->{$name}; printf "%-38s %s\n", $indent."Module ".$name,$hier if $Debug; my $instance = $parcell ? $parcell->name : $name; # print the mod instance $Opt_Xml ? $fh->printf("%s\n", $indent, $parcell ? $parcell->name : $name, $name, $hier) : $Opt_Instance ? $fh->printf("%s%s %s\n", $indent, $instance, $name) : $fh->printf("%s%s\n", $indent, $name); # print the design hierarchy of each cell in mod my $i = 0; my $suffix; my @cellCount = $mod->cells_sorted; # Returns list of name sorted references to Verilog::Netlist::Cell in the module $fh->printf("\t\t%d cells_sorted for %s\n", $#cellCount+1, $name) if $Debug; my @subMods = grep($_->submod, $mod->cells_sorted); # list of submods of the current mod $fh->printf("\t\t%d submods in cells_sorted.\t", $#subMods+1) if $Debug; $fh->printf("\t\tsubmods=%s\n", join(',',map($_->name, @subMods))) if $Debug; foreach my $cell ($mod->cells_sorted) { if ($cell->submod) { # Reference to the Verilog::Netlist::Module the cell instantiates # true if the cell refers to a defined module # set the suffix characters used to indent lower level of hierarchy if ($Opt_Forest) { if ($i < $#subMods) { $suffix = "|--"; # indent chars for not last cell in the module } else { $suffix = "\\--"; # tweak indent chars for last cell in the module } $indent =~ tr/-\\/ /; # clear out higher-level indent chars } else { $suffix = " "; # simple indenting with spaces } show_hier ($fh, $recursing, $cell->submod, $cell, $indent.$suffix, $hier.".".$cell->name); $i++; } } $fh->printf("%s\n", $indent) if $Opt_Xml; --$recursing->{$name}; } ###################################################################### ###################################################################### ###################################################################### __END__ =pod =head1 NAME vhier - Return all files in a verilog hierarchy using Verilog::Netlist =head1 SYNOPSIS vhier --help vhier [verilog_options] [-o filename] [verilog_files.v...] =head1 DESCRIPTION Vhier reads the Verilog files passed on the command line and outputs a tree of all of the filenames, modules, and cells referenced by that file. =head1 VERILOG ARGUMENTS The following arguments are compatible with GCC, VCS and most Verilog programs. =over 4 =item +define+I+I =item -DI=I Defines the given preprocessor symbol. =item -F I Read the specified file, and act as if all text inside it was specified as command line parameters. Any relative paths are relative to the directory containing the specified file. =item -f I Read the specified file, and act as if all text inside it was specified as command line parameters. Any relative paths are relative to the current directory. =item +incdir+I =item -II Add the directory to the list of directories that should be searched for include directories or libraries. =item +libext+I+I... Specify the extensions that should be used for finding modules. If for example module I is referenced, look in I.I. =item -sv Specifies SystemVerilog language features should be enabled; equivalent to "--language 1800-2012". This option is selected by default, it exists for compatibility with other simulators. =item -y I Add the directory to the list of directories that should be searched for include directories or libraries. =back =head1 VHIER ARGUMENTS =over 4 =item --help Displays this message and program version and exits. =item --o I Use the given filename for output instead of stdout. =item --cells Show the module name of all cells in top-down order. =item --forest Show "ASCII-art" hierarchy tree of all cells (like ps --forest) =item --input-files Show all input filenames. Copying all of these files should result in only those files needed to represent the entire design. =item --instance With --cells or --forest, show module instance names. =item --language <1364-1995|1364-2001|1364-2005|1800-2005|1800-2009|1800-2012> Set the language standard for the files. This determines which tokens are signals versus keywords, such as the ever-common "do" (data-out signal, versus a do-while loop keyword). =item --resolve-files Show resolved filenames passed on the command line. This will convert raw module and filenames without paths to include the library search path directory. Output filenames will be in the same order as passed on the command line. Unlike --input-files or --module-files, hierarchy is not traversed. =item --module-files Show all module filenames in top-down order. Child modules will always appear as low as possible, so that reversing the list will allow bottom-up processing of modules. Unlike input-files, header files are not included. =item --modules Show all module names. =item --nomissing Do not complain about references to missing modules. =item --missing-modules With --nomissing, show all modules that are not found. =item --synthesis Define SYNTHESIS, and ignore text bewteen "ambit", "pragma", "synopsys" or "synthesis" translate_off and translate_on meta comments. Note using metacomments is discouraged as they have led to silicon bugs (versus ifdef SYNTHESIS); see L. =item --top-module I Start the report at the specified module name, ignoring all modules that are not the one specified with --top-module or below, and report an error if the --top-module specified does not exist. Without this option vhier will report all modules, starting at the module(s) that have no children below them. Note this option will not change the result of the --input-files list, as the files needed to parse any design are independent of which modules are used. =item --version Displays program version and exits. =item --xml Create output in XML format. =back =head1 DISTRIBUTION Verilog-Perl is part of the L free Verilog EDA software tool suite. The latest version is available from CPAN and from L. Copyright 2005-2016 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. =head1 AUTHORS Wilson Snyder =head1 SEE ALSO L, L, L, L =cut ###################################################################### Verilog-Perl-3.418/Verilog-Perl.pod0000644000177100017500000002546512654236555017057 0ustar wsnyderwsnyder# -*- Perl -*- # See copyright, etc in below POD section. ###################################################################### =pod =head1 NAME Verilog-Perl - Overview of Verilog language packages for Perl =head1 DESCRIPTION The Verilog-Perl distribution provides Perl parsing and utilities for the Verilog Language. This file provides an overview of the distribution, for specific details on each component, see that component's manpage. You may also want to try the AUTO features present in L Verilog-Mode. =head1 INSTALLATION Skip this section if Verilog-Perl has already been installed. =head2 Supported Systems Verilog-Perl should run on any system with Perl, G++, Flex, and Bison. It is known to work on at least: =over 4 =item * sparc-sun-solaris2.5.1 =item * i386-linux =item * i686-w2k-cygwin =back =head2 CPAN Installation =over 4 Easiest installation is using the "CPAN" command line that comes with Perl. After configuring CPAN the first time, simply $ cpan cpan> install Verilog-Perl Read the rest of this file for details on the programs provided. =back =head2 Manual Installation =over 4 Download the latest version from L, or from L. C to the directory containing this README notice. Type C to configure Verilog for your system. Type C to compile Verilog. Some Solaris users have had trouble with "open" being redefined. If this happens, try editing the Makefile to change _FILE_OFFSET_BITS to 32 instead of 64. Type C to check the package. If you don't have Synopsys' VCS, the test will print a warning, which you can ignore. Type C to install the programs and any data files and documentation. Read the rest of this file for details on the programs provided. =back =head1 SCRIPTS The following scripts are installed by Verilog-Perl: =over 4 =item L Vhier reads the Verilog files passed on the command line and outputs a tree of all of the filenames, modules, and cells referenced by that file. =item L Vpassert will read the specified Verilog files and preprocess special PLI assertions. =item L Vppreproc (Verilog-Perl Pre Processor) reads the Verilog files passed on the command line and outputs preprocessed output. =item L Vrename will allow a signal to be changed across all levels of the design hierarchy, or to create a cross reference of signal names. =back =head1 PACKAGES =over 4 =item L Verilog::Getopt provides standardized handling of options similar to Verilog/VCS and cc/GCC. =item L Verilog::Language provides general utilities for using the Verilog Language, such as parsing numbers or determining what keywords exist. =item L Verilog::Netlist reads and holds interconnect information about a whole design database. =item L A Verilog::Netlist::Cell object is created by Verilog::Netlist for every instantiation in the current module. =item L A Verilog::Netlist::ContAssign object is created by Verilog::Netlist for every continuous assignment in the current module. =item L Verilog::Netlist::File allows Verilog::Netlist objects to be read and written in Verilog format. =item L A Verilog::Netlist::Module object is created by Verilog::Netlist for every module in the design. =item L A Verilog::Netlist::Net object is created by Verilog::Netlist::Module for every signal and input/output declaration in the current module. =item L A Verilog::Netlist::Pin object is created by Verilog::Netlist::Cell for for each pin connection on a cell. =item L A Verilog::Netlist::Port object is created by Verilog::Netlist::Module for every port connection in the module. =item L The Verilog::Netlist::Subclass is used as a base class for all Verilog::Netlist::* structures. =item L Verilog::Parser will tokenize a Verilog file and invoke various callback methods. =item L Verilog::Preproc reads Verilog files, and preprocesses them according to the Verilog specification. Programs can be easily converted from reading a IO::File into reading preprocessed output from Verilog::Preproc. =item L Verilog::SigParser builds upon the Verilog::Parser package to provide callbacks for when a signal is declared, a module instantiated, or a module defined. =back =head1 WHICH PARSER PACKAGE? If you are starting a new application which needs to parse the Verilog language you have several tools available to you. Which you pick depends on how low level and complete the information you need is. =over 4 =item VParseBison.y The low level VParse* source files may be of use when you need a starting point for your own a full C++ SystemVerilog grammar parser, using Bison and Flex. It understands most of the SystemVerilog 2012 grammar (1800-2012 Appendix A). =item Verilog::Preproc Verilog::Preproc is useful when you need only post-preprocessed text output, or a list of defines, includes, etc. It can preprocess a file, or be used to provide the Verilog macro language on top of synthesis scripts. It understands and implements all preprocessor features of SystemVerilog 2012. =item Verilog::Parser Verilog::Parser is useful when you need to tokenize or write source filters (where you need everything including whitespace). It can take raw files, or preprocessed input, and generates callbacks. It understands all SystemVerilog 2012 keywords. =item Abstract Syntax Tree Verilog::Parser knows enough to make a complete Abstract Syntax Tree (AST) of Verilog syntax. This represents all major constructs such as a "module" as a data structure, but does not interconnect the AST nodes as would be needed to follow signals. Not all keywords have been implemented; many are parsed but otherwise ignored. A complete Ast tree would allow any arbitrary transformation of Verilog syntax (everything is known excluding whitespace). If you'd find this useful please contact the author. =item Verilog::SigParser Verilog::SigParser is useful when you need a list of modules, signals, ports, functions, etc. It requires a preprocessed file (from Verilog::Preproc), and can parse all SystemVerilog 2012 files, but only provides callbacks on certain interesting things. The SigParser operates only on a file at a time; it does not interconnect signals nor perform any elaboration (resolution of parameters). =item Verilog::Netlist Verilog::Netlist is useful for when you need the hierarchy, and a list of signals per module, pins per cell, etc. It builds upon the output of Verilog::SigParser, so requires preprocessed files (from Verilog::Preproc). It parses all SystemVerilog 2012 files, but not all SystemVerilog constructs are loaded into objects. Verilog::Netlist interconnects modules with instantiations but does not perform any elaboration (resolution of parameters). This is probably the most popular choice. =item VPI Using the VPI is the best way to access the behavior of the design. It is not part of this package as it requires a compliant simulator and C++ code to call the VPI, and understands as much of the language as the simulator supports. This allows writing lint checks and full knowledge of all parts of the code. The VPI can operate ONLY on an elaborated design (where all parameters are resolved). Walking a VPI tree general requires a good deal of work compared to simple scripting (though little work compared to writing a parser from scratch). =item Verilator The Verilator program also contains a very similar front end as Verilog-Perl. It also understands how to elaborate and connect complex pins and types, but supports mostly the synthesis subset. If you're looking to add some lint like checks against netlists, this may be a better starting point. =item Verilog-Mode for Emacs Although not a parser, a common requested use of Verilog-Perl is to automatically make shell modules and interconnect modules. Verilog-Mode is a better solution to this problem, as it results in completely portable code; the program (Verilog-Mode) isn't needed for others to update the design. It's also in very common usage, including by many IP providers. =back =head1 FAQ =over 4 =item Why do I get "unexpected `do'" or "unexpected `bit'" errors? Do, bit, ref, return, and other words are now SystemVerilog keywords. You should change your code to not use them to insure it works with newer tools. Alternatively, surround them by the Verilog 2005/SystemVerilog begin_keywords pragma to indicate Verilog 2001 code. `begin_keywords "1364-2001" integer bit; initial bit = 1; `end_keywords Alternatively use the --language (for vhier) or Verilog::Language::language_standard call to specify "1364-2001", or for really old code, "1364-1995". But, again, you really should fix the Verilog code. =item With Verilog::Netlist how do I resolve signal widths that include parameters down to constants? Unfortunately parameter resolution is part of elaboration. Verilog-Perl doesn't do elaboration as it requires a good fraction of a complete simulator implementation. Many applications can work around this limitation, if yours still requires elaboration you're stuck with using Verilator or the VPI, see the sections above. =back =head1 DISTRIBUTION Verilog-Perl is part of the L free Verilog EDA software tool suite. The latest version is available from CPAN and from L. Copyright 2000-2016 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. This code is provided with no warranty of any kind, and is used entirely at your own risk. =head1 AUTHORS Wilson Snyder =head1 SEE ALSO L, L, L, L L, L, L L, L, L, L L, L, L, L, L, L, L, L, L, L, And the LVerilog-Mode package for Emacs. =cut Verilog-Perl-3.418/COPYING0000644000177100017500000002156112074262445015061 0ustar wsnyderwsnyderArtistic License 2.0 Copyright (c) 2000-2006, The Perl Foundation. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble ******** This license establishes the terms under which a given free software Package may be copied, modified, distributed, and/or redistributed. The intent is that the Copyright Holder maintains some artistic control over the development of that Package while still keeping the Package available as open source and free software. You are always permitted to make arrangements wholly outside of this license directly with the Copyright Holder of a given Package. If the terms of this license do not permit the full use that you propose to make of the Package, you should contact the Copyright Holder and seek a different licensing arrangement. Definitions *********** "Copyright Holder" means the individual(s) or organization(s) named in the copyright notice for the entire Package. "Contributor" means any party that has contributed code or other material to the Package, in accordance with the Copyright Holder's procedures. "You" and "your" means any person who would like to copy, distribute, or modify the Package. "Package" means the collection of files distributed by the Copyright Holder, and derivatives of that collection and/or of those files. A given Package may consist of either the Standard Version, or a Modified Version. "Distribute" means providing a copy of the Package or making it accessible to anyone else, or in the case of a company or organization, to others outside of your company or organization. "Distributor Fee" means any fee that you charge for Distributing this Package or providing support for this Package to another party. It does not mean licensing fees. "Standard Version" refers to the Package if it has not been modified, or has been modified only in ways explicitly requested by the Copyright Holder. "Modified Version" means the Package, if it has been changed, and such changes were not explicitly requested by the Copyright Holder. "Original License" means this Artistic License as Distributed with the Standard Version of the Package, in its current version or as it may be modified by The Perl Foundation in the future. "Source" form means the source code, documentation source, and configuration files for the Package. "Compiled" form means the compiled bytecode, object code, binary, or any other form resulting from mechanical transformation or translation of the Source form. Permission for Use and Modification Without Distribution ******************************************************** (1) You are permitted to use the Standard Version and create and use Modified Versions for any purpose without restriction, provided that you do not Distribute the Modified Version. Permissions for Redistribution of the Standard Version ****************************************************** (2) You may Distribute verbatim copies of the Source form of the Standard Version of this Package in any medium without restriction, either gratis or for a Distributor Fee, provided that you duplicate all of the original copyright notices and associated disclaimers. At your discretion, such verbatim copies may or may not include a Compiled form of the Package. (3) You may apply any bug fixes, portability changes, and other modifications made available from the Copyright Holder. The resulting Package will still be considered the Standard Version, and as such will be subject to the Original License. Distribution of Modified Versions of the Package as Source ********************************************************** (4) You may Distribute your Modified Version as Source (either gratis or for a Distributor Fee, and with or without a Compiled form of the Modified Version) provided that you clearly document how it differs from the Standard Version, including, but not limited to, documenting any non-standard features, executables, or modules, and provided that you do at least ONE of the following: (a) make the Modified Version available to the Copyright Holder of the Standard Version, under the Original License, so that the Copyright Holder may include your modifications in the Standard Version. (b) ensure that installation of your Modified Version does not prevent the user installing or running the Standard Version. In addition, the Modified Version must bear a name that is different from the name of the Standard Version. (c) allow anyone who receives a copy of the Modified Version to make the Source form of the Modified Version available to others under (i) the Original License or (ii) a license that permits the licensee to freely copy, modify and redistribute the Modified Version using the same licensing terms that apply to the copy that the licensee received, and requires that the Source form of the Modified Version, and of any works derived from it, be made freely available in that license fees are prohibited but Distributor Fees are allowed. Distribution of Compiled Forms of the Standard Version or Modified ****************************************************************** Versions without the Source *************************** (5) You may Distribute Compiled forms of the Standard Version without the Source, provided that you include complete instructions on how to get the Source of the Standard Version. Such instructions must be valid at the time of your distribution. If these instructions, at any time while you are carrying out such distribution, become invalid, you must provide new instructions on demand or cease further distribution. If you provide valid instructions or cease distribution within thirty days after you become aware that the instructions are invalid, then you do not forfeit any of your rights under this license. (6) You may Distribute a Modified Version in Compiled form without the Source, provided that you comply with Section 4 with respect to the Source of the Modified Version. Aggregating or Linking the Package ********************************** (7) You may aggregate the Package (either the Standard Version or Modified Version) with other packages and Distribute the resulting aggregation provided that you do not charge a licensing fee for the Package. Distributor Fees are permitted, and licensing fees for other components in the aggregation are permitted. The terms of this license apply to the use and Distribution of the Standard or Modified Versions as included in the aggregation. (8) You are permitted to link Modified and Standard Versions with other works, to embed the Package in a larger work of your own, or to build stand-alone binary or bytecode versions of applications that include the Package, and Distribute the result without restriction, provided the result does not expose a direct interface to the Package. Items That are Not Considered Part of a Modified Version ******************************************************** (9) Works (including, but not limited to, modules and scripts) that merely extend or make use of the Package, do not, by themselves, cause the Package to be a Modified Version. In addition, such works are not considered parts of the Package itself, and are not subject to the terms of this license. General Provisions ****************** (10) Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license. (11) If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license. (12) This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder. (13) This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed. (14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Verilog-Perl-3.418/README0000644000177100017500000002615012654236555014714 0ustar wsnyderwsnyderNAME Verilog-Perl - Overview of Verilog language packages for Perl DESCRIPTION The Verilog-Perl distribution provides Perl parsing and utilities for the Verilog Language. This file provides an overview of the distribution, for specific details on each component, see that component's manpage. You may also want to try the AUTO features present in Verilog-Mode. INSTALLATION Skip this section if Verilog-Perl has already been installed. Supported Systems Verilog-Perl should run on any system with Perl, G++, Flex, and Bison. It is known to work on at least: * sparc-sun-solaris2.5.1 * i386-linux * i686-w2k-cygwin CPAN Installation Easiest installation is using the "CPAN" command line that comes with Perl. After configuring CPAN the first time, simply $ cpan cpan> install Verilog-Perl Read the rest of this file for details on the programs provided. Manual Installation Download the latest version from , or from . "cd" to the directory containing this README notice. Type "perl Makefile.PL" to configure Verilog for your system. Type "make" to compile Verilog. Some Solaris users have had trouble with "open" being redefined. If this happens, try editing the Makefile to change _FILE_OFFSET_BITS to 32 instead of 64. Type "make test" to check the package. If you don't have Synopsys' VCS, the test will print a warning, which you can ignore. Type "make install" to install the programs and any data files and documentation. Read the rest of this file for details on the programs provided. SCRIPTS The following scripts are installed by Verilog-Perl: vhier Vhier reads the Verilog files passed on the command line and outputs a tree of all of the filenames, modules, and cells referenced by that file. vpassert Vpassert will read the specified Verilog files and preprocess special PLI assertions. vppreproc Vppreproc (Verilog-Perl Pre Processor) reads the Verilog files passed on the command line and outputs preprocessed output. vrename Vrename will allow a signal to be changed across all levels of the design hierarchy, or to create a cross reference of signal names. PACKAGES Verilog::Getopt Verilog::Getopt provides standardized handling of options similar to Verilog/VCS and cc/GCC. Verilog::Language Verilog::Language provides general utilities for using the Verilog Language, such as parsing numbers or determining what keywords exist. Verilog::Netlist Verilog::Netlist reads and holds interconnect information about a whole design database. Verilog::Netlist::Cell A Verilog::Netlist::Cell object is created by Verilog::Netlist for every instantiation in the current module. Verilog::Netlist::ContAssign A Verilog::Netlist::ContAssign object is created by Verilog::Netlist for every continuous assignment in the current module. Verilog::Netlist::File Verilog::Netlist::File allows Verilog::Netlist objects to be read and written in Verilog format. Verilog::Netlist::Module A Verilog::Netlist::Module object is created by Verilog::Netlist for every module in the design. Verilog::Netlist::Net A Verilog::Netlist::Net object is created by Verilog::Netlist::Module for every signal and input/output declaration in the current module. Verilog::Netlist::Pin A Verilog::Netlist::Pin object is created by Verilog::Netlist::Cell for for each pin connection on a cell. Verilog::Netlist::Port A Verilog::Netlist::Port object is created by Verilog::Netlist::Module for every port connection in the module. Verilog::Netlist::Subclass The Verilog::Netlist::Subclass is used as a base class for all Verilog::Netlist::* structures. Verilog::Parser Verilog::Parser will tokenize a Verilog file and invoke various callback methods. Verilog::Preproc Verilog::Preproc reads Verilog files, and preprocesses them according to the Verilog specification. Programs can be easily converted from reading a IO::File into reading preprocessed output from Verilog::Preproc. Verilog::SigParse Verilog::SigParser builds upon the Verilog::Parser package to provide callbacks for when a signal is declared, a module instantiated, or a module defined. WHICH PARSER PACKAGE? If you are starting a new application which needs to parse the Verilog language you have several tools available to you. Which you pick depends on how low level and complete the information you need is. VParseBison.y The low level VParse* source files may be of use when you need a starting point for your own a full C++ SystemVerilog grammar parser, using Bison and Flex. It understands most of the SystemVerilog 2012 grammar (1800-2012 Appendix A). Verilog::Preproc Verilog::Preproc is useful when you need only post-preprocessed text output, or a list of defines, includes, etc. It can preprocess a file, or be used to provide the Verilog macro language on top of synthesis scripts. It understands and implements all preprocessor features of SystemVerilog 2012. Verilog::Parser Verilog::Parser is useful when you need to tokenize or write source filters (where you need everything including whitespace). It can take raw files, or preprocessed input, and generates callbacks. It understands all SystemVerilog 2012 keywords. Abstract Syntax Tree Verilog::Parser knows enough to make a complete Abstract Syntax Tree (AST) of Verilog syntax. This represents all major constructs such as a "module" as a data structure, but does not interconnect the AST nodes as would be needed to follow signals. Not all keywords have been implemented; many are parsed but otherwise ignored. A complete Ast tree would allow any arbitrary transformation of Verilog syntax (everything is known excluding whitespace). If you'd find this useful please contact the author. Verilog::SigParser Verilog::SigParser is useful when you need a list of modules, signals, ports, functions, etc. It requires a preprocessed file (from Verilog::Preproc), and can parse all SystemVerilog 2012 files, but only provides callbacks on certain interesting things. The SigParser operates only on a file at a time; it does not interconnect signals nor perform any elaboration (resolution of parameters). Verilog::Netlist Verilog::Netlist is useful for when you need the hierarchy, and a list of signals per module, pins per cell, etc. It builds upon the output of Verilog::SigParser, so requires preprocessed files (from Verilog::Preproc). It parses all SystemVerilog 2012 files, but not all SystemVerilog constructs are loaded into objects. Verilog::Netlist interconnects modules with instantiations but does not perform any elaboration (resolution of parameters). This is probably the most popular choice. VPI Using the VPI is the best way to access the behavior of the design. It is not part of this package as it requires a compliant simulator and C++ code to call the VPI, and understands as much of the language as the simulator supports. This allows writing lint checks and full knowledge of all parts of the code. The VPI can operate ONLY on an elaborated design (where all parameters are resolved). Walking a VPI tree general requires a good deal of work compared to simple scripting (though little work compared to writing a parser from scratch). Verilator The Verilator program also contains a very similar front end as Verilog-Perl. It also understands how to elaborate and connect complex pins and types, but supports mostly the synthesis subset. If you're looking to add some lint like checks against netlists, this may be a better starting point. Verilog-Mode for Emacs Although not a parser, a common requested use of Verilog-Perl is to automatically make shell modules and interconnect modules. Verilog-Mode is a better solution to this problem, as it results in completely portable code; the program (Verilog-Mode) isn't needed for others to update the design. It's also in very common usage, including by many IP providers. FAQ Why do I get "unexpected `do'" or "unexpected `bit'" errors? Do, bit, ref, return, and other words are now SystemVerilog keywords. You should change your code to not use them to insure it works with newer tools. Alternatively, surround them by the Verilog 2005/SystemVerilog begin_keywords pragma to indicate Verilog 2001 code. `begin_keywords "1364-2001" integer bit; initial bit = 1; `end_keywords Alternatively use the --language (for vhier) or Verilog::Language::language_standard call to specify "1364-2001", or for really old code, "1364-1995". But, again, you really should fix the Verilog code. With Verilog::Netlist how do I resolve signal widths that include parameters down to constants? Unfortunately parameter resolution is part of elaboration. Verilog-Perl doesn't do elaboration as it requires a good fraction of a complete simulator implementation. Many applications can work around this limitation, if yours still requires elaboration you're stuck with using Verilator or the VPI, see the sections above. DISTRIBUTION Verilog-Perl is part of the free Verilog EDA software tool suite. The latest version is available from CPAN and from . Copyright 2000-2016 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. This code is provided with no warranty of any kind, and is used entirely at your own risk. AUTHORS Wilson Snyder SEE ALSO vhier, vpassert, vppreproc, vrename Verilog::EditFiles, Verilog::Getopt, Verilog::Language Verilog::Netlist, Verilog::Parser, Verilog::Preproc, Verilog::SigParser Verilog::Netlist::Cell, Verilog::Netlist::ContAssign, Verilog::Netlist::File, Verilog::Netlist::Interface, Verilog::Netlist::ModPort, Verilog::Netlist::Module, Verilog::Netlist::Net, Verilog::Netlist::Pin, Verilog::Netlist::Port, Verilog::Netlist::Subclass, And the Verilog-Mode package for Emacs. Verilog-Perl-3.418/vsplitmodule0000755000177100017500000000641212074262445016501 0ustar wsnyderwsnyder#!/usr/bin/perl -w # See copyright, etc in below POD section. ###################################################################### use lib 'blib/lib'; use Verilog::EditFiles; use FindBin qw($RealBin $RealScript $Script); use strict; #====================================================================== # When editing, delete this section up to the next #==== die <new (# Verilog::EditFiles will use the below program name in its comments program => $Script, # Name of the directory to write the output modules to. # I like to put all generated files under a dir named "gen" # so it is obvious the files are generated. # (But for the Verilog-Perl internal tests, this needs to be test_dir) outdir => "test_dir", #"gen", # If true, add "`celldefine" before every module statement. #celldefine => 1, # For the write_lint method, the name of the linter to use. #lint_command => 'vlint --brief', # If defined, add the provided text before every module statement. # Generally used to insert lint off pragmas. #lint_header => "// lint_checking MY_RULES OFF\n", # If defined, add the provided text before every module statement. # Generally used to insert lint off pragmas. #include_header => "`include \"my_defines.v\"\n", # If defined, add the provided text before every module statement. # Generally used to insert lint off pragmas. #timescale_header => "`include \"my_timescale.v\"\n", # If set, remove any `timescales. #timescale_removal => 1, # If 1, replace any synopsys translate on/offs with "`ifdef SYNTHESIS" and # "`endif"s. If set to a string, use that string instead of "SYNTHESIS". translate_synthesis => 'SYNTHESIS', # The suffix to add to convert a module name into a filename. Defaults to #v_suffix => '.v', # If set, show what files are being read and written verbose => 1, ); # Remove all existing files under the output. You might not want to do # this if there are files you want to keep from there unlink (glob("$split->{outdir}/*.v")); # Read specified libraries and split them $split->read_and_split(glob("t/*.v")); # And write them out $split->write_files(); # And create a lint file $split->write_lint(); # If a file needs 'manual' search and replaces, we can do that too. $split->edit_file (# The filename to be edited filename=>"$split->{outdir}/a.v", # Callback subroutine that takes file contents as a string # and returns the new file contents cb=>sub { my $wholefile = shift; # Globally search and comment out any lines with "pulldown PULLDOWN" # See "man perlre" for examples. # The %mg here means to match multiple lines (you can put # \n in the regexp), and to do it globally $wholefile =~ s%(pulldown PULLDOWN;)%//vsplitmodule: $1%mg; return $wholefile; }); Verilog-Perl-3.418/Changes0000644000177100017500000010753312654236555015334 0ustar wsnyderwsnyderRevision history for Perl extension Verilog::Language. The contributors that suggested a given feature are shown in []. [by ...] indicates the contributor was also the author of the fix; Thanks! * Verilog::Language 3.418 2016-02-02 **** Fix Flex 2.6.0 warnings. * Verilog::Language 3.416 2015-10-02 **** Fix dumpcheck test false failures, bug939. [Gene Sullivan] **** Fix vrename missing first quote symbol msg1684. [Josef Wells] * Verilog::Language 3.414 2015-06-26 **** Add Parser useProtected argument to aid runtime, bug899. [Corey Teffetalor] **** Fix Preproc loop under Perl-Tk, bug913. [Stefan Tauner] **** Fix vhier infinite loop on recursive modules. **** Fix preprocessing stringified newline escapes, bug915. [Anton Rapp] **** Fix building for Mac 10.10 with Perl 5.18.2, bug923. [S Liu] **** Fix parsing comments before signal end, bug917. [Raj G, Jeffrey Huynh] * Verilog::Language 3.412 2015-03-16 **** Fix len error in 3.410, bug896. [Jon Nall] * Verilog::Language 3.410 2015-03-14 **** Fix non-ANSI modport instantiations, bug868. [Kevin Thompson] **** Fix extra text in delay-number callback, bug893. [Greg Waters] **** Fix virtual modport without interface in classes, bug778. [Jon Nall] * Verilog::Language 3.408 2014-11-15 *** Fix +define+A+B to define A and B to match other simulators, bug847. [Adam Krolnik] *** Show old and new value when redefining a define, bug846. [Adam Krolnik] **** Fix loss of trireg on output signals, msg1491. [Matt Lanahan] **** Fix quoted comment slashes in defines, bug845. [Adam Krolnik] * Verilog::Language 3.406 2014-09-21 *** Add Verilog::Preproc->parent() method, bug813. [Ed Carstens] *** Add Verilog::Netlist::File->preproc() method, bug813. [Ed Carstens] **** Pass CFLAGS/CPPFLAGS for easier packaging, bug786. [Florian Schlichting] **** Fix width of byte, bug812. [Ed Carstens] **** Fix interfaces with variable dimension, bug818. [Glen Gibb] * Verilog::Language 3.404 2014-06-08 *** Added Verilog::Netlist/Verilog::Parser parser option. **** In vppreproc, add option -P as alias of --noline to match GCC. **** Fix modport outside ANSI header, bug777. [Joe Dudas] **** Fix virtual modport without interface, bug778. [Jon Nall] **** Fix string corruption, bug780. [Derek Lockhart] **** Fix Bison 4.0 warnings. * Verilog::Language 3.403 2014-03-11 **** Fix parsing "#0 'b0", bug256. **** Fix build on MacOS 5.12.4. [Robert Bell] **** Fix multiple pre-ANSI package imports on same line. [Brad Dobbie] * Verilog::Language 3.402 2013-10-17 **** Fix function/task named parameter calls with empty parenthesis. **** Fix parameter assignment to mintypmax_expressions, bug671. [Arnaud Turier] * Verilog::Language 3.401 2013-05-21 *** Fix recognizing type parameters as classes, bug627. [Jon Nall] **** Fix missing endtask callbacks in DPI and methods, bug641. [Jon Nall] * Verilog::Language 3.400 2013-02-27 *** Support SystemVerilog 1800-2012. **** Predefine SV_COV_START and other IEEE mandated predefines. * Verilog::Language 3.318 2012-11-28 **** Fix vpassert test failure in bleadperl 5.17.5-518, bug582. [Andreas Koenig] * Verilog::Language 3.317 2012-10-01 *** Gunzip Verilog::Preproc filenames ending in .gz, bug564. [Jingzhen Hu] **** Fix multidimensional unpacked wires. [Leif Tore Rusten] **** Fix MacOS 10.8 build error. [Oliver King-Smith] * Verilog::Language 3.316 2012-07-27 **** Fix newlines in radix values, bug507. [Walter Lavino] **** Fix internal readWholefile error check, bug518. [Wei Song] **** Fix parsing hierarchical binds. [Brian Mokrzycki] * Verilog::Language 3.315 2012-05-04 *** Put root localparams into $root module, bug471. [Corey Teffetalor] **** Fix comment callback starting line, bug459. [Max Bjurling] **** Fix genvar and begin under generate, bug461. [Alex Solomatnikov] **** Fix const class member parsing. **** Fix compile error on MS Windows. [Ling Li Wang] **** Fix cpan-testers' tests on systems without perldoc. * Verilog::Language 3.314 2012-02-27 *** Add vhier --forest and --instance. [by John Busco] *** Fix expansion of back-slashed escaped macros, bug441. [Alberto Del Rio] *** Fix -F relative filename parsing, bug444. [Jeremy Bennett] **** Fix c style var array declarations. [by Jack Cummings] **** Fix --debug parsing after -f files, bug442. [Jeremy Bennett] **** Fix hang on recursive substitution `defines, bug443. [Alex Solomatnikov] * Verilog::Language 3.313 2011-12-14 *** Add Verilog-AMS keywords to Verilog::Language. *** Fix "always @ (* )", bug403, bug404. [Walter Lavino] *** Fix empty generate region, bug422. [Walter Lavino] * Verilog::Language 3.312 2011-10-20 *** Fix $past with event_control, bug400. [Jon Nall] **** Fix 02_help.t error when pager highlights manpages. * Verilog::Language 3.311 2011-10-18 ** Add SigParser class and endclass callbacks, bug391. [Jon Nall] *** Fix EditFiles confusing endmodule in nested comments. [Wu Ye] *** Fix --help output to go to stderr, not stdout. [R. Diez] * Verilog::Language 3.310 2011-07-22 ** Add --synthesis to vhier+Preproc to honor translate_offs. [Ozkan Dikmen] ** Add SigParser covergroup and endgroup callbacks. [Jon Nall] **** Fix covergroup callback giving empty datatype, bug361. [Jon Nall] **** Fix SigParser port callback missing paren expressions. [Sean Vo] * Verilog::Language 3.307 2011-06-22 **** Add vhier --xml. [David Asher] **** Fix net used lint warnings after pin deletes, bug343. [David Chinnery] **** When making, turn down GCC optimization to O1 to avoid GCC hang bug. * Verilog::Language 3.306 2011-03-07 **** Fix block comment not separating identifiers, bug311. [Gene Sullivan] * Verilog::Language 3.305 2010-12-03 *** Add -F option to read relative option files, bug297. [Neil Hamilton] *** Fix env var expansion from Getopt, bug298. [John Dickol] **** Fix removing defines without ` when non-SystemC, bug300. [John Dickol] * Verilog::Language 3.304 2010-10-25 **** Fix file_substitute expanding ~, msg382. [Neil Hamilton] **** Fix wrong filename on include file errors, bug289. [Brad Parker] * Verilog::Language 3.303 2010-09-20 *** Add vrename --changelang option, to upgrade keywords. [Dan Moore] *** Add vrename --language option. [Dan Moore] *** Add Verilog::Language::language_maximum and language_keywords. **** Fix escaped identifiers that are keywords, bug282. [Dan Moore] **** Fix preprocessor `` of base define, bug283. [Usha Priyadharshini] * Verilog::Language 3.302 2010-08-26 **** Increase define recursions before error. [Paul Liu] **** Fix documentation on verilog_text and link, bug278. [Mike Z] **** Use Digest::SHA instead of SHA1, bug277. [Ahmed El-Mahmoudy] **** Fix false test failure if Math::BigInt not installed. * Verilog::Language 3.301 2010-08-04 **** Improve Bison/flex skipping to increase CPAN-Testers pass rate. * Verilog::Language 3.300 2010-08-02 ** Support SystemVerilog 2009 standard, including new keywords. *** Bison/flex are no longer required to build, unless sources are changed. **** Fix preprocessing ifdef `INDIRECT(DEFINE). **** Fix preprocessor preservation of newlines across macro substitutions. **** Fix preprocessor stringification of nested macros. **** Fix preprocessor whitespace on define arguments * Verilog::Language 3.251 2010-06-29 *** Add vppreproc --dump-defines option. **** Fix vpassert "POSIX::BUFSIZ" error on Perl 5.8.8. [Chitlesh Goorah] * Verilog::Language 3.250 2010-06-21 ** Add parsing of "defparam", including SigParser::defparam callback, Netlist::ContAssign object, and accessors. [Pierre-David Pfister] **** Fix complex {...} port declarations, bug262. [Evgeni Stavinov] * Verilog::Language 3.241 2010-05-01 *** Add vpassert --call-* switches to use user's PLI display functions. **** Disable Parser unreadback() data during std:: parsing. [Mark Nodine] **** Fix preprocessing some DOS carriage returns, broke in 3.240. * Verilog::Language 3.240 2010-03-29 *** Add vpassert vp_coverage_off/on pragmas. *** Add vpassert --synthcov, --axiom and --vcs switches. **** Pass pin numbers for functions/tasks to SigParser::port_cb. **** Improve performance of large file parsing. [Jeffrey Short] **** Fix parsing single files > 2GB. [Jeffrey Short] **** Fix vpassert to insert `lines on every line where needed. **** Fix "disable iff {property_expr}", bug221. [Rick Ramus] **** Fix UDPs with min:typ:max delays, bug228. [Pihay Saelieo] **** Fix Pod::Usage dependency, rt51024. [Andreas Koenig] **** Fix Mac OS-X compile issues. [Joshua Wise] **** Fix Verilog::EditFiles documentation, bug222. [Evgeni Stavinov] * Verilog::Language 3.231 2010-02-21 **** Support 1800-2009 /*comments*/ in define values. **** Fix DOS carriage returns leaking into comment output. **** Fix error on define comments w/o keep_whitespace, bug202. [Rick Ramus] **** Fix "parser thinks ending" error on unions, bug202. [Rick Ramus] **** Fix `defines with empty argument lists. * Verilog::Language 3.230 2010-01-21 ** Support interface modports, bug200. [by Thriller Wu] Applications using interfaces may need to ignore the new callbacks. *** Support 1800-2009 defines with default arguments. *** Pedantic no longer disables `__FILE__ and `__LINE__ as they are now part of SystemVerilog 2009 (IEEE 1800-2009). **** Fix memory leaks. [Thriller Wu] * Verilog::Language 3.223 2009-12-20 *** Support `undefineall. **** Add implied "input" to function var callbacks. **** Fix covergroup instantiation syntax error, bug192. [Vesselin Kavalov] **** Fix parsing enums with implicit types. * Verilog::Language 3.222 2009-11-24 **** Fix missing ; in ContAssign::verilog_text, bug177. [Nicolas Wilhelm] **** Fix multi-dimensional arrayed typedefs, bug183. [Vesselin Kavalov] **** Fix "assert () else" action_blocks. [Vesselin Kavalov] **** Fix typedef scoping under anonymous begin blocks. **** Fix `define argument mis-replacing system task of same name, bug191. * Verilog::Language 3.221 2009-10-28 **** Fix SystemPerl hitting "undefined find_interface..." in 3.220. **** Fix erroring on strings with backslashed newlines, bug168. [Pete Nixon] **** Fix compile error on RHEL3 with gettext, bug169. [Marek Rouchal] **** Fix line number miscounting with `pragma. * Verilog::Language 3.220 2009-09-30 ** Add parsing of "assign", including SigParser::contassign callback, Netlist::ContAssign object, and related accessors. *** Several code speedups to vhier, Verilog::Netlist, and the parsers. *** Add Preproc::getall to fetch all text instead of line-by-line. *** Add Parser::new(use_cb_{name}=>0) option to speed parsing. *** Add SigParser/Netlist::new(use_vars=>0) option to speed parsing. **** Fix deep defines causing flex scanner overflows. [Brad Dobbie] **** Fix preprocessing commas in deep parameterized macros. [Brad Dobbie] **** Fix Preproc::defSubstitute not being called on parameterized macros. **** Fix Perl 5.8.8 compile error, bug115. [Marek Rouchal] * Verilog::Language 3.213 2009-09-10 *** Improved warning when "do" used as identifier. **** Fix compilation and installation on MacOS 10.4. [Robert Guenzel] **** Fix escaped preprocessor identifiers, bug106. [Nimrod Gileadi] **** Fix Perl 5.8.8 compile error, bug115. [Marek Rouchal] **** Fix Perl 5.8.0 compile error with callbackgen. [Kjeld Svendsen] * Verilog::Language 3.212 2009-07-20 *** Fix syntax errors when using vhier/Netlist with --language 1364-2001. **** Fix dotted expressions returning "..", bug98. [Saul Cuellar] **** Fix Getopt::file_path to expand environment variables in filenames. * Verilog::Language 3.211 2009-06-17 *** Add SigParser::var callbacks on struct members, bug91. [Saul Cuellar] *** Add Preproc::defSubstitute define callbacks, bug94. [by Saul Cuellar] **** Fix parsing empty commas in port lists, bug97. [Noam Meir] **** Fix compatibility with Getopt-Long-2.38, bug167. [by Marek Rouchal] **** Fix compile error under GCC 3.3.5. **** Work around compiler warning when using flex 2.5.35. [Jonathan Kimmitt] * Verilog::Language 3.210 2009-05-19 *** `__FILE__ now expands to a string, per SystemVerilog 2009. *** Fix parsing external declarations using appropriate class scope. *** Fix parsing class member variables with multiple qualifiers. **** Fix Netlist errors with ported interfaces, bug86. [David A] **** Fix Netlist errors with interfaces-under-interfaces, bug87. [David A] **** Fix define formal arguments that contain newlines, bug84. [David A] **** Fix parsing arrayed instances with just "[#]" (no colon). **** Fix parsing "for (a=0;a;)". **** Fix parsing "super.new(...)" * Verilog::Language 3.202 2009-05-01 **** Fix 3.200 mis-inheriting V2K port types. [Derek Johnstone] * Verilog::Language 3.201 2009-04-28 **** Fix "abort" compile error. [Jayanand AK] * Verilog::Language 3.200 2009-04-15 ** This is a major release that may break some scripts that worked with earlier versions. Some scripts may need modification to work with this version of Verilog-Perl. ** This package is now licensed under LGPL v3 and/or Artistic v2.0. ** Verilog::Parser, SigParser and Netlist now support SystemVerilog. *** Verilog::SigParser's signal_decl and funcsignal callbacks no longer work. They are replaced by the "var" callback. *** Added Verilog::SigParser program and endprogram callbacks. *** Calling Verilog::SigParser->new now requires a symbol_table parameter, if multiple modules are to be parsed as part of one compilation unit. *** Netlist::Port->type accessor is renamed data_type. [Horia Toma] *** Netlist::Net->type accessor is split into data_type, decl_type and net_type accessors. *** Netlist::Module->ports_ordered now returns objects. [Horia Toma] *** Added Netlist::Interface and related accessors. *** Added Netlist::Module->keyword accessor, and use it for "program"s. **** Fix Macintosh BSD build error. [Otacilio de Arujo Ramos Neto] **** Fix parallel make rule build error. [Chitlesh Goorah] **** Fix const compile warning in VPreProc.cpp. [Chitlesh Goorah] **** Fix logic MSBs not being reported in 3.200 beta. [Horia Toma] * Verilog::Language 3.121 2009-04-05 **** Make cell names unique when duplicate cells encountered. [Paul Janson] **** Remove unused parameter in exit_if_error. [Paul Janson] **** Fix modported instance name passed to SigParser::instant callback. * Verilog::Language 3.120 2009-02-25 *** Add vhier --resolve-files option. [by Vasu Arasanipalai] *** Support "parameter integer" etc, bug64. [Jeff Kurtze] *** Support big-endian bit vectors, i.e. [0:2], bug65. [Devendra Singh] *** Return width() of 1 for non-vectored signals, bug65. [Devendra Singh] *** Add "'{" as an operator. **** Fix "assign {{x,y},z}", bug166. [Devendra Singh] **** Fix documentation on ports_ordered, bug66. [Nicky Ayoub] **** Fix compile issues with GCC 4.3. [Donavan Miller] **** Fix Bison 2.4 compile issues. * Verilog::Language 3.110 2009-01-28 ** Support interface and import. [by Sandeep Gor] Add new SigParser::interface, endinterface and import callbacks. *** Add vhier --top-module option, bug49. [John Busco] *** Add vpassert $ucover_bits_clk. [Mahesh Kumashikar, et al] *** Add comments to Netlist::Net::verilog_text. [by Jeff Short] *** Support `pragma and `default_nettype. * Verilog::Language 3.100 2009-01-02 ** Vppp is now renamed vppreproc; vpm is renamed vpassert. This fixes naming conflicts with other packages. [Chitlesh Goorah] Note this breaks backward compatibility and any scripts that call these programs will need updating. Alternatively, add a symlink in your bin directory from the old name. *** Fix missing module dependencies and Bison warning. [Chitlesh Goorah] * Verilog::Language 3.045 2008-12-19 *** Add vpm --noline option. [Vasu Arasanipalai] *** Add vpm --realintent option. [Vasu Arasanipalai] *** Fix vpm making long lines that upset Cadence's NC-Verilog. [Soon Koh] **** Fix Makefile issues with ActivePerl. [Jose Ochoa] * Verilog::Language 3.044 2008-11-10 *** Support SystemVerilog unique and priority case, bug33. [by Nicky Ayoub] *** Support SystemVerilog timeunit and timeprecision, bug34. [by Nicky Ayoub] *** Support SystemVerilog package items, bug39. [by Nick Ayoub] **** Expand environment variables in Verilog::Getopt. [Lawrence Butcher] **** Fix Verilog::EditModules when modules wrapped in ifdef. [Mat Zeno] * Verilog::Language 3.043 2008-09-28 *** Ignore Verilog-XL defines (suppress_faults, etc). [Nicky Ayoub] **** Fix cpan-testers mis-reporting FAIL when no flex installed. **** Fix Perl Critic error when not installed, bug164. [Andreas Koening] * Verilog::Language 3.042 2008-09-19 *** Add Netlist net, port and module ->delete methods. [Daniel Schoch] *** Add Netlist modules_sorted_level and ->level method. [Daniel Schoch] *** Add vpm $uerror_clk and $uwarn_clk assertions. *** Add vpm $ucover_clk coverage expansions. *** Vpm now enables `line comments unless using Verilog 1995. **** Fix verilog_text to output wire values. [by Jeff Short] **** Fix parsing signals with negative lsbs. [Stephane Laurent] * Verilog::Language 3.041 2008-09-03 ** Verilog-Perl development versions are now available from a git server. See Installing under http://www.veripool.org/verilog-perl for details. *** Netlist errors are now always reported through the new Verilog::Netlist::Logger class. This allows errors to be caught or specially handled. [Miguel Corazao, AMD] **** Fixed code to be Perl::Critic clean. * Verilog::Language 3.040 2008-08-20 *** Add Netlist::Net->value containing parameter values. [Ron D Smith] *** Added Verilog::Netlist/Verilog::Parser preproc option. [by Miguel Corazao, AMD] *** Support +=, -=, etc, and ++, -- operators. [Sean de la Haye] *** Support "cover property." **** Eliminated automatic error printing upon application termination. [by Miguel Corazao, AMD] **** Fix syntax error when "`include `defname" is ifdefed. [John Dickol] **** Fix error when macro call has commas in concatenate. [John Dickol] **** Fix compile errors under Fedora 9, GCC 4.3.0. [by Jeremy Bennett] * Verilog::Language 3.035 2008-05-07 **** Fix "output reg name=expr;" bug34649 syntax error. [Martin Scharrer] **** Fix functions with "input integer". [Johan Wouters] **** Fix bug introduced in 3.024 with parametrized defines. **** Fix compiler warnings under GCC 4.2.1. **** Fix "endclass" keyword misspelling. [John Dickol] **** Fix preprocessor `else after series of `elsif. [Mark Nodine] **** Fix parametrized defines calling define with comma. [Joshua Wise] * Verilog::Language 3.024 2008-04-02 *** Verilog::Parser will now start parsing using the keywords based on the Verilog::Language::language_standard setting. **** Fix vhier ignoring --language option. [Martin Scharrer] **** Fix SystemVerilog parameterized defines with `` expansion, and fix extra whitespace inserted on substitution. [Vladimir Matveyenko] **** Fix missing uwire keyword in Verilog::Language. [Jonathan David] **** Fix parse error on min:typ:max delay pairs, bug34575. [Martin Scharrer] * Verilog::Language 3.023 2008-02-12 **** Fix arrayed input/output pins. [Thomas Ziller] **** Fix "output reg unsigned" parse error. * Verilog::Language 3.022 2008-01-15 *** Add ignoring of SystemVerilog enumerations. [Thomas Ziller] **** Fix begin_keywords 1800-2005 error introduced in last release. * Verilog::Language 3.021 2008-01-07 **** Fix endclass keyword parsing. [David Plumb] **** Fix "://" parsing as ":/" operator instead of comment. [Mark Nodine] * Verilog::Language 3.020 2007-12-03 ** Add SystemVerilog logic types. [Thomas Ziller] (SystemVerilog support is still a work in progress). *** Add SystemVerilog operators += ## @@ :: etc. *** Add specify operators &&& => *>. [Mark Nodine] *** Add SystemVerilog times (10ns, etc). **** Fix concatenates in for loop assignments. [Mark Nodine] **** Fix endmodule/endfunc callback line numbers. * Verilog::Language 3.013 2007-10-18 **** Fix parsing module #(parameter x,y) declarations. [Oleg Rodionov] **** Fix parsing system functions with empty parens. [Oleg Rodionov] **** Fix Verilog::Netlist errors having wrong line number. [Oleg Rodionov] * Verilog::Language 3.012 2007-09-10 ** Added Verilog::EditFiles module and vsplitmodule example. * Verilog::Language 3.011 2007-07-31 *** Added event trigger -> operator. [Mark Nodine] **** Remove preprocessor adding newlines before `line. [Mark Nodine] * Verilog::Language 3.010 2007-07-18 *** Added Parser::endparse callback. [Mark Nodine] *** Added SigParser::endmodule, endtaskfunc, and endcell callbacks. **** Fix attachment of comments to proceeding cells. [David Chinnery] * Verilog::Language 3.002 2007-07-16 *** Find functions now search backslash escaped names. [David Chinnery] *** Fix vrename breakage in 3.00* releases. [David Price] **** Fix SigParser::comment to call Parser::Comment. [Mark Nodine] **** Fix Parser::unreadback to always return value. [Mark Nodine] **** Fix g++ bug giving "out of memory" on Cygwin. [Pongstorn] * Verilog::Language 3.001 2007-06-20 **** Support V2K function/task argument lists. **** Fix Preprocessor dropping some `line directives. [Mark Nodine] **** Fix Netlist "not found" errors on primitives, bug27624. [Jeff Trull] * Verilog::Language 3.000 2007-06-12 ** Note this is a MAJOR release that may have incompatibilities with earlier versions, although I've attempted to minimize problems. Please email any problems to the author. ** Verilog::SigParser has been completely rewritten. The good news is it understands almost the entire Verilog 2005 language. The bad news is there are minor incompatibilities with previous versions, and the parser now errors out when it does not understand something rather than ignoring it. *** The Verilog::SigParser->pin callback now passes "" as the pin name instead of "pin###" if connecting by position instead of by name. *** Added Verilog::SigParser->funcsignal callback for variables declared inside a function or task. bug26972. [Mark Nodine] *** Added Verilog::SigParser->instant callbacks for gate primitives. bug26969, bug27062. [Mark Nodine] *** Added Verilog::SigParser->parampin callbacks for parameter connections to instantiations. *** Added Verilog::SigParser->signal_decl callbacks for all module vars, including parameters and genvars. *** Added Verilog::SigParser->signal_decl callback argument with initial values of parameters and wires. [Mark Nodine] ** Verilog::Parser has been replaced with the front end of the SigParser. The preproc and syscall callbacks were added *** Require call to Verilog::Parser->eof() at the end of all parsers. *** Changed Verilog::Parser->unreadback() method to not clear state. You must now call unreadback('') to clear the unreadback characters. *** The long depreciated Verilog::Parse module has been removed. **** Fixed Verilog::Parser mis-parsing spaces in numbers, bug27070. **** Fixed Verilog::SigParser bug26141, bug26940, bug26968, bug26969, bug26970, bug26972, bug26997, bug27009, bug27010, bug27013, bug27036, bug27037, bug27039, bug27045, bug27062, bug27066, bug27067, bug27072. [Mark Nodine, et al] * Verilog::Language 2.380 2007-05-27 *** Added new Verilog-Perl.pod documentation overview. *** Verilog::Parser and Verilog::SigParser objects must call the eof method to insure forward compatibility. *** Vpm $info etc have been removed, now only $uinfo, etc are supported. This avoids conflict with SystemVerilog $error function. [Tad Truex] *** Verilog::Language keywords now uses the `begin_keywords standard names. *** Added Verilog::Language::number_bitvector and number_bigint for returning Bit::Vector and Math::BigInt objects. bug26967. [Mark Nodine] **** Fix --help to use Pod::Usage instead of depreciated pod2text. **** Ignore quotes inside `protected/`endprotected blocks. **** Drop end-of-file ctrl-Z's when preprocessing input. * Verilog::Language 2.373 2007-04-02 *** Fix vppp breaking with Getopt::Long 2.36. [Andreas J. König] **** Fix modules without any ports causing lost declarations. [Mark Nodine] * Verilog::Language 2.372 2007-02-28 *** Add include_open_nonfatal option to Preproc and Netlist. [Eric Miller] **** Fix bug24552; Verilog::Module::new_net now defaults net type to 'wire'. [Takeo Komiyama] * Verilog::Language 2.371 2007-01-23 *** Fix bug24345; supply statements cause lint warnings. [Jeff Trull] * Verilog::Language 2.370 2007-01-10 *** Fix bug24248; reg/tri/supply* declarations, etc are now stored in Net structures as the declared type, instead of as 'wire'. [Jeff Trull] *** Fix bug13462; parse {} concatenations in pin connections. [Jeff Trull] *** Remove backslashes in quoted symbols when they aren't needed. **** Fix vpm deleting output when file moved between directories. * Verilog::Language 2.361 2006-10-02 ** Attach Verilog comments to Netlist objects. [Monte Becker] *** Add parameters to Verilog::Parser instant callback. [Monte Becker] * Verilog::Language 2.360 2006-09-14 *** Added Preproc keep_whitespace=>0 option to delete whitespace. *** Preprocessor now strips all DOS carrage returns. *** Allow Verilog::Getopt::file_path to resolve module_dir and/or incdirs. Use only module_dir to resolve Netlist modules. [by John Tseng] **** Vrename --crypt now uses lower case random identifiers for readability. **** Fix DOS carrage returns in multiline defines. [Ralf Karge] * Verilog::Language 2.352 2006-08-22 *** Fix compile errors under Cygwin. [Mattan Tsachi] * Verilog::Language 2.351 2006-06-08 *** Add vhier --language option. [Sean Nazareth] **** Fix Getopt::file_path when dir names match file names. [by John Tseng] * Verilog::Language 2.350 2006-05-19 *** Vpm now emits $timeformat when passed the --timeformat-units switch. *** SigParser and the Netlister now ignore function and task IOs. **** Preproc line numbers being off due to multi-line defines. [Mat Zeno] **** Fix `include `DEFINE. * Verilog::Language 2.341 2006-02-06 *** Add SystemVerilog `0, `1, `x, `z. [John Tseng] **** Fix module #() parameter declarations. [Andy Kuo] **** Fix "output reg" and "output wire" declarations. [Andy Kuo] * Verilog::Language 2.340 2006-01-16 *** Added vpm --minimum switch. **** Added Verilog::Language::language_standard to allow setting which language standard (1995,2001,SystemVerilog) is used for keywords. **** Fix vhier -o option. [Sean Nazareth] **** Add vhier --modules and --missing-modules options. [Sean Nazareth] * Verilog::Language 2.331 2005-10-05 *** Added vhier example program. [Vasu Arasanipalai] * Verilog::Language 2.330 2005-09-06 *** vpm now aliases $error to $uerror, etc, to avoid conflict with SystemVerilog $error function. [Tad Truex] *** $uassert_info now uses __message_on. [Vasu Arasanipalai] **** Fix preprocessor substitution of quoted parametrized defines. * Verilog::Language 2.321 2005-08-03 *** Verilog::SigParser now sees cells inside generates. [by Thomas Ziller] * Verilog::Language 2.320 2005-07-27 *** Add vrename --cryptall option. *** Fix Language is_keywords to match V2K language spec. [Mark Grossman] Deleted extern, makefile, supply. Added ifnone, strength, unsigned. **** Fix core dump when missing newline in `define. [David van der bokke] * Verilog::Language 2.316 2005-06-10 **** Fix define substitution with incomplete defines. [by Ronald Dean Smith] **** Fix C++ Comments causing Perl compile problems. [Merijn Brand] * Verilog::Language 2.315 2005-03-16 **** Support for latest SystemC::Netlist version. * Verilog::Language 2.314 2005-03-14 **** Support for latest SystemC::Netlist version. * Verilog::Language 2.313 2005-03-01 *** Vrename no longer recurses into CVS or .svn directories. *** Add specparam keyword. [Mark Grossman] **** Add NC-Verilog, and Verilog::Parser tests. * Verilog::Language 2.312 2005-02-04 *** Fix ignoring lines with same line number as end of last include. * Verilog::Language 2.311 2005-01-27 *** Support parsing of signed numbers. [Rudi Rughoonundon] **** Fix resolve_filename misfinding directories. [John Tseng] **** Fix Verilog::Getopt::get_parameters for NC-Verilog. * Verilog::Language 2.310 2005-01-24 ** NEWS is now renamed Changes, to support CPAN indexing. [Offer Kaye] ** Support Verilog 2001 ansi-style port declarations. [Rudi Rughoonundon] ** Pins, nets, ports, and cells accessor methods now return lists rather than internal hash references. This matches earlier documentation, and behavior of the pins_sorted, etc functions. *** SigParser::module callback no longer gets list of ports, instead SigParser::port is called back on each port. *** Add Verilog::GetOpt GCC -U switch for undefining. **** Support SUSE Linux and OS-X. [Jose Renau] * Verilog::Language 2.303 2004-11-18 *** Add vpm --nopli for stripping $pli calls. [Mike Lopresti] * Verilog::Language 2.302 2004-11-10 **** Support Verilog 2001 named instantiation parameters. [Thomas Ziller] * Verilog::Language 2.301 2004-10-26 **** Fix pod documentation errors. [Offer Kaye] * Verilog::Language 2.300 2004-04-01 ** Added vppp preprocessor command. ** Preprocessor is now Verilog 2001 and SystemVerilog 3.1 compliant. Adds arguments to defines, and `include <> syntax. ** Added SystemVerilog 3.1 keywords to Verilog::Language ** Added vrename --keywords and recursion on directory arguments. *** Added to SigParser::module callback "$in_celldefine" 4th argument. Netlist::File sets $module->is_libcell() either if the file is a library or the module is within "`celldefine ... `endcelldefine". *** Added to Verilog::Netlist (metacomment=>{ firstWord=>val, ... }) argument. For each comment that begins with at least two words, Verilog::SigParser calls back attribute() if the first word has a true value in %metacomment. *** Module::attrs_sorted() now returns a list of "category name[ =]..." strings from metacomments between "module" and the first declaration. **** (Verilog::Preproc receives the list of metacomment keywords but does not yet filter the comments for speed.) **** Fixed ` substitution inside define value strings. * Verilog::Language 2.232 2004-03-10 *** Fix newline insertion in vpm $info messages. * Verilog::Language 2.231 2004-01-27 **** Documentation fixes. * Verilog::Language 2.230 2003-10-02 ** Vpm has been changed to use Verilog standard flags. Vpm will no longer recurse all directories, instead it now accepts +incdir+, -v or -f flags as would a regular simulator, and preprocesses all files found. ** Added Netlist::verilog_text for writing netlists. [Phillip Prentice] *** Added Cell/Port/Pin::delete methods for editing netlists. *** Added Netlist::top_modules_sorted method. *** In Netlist, read in library files if cell not found. [John Potter] *** Fix SigParser dropping 1'b0/1'b1 pins. [John Potter] *** In vpm, support $error({"concatenate ","string"}); [Ray Strouble] **** In vpm, fix comments and line numbering in asserts. [Ray Strouble] **** Fix detection of wire assignments. [David Duxstad] * Verilog::Language 2.226 2003-08-19 **** GCC 3.3 fixes * Verilog::Language 2.225 2003-08-12 *** Have Getopt::parameter return unknown arguments from inside -f files. [David Duxstad] *** Change assert_amone/onehot to use faster equation in place of case statement. [Greg Waters] **** Add tri/tri0/tri1 as wire declarative terms. [David Duxstad] **** Redhat 9 and GCC 3.2.2 fixes * Verilog::Language 2.224 2003-05-20 ** Add order based pin/cell connections. [by David Duxstad] * Verilog::Language 2.222 2003-03-06 **** Support instantiations with multiple cell names. [Bruce Nepple] **** Support uppercase radix letters. [Wilson Li] * Verilog::Language 2.221 2003-03-04 **** Fix missing example.cpp file * Verilog::Language 2.220 2003-02-06 *** Support primitives as if they were modules. [Bruce Nepple] *** The link_read_nonfatal=>1 netlist option will prevent missing modules from being errors during link. [Bruce Nepple] *** Add Verilog::Parser support for `protected. [Scott Bleiweiss] **** Update documentation & Netlist example. [Bruce Nepple] * Verilog::Language 2.220 2002-12-27 **** Solaris perl 5.005_03 LD error fixed. [Mark Moe] Solaris note about FILE_OFFSET_BITS. [Simon Curry] **** GCC 3.2 use std compile errors fixed. [Eugene Weber] * Verilog::Language 2.214 2002-10-21 *** Pickup input msb & lsb's. [Joel Earl] **** Fix inclusion of x's in $assert_onehot for verilator. [Ray Strouble] * Verilog::Language 2.213 2002-09-05 **** Support Cygwin (Windows) installations. [Richard Dje] * Verilog::Language 2.212 2002-08-30 *** Fix pin concatenations to not create false pins. [Kenneth Jiang] Concatenations are now just ignored; there is still no way to track pin interconnects where different bus bits end up interconnected differently. * Verilog::Language 2.211 2002-08-19 *** If Verilog::Getopt list accessors are passed a reference, set the entire list to the reference, rather than adding a element. * Verilog::Language 2.210 2002-08-08 **** Cleanups to support GNU Bison 1.35 **** Minor changes for SystemC support * Verilog::Language 2.200 2002-05-03 *** Many fixes to vrename --crypt, including fixing `timescale, comments, and replacement of strings. [Greg Davis] **** Fixed vpm $asserts dropping extra newlines. [Greg Waters] **** Fixed `define substitution bug. * Verilog::Language 2.100 2002-03-11 ** Installation now requires GCC/G++ and Flex. ** Added Verilog::Preproc, a Verilog 2001 Preprocessor. Verilog::Netlist now uses this preprocessor by default. **** Fixed bug with vrename --crypt not working. [Greg Davis] **** Fixed bug with vrename and \ quoted signals. [Greg Davis] * Verilog::Language 2.010 2001-11-16 *** Added netlist interconnectivity checks. * Verilog::Language 2.000 2001-09-17 ** Added the Verilog::Netlist package. This allows for simple scripts to extract pins, module hierarchy, etc from interconnected Verilog files. *** Added Parser reset() method for clearing parse states for new files. [Joe Panec] * Verilog::Language 1.15 2001-10-25 ** Added $assert_req_ack for checking simple handshakes. ** Added --nostop, and made --stop be the default. This adds a $stop to $warn and $error, which is easier for new users to understand as no pli.v is required. * Verilog::Language 1.14 2001-09-17 *** Fixed bug when endmodule/endtask/endfunction have no trailing ;. [Darren Jones] *** Added Verilog 2001 keywords to Verilog::Language. * Verilog::Language 1.13 2001-05-17 *** Added Verilog::Getopt::get_parameter() function. *** Added Verilog::Getopt::file_abs() function. *** Added missing keywords to Verilog::Language: deassign disable extern highz0 highz1 large medium pull0 pull1 release scalared small strong0 strong1 weak0 weak1 * Verilog::Language 1.12 2001-05-15 ** Added new Verilog::Getopt, for standard option parsing. * Verilog::Language 1.11 2001-03-31 *** Fixed \net### hang in Parser. [Mark Lakata] * Verilog::Language 1.10 2001-03-15 *** Fixed line number being incorrect in Parser. [Alan Heinold] * Verilog::Language 1.9 2001-02-13 ** Added Verilog::Language::is_compdirect. [Darren Jones] * Verilog::Language 1.7 2000-11-02 ** Added parametric module support to Parser.pm. [Darren Jones] **** Fixed bug where // comments with no following text broke. [Darren Jones] * Verilog::Language 1.6 2000-09-07 ** Added the vpm preprocessor **** Fixed bug where missing end-quote would hang Verilog::Parser * Verilog::Language 1.5 2000-05-22 ** Allowed non-numerics in bus subscripts [Alan.Heinold, SUN] *** Fixed bug where lines with just a newline would boggle the linecount. * Verilog::Language 1.4 2000-01-21 **** test.pl added ---------------------------------------------------------------------- DESCRIPTION: Documentation on change history for this package ---------------------------------------------------------------------- This uses outline mode in Emacs. See C-h m [M-x describe-mode]. Copyright 2001-2016 by Wilson Snyder. This program is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. Local variables: mode: outline paragraph-separate: "[ \f\n]*$" end: Verilog-Perl-3.418/vpassert0000755000177100017500000014416512654236555015640 0ustar wsnyderwsnyder#!/usr/bin/perl -w # See copyright, etc in below POD section. ###################################################################### require 5.005; use FindBin qw($RealBin); use lib "$RealBin/blib/arch"; use lib "$RealBin/blib/lib"; use lib "$RealBin"; use File::Copy; use FindBin qw($RealBin); use Getopt::Long; use IO::Dir; use IO::File; use POSIX qw(); use Pod::Usage; use strict "vars"; use Verilog::Parser; use Verilog::Getopt; use vars qw ($VERSION $Debug $Opt %Vpassert_Conversions $Vpassert_Conversions_Regexp $Opt_Synthcov $Opt_Vericov @Endmodule_Inserts $Last_Parser $Last_Module $Last_Task $ReqAck_Num $Vericov_Enabled $Got_Change @Sendout %Insure_Symbols %Files %Files_Read %File_Dest ); $VERSION = '3.418'; ###################################################################### # configuration # Hash with key of macro to convert and value of the function to call when it occurs # Avoid having a token that is a substring of a standard function, for example # $wr would be bad (beginning of $write). That would slow down the parsing. %Vpassert_Conversions = (## U versions, to avoid conflicts with SystemVerilog '$uassert' => \&ins_uassert, '$uassert_amone' => sub {shift; uassert_hot(0,@_); }, # atmost one hot '$uassert_onehot' => sub {shift; uassert_hot(1,@_); }, '$uassert_req_ack' => \&ins_uassert_req_ack, '$uassert_info' => \&ins_uassert_info, '$ucheck_ilevel' => \&ins_ucheck_ilevel, '$uerror' => \&ins_uerror, #'$ui' => # Used inside ucover_foreach_clk '$uinfo' => \&ins_uinfo, '$uwarn' => \&ins_uwarn, #'$uassert_clk' => sub {shift; my $clk=shift; my $cond=shift; umessage_clk('%%E', $cond,$clk,@_); }, # May be confusing, try without '$uerror_clk' => sub {shift; umessage_clk('%%E', 0, @_); }, '$uwarn_clk' => sub {shift; umessage_clk('%%W', 0, @_); }, '$ucover_clk' => sub {shift; ucover_clk(@_); }, '$ucover_foreach_clk' => sub {shift; ucover_foreach_clk(@_); }, ); ###################################################################### # main $Debug = 0; my $output_dirname = ".vpassert/"; my $Opt_Quiet = 0; # Don't blab about what files are being worked on my $Opt_Axiom; # Athdl my $Opt_AllFiles = 0; # Preprocess all files my $Opt_Call_Error; my $Opt_Call_Info; my $Opt_Call_Warn; my $Opt_Date = 0; # Check dates my $Opt_NoPli = 0; # Delete all pli calls $Opt_Vericov = 0; # Add vericov on/off comments (messes up line # counts) my $Opt_RealIntent; # RealIntent my $Opt_Stop = 1; # Put $stop in error messages my $Opt_Verilator; # Verilator my $Opt_Vcs; # Vcs my $Last_ArgsDiffer; # Last run's Opt_* mismatch my $Opt_Minimum; # Include `__message_minimum my @Opt_Exclude; my $Opt_Timeformat_Units = undef; my $Opt_Timeformat_Precision = 0; my $Opt_Line; my $Total_Files = 0; my @files = (); my @instance_tests_list = (); my $Prog_Mtime = 0; # Time program last changed, so we bag cache on change (-r "$RealBin/vpassert") or die "%Error: Where'd the vpassert source code go?"; $Prog_Mtime = (stat("$RealBin/vpassert"))[9]; autoflush STDOUT 1; Getopt::Long::config ("no_auto_abbrev","pass_through"); GetOptions ("debug" => \&debug); # Snarf --debug ASAP, before parse -f files $Opt = new Verilog::Getopt(); @ARGV = $Opt->parameter(@ARGV); # Strip -y, +incdir+, etc Getopt::Long::config ("no_auto_abbrev","no_pass_through"); if (! GetOptions ( # When add flags, update _switch_line also as appropriate "-o=s" => \$output_dirname, "allfiles!" => \$Opt_AllFiles, "axiom!" => \$Opt_Axiom, "call-error=s" => \$Opt_Call_Error, "call-info=s" => \$Opt_Call_Info, "call-warn=s" => \$Opt_Call_Warn, "date!" => \$Opt_Date, "debug" => \&debug, "exclude=s" => sub {shift; push @Opt_Exclude, shift;}, "help" => \&usage, "language=s" => sub { shift; Verilog::Language::language_standard(shift); }, "line!" => \$Opt_Line, "minimum!" => \$Opt_Minimum, "nopli!" => \$Opt_NoPli, "realintent!" => \$Opt_RealIntent, "quiet!" => \$Opt_Quiet, "stop!" => \$Opt_Stop, "synthcov!" => \$Opt_Synthcov, "timeformat-precision=s" => \$Opt_Timeformat_Precision, "timeformat-units=s" => \$Opt_Timeformat_Units, "vericov!" => \$Opt_Vericov, "verilator!" => \$Opt_Verilator, "version" => sub { print "Version $VERSION\n"; exit(0); }, "vcs!" => \$Opt_Vcs, "<>" => \¶meter, )) { die "%Error: Bad usage, try 'vpassert --help'\n"; } sub _switch_line { # If any of these flags change, we must regenerate output my $sw = ""; $sw .= " --axiom" if $Opt_Axiom; $sw .= " --call-error=$Opt_Call_Error" if $Opt_Call_Error; $sw .= " --call-info=$Opt_Call_Info" if $Opt_Call_Info; $sw .= " --call-warn=$Opt_Call_Warn" if $Opt_Call_Warn; $sw .= " --line" if $Opt_Line; $sw .= " --minimum=$Opt_Minimum" if defined $Opt_Minimum; $sw .= " --nopli" if $Opt_NoPli; $sw .= " --realintent" if $Opt_RealIntent; $sw .= " --stop" if $Opt_Stop; $sw .= " --synthcov" if $Opt_Synthcov; $sw .= " --timeformat-precision=$Opt_Timeformat_Precision" if $Opt_Timeformat_Precision; $sw .= " --timeformat-units=$Opt_Timeformat_Units" if $Opt_Timeformat_Units; $sw .= " --vericov" if $Opt_Vericov; $sw .= " --verilator" if $Opt_Verilator; $sw .= " --vcs" if $Opt_Vcs; return $sw; } if (!defined $Opt_Line) { $Opt_Line = $Opt_Verilator || Verilog::Language::is_compdirect("`line"); # uses language_standard() } push @files, ($Opt->incdir(), $Opt->library(), $Opt->module_dir()); @files = $Opt->remove_duplicates(@files); (@files) or die "%Error: No directories or files specified for processing, try --help\n"; if ($#files >= 0) { (!-f $output_dirname) or die "%Error: $output_dirname already exists as a file, should be a directory.\n"; vpassert_recursive_prelude($output_dirname); file: foreach my $file (@files) { next if $file eq $output_dirname; foreach my $exclude (@Opt_Exclude) { next file if $file =~ /^$exclude/; } vpassert_recursive ($file, $output_dirname); } vpassert_recursive_postlude($output_dirname); } print "\tVPASSERT generated $Total_Files new file(s)\n"; exit (0); ###################################################################### sub usage { print "Version $VERSION\n"; print "\nThe following tokens are converted:\n"; foreach my $tok (sort keys %Vpassert_Conversions ) { print "\tToken $tok\n"; } print "\n"; pod2usage(-verbose=>2, -exitval=>2, -output=>\*STDOUT, -noperldoc=>1); exit (1); } sub debug { $Debug = 1; $Verilog::Parser::Debug = 1; $Opt_Quiet = 0; } sub parameter { my $param = shift; (-r $param) or die "%Error: Can't open $param"; push @files, "$param"; # Must quote to convert Getopt to string, bug298 } ###################################################################### ###################################################################### ###################################################################### ###################################################################### ###################################################################### ###################################################################### # Functions that transform the tokens # Note -I is specially detected below sub ins_uinfo { shift; sendout( message (get_lineinfo(), 1, '-I', 1, "", @_)); } sub ins_uwarn { shift; sendout( message (get_lineinfo(), 1, '%%W', 1, "", @_)); } sub ins_uerror { shift; sendout( message (get_lineinfo(), 1, '%%E', 1, "", @_)); } sub ins_uassert { shift; my $cond = shift; my @params = @_; sendout( message (get_lineinfo(), 1, '%%E', $cond, "", 0, @params)); } sub ins_uassert_info { shift; my $cond = shift; my @params = @_; # Lower case -i indicates it's a assert vs. a info sendout( message (get_lineinfo(), 1, "-i", $cond, "", 0, @params)); } sub check_signame { my $sig = shift; return undef if !$sig; return $1 if ($sig =~ /^\s*([a-zA-Z_\$][a-z0-9A-Z_\$]*)\s*$/); return undef; } sub ins_uassert_req_ack { shift; my @params = @_; # Check parameters my $req = check_signame(shift @params); my $ack = check_signame(shift @params); ($req && $ack) or die "%Error: ".$Last_Parser->fileline.": Format of \$uassert_req_ack boggled.\n"; @params = map { my $ipar = $_; $ipar = check_signame($ipar); ($ipar) or die "%Error: ".$Last_Parser->fileline.": Parameter $ipar isn't a signal\n"; $ipar; } @params; # Form new variables $ReqAck_Num or die "%Error: ".$Last_Parser->fileline.": \$uassert_req_ack can't find module statement\n"; my $busy = "_assertreqack${ReqAck_Num}_busy_r"; $Insure_Symbols{$Last_Module}{$busy} = ['reg', 0]; # Make this symbol exist if doesn't # We make a parity across all data signals, as we don't have the width # of the original signal, and I'm too lazy to add code to find it out. my @dholds = (); for (my $n=0; $n<=$#params; $n++) { my $dhold = "_assertreqack${ReqAck_Num}_data${n}_r"; push @dholds, $dhold; $Insure_Symbols{$Last_Module}{$dhold} = ['reg', 0]; } # Output it sendout(message_header()); push @Sendout, [$Last_Parser->lineno, ""]; # Make sure message_header newlines leave us in right place sendout("if (`__message_on) begin "); # Need to wait till after reset, so FSM doesn't start sendout("casez({($busy),($req),($ack)}) "); sendout(" 3'b000: ;"); sendout(" 3'b010: $busy<=1'b1;"); sendout(" 3'b011: "); ins_uerror(0,"\"Unexpected $req coincident with $ack\\n\""); sendout(" 3'b001: "); ins_uerror(0,"\"Unexpected $ack with no request pending\\n\""); sendout(" 3'b100: ;"); sendout(" 3'b11?: "); ins_uerror(0,"\"Unexpected $req with request already pending\\n\""); sendout(" 3'b101: $busy<=1'b0;"); sendout("endcase "); if ($#params>=0) { sendout(" if (($req)||($busy)) begin"); sendout(" if (($busy)) begin"); for (my $n=0; $n<=$#params; $n++) { sendout(" if ($dholds[$n] != ^($params[$n])) "); ins_uerror(0,"\"Unexpected transition of $params[$n] during transaction\\n\""); } sendout(" end"); # Save state of signals for (my $n=0; $n<=$#params; $n++) { sendout(" $dholds[$n] <= ^($params[$n]);"); } sendout(" end "); } sendout(" end "); sendout(message_trailer()); $ReqAck_Num++; } sub ins_ucheck_ilevel { shift; # $ucheck_ilevel my $level = shift; my $chk = "/*vpassert*/if ((`__message_on) && "; $chk .= ' && (`__message_minimum >= (' . $level . '))' if $Opt_Minimum; $chk = $chk . '(__message >= (' . $level . ')))'; sendout ($chk); } sub uassert_hot { my $check_nohot = shift; my @params = @_; my $text = ""; my ($elem,$i,$ptemp,$plist,$pnone); my $len = 0; my @cl = (); while ($elem = shift @params){ $elem =~ s/^\s*//; if ($elem =~ /^\"/){ # beginning quote $elem =~ s/\"//g; $text .= $elem; last; }else{ foreach my $subel (split ',', $elem) { $len = $len + bitwidth($subel); } push @cl, $elem; }; } # We use === so that x's will properly cause error messages my $vec = "({".join(",",@cl)."})"; sendout("if (($vec & ($vec - ${len}'b1)) !== ${len}'b0 && `__message_on) "); ins_uerror(0,"\"MULTIPLE ACTIVE %b --> $text\\n\"",$vec); if ($check_nohot==1){ sendout("if ($vec === ${len}'b0 && `__message_on) "); ins_uerror(0,"\"NONE ACTIVE %b --> $text\\n\"",$vec); } } sub umessage_clk { my $char = shift; my $cond = shift; my $clk = shift; my @params = @_; $params[0] = convert_concat_string($params[0]); ($params[0] =~ /^\s*\"/) or die "%Error: ".$Last_Parser->fileline.": Non-string \$message second argument: $params[0]\n"; $ReqAck_Num or die "%Error: ".$Last_Parser->fileline.": \$uassert_req_ack can't find module statement\n"; my $sig = "_umessageclk${ReqAck_Num}"; $Insure_Symbols{$Last_Module}{$sig} = ['reg', 0]; # Make this symbol exist if doesn't $ReqAck_Num++; if ($cond eq '0') { sendout("/*vpassert*/$sig=1'b1;/*vpassert*/"); } else { sendout("/*vpassert*/$sig=!($cond);/*vpassert*/"); } _insert_always_begin('assert', "/*vpassert*/ $sig=1'b0; /*vpassert*/"); my $bot = (" always @ (posedge $clk) if ($sig) " .message (get_lineinfo(), 1, $char, 1, "", @_) ." "); push @Endmodule_Inserts, [0, $bot]; } sub ucover_foreach_clk { my $clk = shift; my $label = shift; my $range = shift; my $expr = shift; $#_==-1 or die "%Error: ".$Last_Parser->fileline.": Extra arguments to \$ucover_foreach_clk: $_[0]\n"; # We require quotes around the label so synthesis tools won't gripe if not wrapping in vpassert # (Otherwise it would look like a system call with a variable of the name of the label.) ($label =~ s/^\s*\"([a-zA-Z][a-zA-Z0-9_]+)\"\s*$/$1/) or die "%Error: ".$Last_Parser->fileline.": Non-string label \$ucover_clk second argument: $label\n"; ($range =~ s/^\s*\"\s*(\d[0-9,:]+)\s*\"\s*$/$1/) or die "%Error: ".$Last_Parser->fileline.": Can't parse msb:lsb in \$ucover_foreach_clk: $range\n"; my @values = _convert_foreach_comma($range); foreach my $i (@values) { my $nexpr = $expr; $nexpr =~ s/\$ui\b/($i)/g or die "%Error: ".$Last_Parser->fileline.": No \$ui in \$ucover_foreach_clk expression: $expr\n"; _ucover_clk_guts($clk, $label."__".$i, "(${nexpr})"); } } sub ucover_clk { my $clk = shift; my $label = shift; $#_==-1 or die "%Error: ".$Last_Parser->fileline.": Extra arguments to \$ucover_clk: $_[0]\n"; # We require quotes around the label so synthesis tools won't gripe if not wrapping in vpassert # (Otherwise it would look like a system call with a variable of the name of the label.) ($label =~ s/^\s*\"([a-zA-Z][a-zA-Z0-9_]+)\"\s*$/$1/) or die "%Error: ".$Last_Parser->fileline.": Non-string label \$ucover_clk second argument: $label\n"; _ucover_clk_guts($clk,$label, "1'b1"); } sub _ucover_clk_guts { my $clk = shift; my $label = shift; my $expr = shift; $ReqAck_Num or die "%Error: ".$Last_Parser->fileline.": \$ucover_clk can't find module statement\n"; my $sig = "_ucoverclk${ReqAck_Num}"; $Insure_Symbols{$Last_Module}{$sig} = ['reg', 0]; # Make this symbol exist if doesn't $ReqAck_Num++; sendout("/*vpassert*/$sig=${expr};/*vpassert*/"); _insert_always_begin('cover', "/*vpassert*/ $sig=1'b0; /*vpassert*/"); # Note correct `line is required to see correct cover point push @Endmodule_Inserts, [$Last_Parser->lineno," $label: cover property (@(posedge $clk) ($sig));\n"]; } sub _insert_always_begin { my $for_assert = shift; my $text = shift; my $beginl; for (my $l = $#Sendout; $l>=0; $l--) { my $tok = $Sendout[$l][1]; #print "HUNT $l: ".($beginl||"").": $tok\n"; # Fortunately all comments must be a single array entry $tok =~ s!//.*?\n!!go; $tok =~ s!/\*.*?\*/$!!go; if ($tok =~ /\bbegin\b/) { $beginl = $l; } if ($tok =~ /\b(if|initial|final)\b/) { $beginl = undef; } if ($tok =~ /\bposedge\b/) { if ($for_assert ne 'cover') { die "%Error: ".$Last_Parser->fileline.": \$uerror_clk is under a posedge clk, use \$uerror instead\n"; } } if ($tok =~ /\balways\b/) { last if !defined $beginl; # And die below my $insert = $text; $Sendout[$beginl][1] =~ s/(\bbegin\b)/$1$insert/; return; } } die "%Error: ".$Last_Parser->fileline.": \$uerror_clk is not somewhere under an 'always begin' block\n"; } sub get_lineinfo { # Align the lineinfo so that right hand sides are aligned my $message_filename = $Last_Parser->filename; $message_filename =~ s/^.*\///g; my $lineinfo = substr ($message_filename, 0, 17); # Don't make too long $lineinfo = $lineinfo . sprintf(":%04d:", $Last_Parser->lineno ); $lineinfo = sprintf ("%-21s", $lineinfo); } use vars qw($Msg_Header_Level); sub coverage_off { my $subcall = shift; my $out = ""; if (!$Msg_Header_Level) { $out .= "/*summit modcovoff -bpen*/\n" if $Vericov_Enabled; $out .= "/*ri userpass BE on*/\n" if $Opt_RealIntent; $out .= "/*VCS coverage off*/\n" if $Opt_Vcs; $out .= "/*ax_line_coverage_off*/\n" if $Opt_Axiom; $out .= "/*verilator coverage_off*/\n" if $Opt_Verilator && !$subcall; $out = "\n".$out if $out; $out .= "/*vpassert*/"; $Got_Change = 1; } $Msg_Header_Level++; return $out; } sub coverage_on { my $subcall = shift; my $out = ""; if ((--$Msg_Header_Level)==0) { $out .= "/*verilator coverage_on*/\n" if $Opt_Verilator && !$subcall; $out .= "/*VCS coverage on*/\n" if $Opt_Vcs; $out .= "/*ax_line_coverage_on*/\n" if $Opt_Axiom; $out .= "/*ri userpass BE off*/\n" if $Opt_RealIntent; $out .= "/*summit modcovon -bpen*/\n" if $Vericov_Enabled; $out = "\n".$out if $out; $out = '/*vpassert*/'.$out; } return $out; } sub message_header { my $off = coverage_off(1); my $out = $off; $out .= "begin "; $out .= "/*verilator coverage_block_off*/" if ($Opt_Verilator && $off); return $out; } sub message_trailer { my $out = 'end '; $out .= coverage_on(1); return $out; } sub message { my $lineinfo = shift; my $show_id = shift; my $char = shift; my $cond = shift; my $otherargs = shift; my @params = @_; # Level, printf string, args if ($params[0] =~ /^\s*\"/) { # No digit in first parameter # Push new parameter [0] as a 0. unshift @params, '0'; } $params[1] = convert_concat_string($params[1]); unless ($char =~ /^-I/i) { if ($params[1] =~ s/\s*\"\s*$//) { # For a well-formed message, $params[1] now ends in "\\n". $params[1] .= "\\n" if $params[1] !~ /\\n$/; $params[1] = $params[1]."${char}: In %m\\n\""; } } ($params[0] =~ /^\s*[0-9]/) or die "%Error: ".$Last_Parser->fileline.": Non-numeric \$message first argument: $params[0]\n"; ($params[1] =~ /^\s*\"/) or die "%Error: ".$Last_Parser->fileline.": Non-string \$message second argument: $params[1]\n"; my $out = message_header(); # These long lines without breaks are intentional; I want to preserve line numbers my $is_warn = (($char eq '%%E') || ($char eq '%%W') || ($char eq "-i")); if ($cond ne "1") { # Conditional code, for $uassert # Note this will only work in RTL code! $out .= "if (!($cond) && (`__message_on)) "; } elsif ($params[0] =~ /^\s*0\s*$/) { # Always enabled if ($is_warn) { $out .= "if (`__message_on) "; } } else { # Complex test $Insure_Symbols{$Last_Module}{__message} = ['integer',5]; # Make this symbol exist if doesn't my $chk = 'if ((__message >= (' . $params[0] . '))'; $chk .= ' && (`__message_minimum >= (' . $params[0] . '))' if $Opt_Minimum; $chk .= " && (`__message_on) " if $is_warn; $chk .= ') '; $out .= $chk; } my $task; my $call; if (($char eq '-I') || ($char eq '-i')) { if ($Opt_Call_Info) { $call = $Opt_Call_Info; } } elsif ($char eq '%%E') { if ($Opt_Call_Error) { $call = $Opt_Call_Error; } else { $task = ($Opt_Stop ? '$stop;' : "`pli.errors = `pli.errors+1;"); } } elsif ($char eq '%%W') { if ($Opt_Call_Error) { $call = $Opt_Call_Warn; } else { $task = ($Opt_Stop ? '$stop;' : "`pli.warnings = `pli.warnings+1;"); } } else { die "%Error: Unknown message character class '$char'\n"; } { # if's body $out .= "begin"; $out .= " \$timeformat($Opt_Timeformat_Units, $Opt_Timeformat_Precision,\"\",20);" if defined $Opt_Timeformat_Units; $out .= " \$write (\"[%0t] ${char}:${lineinfo} " if !$call; $out .= " ${call} (\"" if $call; my $par = $params[1]; $par =~ s/^\s*\"//; $out .= "$par"; $out .= ",\$time" if !$call; $out .= $otherargs; for my $parn (2 .. $#params) { my $p = $params[$parn]; $out .= ", $p"; print "MESSAGE $char, Parameter $p\n" if ($Debug); } $out .= ');'; $out .= $task if $task; $out .= ' end '; } $out .= message_trailer(); return $out; } ###################################################################### sub _convert_foreach_comma { my $in = shift; # Similar to Verilog::Language::split_bus my @out; $in =~ s/\s+//g; while ($in =~ s!,?(((\d+):(\d+))|(\d+))!!) { if (defined $3 && defined $4) { if ($3<$4) { foreach (my $i=$3; $i<=$4; $i++) { push @out, $i; } } else { foreach (my $i=$3; $i>=$4; $i--) { push @out, $i; } } } elsif (defined $5) { push @out, $5; } } $in eq "" or die "%Error: ".$Last_Parser->fileline.": Strange range expression: $in\n"; return @out; } sub convert_concat_string { my $string = shift; # Convert {"string"} or {"str","in","g"} to just "string" # Beware embedded quotes "\"" return $string if ($string !~ /^\s*\{\s*(\".*)\s*\}\s*$/); my $in = $1; my $out = ""; my $quote; my $slash; for (my $i=0; $ilineno, $string]; $Got_Change = 1; } ###################################################################### ###################################################################### ###################################################################### ###################################################################### sub form_conversions_regexp { # Create $Vpassert_Conversions_Regexp, a regexp that matches any of the conversions # This regexp will allow us to quickly look at the file and ignore it if no matches my $re = ''; my $last_tok = "\$ignore"; foreach my $tok (sort (keys %Vpassert_Conversions)) { ($tok =~ s/^\$//) or die "%Error: Vpassert_Conversion $tok doesn't have leading \$\n"; if (substr ($tok, 0, length($last_tok)) eq $last_tok) { #print "Suppress $tok $last_tok\n" if $Debug; } else { $re .= "|" if $re; $re .= '\$'.$tok; $last_tok = $tok; } } if ($Opt_NoPli) { $re .= "|" if $re; $re .= '\$'; } if ($Opt_Synthcov) { $re .= "|" if $re; $re .= 'SYNTHESIS'; } $re = "(".$re.")"; $re = "\$NEVER_MATCH_ANYTHING" if $re eq '\$()'; #print "CV REGEXP $re\n" if $Debug; $Vpassert_Conversions_Regexp = qr/$re/; } sub vpassert_process { # Read all signals in this filename # Return TRUE if the file changed my $filename = shift; my $outname = shift; $Got_Change = shift; # True if should always write output, not only if have change if ($outname =~ /[\/\\]$/) { # Directory, not file, so append filename my $basename = $filename; $basename =~ s/.*[\/\\]//g; $outname .= $basename; } print "vpassert_process ($filename, $outname, $Got_Change)\n" if ($Debug); ($filename ne $outname) or die "%Error: $filename: Would overwrite self."; @Sendout = (); $Msg_Header_Level = 0; @instance_tests_list = (); # Set up parsing my $parser = new Verilog::Vpassert::Parser; $parser->filename($filename); $parser->lineno(1); $Last_Parser = $parser; # Open file for reading and parse it my $fh = IO::File->new("<$filename") or die "%Error: $! $filename."; if (!$Got_Change) { while (<$fh>) { goto diff if (/$Vpassert_Conversions_Regexp/); } print "$filename: No dollars, not processing\n" if ($Debug); return; diff: $fh->seek(0,0); $. = 1; } while (my $line = $fh->getline() ) { $parser->parse ($line); } $parser->eof; push @Sendout, [$Last_Parser->lineno, $parser->unreadback()]; $parser->unreadback(''); $fh->close; # Hack the output text to add in the messages variable foreach my $mod (sort keys %Insure_Symbols) { my $insert=""; my $n=0; # Some compilers choke if lines get too long; foreach my $sym (sort keys %{$Insure_Symbols{$mod}}) { #if ! $module_symbols{$sym} # For now always put it in my $type = $Insure_Symbols{$mod}{$sym}[0]; my $value = $Insure_Symbols{$mod}{$sym}[1]; $insert .= "$type $sym; initial $sym = $value;"; if (++$n > 10) { $insert .= "\n"; $n=0; } } if ($insert) { my $hit; for (my $l = $#Sendout; $l>=0; $l--) { my $tok = $Sendout[$l][1]; if ($tok =~ m%/\*vpassert beginmodule $mod\*/%) { my $lineno = $Sendout[$l][0]; if ($Opt_Line) { $insert .= "\n`line ".$lineno." \"".$Last_Parser->filename."\" 0\n"; } $tok =~ s%/\*vpassert beginmodule $mod\*/%/*vpassert*/$insert%g or die; # Must exist, found above! $Sendout[$l][1] = $tok; $hit = 1; # Don't exit the loop, keep looking for more. # It's possible there's a `ifdef with multiple "module x" headers } } $hit or die "vpassert %Error: $filename: Couldn't find symbol insertion point in $mod\n"; } } $#Endmodule_Inserts < 0 or die "vpassert %Error: $filename: Couldn't find endmodule\n"; # Put out the processed file print "Got_Change? $Got_Change $outname\n" if ($Debug); if ($Got_Change) { my $date = localtime; $fh->open(">$outname") or die "%Error: Can't write $outname."; my $curline = -1; my $needline = 1; # No newline so line counts not affected print $fh "/* Generated by vpassert; File:\"$filename\" */"; my @out; foreach my $outref (@Sendout) { #print "CL $curline WL $outref->[0] TT $outref->[1]\n"; if ($outref->[0]) { $needline = $outref->[0]; } if ($curline != $needline) { push @out, "\n`line $needline \"$filename\" 0\n" if $Opt_Line; $curline = $needline; } push @out, $outref->[1]; $curline++ while ($outref->[1] =~ /\n/g); } my $out = join('',@out); # Simplify redundant `lines to save space $out =~ s%(\`line[^\n]*)\n[ \t\n]*(\`line[^\n]*\n)%$2%mg; $out =~ s%\n+(\n\`line[^\n]*)%$1%mg; print $fh $out; $fh->close; if (defined $Files{$filename}{mtime}) { utime $Files{$filename}{mtime}, $Files{$filename}{mtime}, $outname; } } return $Got_Change; } #---------------------------------------------------------------------- sub bitwidth { # Take a string like "{foo[5:0],bar} and return bit width (7 in this case) my $statement = shift; my $bits = 0; foreach my $sig (split /,\{\]/, $statement) { if ($sig =~ /[a-z].* \[ (-?[0-9]+) : (-?[0-9]+) \]/x) { $bits += ($1 - $2) + 1; } elsif ($sig =~ /[a-z]/) { $bits ++; } } return $bits; } #---------------------------------------------------------------------- #---------------------------------------------------------------------- #---------------------------------------------------------------------- sub vpassert_db_read_file { # Read when the unprocessed files were last known to not need processing my $filename = shift; my $fh = IO::File->new("<$filename") or return; # no error if fails while (my $line = $fh->getline) { chomp $line; if ($line =~ /^switch\s*(.*$)/) { my $old = $1; my $now = _switch_line(); $old =~ s/\s+//g; $now =~ s/\s+//g; $Last_ArgsDiffer = ($old ne $now); } else { my ($tt_cmd, $tt_file, $tt_mtime, $tt_size) = split(/\t/,$line); $tt_cmd .= ""; # Warning removal $Files_Read{$tt_file}{mtime} = $tt_mtime; $Files_Read{$tt_file}{size} = $tt_size; } } $fh->close; } sub vpassert_db_write_file { # Save which unprocessed files did not need processing my $filename = shift; my $fh = IO::File->new(">$filename") or die "%Error: $! $filename.\n"; $fh->print ("switch\t"._switch_line()."\n"); foreach my $file (sort (keys %Files)) { next if !$Files{$file}{mtime}; $fh->print ("unproc\t$file\t$Files{$file}{mtime}\t$Files{$file}{size}\n"); } $fh->close; } #---------------------------------------------------------------------- sub vpassert_recursive_prelude { # What to do before processing any files my $destdir = shift; $destdir .= "/" if ($destdir !~ /[\\\/]$/); %Files = (); %Files_Read = (); vpassert_db_read_file ("${destdir}/.vpassert_skipped_times"); form_conversions_regexp(); if (! -d $destdir) { mkdir ($destdir,0777) or die "%Error: Can't mkdir $destdir\n"; } # Don't include directory in time saving, as path may change dep how run my $dest_mtime = $Files_Read{"vpassert"}{mtime} || 0; if (!$Opt_Date || ($Prog_Mtime > $dest_mtime) || $Last_ArgsDiffer) { # Flush the whole read cache %Files_Read = (); print "\t VPASSERT (or overall flags) changed... Two minutes...\n"; print "\t Mtime = $Prog_Mtime\n" if $Debug; } #print "FF $Opt_Date, $Prog_Mtime, $dest_mtime, $Opt_Vericov, $Last_Vericov\n"; $Files{"vpassert"}{mtime} = $Prog_Mtime; $Files{"vpassert"}{size} = 1; } sub vpassert_recursive_postlude { my $destdir = shift; $destdir .= "/" if ($destdir !~ /[\\\/]$/); # What to do after processing all files # Check for deletions foreach my $srcfile (sort keys %Files_Read) { if ($Files_Read{$srcfile}{mtime} && !$Files{$srcfile}{mtime}) { (my $basefile = $srcfile) =~ s/.*\///; my $destfile = "$destdir$basefile"; # A file with the same basename may now be in a different dir, # and already processed, so don't delete it. if (!$File_Dest{$destfile}) { print "\t vpassert: Deleted? $srcfile\n" if !$Opt_Quiet; unlink $destfile; } } } vpassert_db_write_file ("${destdir}/.vpassert_skipped_times"); } sub vpassert_recursive { # Recursively process this directory or file argument my $srcdir = shift; my $destdir = shift; print "Recursing $srcdir $destdir\n" if ($Debug); if (-d $srcdir) { $srcdir .= "/" if ($srcdir !~ /[\\\/]$/); $destdir .= "/" if ($destdir !~ /[\\\/]$/); my $dh = new IO::Dir $srcdir or die "%Error: Could not directory $srcdir.\n"; while (defined (my $basefile = $dh->read)) { my $srcfile = $srcdir . $basefile; if ($Opt->libext_matches($srcfile)) { next if -d $srcfile; vpassert_process_one($srcfile, $destdir); } } $dh->close(); } else { # Plain file vpassert_process_one ($srcdir, $destdir, 1); } } use vars (qw(%file_directory)); sub vpassert_process_one { # Process one file, keeping cache consistent my $srcfile = shift; my $destdir = shift; (my $basefile = $srcfile) =~ s!.*[/\\]!!; my $destfile = "$destdir$basefile"; $File_Dest{$destfile} = 1; my @stat = (stat($srcfile)); my $src_mtime = $stat[9] || 0; my $src_size = $stat[7] || 0; my $dest_mtime = $Files_Read{$srcfile}{mtime} || 0; # Mark times #print "BCK $basefile $src_mtime, $dest_mtime\n"; $Files{$srcfile}{mtime} = $src_mtime; $Files{$srcfile}{size} = $src_size; if ($src_mtime != $dest_mtime || $src_size != $Files_Read{$srcfile}{size}) { my $no_output = 0; unlink $destfile; $Total_Files++; if (! vpassert_process ($srcfile, $destfile, $Opt_AllFiles)) { # Didn't need to do processing $no_output = 1; print "nooutput: vpassert_process ($srcfile, $destfile,0 )\n" if ($Debug); nochange_copy($srcfile,$destfile); } else { # Make sure didn't clobber another directory's file print "madenew: vpassert_process ($srcfile, $destfile,0 )\n" if ($Debug); if ($file_directory{$destfile}) { my $old = $file_directory{$destfile}; die "%Error: Two files with same basename: $srcfile, $old\n"; # This warning is to prevent search order dependence in the # verilog search path. It also makes sure we don't clobber # one file with another by the same name in the .vpassert directory } } if (!$Opt_Quiet) { print " VPASSERT'ing file ($Total_Files) $srcfile ", ($dest_mtime ? "(Changed)":"(New)"), ($no_output ? " (no-output)" : ""),"\n"; } } $file_directory{$destfile} = $srcfile; } sub nochange_copy { my $srcfile = shift; my $dstfile = shift; my $fhw = IO::File->new(">$dstfile"); my $fhr = IO::File->new("<$srcfile"); if (!$fhr) { warn "%Warning: $! $srcfile\n"; return; } $fhw->print("`line 1 \"$srcfile\" 0\n") if $Opt_Line; # Unfortunately File::Copy::copy overwrites our line statement. my $eof; my $chunk = POSIX::BUFSIZ; # On 5.8.8 this isn't a number but text $chunk = 8*1024 if $chunk !~ /^\d+$/; while (!$eof) { my $data = ''; $!=undef; my $rv = $fhr->sysread($data, $chunk, 0); #print "RRV=$rv b=$!\n" if $Debug; $eof = 1 if !$rv || (!$fhr || ($! && $! != POSIX::EWOULDBLOCK)); $fhw->print($data); } } ###################################################################### ###################################################################### ###################################################################### ###################################################################### # Parser functions called by Verilog::Parser package Verilog::Vpassert::Parser; ## no critic require Exporter; use Verilog::Parser; use base qw(Verilog::Parser); BEGIN { # Symbols to alias to global scope use vars qw(@GLOBALS); @GLOBALS = qw ( $Debug @Sendout $Last_Task $Last_Module $Opt_Vericov $Opt_Synthcov $ReqAck_Num $Vericov_Enabled %Vpassert_Conversions %Insure_Symbols @Endmodule_Inserts ); foreach (@GLOBALS) { my ($type,$sym) = /^(.)(.*)$/; *{"$sym"} = \${"::$sym"} if ($type eq "\$"); *{"$sym"} = \%{"::$sym"} if ($type eq "%"); *{"$sym"} = \@{"::$sym"} if ($type eq "@"); } } use strict; use vars (@GLOBALS, qw ( $Last_Keyword $Last_Lineno $Last_Prekwd @Last_Symbols @Last_Number_Ops $Need_Vpassert_Symbols @Params $Param_Num $Parens $PreLevel @PreCovOff $In_Message )); use Verilog::Parser; sub new { my $class = shift; my $self = $class->SUPER::new(); bless $self, $class; # State of the parser # These could be put under the class, but this is faster and we only parse # one file at a time @Endmodule_Inserts = (); $Last_Keyword = ""; $Last_Lineno = 0; $Last_Prekwd = 0; @Last_Symbols = (); @Last_Number_Ops = (); $Last_Task = ""; $Last_Module = ""; $Vericov_Enabled = $Opt_Vericov; $Need_Vpassert_Symbols = 0; $Param_Num = 0; $Parens = 0; $PreLevel = 0; @PreCovOff = (); $In_Message = 0; #%module_symbols = (); %Insure_Symbols = (); @Params = (); return $self; } sub keyword { # Callback from parser when a keyword occurs my ($parser, $token) = @_; my $since = $parser->unreadback(); $parser->unreadback(''); $Last_Keyword = $token; @Last_Symbols = (); @Last_Number_Ops = (); if ($Opt_Vericov && (($token eq "case") || ($token eq "casex") || ($token eq "casez"))) { push @Sendout, [$Last_Lineno, $since]; push @Sendout, [$Last_Lineno, "\n/*summit implicit off*/\n"] if $Vericov_Enabled; push @Sendout, [$Last_Lineno, $token]; } elsif ($Opt_Vericov && ($token eq "endcase")) { push @Sendout, [$Last_Lineno, $since . $token]; push @Sendout, [$Last_Lineno, "\n/*summit implicit on*/\n"] if $Vericov_Enabled; } elsif ($token eq "endmodule") { if ($#Endmodule_Inserts >= 0) { push @Sendout, @Endmodule_Inserts; @Endmodule_Inserts = (); } push @Sendout, [$Last_Lineno, $since . $token]; } else { push @Sendout, [$Last_Lineno, $since . $token]; } $Last_Lineno = $parser->lineno; } sub symbol { # Callback from parser when a symbol occurs my ($parser, $token) = @_; my $since = $parser->unreadback(); $parser->unreadback(''); if ($In_Message) { $Params[$Param_Num] .= $since . $token; } else { if ($Vpassert_Conversions {$token} || ($Opt_NoPli && $token =~ /^\$/ && $Parens==0)) { push @Sendout, [$Last_Lineno, $since]; print "Callback SYMBOL $token\n" if ($Debug); $In_Message = 1; $Param_Num = 1; @Params = (); $Params[0] = $token; } else { # Actually a keyword; we check for that too push @Sendout, [$Last_Lineno, $since . $token]; } } if ($Last_Keyword eq "task") { $Last_Task = $token; $Last_Keyword = ""; $Parens = 0; } if ($Last_Keyword eq "module") { $Last_Module = $token; $Last_Keyword = ""; $Need_Vpassert_Symbols = 1; $ReqAck_Num = 1; $Parens = 0; } if ($Last_Prekwd) { if ($Last_Prekwd eq "`ifdef" || $Last_Prekwd eq "`elsif" || $Last_Prekwd eq "`ifndef") { if ($token eq "SYNTHESIS") { my $ndef = ($Last_Prekwd eq "`ifndef"); $PreCovOff[$PreLevel] = $ndef; if ($PreCovOff[$PreLevel] && $Opt_Synthcov) { push @Sendout, [0, ::coverage_off(0)]; } } else { $PreCovOff[$PreLevel] = 0; } } $Last_Prekwd = 0; } push @Last_Symbols, $token; $Last_Lineno = $parser->lineno; } sub number { # Callback from parser when a number occurs my ($parser, $token) = @_; my $since = $parser->unreadback(); $parser->unreadback(''); if ($In_Message) { print "Callback NUMBER $token\n" if ($Debug); $Params[$Param_Num] .= $since . $token; } else { push @Sendout, [$Last_Lineno, $since . $token]; } push @Last_Number_Ops, $token; $Last_Lineno = $parser->lineno; } sub operator { # Callback from parser when a operator occurs my ($parser, $token) = @_; my $since = $parser->unreadback(); $parser->unreadback(''); if ($In_Message) { print "Callback OPERATOR $token ($Parens, $Param_Num)\n" if ($Debug); if (($token eq ',') && ($Parens==1)) { # Top level comma $Params[$Param_Num] .= $since; $Param_Num ++; } elsif (($token eq ';' && ($Parens==0))) { # Final statement close if ($In_Message) { if ($Opt_NoPli) { # "" doesn't work, as need semi for "if (1) $x()" # ";" doesn't work, as need empty for "begin $x() end" ::sendout ("begin end "); for (my $p=0; $p<=$#Params; $p++) { while ($Params[$p]=~/\n/g) { ::sendout("\n"); } } } elsif (defined $Vpassert_Conversions {$Params[0]}) { #print " CALLPRE ",join(':',@Params),"\n" if $Debug; my $nl = ""; for (my $p=0; $p<=$#Params; $p++) { while ($Params[$p]=~/\n/g) { $nl .= "\n"; } $Params[$p] = Verilog::Language::strip_comments($Params[$p]); $Params[$p]=~ s/\n//g; } my $func = $Vpassert_Conversions {$Params[0]}; print " CALL ",join(':',@Params),"\n" if $Debug; &$func (@Params); ::sendout ($nl) if $nl; # Adjust for \n's in params } else { ::sendout (""); } } $In_Message=0; } elsif (($token eq ')' || $token eq '}') && ($Parens==1)) { # Final paren $Params[$Param_Num] .= $since; } elsif ($token eq ')' || $token eq '}') { # Other paren $Params[$Param_Num] .= $since . $token; } elsif ($token eq '(' || $token eq '{') { if ($Parens!=0) { $Params[$Param_Num] .= $since . $token; } } else { $Params[$Param_Num] .= $since . $token; } } elsif ($Need_Vpassert_Symbols && ($token eq ';')) { $Need_Vpassert_Symbols = 0; # Squeeze it after module (..); push @Sendout, [$Last_Lineno, $since . $token . '/*vpassert beginmodule '.$Last_Module.'*/']; } else { push @Sendout, [$Last_Lineno, $since . $token]; } # Track parens if ($token eq '(' || $token eq '{') { $Parens++; } elsif ($token eq ')' || $token eq '}') { $Parens--; } push @Last_Number_Ops, $token; $Last_Lineno = $parser->lineno; } sub string { # Callback from parser when a string occurs my ($parser, $token) = @_; my $since = $parser->unreadback(); $parser->unreadback(''); if ($In_Message) { print "Callback STRING $token\n" if ($Debug); $Params[$Param_Num] .= $since . $token; } else { push @Sendout, [$Last_Lineno, $since . $token]; if (($Last_Keyword eq "`include") && ($token =~ /\//)) { print STDERR "%Warning: ".$parser->fileline.": `include has directory," . " remove and add +incdir+ to input.vc\n"; } } $Last_Lineno = $parser->lineno; } sub comment { # Callback from parser when a comment # *** To speed things up, this is only invoked when doing vericov my ($parser, $token) = @_; if (!$Opt_Vericov && $token !~ /_coverage_/) { $parser->unreadback($parser->unreadback() . $token); return; } my $since = $parser->unreadback(); $parser->unreadback(''); if ($Opt_Vericov) { if ($token =~ /summit\s+modcovon/ || $token =~ /simtech\s+modcovon/) { $Vericov_Enabled = 1; } elsif ($token =~ /summit\s+modcovoff/ || $token =~ /simtech\s+modcovoff/) { $Vericov_Enabled = 0; } } push @Sendout, [$Last_Lineno, $since . $token]; if ($token =~ /\b(cn|vp)_coverage_(off|on)/) { if ($2 eq 'off') { push @Sendout, [0, ::coverage_off(0)]; } else { push @Sendout, [0, ::coverage_on(0)]; } } $Last_Lineno = $parser->lineno; } sub preproc { my ($self, $token) = @_; if (Verilog::Language::is_compdirect($token)) { my $since = $self->unreadback(); $self->unreadback(''); # Close previous endif if ($Opt_Synthcov) { # Else accelerate if ($token eq "`elsif" || $token eq "`else" || $token eq "`endif") { if ($PreCovOff[$PreLevel] && $Opt_Synthcov) { push @Sendout, [0, ::coverage_on(0)]; } $PreLevel--; } } # Current token push @Sendout, [$Last_Lineno, $since . $token]; # Begin new endif if ($Opt_Synthcov) { # Else accelerate if ($token eq "`ifdef" || $token eq "`ifndef" || $token eq "`elsif") { $PreLevel++; $Last_Prekwd = $token; } elsif ($token eq "`else") { $PreLevel++; $PreCovOff[$PreLevel] = !$PreCovOff[$PreLevel]; if ($PreCovOff[$PreLevel] && $Opt_Synthcov) { push @Sendout, [0, ::coverage_off(0)]; } } } $Last_Lineno = $self->lineno; } else { $self->symbol($token); } } package main; ###################################################################### ###################################################################### ###################################################################### __END__ =pod =head1 NAME vpassert - Preprocess Verilog code assertions =head1 SYNOPSIS B [ B<--help> ] [ B<--date> ] [ B<--quiet> ] [ -y B ] [ B ] =head1 DESCRIPTION Vpassert will read the specified Verilog files and preprocess special PLI assertions. The files are written to the directory named .vpassert unless another name is given with B<-o>. If a directory is passed, all files in that directory will be preprocessed. =head1 ARGUMENTS Standard VCS and GCC-like parameters are used to specify the files to be preprocessed: +libext+I+I... Specify extensions to be processed -f I Parse parameters in file -v I Parse the library file (I) -y I Parse all files in the directory (I) -II Parse all files in the directory (I) +incdir+I Parse all files in the directory (I) To prevent recursion and allow reuse of the input.vc being passed to the simulator, if the output directory is requested to be preprocessed, that directory is simply ignored. =over 4 =item --allfiles Preprocess and write out files that do not have any macros that need expanding. By default, files that do not need processing are not written out. This option may speed up simulator compile times; the file will always be found in the preprocessed directory, saving the compiler from having to search a large number of -v directories to find it. =item --axiom Special Axiom ATHDL enables/disables added around unreachable code. =item --call-error When $uerror (or $uassert etc.) wants to display a message, call the specified function instead of $display and $stop. =item --call-info When $uinfo wants to display a message, call the specified function instead of $display. =item --call-warn When $uwarn (or $uwarn_clk etc.) wants to display a message, call the specified function instead of $display and $stop. =item --date Check file dates and sizes versus the last run of vpassert and don't process if the given source file has not changed. =item --exclude Exclude processing any files which begin with the specified prefix. =item --help Displays this message and program version and exits. =item --language <1364-1995|1364-2001|1364-2005|1800-2005|1800-2009|1800-2012> Set the language standard for the files. This determines which tokens are signals versus keywords, such as the ever-common "do" (data-out signal, versus a do-while loop keyword). =item --minimum Include `__message_minimum in the $uinfo test, so that by defining __message_minimum=1 some uinfos may be optimized away at compile time. =item --noline Do not emit `line directives. If not specified they will be used under --language 1364-2001 and later. =item --nopli Delete all 'simple' PLI calls. PLI function calls inside parenthesis will not be changed, and thus may still need to be manually ifdef'ed out. Useful for reducing the amount of `ifdef's required to feed non-PLI competent synthesis programs. =item --nostop By default, $error and $warn insert a $stop statement. With --nostop, this is replaced by incrementing a variable, which may then be used to conditionally halt simulation. =item --o I Use the given filename for output instead of the input name .vpassert. If the name ends in a / it is used as a output directory with the default name. =item --quiet Suppress messages about what files are being preprocessed. =item --realintent Special RealIntent enable/disables added around unreachable code. =item --synthcov When "ifdef SYNTHESIS" is seen, disable coverage. Resume on the `else or `endif. This does NOT follow child defines, for example: `ifdef SYNTHSIS `define MYSYNTH `endif `ifdef MYSYNTH // This will not be coveraged-off =item --timeformat-units I If specified, include Verilog $timeformat calls before all messages. Use the provided argument as the units. Units is in powers of 10, so -9 indicates to use nanoseconds. =item --timeformat-precision I When using --timeformat-units, use this as the precision value, the number of digits after the decimal point. Defaults to zero. =item --vericov Special Vericov enable/disables added around unreachable code. =item --verilator Special Verilator translations enabled. =item --version Displays program version and exits. =item --vcs Special Synopsys VCS enables/disables added around unreachable code. =back =head1 FUNCTIONS These Verilog pseudo-pli calls are expanded: =over 4 =item /*vp_coverage_off*/ Disable coverage for all tools starting at this point. Does not need to be on a unique line. =item /*vp_coverage_on*/ Re-enable coverage after a vp_coverage_off. Does not need to be on a unique line. =item $uassert (I, "message", [I...] ) Report a $uerror if the given case is FALSE. (Like assert() in C.) =item $uassert_amone (I, [I...], "message", [I...] ) Report a $uerror if more than one signal is asserted, or any are X. (None asserted is ok.) The error message will include a binary display of the signal values. =item $uassert_info (I, "message", [I...] ) Report a $uinfo if the given case is FALSE. (Like assert() in C.) =item $uassert_onehot (I, [I...], "message", [I...] ) Report a $uerror if other than one signal is asserted, or any are X. The error message will include a binary display of the signal values. =item $uassert_req_ack (I, I, [I,...] ) Check for a single cycle request pulse, followed by a single cycle acknowledgment pulse. Do not allow any of the data signals to change between the request and acknowledgement. =item $ucheck_ilevel (I ) Return true if the __message level is greater or equal to the given level, and that global messages are turned on. =item $ucover_clk (I, I